PageSourceSearch

https://www.bmscustomerconnect.com/etc.clientlibs/bms-commercial-shared/clientlibs/base.min.js

js bmscustomerconnect.com collected 2026-10-03 21:31:50 UTC 1,220,371 bytes, 21,104 lines download raw bytes

1/*!
2 * jQuery Cookie Plugin v1.4.1
3 * https://github.com/carhartl/jquery-cookie
4 *
5 * Copyright 2013 Klaus Hartl
6 * Released under the MIT license
7 */
8(function (factory) {
9	if (typeof define === 'function' && define.amd) {
10		// AMD
11		define(['jquery'], factory);
12	} else if (typeof exports === 'object') {
13		// CommonJS
14		factory(require('jquery'));
15	} else {
16		// Browser globals
17		factory(jQuery);
18	}
19}(function ($) {
20
21	var pluses = /\+/g;
22
23	function encode(s) {
24		return config.raw ? s : encodeURIComponent(s);
25	}
26
27	function decode(s) {
28		return config.raw ? s : decodeURIComponent(s);
29	}
30
31	function stringifyCookieValue(value) {
32		return encode(config.json ? JSON.stringify(value) : String(value));
33	}
34
35	function parseCookieValue(s) {
36		if (s.indexOf('"') === 0) {
37			// This is a quoted cookie as according to RFC2068, unescape...
38			s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
39		}
40
41		try {
42			// Replace server-side written pluses with spaces.
43			// If we can't decode the cookie, ignore it, it's unusable.
44			// If we can't parse the cookie, ignore it, it's unusable.
45			s = decodeURIComponent(s.replace(pluses, ' '));
46			return config.json ? JSON.parse(s) : s;
47		} catch(e) {}
48	}
49
50	function read(s, converter) {
51		var value = config.raw ? s : parseCookieValue(s);
52		return $.isFunction(converter) ? converter(value) : value;
53	}
54
55	var config = $.cookie = function (key, value, options) {
56
57		// Write
58
59		if (value !== undefined && !$.isFunction(value)) {
60			options = $.extend({}, config.defaults, options);
61
62			if (typeof options.expires === 'number') {
63				var days = options.expires, t = options.expires = new Date();
64				t.setTime(+t + days * 864e+5);
65			}
66
67			return (document.cookie = [
68				encode(key), '=', stringifyCookieValue(value),
69				options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
70				options.path    ? '; path=' + options.path : '',
71				options.domain  ? '; domain=' + options.domain : '',
72				options.secure  ? '; secure' : ''
73			].join(''));
74		}
75
76		// Read
77
78		var result = key ? undefined : {};
79
80		// To prevent the for loop in the first place assign an empty array
81		// in case there are no cookies at all. Also prevents odd result when
82		// calling $.cookie().
83		var cookies = document.cookie ? document.cookie.split('; ') : [];
84
85		for (var i = 0, l = cookies.length; i < l; i++) {
86			var parts = cookies[i].split('=');
87			var name = decode(parts.shift());
88			var cookie = parts.join('=');
89
90			if (key && key === name) {
91				// If second argument (value) is a function it's a converter...
92				result = read(cookie, value);
93				break;
94			}
95
96			// Prevent storing a cookie that we couldn't decode.
97			if (!key && (cookie = read(cookie)) !== undefined) {
98				result[name] = cookie;
99			}
100		}
101
102		return result;
103	};
104
105	config.defaults = {};
106
107	$.removeCookie = function (key, options) {
108		if ($.cookie(key) === undefined) {
109			return false;
110		}
111
112		// Must not alter options, thus extending a fresh object...
113		$.cookie(key, '', $.extend({}, options, { expires: -1 }));
114		return !$.cookie(key);
115	};
116
117}));
118
119/**
120* simplePagination.js v1.6
121* A simple jQuery pagination plugin.
122* http://flaviusmatis.github.com/simplePagination.js/
123*
124* Copyright 2012, Flavius Matis
125* Released under the MIT license.
126* http://flaviusmatis.github.com/license.html
127*/
128
129(function($){
130
131	var methods = {
132		init: function(options) {
133			var o = $.extend({
134				items: 1,
135				itemsOnPage: 1,
136				pages: 0,
137				displayedPages: 5,
138				edges: 2,
139				currentPage: 0,
140				hrefTextPrefix: '#page-',
141				hrefTextSuffix: '',
142				prevText: 'Prev',
143				nextText: 'Next',
144				ellipseText: '&hellip;',
145				cssStyle: 'light-theme',
146				labelMap: [],
147				selectOnClick: true,
148				nextAtFront: false,
149				invertPageOrder: false,
150				useStartEdge : true,
151				useEndEdge : true,
152				onPageClick: function(pageNumber, event) {
153					// Callback triggered when a page is clicked
154					// Page number is given as an optional parameter
155				},
156				onInit: function() {
157					// Callback triggered immediately after initialization
158				}
159			}, options || {});
160
161			var self = this;
162
163			o.pages = o.pages ? o.pages : Math.ceil(o.items / o.itemsOnPage) ? Math.ceil(o.items / o.itemsOnPage) : 1;
164			if (o.currentPage)
165				o.currentPage = o.currentPage - 1;
166			else
167				o.currentPage = !o.invertPageOrder ? 0 : o.pages - 1;
168			o.halfDisplayed = o.displayedPages / 2;
169
170			this.each(function() {
171				self.addClass(o.cssStyle + ' simple-pagination').data('pagination', o);
172				methods._draw.call(self);
173			});
174
175			o.onInit();
176
177			return this;
178		},
179
180		selectPage: function(page) {
181			methods._selectPage.call(this, page - 1);
182			return this;
183		},
184
185		prevPage: function() {
186			var o = this.data('pagination');
187			if (!o.invertPageOrder) {
188				if (o.currentPage > 0) {
189					methods._selectPage.call(this, o.currentPage - 1);
190				}
191			} else {
192				if (o.currentPage < o.pages - 1) {
193					methods._selectPage.call(this, o.currentPage + 1);
194				}
195			}
196			return this;
197		},
198
199		nextPage: function() {
200			var o = this.data('pagination');
201			if (!o.invertPageOrder) {
202				if (o.currentPage < o.pages - 1) {
203					methods._selectPage.call(this, o.currentPage + 1);
204				}
205			} else {
206				if (o.currentPage > 0) {
207					methods._selectPage.call(this, o.currentPage - 1);
208				}
209			}
210			return this;
211		},
212
213		getPagesCount: function() {
214			return this.data('pagination').pages;
215		},
216
217		getCurrentPage: function () {
218			return this.data('pagination').currentPage + 1;
219		},
220
221		destroy: function(){
222			this.empty();
223			return this;
224		},
225
226		drawPage: function (page) {
227			var o = this.data('pagination');
228			o.currentPage = page - 1;
229			this.data('pagination', o);
230			methods._draw.call(this);
231			return this;
232		},
233
234		redraw: function(){
235			methods._draw.call(this);
236			return this;
237		},
238
239		disable: function(){
240			var o = this.data('pagination');
241			o.disabled = true;
242			this.data('pagination', o);
243			methods._draw.call(this);
244			return this;
245		},
246
247		enable: function(){
248			var o = this.data('pagination');
249			o.disabled = false;
vendor: 4,302 bytes, lines 250-382
250			this.data('pagination', o);
251			methods._draw.call(this);
252			return this;
253		},
254
255		updateItems: function (newItems) {
256			var o = this.data('pagination');
257			o.items = newItems;
258			o.pages = methods._getPages(o);
259			this.data('pagination', o);
260			methods._draw.call(this);
261		},
262
263		updateItemsOnPage: function (itemsOnPage) {
264			var o = this.data('pagination');
265			o.itemsOnPage = itemsOnPage;
266			o.pages = methods._getPages(o);
267			this.data('pagination', o);
268			methods._selectPage.call(this, 0);
269			return this;
270		},
271
272		_draw: function() {
273			var	o = this.data('pagination'),
274				interval = methods._getInterval(o),
275				i,
276				tagName;
277
278			methods.destroy.call(this);
279			
280			tagName = (typeof this.prop === 'function') ? this.prop('tagName') : this.attr('tagName');
281
282			var $panel = tagName === 'UL' ? this : $('<ul></ul>').appendTo(this);
283
284			// Generate Prev link
285			if (o.prevText) {
286				methods._appendItem.call(this, !o.invertPageOrder ? o.currentPage - 1 : o.currentPage + 1, {text: o.prevText, classes: 'prev'});
287			}
288
289			// Generate Next link (if option set for at front)
290			if (o.nextText && o.nextAtFront) {
291				methods._appendItem.call(this, !o.invertPageOrder ? o.currentPage + 1 : o.currentPage - 1, {text: o.nextText, classes: 'next'});
292			}
293
294			// Generate start edges
295			if (!o.invertPageOrder) {
296				if (interval.start > 0 && o.edges > 0) {
297					if(o.useStartEdge) {
298						var end = Math.min(o.edges, interval.start);
299						for (i = 0; i < end; i++) {
300							methods._appendItem.call(this, i);
301						}
302					}
303					if (o.edges < interval.start && (interval.start - o.edges != 1)) {
304						$panel.append('<li class="disabled"><span class="ellipse">' + o.ellipseText + '</span></li>');
305					} else if (interval.start - o.edges == 1) {
306						methods._appendItem.call(this, o.edges);
307					}
308				}
309			} else {
310				if (interval.end < o.pages && o.edges > 0) {
311					if(o.useStartEdge) {
312						var begin = Math.max(o.pages - o.edges, interval.end);
313						for (i = o.pages - 1; i >= begin; i--) {
314							methods._appendItem.call(this, i);
315						}
316					}
317
318					if (o.pages - o.edges > interval.end && (o.pages - o.edges - interval.end != 1)) {
319						$panel.append('<li class="disabled"><span class="ellipse">' + o.ellipseText + '</span></li>');
320					} else if (o.pages - o.edges - interval.end == 1) {
321						methods._appendItem.call(this, interval.end);
322					}
323				}
324			}
325
326			// Generate interval links
327			if (!o.invertPageOrder) {
328				for (i = interval.start; i < interval.end; i++) {
329					methods._appendItem.call(this, i);
330				}
331			} else {
332				for (i = interval.end - 1; i >= interval.start; i--) {
333					methods._appendItem.call(this, i);
334				}
335			}
336
337			// Generate end edges
338			if (!o.invertPageOrder) {
339				if (interval.end < o.pages && o.edges > 0) {
340					if (o.pages - o.edges > interval.end && (o.pages - o.edges - interval.end != 1)) {
341						$panel.append('<li class="disabled"><span class="ellipse">' + o.ellipseText + '</span></li>');
342					} else if (o.pages - o.edges - interval.end == 1) {
343						methods._appendItem.call(this, interval.end);
344					}
345					if(o.useEndEdge) {
346						var begin = Math.max(o.pages - o.edges, interval.end);
347						for (i = begin; i < o.pages; i++) {
348							methods._appendItem.call(this, i);
349						}
350					}
351				}
352			} else {
353				if (interval.start > 0 && o.edges > 0) {
354					if (o.edges < interval.start && (interval.start - o.edges != 1)) {
355						$panel.append('<li class="disabled"><span class="ellipse">' + o.ellipseText + '</span></li>');
356					} else if (interval.start - o.edges == 1) {
357						methods._appendItem.call(this, o.edges);
358					}
359
360					if(o.useEndEdge) {
361						var end = Math.min(o.edges, interval.start);
362						for (i = end - 1; i >= 0; i--) {
363							methods._appendItem.call(this, i);
364						}
365					}
366				}
367			}
368
369			// Generate Next link (unless option is set for at front)
370			if (o.nextText && !o.nextAtFront) {
371				methods._appendItem.call(this, !o.invertPageOrder ? o.currentPage + 1 : o.currentPage - 1, {text: o.nextText, classes: 'next'});
372			}
373		},
374
375		_getPages: function(o) {
376			var pages = Math.ceil(o.items / o.itemsOnPage);
377			return pages || 1;
378		},
379
380		_getInterval: function(o) {
381			return {
382				start: Math.ceil(o.currentPage > o.halfDisplayed ? Math.max(Math.min(o.currentPage - o.halfDisplayed, (o.pages - o.displayedPages)
382), 0) : 0),
383				end: Math.ceil(o.currentPage > o.halfDisplayed ? Math.min(o.currentPage + o.halfDisplayed, o.pages) : Math.min(o.displayedPages, o.pages))
384			};
385		},
386
387		_appendItem: function(pageIndex, opts) {
388			var self = this, options, $link, o = self.data('pagination'), $linkWrapper = $('<li></li>'), $ul = self.find('ul');
389
390			pageIndex = pageIndex < 0 ? 0 : (pageIndex < o.pages ? pageIndex : o.pages - 1);
391
392			options = {
393				text: pageIndex + 1,
394				classes: ''
395			};
396
397			if (o.labelMap.length && o.labelMap[pageIndex]) {
398				options.text = o.labelMap[pageIndex];
399			}
400
401			options = $.extend(options, opts || {});
402
403			if (pageIndex == o.currentPage || o.disabled) {
404				if (o.disabled) {
405					$linkWrapper.addClass('disabled');
406				} else {
407					$linkWrapper.addClass('active');
408				}
409				$link = $('<span class="current">' + (options.text) + '</span>');
410			} else {
411				$link = $('<a href="' + o.hrefTextPrefix + (pageIndex + 1) + o.hrefTextSuffix + '" class="page-link">' + (options.text) + '</a>');
412				$link.click(function(event){
413					return methods._selectPage.call(self, pageIndex, event);
414				});
415			}
416
417			if (options.classes) {
418				$link.addClass(options.classes);
419			}
420
421			$linkWrapper.append($link);
422
423			if ($ul.length) {
424				$ul.append($linkWrapper);
425			} else {
426				self.append($linkWrapper);
427			}
428		},
429
430		_selectPage: function(pageIndex, event) {
431			var o = this.data('pagination');
432			o.currentPage = pageIndex;
433			if (o.selectOnClick) {
434				methods._draw.call(this);
435			}
436			return o.onPageClick(pageIndex + 1, event);
437		}
438
439	};
440
441	$.fn.pagination = function(method) {
442
443		// Method calling logic
444		if (methods[method] && method.charAt(0) != '_') {
445			return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
446		} else if (typeof method === 'object' || !method) {
447			return methods.init.apply(this, arguments);
448		} else {
449			$.error('Method ' +  method + ' does not exist on jQuery.pagination');
450		}
451
452	};
453
454})(jQuery);
455
456/*!
457  * Bootstrap v4.0.0 (https://getbootstrap.com)
458  * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
459  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
460  */
461(function (global, factory) {
462	typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :
463	typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :
464	(factory((global.bootstrap = {}),global.jQuery,global.Popper));
465}(this, (function (exports,$,Popper) { 'use strict';
466
467$ = $ && $.hasOwnProperty('default') ? $['default'] : $;
468Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;
469
470function _defineProperties(target, props) {
471  for (var i = 0; i < props.length; i++) {
472    var descriptor = props[i];
473    descriptor.enumerable = descriptor.enumerable || false;
474    descriptor.configurable = true;
475    if ("value" in descriptor) descriptor.writable = true;
476    Object.defineProperty(target, descriptor.key, descriptor);
477  }
478}
479
480function _createClass(Constructor, protoProps, staticProps) {
481  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
482  if (staticProps) _defineProperties(Constructor, staticProps);
483  return Constructor;
484}
485
486function _extends() {
487  _extends = Object.assign || function (target) {
488    for (var i = 1; i < arguments.length; i++) {
489      var source = arguments[i];
490
491      for (var key in source) {
492        if (Object.prototype.hasOwnProperty.call(source, key)) {
493          target[key] = source[key];
494        }
495      }
496    }
497
498    return target;
499  };
500
501  return _extends.apply(this, arguments);
502}
503
504function _inheritsLoose(subClass, superClass) {
505  subClass.prototype = Object.create(superClass.prototype);
506  subClass.prototype.constructor = subClass;
507  subClass.__proto__ = superClass;
508}
509
510/**
511 * --------------------------------------------------------------------------
512 * Bootstrap (v4.0.0): util.js
513 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
514 * --------------------------------------------------------------------------
515 */
516
517var Util = function ($$$1) {
518  /**
519   * ------------------------------------------------------------------------
520   * Private TransitionEnd Helpers
521   * ------------------------------------------------------------------------
522   */
523  var transition = false;
524  var MAX_UID = 1000000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
525
526  function toType(obj) {
527    return {}.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
528  }
529
530  function getSpecialTransitionEndEvent() {
531    return {
532      bindType: transition.end,
533      delegateType: transition.end,
534      handle: function handle(event) {
535        if ($$$1(event.target).is(this)) {
536          return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
537        }
538
539        return undefined; // eslint-disable-line no-undefined
540      }
541    };
542  }
543
544  function transitionEndTest() {
545    if (typeof window !== 'undefined' && window.QUnit) {
546      return false;
547    }
548
549    return {
550      end: 'transitionend'
551    };
552  }
553
554  function transitionEndEmulator(duration) {
555    var _this = this;
556
557    var called = false;
558    $$$1(this).one(Util.TRANSITION_END, function () {
559      called = true;
560    });
561    setTimeout(function () {
562      if (!called) {
563        Util.triggerTransitionEnd(_this);
564      }
565    }, duration);
566    return this;
567  }
568
569  function setTransitionEndSupport() {
570    transition = transitionEndTest();
571    $$$1.fn.emulateTransitionEnd = transitionEndEmulator;
572
573    if (Util.supportsTransitionEnd()) {
574      $$$1.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
575    }
576  }
577
578  function escapeId(selector) {
579    // We escape IDs in case of special selectors (selector = '#myId:something')
580    // $.escapeSelector does not exist in jQuery < 3
581    selector = typeof $$$1.escapeSelector === 'function' ? $$$1.escapeSelector(selector).substr(1) : selector.replace(/(:|\.|\[|\]|,|=|@)/g, '\\$1');
582    return selector;
583  }
584  /**
585   * --------------------------------------------------------------------------
586   * Public Util Api
587   * --------------------------------------------------------------------------
588   */
589
590
591  var Util = {
592    TRANSITION_END: 'bsTransitionEnd',
593    getUID: function getUID(prefix) {
594      do {
595        // eslint-disable-next-line no-bitwise
596        prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here
597      } while (document.getElementById(prefix));
598
599      return prefix;
600    },
601    getSelectorFromElement: function getSelectorFromElement(element) {
602      var selector = element.getAttribute('data-target');
603
604      if (!selector || selector === '#') {
605        selector = element.getAttribute('href') || '';
606      } // If it's an ID
607
608
609      if (selector.charAt(0) === '#') {
610        selector = escapeId(selector);
611      }
612
613      try {
614        var $selector = $$$1(document).find(selector);
615        return $selector.length > 0 ? selector : null;
616      } catch (err) {
617        return null;
618      }
619    },
620    reflow: function reflow(element) {
621      return element.offsetHeight;
622    },
623    triggerTransitionEnd: function triggerTransitionEnd(element) {
624      $$$1(element).trigger(transition.end);
625    },
626    supportsTransitionEnd: function supportsTransitionEnd() {
627      return Boolean(transition);
628    },
629    isElement: function isElement(obj) {
630      return (obj[0] || obj).nodeType;
631    },
632    typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
633      for (var property in configTypes) {
634        if (Object.prototype.hasOwnProperty.call(configTypes, property)) {
635          var expectedTypes = configTypes[property];
636          var value = config[property];
637          var valueType = value && Util.isElement(value) ? 'element' : toType(value);
638
639          if (!new RegExp(expectedTypes).test(valueType)) {
640            throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
641          }
642        }
643      }
644    }
645  };
646  setTransitionEndSupport();
647  return Util;
648}($);
649
650/**
651 * --------------------------------------------------------------------------
652 * Bootstrap (v4.0.0): alert.js
653 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
654 * --------------------------------------------------------------------------
655 */
656
657var Alert = function ($$$1) {
658  /**
659   * ------------------------------------------------------------------------
660   * Constants
661   * ------------------------------------------------------------------------
662   */
663  var NAME = 'alert';
664  var VERSION = '4.0.0';
665  var DATA_KEY = 'bs.alert';
666  var EVENT_KEY = "." + DATA_KEY;
667  var DATA_API_KEY = '.data-api';
668  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
669  var TRANSITION_DURATION = 150;
670  var Selector = {
671    DISMISS: '[data-dismiss="alert"]'
672  };
673  var Event = {
674    CLOSE: "close" + EVENT_KEY,
675    CLOSED: "closed" + EVENT_KEY,
676    CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
677  };
678  var ClassName = {
679    ALERT: 'alert',
680    FADE: 'fade',
681    SHOW: 'show'
682    /**
683     * ------------------------------------------------------------------------
684     * Class Definition
685     * ------------------------------------------------------------------------
686     */
687
688  };
689
690  var Alert =
691  /*#__PURE__*/
692  function () {
693    function Alert(element) {
694      this._element = element;
695    } // Getters
696
697
698    var _proto = Alert.prototype;
699
700    // Public
701    _proto.close = function close(element) {
702      element = element || this._element;
703
704      var rootElement = this._getRootElement(element);
705
706      var customEvent = this._triggerCloseEvent(rootElement);
707
708      if (customEvent.isDefaultPrevented()) {
709        return;
710      }
711
712      this._removeElement(rootElement);
713    };
714
715    _proto.dispose = function dispose() {
716      $$$1.removeData(this._element, DATA_KEY);
717      this._element = null;
718    }; // Private
719
720
721    _proto._getRootElement = function _getRootElement(element) {
722      var selector = Util.getSelectorFromElement(element);
723      var parent = false;
724
725      if (selector) {
726        parent = $$$1(selector)[0];
727      }
728
729      if (!parent) {
730        parent = $$$1(element).closest("." + ClassName.ALERT)[0];
731      }
732
733      return parent;
734    };
735
736    _proto._triggerCloseEvent = function _triggerCloseEvent(element) {
737      var closeEvent = $$$1.Event(Event.CLOSE);
738      $$$1(element).trigger(closeEvent);
739      return closeEvent;
740    };
741
742    _proto._removeElement = function _removeElement(element) {
743      var _this = this;
744
745      $$$1(element).removeClass(ClassName.SHOW);
746
747      if (!Util.supportsTransitionEnd() || !$$$1(element).hasClass(ClassName.FADE)) {
748        this._destroyElement(element);
749
750        return;
751      }
752
753      $$$1(element).one(Util.TRANSITION_END, function (event) {
754        return _this._destroyElement(element, event);
755      }).emulateTransitionEnd(TRANSITION_DURATION);
756    };
757
758    _proto._destroyElement = function _destroyElement(element) {
759      $$$1(element).detach().trigger(Event.CLOSED).remove();
760    }; // Static
761
762
763    Alert._jQueryInterface = function _jQueryInterface(config) {
764      return this.each(function () {
765        var $element = $$$1(this);
766        var data = $element.data(DATA_KEY);
767
768        if (!data) {
769          data = new Alert(this);
770          $element.data(DATA_KEY, data);
771        }
772
773        if (config === 'close') {
774          data[config](this);
775        }
776      });
777    };
778
779    Alert._handleDismiss = function _handleDismiss(alertInstance) {
780      return function (event) {
781        if (event) {
782          event.preventDefault();
783        }
784
785        alertInstance.close(this);
786      };
787    };
788
789    _createClass(Alert, null, [{
790      key: "VERSION",
791      get: function get() {
792        return VERSION;
793      }
794    }]);
795    return Alert;
796  }();
797  /**
798   * ------------------------------------------------------------------------
799   * Data Api implementation
800   * ------------------------------------------------------------------------
801   */
802
803
804  $$$1(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));
805  /**
806   * ------------------------------------------------------------------------
807   * jQuery
808   * ------------------------------------------------------------------------
809   */
810
811  $$$1.fn[NAME] = Alert._jQueryInterface;
812  $$$1.fn[NAME].Constructor = Alert;
813
814  $$$1.fn[NAME].noConflict = function () {
815    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
816    return Alert._jQueryInterface;
817  };
818
819  return Alert;
820}($);
821
822/**
823 * --------------------------------------------------------------------------
824 * Bootstrap (v4.0.0): button.js
825 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
826 * --------------------------------------------------------------------------
827 */
828
829var Button = function ($$$1) {
830  /**
831   * ------------------------------------------------------------------------
832   * Constants
833   * ------------------------------------------------------------------------
834   */
835  var NAME = 'button';
836  var VERSION = '4.0.0';
837  var DATA_KEY = 'bs.button';
838  var EVENT_KEY = "." + DATA_KEY;
839  var DATA_API_KEY = '.data-api';
840  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
841  var ClassName = {
842    ACTIVE: 'active',
843    BUTTON: 'btn',
844    FOCUS: 'focus'
845  };
846  var Selector = {
847    DATA_TOGGLE_CARROT: '[data-toggle^="button"]',
848    DATA_TOGGLE: '[data-toggle="buttons"]',
849    INPUT: 'input',
850    ACTIVE: '.active',
851    BUTTON: '.btn'
852  };
853  var Event = {
854    CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY,
855    FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY + DATA_API_KEY + " " + ("blur" + EVENT_KEY + DATA_API_KEY)
856    /**
857     * ------------------------------------------------------------------------
858     * Class Definition
859     * ------------------------------------------------------------------------
860     */
861
862  };
863
864  var Button =
865  /*#__PURE__*/
866  function () {
867    function Button(element) {
868      this._element = element;
869    } // Getters
870
871
872    var _proto = Button.prototype;
873
874    // Public
875    _proto.toggle = function toggle() {
876      var triggerChangeEvent = true;
877      var addAriaPressed = true;
878      var rootElement = $$$1(this._element).closest(Selector.DATA_TOGGLE)[0];
879
880      if (rootElement) {
881        var input = $$$1(this._element).find(Selector.INPUT)[0];
882
883        if (input) {
884          if (input.type === 'radio') {
885            if (input.checked && $$$1(this._element).hasClass(ClassName.ACTIVE)) {
886              triggerChangeEvent = false;
vendor: 4,915 bytes, lines 887-1056
887            } else {
888              var activeElement = $$$1(rootElement).find(Selector.ACTIVE)[0];
889
890              if (activeElement) {
891                $$$1(activeElement).removeClass(ClassName.ACTIVE);
892              }
893            }
894          }
895
896          if (triggerChangeEvent) {
897            if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {
898              return;
899            }
900
901            input.checked = !$$$1(this._element).hasClass(ClassName.ACTIVE);
902            $$$1(input).trigger('change');
903          }
904
905          input.focus();
906          addAriaPressed = false;
907        }
908      }
909
910      if (addAriaPressed) {
911        this._element.setAttribute('aria-pressed', !$$$1(this._element).hasClass(ClassName.ACTIVE));
912      }
913
914      if (triggerChangeEvent) {
915        $$$1(this._element).toggleClass(ClassName.ACTIVE);
916      }
917    };
918
919    _proto.dispose = function dispose() {
920      $$$1.removeData(this._element, DATA_KEY);
921      this._element = null;
922    }; // Static
923
924
925    Button._jQueryInterface = function _jQueryInterface(config) {
926      return this.each(function () {
927        var data = $$$1(this).data(DATA_KEY);
928
929        if (!data) {
930          data = new Button(this);
931          $$$1(this).data(DATA_KEY, data);
932        }
933
934        if (config === 'toggle') {
935          data[config]();
936        }
937      });
938    };
939
940    _createClass(Button, null, [{
941      key: "VERSION",
942      get: function get() {
943        return VERSION;
944      }
945    }]);
946    return Button;
947  }();
948  /**
949   * ------------------------------------------------------------------------
950   * Data Api implementation
951   * ------------------------------------------------------------------------
952   */
953
954
955  $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
956    event.preventDefault();
957    var button = event.target;
958
959    if (!$$$1(button).hasClass(ClassName.BUTTON)) {
960      button = $$$1(button).closest(Selector.BUTTON);
961    }
962
963    Button._jQueryInterface.call($$$1(button), 'toggle');
964  }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
965    var button = $$$1(event.target).closest(Selector.BUTTON)[0];
966    $$$1(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type));
967  });
968  /**
969   * ------------------------------------------------------------------------
970   * jQuery
971   * ------------------------------------------------------------------------
972   */
973
974  $$$1.fn[NAME] = Button._jQueryInterface;
975  $$$1.fn[NAME].Constructor = Button;
976
977  $$$1.fn[NAME].noConflict = function () {
978    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
979    return Button._jQueryInterface;
980  };
981
982  return Button;
983}($);
984
985/**
986 * --------------------------------------------------------------------------
987 * Bootstrap (v4.0.0): carousel.js
988 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
989 * --------------------------------------------------------------------------
990 */
991
992var Carousel = function ($$$1) {
993  /**
994   * ------------------------------------------------------------------------
995   * Constants
996   * ------------------------------------------------------------------------
997   */
998  var NAME = 'carousel';
999  var VERSION = '4.0.0';
1000  var DATA_KEY = 'bs.carousel';
1001  var EVENT_KEY = "." + DATA_KEY;
1002  var DATA_API_KEY = '.data-api';
1003  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
1004  var TRANSITION_DURATION = 600;
1005  var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key
1006
1007  var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key
1008
1009  var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
1010
1011  var Default = {
1012    interval: 5000,
1013    keyboard: true,
1014    slide: false,
1015    pause: 'hover',
1016    wrap: true
1017  };
1018  var DefaultType = {
1019    interval: '(number|boolean)',
1020    keyboard: 'boolean',
1021    slide: '(boolean|string)',
1022    pause: '(string|boolean)',
1023    wrap: 'boolean'
1024  };
1025  var Direction = {
1026    NEXT: 'next',
1027    PREV: 'prev',
1028    LEFT: 'left',
1029    RIGHT: 'right'
1030  };
1031  var Event = {
1032    SLIDE: "slide" + EVENT_KEY,
1033    SLID: "slid" + EVENT_KEY,
1034    KEYDOWN: "keydown" + EVENT_KEY,
1035    MOUSEENTER: "mouseenter" + EVENT_KEY,
1036    MOUSELEAVE: "mouseleave" + EVENT_KEY,
1037    TOUCHEND: "touchend" + EVENT_KEY,
1038    LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY,
1039    CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
1040  };
1041  var ClassName = {
1042    CAROUSEL: 'carousel',
1043    ACTIVE: 'active',
1044    SLIDE: 'slide',
1045    RIGHT: 'carousel-item-right',
1046    LEFT: 'carousel-item-left',
1047    NEXT: 'carousel-item-next',
1048    PREV: 'carousel-item-prev',
1049    ITEM: 'carousel-item'
1050  };
1051  var Selector = {
1052    ACTIVE: '.active',
1053    ACTIVE_ITEM: '.active.carousel-item',
1054    ITEM: '.carousel-item',
1055    NEXT_PREV: '.carousel-item-next, .carousel-item-prev',
1056    INDICATORS: '.carousel-indicators',
1057    DATA_SLIDE: '[data-slide], [data-slide-to]',
1058    DATA_RIDE: '[data-ride="carousel"]'
1059    /**
1060     * ------------------------------------------------------------------------
1061     * Class Definition
1062     * ------------------------------------------------------------------------
1063     */
1064
1065  };
1066
1067  var Carousel =
1068  /*#__PURE__*/
1069  function () {
1070    function Carousel(element, config) {
1071      this._items = null;
1072      this._interval = null;
1073      this._activeElement = null;
1074      this._isPaused = false;
1075      this._isSliding = false;
1076      this.touchTimeout = null;
1077      this._config = this._getConfig(config);
1078      this._element = $$$1(element)[0];
1079      this._indicatorsElement = $$$1(this._element).find(Selector.INDICATORS)[0];
1080
1081      this._addEventListeners();
1082    } // Getters
1083
1084
1085    var _proto = Carousel.prototype;
1086
1087    // Public
1088    _proto.next = function next() {
1089      if (!this._isSliding) {
1090        this._slide(Direction.NEXT);
1091      }
1092    };
1093
1094    _proto.nextWhenVisible = function nextWhenVisible() {
1095      // Don't call next when the page isn't visible
1096      // or the carousel or its parent isn't visible
1097      if (!document.hidden && $$$1(this._element).is(':visible') && $$$1(this._element).css('visibility') !== 'hidden') {
1098        this.next();
1099      }
1100    };
1101
1102    _proto.prev = function prev() {
1103      if (!this._isSliding) {
1104        this._slide(Direction.PREV);
1105      }
1106    };
1107
1108    _proto.pause = function pause(event) {
1109      if (!event) {
1110        this._isPaused = true;
1111      }
1112
1113      if ($$$1(this._element).find(Selector.NEXT_PREV)[0] && Util.supportsTransitionEnd()) {
1114        Util.triggerTransitionEnd(this._element);
1115        this.cycle(true);
1116      }
1117
1118      clearInterval(this._interval);
1119      this._interval = null;
1120    };
1121
1122    _proto.cycle = function cycle(event) {
1123      if (!event) {
1124        this._isPaused = false;
1125      }
1126
1127      if (this._interval) {
1128        clearInterval(this._interval);
1129        this._interval = null;
1130      }
1131
1132      if (this._config.interval && !this._isPaused) {
1133        this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
1134      }
1135    };
1136
1137    _proto.to = function to(index) {
1138      var _this = this;
1139
1140      this._activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0];
1141
1142      var activeIndex = this._getItemIndex(this._activeElement);
1143
1144      if (index > this._items.length - 1 || index < 0) {
1145        return;
1146      }
1147
1148      if (this._isSliding) {
1149        $$$1(this._element).one(Event.SLID, function () {
1150          return _this.to(index);
1151        });
1152        return;
1153      }
1154
1155      if (activeIndex === index) {
1156        this.pause();
1157        this.cycle();
1158        return;
1159      }
1160
1161      var direction = index > activeIndex ? Direction.NEXT : Direction.PREV;
1162
1163      this._slide(direction, this._items[index]);
1164    };
1165
1166    _proto.dispose = function dispose() {
1167      $$$1(this._element).off(EVENT_KEY);
1168      $$$1.removeData(this._element, DATA_KEY);
1169      this._items = null;
1170      this._config = null;
1171      this._element = null;
1172      this._interval = null;
1173      this._isPaused = null;
1174      this._isSliding = null;
1175      this._activeElement = null;
1176      this._indicatorsElement = null;
1177    }; // Private
1178
1179
1180    _proto._getConfig = function _getConfig(config) {
1181      config = _extends({}, Default, config);
1182      Util.typeCheckConfig(NAME, config, DefaultType);
1183      return config;
1184    };
1185
1186    _proto._addEventListeners = function _addEventListeners() {
1187      var _this2 = this;
1188
1189      if (this._config.keyboard) {
1190        $$$1(this._element).on(Event.KEYDOWN, function (event) {
1191          return _this2._keydown(event);
1192        });
1193      }
1194
1195      if (this._config.pause === 'hover') {
1196        $$$1(this._element).on(Event.MOUSEENTER, function (event) {
1197          return _this2.pause(event);
1198        }).on(Event.MOUSELEAVE, function (event) {
1199          return _this2.cycle(event);
1200        });
1201
1202        if ('ontouchstart' in document.documentElement) {
1203          // If it's a touch-enabled device, mouseenter/leave are fired as
1204          // part of the mouse compatibility events on first tap - the carousel
1205          // would stop cycling until user tapped out of it;
1206          // here, we listen for touchend, explicitly pause the carousel
1207          // (as if it's the second time we tap on it, mouseenter compat event
1208          // is NOT fired) and after a timeout (to allow for mouse compatibility
1209          // events to fire) we explicitly restart cycling
1210          $$$1(this._element).on(Event.TOUCHEND, function () {
1211            _this2.pause();
1212
1213            if (_this2.touchTimeout) {
1214              clearTimeout(_this2.touchTimeout);
1215            }
1216
1217            _this2.touchTimeout = setTimeout(function (event) {
1218              return _this2.cycle(event);
1219            }, TOUCHEVENT_COMPAT_WAIT + _this2._config.interval);
1220          });
1221        }
1222      }
1223    };
1224
1225    _proto._keydown = function _keydown(event) {
1226      if (/input|textarea/i.test(event.target.tagName)) {
1227        return;
1228      }
1229
1230      switch (event.which) {
1231        case ARROW_LEFT_KEYCODE:
1232          event.preventDefault();
1233          this.prev();
1234          break;
1235
1236        case ARROW_RIGHT_KEYCODE:
1237          event.preventDefault();
1238          this.next();
1239          break;
1240
1241        default:
1242      }
1243    };
1244
1245    _proto._getItemIndex = function _getItemIndex(element) {
1246      this._items = $$$1.makeArray($$$1(element).parent().find(Selector.ITEM));
1247      return this._items.indexOf(element);
1248    };
1249
1250    _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
1251      var isNextDirection = direction === Direction.NEXT;
1252      var isPrevDirection = direction === Direction.PREV;
1253
1254      var activeIndex = this._getItemIndex(activeElement);
1255
1256      var lastItemIndex = this._items.length - 1;
1257      var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;
1258
1259      if (isGoingToWrap && !this._config.wrap) {
1260        return activeElement;
1261      }
1262
1263      var delta = direction === Direction.PREV ? -1 : 1;
1264      var itemIndex = (activeIndex + delta) % this._items.length;
1265      return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
1266    };
1267
1268    _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
1269      var targetIndex = this._getItemIndex(relatedTarget);
1270
1271      var fromIndex = this._getItemIndex($$$1(this._element).find(Selector.ACTIVE_ITEM)[0]);
1272
1273      var slideEvent = $$$1.Event(Event.SLIDE, {
1274        relatedTarget: relatedTarget,
1275        direction: eventDirectionName,
1276        from: fromIndex,
1277        to: targetIndex
1278      });
1279      $$$1(this._element).trigger(slideEvent);
1280      return slideEvent;
1281    };
1282
1283    _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
1284      if (this._indicatorsElement) {
1285        $$$1(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
1286
1287        var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
1288
1289        if (nextIndicator) {
1290          $$$1(nextIndicator).addClass(ClassName.ACTIVE);
1291        }
1292      }
1293    };
1294
1295    _proto._slide = function _slide(direction, element) {
1296      var _this3 = this;
1297
1298      var activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0];
1299
1300      var activeElementIndex = this._getItemIndex(activeElement);
1301
1302      var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);
1303
1304      var nextElementIndex = this._getItemIndex(nextElement);
1305
1306      var isCycling = Boolean(this._interval);
1307      var directionalClassName;
1308      var orderClassName;
1309      var eventDirectionName;
1310
1311      if (direction === Direction.NEXT) {
1312        directionalClassName = ClassName.LEFT;
1313        orderClassName = ClassName.NEXT;
1314        eventDirectionName = Direction.LEFT;
1315      } else {
1316        directionalClassName = ClassName.RIGHT;
1317        orderClassName = ClassName.PREV;
1318        eventDirectionName = Direction.RIGHT;
1319      }
1320
1321      if (nextElement && $$$1(nextElement).hasClass(ClassName.ACTIVE)) {
1322        this._isSliding = false;
1323        return;
1324      }
1325
1326      var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
1327
1328      if (slideEvent.isDefaultPrevented()) {
1329        return;
1330      }
1331
1332      if (!activeElement || !nextElement) {
1333        // Some weirdness is happening, so we bail
1334        return;
1335      }
1336
1337      this._isSliding = true;
1338
1339      if (isCycling) {
1340        this.pause();
1341      }
1342
1343      this._setActiveIndicatorElement(nextElement);
1344
1345      var slidEvent = $$$1.Event(Event.SLID, {
1346        relatedTarget: nextElement,
1347        direction: eventDirectionName,
1348        from: activeElementIndex,
1349        to: nextElementIndex
1350      });
1351
1352      if (Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.SLIDE)) {
1353        $$$1(nextElement).addClass(orderClassName);
1354        Util.reflow(nextElement);
1355        $$$1(activeElement).addClass(directionalClassName);
1356        $$$1(nextElement).addClass(directionalClassName);
1357        $$$1(activeElement).one(Util.TRANSITION_END, function () {
1358          $$$1(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(ClassName.ACTIVE);
1359          $$$1(activeElement).removeClass(ClassName.ACTIVE + " " + orderClassName + " " + directionalClassName);
1360          _this3._isSliding = false;
1361          setTimeout(function () {
1362            return $$$1(_this3._element).trigger(slidEvent);
1363          }, 0);
1364        }).emulateTransitionEnd(TRANSITION_DURATION);
1365      } else {
1366        $$$1(activeElement).removeClass(ClassName.ACTIVE);
1367        $$$1(nextElement).addClass(ClassName.ACTIVE);
1368        this._isSliding = false;
1369        $$$1(this._element).trigger(slidEvent);
1370      }
1371
1372      if (isCycling) {
1373        this.cycle();
1374      }
1375    }; // Static
1376
1377
1378    Carousel._jQueryInterface = function _jQueryInterface(config) {
1379      return this.each(function () {
1380        var data = $$$1(this).data(DATA_KEY);
1381
1382        var _config = _extends({}, Default, $$$1(this).data());
1383
1384        if (typeof config === 'object') {
1385          _config = _extends({}, _config, config);
1386        }
1387
1388        var action = typeof config === 'string' ? config : _config.slide;
1389
1390        if (!data) {
1391          data = new Carousel(this, _config);
1392          $$$1(this).data(DATA_KEY, data);
1393        }
1394
1395        if (typeof config === 'number') {
1396          data.to(config);
1397        } else if (typeof action === 'string') {
1398          if (typeof data[action] === 'undefined') {
1399            throw new TypeError("No method named \"" + action + "\"");
1400          }
1401
1402          data[action]();
1403        } else if (_config.interval) {
1404          data.pause();
1405          data.cycle();
1406        }
1407      });
1408    };
1409
1410    Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {
1411      var selector = Util.getSelectorFromElement(this);
1412
1413      if (!selector) {
1414        return;
1415      }
1416
1417      var target = $$$1(selector)[0];
1418
1419      if (!target || !$$$1(target).hasClass(ClassName.CAROUSEL)) {
1420        return;
1421      }
1422
1423      var config = _extends({}, $$$1(target).data(), $$$1(this).data());
1424      var slideIndex = this.getAttribute('data-slide-to');
1425
1426      if (slideIndex) {
1427        config.interval = false;
1428      }
1429
1430      Carousel._jQueryInterface.call($$$1(target), config);
1431
1432      if (slideIndex) {
1433        $$$1(target).data(DATA_KEY).to(slideIndex);
1434      }
1435
1436      event.preventDefault();
1437    };
1438
1439    _createClass(Carousel, null, [{
1440      key: "VERSION",
1441      get: function get() {
1442        return VERSION;
1443      }
1444    }, {
1445      key: "Default",
1446      get: function get() {
1447        return Default;
1448      }
1449    }]);
1450    return Carousel;
1451  }();
1452  /**
1453   * ------------------------------------------------------------------------
1454   * Data Api implementation
1455   * ------------------------------------------------------------------------
1456   */
1457
1458
1459  $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler);
1460  $$$1(window).on(Event.LOAD_DATA_API, function () {
1461    $$$1(Selector.DATA_RIDE).each(function () {
1462      var $carousel = $$$1(this);
1463
1464      Carousel._jQueryInterface.call($carousel, $carousel.data());
1465    });
1466  });
1467  /**
1468   * ------------------------------------------------------------------------
1469   * jQuery
1470   * ------------------------------------------------------------------------
1471   */
1472
1473  $$$1.fn[NAME] = Carousel._jQueryInterface;
1474  $$$1.fn[NAME].Constructor = Carousel;
1475
1476  $$$1.fn[NAME].noConflict = function () {
1477    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
1478    return Carousel._jQueryInterface;
1479  };
1480
1481  return Carousel;
1482}($);
1483
1484/**
1485 * --------------------------------------------------------------------------
1486 * Bootstrap (v4.0.0): collapse.js
1487 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1488 * --------------------------------------------------------------------------
1489 */
1490
1491var Collapse = function ($$$1) {
1492  /**
1493   * ------------------------------------------------------------------------
1494   * Constants
1495   * ------------------------------------------------------------------------
1496   */
1497  var NAME = 'collapse';
1498  var VERSION = '4.0.0';
1499  var DATA_KEY = 'bs.collapse';
1500  var EVENT_KEY = "." + DATA_KEY;
1501  var DATA_API_KEY = '.data-api';
1502  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
1503  var TRANSITION_DURATION = 600;
1504  var Default = {
1505    toggle: true,
1506    parent: ''
1507  };
1508  var DefaultType = {
1509    toggle: 'boolean',
1510    parent: '(string|element)'
1511  };
1512  var Event = {
1513    SHOW: "show" + EVENT_KEY,
1514    SHOWN: "shown" + EVENT_KEY,
1515    HIDE: "hide" + EVENT_KEY,
1516    HIDDEN: "hidden" + EVENT_KEY,
1517    CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
1518  };
1519  var ClassName = {
1520    SHOW: 'show',
1521    COLLAPSE: 'collapse',
1522    COLLAPSING: 'collapsing',
1523    COLLAPSED: 'collapsed'
1524  };
1525  var Dimension = {
1526    WIDTH: 'width',
1527    HEIGHT: 'height'
1528  };
1529  var Selector = {
1530    ACTIVES: '.show, .collapsing',
1531    DATA_TOGGLE: '[data-toggle="collapse"]'
1532    /**
1533     * ------------------------------------------------------------------------
1534     * Class Definition
1535     * ------------------------------------------------------------------------
1536     */
1537
1538  };
1539
1540  var Collapse =
1541  /*#__PURE__*/
1542  function () {
1543    function Collapse(element, config) {
1544      this._isTransitioning = false;
1545      this._element = element;
1546      this._config = this._getConfig(config);
1547      this._triggerArray = $$$1.makeArray($$$1("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]")));
1548      var tabToggles = $$$1(Selector.DATA_TOGGLE);
1549
1550      for (var i = 0; i < tabToggles.length; i++) {
1551        var elem = tabToggles[i];
1552        var selector = Util.getSelectorFromElement(elem);
1553
1554        if (selector !== null && $$$1(selector).filter(element).length > 0) {
1555          this._selector = selector;
1556
1557          this._triggerArray.push(elem);
1558        }
1559      }
1560
1561      this._parent = this._config.parent ? this._getParent() : null;
1562
1563      if (!this._config.parent) {
1564        this._addAriaAndCollapsedClass(this._element, this._triggerArray);
1565      }
1566
1567      if (this._config.toggle) {
1568        this.toggle();
1569      }
1570    } // Getters
1571
1572
1573    var _proto = Collapse.prototype;
1574
1575    // Public
1576    _proto.toggle = function toggle() {
1577      if ($$$1(this._element).hasClass(ClassName.SHOW)) {
1578        this.hide();
1579      } else {
1580        this.show();
1581      }
1582    };
1583
1584    _proto.show = function show() {
1585      var _this = this;
1586
1587      if (this._isTransitioning || $$$1(this._element).hasClass(ClassName.SHOW)) {
1588        return;
1589      }
1590
1591      var actives;
1592      var activesData;
1593
1594      if (this._parent) {
1595        actives = $$$1.makeArray($$$1(this._parent).find(Selector.ACTIVES).filter("[data-parent=\"" + this._config.parent + "\"]"));
1596
1597        if (actives.length === 0) {
1598          actives = null;
1599        }
1600      }
1601
1602      if (actives) {
1603        activesData = $$$1(actives).not(this._selector).data(DATA_KEY);
1604
1605        if (activesData && activesData._isTransitioning) {
1606          return;
1607        }
1608      }
1609
1610      var startEvent = $$$1.Event(Event.SHOW);
1611      $$$1(this._element).trigger(startEvent);
1612
1613      if (startEvent.isDefaultPrevented()) {
1614        return;
1615      }
1616
1617      if (actives) {
1618        Collapse._jQueryInterface.call($$$1(actives).not(this._selector), 'hide');
1619
1620        if (!activesData) {
1621          $$$1(actives).data(DATA_KEY, null);
1622        }
1623      }
1624
1625      var dimension = this._getDimension();
1626
1627      $$$1(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING);
1628      this._element.style[dimension] = 0;
1629
1630      if (this._triggerArray.length > 0) {
1631        $$$1(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true);
1632      }
1633
1634      this.setTransitioning(true);
1635
1636      var complete = function complete() {
1637        $$$1(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW);
1638        _this._element.style[dimension] = '';
1639
1640        _this.setTransitioning(false);
1641
1642        $$$1(_this._element).trigger(Event.SHOWN);
1643      };
1644
1645      if (!Util.supportsTransitionEnd()) {
1646        complete();
1647        return;
1648      }
1649
1650      var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
1651      var scrollSize = "scroll" + capitalizedDimension;
1652      $$$1(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
1653      this._element.style[dimension] = this._element[scrollSize] + "px";
1654    };
1655
1656    _proto.hide = function hide() {
1657      var _this2 = this;
1658
1659      if (this._isTransitioning || !$$$1(this._element).hasClass(ClassName.SHOW)) {
1660        return;
1661      }
1662
1663      var startEvent = $$$1.Event(Event.HIDE);
1664      $$$1(this._element).trigger(startEvent);
1665
1666      if (startEvent.isDefaultPrevented()) {
1667        return;
1668      }
1669
1670      var dimension = this._getDimension();
1671
1672      this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
1673      Util.reflow(this._element);
1674      $$$1(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW);
1675
1676      if (this._triggerArray.length > 0) {
1677        for (var i = 0; i < this._triggerArray.length; i++) {
1678          var trigger = this._triggerArray[i];
1679          var selector = Util.getSelectorFromElement(trigger);
1680
1681          if (selector !== null) {
1682            var $elem = $$$1(selector);
1683
1684            if (!$elem.hasClass(ClassName.SHOW)) {
1685              $$$1(trigger).addClass(ClassName.COLLAPSED).attr('aria-expanded', false);
1686            }
1687          }
1688        }
1689      }
1690
1691      this.setTransitioning(true);
1692
1693      var complete = function complete() {
1694        _this2.setTransitioning(false);
1695
1696        $$$1(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN);
1697      };
1698
1699      this._element.style[dimension] = '';
1700
1701      if (!Util.supportsTransitionEnd()) {
1702        complete();
1703        return;
1704      }
1705
1706      $$$1(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
1707    };
1708
1709    _proto.setTransitioning = function setTransitioning(isTransitioning) {
1710      this._isTransitioning = isTransitioning;
1711    };
1712
1713    _proto.dispose = function dispose() {
1714      $$$1.removeData(this._element, DATA_KEY);
1715      this._config = null;
1716      this._parent = null;
1717      this._element = null;
1718      this._triggerArray = null;
1719      this._isTransitioning = null;
1720    }; // Private
1721
1722
1723    _proto._getConfig = function _getConfig(config) {
1724      config = _extends({}, Default, config);
1725      config.toggle = Boolean(config.toggle); // Coerce string values
1726
1727      Util.typeCheckConfig(NAME, config, DefaultType);
1728      return config;
1729    };
1730
1731    _proto._getDimension = function _getDimension() {
1732      var hasWidth = $$$1(this._element).hasClass(Dimension.WIDTH);
1733      return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;
1734    };
1735
1736    _proto._getParent = function _getParent() {
1737      var _this3 = this;
1738
1739      var parent = null;
1740
1741      if (Util.isElement(this._config.parent)) {
1742        parent = this._config.parent; // It's a jQuery object
1743
1744        if (typeof this._config.parent.jquery !== 'undefined') {
1745          parent = this._config.parent[0];
1746        }
1747      } else {
1748        parent = $$$1(this._config.parent)[0];
1749      }
1750
1751      var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]";
1752      $$$1(parent).find(selector).each(function (i, element) {
1753        _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
1754      });
1755      return parent;
1756    };
1757
1758    _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
1759      if (element) {
1760        var isOpen = $$$1(element).hasClass(ClassName.SHOW);
1761
1762        if (triggerArray.length > 0) {
1763          $$$1(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
1764        }
1765      }
1766    }; // Static
1767
1768
1769    Collapse._getTargetFromElement = function _getTargetFromElement(element) {
1770      var selector = Util.getSelectorFromElement(element);
1771      return selector ? $$$1(selector)[0] : null;
1772    };
1773
1774    Collapse._jQueryInterface = function _jQueryInterface(config) {
1775      return this.each(function () {
1776        var $this = $$$1(this);
1777        var data = $this.data(DATA_KEY);
1778
1779        var _config = _extends({}, Default, $this.data(), typeof config === 'object' && config);
1780
1781        if (!data && _config.toggle && /show|hide/.test(config)) {
1782          _config.toggle = false;
vendor: 4,949 bytes, lines 1783-1955
1783        }
1784
1785        if (!data) {
1786          data = new Collapse(this, _config);
1787          $this.data(DATA_KEY, data);
1788        }
1789
1790        if (typeof config === 'string') {
1791          if (typeof data[config] === 'undefined') {
1792            throw new TypeError("No method named \"" + config + "\"");
1793          }
1794
1795          data[config]();
1796        }
1797      });
1798    };
1799
1800    _createClass(Collapse, null, [{
1801      key: "VERSION",
1802      get: function get() {
1803        return VERSION;
1804      }
1805    }, {
1806      key: "Default",
1807      get: function get() {
1808        return Default;
1809      }
1810    }]);
1811    return Collapse;
1812  }();
1813  /**
1814   * ------------------------------------------------------------------------
1815   * Data Api implementation
1816   * ------------------------------------------------------------------------
1817   */
1818
1819
1820  $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
1821    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
1822    if (event.currentTarget.tagName === 'A') {
1823      event.preventDefault();
1824    }
1825
1826    var $trigger = $$$1(this);
1827    var selector = Util.getSelectorFromElement(this);
1828    $$$1(selector).each(function () {
1829      var $target = $$$1(this);
1830      var data = $target.data(DATA_KEY);
1831      var config = data ? 'toggle' : $trigger.data();
1832
1833      Collapse._jQueryInterface.call($target, config);
1834    });
1835  });
1836  /**
1837   * ------------------------------------------------------------------------
1838   * jQuery
1839   * ------------------------------------------------------------------------
1840   */
1841
1842  $$$1.fn[NAME] = Collapse._jQueryInterface;
1843  $$$1.fn[NAME].Constructor = Collapse;
1844
1845  $$$1.fn[NAME].noConflict = function () {
1846    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
1847    return Collapse._jQueryInterface;
1848  };
1849
1850  return Collapse;
1851}($);
1852
1853/**
1854 * --------------------------------------------------------------------------
1855 * Bootstrap (v4.0.0): dropdown.js
1856 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1857 * --------------------------------------------------------------------------
1858 */
1859
1860var Dropdown = function ($$$1) {
1861  /**
1862   * ------------------------------------------------------------------------
1863   * Constants
1864   * ------------------------------------------------------------------------
1865   */
1866  var NAME = 'dropdown';
1867  var VERSION = '4.0.0';
1868  var DATA_KEY = 'bs.dropdown';
1869  var EVENT_KEY = "." + DATA_KEY;
1870  var DATA_API_KEY = '.data-api';
1871  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
1872  var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
1873
1874  var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
1875
1876  var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key
1877
1878  var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key
1879
1880  var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key
1881
1882  var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
1883
1884  var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE);
1885  var Event = {
1886    HIDE: "hide" + EVENT_KEY,
1887    HIDDEN: "hidden" + EVENT_KEY,
1888    SHOW: "show" + EVENT_KEY,
1889    SHOWN: "shown" + EVENT_KEY,
1890    CLICK: "click" + EVENT_KEY,
1891    CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY,
1892    KEYDOWN_DATA_API: "keydown" + EVENT_KEY + DATA_API_KEY,
1893    KEYUP_DATA_API: "keyup" + EVENT_KEY + DATA_API_KEY
1894  };
1895  var ClassName = {
1896    DISABLED: 'disabled',
1897    SHOW: 'show',
1898    DROPUP: 'dropup',
1899    DROPRIGHT: 'dropright',
1900    DROPLEFT: 'dropleft',
1901    MENURIGHT: 'dropdown-menu-right',
1902    MENULEFT: 'dropdown-menu-left',
1903    POSITION_STATIC: 'position-static'
1904  };
1905  var Selector = {
1906    DATA_TOGGLE: '[data-toggle="dropdown"]',
1907    FORM_CHILD: '.dropdown form',
1908    MENU: '.dropdown-menu',
1909    NAVBAR_NAV: '.navbar-nav',
1910    VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled)'
1911  };
1912  var AttachmentMap = {
1913    TOP: 'top-start',
1914    TOPEND: 'top-end',
1915    BOTTOM: 'bottom-start',
1916    BOTTOMEND: 'bottom-end',
1917    RIGHT: 'right-start',
1918    RIGHTEND: 'right-end',
1919    LEFT: 'left-start',
1920    LEFTEND: 'left-end'
1921  };
1922  var Default = {
1923    offset: 0,
1924    flip: true,
1925    boundary: 'scrollParent'
1926  };
1927  var DefaultType = {
1928    offset: '(number|string|function)',
1929    flip: 'boolean',
1930    boundary: '(string|element)'
1931    /**
1932     * ------------------------------------------------------------------------
1933     * Class Definition
1934     * ------------------------------------------------------------------------
1935     */
1936
1937  };
1938
1939  var Dropdown =
1940  /*#__PURE__*/
1941  function () {
1942    function Dropdown(element, config) {
1943      this._element = element;
1944      this._popper = null;
1945      this._config = this._getConfig(config);
1946      this._menu = this._getMenuElement();
1947      this._inNavbar = this._detectNavbar();
1948
1949      this._addEventListeners();
1950    } // Getters
1951
1952
1953    var _proto = Dropdown.prototype;
1954
1955    // Public
1956    _proto.toggle = function toggle() {
1957      if (this._element.disabled || $$$1(this._element).hasClass(ClassName.DISABLED)) {
1958        return;
1959      }
1960
1961      var parent = Dropdown._getParentFromElement(this._element);
1962
1963      var isActive = $$$1(this._menu).hasClass(ClassName.SHOW);
1964
1965      Dropdown._clearMenus();
1966
1967      if (isActive) {
1968        return;
1969      }
1970
1971      var relatedTarget = {
1972        relatedTarget: this._element
1973      };
1974      var showEvent = $$$1.Event(Event.SHOW, relatedTarget);
1975      $$$1(parent).trigger(showEvent);
1976
1977      if (showEvent.isDefaultPrevented()) {
1978        return;
1979      } // Disable totally Popper.js for Dropdown in Navbar
1980
1981
1982      if (!this._inNavbar) {
1983        /**
1984         * Check for Popper dependency
1985         * Popper - https://popper.js.org
1986         */
1987        if (typeof Popper === 'undefined') {
1988          throw new TypeError('Bootstrap dropdown require Popper.js (https://popper.js.org)');
1989        }
1990
1991        var element = this._element; // For dropup with alignment we use the parent as popper container
1992
1993        if ($$$1(parent).hasClass(ClassName.DROPUP)) {
1994          if ($$$1(this._menu).hasClass(ClassName.MENULEFT) || $$$1(this._menu).hasClass(ClassName.MENURIGHT)) {
1995            element = parent;
1996          }
1997        } // If boundary is not `scrollParent`, then set position to `static`
1998        // to allow the menu to "escape" the scroll parent's boundaries
1999        // https://github.com/twbs/bootstrap/issues/24251
2000
2001
2002        if (this._config.boundary !== 'scrollParent') {
2003          $$$1(parent).addClass(ClassName.POSITION_STATIC);
2004        }
2005
2006        this._popper = new Popper(element, this._menu, this._getPopperConfig());
2007      } // If this is a touch-enabled device we add extra
2008      // empty mouseover listeners to the body's immediate children;
2009      // only needed because of broken event delegation on iOS
2010      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
2011
2012
2013      if ('ontouchstart' in document.documentElement && $$$1(parent).closest(Selector.NAVBAR_NAV).length === 0) {
2014        $$$1('body').children().on('mouseover', null, $$$1.noop);
2015      }
2016
2017      this._element.focus();
2018
2019      this._element.setAttribute('aria-expanded', true);
2020
2021      $$$1(this._menu).toggleClass(ClassName.SHOW);
2022      $$$1(parent).toggleClass(ClassName.SHOW).trigger($$$1.Event(Event.SHOWN, relatedTarget));
2023    };
2024
2025    _proto.dispose = function dispose() {
2026      $$$1.removeData(this._element, DATA_KEY);
2027      $$$1(this._element).off(EVENT_KEY);
2028      this._element = null;
2029      this._menu = null;
2030
2031      if (this._popper !== null) {
2032        this._popper.destroy();
2033
2034        this._popper = null;
2035      }
2036    };
2037
2038    _proto.update = function update() {
2039      this._inNavbar = this._detectNavbar();
2040
2041      if (this._popper !== null) {
2042        this._popper.scheduleUpdate();
2043      }
2044    }; // Private
2045
2046
2047    _proto._addEventListeners = function _addEventListeners() {
2048      var _this = this;
2049
2050      $$$1(this._element).on(Event.CLICK, function (event) {
2051        event.preventDefault();
2052        event.stopPropagation();
2053
2054        _this.toggle();
2055      });
2056    };
2057
2058    _proto._getConfig = function _getConfig(config) {
2059      config = _extends({}, this.constructor.Default, $$$1(this._element).data(), config);
2060      Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
2061      return config;
2062    };
2063
2064    _proto._getMenuElement = function _getMenuElement() {
2065      if (!this._menu) {
2066        var parent = Dropdown._getParentFromElement(this._element);
2067
2068        this._menu = $$$1(parent).find(Selector.MENU)[0];
2069      }
2070
2071      return this._menu;
2072    };
2073
2074    _proto._getPlacement = function _getPlacement() {
2075      var $parentDropdown = $$$1(this._element).parent();
2076      var placement = AttachmentMap.BOTTOM; // Handle dropup
2077
2078      if ($parentDropdown.hasClass(ClassName.DROPUP)) {
2079        placement = AttachmentMap.TOP;
2080
2081        if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) {
2082          placement = AttachmentMap.TOPEND;
2083        }
2084      } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {
2085        placement = AttachmentMap.RIGHT;
2086      } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {
2087        placement = AttachmentMap.LEFT;
2088      } else if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) {
2089        placement = AttachmentMap.BOTTOMEND;
2090      }
2091
2092      return placement;
2093    };
2094
2095    _proto._detectNavbar = function _detectNavbar() {
2096      return $$$1(this._element).closest('.navbar').length > 0;
2097    };
2098
2099    _proto._getPopperConfig = function _getPopperConfig() {
2100      var _this2 = this;
2101
2102      var offsetConf = {};
2103
2104      if (typeof this._config.offset === 'function') {
2105        offsetConf.fn = function (data) {
2106          data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets) || {});
2107          return data;
2108        };
2109      } else {
2110        offsetConf.offset = this._config.offset;
2111      }
2112
2113      var popperConfig = {
2114        placement: this._getPlacement(),
2115        modifiers: {
2116          offset: offsetConf,
2117          flip: {
2118            enabled: this._config.flip
2119          },
2120          preventOverflow: {
2121            boundariesElement: this._config.boundary
2122          }
2123        }
2124      };
2125      return popperConfig;
2126    }; // Static
2127
2128
2129    Dropdown._jQueryInterface = function _jQueryInterface(config) {
2130      return this.each(function () {
2131        var data = $$$1(this).data(DATA_KEY);
2132
2133        var _config = typeof config === 'object' ? config : null;
2134
2135        if (!data) {
2136          data = new Dropdown(this, _config);
2137          $$$1(this).data(DATA_KEY, data);
2138        }
2139
2140        if (typeof config === 'string') {
2141          if (typeof data[config] === 'undefined') {
2142            throw new TypeError("No method named \"" + config + "\"");
2143          }
2144
2145          data[config]();
2146        }
2147      });
2148    };
2149
2150    Dropdown._clearMenus = function _clearMenus(event) {
2151      if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {
2152        return;
2153      }
2154
2155      var toggles = $$$1.makeArray($$$1(Selector.DATA_TOGGLE));
2156
2157      for (var i = 0; i < toggles.length; i++) {
2158        var parent = Dropdown._getParentFromElement(toggles[i]);
2159
2160        var context = $$$1(toggles[i]).data(DATA_KEY);
2161        var relatedTarget = {
2162          relatedTarget: toggles[i]
2163        };
2164
2165        if (!context) {
2166          continue;
2167        }
2168
2169        var dropdownMenu = context._menu;
2170
2171        if (!$$$1(parent).hasClass(ClassName.SHOW)) {
2172          continue;
2173        }
2174
2175        if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $$$1.contains(parent, event.target)) {
2176          continue;
2177        }
2178
2179        var hideEvent = $$$1.Event(Event.HIDE, relatedTarget);
2180        $$$1(parent).trigger(hideEvent);
2181
2182        if (hideEvent.isDefaultPrevented()) {
2183          continue;
2184        } // If this is a touch-enabled device we remove the extra
2185        // empty mouseover listeners we added for iOS support
2186
2187
2188        if ('ontouchstart' in document.documentElement) {
2189          $$$1('body').children().off('mouseover', null, $$$1.noop);
2190        }
2191
2192        toggles[i].setAttribute('aria-expanded', 'false');
2193        $$$1(dropdownMenu).removeClass(ClassName.SHOW);
2194        $$$1(parent).removeClass(ClassName.SHOW).trigger($$$1.Event(Event.HIDDEN, relatedTarget));
2195      }
2196    };
2197
2198    Dropdown._getParentFromElement = function _getParentFromElement(element) {
2199      var parent;
2200      var selector = Util.getSelectorFromElement(element);
2201
2202      if (selector) {
2203        parent = $$$1(selector)[0];
2204      }
2205
2206      return parent || element.parentNode;
2207    }; // eslint-disable-next-line complexity
2208
2209
2210    Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
2211      // If not input/textarea:
2212      //  - And not a key in REGEXP_KEYDOWN => not a dropdown command
2213      // If input/textarea:
2214      //  - If space key => not a dropdown command
2215      //  - If key is other than escape
2216      //    - If key is not up or down => not a dropdown command
2217      //    - If trigger inside the menu => not a dropdown command
2218      if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $$$1(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
2219        return;
2220      }
2221
2222      event.preventDefault();
2223      event.stopPropagation();
2224
2225      if (this.disabled || $$$1(this).hasClass(ClassName.DISABLED)) {
2226        return;
2227      }
2228
2229      var parent = Dropdown._getParentFromElement(this);
2230
2231      var isActive = $$$1(parent).hasClass(ClassName.SHOW);
2232
2233      if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
2234        if (event.which === ESCAPE_KEYCODE) {
2235          var toggle = $$$1(parent).find(Selector.DATA_TOGGLE)[0];
2236          $$$1(toggle).trigger('focus');
2237        }
2238
2239        $$$1(this).trigger('click');
2240        return;
2241      }
2242
2243      var items = $$$1(parent).find(Selector.VISIBLE_ITEMS).get();
2244
2245      if (items.length === 0) {
2246        return;
2247      }
2248
2249      var index = items.indexOf(event.target);
2250
2251      if (event.which === ARROW_UP_KEYCODE && index > 0) {
2252        // Up
2253        index--;
2254      }
2255
2256      if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
2257        // Down
2258        index++;
2259      }
2260
2261      if (index < 0) {
2262        index = 0;
2263      }
2264
2265      items[index].focus();
2266    };
2267
2268    _createClass(Dropdown, null, [{
2269      key: "VERSION",
2270      get: function get() {
2271        return VERSION;
2272      }
2273    }, {
2274      key: "Default",
2275      get: function get() {
2276        return Default;
2277      }
2278    }, {
2279      key: "DefaultType",
2280      get: function get() {
2281        return DefaultType;
2282      }
2283    }]);
2284    return Dropdown;
2285  }();
2286  /**
2287   * ------------------------------------------------------------------------
2288   * Data Api implementation
2289   * ------------------------------------------------------------------------
2290   */
2291
2292
2293  $$$1(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + " " + Event.KEYUP_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
2294    event.preventDefault();
2295    event.stopPropagation();
2296
2297    Dropdown._jQueryInterface.call($$$1(this), 'toggle');
2298  }).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) {
2299    e.stopPropagation();
2300  });
2301  /**
2302   * ------------------------------------------------------------------------
2303   * jQuery
2304   * ------------------------------------------------------------------------
2305   */
2306
2307  $$$1.fn[NAME] = Dropdown._jQueryInterface;
2308  $$$1.fn[NAME].Constructor = Dropdown;
2309
2310  $$$1.fn[NAME].noConflict = function () {
2311    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
2312    return Dropdown._jQueryInterface;
2313  };
2314
2315  return Dropdown;
2316}($, Popper);
2317
2318/**
2319 * --------------------------------------------------------------------------
2320 * Bootstrap (v4.0.0): modal.js
2321 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2322 * --------------------------------------------------------------------------
2323 */
2324
2325var Modal = function ($$$1) {
2326  /**
2327   * ------------------------------------------------------------------------
2328   * Constants
2329   * ------------------------------------------------------------------------
2330   */
2331  var NAME = 'modal';
2332  var VERSION = '4.0.0';
2333  var DATA_KEY = 'bs.modal';
2334  var EVENT_KEY = "." + DATA_KEY;
2335  var DATA_API_KEY = '.data-api';
2336  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
2337  var TRANSITION_DURATION = 300;
2338  var BACKDROP_TRANSITION_DURATION = 150;
2339  var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
2340
2341  var Default = {
2342    backdrop: true,
2343    keyboard: true,
2344    focus: true,
2345    show: true
2346  };
2347  var DefaultType = {
2348    backdrop: '(boolean|string)',
2349    keyboard: 'boolean',
2350    focus: 'boolean',
2351    show: 'boolean'
2352  };
2353  var Event = {
2354    HIDE: "hide" + EVENT_KEY,
2355    HIDDEN: "hidden" + EVENT_KEY,
2356    SHOW: "show" + EVENT_KEY,
2357    SHOWN: "shown" + EVENT_KEY,
2358    FOCUSIN: "focusin" + EVENT_KEY,
2359    RESIZE: "resize" + EVENT_KEY,
2360    CLICK_DISMISS: "click.dismiss" + EVENT_KEY,
2361    KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY,
2362    MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY,
2363    MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY,
2364    CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
2365  };
2366  var ClassName = {
2367    SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
2368    BACKDROP: 'modal-backdrop',
2369    OPEN: 'modal-open',
2370    FADE: 'fade',
2371    SHOW: 'show'
2372  };
2373  var Selector = {
2374    DIALOG: '.modal-dialog',
2375    DATA_TOGGLE: '[data-toggle="modal"]',
2376    DATA_DISMISS: '[data-dismiss="modal"]',
2377    FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
2378    STICKY_CONTENT: '.sticky-top',
2379    NAVBAR_TOGGLER: '.navbar-toggler'
2380    /**
2381     * ------------------------------------------------------------------------
2382     * Class Definition
2383     * ------------------------------------------------------------------------
2384     */
2385
2386  };
2387
2388  var Modal =
2389  /*#__PURE__*/
2390  function () {
2391    function Modal(element, config) {
2392      this._config = this._getConfig(config);
2393      this._element = element;
2394      this._dialog = $$$1(element).find(Selector.DIALOG)[0];
2395      this._backdrop = null;
2396      this._isShown = false;
2397      this._isBodyOverflowing = false;
2398      this._ignoreBackdropClick = false;
2399      this._originalBodyPadding = 0;
2400      this._scrollbarWidth = 0;
2401    } // Getters
2402
2403
2404    var _proto = Modal.prototype;
2405
2406    // Public
2407    _proto.toggle = function toggle(relatedTarget) {
2408      return this._isShown ? this.hide() : this.show(relatedTarget);
2409    };
2410
2411    _proto.show = function show(relatedTarget) {
2412      var _this = this;
2413
2414      if (this._isTransitioning || this._isShown) {
2415        return;
2416      }
2417
2418      if (Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE)) {
2419        this._isTransitioning = true;
2420      }
2421
2422      var showEvent = $$$1.Event(Event.SHOW, {
2423        relatedTarget: relatedTarget
2424      });
2425      $$$1(this._element).trigger(showEvent);
2426
2427      if (this._isShown || showEvent.isDefaultPrevented()) {
2428        return;
2429      }
2430
2431      this._isShown = true;
2432
2433      this._checkScrollbar();
2434
2435      this._setScrollbar();
2436
2437      this._adjustDialog();
2438
2439      $$$1(document.body).addClass(ClassName.OPEN);
2440
2441      this._setEscapeEvent();
2442
2443      this._setResizeEvent();
2444
2445      $$$1(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) {
2446        return _this.hide(event);
2447      });
2448      $$$1(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () {
2449        $$$1(_this._element).one(Event.MOUSEUP_DISMISS, function (event) {
2450          if ($$$1(event.target).is(_this._element)) {
2451            _this._ignoreBackdropClick = true;
2452          }
2453        });
2454      });
2455
2456      this._showBackdrop(function () {
2457        return _this._showElement(relatedTarget);
2458      });
2459    };
2460
2461    _proto.hide = function hide(event) {
2462      var _this2 = this;
2463
2464      if (event) {
2465        event.preventDefault();
2466      }
2467
2468      if (this._isTransitioning || !this._isShown) {
2469        return;
2470      }
2471
2472      var hideEvent = $$$1.Event(Event.HIDE);
2473      $$$1(this._element).trigger(hideEvent);
2474
2475      if (!this._isShown || hideEvent.isDefaultPrevented()) {
2476        return;
2477      }
2478
2479      this._isShown = false;
2480      var transition = Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE);
2481
2482      if (transition) {
2483        this._isTransitioning = true;
2484      }
2485
2486      this._setEscapeEvent();
2487
2488      this._setResizeEvent();
2489
2490      $$$1(document).off(Event.FOCUSIN);
2491      $$$1(this._element).removeClass(ClassName.SHOW);
2492      $$$1(this._element).off(Event.CLICK_DISMISS);
2493      $$$1(this._dialog).off(Event.MOUSEDOWN_DISMISS);
2494
2495      if (transition) {
2496        $$$1(this._element).one(Util.TRANSITION_END, function (event) {
2497          return _this2._hideModal(event);
2498        }).emulateTransitionEnd(TRANSITION_DURATION);
2499      } else {
2500        this._hideModal();
2501      }
2502    };
2503
2504    _proto.dispose = function dispose() {
2505      $$$1.removeData(this._element, DATA_KEY);
2506      $$$1(window, document, this._element, this._backdrop).off(EVENT_KEY);
2507      this._config = null;
2508      this._element = null;
2509      this._dialog = null;
2510      this._backdrop = null;
2511      this._isShown = null;
2512      this._isBodyOverflowing = null;
2513      this._ignoreBackdropClick = null;
2514      this._scrollbarWidth = null;
2515    };
2516
2517    _proto.handleUpdate = function handleUpdate() {
2518      this._adjustDialog();
2519    }; // Private
2520
2521
2522    _proto._getConfig = function _getConfig(config) {
2523      config = _extends({}, Default, config);
2524      Util.typeCheckConfig(NAME, config, DefaultType);
2525      return config;
2526    };
2527
2528    _proto._showElement = function _showElement(relatedTarget) {
2529      var _this3 = this;
2530
2531      var transition = Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE);
2532
2533      if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
2534        // Don't move modal's DOM position
2535        document.body.appendChild(this._element);
2536      }
2537
2538      this._element.style.display = 'block';
2539
2540      this._element.removeAttribute('aria-hidden');
2541
2542      this._element.scrollTop = 0;
2543
2544      if (transition) {
2545        Util.reflow(this._element);
2546      }
2547
2548      $$$1(this._element).addClass(ClassName.SHOW);
2549
2550      if (this._config.focus) {
2551        this._enforceFocus();
2552      }
2553
2554      var shownEvent = $$$1.Event(Event.SHOWN, {
2555        relatedTarget: relatedTarget
2556      });
2557
2558      var transitionComplete = function transitionComplete() {
2559        if (_this3._config.focus) {
2560          _this3._element.focus();
2561        }
2562
2563        _this3._isTransitioning = false;
2564        $$$1(_this3._element).trigger(shownEvent);
2565      };
2566
2567      if (transition) {
2568        $$$1(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION);
2569      } else {
2570        transitionComplete();
2571      }
2572    };
2573
2574    _proto._enforceFocus = function _enforceFocus() {
2575      var _this4 = this;
2576
2577      $$$1(document).off(Event.FOCUSIN) // Guard against infinite focus loop
2578      .on(Event.FOCUSIN, function (event) {
2579        if (document !== event.target && _this4._element !== event.target && $$$1(_this4._element).has(event.target).length === 0) {
2580          _this4._element.focus();
2581        }
2582      });
2583    };
2584
2585    _proto._setEscapeEvent = function _setEscapeEvent() {
2586      var _this5 = this;
2587
2588      if (this._isShown && this._config.keyboard) {
2589        $$$1(this._element).on(Event.KEYDOWN_DISMISS, function (event) {
2590          if (event.which === ESCAPE_KEYCODE) {
2591            event.preventDefault();
2592
2593            _this5.hide();
2594          }
2595        });
2596      } else if (!this._isShown) {
2597        $$$1(this._element).off(Event.KEYDOWN_DISMISS);
2598      }
2599    };
2600
2601    _proto._setResizeEvent = function _setResizeEvent() {
2602      var _this6 = this;
2603
2604      if (this._isShown) {
2605        $$$1(window).on(Event.RESIZE, function (event) {
2606          return _this6.handleUpdate(event);
2607        });
2608      } else {
2609        $$$1(window).off(Event.RESIZE);
2610      }
2611    };
2612
2613    _proto._hideModal = function _hideModal() {
2614      var _this7 = this;
2615
2616      this._element.style.display = 'none';
2617
2618      this._element.setAttribute('aria-hidden', true);
2619
2620      this._isTransitioning = false;
2621
2622      this._showBackdrop(function () {
2623        $$$1(document.body).removeClass(ClassName.OPEN);
2624
2625        _this7._resetAdjustments();
2626
2627        _this7._resetScrollbar();
2628
2629        $$$1(_this7._element).trigger(Event.HIDDEN);
2630      });
2631    };
2632
2633    _proto._removeBackdrop = function _removeBackdrop() {
2634      if (this._backdrop) {
2635        $$$1(this._backdrop).remove();
2636        this._backdrop = null;
2637      }
2638    };
2639
2640    _proto._showBackdrop = function _showBackdrop(callback) {
2641      var _this8 = this;
2642
2643      var animate = $$$1(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : '';
2644
2645      if (this._isShown && this._config.backdrop) {
2646        var doAnimate = Util.supportsTransitionEnd() && animate;
2647        this._backdrop = document.createElement('div');
2648        this._backdrop.className = ClassName.BACKDROP;
2649
2650        if (animate) {
2651          $$$1(this._backdrop).addClass(animate);
2652        }
2653
2654        $$$1(this._backdrop).appendTo(document.body);
2655        $$$1(this._element).on(Event.CLICK_DISMISS, function (event) {
2656          if (_this8._ignoreBackdropClick) {
2657            _this8._ignoreBackdropClick = false;
2658            return;
2659          }
2660
2661          if (event.target !== event.currentTarget) {
2662            return;
2663          }
2664
2665          if (_this8._config.backdrop === 'static') {
2666            _this8._element.focus();
2667          } else {
2668            _this8.hide();
2669          }
2670        });
2671
2672        if (doAnimate) {
2673          Util.reflow(this._backdrop);
2674        }
2675
2676        $$$1(this._backdrop).addClass(ClassName.SHOW);
2677
2678        if (!callback) {
2679          return;
2680        }
2681
2682        if (!doAnimate) {
2683          callback();
2684          return;
2685        }
2686
2687        $$$1(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
2688      } else if (!this._isShown && this._backdrop) {
2689        $$$1(this._backdrop).removeClass(ClassName.SHOW);
2690
2691        var callbackRemove = function callbackRemove() {
2692          _this8._removeBackdrop();
2693
2694          if (callback) {
2695            callback();
2696          }
2697        };
2698
2699        if (Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE)) {
2700          $$$1(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
2701        } else {
2702          callbackRemove();
2703        }
2704      } else if (callback) {
2705        callback();
2706      }
2707    }; // ----------------------------------------------------------------------
2708    // the following methods are used to handle overflowing modals
2709    // todo (fat): these should probably be refactored out of modal.js
2710    // ----------------------------------------------------------------------
2711
2712
2713    _proto._adjustDialog = function _adjustDialog() {
2714      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
2715
2716      if (!this._isBodyOverflowing && isModalOverflowing) {
2717        this._element.style.paddingLeft = this._scrollbarWidth + "px";
2718      }
2719
2720      if (this._isBodyOverflowing && !isModalOverflowing) {
2721        this._element.style.paddingRight = this._scrollbarWidth + "px";
2722      }
2723    };
2724
2725    _proto._resetAdjustments = function _resetAdjustments() {
2726      this._element.style.paddingLeft = '';
2727      this._element.style.paddingRight = '';
2728    };
2729
2730    _proto._checkScrollbar = function _checkScrollbar() {
2731      var rect = document.body.getBoundingClientRect();
2732      this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;
2733      this._scrollbarWidth = this._getScrollbarWidth();
2734    };
2735
2736    _proto._setScrollbar = function _setScrollbar() {
2737      var _this9 = this;
2738
2739      if (this._isBodyOverflowing) {
2740        // Note: DOMNode.style.paddingRight returns the actual value or '' if not set
2741        //   while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
2742        // Adjust fixed content padding
2743        $$$1(Selector.FIXED_CONTENT).each(function (index, element) {
2744          var actualPadding = $$$1(element)[0].style.paddingRight;
2745          var calculatedPadding = $$$1(element).css('padding-right');
2746          $$$1(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px");
2747        }); // Adjust sticky content margin
2748
2749        $$$1(Selector.STICKY_CONTENT).each(function (index, element) {
2750          var actualMargin = $$$1(element)[0].style.marginRight;
2751          var calculatedMargin = $$$1(element).css('margin-right');
2752          $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px");
2753        }); // Adjust navbar-toggler margin
2754
2755        $$$1(Selector.NAVBAR_TOGGLER).each(function (index, element) {
2756          var actualMargin = $$$1(element)[0].style.marginRight;
2757          var calculatedMargin = $$$1(element).css('margin-right');
2758          $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) + _this9._scrollbarWidth + "px");
2759        }); // Adjust body padding
2760
2761        var actualPadding = document.body.style.paddingRight;
2762        var calculatedPadding = $$$1('body').css('padding-right');
2763        $$$1('body').data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
2764      }
2765    };
2766
2767    _proto._resetScrollbar = function _resetScrollbar() {
2768      // Restore fixed content padding
2769      $$$1(Selector.FIXED_CONTENT).each(function (index, element) {
2770        var padding = $$$1(element).data('padding-right');
2771
2772        if (typeof padding !== 'undefined') {
2773          $$$1(element).css('padding-right', padding).removeData('padding-right');
2774        }
2775      }); // Restore sticky content and navbar-toggler margin
2776
2777      $$$1(Selector.STICKY_CONTENT + ", " + Selector.NAVBAR_TOGGLER).each(function (index, element) {
2778        var margin = $$$1(element).data('margin-right');
2779
2780        if (typeof margin !== 'undefined') {
2781          $$$1(element).css('margin-right', margin).removeData('margin-right');
2782        }
2783      }); // Restore body padding
2784
2785      var padding = $$$1('body').data('padding-right');
2786
2787      if (typeof padding !== 'undefined') {
2788        $$$1('body').css('padding-right', padding).removeData('padding-right');
2789      }
2790    };
2791
2792    _proto._getScrollbarWidth = function _getScrollbarWidth() {
2793      // thx d.walsh
2794      var scrollDiv = document.createElement('div');
2795      scrollDiv.className = ClassName.SCROLLBAR_MEASURER;
2796      document.body.appendChild(scrollDiv);
2797      var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
2798      document.body.removeChild(scrollDiv);
2799      return scrollbarWidth;
2800    }; // Static
2801
2802
2803    Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
2804      return this.each(function () {
2805        var data = $$$1(this).data(DATA_KEY);
2806
2807        var _config = _extends({}, Modal.Default, $$$1(this).data(), typeof config === 'object' && config);
2808
2809        if (!data) {
2810          data = new Modal(this, _config);
2811          $$$1(this).data(DATA_KEY, data);
2812        }
2813
2814        if (typeof config === 'string') {
2815          if (typeof data[config] === 'undefined') {
2816            throw new TypeError("No method named \"" + config + "\"");
2817          }
2818
2819          data[config](relatedTarget);
2820        } else if (_config.show) {
2821          data.show(relatedTarget);
2822        }
2823      });
2824    };
2825
2826    _createClass(Modal, null, [{
2827      key: "VERSION",
2828      get: function get() {
2829        return VERSION;
2830      }
2831    }, {
2832      key: "Default",
2833      get: function get() {
2834        return Default;
2835      }
2836    }]);
2837    return Modal;
2838  }();
2839  /**
2840   * ------------------------------------------------------------------------
2841   * Data Api implementation
2842   * ------------------------------------------------------------------------
2843   */
2844
2845
2846  $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
2847    var _this10 = this;
2848
2849    var target;
2850    var selector = Util.getSelectorFromElement(this);
2851
2852    if (selector) {
2853      target = $$$1(selector)[0];
2854    }
2855
2856    var config = $$$1(target).data(DATA_KEY) ? 'toggle' : _extends({}, $$$1(target).data(), $$$1(this).data());
2857
2858    if (this.tagName === 'A' || this.tagName === 'AREA') {
2859      event.preventDefault();
2860    }
2861
2862    var $target = $$$1(target).one(Event.SHOW, function (showEvent) {
2863      if (showEvent.isDefaultPrevented()) {
2864        // Only register focus restorer if modal will actually get shown
2865        return;
2866      }
2867
2868      $target.one(Event.HIDDEN, function () {
2869        if ($$$1(_this10).is(':visible')) {
2870          _this10.focus();
2871        }
2872      });
2873    });
2874
2875    Modal._jQueryInterface.call($$$1(target), config, this);
2876  });
2877  /**
2878   * ------------------------------------------------------------------------
2879   * jQuery
2880   * ------------------------------------------------------------------------
2881   */
2882
2883  $$$1.fn[NAME] = Modal._jQueryInterface;
2884  $$$1.fn[NAME].Constructor = Modal;
2885
2886  $$$1.fn[NAME].noConflict = function () {
2887    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
2888    return Modal._jQueryInterface;
2889  };
2890
2891  return Modal;
2892}($);
2893
2894/**
2895 * --------------------------------------------------------------------------
2896 * Bootstrap (v4.0.0): tooltip.js
2897 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2898 * --------------------------------------------------------------------------
2899 */
2900
2901var Tooltip = function ($$$1) {
2902  /**
2903   * ------------------------------------------------------------------------
2904   * Constants
2905   * ------------------------------------------------------------------------
2906   */
2907  var NAME = 'tooltip';
2908  var VERSION = '4.0.0';
2909  var DATA_KEY = 'bs.tooltip';
2910  var EVENT_KEY = "." + DATA_KEY;
2911  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
2912  var TRANSITION_DURATION = 150;
2913  var CLASS_PREFIX = 'bs-tooltip';
2914  var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
2915  var DefaultType = {
2916    animation: 'boolean',
2917    template: 'string',
2918    title: '(string|element|function)',
2919    trigger: 'string',
2920    delay: '(number|object)',
2921    html: 'boolean',
2922    selector: '(string|boolean)',
2923    placement: '(string|function)',
2924    offset: '(number|string)',
2925    container: '(string|element|boolean)',
2926    fallbackPlacement: '(string|array)',
2927    boundary: '(string|element)'
2928  };
2929  var AttachmentMap = {
2930    AUTO: 'auto',
2931    TOP: 'top',
2932    RIGHT: 'right',
2933    BOTTOM: 'bottom',
2934    LEFT: 'left'
2935  };
2936  var Default = {
2937    animation: true,
2938    template: '<div class="tooltip" role="tooltip">' + '<div class="arrow"></div>' + '<div class="tooltip-inner"></div></div>',
2939    trigger: 'hover focus',
2940    title: '',
2941    delay: 0,
2942    html: false,
2943    selector: false,
2944    placement: 'top',
2945    offset: 0,
2946    container: false,
2947    fallbackPlacement: 'flip',
2948    boundary: 'scrollParent'
2949  };
2950  var HoverState = {
2951    SHOW: 'show',
2952    OUT: 'out'
2953  };
2954  var Event = {
2955    HIDE: "hide" + EVENT_KEY,
2956    HIDDEN: "hidden" + EVENT_KEY,
2957    SHOW: "show" + EVENT_KEY,
2958    SHOWN: "shown" + EVENT_KEY,
2959    INSERTED: "inserted" + EVENT_KEY,
2960    CLICK: "click" + EVENT_KEY,
2961    FOCUSIN: "focusin" + EVENT_KEY,
2962    FOCUSOUT: "focusout" + EVENT_KEY,
2963    MOUSEENTER: "mouseenter" + EVENT_KEY,
2964    MOUSELEAVE: "mouseleave" + EVENT_KEY
2965  };
2966  var ClassName = {
2967    FADE: 'fade',
2968    SHOW: 'show'
2969  };
2970  var Selector = {
2971    TOOLTIP: '.tooltip',
2972    TOOLTIP_INNER: '.tooltip-inner',
2973    ARROW: '.arrow'
2974  };
2975  var Trigger = {
2976    HOVER: 'hover',
2977    FOCUS: 'focus',
2978    CLICK: 'click',
2979    MANUAL: 'manual'
2980    /**
2981     * ------------------------------------------------------------------------
2982     * Class Definition
2983     * ------------------------------------------------------------------------
2984     */
2985
2986  };
2987
2988  var Tooltip =
2989  /*#__PURE__*/
2990  function () {
2991    function Tooltip(element, config) {
2992      /**
2993       * Check for Popper dependency
2994       * Popper - https://popper.js.org
2995       */
2996      if (typeof Popper === 'undefined') {
2997        throw new TypeError('Bootstrap tooltips require Popper.js (https://popper.js.org)');
2998      } // private
2999
3000
3001      this._isEnabled = true;
3002      this._timeout = 0;
3003      this._hoverState = '';
3004      this._activeTrigger = {};
3005      this._popper = null; // Protected
3006
3007      this.element = element;
3008      this.config = this._getConfig(config);
3009      this.tip = null;
3010
3011      this._setListeners();
3012    } // Getters
3013
3014
3015    var _proto = Tooltip.prototype;
3016
3017    // Public
3018    _proto.enable = function enable() {
3019      this._isEnabled = true;
3020    };
3021
3022    _proto.disable = function disable() {
3023      this._isEnabled = false;
3024    };
3025
3026    _proto.toggleEnabled = function toggleEnabled() {
3027      this._isEnabled = !this._isEnabled;
3028    };
3029
3030    _proto.toggle = function toggle(event) {
3031      if (!this._isEnabled) {
3032        return;
3033      }
3034
3035      if (event) {
3036        var dataKey = this.constructor.DATA_KEY;
3037        var context = $$$1(event.currentTarget).data(dataKey);
3038
3039        if (!context) {
3040          context = new this.constructor(event.currentTarget, this._getDelegateConfig());
3041          $$$1(event.currentTarget).data(dataKey, context);
3042        }
3043
3044        context._activeTrigger.click = !context._activeTrigger.click;
3045
3046        if (context._isWithActiveTrigger()) {
3047          context._enter(null, context);
3048        } else {
3049          context._leave(null, context);
3050        }
3051      } else {
3052        if ($$$1(this.getTipElement()).hasClass(ClassName.SHOW)) {
3053          this._leave(null, this);
3054
3055          return;
3056        }
3057
3058        this._enter(null, this);
3059      }
3060    };
3061
3062    _proto.dispose = function dispose() {
3063      clearTimeout(this._timeout);
3064      $$$1.removeData(this.element, this.constructor.DATA_KEY);
3065      $$$1(this.element).off(this.constructor.EVENT_KEY);
3066      $$$1(this.element).closest('.modal').off('hide.bs.modal');
3067
3068      if (this.tip) {
3069        $$$1(this.tip).remove();
3070      }
3071
3072      this._isEnabled = null;
3073      this._timeout = null;
3074      this._hoverState = null;
3075      this._activeTrigger = null;
3076
3077      if (this._popper !== null) {
3078        this._popper.destroy();
3079      }
3080
3081      this._popper = null;
3082      this.element = null;
3083      this.config = null;
3084      this.tip = null;
3085    };
3086
3087    _proto.show = function show() {
3088      var _this = this;
3089
3090      if ($$$1(this.element).css('display') === 'none') {
3091        throw new Error('Please use show on visible elements');
3092      }
3093
3094      var showEvent = $$$1.Event(this.constructor.Event.SHOW);
3095
3096      if (this.isWithContent() && this._isEnabled) {
3097        $$$1(this.element).trigger(showEvent);
3098        var isInTheDom = $$$1.contains(this.element.ownerDocument.documentElement, this.element);
3099
3100        if (showEvent.isDefaultPrevented() || !isInTheDom) {
3101          return;
3102        }
3103
3104        var tip = this.getTipElement();
3105        var tipId = Util.getUID(this.constructor.NAME);
3106        tip.setAttribute('id', tipId);
3107        this.element.setAttribute('aria-describedby', tipId);
3108        this.setContent();
3109
3110        if (this.config.animation) {
3111          $$$1(tip).addClass(ClassName.FADE);
3112        }
3113
3114        var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;
3115
3116        var attachment = this._getAttachment(placement);
3117
3118        this.addAttachmentClass(attachment);
3119        var container = this.config.container === false ? document.body : $$$1(this.config.container);
3120        $$$1(tip).data(this.constructor.DATA_KEY, this);
3121
3122        if (!$$$1.contains(this.element.ownerDocument.documentElement, this.tip)) {
3123          $$$1(tip).appendTo(container);
3124        }
3125
3126        $$$1(this.element).trigger(this.constructor.Event.INSERTED);
3127        this._popper = new Popper(this.element, tip, {
3128          placement: attachment,
3129          modifiers: {
3130            offset: {
3131              offset: this.config.offset
3132            },
3133            flip: {
3134              behavior: this.config.fallbackPlacement
3135            },
3136            arrow: {
3137              element: Selector.ARROW
3138            },
3139            preventOverflow: {
3140              boundariesElement: this.config.boundary
3141            }
3142          },
3143          onCreate: function onCreate(data) {
3144            if (data.originalPlacement !== data.placement) {
3145              _this._handlePopperPlacementChange(data);
3146            }
3147          },
3148          onUpdate: function onUpdate(data) {
3149            _this._handlePopperPlacementChange(data);
3150          }
3151        });
3152        $$$1(tip).addClass(ClassName.SHOW); // If this is a touch-enabled device we add extra
3153        // empty mouseover listeners to the body's immediate children;
3154        // only needed because of broken event delegation on iOS
3155        // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
3156
3157        if ('ontouchstart' in document.documentElement) {
3158          $$$1('body').children().on('mouseover', null, $$$1.noop);
3159        }
3160
3161        var complete = function complete() {
3162          if (_this.config.animation) {
3163            _this._fixTransition();
3164          }
3165
3166          var prevHoverState = _this._hoverState;
3167          _this._hoverState = null;
3168          $$$1(_this.element).trigger(_this.constructor.Event.SHOWN);
3169
3170          if (prevHoverState === HoverState.OUT) {
3171            _this._leave(null, _this);
3172          }
3173        };
3174
3175        if (Util.supportsTransitionEnd() && $$$1(this.tip).hasClass(ClassName.FADE)) {
3176          $$$1(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(Tooltip._TRANSITION_DURATION);
3177        } else {
3178          complete();
3179        }
3180      }
3181    };
3182
3183    _proto.hide = function hide(callback) {
3184      var _this2 = this;
3185
3186      var tip = this.getTipElement();
3187      var hideEvent = $$$1.Event(this.constructor.Event.HIDE);
3188
3189      var complete = function complete() {
3190        if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) {
3191          tip.parentNode.removeChild(tip);
3192        }
3193
3194        _this2._cleanTipClass();
3195
3196        _this2.element.removeAttribute('aria-describedby');
3197
3198        $$$1(_this2.element).trigger(_this2.constructor.Event.HIDDEN);
3199
3200        if (_this2._popper !== null) {
3201          _this2._popper.destroy();
3202        }
3203
3204        if (callback) {
3205          callback();
3206        }
3207      };
3208
3209      $$$1(this.element).trigger(hideEvent);
3210
3211      if (hideEvent.isDefaultPrevented()) {
3212        return;
3213      }
3214
3215      $$$1(tip).removeClass(ClassName.SHOW); // If this is a touch-enabled device we remove the extra
3216      // empty mouseover listeners we added for iOS support
3217
3218      if ('ontouchstart' in document.documentElement) {
3219        $$$1('body').children().off('mouseover', null, $$$1.noop);
3220      }
3221
3222      this._activeTrigger[Trigger.CLICK] = false;
3223      this._activeTrigger[Trigger.FOCUS] = false;
3224      this._activeTrigger[Trigger.HOVER] = false;
3225
3226      if (Util.supportsTransitionEnd() && $$$1(this.tip).hasClass(ClassName.FADE)) {
3227        $$$1(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
3228      } else {
3229        complete();
3230      }
3231
3232      this._hoverState = '';
3233    };
3234
3235    _proto.update = function update() {
3236      if (this._popper !== null) {
3237        this._popper.scheduleUpdate();
3238      }
3239    }; // Protected
3240
3241
3242    _proto.isWithContent = function isWithContent() {
3243      return Boolean(this.getTitle());
3244    };
3245
3246    _proto.addAttachmentClass = function addAttachmentClass(attachment) {
3247      $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
3248    };
3249
3250    _proto.getTipElement = function getTipElement() {
3251      this.tip = this.tip || $$$1(this.config.template)[0];
3252      return this.tip;
3253    };
3254
3255    _proto.setContent = function setContent() {
3256      var $tip = $$$1(this.getTipElement());
3257      this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle());
3258      $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW);
3259    };
3260
3261    _proto.setElementContent = function setElementContent($element, content) {
3262      var html = this.config.html;
3263
3264      if (typeof content === 'object' && (content.nodeType || content.jquery)) {
3265        // Content is a DOM node or a jQuery
3266        if (html) {
3267          if (!$$$1(content).parent().is($element)) {
3268            $element.empty().append(content);
3269          }
3270        } else {
3271          $element.text($$$1(content).text());
3272        }
3273      } else {
3274        $element[html ? 'html' : 'text'](content);
3275      }
3276    };
3277
3278    _proto.getTitle = function getTitle() {
3279      var title = this.element.getAttribute('data-original-title');
3280
3281      if (!title) {
3282        title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;
3283      }
3284
3285      return title;
3286    }; // Private
3287
3288
3289    _proto._getAttachment = function _getAttachment(placement) {
3290      return AttachmentMap[placement.toUpperCase()];
3291    };
3292
3293    _proto._setListeners = function _setListeners() {
3294      var _this3 = this;
3295
3296      var triggers = this.config.trigger.split(' ');
3297      triggers.forEach(function (trigger) {
3298        if (trigger === 'click') {
3299          $$$1(_this3.element).on(_this3.constructor.Event.CLICK, _this3.config.selector, function (event) {
3300            return _this3.toggle(event);
3301          });
3302        } else if (trigger !== Trigger.MANUAL) {
3303          var eventIn = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSEENTER : _this3.constructor.Event.FOCUSIN;
3304          var eventOut = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSELEAVE : _this3.constructor.Event.FOCUSOUT;
3305          $$$1(_this3.element).on(eventIn, _this3.config.selector, function (event) {
3306            return _this3._enter(event);
3307          }).on(eventOut, _this3.config.selector, function (event) {
3308            return _this3._leave(event);
3309          });
3310        }
3311
3312        $$$1(_this3.element).closest('.modal').on('hide.bs.modal', function () {
3313          return _this3.hide();
3314        });
3315      });
3316
3317      if (this.config.selector) {
3318        this.config = _extends({}, this.config, {
3319          trigger: 'manual',
3320          selector: ''
3321        });
3322      } else {
3323        this._fixTitle();
3324      }
3325    };
3326
3327    _proto._fixTitle = function _fixTitle() {
3328      var titleType = typeof this.element.getAttribute('data-original-title');
3329
3330      if (this.element.getAttribute('title') || titleType !== 'string') {
3331        this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');
3332        this.element.setAttribute('title', '');
3333      }
3334    };
3335
3336    _proto._enter = function _enter(event, context) {
3337      var dataKey = this.constructor.DATA_KEY;
3338      context = context || $$$1(event.currentTarget).data(dataKey);
3339
3340      if (!context) {
3341        context = new this.constructor(event.currentTarget, this._getDelegateConfig());
3342        $$$1(event.currentTarget).data(dataKey, context);
3343      }
3344
3345      if (event) {
3346        context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;
3347      }
3348
3349      if ($$$1(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) {
3350        context._hoverState = HoverState.SHOW;
3351        return;
3352      }
3353
3354      clearTimeout(context._timeout);
3355      context._hoverState = HoverState.SHOW;
3356
3357      if (!context.config.delay || !context.config.delay.show) {
3358        context.show();
3359        return;
3360      }
3361
3362      context._timeout = setTimeout(function () {
3363        if (context._hoverState === HoverState.SHOW) {
3364          context.show();
3365        }
3366      }, context.config.delay.show);
3367    };
3368
3369    _proto._leave = function _leave(event, context) {
3370      var dataKey = this.constructor.DATA_KEY;
3371      context = context || $$$1(event.currentTarget).data(dataKey);
3372
3373      if (!context) {
3374        context = new this.constructor(event.currentTarget, this._getDelegateConfig());
3375        $$$1(event.currentTarget).data(dataKey, context);
3376      }
3377
3378      if (event) {
3379        context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;
vendor: 4,942 bytes, lines 3380-3576
3380      }
3381
3382      if (context._isWithActiveTrigger()) {
3383        return;
3384      }
3385
3386      clearTimeout(context._timeout);
3387      context._hoverState = HoverState.OUT;
3388
3389      if (!context.config.delay || !context.config.delay.hide) {
3390        context.hide();
3391        return;
3392      }
3393
3394      context._timeout = setTimeout(function () {
3395        if (context._hoverState === HoverState.OUT) {
3396          context.hide();
3397        }
3398      }, context.config.delay.hide);
3399    };
3400
3401    _proto._isWithActiveTrigger = function _isWithActiveTrigger() {
3402      for (var trigger in this._activeTrigger) {
3403        if (this._activeTrigger[trigger]) {
3404          return true;
3405        }
3406      }
3407
3408      return false;
3409    };
3410
3411    _proto._getConfig = function _getConfig(config) {
3412      config = _extends({}, this.constructor.Default, $$$1(this.element).data(), config);
3413
3414      if (typeof config.delay === 'number') {
3415        config.delay = {
3416          show: config.delay,
3417          hide: config.delay
3418        };
3419      }
3420
3421      if (typeof config.title === 'number') {
3422        config.title = config.title.toString();
3423      }
3424
3425      if (typeof config.content === 'number') {
3426        config.content = config.content.toString();
3427      }
3428
3429      Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
3430      return config;
3431    };
3432
3433    _proto._getDelegateConfig = function _getDelegateConfig() {
3434      var config = {};
3435
3436      if (this.config) {
3437        for (var key in this.config) {
3438          if (this.constructor.Default[key] !== this.config[key]) {
3439            config[key] = this.config[key];
3440          }
3441        }
3442      }
3443
3444      return config;
3445    };
3446
3447    _proto._cleanTipClass = function _cleanTipClass() {
3448      var $tip = $$$1(this.getTipElement());
3449      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
3450
3451      if (tabClass !== null && tabClass.length > 0) {
3452        $tip.removeClass(tabClass.join(''));
3453      }
3454    };
3455
3456    _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(data) {
3457      this._cleanTipClass();
3458
3459      this.addAttachmentClass(this._getAttachment(data.placement));
3460    };
3461
3462    _proto._fixTransition = function _fixTransition() {
3463      var tip = this.getTipElement();
3464      var initConfigAnimation = this.config.animation;
3465
3466      if (tip.getAttribute('x-placement') !== null) {
3467        return;
3468      }
3469
3470      $$$1(tip).removeClass(ClassName.FADE);
3471      this.config.animation = false;
3472      this.hide();
3473      this.show();
3474      this.config.animation = initConfigAnimation;
3475    }; // Static
3476
3477
3478    Tooltip._jQueryInterface = function _jQueryInterface(config) {
3479      return this.each(function () {
3480        var data = $$$1(this).data(DATA_KEY);
3481
3482        var _config = typeof config === 'object' && config;
3483
3484        if (!data && /dispose|hide/.test(config)) {
3485          return;
3486        }
3487
3488        if (!data) {
3489          data = new Tooltip(this, _config);
3490          $$$1(this).data(DATA_KEY, data);
3491        }
3492
3493        if (typeof config === 'string') {
3494          if (typeof data[config] === 'undefined') {
3495            throw new TypeError("No method named \"" + config + "\"");
3496          }
3497
3498          data[config]();
3499        }
3500      });
3501    };
3502
3503    _createClass(Tooltip, null, [{
3504      key: "VERSION",
3505      get: function get() {
3506        return VERSION;
3507      }
3508    }, {
3509      key: "Default",
3510      get: function get() {
3511        return Default;
3512      }
3513    }, {
3514      key: "NAME",
3515      get: function get() {
3516        return NAME;
3517      }
3518    }, {
3519      key: "DATA_KEY",
3520      get: function get() {
3521        return DATA_KEY;
3522      }
3523    }, {
3524      key: "Event",
3525      get: function get() {
3526        return Event;
3527      }
3528    }, {
3529      key: "EVENT_KEY",
3530      get: function get() {
3531        return EVENT_KEY;
3532      }
3533    }, {
3534      key: "DefaultType",
3535      get: function get() {
3536        return DefaultType;
3537      }
3538    }]);
3539    return Tooltip;
3540  }();
3541  /**
3542   * ------------------------------------------------------------------------
3543   * jQuery
3544   * ------------------------------------------------------------------------
3545   */
3546
3547
3548  $$$1.fn[NAME] = Tooltip._jQueryInterface;
3549  $$$1.fn[NAME].Constructor = Tooltip;
3550
3551  $$$1.fn[NAME].noConflict = function () {
3552    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
3553    return Tooltip._jQueryInterface;
3554  };
3555
3556  return Tooltip;
3557}($, Popper);
3558
3559/**
3560 * --------------------------------------------------------------------------
3561 * Bootstrap (v4.0.0): popover.js
3562 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
3563 * --------------------------------------------------------------------------
3564 */
3565
3566var Popover = function ($$$1) {
3567  /**
3568   * ------------------------------------------------------------------------
3569   * Constants
3570   * ------------------------------------------------------------------------
3571   */
3572  var NAME = 'popover';
3573  var VERSION = '4.0.0';
3574  var DATA_KEY = 'bs.popover';
3575  var EVENT_KEY = "." + DATA_KEY;
3576  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
3577  var CLASS_PREFIX = 'bs-popover';
3578  var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
3579  var Default = _extends({}, Tooltip.Default, {
3580    placement: 'right',
3581    trigger: 'click',
3582    content: '',
3583    template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'
3584  });
3585  var DefaultType = _extends({}, Tooltip.DefaultType, {
3586    content: '(string|element|function)'
3587  });
3588  var ClassName = {
3589    FADE: 'fade',
3590    SHOW: 'show'
3591  };
3592  var Selector = {
3593    TITLE: '.popover-header',
3594    CONTENT: '.popover-body'
3595  };
3596  var Event = {
3597    HIDE: "hide" + EVENT_KEY,
3598    HIDDEN: "hidden" + EVENT_KEY,
3599    SHOW: "show" + EVENT_KEY,
3600    SHOWN: "shown" + EVENT_KEY,
3601    INSERTED: "inserted" + EVENT_KEY,
3602    CLICK: "click" + EVENT_KEY,
3603    FOCUSIN: "focusin" + EVENT_KEY,
3604    FOCUSOUT: "focusout" + EVENT_KEY,
3605    MOUSEENTER: "mouseenter" + EVENT_KEY,
3606    MOUSELEAVE: "mouseleave" + EVENT_KEY
3607    /**
3608     * ------------------------------------------------------------------------
3609     * Class Definition
3610     * ------------------------------------------------------------------------
3611     */
3612
3613  };
3614
3615  var Popover =
3616  /*#__PURE__*/
3617  function (_Tooltip) {
3618    _inheritsLoose(Popover, _Tooltip);
3619
3620    function Popover() {
3621      return _Tooltip.apply(this, arguments) || this;
3622    }
3623
3624    var _proto = Popover.prototype;
3625
3626    // Overrides
3627    _proto.isWithContent = function isWithContent() {
3628      return this.getTitle() || this._getContent();
3629    };
3630
3631    _proto.addAttachmentClass = function addAttachmentClass(attachment) {
3632      $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
3633    };
3634
3635    _proto.getTipElement = function getTipElement() {
3636      this.tip = this.tip || $$$1(this.config.template)[0];
3637      return this.tip;
3638    };
3639
3640    _proto.setContent = function setContent() {
3641      var $tip = $$$1(this.getTipElement()); // We use append for html objects to maintain js events
3642
3643      this.setElementContent($tip.find(Selector.TITLE), this.getTitle());
3644
3645      var content = this._getContent();
3646
3647      if (typeof content === 'function') {
3648        content = content.call(this.element);
3649      }
3650
3651      this.setElementContent($tip.find(Selector.CONTENT), content);
3652      $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW);
3653    }; // Private
3654
3655
3656    _proto._getContent = function _getContent() {
3657      return this.element.getAttribute('data-content') || this.config.content;
3658    };
3659
3660    _proto._cleanTipClass = function _cleanTipClass() {
3661      var $tip = $$$1(this.getTipElement());
3662      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
3663
3664      if (tabClass !== null && tabClass.length > 0) {
3665        $tip.removeClass(tabClass.join(''));
3666      }
3667    }; // Static
3668
3669
3670    Popover._jQueryInterface = function _jQueryInterface(config) {
3671      return this.each(function () {
3672        var data = $$$1(this).data(DATA_KEY);
3673
3674        var _config = typeof config === 'object' ? config : null;
3675
3676        if (!data && /destroy|hide/.test(config)) {
3677          return;
3678        }
3679
3680        if (!data) {
3681          data = new Popover(this, _config);
3682          $$$1(this).data(DATA_KEY, data);
3683        }
3684
3685        if (typeof config === 'string') {
3686          if (typeof data[config] === 'undefined') {
3687            throw new TypeError("No method named \"" + config + "\"");
3688          }
3689
3690          data[config]();
3691        }
3692      });
3693    };
3694
3695    _createClass(Popover, null, [{
3696      key: "VERSION",
3697      // Getters
3698      get: function get() {
3699        return VERSION;
3700      }
3701    }, {
3702      key: "Default",
3703      get: function get() {
3704        return Default;
3705      }
3706    }, {
3707      key: "NAME",
3708      get: function get() {
3709        return NAME;
3710      }
3711    }, {
3712      key: "DATA_KEY",
3713      get: function get() {
3714        return DATA_KEY;
3715      }
3716    }, {
3717      key: "Event",
3718      get: function get() {
3719        return Event;
3720      }
3721    }, {
3722      key: "EVENT_KEY",
3723      get: function get() {
3724        return EVENT_KEY;
3725      }
3726    }, {
3727      key: "DefaultType",
3728      get: function get() {
3729        return DefaultType;
3730      }
3731    }]);
3732    return Popover;
3733  }(Tooltip);
3734  /**
3735   * ------------------------------------------------------------------------
3736   * jQuery
3737   * ------------------------------------------------------------------------
3738   */
3739
3740
3741  $$$1.fn[NAME] = Popover._jQueryInterface;
3742  $$$1.fn[NAME].Constructor = Popover;
3743
3744  $$$1.fn[NAME].noConflict = function () {
3745    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
3746    return Popover._jQueryInterface;
3747  };
3748
3749  return Popover;
3750}($);
3751
3752/**
3753 * --------------------------------------------------------------------------
3754 * Bootstrap (v4.0.0): scrollspy.js
3755 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
3756 * --------------------------------------------------------------------------
3757 */
3758
3759var ScrollSpy = function ($$$1) {
3760  /**
3761   * ------------------------------------------------------------------------
3762   * Constants
3763   * ------------------------------------------------------------------------
3764   */
3765  var NAME = 'scrollspy';
3766  var VERSION = '4.0.0';
3767  var DATA_KEY = 'bs.scrollspy';
3768  var EVENT_KEY = "." + DATA_KEY;
3769  var DATA_API_KEY = '.data-api';
3770  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
3771  var Default = {
3772    offset: 10,
3773    method: 'auto',
3774    target: ''
3775  };
3776  var DefaultType = {
3777    offset: 'number',
3778    method: 'string',
3779    target: '(string|element)'
3780  };
3781  var Event = {
3782    ACTIVATE: "activate" + EVENT_KEY,
3783    SCROLL: "scroll" + EVENT_KEY,
3784    LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY
3785  };
3786  var ClassName = {
3787    DROPDOWN_ITEM: 'dropdown-item',
3788    DROPDOWN_MENU: 'dropdown-menu',
3789    ACTIVE: 'active'
3790  };
3791  var Selector = {
3792    DATA_SPY: '[data-spy="scroll"]',
3793    ACTIVE: '.active',
3794    NAV_LIST_GROUP: '.nav, .list-group',
3795    NAV_LINKS: '.nav-link',
3796    NAV_ITEMS: '.nav-item',
3797    LIST_ITEMS: '.list-group-item',
3798    DROPDOWN: '.dropdown',
3799    DROPDOWN_ITEMS: '.dropdown-item',
3800    DROPDOWN_TOGGLE: '.dropdown-toggle'
3801  };
3802  var OffsetMethod = {
3803    OFFSET: 'offset',
3804    POSITION: 'position'
3805    /**
3806     * ------------------------------------------------------------------------
3807     * Class Definition
3808     * ------------------------------------------------------------------------
3809     */
3810
3811  };
3812
3813  var ScrollSpy =
3814  /*#__PURE__*/
3815  function () {
3816    function ScrollSpy(element, config) {
3817      var _this = this;
3818
3819      this._element = element;
3820      this._scrollElement = element.tagName === 'BODY' ? window : element;
3821      this._config = this._getConfig(config);
3822      this._selector = this._config.target + " " + Selector.NAV_LINKS + "," + (this._config.target + " " + Selector.LIST_ITEMS + ",") + (this._config.target + " " + Selector.DROPDOWN_ITEMS);
3823      this._offsets = [];
3824      this._targets = [];
3825      this._activeTarget = null;
3826      this._scrollHeight = 0;
3827      $$$1(this._scrollElement).on(Event.SCROLL, function (event) {
3828        return _this._process(event);
3829      });
3830      this.refresh();
3831
3832      this._process();
3833    } // Getters
3834
3835
3836    var _proto = ScrollSpy.prototype;
3837
3838    // Public
3839    _proto.refresh = function refresh() {
3840      var _this2 = this;
3841
3842      var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION;
3843      var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
3844      var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;
3845      this._offsets = [];
3846      this._targets = [];
3847      this._scrollHeight = this._getScrollHeight();
3848      var targets = $$$1.makeArray($$$1(this._selector));
3849      targets.map(function (element) {
3850        var target;
3851        var targetSelector = Util.getSelectorFromElement(element);
3852
3853        if (targetSelector) {
3854          target = $$$1(targetSelector)[0];
3855        }
3856
3857        if (target) {
3858          var targetBCR = target.getBoundingClientRect();
3859
3860          if (targetBCR.width || targetBCR.height) {
3861            // TODO (fat): remove sketch reliance on jQuery position/offset
3862            return [$$$1(target)[offsetMethod]().top + offsetBase, targetSelector];
3863          }
3864        }
3865
3866        return null;
3867      }).filter(function (item) {
3868        return item;
3869      }).sort(function (a, b) {
3870        return a[0] - b[0];
3871      }
3871).forEach(function (item) {
3872        _this2._offsets.push(item[0]);
3873
3874        _this2._targets.push(item[1]);
3875      });
3876    };
3877
3878    _proto.dispose = function dispose() {
3879      $$$1.removeData(this._element, DATA_KEY);
3880      $$$1(this._scrollElement).off(EVENT_KEY);
3881      this._element = null;
3882      this._scrollElement = null;
3883      this._config = null;
3884      this._selector = null;
3885      this._offsets = null;
3886      this._targets = null;
3887      this._activeTarget = null;
3888      this._scrollHeight = null;
3889    }; // Private
3890
3891
3892    _proto._getConfig = function _getConfig(config) {
3893      config = _extends({}, Default, config);
3894
3895      if (typeof config.target !== 'string') {
3896        var id = $$$1(config.target).attr('id');
3897
3898        if (!id) {
3899          id = Util.getUID(NAME);
3900          $$$1(config.target).attr('id', id);
3901        }
3902
3903        config.target = "#" + id;
3904      }
3905
3906      Util.typeCheckConfig(NAME, config, DefaultType);
3907      return config;
3908    };
3909
3910    _proto._getScrollTop = function _getScrollTop() {
3911      return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
3912    };
3913
3914    _proto._getScrollHeight = function _getScrollHeight() {
3915      return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
3916    };
3917
3918    _proto._getOffsetHeight = function _getOffsetHeight() {
3919      return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
3920    };
3921
3922    _proto._process = function _process() {
3923      var scrollTop = this._getScrollTop() + this._config.offset;
3924
3925      var scrollHeight = this._getScrollHeight();
3926
3927      var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
3928
3929      if (this._scrollHeight !== scrollHeight) {
3930        this.refresh();
3931      }
3932
3933      if (scrollTop >= maxScroll) {
3934        var target = this._targets[this._targets.length - 1];
3935
3936        if (this._activeTarget !== target) {
3937          this._activate(target);
3938        }
3939
3940        return;
3941      }
3942
3943      if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
3944        this._activeTarget = null;
3945
3946        this._clear();
3947
3948        return;
3949      }
3950
3951      for (var i = this._offsets.length; i--;) {
3952        var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
3953
3954        if (isActiveTarget) {
3955          this._activate(this._targets[i]);
3956        }
3957      }
3958    };
3959
3960    _proto._activate = function _activate(target) {
3961      this._activeTarget = target;
3962
3963      this._clear();
3964
3965      var queries = this._selector.split(','); // eslint-disable-next-line arrow-body-style
3966
3967
3968      queries = queries.map(function (selector) {
3969        return selector + "[data-target=\"" + target + "\"]," + (selector + "[href=\"" + target + "\"]");
3970      });
3971      var $link = $$$1(queries.join(','));
3972
3973      if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {
3974        $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
3975        $link.addClass(ClassName.ACTIVE);
3976      } else {
3977        // Set triggered link as active
3978        $link.addClass(ClassName.ACTIVE); // Set triggered links parents as active
3979        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
3980
3981        $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_LINKS + ", " + Selector.LIST_ITEMS).addClass(ClassName.ACTIVE); // Handle special case when .nav-link is inside .nav-item
3982
3983        $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE);
3984      }
3985
3986      $$$1(this._scrollElement).trigger(Event.ACTIVATE, {
3987        relatedTarget: target
3988      });
3989    };
3990
3991    _proto._clear = function _clear() {
3992      $$$1(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
3993    }; // Static
3994
3995
3996    ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
3997      return this.each(function () {
3998        var data = $$$1(this).data(DATA_KEY);
3999
4000        var _config = typeof config === 'object' && config;
4001
4002        if (!data) {
4003          data = new ScrollSpy(this, _config);
4004          $$$1(this).data(DATA_KEY, data);
4005        }
4006
4007        if (typeof config === 'string') {
4008          if (typeof data[config] === 'undefined') {
4009            throw new TypeError("No method named \"" + config + "\"");
4010          }
4011
4012          data[config]();
4013        }
4014      });
4015    };
4016
4017    _createClass(ScrollSpy, null, [{
4018      key: "VERSION",
4019      get: function get() {
4020        return VERSION;
4021      }
4022    }, {
4023      key: "Default",
4024      get: function get() {
4025        return Default;
4026      }
4027    }]);
4028    return ScrollSpy;
4029  }();
4030  /**
4031   * ------------------------------------------------------------------------
4032   * Data Api implementation
4033   * ------------------------------------------------------------------------
4034   */
4035
4036
4037  $$$1(window).on(Event.LOAD_DATA_API, function () {
4038    var scrollSpys = $$$1.makeArray($$$1(Selector.DATA_SPY));
4039
4040    for (var i = scrollSpys.length; i--;) {
4041      var $spy = $$$1(scrollSpys[i]);
4042
4043      ScrollSpy._jQueryInterface.call($spy, $spy.data());
4044    }
4045  });
4046  /**
4047   * ------------------------------------------------------------------------
4048   * jQuery
4049   * ------------------------------------------------------------------------
4050   */
4051
4052  $$$1.fn[NAME] = ScrollSpy._jQueryInterface;
4053  $$$1.fn[NAME].Constructor = ScrollSpy;
4054
4055  $$$1.fn[NAME].noConflict = function () {
4056    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
4057    return ScrollSpy._jQueryInterface;
4058  };
4059
4060  return ScrollSpy;
4061}($);
4062
4063/**
4064 * --------------------------------------------------------------------------
4065 * Bootstrap (v4.0.0): tab.js
4066 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
4067 * --------------------------------------------------------------------------
4068 */
4069
4070var Tab = function ($$$1) {
4071  /**
4072   * ------------------------------------------------------------------------
4073   * Constants
4074   * ------------------------------------------------------------------------
4075   */
4076  var NAME = 'tab';
4077  var VERSION = '4.0.0';
4078  var DATA_KEY = 'bs.tab';
4079  var EVENT_KEY = "." + DATA_KEY;
4080  var DATA_API_KEY = '.data-api';
4081  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
4082  var TRANSITION_DURATION = 150;
4083  var Event = {
4084    HIDE: "hide" + EVENT_KEY,
4085    HIDDEN: "hidden" + EVENT_KEY,
4086    SHOW: "show" + EVENT_KEY,
4087    SHOWN: "shown" + EVENT_KEY,
4088    CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
4089  };
4090  var ClassName = {
4091    DROPDOWN_MENU: 'dropdown-menu',
4092    ACTIVE: 'active',
4093    DISABLED: 'disabled',
4094    FADE: 'fade',
4095    SHOW: 'show'
4096  };
4097  var Selector = {
4098    DROPDOWN: '.dropdown',
4099    NAV_LIST_GROUP: '.nav, .list-group',
4100    ACTIVE: '.active',
4101    ACTIVE_UL: '> li > .active',
4102    DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',
4103    DROPDOWN_TOGGLE: '.dropdown-toggle',
4104    DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
4105    /**
4106     * ------------------------------------------------------------------------
4107     * Class Definition
4108     * ------------------------------------------------------------------------
4109     */
4110
4111  };
4112
4113  var Tab =
4114  /*#__PURE__*/
4115  function () {
4116    function Tab(element) {
4117      this._element = element;
4118    } // Getters
4119
4120
4121    var _proto = Tab.prototype;
4122
4123    // Public
4124    _proto.show = function show() {
4125      var _this = this;
4126
4127      if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $$$1(this._element).hasClass(ClassName.ACTIVE) || $$$1(this._element).hasClass(ClassName.DISABLED)) {
4128        return;
4129      }
4130
4131      var target;
4132      var previous;
4133      var listElement = $$$1(this._element).closest(Selector.NAV_LIST_GROUP)[0];
4134      var selector = Util.getSelectorFromElement(this._element);
4135
4136      if (listElement) {
4137        var itemSelector = listElement.nodeName === 'UL' ? Selector.ACTIVE_UL : Selector.ACTIVE;
4138        previous = $$$1.makeArray($$$1(listElement).find(itemSelector));
4139        previous = previous[previous.length - 1];
4140      }
4141
4142      var hideEvent = $$$1.Event(Event.HIDE, {
4143        relatedTarget: this._element
4144      });
4145      var showEvent = $$$1.Event(Event.SHOW, {
4146        relatedTarget: previous
4147      });
4148
4149      if (previous) {
4150        $$$1(previous).trigger(hideEvent);
4151      }
4152
4153      $$$1(this._element).trigger(showEvent);
4154
4155      if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
4156        return;
4157      }
4158
4159      if (selector) {
4160        target = $$$1(selector)[0];
4161      }
4162
4163      this._activate(this._element, listElement);
4164
4165      var complete = function complete() {
4166        var hiddenEvent = $$$1.Event(Event.HIDDEN, {
4167          relatedTarget: _this._element
4168        });
4169        var shownEvent = $$$1.Event(Event.SHOWN, {
4170          relatedTarget: previous
4171        });
4172        $$$1(previous).trigger(hiddenEvent);
4173        $$$1(_this._element).trigger(shownEvent);
4174      };
4175
4176      if (target) {
4177        this._activate(target, target.parentNode, complete);
4178      } else {
4179        complete();
4180      }
4181    };
4182
4183    _proto.dispose = function dispose() {
4184      $$$1.removeData(this._element, DATA_KEY);
4185      this._element = null;
4186    }; // Private
4187
4188
4189    _proto._activate = function _activate(element, container, callback) {
4190      var _this2 = this;
4191
4192      var activeElements;
4193
4194      if (container && container.nodeName === 'UL') {
4195        activeElements = $$$1(container).find(Selector.ACTIVE_UL);
4196      } else {
4197        activeElements = $$$1(container).children(Selector.ACTIVE);
4198      }
4199
4200      var active = activeElements[0];
4201      var isTransitioning = callback && Util.supportsTransitionEnd() && active && $$$1(active).hasClass(ClassName.FADE);
4202
4203      var complete = function complete() {
4204        return _this2._transitionComplete(element, active, callback);
4205      };
4206
4207      if (active && isTransitioning) {
4208        $$$1(active).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
4209      } else {
4210        complete();
4211      }
4212    };
4213
4214    _proto._transitionComplete = function _transitionComplete(element, active, callback) {
4215      if (active) {
4216        $$$1(active).removeClass(ClassName.SHOW + " " + ClassName.ACTIVE);
4217        var dropdownChild = $$$1(active.parentNode).find(Selector.DROPDOWN_ACTIVE_CHILD)[0];
4218
4219        if (dropdownChild) {
4220          $$$1(dropdownChild).removeClass(ClassName.ACTIVE);
4221        }
4222
4223        if (active.getAttribute('role') === 'tab') {
4224          active.setAttribute('aria-selected', false);
4225        }
4226      }
4227
4228      $$$1(element).addClass(ClassName.ACTIVE);
4229
4230      if (element.getAttribute('role') === 'tab') {
4231        element.setAttribute('aria-selected', true);
4232      }
4233
4234      Util.reflow(element);
4235      $$$1(element).addClass(ClassName.SHOW);
4236
4237      if (element.parentNode && $$$1(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {
4238        var dropdownElement = $$$1(element).closest(Selector.DROPDOWN)[0];
4239
4240        if (dropdownElement) {
4241          $$$1(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
4242        }
4243
4244        element.setAttribute('aria-expanded', true);
4245      }
4246
4247      if (callback) {
4248        callback();
4249      }
4250    }; // Static
4251
4252
4253    Tab._jQueryInterface = function _jQueryInterface(config) {
4254      return this.each(function () {
4255        var $this = $$$1(this);
4256        var data = $this.data(DATA_KEY);
4257
4258        if (!data) {
4259          data = new Tab(this);
4260          $this.data(DATA_KEY, data);
4261        }
4262
4263        if (typeof config === 'string') {
4264          if (typeof data[config] === 'undefined') {
4265            throw new TypeError("No method named \"" + config + "\"");
4266          }
4267
4268          data[config]();
4269        }
4270      });
4271    };
4272
4273    _createClass(Tab, null, [{
4274      key: "VERSION",
4275      get: function get() {
4276        return VERSION;
4277      }
4278    }]);
4279    return Tab;
4280  }();
4281  /**
4282   * ------------------------------------------------------------------------
4283   * Data Api implementation
4284   * ------------------------------------------------------------------------
4285   */
4286
4287
4288  $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
4289    event.preventDefault();
4290
4291    Tab._jQueryInterface.call($$$1(this), 'show');
4292  });
4293  /**
4294   * ------------------------------------------------------------------------
4295   * jQuery
4296   * ------------------------------------------------------------------------
4297   */
4298
4299  $$$1.fn[NAME] = Tab._jQueryInterface;
4300  $$$1.fn[NAME].Constructor = Tab;
4301
4302  $$$1.fn[NAME].noConflict = function () {
4303    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
4304    return Tab._jQueryInterface;
4305  };
4306
4307  return Tab;
4308}($);
4309
4310/**
4311 * --------------------------------------------------------------------------
4312 * Bootstrap (v4.0.0-alpha.6): index.js
4313 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
4314 * --------------------------------------------------------------------------
4315 */
4316
4317(function ($$$1) {
4318  if (typeof $$$1 === 'undefined') {
4319    throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.');
4320  }
4321
4322  var version = $$$1.fn.jquery.split(' ')[0].split('.');
4323  var minMajor = 1;
4324  var ltMajor = 2;
4325  var minMinor = 9;
4326  var minPatch = 1;
4327  var maxMajor = 4;
4328
4329  if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {
4330    throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');
4331  }
4332})($);
4333
4334exports.Util = Util;
4335exports.Alert = Alert;
4336exports.Button = Button;
4337exports.Carousel = Carousel;
4338exports.Collapse = Collapse;
4339exports.Dropdown = Dropdown;
4340exports.Modal = Modal;
4341exports.Popover = Popover;
4342exports.Scrollspy = ScrollSpy;
4343exports.Tab = Tab;
4344exports.Tooltip = Tooltip;
4345
4346Object.defineProperty(exports, '__esModule', { value: true });
4347
4348})));
4349//# sourceMappingURL=bootstrap.js.map
4350/*! jQuery UI - v1.12.1 - 2019-07-03
4351* http://jqueryui.com
4352* Includes: keycode.js, widgets/datepicker.js
4353* Copyright jQuery Foundation and other contributors; Licensed MIT */
4354
4355(function( factory ) {
4356	if ( typeof define === "function" && define.amd ) {
4357
4358		// AMD. Register as an anonymous module.
4359		define([ "jquery" ], factory );
4360	} else {
4361
4362		// Browser globals
4363		factory( jQuery );
4364	}
4365}(function( $ ) {
4366
4367$.ui = $.ui || {};
4368
4369var version = $.ui.version = "1.12.1";
4370
4371
4372/*!
4373 * jQuery UI Keycode 1.12.1
4374 * http://jqueryui.com
4375 *
4376 * Copyright jQuery Foundation and other contributors
4377 * Released under the MIT license.
4378 * http://jquery.org/license
4379 */
4380
4381//>>label: Keycode
4382//>>group: Core
4383//>>description: Provide keycodes as keynames
4384//>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/
4385
4386
4387var keycode = $.ui.keyCode = {
4388	BACKSPACE: 8,
4389	COMMA: 188,
4390	DELETE: 46,
4391	DOWN: 40,
4392	END: 35,
4393	ENTER: 13,
4394	ESCAPE: 27,
4395	HOME: 36,
4396	LEFT: 37,
4397	PAGE_DOWN: 34,
4398	PAGE_UP: 33,
4399	PERIOD: 190,
4400	RIGHT: 39,
4401	SPACE: 32,
4402	TAB: 9,
4403	UP: 38
4404}
vendor: 80,540 bytes, lines 4404-6514
4404;
4405
4406
4407// jscs:disable maximumLineLength
4408/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
4409/*!
4410 * jQuery UI Datepicker 1.12.1
4411 * http://jqueryui.com
4412 *
4413 * Copyright jQuery Foundation and other contributors
4414 * Released under the MIT license.
4415 * http://jquery.org/license
4416 */
4417
4418//>>label: Datepicker
4419//>>group: Widgets
4420//>>description: Displays a calendar from an input or inline for selecting dates.
4421//>>docs: http://api.jqueryui.com/datepicker/
4422//>>demos: http://jqueryui.com/datepicker/
4423//>>css.structure: ../../themes/base/core.css
4424//>>css.structure: ../../themes/base/datepicker.css
4425//>>css.theme: ../../themes/base/theme.css
4426
4427
4428
4429$.extend( $.ui, { datepicker: { version: "1.12.1" } } );
4430
4431var datepicker_instActive;
4432
4433function datepicker_getZindex( elem ) {
4434	var position, value;
4435	while ( elem.length && elem[ 0 ] !== document ) {
4436
4437		// Ignore z-index if position is set to a value where z-index is ignored by the browser
4438		// This makes behavior of this function consistent across browsers
4439		// WebKit always returns auto if the element is positioned
4440		position = elem.css( "position" );
4441		if ( position === "absolute" || position === "relative" || position === "fixed" ) {
4442
4443			// IE returns 0 when zIndex is not specified
4444			// other browsers return a string
4445			// we ignore the case of nested elements with an explicit value of 0
4446			// <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
4447			value = parseInt( elem.css( "zIndex" ), 10 );
4448			if ( !isNaN( value ) && value !== 0 ) {
4449				return value;
4450			}
4451		}
4452		elem = elem.parent();
4453	}
4454
4455	return 0;
4456}
4457/* Date picker manager.
4458   Use the singleton instance of this class, $.datepicker, to interact with the date picker.
4459   Settings for (groups of) date pickers are maintained in an instance object,
4460   allowing multiple different settings on the same page. */
4461
4462function Datepicker() {
4463	this._curInst = null; // The current instance in use
4464	this._keyEvent = false; // If the last event was a key event
4465	this._disabledInputs = []; // List of date picker inputs that have been disabled
4466	this._datepickerShowing = false; // True if the popup picker is showing , false if not
4467	this._inDialog = false; // True if showing within a "dialog", false if not
4468	this._mainDivId = "ui-datepicker-div"; // The ID of the main datepicker division
4469	this._inlineClass = "ui-datepicker-inline"; // The name of the inline marker class
4470	this._appendClass = "ui-datepicker-append"; // The name of the append marker class
4471	this._triggerClass = "ui-datepicker-trigger"; // The name of the trigger marker class
4472	this._dialogClass = "ui-datepicker-dialog"; // The name of the dialog marker class
4473	this._disableClass = "ui-datepicker-disabled"; // The name of the disabled covering marker class
4474	this._unselectableClass = "ui-datepicker-unselectable"; // The name of the unselectable cell marker class
4475	this._currentClass = "ui-datepicker-current-day"; // The name of the current day marker class
4476	this._dayOverClass = "ui-datepicker-days-cell-over"; // The name of the day hover marker class
4477	this.regional = []; // Available regional settings, indexed by language code
4478	this.regional[ "" ] = { // Default regional settings
4479		closeText: "Done", // Display text for close link
4480		prevText: "Prev", // Display text for previous month link
4481		nextText: "Next", // Display text for next month link
4482		currentText: "Today", // Display text for current month link
4483		monthNames: [ "January","February","March","April","May","June",
4484			"July","August","September","October","November","December" ], // Names of months for drop-down and formatting
4485		monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ], // For formatting
4486		dayNames: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], // For formatting
4487		dayNamesShort: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], // For formatting
4488		dayNamesMin: [ "Su","Mo","Tu","We","Th","Fr","Sa" ], // Column headings for days starting at Sunday
4489		weekHeader: "Wk", // Column header for week of the year
4490		dateFormat: "mm/dd/yy", // See format options on parseDate
4491		firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...
4492		isRTL: false, // True if right-to-left language, false if left-to-right
4493		showMonthAfterYear: false, // True if the year select precedes month, false for month then year
4494		yearSuffix: "" // Additional text to append to the year in the month headers
4495	};
4496	this._defaults = { // Global defaults for all the date picker instances
4497		showOn: "focus", // "focus" for popup on focus,
4498			// "button" for trigger button, or "both" for either
4499		showAnim: "fadeIn", // Name of jQuery animation for popup
4500		showOptions: {}, // Options for enhanced animations
4501		defaultDate: null, // Used when field is blank: actual date,
4502			// +/-number for offset from today, null for today
4503		appendText: "", // Display text following the input box, e.g. showing the format
4504		buttonText: "...", // Text for trigger button
4505		buttonImage: "", // URL for trigger button image
4506		buttonImageOnly: false, // True if the image appears alone, false if it appears on a button
4507		hideIfNoPrevNext: false, // True to hide next/previous month links
4508			// if not applicable, false to just disable them
4509		navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links
4510		gotoCurrent: false, // True if today link goes back to current selection instead
4511		changeMonth: false, // True if month can be selected directly, false if only prev/next
4512		changeYear: false, // True if year can be selected directly, false if only prev/next
4513		yearRange: "c-10:c+10", // Range of years to display in drop-down,
4514			// either relative to today's year (-nn:+nn), relative to currently displayed year
4515			// (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)
4516		showOtherMonths: false, // True to show dates in other months, false to leave blank
4517		selectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable
4518		showWeek: false, // True to show week of the year, false to not show it
4519		calculateWeek: this.iso8601Week, // How to calculate the week of the year,
4520			// takes a Date and returns the number of the week for it
4521		shortYearCutoff: "+10", // Short year values < this are in the current century,
4522			// > this are in the previous century,
4523			// string value starting with "+" for current year + value
4524		minDate: null, // The earliest selectable date, or null for no limit
4525		maxDate: null, // The latest selectable date, or null for no limit
4526		duration: "fast", // Duration of display/closure
4527		beforeShowDay: null, // Function that takes a date and returns an array with
4528			// [0] = true if selectable, false if not, [1] = custom CSS class name(s) or "",
4529			// [2] = cell title (optional), e.g. $.datepicker.noWeekends
4530		beforeShow: null, // Function that takes an input field and
4531			// returns a set of custom settings for the date picker
4532		onSelect: null, // Define a callback function when a date is selected
4533		onChangeMonthYear: null, // Define a callback function when the month or year is changed
4534		onClose: null, // Define a callback function when the datepicker is closed
4535		numberOfMonths: 1, // Number of months to show at a time
4536		showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)
4537		stepMonths: 1, // Number of months to step back/forward
4538		stepBigMonths: 12, // Number of months to step back/forward for the big links
4539		altField: "", // Selector for an alternate field to store selected dates into
4540		altFormat: "", // The date format to use for the alternate field
4541		constrainInput: true, // The input is constrained by the current date format
4542		showButtonPanel: false, // True to show button panel, false to not show it
4543		autoSize: false, // True to size the input for the date format, false to leave as is
4544		disabled: false // The initial disabled state
4545	};
4546	$.extend( this._defaults, this.regional[ "" ] );
4547	this.regional.en = $.extend( true, {}, this.regional[ "" ] );
4548	this.regional[ "en-US" ] = $.extend( true, {}, this.regional.en );
4549	this.dpDiv = datepicker_bindHover( $( "<div id='" + this._mainDivId + "' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>" ) );
4550}
4551
4552$.extend( Datepicker.prototype, {
4553	/* Class name added to elements to indicate already configured with a date picker. */
4554	markerClassName: "hasDatepicker",
4555
4556	//Keep track of the maximum number of rows displayed (see #7043)
4557	maxRows: 4,
4558
4559	// TODO rename to "widget" when switching to widget factory
4560	_widgetDatepicker: function() {
4561		return this.dpDiv;
4562	},
4563
4564	/* Override the default settings for all instances of the date picker.
4565	 * @param  settings  object - the new settings to use as defaults (anonymous object)
4566	 * @return the manager object
4567	 */
4568	setDefaults: function( settings ) {
4569		datepicker_extendRemove( this._defaults, settings || {} );
4570		return this;
4571	},
4572
4573	/* Attach the date picker to a jQuery selection.
4574	 * @param  target	element - the target input field or division or span
4575	 * @param  settings  object - the new settings to use for this date picker instance (anonymous)
4576	 */
4577	_attachDatepicker: function( target, settings ) {
4578		var nodeName, inline, inst;
4579		nodeName = target.nodeName.toLowerCase();
4580		inline = ( nodeName === "div" || nodeName === "span" );
4581		if ( !target.id ) {
4582			this.uuid += 1;
4583			target.id = "dp" + this.uuid;
4584		}
4585		inst = this._newInst( $( target ), inline );
4586		inst.settings = $.extend( {}, settings || {} );
4587		if ( nodeName === "input" ) {
4588			this._connectDatepicker( target, inst );
4589		} else if ( inline ) {
4590			this._inlineDatepicker( target, inst );
4591		}
4592	},
4593
4594	/* Create a new instance object. */
4595	_newInst: function( target, inline ) {
4596		var id = target[ 0 ].id.replace( /([^A-Za-z0-9_\-])/g, "\\\\$1" ); // escape jQuery meta chars
4597		return { id: id, input: target, // associated target
4598			selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection
4599			drawMonth: 0, drawYear: 0, // month being drawn
4600			inline: inline, // is datepicker inline or not
4601			dpDiv: ( !inline ? this.dpDiv : // presentation div
4602			datepicker_bindHover( $( "<div class='" + this._inlineClass + " ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>" ) ) ) };
4603	},
4604
4605	/* Attach the date picker to an input field. */
4606	_connectDatepicker: function( target, inst ) {
4607		var input = $( target );
4608		inst.append = $( [] );
4609		inst.trigger = $( [] );
4610		if ( input.hasClass( this.markerClassName ) ) {
4611			return;
4612		}
4613		this._attachments( input, inst );
4614		input.addClass( this.markerClassName ).on( "keydown", this._doKeyDown ).
4615			on( "keypress", this._doKeyPress ).on( "keyup", this._doKeyUp );
4616		this._autoSize( inst );
4617		$.data( target, "datepicker", inst );
4618
4619		//If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)
4620		if ( inst.settings.disabled ) {
4621			this._disableDatepicker( target );
4622		}
4623	},
4624
4625	/* Make attachments based on settings. */
4626	_attachments: function( input, inst ) {
4627		var showOn, buttonText, buttonImage,
4628			appendText = this._get( inst, "appendText" ),
4629			isRTL = this._get( inst, "isRTL" );
4630
4631		if ( inst.append ) {
4632			inst.append.remove();
4633		}
4634		if ( appendText ) {
4635			inst.append = $( "<span class='" + this._appendClass + "'>" + appendText + "</span>" );
4636			input[ isRTL ? "before" : "after" ]( inst.append );
4637		}
4638
4639		input.off( "focus", this._showDatepicker );
4640
4641		if ( inst.trigger ) {
4642			inst.trigger.remove();
4643		}
4644
4645		showOn = this._get( inst, "showOn" );
4646		if ( showOn === "focus" || showOn === "both" ) { // pop-up date picker when in the marked field
4647			input.on( "focus", this._showDatepicker );
4648		}
4649		if ( showOn === "button" || showOn === "both" ) { // pop-up date picker when button clicked
4650			buttonText = this._get( inst, "buttonText" );
4651			buttonImage = this._get( inst, "buttonImage" );
4652			inst.trigger = $( this._get( inst, "buttonImageOnly" ) ?
4653				$( "<img/>" ).addClass( this._triggerClass ).
4654					attr( { src: buttonImage, alt: buttonText, title: buttonText } ) :
4655				$( "<button type='button'></button>" ).addClass( this._triggerClass ).
4656					html( !buttonImage ? buttonText : $( "<img/>" ).attr(
4657					{ src:buttonImage, alt:buttonText, title:buttonText } ) ) );
4658			input[ isRTL ? "before" : "after" ]( inst.trigger );
4659			inst.trigger.on( "click", function() {
4660				if ( $.datepicker._datepickerShowing && $.datepicker._lastInput === input[ 0 ] ) {
4661					$.datepicker._hideDatepicker();
4662				} else if ( $.datepicker._datepickerShowing && $.datepicker._lastInput !== input[ 0 ] ) {
4663					$.datepicker._hideDatepicker();
4664					$.datepicker._showDatepicker( input[ 0 ] );
4665				} else {
4666					$.datepicker._showDatepicker( input[ 0 ] );
4667				}
4668				return false;
4669			} );
4670		}
4671	},
4672
4673	/* Apply the maximum length for the date format. */
4674	_autoSize: function( inst ) {
4675		if ( this._get( inst, "autoSize" ) && !inst.inline ) {
4676			var findMax, max, maxI, i,
4677				date = new Date( 2009, 12 - 1, 20 ), // Ensure double digits
4678				dateFormat = this._get( inst, "dateFormat" );
4679
4680			if ( dateFormat.match( /[DM]/ ) ) {
4681				findMax = function( names ) {
4682					max = 0;
4683					maxI = 0;
4684					for ( i = 0; i < names.length; i++ ) {
4685						if ( names[ i ].length > max ) {
4686							max = names[ i ].length;
4687							maxI = i;
4688						}
4689					}
4690					return maxI;
4691				};
4692				date.setMonth( findMax( this._get( inst, ( dateFormat.match( /MM/ ) ?
4693					"monthNames" : "monthNamesShort" ) ) ) );
4694				date.setDate( findMax( this._get( inst, ( dateFormat.match( /DD/ ) ?
4695					"dayNames" : "dayNamesShort" ) ) ) + 20 - date.getDay() );
4696			}
4697			inst.input.attr( "size", this._formatDate( inst, date ).length );
4698		}
4699	},
4700
4701	/* Attach an inline date picker to a div. */
4702	_inlineDatepicker: function( target, inst ) {
4703		var divSpan = $( target );
4704		if ( divSpan.hasClass( this.markerClassName ) ) {
4705			return;
4706		}
4707		divSpan.addClass( this.markerClassName ).append( inst.dpDiv );
4708		$.data( target, "datepicker", inst );
4709		this._setDate( inst, this._getDefaultDate( inst ), true );
4710		this._updateDatepicker( inst );
4711		this._updateAlternate( inst );
4712
4713		//If disabled option is true, disable the datepicker before showing it (see ticket #5665)
4714		if ( inst.settings.disabled ) {
4715			this._disableDatepicker( target );
4716		}
4717
4718		// Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements
4719		// http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height
4720		inst.dpDiv.css( "display", "block" );
4721	},
4722
4723	/* Pop-up the date picker in a "dialog" box.
4724	 * @param  input element - ignored
4725	 * @param  date	string or Date - the initial date to display
4726	 * @param  onSelect  function - the function to call when a date is selected
4727	 * @param  settings  object - update the dialog date picker instance's settings (anonymous object)
4728	 * @param  pos int[2] - coordinates for the dialog's position within the screen or
4729	 *					event - with x/y coordinates or
4730	 *					leave empty for default (screen centre)
4731	 * @return the manager object
4732	 */
4733	_dialogDatepicker: function( input, date, onSelect, settings, pos ) {
4734		var id, browserWidth, browserHeight, scrollX, scrollY,
4735			inst = this._dialogInst; // internal instance
4736
4737		if ( !inst ) {
4738			this.uuid += 1;
4739			id = "dp" + this.uuid;
4740			this._dialogInput = $( "<input type='text' id='" + id +
4741				"' style='position: absolute; top: -100px; width: 0px;'/>" );
4742			this._dialogInput.on( "keydown", this._doKeyDown );
4743			$( "body" ).append( this._dialogInput );
4744			inst = this._dialogInst = this._newInst( this._dialogInput, false );
4745			inst.settings = {};
4746			$.data( this._dialogInput[ 0 ], "datepicker", inst );
4747		}
4748		datepicker_extendRemove( inst.settings, settings || {} );
4749		date = ( date && date.constructor === Date ? this._formatDate( inst, date ) : date );
4750		this._dialogInput.val( date );
4751
4752		this._pos = ( pos ? ( pos.length ? pos : [ pos.pageX, pos.pageY ] ) : null );
4753		if ( !this._pos ) {
4754			browserWidth = document.documentElement.clientWidth;
4755			browserHeight = document.documentElement.clientHeight;
4756			scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
4757			scrollY = document.documentElement.scrollTop || document.body.scrollTop;
4758			this._pos = // should use actual width/height below
4759				[ ( browserWidth / 2 ) - 100 + scrollX, ( browserHeight / 2 ) - 150 + scrollY ];
4760		}
4761
4762		// Move input on screen for focus, but hidden behind dialog
4763		this._dialogInput.css( "left", ( this._pos[ 0 ] + 20 ) + "px" ).css( "top", this._pos[ 1 ] + "px" );
4764		inst.settings.onSelect = onSelect;
4765		this._inDialog = true;
4766		this.dpDiv.addClass( this._dialogClass );
4767		this._showDatepicker( this._dialogInput[ 0 ] );
4768		if ( $.blockUI ) {
4769			$.blockUI( this.dpDiv );
4770		}
4771		$.data( this._dialogInput[ 0 ], "datepicker", inst );
4772		return this;
4773	},
4774
4775	/* Detach a datepicker from its control.
4776	 * @param  target	element - the target input field or division or span
4777	 */
4778	_destroyDatepicker: function( target ) {
4779		var nodeName,
4780			$target = $( target ),
4781			inst = $.data( target, "datepicker" );
4782
4783		if ( !$target.hasClass( this.markerClassName ) ) {
4784			return;
4785		}
4786
4787		nodeName = target.nodeName.toLowerCase();
4788		$.removeData( target, "datepicker" );
4789		if ( nodeName === "input" ) {
4790			inst.append.remove();
4791			inst.trigger.remove();
4792			$target.removeClass( this.markerClassName ).
4793				off( "focus", this._showDatepicker ).
4794				off( "keydown", this._doKeyDown ).
4795				off( "keypress", this._doKeyPress ).
4796				off( "keyup", this._doKeyUp );
4797		} else if ( nodeName === "div" || nodeName === "span" ) {
4798			$target.removeClass( this.markerClassName ).empty();
4799		}
4800
4801		if ( datepicker_instActive === inst ) {
4802			datepicker_instActive = null;
4803		}
4804	},
4805
4806	/* Enable the date picker to a jQuery selection.
4807	 * @param  target	element - the target input field or division or span
4808	 */
4809	_enableDatepicker: function( target ) {
4810		var nodeName, inline,
4811			$target = $( target ),
4812			inst = $.data( target, "datepicker" );
4813
4814		if ( !$target.hasClass( this.markerClassName ) ) {
4815			return;
4816		}
4817
4818		nodeName = target.nodeName.toLowerCase();
4819		if ( nodeName === "input" ) {
4820			target.disabled = false;
4821			inst.trigger.filter( "button" ).
4822				each( function() { this.disabled = false; } ).end().
4823				filter( "img" ).css( { opacity: "1.0", cursor: "" } );
4824		} else if ( nodeName === "div" || nodeName === "span" ) {
4825			inline = $target.children( "." + this._inlineClass );
4826			inline.children().removeClass( "ui-state-disabled" );
4827			inline.find( "select.ui-datepicker-month, select.ui-datepicker-year" ).
4828				prop( "disabled", false );
4829		}
4830		this._disabledInputs = $.map( this._disabledInputs,
4831			function( value ) { return ( value === target ? null : value ); } ); // delete entry
4832	},
4833
4834	/* Disable the date picker to a jQuery selection.
4835	 * @param  target	element - the target input field or division or span
4836	 */
4837	_disableDatepicker: function( target ) {
4838		var nodeName, inline,
4839			$target = $( target ),
4840			inst = $.data( target, "datepicker" );
4841
4842		if ( !$target.hasClass( this.markerClassName ) ) {
4843			return;
4844		}
4845
4846		nodeName = target.nodeName.toLowerCase();
4847		if ( nodeName === "input" ) {
4848			target.disabled = true;
4849			inst.trigger.filter( "button" ).
4850				each( function() { this.disabled = true; } ).end().
4851				filter( "img" ).css( { opacity: "0.5", cursor: "default" } );
4852		} else if ( nodeName === "div" || nodeName === "span" ) {
4853			inline = $target.children( "." + this._inlineClass );
4854			inline.children().addClass( "ui-state-disabled" );
4855			inline.find( "select.ui-datepicker-month, select.ui-datepicker-year" ).
4856				prop( "disabled", true );
4857		}
4858		this._disabledInputs = $.map( this._disabledInputs,
4859			function( value ) { return ( value === target ? null : value ); } ); // delete entry
4860		this._disabledInputs[ this._disabledInputs.length ] = target;
4861	},
4862
4863	/* Is the first field in a jQuery collection disabled as a datepicker?
4864	 * @param  target	element - the target input field or division or span
4865	 * @return boolean - true if disabled, false if enabled
4866	 */
4867	_isDisabledDatepicker: function( target ) {
4868		if ( !target ) {
4869			return false;
4870		}
4871		for ( var i = 0; i < this._disabledInputs.length; i++ ) {
4872			if ( this._disabledInputs[ i ] === target ) {
4873				return true;
4874			}
4875		}
4876		return false;
4877	},
4878
4879	/* Retrieve the instance data for the target control.
4880	 * @param  target  element - the target input field or division or span
4881	 * @return  object - the associated instance data
4882	 * @throws  error if a jQuery problem getting data
4883	 */
4884	_getInst: function( target ) {
4885		try {
4886			return $.data( target, "datepicker" );
4887		}
4888		catch ( err ) {
4889			throw "Missing instance data for this datepicker";
4890		}
4891	},
4892
4893	/* Update or retrieve the settings for a date picker attached to an input field or division.
4894	 * @param  target  element - the target input field or division or span
4895	 * @param  name	object - the new settings to update or
4896	 *				string - the name of the setting to change or retrieve,
4897	 *				when retrieving also "all" for all instance settings or
4898	 *				"defaults" for all global defaults
4899	 * @param  value   any - the new value for the setting
4900	 *				(omit if above is an object or to retrieve a value)
4901	 */
4902	_optionDatepicker: function( target, name, value ) {
4903		var settings, date, minDate, maxDate,
4904			inst = this._getInst( target );
4905
4906		if ( arguments.length === 2 && typeof name === "string" ) {
4907			return ( name === "defaults" ? $.extend( {}, $.datepicker._defaults ) :
4908				( inst ? ( name === "all" ? $.extend( {}, inst.settings ) :
4909				this._get( inst, name ) ) : null ) );
4910		}
4911
4912		settings = name || {};
4913		if ( typeof name === "string" ) {
4914			settings = {};
4915			settings[ name ] = value;
4916		}
4917
4918		if ( inst ) {
4919			if ( this._curInst === inst ) {
4920				this._hideDatepicker();
4921			}
4922
4923			date = this._getDateDatepicker( target, true );
4924			minDate = this._getMinMaxDate( inst, "min" );
4925			maxDate = this._getMinMaxDate( inst, "max" );
4926			datepicker_extendRemove( inst.settings, settings );
4927
4928			// reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided
4929			if ( minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined ) {
4930				inst.settings.minDate = this._formatDate( inst, minDate );
4931			}
4932			if ( maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined ) {
4933				inst.settings.maxDate = this._formatDate( inst, maxDate );
4934			}
4935			if ( "disabled" in settings ) {
4936				if ( settings.disabled ) {
4937					this._disableDatepicker( target );
4938				} else {
4939					this._enableDatepicker( target );
4940				}
4941			}
4942			this._attachments( $( target ), inst );
4943			this._autoSize( inst );
4944			this._setDate( inst, date );
4945			this._updateAlternate( inst );
4946			this._updateDatepicker( inst );
4947		}
4948	},
4949
4950	// Change method deprecated
4951	_changeDatepicker: function( target, name, value ) {
4952		this._optionDatepicker( target, name, value );
4953	},
4954
4955	/* Redraw the date picker attached to an input field or division.
4956	 * @param  target  element - the target input field or division or span
4957	 */
4958	_refreshDatepicker: function( target ) {
4959		var inst = this._getInst( target );
4960		if ( inst ) {
4961			this._updateDatepicker( inst );
4962		}
4963	},
4964
4965	/* Set the dates for a jQuery selection.
4966	 * @param  target element - the target input field or division or span
4967	 * @param  date	Date - the new date
4968	 */
4969	_setDateDatepicker: function( target, date ) {
4970		var inst = this._getInst( target );
4971		if ( inst ) {
4972			this._setDate( inst, date );
4973			this._updateDatepicker( inst );
4974			this._updateAlternate( inst );
4975		}
4976	},
4977
4978	/* Get the date(s) for the first entry in a jQuery selection.
4979	 * @param  target element - the target input field or division or span
4980	 * @param  noDefault boolean - true if no default date is to be used
4981	 * @return Date - the current date
4982	 */
4983	_getDateDatepicker: function( target, noDefault ) {
4984		var inst = this._getInst( target );
4985		if ( inst && !inst.inline ) {
4986			this._setDateFromField( inst, noDefault );
4987		}
4988		return ( inst ? this._getDate( inst ) : null );
4989	},
4990
4991	/* Handle keystrokes. */
4992	_doKeyDown: function( event ) {
4993		var onSelect, dateStr, sel,
4994			inst = $.datepicker._getInst( event.target ),
4995			handled = true,
4996			isRTL = inst.dpDiv.is( ".ui-datepicker-rtl" );
4997
4998		inst._keyEvent = true;
4999		if ( $.datepicker._datepickerShowing ) {
5000			switch ( event.keyCode ) {
5001				case 9: $.datepicker._hideDatepicker();
5002						handled = false;
5003						break; // hide on tab out
5004				case 13: sel = $( "td." + $.datepicker._dayOverClass + ":not(." +
5005									$.datepicker._currentClass + ")", inst.dpDiv );
5006						if ( sel[ 0 ] ) {
5007							$.datepicker._selectDay( event.target, inst.selectedMonth, inst.selectedYear, sel[ 0 ] );
5008						}
5009
5010						onSelect = $.datepicker._get( inst, "onSelect" );
5011						if ( onSelect ) {
5012							dateStr = $.datepicker._formatDate( inst );
5013
5014							// Trigger custom callback
5015							onSelect.apply( ( inst.input ? inst.input[ 0 ] : null ), [ dateStr, inst ] );
5016						} else {
5017							$.datepicker._hideDatepicker();
5018						}
5019
5020						return false; // don't submit the form
5021				case 27: $.datepicker._hideDatepicker();
5022						break; // hide on escape
5023				case 33: $.datepicker._adjustDate( event.target, ( event.ctrlKey ?
5024							-$.datepicker._get( inst, "stepBigMonths" ) :
5025							-$.datepicker._get( inst, "stepMonths" ) ), "M" );
5026						break; // previous month/year on page up/+ ctrl
5027				case 34: $.datepicker._adjustDate( event.target, ( event.ctrlKey ?
5028							+$.datepicker._get( inst, "stepBigMonths" ) :
5029							+$.datepicker._get( inst, "stepMonths" ) ), "M" );
5030						break; // next month/year on page down/+ ctrl
5031				case 35: if ( event.ctrlKey || event.metaKey ) {
5032							$.datepicker._clearDate( event.target );
5033						}
5034						handled = event.ctrlKey || event.metaKey;
5035						break; // clear on ctrl or command +end
5036				case 36: if ( event.ctrlKey || event.metaKey ) {
5037							$.datepicker._gotoToday( event.target );
5038						}
5039						handled = event.ctrlKey || event.metaKey;
5040						break; // current on ctrl or command +home
5041				case 37: if ( event.ctrlKey || event.metaKey ) {
5042							$.datepicker._adjustDate( event.target, ( isRTL ? +1 : -1 ), "D" );
5043						}
5044						handled = event.ctrlKey || event.metaKey;
5045
5046						// -1 day on ctrl or command +left
5047						if ( event.originalEvent.altKey ) {
5048							$.datepicker._adjustDate( event.target, ( event.ctrlKey ?
5049								-$.datepicker._get( inst, "stepBigMonths" ) :
5050								-$.datepicker._get( inst, "stepMonths" ) ), "M" );
5051						}
5052
5053						// next month/year on alt +left on Mac
5054						break;
5055				case 38: if ( event.ctrlKey || event.metaKey ) {
5056							$.datepicker._adjustDate( event.target, -7, "D" );
5057						}
5058						handled = event.ctrlKey || event.metaKey;
5059						break; // -1 week on ctrl or command +up
5060				case 39: if ( event.ctrlKey || event.metaKey ) {
5061							$.datepicker._adjustDate( event.target, ( isRTL ? -1 : +1 ), "D" );
5062						}
5063						handled = event.ctrlKey || event.metaKey;
5064
5065						// +1 day on ctrl or command +right
5066						if ( event.originalEvent.altKey ) {
5067							$.datepicker._adjustDate( event.target, ( event.ctrlKey ?
5068								+$.datepicker._get( inst, "stepBigMonths" ) :
5069								+$.datepicker._get( inst, "stepMonths" ) ), "M" );
5070						}
5071
5072						// next month/year on alt +right
5073						break;
5074				case 40: if ( event.ctrlKey || event.metaKey ) {
5075							$.datepicker._adjustDate( event.target, +7, "D" );
5076						}
5077						handled = event.ctrlKey || event.metaKey;
5078						break; // +1 week on ctrl or command +down
5079				default: handled = false;
5080			}
5081		} else if ( event.keyCode === 36 && event.ctrlKey ) { // display the date picker on ctrl+home
5082			$.datepicker._showDatepicker( this );
5083		} else {
5084			handled = false;
5085		}
5086
5087		if ( handled ) {
5088			event.preventDefault();
5089			event.stopPropagation();
5090		}
5091	},
5092
5093	/* Filter entered characters - based on date format. */
5094	_doKeyPress: function( event ) {
5095		var chars, chr,
5096			inst = $.datepicker._getInst( event.target );
5097
5098		if ( $.datepicker._get( inst, "constrainInput" ) ) {
5099			chars = $.datepicker._possibleChars( $.datepicker._get( inst, "dateFormat" ) );
5100			chr = String.fromCharCode( event.charCode == null ? event.keyCode : event.charCode );
5101			return event.ctrlKey || event.metaKey || ( chr < " " || !chars || chars.indexOf( chr ) > -1 );
5102		}
5103	},
5104
5105	/* Synchronise manual entry and field/alternate field. */
5106	_doKeyUp: function( event ) {
5107		var date,
5108			inst = $.datepicker._getInst( event.target );
5109
5110		if ( inst.input.val() !== inst.lastVal ) {
5111			try {
5112				date = $.datepicker.parseDate( $.datepicker._get( inst, "dateFormat" ),
5113					( inst.input ? inst.input.val() : null ),
5114					$.datepicker._getFormatConfig( inst ) );
5115
5116				if ( date ) { // only if valid
5117					$.datepicker._setDateFromField( inst );
5118					$.datepicker._updateAlternate( inst );
5119					$.datepicker._updateDatepicker( inst );
5120				}
5121			}
5122			catch ( err ) {
5123			}
5124		}
5125		return true;
5126	},
5127
5128	/* Pop-up the date picker for a given input field.
5129	 * If false returned from beforeShow event handler do not show.
5130	 * @param  input  element - the input field attached to the date picker or
5131	 *					event - if triggered by focus
5132	 */
5133	_showDatepicker: function( input ) {
5134		input = input.target || input;
5135		if ( input.nodeName.toLowerCase() !== "input" ) { // find from button/image trigger
5136			input = $( "input", input.parentNode )[ 0 ];
5137		}
5138
5139		if ( $.datepicker._isDisabledDatepicker( input ) || $.datepicker._lastInput === input ) { // already here
5140			return;
5141		}
5142
5143		var inst, beforeShow, beforeShowSettings, isFixed,
5144			offset, showAnim, duration;
5145
5146		inst = $.datepicker._getInst( input );
5147		if ( $.datepicker._curInst && $.datepicker._curInst !== inst ) {
5148			$.datepicker._curInst.dpDiv.stop( true, true );
5149			if ( inst && $.datepicker._datepickerShowing ) {
5150				$.datepicker._hideDatepicker( $.datepicker._curInst.input[ 0 ] );
5151			}
5152		}
5153
5154		beforeShow = $.datepicker._get( inst, "beforeShow" );
5155		beforeShowSettings = beforeShow ? beforeShow.apply( input, [ input, inst ] ) : {};
5156		if ( beforeShowSettings === false ) {
5157			return;
5158		}
5159		datepicker_extendRemove( inst.settings, beforeShowSettings );
5160
5161		inst.lastVal = null;
5162		$.datepicker._lastInput = input;
5163		$.datepicker._setDateFromField( inst );
5164
5165		if ( $.datepicker._inDialog ) { // hide cursor
5166			input.value = "";
5167		}
5168		if ( !$.datepicker._pos ) { // position below input
5169			$.datepicker._pos = $.datepicker._findPos( input );
5170			$.datepicker._pos[ 1 ] += input.offsetHeight; // add the height
5171		}
5172
5173		isFixed = false;
5174		$( input ).parents().each( function() {
5175			isFixed |= $( this ).css( "position" ) === "fixed";
5176			return !isFixed;
5177		} );
5178
5179		offset = { left: $.datepicker._pos[ 0 ], top: $.datepicker._pos[ 1 ] };
5180		$.datepicker._pos = null;
5181
5182		//to avoid flashes on Firefox
5183		inst.dpDiv.empty();
5184
5185		// determine sizing offscreen
5186		inst.dpDiv.css( { position: "absolute", display: "block", top: "-1000px" } );
5187		$.datepicker._updateDatepicker( inst );
5188
5189		// fix width for dynamic number of date pickers
5190		// and adjust position before showing
5191		offset = $.datepicker._checkOffset( inst, offset, isFixed );
5192		inst.dpDiv.css( { position: ( $.datepicker._inDialog && $.blockUI ?
5193			"static" : ( isFixed ? "fixed" : "absolute" ) ), display: "none",
5194			left: offset.left + "px", top: offset.top + "px" } );
5195
5196		if ( !inst.inline ) {
5197			showAnim = $.datepicker._get( inst, "showAnim" );
5198			duration = $.datepicker._get( inst, "duration" );
5199			inst.dpDiv.css( "z-index", datepicker_getZindex( $( input ) ) + 1 );
5200			$.datepicker._datepickerShowing = true;
5201
5202			if ( $.effects && $.effects.effect[ showAnim ] ) {
5203				inst.dpDiv.show( showAnim, $.datepicker._get( inst, "showOptions" ), duration );
5204			} else {
5205				inst.dpDiv[ showAnim || "show" ]( showAnim ? duration : null );
5206			}
5207
5208			if ( $.datepicker._shouldFocusInput( inst ) ) {
5209				inst.input.trigger( "focus" );
5210			}
5211
5212			$.datepicker._curInst = inst;
5213		}
5214	},
5215
5216	/* Generate the date picker content. */
5217	_updateDatepicker: function( inst ) {
5218		this.maxRows = 4; //Reset the max number of rows being displayed (see #7043)
5219		datepicker_instActive = inst; // for delegate hover events
5220		inst.dpDiv.empty().append( this._generateHTML( inst ) );
5221		this._attachHandlers( inst );
5222
5223		var origyearshtml,
5224			numMonths = this._getNumberOfMonths( inst ),
5225			cols = numMonths[ 1 ],
5226			width = 17,
5227			activeCell = inst.dpDiv.find( "." + this._dayOverClass + " a" );
5228
5229		if ( activeCell.length > 0 ) {
5230			datepicker_handleMouseover.apply( activeCell.get( 0 ) );
5231		}
5232
5233		inst.dpDiv.removeClass( "ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4" ).width( "" );
5234		if ( cols > 1 ) {
5235			inst.dpDiv.addClass( "ui-datepicker-multi-" + cols ).css( "width", ( width * cols ) + "em" );
5236		}
5237		inst.dpDiv[ ( numMonths[ 0 ] !== 1 || numMonths[ 1 ] !== 1 ? "add" : "remove" ) +
5238			"Class" ]( "ui-datepicker-multi" );
5239		inst.dpDiv[ ( this._get( inst, "isRTL" ) ? "add" : "remove" ) +
5240			"Class" ]( "ui-datepicker-rtl" );
5241
5242		if ( inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput( inst ) ) {
5243			inst.input.trigger( "focus" );
5244		}
5245
5246		// Deffered render of the years select (to avoid flashes on Firefox)
5247		if ( inst.yearshtml ) {
5248			origyearshtml = inst.yearshtml;
5249			setTimeout( function() {
5250
5251				//assure that inst.yearshtml didn't change.
5252				if ( origyearshtml === inst.yearshtml && inst.yearshtml ) {
5253					inst.dpDiv.find( "select.ui-datepicker-year:first" ).replaceWith( inst.yearshtml );
5254				}
5255				origyearshtml = inst.yearshtml = null;
5256			}, 0 );
5257		}
5258	},
5259
5260	// #6694 - don't focus the input if it's already focused
5261	// this breaks the change event in IE
5262	// Support: IE and jQuery <1.9
5263	_shouldFocusInput: function( inst ) {
5264		return inst.input && inst.input.is( ":visible" ) && !inst.input.is( ":disabled" ) && !inst.input.is( ":focus" );
5265	},
5266
5267	/* Check positioning to remain on screen. */
5268	_checkOffset: function( inst, offset, isFixed ) {
5269		var dpWidth = inst.dpDiv.outerWidth(),
5270			dpHeight = inst.dpDiv.outerHeight(),
5271			inputWidth = inst.input ? inst.input.outerWidth() : 0,
5272			inputHeight = inst.input ? inst.input.outerHeight() : 0,
5273			viewWidth = document.documentElement.clientWidth + ( isFixed ? 0 : $( document ).scrollLeft() ),
5274			viewHeight = document.documentElement.clientHeight + ( isFixed ? 0 : $( document ).scrollTop() );
5275
5276		offset.left -= ( this._get( inst, "isRTL" ) ? ( dpWidth - inputWidth ) : 0 );
5277		offset.left -= ( isFixed && offset.left === inst.input.offset().left ) ? $( document ).scrollLeft() : 0;
5278		offset.top -= ( isFixed && offset.top === ( inst.input.offset().top + inputHeight ) ) ? $( document ).scrollTop() : 0;
5279
5280		// Now check if datepicker is showing outside window viewport - move to a better place if so.
5281		offset.left -= Math.min( offset.left, ( offset.left + dpWidth > viewWidth && viewWidth > dpWidth ) ?
5282			Math.abs( offset.left + dpWidth - viewWidth ) : 0 );
5283		offset.top -= Math.min( offset.top, ( offset.top + dpHeight > viewHeight && viewHeight > dpHeight ) ?
5284			Math.abs( dpHeight + inputHeight ) : 0 );
5285
5286		return offset;
5287	},
5288
5289	/* Find an object's position on the screen. */
5290	_findPos: function( obj ) {
5291		var position,
5292			inst = this._getInst( obj ),
5293			isRTL = this._get( inst, "isRTL" );
5294
5295		while ( obj && ( obj.type === "hidden" || obj.nodeType !== 1 || $.expr.filters.hidden( obj ) ) ) {
5296			obj = obj[ isRTL ? "previousSibling" : "nextSibling" ];
5297		}
5298
5299		position = $( obj ).offset();
5300		return [ position.left, position.top ];
5301	},
5302
5303	/* Hide the date picker from view.
5304	 * @param  input  element - the input field attached to the date picker
5305	 */
5306	_hideDatepicker: function( input ) {
5307		var showAnim, duration, postProcess, onClose,
5308			inst = this._curInst;
5309
5310		if ( !inst || ( input && inst !== $.data( input, "datepicker" ) ) ) {
5311			return;
5312		}
5313
5314		if ( this._datepickerShowing ) {
5315			showAnim = this._get( inst, "showAnim" );
5316			duration = this._get( inst, "duration" );
5317			postProcess = function() {
5318				$.datepicker._tidyDialog( inst );
5319			};
5320
5321			// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed
5322			if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) {
5323				inst.dpDiv.hide( showAnim, $.datepicker._get( inst, "showOptions" ), duration, postProcess );
5324			} else {
5325				inst.dpDiv[ ( showAnim === "slideDown" ? "slideUp" :
5326					( showAnim === "fadeIn" ? "fadeOut" : "hide" ) ) ]( ( showAnim ? duration : null ), postProcess );
5327			}
5328
5329			if ( !showAnim ) {
5330				postProcess();
5331			}
5332			this._datepickerShowing = false;
5333
5334			onClose = this._get( inst, "onClose" );
5335			if ( onClose ) {
5336				onClose.apply( ( inst.input ? inst.input[ 0 ] : null ), [ ( inst.input ? inst.input.val() : "" ), inst ] );
5337			}
5338
5339			this._lastInput = null;
5340			if ( this._inDialog ) {
5341				this._dialogInput.css( { position: "absolute", left: "0", top: "-100px" } );
5342				if ( $.blockUI ) {
5343					$.unblockUI();
5344					$( "body" ).append( this.dpDiv );
5345				}
5346			}
5347			this._inDialog = false;
5348		}
5349	},
5350
5351	/* Tidy up after a dialog display. */
5352	_tidyDialog: function( inst ) {
5353		inst.dpDiv.removeClass( this._dialogClass ).off( ".ui-datepicker-calendar" );
5354	},
5355
5356	/* Close date picker if clicked elsewhere. */
5357	_checkExternalClick: function( event ) {
5358		if ( !$.datepicker._curInst ) {
5359			return;
5360		}
5361
5362		var $target = $( event.target ),
5363			inst = $.datepicker._getInst( $target[ 0 ] );
5364
5365		if ( ( ( $target[ 0 ].id !== $.datepicker._mainDivId &&
5366				$target.parents( "#" + $.datepicker._mainDivId ).length === 0 &&
5367				!$target.hasClass( $.datepicker.markerClassName ) &&
5368				!$target.closest( "." + $.datepicker._triggerClass ).length &&
5369				$.datepicker._datepickerShowing && !( $.datepicker._inDialog && $.blockUI ) ) ) ||
5370			( $target.hasClass( $.datepicker.markerClassName ) && $.datepicker._curInst !== inst ) ) {
5371				$.datepicker._hideDatepicker();
5372		}
5373	},
5374
5375	/* Adjust one of the date sub-fields. */
5376	_adjustDate: function( id, offset, period ) {
5377		var target = $( id ),
5378			inst = this._getInst( target[ 0 ] );
5379
5380		if ( this._isDisabledDatepicker( target[ 0 ] ) ) {
5381			return;
5382		}
5383		this._adjustInstDate( inst, offset +
5384			( period === "M" ? this._get( inst, "showCurrentAtPos" ) : 0 ), // undo positioning
5385			period );
5386		this._updateDatepicker( inst );
5387	},
5388
5389	/* Action for current link. */
5390	_gotoToday: function( id ) {
5391		var date,
5392			target = $( id ),
5393			inst = this._getInst( target[ 0 ] );
5394
5395		if ( this._get( inst, "gotoCurrent" ) && inst.currentDay ) {
5396			inst.selectedDay = inst.currentDay;
5397			inst.drawMonth = inst.selectedMonth = inst.currentMonth;
5398			inst.drawYear = inst.selectedYear = inst.currentYear;
5399		} else {
5400			date = new Date();
5401			inst.selectedDay = date.getDate();
5402			inst.drawMonth = inst.selectedMonth = date.getMonth();
5403			inst.drawYear = inst.selectedYear = date.getFullYear();
5404		}
5405		this._notifyChange( inst );
5406		this._adjustDate( target );
5407	},
5408
5409	/* Action for selecting a new month/year. */
5410	_selectMonthYear: function( id, select, period ) {
5411		var target = $( id ),
5412			inst = this._getInst( target[ 0 ] );
5413
5414		inst[ "selected" + ( period === "M" ? "Month" : "Year" ) ] =
5415		inst[ "draw" + ( period === "M" ? "Month" : "Year" ) ] =
5416			parseInt( select.options[ select.selectedIndex ].value, 10 );
5417
5418		this._notifyChange( inst );
5419		this._adjustDate( target );
5420	},
5421
5422	/* Action for selecting a day. */
5423	_selectDay: function( id, month, year, td ) {
5424		var inst,
5425			target = $( id );
5426
5427		if ( $( td ).hasClass( this._unselectableClass ) || this._isDisabledDatepicker( target[ 0 ] ) ) {
5428			return;
5429		}
5430
5431		inst = this._getInst( target[ 0 ] );
5432		inst.selectedDay = inst.currentDay = $( "a", td ).html();
5433		inst.selectedMonth = inst.currentMonth = month;
5434		inst.selectedYear = inst.currentYear = year;
5435		this._selectDate( id, this._formatDate( inst,
5436			inst.currentDay, inst.currentMonth, inst.currentYear ) );
5437	},
5438
5439	/* Erase the input field and hide the date picker. */
5440	_clearDate: function( id ) {
5441		var target = $( id );
5442		this._selectDate( target, "" );
5443	},
5444
5445	/* Update the input field with the selected date. */
5446	_selectDate: function( id, dateStr ) {
5447		var onSelect,
5448			target = $( id ),
5449			inst = this._getInst( target[ 0 ] );
5450
5451		dateStr = ( dateStr != null ? dateStr : this._formatDate( inst ) );
5452		if ( inst.input ) {
5453			inst.input.val( dateStr );
5454		}
5455		this._updateAlternate( inst );
5456
5457		onSelect = this._get( inst, "onSelect" );
5458		if ( onSelect ) {
5459			onSelect.apply( ( inst.input ? inst.input[ 0 ] : null ), [ dateStr, inst ] );  // trigger custom callback
5460		} else if ( inst.input ) {
5461			inst.input.trigger( "change" ); // fire the change event
5462		}
5463
5464		if ( inst.inline ) {
5465			this._updateDatepicker( inst );
5466		} else {
5467			this._hideDatepicker();
5468			this._lastInput = inst.input[ 0 ];
5469			if ( typeof( inst.input[ 0 ] ) !== "object" ) {
5470				inst.input.trigger( "focus" ); // restore focus
5471			}
5472			this._lastInput = null;
5473		}
5474	},
5475
5476	/* Update any alternate field to synchronise with the main field. */
5477	_updateAlternate: function( inst ) {
5478		var altFormat, date, dateStr,
5479			altField = this._get( inst, "altField" );
5480
5481		if ( altField ) { // update alternate field too
5482			altFormat = this._get( inst, "altFormat" ) || this._get( inst, "dateFormat" );
5483			date = this._getDate( inst );
5484			dateStr = this.formatDate( altFormat, date, this._getFormatConfig( inst ) );
5485			$( altField ).val( dateStr );
5486		}
5487	},
5488
5489	/* Set as beforeShowDay function to prevent selection of weekends.
5490	 * @param  date  Date - the date to customise
5491	 * @return [boolean, string] - is this date selectable?, what is its CSS class?
5492	 */
5493	noWeekends: function( date ) {
5494		var day = date.getDay();
5495		return [ ( day > 0 && day < 6 ), "" ];
5496	},
5497
5498	/* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.
5499	 * @param  date  Date - the date to get the week for
5500	 * @return  number - the number of the week within the year that contains this date
5501	 */
5502	iso8601Week: function( date ) {
5503		var time,
5504			checkDate = new Date( date.getTime() );
5505
5506		// Find Thursday of this week starting on Monday
5507		checkDate.setDate( checkDate.getDate() + 4 - ( checkDate.getDay() || 7 ) );
5508
5509		time = checkDate.getTime();
5510		checkDate.setMonth( 0 ); // Compare with Jan 1
5511		checkDate.setDate( 1 );
5512		return Math.floor( Math.round( ( time - checkDate ) / 86400000 ) / 7 ) + 1;
5513	},
5514
5515	/* Parse a string value into a date object.
5516	 * See formatDate below for the possible formats.
5517	 *
5518	 * @param  format string - the expected format of the date
5519	 * @param  value string - the date in the above format
5520	 * @param  settings Object - attributes include:
5521	 *					shortYearCutoff  number - the cutoff year for determining the century (optional)
5522	 *					dayNamesShort	string[7] - abbreviated names of the days from Sunday (optional)
5523	 *					dayNames		string[7] - names of the days from Sunday (optional)
5524	 *					monthNamesShort string[12] - abbreviated names of the months (optional)
5525	 *					monthNames		string[12] - names of the months (optional)
5526	 * @return  Date - the extracted date value or null if value is blank
5527	 */
5528	parseDate: function( format, value, settings ) {
5529		if ( format == null || value == null ) {
5530			throw "Invalid arguments";
5531		}
5532
5533		value = ( typeof value === "object" ? value.toString() : value + "" );
5534		if ( value === "" ) {
5535			return null;
5536		}
5537
5538		var iFormat, dim, extra,
5539			iValue = 0,
5540			shortYearCutoffTemp = ( settings ? settings.shortYearCutoff : null ) || this._defaults.shortYearCutoff,
5541			shortYearCutoff = ( typeof shortYearCutoffTemp !== "string" ? shortYearCutoffTemp :
5542				new Date().getFullYear() % 100 + parseInt( shortYearCutoffTemp, 10 ) ),
5543			dayNamesShort = ( settings ? settings.dayNamesShort : null ) || this._defaults.dayNamesShort,
5544			dayNames = ( settings ? settings.dayNames : null ) || this._defaults.dayNames,
5545			monthNamesShort = ( settings ? settings.monthNamesShort : null ) || this._defaults.monthNamesShort,
5546			monthNames = ( settings ? settings.monthNames : null ) || this._defaults.monthNames,
5547			year = -1,
5548			month = -1,
5549			day = -1,
5550			doy = -1,
5551			literal = false,
5552			date,
5553
5554			// Check whether a format character is doubled
5555			lookAhead = function( match ) {
5556				var matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );
5557				if ( matches ) {
5558					iFormat++;
5559				}
5560				return matches;
5561			},
5562
5563			// Extract a number from the string value
5564			getNumber = function( match ) {
5565				var isDoubled = lookAhead( match ),
5566					size = ( match === "@" ? 14 : ( match === "!" ? 20 :
5567					( match === "y" && isDoubled ? 4 : ( match === "o" ? 3 : 2 ) ) ) ),
5568					minSize = ( match === "y" ? size : 1 ),
5569					digits = new RegExp( "^\\d{" + minSize + "," + size + "}" ),
5570					num = value.substring( iValue ).match( digits );
5571				if ( !num ) {
5572					throw "Missing number at position " + iValue;
5573				}
5574				iValue += num[ 0 ].length;
5575				return parseInt( num[ 0 ], 10 );
5576			},
5577
5578			// Extract a name from the string value and convert to an index
5579			getName = function( match, shortNames, longNames ) {
5580				var index = -1,
5581					names = $.map( lookAhead( match ) ? longNames : shortNames, function( v, k ) {
5582						return [ [ k, v ] ];
5583					} ).sort( function( a, b ) {
5584						return -( a[ 1 ].length - b[ 1 ].length );
5585					} );
5586
5587				$.each( names, function( i, pair ) {
5588					var name = pair[ 1 ];
5589					if ( value.substr( iValue, name.length ).toLowerCase() === name.toLowerCase() ) {
5590						index = pair[ 0 ];
5591						iValue += name.length;
5592						return false;
5593					}
5594				} );
5595				if ( index !== -1 ) {
5596					return index + 1;
5597				} else {
5598					throw "Unknown name at position " + iValue;
5599				}
5600			},
5601
5602			// Confirm that a literal character matches the string value
5603			checkLiteral = function() {
5604				if ( value.charAt( iValue ) !== format.charAt( iFormat ) ) {
5605					throw "Unexpected literal at position " + iValue;
5606				}
5607				iValue++;
5608			};
5609
5610		for ( iFormat = 0; iFormat < format.length; iFormat++ ) {
5611			if ( literal ) {
5612				if ( format.charAt( iFormat ) === "'" && !lookAhead( "'" ) ) {
5613					literal = false;
5614				} else {
5615					checkLiteral();
5616				}
5617			} else {
5618				switch ( format.charAt( iFormat ) ) {
5619					case "d":
5620						day = getNumber( "d" );
5621						break;
5622					case "D":
5623						getName( "D", dayNamesShort, dayNames );
5624						break;
5625					case "o":
5626						doy = getNumber( "o" );
5627						break;
5628					case "m":
5629						month = getNumber( "m" );
5630						break;
5631					case "M":
5632						month = getName( "M", monthNamesShort, monthNames );
5633						break;
5634					case "y":
5635						year = getNumber( "y" );
5636						break;
5637					case "@":
5638						date = new Date( getNumber( "@" ) );
5639						year = date.getFullYear();
5640						month = date.getMonth() + 1;
5641						day = date.getDate();
5642						break;
5643					case "!":
5644						date = new Date( ( getNumber( "!" ) - this._ticksTo1970 ) / 10000 );
5645						year = date.getFullYear();
5646						month = date.getMonth() + 1;
5647						day = date.getDate();
5648						break;
5649					case "'":
5650						if ( lookAhead( "'" ) ) {
5651							checkLiteral();
5652						} else {
5653							literal = true;
5654						}
5655						break;
5656					default:
5657						checkLiteral();
5658				}
5659			}
5660		}
5661
5662		if ( iValue < value.length ) {
5663			extra = value.substr( iValue );
5664			if ( !/^\s+/.test( extra ) ) {
5665				throw "Extra/unparsed characters found in date: " + extra;
5666			}
5667		}
5668
5669		if ( year === -1 ) {
5670			year = new Date().getFullYear();
5671		} else if ( year < 100 ) {
5672			year += new Date().getFullYear() - new Date().getFullYear() % 100 +
5673				( year <= shortYearCutoff ? 0 : -100 );
5674		}
5675
5676		if ( doy > -1 ) {
5677			month = 1;
5678			day = doy;
5679			do {
5680				dim = this._getDaysInMonth( year, month - 1 );
5681				if ( day <= dim ) {
5682					break;
5683				}
5684				month++;
5685				day -= dim;
5686			} while ( true );
5687		}
5688
5689		date = this._daylightSavingAdjust( new Date( year, month - 1, day ) );
5690		if ( date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day ) {
5691			throw "Invalid date"; // E.g. 31/02/00
5692		}
5693		return date;
5694	},
5695
5696	/* Standard date formats. */
5697	ATOM: "yy-mm-dd", // RFC 3339 (ISO 8601)
5698	COOKIE: "D, dd M yy",
5699	ISO_8601: "yy-mm-dd",
5700	RFC_822: "D, d M y",
5701	RFC_850: "DD, dd-M-y",
5702	RFC_1036: "D, d M y",
5703	RFC_1123: "D, d M yy",
5704	RFC_2822: "D, d M yy",
5705	RSS: "D, d M y", // RFC 822
5706	TICKS: "!",
5707	TIMESTAMP: "@",
5708	W3C: "yy-mm-dd", // ISO 8601
5709
5710	_ticksTo1970: ( ( ( 1970 - 1 ) * 365 + Math.floor( 1970 / 4 ) - Math.floor( 1970 / 100 ) +
5711		Math.floor( 1970 / 400 ) ) * 24 * 60 * 60 * 10000000 ),
5712
5713	/* Format a date object into a string value.
5714	 * The format can be combinations of the following:
5715	 * d  - day of month (no leading zero)
5716	 * dd - day of month (two digit)
5717	 * o  - day of year (no leading zeros)
5718	 * oo - day of year (three digit)
5719	 * D  - day name short
5720	 * DD - day name long
5721	 * m  - month of year (no leading zero)
5722	 * mm - month of year (two digit)
5723	 * M  - month name short
5724	 * MM - month name long
5725	 * y  - year (two digit)
5726	 * yy - year (four digit)
5727	 * @ - Unix timestamp (ms since 01/01/1970)
5728	 * ! - Windows ticks (100ns since 01/01/0001)
5729	 * "..." - literal text
5730	 * '' - single quote
5731	 *
5732	 * @param  format string - the desired format of the date
5733	 * @param  date Date - the date value to format
5734	 * @param  settings Object - attributes include:
5735	 *					dayNamesShort	string[7] - abbreviated names of the days from Sunday (optional)
5736	 *					dayNames		string[7] - names of the days from Sunday (optional)
5737	 *					monthNamesShort string[12] - abbreviated names of the months (optional)
5738	 *					monthNames		string[12] - names of the months (optional)
5739	 * @return  string - the date in the above format
5740	 */
5741	formatDate: function( format, date, settings ) {
5742		if ( !date ) {
5743			return "";
5744		}
5745
5746		var iFormat,
5747			dayNamesShort = ( settings ? settings.dayNamesShort : null ) || this._defaults.dayNamesShort,
5748			dayNames = ( settings ? settings.dayNames : null ) || this._defaults.dayNames,
5749			monthNamesShort = ( settings ? settings.monthNamesShort : null ) || this._defaults.monthNamesShort,
5750			monthNames = ( settings ? settings.monthNames : null ) || this._defaults.monthNames,
5751
5752			// Check whether a format character is doubled
5753			lookAhead = function( match ) {
5754				var matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );
5755				if ( matches ) {
5756					iFormat++;
5757				}
5758				return matches;
5759			},
5760
5761			// Format a number, with leading zero if necessary
5762			formatNumber = function( match, value, len ) {
5763				var num = "" + value;
5764				if ( lookAhead( match ) ) {
5765					while ( num.length < len ) {
5766						num = "0" + num;
5767					}
5768				}
5769				return num;
5770			},
5771
5772			// Format a name, short or long as requested
5773			formatName = function( match, value, shortNames, longNames ) {
5774				return ( lookAhead( match ) ? longNames[ value ] : shortNames[ value ] );
5775			},
5776			output = "",
5777			literal = false;
5778
5779		if ( date ) {
5780			for ( iFormat = 0; iFormat < format.length; iFormat++ ) {
5781				if ( literal ) {
5782					if ( format.charAt( iFormat ) === "'" && !lookAhead( "'" ) ) {
5783						literal = false;
5784					} else {
5785						output += format.charAt( iFormat );
5786					}
5787				} else {
5788					switch ( format.charAt( iFormat ) ) {
5789						case "d":
5790							output += formatNumber( "d", date.getDate(), 2 );
5791							break;
5792						case "D":
5793							output += formatName( "D", date.getDay(), dayNamesShort, dayNames );
5794							break;
5795						case "o":
5796							output += formatNumber( "o",
5797								Math.round( ( new Date( date.getFullYear(), date.getMonth(), date.getDate() ).getTime() - new Date( date.getFullYear(), 0, 0 ).getTime() ) / 86400000 ), 3 );
5798							break;
5799						case "m":
5800							output += formatNumber( "m", date.getMonth() + 1, 2 );
5801							break;
5802						case "M":
5803							output += formatName( "M", date.getMonth(), monthNamesShort, monthNames );
5804							break;
5805						case "y":
5806							output += ( lookAhead( "y" ) ? date.getFullYear() :
5807								( date.getFullYear() % 100 < 10 ? "0" : "" ) + date.getFullYear() % 100 );
5808							break;
5809						case "@":
5810							output += date.getTime();
5811							break;
5812						case "!":
5813							output += date.getTime() * 10000 + this._ticksTo1970;
5814							break;
5815						case "'":
5816							if ( lookAhead( "'" ) ) {
5817								output += "'";
5818							} else {
5819								literal = true;
5820							}
5821							break;
5822						default:
5823							output += format.charAt( iFormat );
5824					}
5825				}
5826			}
5827		}
5828		return output;
5829	},
5830
5831	/* Extract all possible characters from the date format. */
5832	_possibleChars: function( format ) {
5833		var iFormat,
5834			chars = "",
5835			literal = false,
5836
5837			// Check whether a format character is doubled
5838			lookAhead = function( match ) {
5839				var matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );
5840				if ( matches ) {
5841					iFormat++;
5842				}
5843				return matches;
5844			};
5845
5846		for ( iFormat = 0; iFormat < format.length; iFormat++ ) {
5847			if ( literal ) {
5848				if ( format.charAt( iFormat ) === "'" && !lookAhead( "'" ) ) {
5849					literal = false;
5850				} else {
5851					chars += format.charAt( iFormat );
5852				}
5853			} else {
5854				switch ( format.charAt( iFormat ) ) {
5855					case "d": case "m": case "y": case "@":
5856						chars += "0123456789";
5857						break;
5858					case "D": case "M":
5859						return null; // Accept anything
5860					case "'":
5861						if ( lookAhead( "'" ) ) {
5862							chars += "'";
5863						} else {
5864							literal = true;
5865						}
5866						break;
5867					default:
5868						chars += format.charAt( iFormat );
5869				}
5870			}
5871		}
5872		return chars;
5873	},
5874
5875	/* Get a setting value, defaulting if necessary. */
5876	_get: function( inst, name ) {
5877		return inst.settings[ name ] !== undefined ?
5878			inst.settings[ name ] : this._defaults[ name ];
5879	},
5880
5881	/* Parse existing date and initialise date picker. */
5882	_setDateFromField: function( inst, noDefault ) {
5883		if ( inst.input.val() === inst.lastVal ) {
5884			return;
5885		}
5886
5887		var dateFormat = this._get( inst, "dateFormat" ),
5888			dates = inst.lastVal = inst.input ? inst.input.val() : null,
5889			defaultDate = this._getDefaultDate( inst ),
5890			date = defaultDate,
5891			settings = this._getFormatConfig( inst );
5892
5893		try {
5894			date = this.parseDate( dateFormat, dates, settings ) || defaultDate;
5895		} catch ( event ) {
5896			dates = ( noDefault ? "" : dates );
5897		}
5898		inst.selectedDay = date.getDate();
5899		inst.drawMonth = inst.selectedMonth = date.getMonth();
5900		inst.drawYear = inst.selectedYear = date.getFullYear();
5901		inst.currentDay = ( dates ? date.getDate() : 0 );
5902		inst.currentMonth = ( dates ? date.getMonth() : 0 );
5903		inst.currentYear = ( dates ? date.getFullYear() : 0 );
5904		this._adjustInstDate( inst );
5905	},
5906
5907	/* Retrieve the default date shown on opening. */
5908	_getDefaultDate: function( inst ) {
5909		return this._restrictMinMax( inst,
5910			this._determineDate( inst, this._get( inst, "defaultDate" ), new Date() ) );
5911	},
5912
5913	/* A date may be specified as an exact value or a relative one. */
5914	_determineDate: function( inst, date, defaultDate ) {
5915		var offsetNumeric = function( offset ) {
5916				var date = new Date();
5917				date.setDate( date.getDate() + offset );
5918				return date;
5919			},
5920			offsetString = function( offset ) {
5921				try {
5922					return $.datepicker.parseDate( $.datepicker._get( inst, "dateFormat" ),
5923						offset, $.datepicker._getFormatConfig( inst ) );
5924				}
5925				catch ( e ) {
5926
5927					// Ignore
5928				}
5929
5930				var date = ( offset.toLowerCase().match( /^c/ ) ?
5931					$.datepicker._getDate( inst ) : null ) || new Date(),
5932					year = date.getFullYear(),
5933					month = date.getMonth(),
5934					day = date.getDate(),
5935					pattern = /([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,
5936					matches = pattern.exec( offset );
5937
5938				while ( matches ) {
5939					switch ( matches[ 2 ] || "d" ) {
5940						case "d" : case "D" :
5941							day += parseInt( matches[ 1 ], 10 ); break;
5942						case "w" : case "W" :
5943							day += parseInt( matches[ 1 ], 10 ) * 7; break;
5944						case "m" : case "M" :
5945							month += parseInt( matches[ 1 ], 10 );
5946							day = Math.min( day, $.datepicker._getDaysInMonth( year, month ) );
5947							break;
5948						case "y": case "Y" :
5949							year += parseInt( matches[ 1 ], 10 );
5950							day = Math.min( day, $.datepicker._getDaysInMonth( year, month ) );
5951							break;
5952					}
5953					matches = pattern.exec( offset );
5954				}
5955				return new Date( year, month, day );
5956			},
5957			newDate = ( date == null || date === "" ? defaultDate : ( typeof date === "string" ? offsetString( date ) :
5958				( typeof date === "number" ? ( isNaN( date ) ? defaultDate : offsetNumeric( date ) ) : new Date( date.getTime() ) ) ) );
5959
5960		newDate = ( newDate && newDate.toString() === "Invalid Date" ? defaultDate : newDate );
5961		if ( newDate ) {
5962			newDate.setHours( 0 );
5963			newDate.setMinutes( 0 );
5964			newDate.setSeconds( 0 );
5965			newDate.setMilliseconds( 0 );
5966		}
5967		return this._daylightSavingAdjust( newDate );
5968	},
5969
5970	/* Handle switch to/from daylight saving.
5971	 * Hours may be non-zero on daylight saving cut-over:
5972	 * > 12 when midnight changeover, but then cannot generate
5973	 * midnight datetime, so jump to 1AM, otherwise reset.
5974	 * @param  date  (Date) the date to check
5975	 * @return  (Date) the corrected date
5976	 */
5977	_daylightSavingAdjust: function( date ) {
5978		if ( !date ) {
5979			return null;
5980		}
5981		date.setHours( date.getHours() > 12 ? date.getHours() + 2 : 0 );
5982		return date;
5983	},
5984
5985	/* Set the date(s) directly. */
5986	_setDate: function( inst, date, noChange ) {
5987		var clear = !date,
5988			origMonth = inst.selectedMonth,
5989			origYear = inst.selectedYear,
5990			newDate = this._restrictMinMax( inst, this._determineDate( inst, date, new Date() ) );
5991
5992		inst.selectedDay = inst.currentDay = newDate.getDate();
5993		inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();
5994		inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();
5995		if ( ( origMonth !== inst.selectedMonth || origYear !== inst.selectedYear ) && !noChange ) {
5996			this._notifyChange( inst );
5997		}
5998		this._adjustInstDate( inst );
5999		if ( inst.input ) {
6000			inst.input.val( clear ? "" : this._formatDate( inst ) );
6001		}
6002	},
6003
6004	/* Retrieve the date(s) directly. */
6005	_getDate: function( inst ) {
6006		var startDate = ( !inst.currentYear || ( inst.input && inst.input.val() === "" ) ? null :
6007			this._daylightSavingAdjust( new Date(
6008			inst.currentYear, inst.currentMonth, inst.currentDay ) ) );
6009			return startDate;
6010	},
6011
6012	/* Attach the onxxx handlers.  These are declared statically so
6013	 * they work with static code transformers like Caja.
6014	 */
6015	_attachHandlers: function( inst ) {
6016		var stepMonths = this._get( inst, "stepMonths" ),
6017			id = "#" + inst.id.replace( /\\\\/g, "\\" );
6018		inst.dpDiv.find( "[data-handler]" ).map( function() {
6019			var handler = {
6020				prev: function() {
6021					$.datepicker._adjustDate( id, -stepMonths, "M" );
6022				},
6023				next: function() {
6024					$.datepicker._adjustDate( id, +stepMonths, "M" );
6025				},
6026				hide: function() {
6027					$.datepicker._hideDatepicker();
6028				},
6029				today: function() {
6030					$.datepicker._gotoToday( id );
6031				},
6032				selectDay: function() {
6033					$.datepicker._selectDay( id, +this.getAttribute( "data-month" ), +this.getAttribute( "data-year" ), this );
6034					return false;
6035				},
6036				selectMonth: function() {
6037					$.datepicker._selectMonthYear( id, this, "M" );
6038					return false;
6039				},
6040				selectYear: function() {
6041					$.datepicker._selectMonthYear( id, this, "Y" );
6042					return false;
6043				}
6044			};
6045			$( this ).on( this.getAttribute( "data-event" ), handler[ this.getAttribute( "data-handler" ) ] );
6046		} );
6047	},
6048
6049	/* Generate the HTML for the current state of the date picker. */
6050	_generateHTML: function( inst ) {
6051		var maxDraw, prevText, prev, nextText, next, currentText, gotoDate,
6052			controls, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin,
6053			monthNames, monthNamesShort, beforeShowDay, showOtherMonths,
6054			selectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate,
6055			cornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows,
6056			printDate, dRow, tbody, daySettings, otherMonth, unselectable,
6057			tempDate = new Date(),
6058			today = this._daylightSavingAdjust(
6059				new Date( tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate() ) ), // clear time
6060			isRTL = this._get( inst, "isRTL" ),
6061			showButtonPanel = this._get( inst, "showButtonPanel" ),
6062			hideIfNoPrevNext = this._get( inst, "hideIfNoPrevNext" ),
6063			navigationAsDateFormat = this._get( inst, "navigationAsDateFormat" ),
6064			numMonths = this._getNumberOfMonths( inst ),
6065			showCurrentAtPos = this._get( inst, "showCurrentAtPos" ),
6066			stepMonths = this._get( inst, "stepMonths" ),
6067			isMultiMonth = ( numMonths[ 0 ] !== 1 || numMonths[ 1 ] !== 1 ),
6068			currentDate = this._daylightSavingAdjust( ( !inst.currentDay ? new Date( 9999, 9, 9 ) :
6069				new Date( inst.currentYear, inst.currentMonth, inst.currentDay ) ) ),
6070			minDate = this._getMinMaxDate( inst, "min" ),
6071			maxDate = this._getMinMaxDate( inst, "max" ),
6072			drawMonth = inst.drawMonth - showCurrentAtPos,
6073			drawYear = inst.drawYear;
6074
6075		if ( drawMonth < 0 ) {
6076			drawMonth += 12;
6077			drawYear--;
6078		}
6079		if ( maxDate ) {
6080			maxDraw = this._daylightSavingAdjust( new Date( maxDate.getFullYear(),
6081				maxDate.getMonth() - ( numMonths[ 0 ] * numMonths[ 1 ] ) + 1, maxDate.getDate() ) );
6082			maxDraw = ( minDate && maxDraw < minDate ? minDate : maxDraw );
6083			while ( this._daylightSavingAdjust( new Date( drawYear, drawMonth, 1 ) ) > maxDraw ) {
6084				drawMonth--;
6085				if ( drawMonth < 0 ) {
6086					drawMonth = 11;
6087					drawYear--;
6088				}
6089			}
6090		}
6091		inst.drawMonth = drawMonth;
6092		inst.drawYear = drawYear;
6093
6094		prevText = this._get( inst, "prevText" );
6095		prevText = ( !navigationAsDateFormat ? prevText : this.formatDate( prevText,
6096			this._daylightSavingAdjust( new Date( drawYear, drawMonth - stepMonths, 1 ) ),
6097			this._getFormatConfig( inst ) ) );
6098
6099		prev = ( this._canAdjustMonth( inst, -1, drawYear, drawMonth ) ?
6100			"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click'" +
6101			" title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w" ) + "'>" + prevText + "</span></a>" :
6102			( hideIfNoPrevNext ? "" : "<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w" ) + "'>" + prevText + "</span></a>" ) );
6103
6104		nextText = this._get( inst, "nextText" );
6105		nextText = ( !navigationAsDateFormat ? nextText : this.formatDate( nextText,
6106			this._daylightSavingAdjust( new Date( drawYear, drawMonth + stepMonths, 1 ) ),
6107			this._getFormatConfig( inst ) ) );
6108
6109		next = ( this._canAdjustMonth( inst, +1, drawYear, drawMonth ) ?
6110			"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click'" +
6111			" title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e" ) + "'>" + nextText + "</span></a>" :
6112			( hideIfNoPrevNext ? "" : "<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e" ) + "'>" + nextText + "</span></a>" ) );
6113
6114		currentText = this._get( inst, "currentText" );
6115		gotoDate = ( this._get( inst, "gotoCurrent" ) && inst.currentDay ? currentDate : today );
6116		currentText = ( !navigationAsDateFormat ? currentText :
6117			this.formatDate( currentText, gotoDate, this._getFormatConfig( inst ) ) );
6118
6119		controls = ( !inst.inline ? "<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>" +
6120			this._get( inst, "closeText" ) + "</button>" : "" );
6121
6122		buttonPanel = ( showButtonPanel ) ? "<div class='ui-datepicker-buttonpane ui-widget-content'>" + ( isRTL ? controls : "" ) +
6123			( this._isInRange( inst, gotoDate ) ? "<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'" +
6124			">" + currentText + "</button>" : "" ) + ( isRTL ? "" : controls ) + "</div>" : "";
6125
6126		firstDay = parseInt( this._get( inst, "firstDay" ), 10 );
6127		firstDay = ( isNaN( firstDay ) ? 0 : firstDay );
6128
6129		showWeek = this._get( inst, "showWeek" );
6130		dayNames = this._get( inst, "dayNames" );
6131		dayNamesMin = this._get( inst, "dayNamesMin" );
6132		monthNames = this._get( inst, "monthNames" );
6133		monthNamesShort = this._get( inst, "monthNamesShort" );
6134		beforeShowDay = this._get( inst, "beforeShowDay" );
6135		showOtherMonths = this._get( inst, "showOtherMonths" );
6136		selectOtherMonths = this._get( inst, "selectOtherMonths" );
6137		defaultDate = this._getDefaultDate( inst );
6138		html = "";
6139
6140		for ( row = 0; row < numMonths[ 0 ]; row++ ) {
6141			group = "";
6142			this.maxRows = 4;
6143			for ( col = 0; col < numMonths[ 1 ]; col++ ) {
6144				selectedDate = this._daylightSavingAdjust( new Date( drawYear, drawMonth, inst.selectedDay ) );
6145				cornerClass = " ui-corner-all";
6146				calender = "";
6147				if ( isMultiMonth ) {
6148					calender += "<div class='ui-datepicker-group";
6149					if ( numMonths[ 1 ] > 1 ) {
6150						switch ( col ) {
6151							case 0: calender += " ui-datepicker-group-first";
6152								cornerClass = " ui-corner-" + ( isRTL ? "right" : "left" ); break;
6153							case numMonths[ 1 ] - 1: calender += " ui-datepicker-group-last";
6154								cornerClass = " ui-corner-" + ( isRTL ? "left" : "right" ); break;
6155							default: calender += " ui-datepicker-group-middle"; cornerClass = ""; break;
6156						}
6157					}
6158					calender += "'>";
6159				}
6160				calender += "<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix" + cornerClass + "'>" +
6161					( /all|left/.test( cornerClass ) && row === 0 ? ( isRTL ? next : prev ) : "" ) +
6162					( /all|right/.test( cornerClass ) && row === 0 ? ( isRTL ? prev : next ) : "" ) +
6163					this._generateMonthYearHeader( inst, drawMonth, drawYear, minDate, maxDate,
6164					row > 0 || col > 0, monthNames, monthNamesShort ) + // draw month headers
6165					"</div><table class='ui-datepicker-calendar'><thead>" +
6166					"<tr>";
6167				thead = ( showWeek ? "<th class='ui-datepicker-week-col'>" + this._get( inst, "weekHeader" ) + "</th>" : "" );
6168				for ( dow = 0; dow < 7; dow++ ) { // days of the week
6169					day = ( dow + firstDay ) % 7;
6170					thead += "<th scope='col'" + ( ( dow + firstDay + 6 ) % 7 >= 5 ? " class='ui-datepicker-week-end'" : "" ) + ">" +
6171						"<span title='" + dayNames[ day ] + "'>" + dayNamesMin[ day ] + "</span></th>";
6172				}
6173				calender += thead + "</tr></thead><tbody>";
6174				daysInMonth = this._getDaysInMonth( drawYear, drawMonth );
6175				if ( drawYear === inst.selectedYear && drawMonth === inst.selectedMonth ) {
6176					inst.selectedDay = Math.min( inst.selectedDay, daysInMonth );
6177				}
6178				leadDays = ( this._getFirstDayOfMonth( drawYear, drawMonth ) - firstDay + 7 ) % 7;
6179				curRows = Math.ceil( ( leadDays + daysInMonth ) / 7 ); // calculate the number of rows to generate
6180				numRows = ( isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows ); //If multiple months, use the higher number of rows (see #7043)
6181				this.maxRows = numRows;
6182				printDate = this._daylightSavingAdjust( new Date( drawYear, drawMonth, 1 - leadDays ) );
6183				for ( dRow = 0; dRow < numRows; dRow++ ) { // create date picker rows
6184					calender += "<tr>";
6185					tbody = ( !showWeek ? "" : "<td class='ui-datepicker-week-col'>" +
6186						this._get( inst, "calculateWeek" )( printDate ) + "</td>" );
6187					for ( dow = 0; dow < 7; dow++ ) { // create date picker days
6188						daySettings = ( beforeShowDay ?
6189							beforeShowDay.apply( ( inst.input ? inst.input[ 0 ] : null ), [ printDate ] ) : [ true, "" ] );
6190						otherMonth = ( printDate.getMonth() !== drawMonth );
6191						unselectable = ( otherMonth && !selectOtherMonths ) || !daySettings[ 0 ] ||
6192							( minDate && printDate < minDate ) || ( maxDate && printDate > maxDate );
6193						tbody += "<td class='" +
6194							( ( dow + firstDay + 6 ) % 7 >= 5 ? " ui-datepicker-week-end" : "" ) + // highlight weekends
6195							( otherMonth ? " ui-datepicker-other-month" : "" ) + // highlight days from other months
6196							( ( printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent ) || // user pressed key
6197							( defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime() ) ?
6198
6199							// or defaultDate is current printedDate and defaultDate is selectedDate
6200							" " + this._dayOverClass : "" ) + // highlight selected day
6201							( unselectable ? " " + this._unselectableClass + " ui-state-disabled" : "" ) +  // highlight unselectable days
6202							( otherMonth && !showOtherMonths ? "" : " " + daySettings[ 1 ] + // highlight custom dates
6203							( printDate.getTime() === currentDate.getTime() ? " " + this._currentClass : "" ) + // highlight selected day
6204							( printDate.getTime() === today.getTime() ? " ui-datepicker-today" : "" ) ) + "'" + // highlight today (if different)
6205							( ( !otherMonth || showOtherMonths ) && daySettings[ 2 ] ? " title='" + daySettings[ 2 ].replace( /'/g, "&#39;" ) + "'" : "" ) + // cell title
6206							( unselectable ? "" : " data-handler='selectDay' data-event='click' data-month='" + printDate.getMonth() + "' data-year='" + printDate.getFullYear() + "'" ) + ">" + // actions
6207							( otherMonth && !showOtherMonths ? "&#xa0;" : // display for other months
6208							( unselectable ? "<span class='ui-state-default'>" + printDate.getDate() + "</span>" : "<a class='ui-state-default" +
6209							( printDate.getTime() === today.getTime() ? " ui-state-highlight" : "" ) +
6210							( printDate.getTime() === currentDate.getTime() ? " ui-state-active" : "" ) + // highlight selected day
6211							( otherMonth ? " ui-priority-secondary" : "" ) + // distinguish dates from other months
6212							"' href='#'>" + printDate.getDate() + "</a>" ) ) + "</td>"; // display selectable date
6213						printDate.setDate( printDate.getDate() + 1 );
6214						printDate = this._daylightSavingAdjust( printDate );
6215					}
6216					calender += tbody + "</tr>";
6217				}
6218				drawMonth++;
6219				if ( drawMonth > 11 ) {
6220					drawMonth = 0;
6221					drawYear++;
6222				}
6223				calender += "</tbody></table>" + ( isMultiMonth ? "</div>" +
6224							( ( numMonths[ 0 ] > 0 && col === numMonths[ 1 ] - 1 ) ? "<div class='ui-datepicker-row-break'></div>" : "" ) : "" );
6225				group += calender;
6226			}
6227			html += group;
6228		}
6229		html += buttonPanel;
6230		inst._keyEvent = false;
6231		return html;
6232	},
6233
6234	/* Generate the month and year header. */
6235	_generateMonthYearHeader: function( inst, drawMonth, drawYear, minDate, maxDate,
6236			secondary, monthNames, monthNamesShort ) {
6237
6238		var inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear,
6239			changeMonth = this._get( inst, "changeMonth" ),
6240			changeYear = this._get( inst, "changeYear" ),
6241			showMonthAfterYear = this._get( inst, "showMonthAfterYear" ),
6242			html = "<div class='ui-datepicker-title'>",
6243			monthHtml = "";
6244
6245		// Month selection
6246		if ( secondary || !changeMonth ) {
6247			monthHtml += "<span class='ui-datepicker-month'>" + monthNames[ drawMonth ] + "</span>";
6248		} else {
6249			inMinYear = ( minDate && minDate.getFullYear() === drawYear );
6250			inMaxYear = ( maxDate && maxDate.getFullYear() === drawYear );
6251			monthHtml += "<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>";
6252			for ( month = 0; month < 12; month++ ) {
6253				if ( ( !inMinYear || month >= minDate.getMonth() ) && ( !inMaxYear || month <= maxDate.getMonth() ) ) {
6254					monthHtml += "<option value='" + month + "'" +
6255						( month === drawMonth ? " selected='selected'" : "" ) +
6256						">" + monthNamesShort[ month ] + "</option>";
6257				}
6258			}
6259			monthHtml += "</select>";
6260		}
6261
6262		if ( !showMonthAfterYear ) {
6263			html += monthHtml + ( secondary || !( changeMonth && changeYear ) ? "&#xa0;" : "" );
6264		}
6265
6266		// Year selection
6267		if ( !inst.yearshtml ) {
6268			inst.yearshtml = "";
6269			if ( secondary || !changeYear ) {
6270				html += "<span class='ui-datepicker-year'>" + drawYear + "</span>";
6271			} else {
6272
6273				// determine range of years to display
6274				years = this._get( inst, "yearRange" ).split( ":" );
6275				thisYear = new Date().getFullYear();
6276				determineYear = function( value ) {
6277					var year = ( value.match( /c[+\-].*/ ) ? drawYear + parseInt( value.substring( 1 ), 10 ) :
6278						( value.match( /[+\-].*/ ) ? thisYear + parseInt( value, 10 ) :
6279						parseInt( value, 10 ) ) );
6280					return ( isNaN( year ) ? thisYear : year );
6281				};
6282				year = determineYear( years[ 0 ] );
6283				endYear = Math.max( year, determineYear( years[ 1 ] || "" ) );
6284				year = ( minDate ? Math.max( year, minDate.getFullYear() ) : year );
6285				endYear = ( maxDate ? Math.min( endYear, maxDate.getFullYear() ) : endYear );
6286				inst.yearshtml += "<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";
6287				for ( ; year <= endYear; year++ ) {
6288					inst.yearshtml += "<option value='" + year + "'" +
6289						( year === drawYear ? " selected='selected'" : "" ) +
6290						">" + year + "</option>";
6291				}
6292				inst.yearshtml += "</select>";
6293
6294				html += inst.yearshtml;
6295				inst.yearshtml = null;
6296			}
6297		}
6298
6299		html += this._get( inst, "yearSuffix" );
6300		if ( showMonthAfterYear ) {
6301			html += ( secondary || !( changeMonth && changeYear ) ? "&#xa0;" : "" ) + monthHtml;
6302		}
6303		html += "</div>"; // Close datepicker_header
6304		return html;
6305	},
6306
6307	/* Adjust one of the date sub-fields. */
6308	_adjustInstDate: function( inst, offset, period ) {
6309		var year = inst.selectedYear + ( period === "Y" ? offset : 0 ),
6310			month = inst.selectedMonth + ( period === "M" ? offset : 0 ),
6311			day = Math.min( inst.selectedDay, this._getDaysInMonth( year, month ) ) + ( period === "D" ? offset : 0 ),
6312			date = this._restrictMinMax( inst, this._daylightSavingAdjust( new Date( year, month, day ) ) );
6313
6314		inst.selectedDay = date.getDate();
6315		inst.drawMonth = inst.selectedMonth = date.getMonth();
6316		inst.drawYear = inst.selectedYear = date.getFullYear();
6317		if ( period === "M" || period === "Y" ) {
6318			this._notifyChange( inst );
6319		}
6320	},
6321
6322	/* Ensure a date is within any min/max bounds. */
6323	_restrictMinMax: function( inst, date ) {
6324		var minDate = this._getMinMaxDate( inst, "min" ),
6325			maxDate = this._getMinMaxDate( inst, "max" ),
6326			newDate = ( minDate && date < minDate ? minDate : date );
6327		return ( maxDate && newDate > maxDate ? maxDate : newDate );
6328	},
6329
6330	/* Notify change of month/year. */
6331	_notifyChange: function( inst ) {
6332		var onChange = this._get( inst, "onChangeMonthYear" );
6333		if ( onChange ) {
6334			onChange.apply( ( inst.input ? inst.input[ 0 ] : null ),
6335				[ inst.selectedYear, inst.selectedMonth + 1, inst ] );
6336		}
6337	},
6338
6339	/* Determine the number of months to show. */
6340	_getNumberOfMonths: function( inst ) {
6341		var numMonths = this._get( inst, "numberOfMonths" );
6342		return ( numMonths == null ? [ 1, 1 ] : ( typeof numMonths === "number" ? [ 1, numMonths ] : numMonths ) );
6343	},
6344
6345	/* Determine the current maximum date - ensure no time components are set. */
6346	_getMinMaxDate: function( inst, minMax ) {
6347		return this._determineDate( inst, this._get( inst, minMax + "Date" ), null );
6348	},
6349
6350	/* Find the number of days in a given month. */
6351	_getDaysInMonth: function( year, month ) {
6352		return 32 - this._daylightSavingAdjust( new Date( year, month, 32 ) ).getDate();
6353	},
6354
6355	/* Find the day of the week of the first of a month. */
6356	_getFirstDayOfMonth: function( year, month ) {
6357		return new Date( year, month, 1 ).getDay();
6358	},
6359
6360	/* Determines if we should allow a "next/prev" month display change. */
6361	_canAdjustMonth: function( inst, offset, curYear, curMonth ) {
6362		var numMonths = this._getNumberOfMonths( inst ),
6363			date = this._daylightSavingAdjust( new Date( curYear,
6364			curMonth + ( offset < 0 ? offset : numMonths[ 0 ] * numMonths[ 1 ] ), 1 ) );
6365
6366		if ( offset < 0 ) {
6367			date.setDate( this._getDaysInMonth( date.getFullYear(), date.getMonth() ) );
6368		}
6369		return this._isInRange( inst, date );
6370	},
6371
6372	/* Is the given date in the accepted range? */
6373	_isInRange: function( inst, date ) {
6374		var yearSplit, currentYear,
6375			minDate = this._getMinMaxDate( inst, "min" ),
6376			maxDate = this._getMinMaxDate( inst, "max" ),
6377			minYear = null,
6378			maxYear = null,
6379			years = this._get( inst, "yearRange" );
6380			if ( years ) {
6381				yearSplit = years.split( ":" );
6382				currentYear = new Date().getFullYear();
6383				minYear = parseInt( yearSplit[ 0 ], 10 );
6384				maxYear = parseInt( yearSplit[ 1 ], 10 );
6385				if ( yearSplit[ 0 ].match( /[+\-].*/ ) ) {
6386					minYear += currentYear;
6387				}
6388				if ( yearSplit[ 1 ].match( /[+\-].*/ ) ) {
6389					maxYear += currentYear;
6390				}
6391			}
6392
6393		return ( ( !minDate || date.getTime() >= minDate.getTime() ) &&
6394			( !maxDate || date.getTime() <= maxDate.getTime() ) &&
6395			( !minYear || date.getFullYear() >= minYear ) &&
6396			( !maxYear || date.getFullYear() <= maxYear ) );
6397	},
6398
6399	/* Provide the configuration settings for formatting/parsing. */
6400	_getFormatConfig: function( inst ) {
6401		var shortYearCutoff = this._get( inst, "shortYearCutoff" );
6402		shortYearCutoff = ( typeof shortYearCutoff !== "string" ? shortYearCutoff :
6403			new Date().getFullYear() % 100 + parseInt( shortYearCutoff, 10 ) );
6404		return { shortYearCutoff: shortYearCutoff,
6405			dayNamesShort: this._get( inst, "dayNamesShort" ), dayNames: this._get( inst, "dayNames" ),
6406			monthNamesShort: this._get( inst, "monthNamesShort" ), monthNames: this._get( inst, "monthNames" ) };
6407	},
6408
6409	/* Format the given date for display. */
6410	_formatDate: function( inst, day, month, year ) {
6411		if ( !day ) {
6412			inst.currentDay = inst.selectedDay;
6413			inst.currentMonth = inst.selectedMonth;
6414			inst.currentYear = inst.selectedYear;
6415		}
6416		var date = ( day ? ( typeof day === "object" ? day :
6417			this._daylightSavingAdjust( new Date( year, month, day ) ) ) :
6418			this._daylightSavingAdjust( new Date( inst.currentYear, inst.currentMonth, inst.currentDay ) ) );
6419		return this.formatDate( this._get( inst, "dateFormat" ), date, this._getFormatConfig( inst ) );
6420	}
6421} );
6422
6423/*
6424 * Bind hover events for datepicker elements.
6425 * Done via delegate so the binding only occurs once in the lifetime of the parent div.
6426 * Global datepicker_instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.
6427 */
6428function datepicker_bindHover( dpDiv ) {
6429	var selector = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";
6430	return dpDiv.on( "mouseout", selector, function() {
6431			$( this ).removeClass( "ui-state-hover" );
6432			if ( this.className.indexOf( "ui-datepicker-prev" ) !== -1 ) {
6433				$( this ).removeClass( "ui-datepicker-prev-hover" );
6434			}
6435			if ( this.className.indexOf( "ui-datepicker-next" ) !== -1 ) {
6436				$( this ).removeClass( "ui-datepicker-next-hover" );
6437			}
6438		} )
6439		.on( "mouseover", selector, datepicker_handleMouseover );
6440}
6441
6442function datepicker_handleMouseover() {
6443	if ( !$.datepicker._isDisabledDatepicker( datepicker_instActive.inline ? datepicker_instActive.dpDiv.parent()[ 0 ] : datepicker_instActive.input[ 0 ] ) ) {
6444		$( this ).parents( ".ui-datepicker-calendar" ).find( "a" ).removeClass( "ui-state-hover" );
6445		$( this ).addClass( "ui-state-hover" );
6446		if ( this.className.indexOf( "ui-datepicker-prev" ) !== -1 ) {
6447			$( this ).addClass( "ui-datepicker-prev-hover" );
6448		}
6449		if ( this.className.indexOf( "ui-datepicker-next" ) !== -1 ) {
6450			$( this ).addClass( "ui-datepicker-next-hover" );
6451		}
6452	}
6453}
6454
6455/* jQuery extend now ignores nulls! */
6456function datepicker_extendRemove( target, props ) {
6457	$.extend( target, props );
6458	for ( var name in props ) {
6459		if ( props[ name ] == null ) {
6460			target[ name ] = props[ name ];
6461		}
6462	}
6463	return target;
6464}
6465
6466/* Invoke the datepicker functionality.
6467   @param  options  string - a command, optionally followed by additional parameters or
6468					Object - settings for attaching new datepicker functionality
6469   @return  jQuery object */
6470$.fn.datepicker = function( options ) {
6471
6472	/* Verify an empty collection wasn't passed - Fixes #6976 */
6473	if ( !this.length ) {
6474		return this;
6475	}
6476
6477	/* Initialise the date picker. */
6478	if ( !$.datepicker.initialized ) {
6479		$( document ).on( "mousedown", $.datepicker._checkExternalClick );
6480		$.datepicker.initialized = true;
6481	}
6482
6483	/* Append datepicker main container to body if not exist. */
6484	if ( $( "#" + $.datepicker._mainDivId ).length === 0 ) {
6485		$( "body" ).append( $.datepicker.dpDiv );
6486	}
6487
6488	var otherArgs = Array.prototype.slice.call( arguments, 1 );
6489	if ( typeof options === "string" && ( options === "isDisabled" || options === "getDate" || options === "widget" ) ) {
6490		return $.datepicker[ "_" + options + "Datepicker" ].
6491			apply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) );
6492	}
6493	if ( options === "option" && arguments.length === 2 && typeof arguments[ 1 ] === "string" ) {
6494		return $.datepicker[ "_" + options + "Datepicker" ].
6495			apply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) );
6496	}
6497	return this.each( function() {
6498		typeof options === "string" ?
6499			$.datepicker[ "_" + options + "Datepicker" ].
6500				apply( $.datepicker, [ this ].concat( otherArgs ) ) :
6501			$.datepicker._attachDatepicker( this, options );
6502	} );
6503};
6504
6505$.datepicker = new Datepicker(); // singleton instance
6506$.datepicker.initialized = false;
6507$.datepicker.uuid = new Date().getTime();
6508$.datepicker.version = "1.12.1";
6509
6510var widgetsDatepicker = $.datepicker;
6511
6512
6513
6514
6515}));
6516function toggleDropdown (e) {
6517	const _d = $(e.target).closest('.cmp-leftnav .dropdown'),
6518	_m = $('.dropdown-menu', _d);
6519	setTimeout(function(){
6520        var shouldOpen;
6521        if(e.currentTarget.classList.contains('active-link')){
6522            shouldOpen = e.type !== 'click';
6523        }else{
6524        shouldOpen = e.type !== 'click' && _d.is(':hover');
6525        }
6526		_m.toggleClass('show', shouldOpen);
6527		_d.toggleClass('show', shouldOpen);
6528		$('[data-toggle="dropdown"]', _d).attr('aria-expanded', shouldOpen);
6529	}, e.type === 'mouseleave' ? 300 : 0);
6530}
6531
6532
6533
6534
6535$('.cmp-leftnav .navbar-toggler').on('click', function(){
6536	$('.cmp-leftnav .nav-item .dropdown.active-link').toggleClass('show');
6537	$(this).parent().find('.dropdown.active-link').find('.dropdown-menu').toggleClass('show');
6538
6539	if ($(this).hasClass('collapsed')){
6540		$('html,body').addClass('menuoverflow');
6541	}
6542	else
6543	{ 
6544		$('html,body').removeClass('menuoverflow');
6545	}
6546});
6547
6548var calMenu = function(){
6549		if(!window.matchMedia('(min-width: 992px)').matches){
6550			var headerHeight = $('.header-variation-leftnav').outerHeight(true);
6551			var headerWrapper = $('.header-variation-leftnav .header-utilitynav-wrapper').outerHeight(true);
6552			var headerCenter = headerWrapper/2 +17;
6553			var togglePosition = headerHeight - headerCenter;
6554			var toggleButton = $('.cmp-leftnav .navbar-toggler');
6555			var leftnavMenu = $('.cmp-leftnav .navbar-collapse');
6556			if ($('.header-variation-leftnav').hasClass('sticky')){
6557				toggleButton.css('top',togglePosition-5+'px');
6558				leftnavMenu.css('top',headerHeight-5+'px');
6559			}
6560			
6561			else{
6562				toggleButton.css('top',togglePosition+'px');
6563				leftnavMenu.css('top',headerHeight+'px');
6564			}	
6565
6566	}
6567}
6568
6569$(document).ready(function() {
6570 calMenu();
6571 if(window.matchMedia('(min-width: 992px)').matches){
6572	 $('.cmp-leftnav .nav-item .dropdown.active-link').find('.dropdown-menu').toggleClass('show');
6573     $('body').on('mouseenter mouseleave','.cmp-leftnav .dropdown',toggleDropdown);
6574     $('body').on('click', '.cmp-leftnav .dropdown-menu a', toggleDropdown);
6575 	}
6576});
6577$(window).on('scroll resize touchmove', function () {
6578	setTimeout(function(){
6579		calMenu();
6580	},300);
6581
6582});
6583
6584/*!
6585 * @fileOverview TouchSwipe - jQuery Plugin
6586 * @version 1.6.18
6587 *
6588 * @author Matt Bryson http://www.github.com/mattbryson
6589 * @see https://github.com/mattbryson/TouchSwipe-Jquery-Plugin
6590 * @see http://labs.rampinteractive.co.uk/touchSwipe/
6591 * @see http://plugins.jquery.com/project/touchSwipe
6592 * @license
6593 * Copyright (c) 2010-2015 Matt Bryson
6594 * Dual licensed under the MIT or GPL Version 2 licenses.
6595 *
6596 */
6597
6598/*
6599 *
6600 * Changelog
6601 * $Date: 2010-12-12 (Wed, 12 Dec 2010) $
6602 * $version: 1.0.0
6603 * $version: 1.0.1 - removed multibyte comments
6604 *
6605 * $Date: 2011-21-02 (Mon, 21 Feb 2011) $
6606 * $version: 1.1.0 	- added allowPageScroll property to allow swiping and scrolling of page
6607 *					- changed handler signatures so one handler can be used for multiple events
6608 * $Date: 2011-23-02 (Wed, 23 Feb 2011) $
6609 * $version: 1.2.0 	- added click handler. This is fired if the user simply clicks and does not swipe. The event object and click target are passed to handler.
6610 *					- If you use the http://code.google.com/p/jquery-ui-for-ipad-and-iphone/ plugin, you can also assign jQuery mouse events to children of a touchSwipe object.
6611 * $version: 1.2.1 	- removed console log!
6612 *
6613 * $version: 1.2.2 	- Fixed bug where scope was not preserved in callback methods.
6614 *
6615 * $Date: 2011-28-04 (Thurs, 28 April 2011) $
6616 * $version: 1.2.4 	- Changed licence terms to be MIT or GPL inline with jQuery. Added check for support of touch events to stop non compatible browsers erroring.
6617 *
6618 * $Date: 2011-27-09 (Tues, 27 September 2011) $
6619 * $version: 1.2.5 	- Added support for testing swipes with mouse on desktop browser (thanks to https://github.com/joelhy)
6620 *
6621 * $Date: 2012-14-05 (Mon, 14 May 2012) $
6622 * $version: 1.2.6 	- Added timeThreshold between start and end touch, so user can ignore slow swipes (thanks to Mark Chase). Default is null, all swipes are detected
6623 *
6624 * $Date: 2012-05-06 (Tues, 05 June 2012) $
6625 * $version: 1.2.7 	- Changed time threshold to have null default for backwards compatibility. Added duration param passed back in events, and refactored how time is handled.
6626 *
6627 * $Date: 2012-05-06 (Tues, 05 June 2012) $
6628 * $version: 1.2.8 	- Added the possibility to return a value like null or false in the trigger callback. In that way we can control when the touch start/move should take effect or not (simply by returning in some cases return null; or return false;) This effects the ontouchstart/ontouchmove event.
6629 *
6630 * $Date: 2012-06-06 (Wed, 06 June 2012) $
6631 * $version: 1.3.0 	- Refactored whole plugin to allow for methods to be executed, as well as exposed defaults for user override. Added 'enable', 'disable', and 'destroy' methods
6632 *
6633 * $Date: 2012-05-06 (Fri, 05 June 2012) $
6634 * $version: 1.3.1 	- Bug fixes  - bind() with false as last argument is no longer supported in jQuery 1.6, also, if you just click, the duration is now returned correctly.
6635 *
6636 * $Date: 2012-29-07 (Sun, 29 July 2012) $
6637 * $version: 1.3.2	- Added fallbackToMouseEvents option to NOT capture mouse events on non touch devices.
6638 * 			- Added "all" fingers value to the fingers property, so any combination of fingers triggers the swipe, allowing event handlers to check the finger count
6639 *
6640 * $Date: 2012-09-08 (Thurs, 9 Aug 2012) $
6641 * $version: 1.3.3	- Code tidy prep for minefied version
6642 *
6643 * $Date: 2012-04-10 (wed, 4 Oct 2012) $
6644 * $version: 1.4.0	- Added pinch support, pinchIn and pinchOut
6645 *
6646 * $Date: 2012-11-10 (Thurs, 11 Oct 2012) $
6647 * $version: 1.5.0	- Added excludedElements, a jquery selector that specifies child elements that do NOT trigger swipes. By default, this is .noSwipe
6648 *
6649 * $Date: 2012-22-10 (Mon, 22 Oct 2012) $
6650 * $version: 1.5.1	- Fixed bug with jQuery 1.8 and trailing comma in excludedElements
6651 *					- Fixed bug with IE and eventPreventDefault()
6652 * $Date: 2013-01-12 (Fri, 12 Jan 2013) $
6653 * $version: 1.6.0	- Fixed bugs with pinching, mainly when both pinch and swipe enabled, as well as adding time threshold for multifinger gestures, so releasing one finger beofre the other doesnt trigger as single finger gesture.
6654 *					- made the demo site all static local HTML pages so they can be run locally by a developer
6655 *					- added jsDoc comments and added documentation for the plugin
6656 *					- code tidy
6657 *					- added triggerOnTouchLeave property that will end the event when the user swipes off the element.
6658 * $Date: 2013-03-23 (Sat, 23 Mar 2013) $
6659 * $version: 1.6.1	- Added support for ie8 touch events
6660 * $version: 1.6.2	- Added support for events binding with on / off / bind in jQ for all callback names.
6661 *                   - Deprecated the 'click' handler in favour of tap.
6662 *                   - added cancelThreshold property
6663 *                   - added option method to update init options at runtime
6664 * $version 1.6.3    - added doubletap, longtap events and longTapThreshold, doubleTapThreshold property
6665 *
6666 * $Date: 2013-04-04 (Thurs, 04 April 2013) $
6667 * $version 1.6.4    - Fixed bug with cancelThreshold introduced in 1.6.3, where swipe status no longer fired start event, and stopped once swiping back.
6668 *
6669 * $Date: 2013-08-24 (Sat, 24 Aug 2013) $
6670 * $version 1.6.5    - Merged a few pull requests fixing various bugs, added AMD support.
6671 *
6672 * $Date: 2014-06-04 (Wed, 04 June 2014) $
6673 * $version 1.6.6 	- Merge of pull requests.
6674 *    				- IE10 touch support
6675 *    				- Only prevent default event handling on valid swipe
6676 *    				- Separate license/changelog comment
6677 *    				- Detect if the swipe is valid at the end of the touch event.
6678 *    				- Pass fingerdata to event handlers.
6679 *    				- Add 'hold' gesture
6680 *    				- Be more tolerant about the tap distance
6681 *    				- Typos and minor fixes
6682 *
6683 * $Date: 2015-22-01 (Thurs, 22 Jan 2015) $
6684 * $version 1.6.7    - Added patch from https://github.com/mattbryson/TouchSwipe-Jquery-Plugin/issues/206 to fix memory leak
6685 *
6686 * $Date: 2015-2-2 (Mon, 2 Feb 2015) $
6687 * $version 1.6.8    - Added preventDefaultEvents option to proxy events regardless.
6688 *					- Fixed issue with swipe and pinch not triggering at the same time
6689 *
6690 * $Date: 2015-9-6 (Tues, 9 June 2015) $
6691 * $version 1.6.9    - Added PR from jdalton/hybrid to fix pointer events
6692 *					- Added scrolling demo
6693 *					- Added version property to plugin
6694 *
6695 * $Date: 2015-1-10 (Wed, 1 October 2015) $
6696 * $version 1.6.10    - Added PR from beatspace to fix tap events
6697 * $version 1.6.11    - Added PRs from indri-indri ( Doc tidyup), kkirsche ( Bower tidy up ), UziTech (preventDefaultEvents fixes )
6698 *					 - Allowed setting multiple options via .swipe("options", options_hash) and more simply .swipe(options_hash) or exisitng instances
6699 * $version 1.6.12    - Fixed bug with multi finger releases above 2 not triggering events
6700 *
6701 * $Date: 2015-12-18 (Fri, 18 December 2015) $
6702 * $version 1.6.13    - Added PRs
6703 *                    - Fixed #267 allowPageScroll not working correctly
6704 * $version 1.6.14    - Fixed #220 / #248 doubletap not firing with swipes, #223 commonJS compatible
6705 * $version 1.6.15    - More bug fixes
6706 *
6707 * $Date: 2016-04-29 (Fri, 29 April 2016) $
6708 * $version 1.6.16    - Swipes with 0 distance now allow default events to trigger.  So tapping any form elements or A tags will allow default interaction, but swiping will trigger a swipe.
6709                        Removed the a, input, select etc from the excluded Children list as the 0 distance tap solves that issue.
6710* $Date: 2016-05-19  (Fri, 29 April 2016) $
6711* $version 1.6.17     - Fixed context issue when calling instance methods via $("selector").swipe("method");
6712* $version 1.6.18     - now honors fallbackToMouseEvents=false for MS Pointer events when a Mouse is used.
6713 */
6714
6715/**
6716 * See (http://jquery.com/).
6717 * @name $
6718 * @class
6719 * See the jQuery Library  (http://jquery.com/) for full details.  This just
6720 * documents the function and classes that are added to jQuery by this plug-in.
6721 */
6722
6723/**
6724 * See (http://jquery.com/)
6725 * @name fn
6726 * @class
6727 * See the jQuery Library  (http://jquery.com/) for full details.  This just
6728 * documents the function and classes that are added to jQuery by this plug-in.
6729 * @memberOf $
6730 */
6731
6732
6733(function(factory) {
6734  if (typeof define === 'function' && define.amd && define.amd.jQuery) {
6735    // AMD. Register as anonymous module.
6736    define(['jquery'], factory);
6737  } else if (typeof module !== 'undefined' && module.exports) {
6738    // CommonJS Module
6739    factory(require("jquery"));
6740  } else {
6741    // Browser globals.
6742    factory(jQuery);
6743  }
6744}(function($) {
6745  "use strict";
6746
6747  //Constants
6748  var VERSION = "1.6.18",
6749    LEFT = "left",
6750    RIGHT = "right",
6751    UP = "up",
6752    DOWN = "down",
6753    IN = "in",
6754    OUT = "out",
6755
6756    NONE = "none",
6757    AUTO = "auto",
6758
6759    SWIPE = "swipe",
6760    PINCH = "pinch",
6761    TAP = "tap",
6762    DOUBLE_TAP = "doubletap",
6763    LONG_TAP = "longtap",
6764    HOLD = "hold",
6765
6766    HORIZONTAL = "horizontal",
6767    VERTICAL = "vertical",
6768
6769    ALL_FINGERS = "all",
6770
6771    DOUBLE_TAP_THRESHOLD = 10,
6772
6773    PHASE_START = "start",
6774    PHASE_MOVE = "move",
6775    PHASE_END = "end",
6776    PHASE_CANCEL = "cancel",
6777
6778    SUPPORTS_TOUCH = 'ontouchstart' in window,
6779
6780    SUPPORTS_POINTER_IE10 = window.navigator.msPointerEnabled && !window.PointerEvent && !SUPPORTS_TOUCH,
6781
6782    SUPPORTS_POINTER = (window.PointerEvent || window.navigator.msPointerEnabled) && !SUPPORTS_TOUCH,
6783
6784    PLUGIN_NS = 'TouchSwipe';
6785
6786
6787
6788  /**
6789  * The default configuration, and available options to configure touch swipe with.
6790  * You can set the default values by updating any of the properties prior to instantiation.
6791  * @name $.fn.swipe.defaults
6792  * @namespace
6793  * @property {int} [fingers=1] The number of fingers to detect in a swipe. Any swipes that do not meet this requirement will NOT trigger swipe handlers.
6794  * @property {int} [threshold=75] The number of pixels that the user must move their finger by before it is considered a swipe.
6795  * @property {int} [cancelThreshold=null] The number of pixels that the user must move their finger back from the original swipe direction to cancel the gesture.
6796  * @property {int} [pinchThreshold=20] The number of pixels that the user must pinch their finger by before it is considered a pinch.
6797  * @property {int} [maxTimeThreshold=null] Time, in milliseconds, between touchStart and touchEnd must NOT exceed in order to be considered a swipe.
6798  * @property {int} [fingerReleaseThreshold=250] Time in milliseconds between releasing multiple fingers.  If 2 fingers are down, and are released one after the other, if they are within this threshold, it counts as a simultaneous release.
6799  * @property {int} [longTapThreshold=500] Time in milliseconds between tap and release for a long tap
6800  * @property {int} [doubleTapThreshold=200] Time in milliseconds between 2 taps to count as a double tap
6801  * @property {function} [swipe=null] A handler to catch all swipes. See {@link $.fn.swipe#event:swipe}
6802  * @property {function} [swipeLeft=null] A handler that is triggered for "left" swipes. See {@link $.fn.swipe#event:swipeLeft}
6803  * @property {function} [swipeRight=null] A handler that is triggered for "right" swipes. See {@link $.fn.swipe#event:swipeRight}
6804  * @property {function} [swipeUp=null] A handler that is triggered for "up" swipes. See {@link $.fn.swipe#event:swipeUp}
6805  * @property {function} [swipeDown=null] A handler that is triggered for "down" swipes. See {@link $.fn.swipe#event:swipeDown}
6806  * @property {function} [swipeStatus=null] A handler triggered for every phase of the swipe. See {@link $.fn.swipe#event:swipeStatus}
6807  * @property {function} [pinchIn=null] A handler triggered for pinch in events. See {@link $.fn.swipe#event:pinchIn}
6808  * @property {function} [pinchOut=null] A handler triggered for pinch out events. See {@link $.fn.swipe#event:pinchOut}
6809  * @property {function} [pinchStatus=null] A handler triggered for every phase of a pinch. See {@link $.fn.swipe#event:pinchStatus}
6810  * @property {function} [tap=null] A handler triggered when a user just taps on the item, rather than swipes it. If they do not move, tap is triggered, if they do move, it is not.
6811  * @property {function} [doubleTap=null] A handler triggered when a user double taps on the item. The delay between taps can be set with the doubleTapThreshold property. See {@link $.fn.swipe.defaults#doubleTapThreshold}
6812  * @property {function} [longTap=null] A handler triggered when a user long taps on the item. The delay between start and end can be set with the longTapThreshold property. See {@link $.fn.swipe.defaults#longTapThreshold}
6813  * @property (function) [hold=null] A handler triggered when a user reaches longTapThreshold on the item. See {@link $.fn.swipe.defaults#longTapThreshold}
6814  * @property {boolean} [triggerOnTouchEnd=true] If true, the swipe events are triggered when the touch end event is received (user releases finger).  If false, it will be triggered on reaching the threshold, and then cancel the touch event automatically.
6815  * @property {boolean} [triggerOnTouchLeave=false] If true, then when the user leaves the swipe object, the swipe will end and trigger appropriate handlers.
6816  * @property {string|undefined} [allowPageScroll='auto'] How the browser handles page scrolls when the user is swiping on a touchSwipe object. See {@link $.fn.swipe.pageScroll}.  <br/><br/>
6817  									<code>"auto"</code> : all undefined swipes will cause the page to scroll in that direction. <br/>
6818  									<code>"none"</code> : the page will not scroll when user swipes. <br/>
6819  									<code>"horizontal"</code> : will force page to scroll on horizontal swipes. <br/>
6820  									<code>"vertical"</code> : will force page to scroll on vertical swipes. <br/>
6821  * @property {boolean} [fallbackToMouseEvents=true] If true mouse events are used when run on a non touch device, false will stop swipes being triggered by mouse events on non touch devices.
6822  * @property {string} [excludedElements=".noSwipe"] A jquery selector that specifies child elements that do NOT trigger swipes. By default this excludes elements with the class .noSwipe .
6823  * @property {boolean} [preventDefaultEvents=true] by default default events are cancelled, so the page doesn't move.  You can disable this so both native events fire as well as your handlers.
vendor: 64,132 bytes, lines 6823-8690
6823
6824  */
6825  var defaults = {
6826    fingers: 1,
6827    threshold: 75,
6828    cancelThreshold: null,
6829    pinchThreshold: 20,
6830    maxTimeThreshold: null,
6831    fingerReleaseThreshold: 250,
6832    longTapThreshold: 500,
6833    doubleTapThreshold: 200,
6834    swipe: null,
6835    swipeLeft: null,
6836    swipeRight: null,
6837    swipeUp: null,
6838    swipeDown: null,
6839    swipeStatus: null,
6840    pinchIn: null,
6841    pinchOut: null,
6842    pinchStatus: null,
6843    click: null, //Deprecated since 1.6.2
6844    tap: null,
6845    doubleTap: null,
6846    longTap: null,
6847    hold: null,
6848    triggerOnTouchEnd: true,
6849    triggerOnTouchLeave: false,
6850    allowPageScroll: "auto",
6851    fallbackToMouseEvents: true,
6852    excludedElements: ".noSwipe",
6853    preventDefaultEvents: true
6854  };
6855
6856
6857
6858  /**
6859   * Applies TouchSwipe behaviour to one or more jQuery objects.
6860   * The TouchSwipe plugin can be instantiated via this method, or methods within
6861   * TouchSwipe can be executed via this method as per jQuery plugin architecture.
6862   * An existing plugin can have its options changed simply by re calling .swipe(options)
6863   * @see TouchSwipe
6864   * @class
6865   * @param {Mixed} method If the current DOMNode is a TouchSwipe object, and <code>method</code> is a TouchSwipe method, then
6866   * the <code>method</code> is executed, and any following arguments are passed to the TouchSwipe method.
6867   * If <code>method</code> is an object, then the TouchSwipe class is instantiated on the current DOMNode, passing the
6868   * configuration properties defined in the object. See TouchSwipe
6869   *
6870   */
6871  $.fn.swipe = function(method) {
6872    var $this = $(this),
6873      plugin = $this.data(PLUGIN_NS);
6874
6875    //Check if we are already instantiated and trying to execute a method
6876    if (plugin && typeof method === 'string') {
6877      if (plugin[method]) {
6878        return plugin[method].apply(plugin, Array.prototype.slice.call(arguments, 1));
6879      } else {
6880        $.error('Method ' + method + ' does not exist on jQuery.swipe');
6881      }
6882    }
6883
6884    //Else update existing plugin with new options hash
6885    else if (plugin && typeof method === 'object') {
6886      plugin['option'].apply(plugin, arguments);
6887    }
6888
6889    //Else not instantiated and trying to pass init object (or nothing)
6890    else if (!plugin && (typeof method === 'object' || !method)) {
6891      return init.apply(this, arguments);
6892    }
6893
6894    return $this;
6895  };
6896
6897  /**
6898   * The version of the plugin
6899   * @readonly
6900   */
6901  $.fn.swipe.version = VERSION;
6902
6903
6904
6905  //Expose our defaults so a user could override the plugin defaults
6906  $.fn.swipe.defaults = defaults;
6907
6908  /**
6909   * The phases that a touch event goes through.  The <code>phase</code> is passed to the event handlers.
6910   * These properties are read only, attempting to change them will not alter the values passed to the event handlers.
6911   * @namespace
6912   * @readonly
6913   * @property {string} PHASE_START Constant indicating the start phase of the touch event. Value is <code>"start"</code>.
6914   * @property {string} PHASE_MOVE Constant indicating the move phase of the touch event. Value is <code>"move"</code>.
6915   * @property {string} PHASE_END Constant indicating the end phase of the touch event. Value is <code>"end"</code>.
6916   * @property {string} PHASE_CANCEL Constant indicating the cancel phase of the touch event. Value is <code>"cancel"</code>.
6917   */
6918  $.fn.swipe.phases = {
6919    PHASE_START: PHASE_START,
6920    PHASE_MOVE: PHASE_MOVE,
6921    PHASE_END: PHASE_END,
6922    PHASE_CANCEL: PHASE_CANCEL
6923  };
6924
6925  /**
6926   * The direction constants that are passed to the event handlers.
6927   * These properties are read only, attempting to change them will not alter the values passed to the event handlers.
6928   * @namespace
6929   * @readonly
6930   * @property {string} LEFT Constant indicating the left direction. Value is <code>"left"</code>.
6931   * @property {string} RIGHT Constant indicating the right direction. Value is <code>"right"</code>.
6932   * @property {string} UP Constant indicating the up direction. Value is <code>"up"</code>.
6933   * @property {string} DOWN Constant indicating the down direction. Value is <code>"cancel"</code>.
6934   * @property {string} IN Constant indicating the in direction. Value is <code>"in"</code>.
6935   * @property {string} OUT Constant indicating the out direction. Value is <code>"out"</code>.
6936   */
6937  $.fn.swipe.directions = {
6938    LEFT: LEFT,
6939    RIGHT: RIGHT,
6940    UP: UP,
6941    DOWN: DOWN,
6942    IN: IN,
6943    OUT: OUT
6944  };
6945
6946  /**
6947   * The page scroll constants that can be used to set the value of <code>allowPageScroll</code> option
6948   * These properties are read only
6949   * @namespace
6950   * @readonly
6951   * @see $.fn.swipe.defaults#allowPageScroll
6952   * @property {string} NONE Constant indicating no page scrolling is allowed. Value is <code>"none"</code>.
6953   * @property {string} HORIZONTAL Constant indicating horizontal page scrolling is allowed. Value is <code>"horizontal"</code>.
6954   * @property {string} VERTICAL Constant indicating vertical page scrolling is allowed. Value is <code>"vertical"</code>.
6955   * @property {string} AUTO Constant indicating either horizontal or vertical will be allowed, depending on the swipe handlers registered. Value is <code>"auto"</code>.
6956   */
6957  $.fn.swipe.pageScroll = {
6958    NONE: NONE,
6959    HORIZONTAL: HORIZONTAL,
6960    VERTICAL: VERTICAL,
6961    AUTO: AUTO
6962  };
6963
6964  /**
6965   * Constants representing the number of fingers used in a swipe.  These are used to set both the value of <code>fingers</code> in the
6966   * options object, as well as the value of the <code>fingers</code> event property.
6967   * These properties are read only, attempting to change them will not alter the values passed to the event handlers.
6968   * @namespace
6969   * @readonly
6970   * @see $.fn.swipe.defaults#fingers
6971   * @property {string} ONE Constant indicating 1 finger is to be detected / was detected. Value is <code>1</code>.
6972   * @property {string} TWO Constant indicating 2 fingers are to be detected / were detected. Value is <code>2</code>.
6973   * @property {string} THREE Constant indicating 3 finger are to be detected / were detected. Value is <code>3</code>.
6974   * @property {string} FOUR Constant indicating 4 finger are to be detected / were detected. Not all devices support this. Value is <code>4</code>.
6975   * @property {string} FIVE Constant indicating 5 finger are to be detected / were detected. Not all devices support this. Value is <code>5</code>.
6976   * @property {string} ALL Constant indicating any combination of finger are to be detected.  Value is <code>"all"</code>.
6977   */
6978  $.fn.swipe.fingers = {
6979    ONE: 1,
6980    TWO: 2,
6981    THREE: 3,
6982    FOUR: 4,
6983    FIVE: 5,
6984    ALL: ALL_FINGERS
6985  };
6986
6987  /**
6988   * Initialise the plugin for each DOM element matched
6989   * This creates a new instance of the main TouchSwipe class for each DOM element, and then
6990   * saves a reference to that instance in the elements data property.
6991   * @internal
6992   */
6993  function init(options) {
6994    //Prep and extend the options
6995    if (options && (options.allowPageScroll === undefined && (options.swipe !== undefined || options.swipeStatus !== undefined))) {
6996      options.allowPageScroll = NONE;
6997    }
6998
6999    //Check for deprecated options
7000    //Ensure that any old click handlers are assigned to the new tap, unless we have a tap
7001    if (options.click !== undefined && options.tap === undefined) {
7002      options.tap = options.click;
7003    }
7004
7005    if (!options) {
7006      options = {};
7007    }
7008
7009    //pass empty object so we dont modify the defaults
7010    options = $.extend({}, $.fn.swipe.defaults, options);
7011
7012    //For each element instantiate the plugin
7013    return this.each(function() {
7014      var $this = $(this);
7015
7016      //Check we havent already initialised the plugin
7017      var plugin = $this.data(PLUGIN_NS);
7018
7019      if (!plugin) {
7020        plugin = new TouchSwipe(this, options);
7021        $this.data(PLUGIN_NS, plugin);
7022      }
7023    });
7024  }
7025
7026  /**
7027   * Main TouchSwipe Plugin Class.
7028   * Do not use this to construct your TouchSwipe object, use the jQuery plugin method $.fn.swipe(); {@link $.fn.swipe}
7029   * @private
7030   * @name TouchSwipe
7031   * @param {DOMNode} element The HTML DOM object to apply to plugin to
7032   * @param {Object} options The options to configure the plugin with.  @link {$.fn.swipe.defaults}
7033   * @see $.fh.swipe.defaults
7034   * @see $.fh.swipe
7035   * @class
7036   */
7037  function TouchSwipe(element, options) {
7038
7039    //take a local/instacne level copy of the options - should make it this.options really...
7040    var options = $.extend({}, options);
7041
7042    var useTouchEvents = (SUPPORTS_TOUCH || SUPPORTS_POINTER || !options.fallbackToMouseEvents),
7043      START_EV = useTouchEvents ? (SUPPORTS_POINTER ? (SUPPORTS_POINTER_IE10 ? 'MSPointerDown' : 'pointerdown') : 'touchstart') : 'mousedown',
7044      MOVE_EV = useTouchEvents ? (SUPPORTS_POINTER ? (SUPPORTS_POINTER_IE10 ? 'MSPointerMove' : 'pointermove') : 'touchmove') : 'mousemove',
7045      END_EV = useTouchEvents ? (SUPPORTS_POINTER ? (SUPPORTS_POINTER_IE10 ? 'MSPointerUp' : 'pointerup') : 'touchend') : 'mouseup',
7046      LEAVE_EV = useTouchEvents ? (SUPPORTS_POINTER ? 'mouseleave' : null) : 'mouseleave', //we manually detect leave on touch devices, so null event here
7047      CANCEL_EV = (SUPPORTS_POINTER ? (SUPPORTS_POINTER_IE10 ? 'MSPointerCancel' : 'pointercancel') : 'touchcancel');
7048
7049
7050
7051    //touch properties
7052    var distance = 0,
7053      direction = null,
7054      currentDirection = null,
7055      duration = 0,
7056      startTouchesDistance = 0,
7057      endTouchesDistance = 0,
7058      pinchZoom = 1,
7059      pinchDistance = 0,
7060      pinchDirection = 0,
7061      maximumsMap = null;
7062
7063
7064
7065    //jQuery wrapped element for this instance
7066    var $element = $(element);
7067
7068    //Current phase of th touch cycle
7069    var phase = "start";
7070
7071    // the current number of fingers being used.
7072    var fingerCount = 0;
7073
7074    //track mouse points / delta
7075    var fingerData = {};
7076
7077    //track times
7078    var startTime = 0,
7079      endTime = 0,
7080      previousTouchEndTime = 0,
7081      fingerCountAtRelease = 0,
7082      doubleTapStartTime = 0;
7083
7084    //Timeouts
7085    var singleTapTimeout = null,
7086      holdTimeout = null;
7087
7088    // Add gestures to all swipable areas if supported
7089    try {
7090      $element.on(START_EV, touchStart);
7091      $element.on(CANCEL_EV, touchCancel);
7092    } catch (e) {
7093      $.error('events not supported ' + START_EV + ',' + CANCEL_EV + ' on jQuery.swipe');
7094    }
7095
7096    //
7097    //Public methods
7098    //
7099
7100    /**
7101     * re-enables the swipe plugin with the previous configuration
7102     * @function
7103     * @name $.fn.swipe#enable
7104     * @return {DOMNode} The Dom element that was registered with TouchSwipe
7105     * @example $("#element").swipe("enable");
7106     */
7107    this.enable = function() {
7108      //Incase we are already enabled, clean up...
7109      this.disable();
7110      $element.on(START_EV, touchStart);
7111      $element.on(CANCEL_EV, touchCancel);
7112      return $element;
7113    };
7114
7115    /**
7116     * disables the swipe plugin
7117     * @function
7118     * @name $.fn.swipe#disable
7119     * @return {DOMNode} The Dom element that is now registered with TouchSwipe
7120     * @example $("#element").swipe("disable");
7121     */
7122    this.disable = function() {
7123      removeListeners();
7124      return $element;
7125    };
7126
7127    /**
7128     * Destroy the swipe plugin completely. To use any swipe methods, you must re initialise the plugin.
7129     * @function
7130     * @name $.fn.swipe#destroy
7131     * @example $("#element").swipe("destroy");
7132     */
7133    this.destroy = function() {
7134      removeListeners();
7135      $element.data(PLUGIN_NS, null);
7136      $element = null;
7137    };
7138
7139
7140    /**
7141     * Allows run time updating of the swipe configuration options.
7142     * @function
7143     * @name $.fn.swipe#option
7144     * @param {String} property The option property to get or set, or a has of multiple options to set
7145     * @param {Object} [value] The value to set the property to
7146     * @return {Object} If only a property name is passed, then that property value is returned. If nothing is passed the current options hash is returned.
7147     * @example $("#element").swipe("option", "threshold"); // return the threshold
7148     * @example $("#element").swipe("option", "threshold", 100); // set the threshold after init
7149     * @example $("#element").swipe("option", {threshold:100, fingers:3} ); // set multiple properties after init
7150     * @example $("#element").swipe({threshold:100, fingers:3} ); // set multiple properties after init - the "option" method is optional!
7151     * @example $("#element").swipe("option"); // Return the current options hash
7152     * @see $.fn.swipe.defaults
7153     *
7154     */
7155    this.option = function(property, value) {
7156
7157      if (typeof property === 'object') {
7158        options = $.extend(options, property);
7159      } else if (options[property] !== undefined) {
7160        if (value === undefined) {
7161          return options[property];
7162        } else {
7163          options[property] = value;
7164        }
7165      } else if (!property) {
7166        return options;
7167      } else {
7168        $.error('Option ' + property + ' does not exist on jQuery.swipe.options');
7169      }
7170
7171      return null;
7172    }
7173
7174
7175
7176    //
7177    // Private methods
7178    //
7179
7180    //
7181    // EVENTS
7182    //
7183    /**
7184     * Event handler for a touch start event.
7185     * Stops the default click event from triggering and stores where we touched
7186     * @inner
7187     * @param {object} jqEvent The normalised jQuery event object.
7188     */
7189    function touchStart(jqEvent) {
7190
7191      //If we already in a touch event (a finger already in use) then ignore subsequent ones..
7192      if (getTouchInProgress()) {
7193        return;
7194      }
7195
7196      //Check if this element matches any in the excluded elements selectors,  or its parent is excluded, if so, DON'T swipe
7197      if ($(jqEvent.target).closest(options.excludedElements, $element).length > 0) {
7198        return;
7199      }
7200
7201      //As we use Jquery bind for events, we need to target the original event object
7202      //If these events are being programmatically triggered, we don't have an original event object, so use the Jq one.
7203      var event = jqEvent.originalEvent ? jqEvent.originalEvent : jqEvent;
7204
7205
7206      //If we have a pointer event, whoes type is 'mouse' and we have said NO mouse events, then dont do anything.
7207      if(event.pointerType && event.pointerType=="mouse" && options.fallbackToMouseEvents==false) {
7208        return;
7209      };
7210
7211      var ret,
7212        touches = event.touches,
7213        evt = touches ? touches[0] : event;
7214
7215      phase = PHASE_START;
7216
7217      //If we support touches, get the finger count
7218      if (touches) {
7219        // get the total number of fingers touching the screen
7220        fingerCount = touches.length;
7221      }
7222      //Else this is the desktop, so stop the browser from dragging content
7223      else if (options.preventDefaultEvents !== false) {
7224        jqEvent.preventDefault(); //call this on jq event so we are cross browser
7225      }
7226
7227      //clear vars..
7228      distance = 0;
7229      direction = null;
7230      currentDirection=null;
7231      pinchDirection = null;
7232      duration = 0;
7233      startTouchesDistance = 0;
7234      endTouchesDistance = 0;
7235      pinchZoom = 1;
7236      pinchDistance = 0;
7237      maximumsMap = createMaximumsData();
7238      cancelMultiFingerRelease();
7239
7240      //Create the default finger data
7241      createFingerData(0, evt);
7242
7243      // check the number of fingers is what we are looking for, or we are capturing pinches
7244      if (!touches || (fingerCount === options.fingers || options.fingers === ALL_FINGERS) || hasPinches()) {
7245        // get the coordinates of the touch
7246        startTime = getTimeStamp();
7247
7248        if (fingerCount == 2) {
7249          //Keep track of the initial pinch distance, so we can calculate the diff later
7250          //Store second finger data as start
7251          createFingerData(1, touches[1]);
7252          startTouchesDistance = endTouchesDistance = calculateTouchesDistance(fingerData[0].start, fingerData[1].start);
7253        }
7254
7255        if (options.swipeStatus || options.pinchStatus) {
7256          ret = triggerHandler(event, phase);
7257        }
7258      } else {
7259        //A touch with more or less than the fingers we are looking for, so cancel
7260        ret = false;
7261      }
7262
7263      //If we have a return value from the users handler, then return and cancel
7264      if (ret === false) {
7265        phase = PHASE_CANCEL;
7266        triggerHandler(event, phase);
7267        return ret;
7268      } else {
7269        if (options.hold) {
7270          holdTimeout = setTimeout($.proxy(function() {
7271            //Trigger the event
7272            $element.trigger('hold', [event.target]);
7273            //Fire the callback
7274            if (options.hold) {
7275              ret = options.hold.call($element, event, event.target);
7276            }
7277          }, this), options.longTapThreshold);
7278        }
7279
7280        setTouchInProgress(true);
7281      }
7282
7283      return null;
7284    };
7285
7286
7287
7288    /**
7289     * Event handler for a touch move event.
7290     * If we change fingers during move, then cancel the event
7291     * @inner
7292     * @param {object} jqEvent The normalised jQuery event object.
7293     */
7294    function touchMove(jqEvent) {
7295
7296      //As we use Jquery bind for events, we need to target the original event object
7297      //If these events are being programmatically triggered, we don't have an original event object, so use the Jq one.
7298      var event = jqEvent.originalEvent ? jqEvent.originalEvent : jqEvent;
7299
7300      //If we are ending, cancelling, or within the threshold of 2 fingers being released, don't track anything..
7301      if (phase === PHASE_END || phase === PHASE_CANCEL || inMultiFingerRelease())
7302        return;
7303
7304      var ret,
7305        touches = event.touches,
7306        evt = touches ? touches[0] : event;
7307
7308
7309      //Update the  finger data
7310      var currentFinger = updateFingerData(evt);
7311      endTime = getTimeStamp();
7312
7313      if (touches) {
7314        fingerCount = touches.length;
7315      }
7316
7317      if (options.hold) {
7318        clearTimeout(holdTimeout);
7319      }
7320
7321      phase = PHASE_MOVE;
7322
7323      //If we have 2 fingers get Touches distance as well
7324      if (fingerCount == 2) {
7325
7326        //Keep track of the initial pinch distance, so we can calculate the diff later
7327        //We do this here as well as the start event, in case they start with 1 finger, and the press 2 fingers
7328        if (startTouchesDistance == 0) {
7329          //Create second finger if this is the first time...
7330          createFingerData(1, touches[1]);
7331
7332          startTouchesDistance = endTouchesDistance = calculateTouchesDistance(fingerData[0].start, fingerData[1].start);
7333        } else {
7334          //Else just update the second finger
7335          updateFingerData(touches[1]);
7336
7337          endTouchesDistance = calculateTouchesDistance(fingerData[0].end, fingerData[1].end);
7338          pinchDirection = calculatePinchDirection(fingerData[0].end, fingerData[1].end);
7339        }
7340
7341        pinchZoom = calculatePinchZoom(startTouchesDistance, endTouchesDistance);
7342        pinchDistance = Math.abs(startTouchesDistance - endTouchesDistance);
7343      }
7344
7345      if ((fingerCount === options.fingers || options.fingers === ALL_FINGERS) || !touches || hasPinches()) {
7346
7347        //The overall direction of the swipe. From start to now.
7348        direction = calculateDirection(currentFinger.start, currentFinger.end);
7349
7350        //The immediate direction of the swipe, direction between the last movement and this one.
7351        currentDirection = calculateDirection(currentFinger.last, currentFinger.end);
7352
7353        //Check if we need to prevent default event (page scroll / pinch zoom) or not
7354        validateDefaultEvent(jqEvent, currentDirection);
7355
7356        //Distance and duration are all off the main finger
7357        distance = calculateDistance(currentFinger.start, currentFinger.end);
7358        duration = calculateDuration();
7359
7360        //Cache the maximum distance we made in this direction
7361        setMaxDistance(direction, distance);
7362
7363        //Trigger status handler
7364        ret = triggerHandler(event, phase);
7365
7366
7367        //If we trigger end events when threshold are met, or trigger events when touch leaves element
7368        if (!options.triggerOnTouchEnd || options.triggerOnTouchLeave) {
7369
7370          var inBounds = true;
7371
7372          //If checking if we leave the element, run the bounds check (we can use touchleave as its not supported on webkit)
7373          if (options.triggerOnTouchLeave) {
7374            var bounds = getbounds(this);
7375            inBounds = isInBounds(currentFinger.end, bounds);
7376          }
7377
7378          //Trigger end handles as we swipe if thresholds met or if we have left the element if the user has asked to check these..
7379          if (!options.triggerOnTouchEnd && inBounds) {
7380            phase = getNextPhase(PHASE_MOVE);
7381          }
7382          //We end if out of bounds here, so set current phase to END, and check if its modified
7383          else if (options.triggerOnTouchLeave && !inBounds) {
7384            phase = getNextPhase(PHASE_END);
7385          }
7386
7387          if (phase == PHASE_CANCEL || phase == PHASE_END) {
7388            triggerHandler(event, phase);
7389          }
7390        }
7391      } else {
7392        phase = PHASE_CANCEL;
7393        triggerHandler(event, phase);
7394      }
7395
7396      if (ret === false) {
7397        phase = PHASE_CANCEL;
7398        triggerHandler(event, phase);
7399      }
7400    }
7401
7402
7403
7404
7405    /**
7406     * Event handler for a touch end event.
7407     * Calculate the direction and trigger events
7408     * @inner
7409     * @param {object} jqEvent The normalised jQuery event object.
7410     */
7411    function touchEnd(jqEvent) {
7412      //As we use Jquery bind for events, we need to target the original event object
7413      //If these events are being programmatically triggered, we don't have an original event object, so use the Jq one.
7414      var event = jqEvent.originalEvent ? jqEvent.originalEvent : jqEvent,
7415        touches = event.touches;
7416
7417      //If we are still in a touch with the device wait a fraction and see if the other finger comes up
7418      //if it does within the threshold, then we treat it as a multi release, not a single release and end the touch / swipe
7419      if (touches) {
7420        if (touches.length && !inMultiFingerRelease()) {
7421          startMultiFingerRelease(event);
7422          return true;
7423        } else if (touches.length && inMultiFingerRelease()) {
7424          return true;
7425        }
7426      }
7427
7428      //If a previous finger has been released, check how long ago, if within the threshold, then assume it was a multifinger release.
7429      //This is used to allow 2 fingers to release fractionally after each other, whilst maintaining the event as containing 2 fingers, not 1
7430      if (inMultiFingerRelease()) {
7431        fingerCount = fingerCountAtRelease;
7432      }
7433
7434      //Set end of swipe
7435      endTime = getTimeStamp();
7436
7437      //Get duration incase move was never fired
7438      duration = calculateDuration();
7439
7440      //If we trigger handlers at end of swipe OR, we trigger during, but they didnt trigger and we are still in the move phase
7441      if (didSwipeBackToCancel() || !validateSwipeDistance()) {
7442        phase = PHASE_CANCEL;
7443        triggerHandler(event, phase);
7444      } else if (options.triggerOnTouchEnd || (options.triggerOnTouchEnd === false && phase === PHASE_MOVE)) {
7445        //call this on jq event so we are cross browser
7446        if (options.preventDefaultEvents !== false && jqEvent.cancelable !== false) {
7447          jqEvent.preventDefault();
7448        }
7449        phase = PHASE_END;
7450        triggerHandler(event, phase);
7451      }
7452      //Special cases - A tap should always fire on touch end regardless,
7453      //So here we manually trigger the tap end handler by itself
7454      //We dont run trigger handler as it will re-trigger events that may have fired already
7455      else if (!options.triggerOnTouchEnd && hasTap()) {
7456        //Trigger the pinch events...
7457        phase = PHASE_END;
7458        triggerHandlerForGesture(event, phase, TAP);
7459      } else if (phase === PHASE_MOVE) {
7460        phase = PHASE_CANCEL;
7461        triggerHandler(event, phase);
7462      }
7463
7464      setTouchInProgress(false);
7465
7466      return null;
7467    }
7468
7469
7470
7471    /**
7472     * Event handler for a touch cancel event.
7473     * Clears current vars
7474     * @inner
7475     */
7476    function touchCancel() {
7477      // reset the variables back to default values
7478      fingerCount = 0;
7479      endTime = 0;
7480      startTime = 0;
7481      startTouchesDistance = 0;
7482      endTouchesDistance = 0;
7483      pinchZoom = 1;
7484
7485      //If we were in progress of tracking a possible multi touch end, then re set it.
7486      cancelMultiFingerRelease();
7487
7488      setTouchInProgress(false);
7489    }
7490
7491
7492    /**
7493     * Event handler for a touch leave event.
7494     * This is only triggered on desktops, in touch we work this out manually
7495     * as the touchleave event is not supported in webkit
7496     * @inner
7497     */
7498    function touchLeave(jqEvent) {
7499      //If these events are being programmatically triggered, we don't have an original event object, so use the Jq one.
7500      var event = jqEvent.originalEvent ? jqEvent.originalEvent : jqEvent;
7501
7502      //If we have the trigger on leave property set....
7503      if (options.triggerOnTouchLeave) {
7504        phase = getNextPhase(PHASE_END);
7505        triggerHandler(event, phase);
7506      }
7507    }
7508
7509    /**
7510     * Removes all listeners that were associated with the plugin
7511     * @inner
7512     */
7513    function removeListeners() {
7514      $element.off(START_EV, touchStart);
7515      $element.off(CANCEL_EV, touchCancel);
7516      $element.off(MOVE_EV, touchMove);
7517      $element.off(END_EV, touchEnd);
7518
7519      //we only have leave events on desktop, we manually calculate leave on touch as its not supported in webkit
7520      if (LEAVE_EV) {
7521        $element.off(LEAVE_EV, touchLeave);
7522      }
7523
7524      setTouchInProgress(false);
7525    }
7526
7527
7528    /**
7529     * Checks if the time and distance thresholds have been met, and if so then the appropriate handlers are fired.
7530     */
7531    function getNextPhase(currentPhase) {
7532
7533      var nextPhase = currentPhase;
7534
7535      // Ensure we have valid swipe (under time and over distance  and check if we are out of bound...)
7536      var validTime = validateSwipeTime();
7537      var validDistance = validateSwipeDistance();
7538      var didCancel = didSwipeBackToCancel();
7539
7540      //If we have exceeded our time, then cancel
7541      if (!validTime || didCancel) {
7542        nextPhase = PHASE_CANCEL;
7543      }
7544      //Else if we are moving, and have reached distance then end
7545      else if (validDistance && currentPhase == PHASE_MOVE && (!options.triggerOnTouchEnd || options.triggerOnTouchLeave)) {
7546        nextPhase = PHASE_END;
7547      }
7548      //Else if we have ended by leaving and didn't reach distance, then cancel
7549      else if (!validDistance && currentPhase == PHASE_END && options.triggerOnTouchLeave) {
7550        nextPhase = PHASE_CANCEL;
7551      }
7552
7553      return nextPhase;
7554    }
7555
7556
7557    /**
7558     * Trigger the relevant event handler
7559     * The handlers are passed the original event, the element that was swiped, and in the case of the catch all handler, the direction that was swiped, "left", "right", "up", or "down"
7560     * @param {object} event the original event object
7561     * @param {string} phase the phase of the swipe (start, end cancel etc) {@link $.fn.swipe.phases}
7562     * @inner
7563     */
7564    function triggerHandler(event, phase) {
7565
7566
7567
7568      var ret,
7569        touches = event.touches;
7570
7571      // SWIPE GESTURES
7572      if (didSwipe() || hasSwipes()) {
7573          ret = triggerHandlerForGesture(event, phase, SWIPE);
7574      }
7575
7576      // PINCH GESTURES (if the above didn't cancel)
7577      if ((didPinch() || hasPinches()) && ret !== false) {
7578          ret = triggerHandlerForGesture(event, phase, PINCH);
7579      }
7580
7581      // CLICK / TAP (if the above didn't cancel)
7582      if (didDoubleTap() && ret !== false) {
7583        //Trigger the tap events...
7584        ret = triggerHandlerForGesture(event, phase, DOUBLE_TAP);
7585      }
7586
7587      // CLICK / TAP (if the above didn't cancel)
7588      else if (didLongTap() && ret !== false) {
7589        //Trigger the tap events...
7590        ret = triggerHandlerForGesture(event, phase, LONG_TAP);
7591      }
7592
7593      // CLICK / TAP (if the above didn't cancel)
7594      else if (didTap() && ret !== false) {
7595        //Trigger the tap event..
7596        ret = triggerHandlerForGesture(event, phase, TAP);
7597      }
7598
7599
7600
7601      // If we are cancelling the gesture, then manually trigger the reset handler
7602      if (phase === PHASE_CANCEL) {
7603
7604        touchCancel(event);
7605      }
7606
7607
7608
7609
7610      // If we are ending the gesture, then manually trigger the reset handler IF all fingers are off
7611      if (phase === PHASE_END) {
7612        //If we support touch, then check that all fingers are off before we cancel
7613        if (touches) {
7614          if (!touches.length) {
7615            touchCancel(event);
7616          }
7617        } else {
7618          touchCancel(event);
7619        }
7620      }
7621
7622      return ret;
7623    }
7624
7625
7626
7627    /**
7628     * Trigger the relevant event handler
7629     * The handlers are passed the original event, the element that was swiped, and in the case of the catch all handler, the direction that was swiped, "left", "right", "up", or "down"
7630     * @param {object} event the original event object
7631     * @param {string} phase the phase of the swipe (start, end cancel etc) {@link $.fn.swipe.phases}
7632     * @param {string} gesture the gesture to trigger a handler for : PINCH or SWIPE {@link $.fn.swipe.gestures}
7633     * @return Boolean False, to indicate that the event should stop propagation, or void.
7634     * @inner
7635     */
7636    function triggerHandlerForGesture(event, phase, gesture) {
7637
7638      var ret;
7639
7640      //SWIPES....
7641      if (gesture == SWIPE) {
7642        //Trigger status every time..
7643        $element.trigger('swipeStatus', [phase, direction || null, distance || 0, duration || 0, fingerCount, fingerData, currentDirection]);
7644
7645        if (options.swipeStatus) {
7646          ret = options.swipeStatus.call($element, event, phase, direction || null, distance || 0, duration || 0, fingerCount, fingerData, currentDirection);
7647          //If the status cancels, then dont run the subsequent event handlers..
7648          if (ret === false) return false;
7649        }
7650
7651        if (phase == PHASE_END && validateSwipe()) {
7652
7653          //Cancel any taps that were in progress...
7654          clearTimeout(singleTapTimeout);
7655          clearTimeout(holdTimeout);
7656
7657          $element.trigger('swipe', [direction, distance, duration, fingerCount, fingerData, currentDirection]);
7658
7659          if (options.swipe) {
7660            ret = options.swipe.call($element, event, direction, distance, duration, fingerCount, fingerData, currentDirection);
7661            //If the status cancels, then dont run the subsequent event handlers..
7662            if (ret === false) return false;
7663          }
7664
7665          //trigger direction specific event handlers
7666          switch (direction) {
7667            case LEFT:
7668              $element.trigger('swipeLeft', [direction, distance, duration, fingerCount, fingerData, currentDirection]);
7669
7670              if (options.swipeLeft) {
7671                ret = options.swipeLeft.call($element, event, direction, distance, duration, fingerCount, fingerData, currentDirection);
7672              }
7673              break;
7674
7675            case RIGHT:
7676              $element.trigger('swipeRight', [direction, distance, duration, fingerCount, fingerData, currentDirection]);
7677
7678              if (options.swipeRight) {
7679                ret = options.swipeRight.call($element, event, direction, distance, duration, fingerCount, fingerData, currentDirection);
7680              }
7681              break;
7682
7683            case UP:
7684              $element.trigger('swipeUp', [direction, distance, duration, fingerCount, fingerData, currentDirection]);
7685
7686              if (options.swipeUp) {
7687                ret = options.swipeUp.call($element, event, direction, distance, duration, fingerCount, fingerData, currentDirection);
7688              }
7689              break;
7690
7691            case DOWN:
7692              $element.trigger('swipeDown', [direction, distance, duration, fingerCount, fingerData, currentDirection]);
7693
7694              if (options.swipeDown) {
7695                ret = options.swipeDown.call($element, event, direction, distance, duration, fingerCount, fingerData, currentDirection);
7696              }
7697              break;
7698          }
7699        }
7700      }
7701
7702
7703      //PINCHES....
7704      if (gesture == PINCH) {
7705        $element.trigger('pinchStatus', [phase, pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData]);
7706
7707        if (options.pinchStatus) {
7708          ret = options.pinchStatus.call($element, event, phase, pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData);
7709          //If the status cancels, then dont run the subsequent event handlers..
7710          if (ret === false) return false;
7711        }
7712
7713        if (phase == PHASE_END && validatePinch()) {
7714
7715          switch (pinchDirection) {
7716            case IN:
7717              $element.trigger('pinchIn', [pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData]);
7718
7719              if (options.pinchIn) {
7720                ret = options.pinchIn.call($element, event, pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData);
7721              }
7722              break;
7723
7724            case OUT:
7725              $element.trigger('pinchOut', [pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData]);
7726
7727              if (options.pinchOut) {
7728                ret = options.pinchOut.call($element, event, pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData);
7729              }
7730              break;
7731          }
7732        }
7733      }
7734
7735      if (gesture == TAP) {
7736        if (phase === PHASE_CANCEL || phase === PHASE_END) {
7737
7738          clearTimeout(singleTapTimeout);
7739          clearTimeout(holdTimeout);
7740
7741          //If we are also looking for doubelTaps, wait incase this is one...
7742          if (hasDoubleTap() && !inDoubleTap()) {
7743            doubleTapStartTime = getTimeStamp();
7744
7745            //Now wait for the double tap timeout, and trigger this single tap
7746            //if its not cancelled by a double tap
7747            singleTapTimeout = setTimeout($.proxy(function() {
7748              doubleTapStartTime = null;
7749              $element.trigger('tap', [event.target]);
7750
7751              if (options.tap) {
7752                ret = options.tap.call($element, event, event.target);
7753              }
7754            }, this), options.doubleTapThreshold);
7755
7756          } else {
7757            doubleTapStartTime = null;
7758            $element.trigger('tap', [event.target]);
7759            if (options.tap) {
7760              ret = options.tap.call($element, event, event.target);
7761            }
7762          }
7763        }
7764      } else if (gesture == DOUBLE_TAP) {
7765        if (phase === PHASE_CANCEL || phase === PHASE_END) {
7766          clearTimeout(singleTapTimeout);
7767          clearTimeout(holdTimeout);
7768          doubleTapStartTime = null;
7769          $element.trigger('doubletap', [event.target]);
7770
7771          if (options.doubleTap) {
7772            ret = options.doubleTap.call($element, event, event.target);
7773          }
7774        }
7775      } else if (gesture == LONG_TAP) {
7776        if (phase === PHASE_CANCEL || phase === PHASE_END) {
7777          clearTimeout(singleTapTimeout);
7778          doubleTapStartTime = null;
7779
7780          $element.trigger('longtap', [event.target]);
7781          if (options.longTap) {
7782            ret = options.longTap.call($element, event, event.target);
7783          }
7784        }
7785      }
7786
7787      return ret;
7788    }
7789
7790
7791    //
7792    // GESTURE VALIDATION
7793    //
7794
7795    /**
7796     * Checks the user has swipe far enough
7797     * @return Boolean if <code>threshold</code> has been set, return true if the threshold was met, else false.
7798     * If no threshold was set, then we return true.
7799     * @inner
7800     */
7801    function validateSwipeDistance() {
7802      var valid = true;
7803      //If we made it past the min swipe distance..
7804      if (options.threshold !== null) {
7805        valid = distance >= options.threshold;
7806      }
7807
7808      return valid;
7809    }
7810
7811    /**
7812     * Checks the user has swiped back to cancel.
7813     * @return Boolean if <code>cancelThreshold</code> has been set, return true if the cancelThreshold was met, else false.
7814     * If no cancelThreshold was set, then we return true.
7815     * @inner
7816     */
7817    function didSwipeBackToCancel() {
7818      var cancelled = false;
7819      if (options.cancelThreshold !== null && direction !== null) {
7820        cancelled = (getMaxDistance(direction) - distance) >= options.cancelThreshold;
7821      }
7822
7823      return cancelled;
7824    }
7825
7826    /**
7827     * Checks the user has pinched far enough
7828     * @return Boolean if <code>pinchThreshold</code> has been set, return true if the threshold was met, else false.
7829     * If no threshold was set, then we return true.
7830     * @inner
7831     */
7832    function validatePinchDistance() {
7833      if (options.pinchThreshold !== null) {
7834        return pinchDistance >= options.pinchThreshold;
7835      }
7836      return true;
7837    }
7838
7839    /**
7840     * Checks that the time taken to swipe meets the minimum / maximum requirements
7841     * @return Boolean
7842     * @inner
7843     */
7844    function validateSwipeTime() {
7845      var result;
7846      //If no time set, then return true
7847      if (options.maxTimeThreshold) {
7848        if (duration >= options.maxTimeThreshold) {
7849          result = false;
7850        } else {
7851          result = true;
7852        }
7853      } else {
7854        result = true;
7855      }
7856
7857      return result;
7858    }
7859
7860
7861    /**
7862     * Checks direction of the swipe and the value allowPageScroll to see if we should allow or prevent the default behaviour from occurring.
7863     * This will essentially allow page scrolling or not when the user is swiping on a touchSwipe object.
7864     * @param {object} jqEvent The normalised jQuery representation of the event object.
7865     * @param {string} direction The direction of the event. See {@link $.fn.swipe.directions}
7866     * @see $.fn.swipe.directions
7867     * @inner
7868     */
7869    function validateDefaultEvent(jqEvent, direction) {
7870
7871      //If the option is set, allways allow the event to bubble up (let user handle weirdness)
7872      if (options.preventDefaultEvents === false) {
7873        return;
7874      }
7875
7876      if (options.allowPageScroll === NONE) {
7877        jqEvent.preventDefault();
7878      } else {
7879        var auto = options.allowPageScroll === AUTO;
7880
7881        switch (direction) {
7882          case LEFT:
7883            if ((options.swipeLeft && auto) || (!auto && options.allowPageScroll != HORIZONTAL)) {
7884              jqEvent.preventDefault();
7885            }
7886            break;
7887
7888          case RIGHT:
7889            if ((options.swipeRight && auto) || (!auto && options.allowPageScroll != HORIZONTAL)) {
7890              jqEvent.preventDefault();
7891            }
7892            break;
7893
7894          case UP:
7895            if ((options.swipeUp && auto) || (!auto && options.allowPageScroll != VERTICAL)) {
7896              jqEvent.preventDefault();
7897            }
7898            break;
7899
7900          case DOWN:
7901            if ((options.swipeDown && auto) || (!auto && options.allowPageScroll != VERTICAL)) {
7902              jqEvent.preventDefault();
7903            }
7904            break;
7905
7906          case NONE:
7907
7908            break;
7909        }
7910      }
7911    }
7912
7913
7914    // PINCHES
7915    /**
7916     * Returns true of the current pinch meets the thresholds
7917     * @return Boolean
7918     * @inner
7919     */
7920    function validatePinch() {
7921      var hasCorrectFingerCount = validateFingers();
7922      var hasEndPoint = validateEndPoint();
7923      var hasCorrectDistance = validatePinchDistance();
7924      return hasCorrectFingerCount && hasEndPoint && hasCorrectDistance;
7925
7926    }
7927
7928    /**
7929     * Returns true if any Pinch events have been registered
7930     * @return Boolean
7931     * @inner
7932     */
7933    function hasPinches() {
7934      //Enure we dont return 0 or null for false values
7935      return !!(options.pinchStatus || options.pinchIn || options.pinchOut);
7936    }
7937
7938    /**
7939     * Returns true if we are detecting pinches, and have one
7940     * @return Boolean
7941     * @inner
7942     */
7943    function didPinch() {
7944      //Enure we dont return 0 or null for false values
7945      return !!(validatePinch() && hasPinches());
7946    }
7947
7948
7949
7950
7951    // SWIPES
7952    /**
7953     * Returns true if the current swipe meets the thresholds
7954     * @return Boolean
7955     * @inner
7956     */
7957    function validateSwipe() {
7958      //Check validity of swipe
7959      var hasValidTime = validateSwipeTime();
7960      var hasValidDistance = validateSwipeDistance();
7961      var hasCorrectFingerCount = validateFingers();
7962      var hasEndPoint = validateEndPoint();
7963      var didCancel = didSwipeBackToCancel();
7964
7965      // if the user swiped more than the minimum length, perform the appropriate action
7966      // hasValidDistance is null when no distance is set
7967      var valid = !didCancel && hasEndPoint && hasCorrectFingerCount && hasValidDistance && hasValidTime;
7968
7969      return valid;
7970    }
7971
7972    /**
7973     * Returns true if any Swipe events have been registered
7974     * @return Boolean
7975     * @inner
7976     */
7977    function hasSwipes() {
7978      //Enure we dont return 0 or null for false values
7979      return !!(options.swipe || options.swipeStatus || options.swipeLeft || options.swipeRight || options.swipeUp || options.swipeDown);
7980    }
7981
7982
7983    /**
7984     * Returns true if we are detecting swipes and have one
7985     * @return Boolean
7986     * @inner
7987     */
7988    function didSwipe() {
7989      //Enure we dont return 0 or null for false values
7990      return !!(validateSwipe() && hasSwipes());
7991    }
7992
7993    /**
7994     * Returns true if we have matched the number of fingers we are looking for
7995     * @return Boolean
7996     * @inner
7997     */
7998    function validateFingers() {
7999      //The number of fingers we want were matched, or on desktop we ignore
8000      return ((fingerCount === options.fingers || options.fingers === ALL_FINGERS) || !SUPPORTS_TOUCH);
8001    }
8002
8003    /**
8004     * Returns true if we have an end point for the swipe
8005     * @return Boolean
8006     * @inner
8007     */
8008    function validateEndPoint() {
8009      //We have an end value for the finger
8010      return fingerData[0].end.x !== 0;
8011    }
8012
8013    // TAP / CLICK
8014    /**
8015     * Returns true if a click / tap events have been registered
8016     * @return Boolean
8017     * @inner
8018     */
8019    function hasTap() {
8020      //Enure we dont return 0 or null for false values
8021      return !!(options.tap);
8022    }
8023
8024    /**
8025     * Returns true if a double tap events have been registered
8026     * @return Boolean
8027     * @inner
8028     */
8029    function hasDoubleTap() {
8030      //Enure we dont return 0 or null for false values
8031      return !!(options.doubleTap);
8032    }
8033
8034    /**
8035     * Returns true if any long tap events have been registered
8036     * @return Boolean
8037     * @inner
8038     */
8039    function hasLongTap() {
8040      //Enure we dont return 0 or null for false values
8041      return !!(options.longTap);
8042    }
8043
8044    /**
8045     * Returns true if we could be in the process of a double tap (one tap has occurred, we are listening for double taps, and the threshold hasn't past.
8046     * @return Boolean
8047     * @inner
8048     */
8049    function validateDoubleTap() {
8050      if (doubleTapStartTime == null) {
8051        return false;
8052      }
8053      var now = getTimeStamp();
8054      return (hasDoubleTap() && ((now - doubleTapStartTime) <= options.doubleTapThreshold));
8055    }
8056
8057    /**
8058     * Returns true if we could be in the process of a double tap (one tap has occurred, we are listening for double taps, and the threshold hasn't past.
8059     * @return Boolean
8060     * @inner
8061     */
8062    function inDoubleTap() {
8063      return validateDoubleTap();
8064    }
8065
8066
8067    /**
8068     * Returns true if we have a valid tap
8069     * @return Boolean
8070     * @inner
8071     */
8072    function validateTap() {
8073      return ((fingerCount === 1 || !SUPPORTS_TOUCH) && (isNaN(distance) || distance < options.threshold));
8074    }
8075
8076    /**
8077     * Returns true if we have a valid long tap
8078     * @return Boolean
8079     * @inner
8080     */
8081    function validateLongTap() {
8082      //slight threshold on moving finger
8083      return ((duration > options.longTapThreshold) && (distance < DOUBLE_TAP_THRESHOLD));
8084    }
8085
8086    /**
8087     * Returns true if we are detecting taps and have one
8088     * @return Boolean
8089     * @inner
8090     */
8091    function didTap() {
8092      //Enure we dont return 0 or null for false values
8093      return !!(validateTap() && hasTap());
8094    }
8095
8096
8097    /**
8098     * Returns true if we are detecting double taps and have one
8099     * @return Boolean
8100     * @inner
8101     */
8102    function didDoubleTap() {
8103      //Enure we dont return 0 or null for false values
8104      return !!(validateDoubleTap() && hasDoubleTap());
8105    }
8106
8107    /**
8108     * Returns true if we are detecting long taps and have one
8109     * @return Boolean
8110     * @inner
8111     */
8112    function didLongTap() {
8113      //Enure we dont return 0 or null for false values
8114      return !!(validateLongTap() && hasLongTap());
8115    }
8116
8117
8118
8119
8120    // MULTI FINGER TOUCH
8121    /**
8122     * Starts tracking the time between 2 finger releases, and keeps track of how many fingers we initially had up
8123     * @inner
8124     */
8125    function startMultiFingerRelease(event) {
8126      previousTouchEndTime = getTimeStamp();
8127      fingerCountAtRelease = event.touches.length + 1;
8128    }
8129
8130    /**
8131     * Cancels the tracking of time between 2 finger releases, and resets counters
8132     * @inner
8133     */
8134    function cancelMultiFingerRelease() {
8135      previousTouchEndTime = 0;
8136      fingerCountAtRelease = 0;
8137    }
8138
8139    /**
8140     * Checks if we are in the threshold between 2 fingers being released
8141     * @return Boolean
8142     * @inner
8143     */
8144    function inMultiFingerRelease() {
8145
8146      var withinThreshold = false;
8147
8148      if (previousTouchEndTime) {
8149        var diff = getTimeStamp() - previousTouchEndTime
8150        if (diff <= options.fingerReleaseThreshold) {
8151          withinThreshold = true;
8152        }
8153      }
8154
8155      return withinThreshold;
8156    }
8157
8158
8159    /**
8160     * gets a data flag to indicate that a touch is in progress
8161     * @return Boolean
8162     * @inner
8163     */
8164    function getTouchInProgress() {
8165      //strict equality to ensure only true and false are returned
8166      return !!($element.data(PLUGIN_NS + '_intouch') === true);
8167    }
8168
8169    /**
8170     * Sets a data flag to indicate that a touch is in progress
8171     * @param {boolean} val The value to set the property to
8172     * @inner
8173     */
8174    function setTouchInProgress(val) {
8175
8176      //If destroy is called in an event handler, we have no el, and we have already cleaned up, so return.
8177      if(!$element) { return; }
8178
8179      //Add or remove event listeners depending on touch status
8180      if (val === true) {
8181        $element.on(MOVE_EV, touchMove);
8182        $element.on(END_EV, touchEnd);
8183
8184        //we only have leave events on desktop, we manually calcuate leave on touch as its not supported in webkit
8185        if (LEAVE_EV) {
8186          $element.on(LEAVE_EV, touchLeave);
8187        }
8188      } else {
8189
8190        $element.off(MOVE_EV, touchMove, false);
8191        $element.off(END_EV, touchEnd, false);
8192
8193        //we only have leave events on desktop, we manually calcuate leave on touch as its not supported in webkit
8194        if (LEAVE_EV) {
8195          $element.off(LEAVE_EV, touchLeave, false);
8196        }
8197      }
8198
8199
8200      //strict equality to ensure only true and false can update the value
8201      $element.data(PLUGIN_NS + '_intouch', val === true);
8202    }
8203
8204
8205    /**
8206     * Creates the finger data for the touch/finger in the event object.
8207     * @param {int} id The id to store the finger data under (usually the order the fingers were pressed)
8208     * @param {object} evt The event object containing finger data
8209     * @return finger data object
8210     * @inner
8211     */
8212    function createFingerData(id, evt) {
8213      var f = {
8214        start: {
8215          x: 0,
8216          y: 0
8217        },
8218        last: {
8219          x: 0,
8220          y: 0
8221        },
8222        end: {
8223          x: 0,
8224          y: 0
8225        }
8226      };
8227      f.start.x = f.last.x = f.end.x = evt.pageX || evt.clientX;
8228      f.start.y = f.last.y = f.end.y = evt.pageY || evt.clientY;
8229      fingerData[id] = f;
8230      return f;
8231    }
8232
8233    /**
8234     * Updates the finger data for a particular event object
8235     * @param {object} evt The event object containing the touch/finger data to upadte
8236     * @return a finger data object.
8237     * @inner
8238     */
8239    function updateFingerData(evt) {
8240      var id = evt.identifier !== undefined ? evt.identifier : 0;
8241      var f = getFingerData(id);
8242
8243      if (f === null) {
8244        f = createFingerData(id, evt);
8245      }
8246
8247      f.last.x = f.end.x;
8248      f.last.y = f.end.y;
8249
8250      f.end.x = evt.pageX || evt.clientX;
8251      f.end.y = evt.pageY || evt.clientY;
8252
8253      return f;
8254    }
8255
8256    /**
8257     * Returns a finger data object by its event ID.
8258     * Each touch event has an identifier property, which is used
8259     * to track repeat touches
8260     * @param {int} id The unique id of the finger in the sequence of touch events.
8261     * @return a finger data object.
8262     * @inner
8263     */
8264    function getFingerData(id) {
8265      return fingerData[id] || null;
8266    }
8267
8268
8269    /**
8270     * Sets the maximum distance swiped in the given direction.
8271     * If the new value is lower than the current value, the max value is not changed.
8272     * @param {string}  direction The direction of the swipe
8273     * @param {int}  distance The distance of the swipe
8274     * @inner
8275     */
8276    function setMaxDistance(direction, distance) {
8277      if(direction==NONE) return;
8278      distance = Math.max(distance, getMaxDistance(direction));
8279      maximumsMap[direction].distance = distance;
8280    }
8281
8282    /**
8283     * gets the maximum distance swiped in the given direction.
8284     * @param {string}  direction The direction of the swipe
8285     * @return int  The distance of the swipe
8286     * @inner
8287     */
8288    function getMaxDistance(direction) {
8289      if (maximumsMap[direction]) return maximumsMap[direction].distance;
8290      return undefined;
8291    }
8292
8293    /**
8294     * Creats a map of directions to maximum swiped values.
8295     * @return Object A dictionary of maximum values, indexed by direction.
8296     * @inner
8297     */
8298    function createMaximumsData() {
8299      var maxData = {};
8300      maxData[LEFT] = createMaximumVO(LEFT);
8301      maxData[RIGHT] = createMaximumVO(RIGHT);
8302      maxData[UP] = createMaximumVO(UP);
8303      maxData[DOWN] = createMaximumVO(DOWN);
8304
8305      return maxData;
8306    }
8307
8308    /**
8309     * Creates a map maximum swiped values for a given swipe direction
8310     * @param {string} The direction that these values will be associated with
8311     * @return Object Maximum values
8312     * @inner
8313     */
8314    function createMaximumVO(dir) {
8315      return {
8316        direction: dir,
8317        distance: 0
8318      }
8319    }
8320
8321
8322    //
8323    // MATHS / UTILS
8324    //
8325
8326    /**
8327     * Calculate the duration of the swipe
8328     * @return int
8329     * @inner
8330     */
8331    function calculateDuration() {
8332      return endTime - startTime;
8333    }
8334
8335    /**
8336     * Calculate the distance between 2 touches (pinch)
8337     * @param {point} startPoint A point object containing x and y co-ordinates
8338     * @param {point} endPoint A point object containing x and y co-ordinates
8339     * @return int;
8340     * @inner
8341     */
8342    function calculateTouchesDistance(startPoint, endPoint) {
8343      var diffX = Math.abs(startPoint.x - endPoint.x);
8344      var diffY = Math.abs(startPoint.y - endPoint.y);
8345
8346      return Math.round(Math.sqrt(diffX * diffX + diffY * diffY));
8347    }
8348
8349    /**
8350     * Calculate the zoom factor between the start and end distances
8351     * @param {int} startDistance Distance (between 2 fingers) the user started pinching at
8352     * @param {int} endDistance Distance (between 2 fingers) the user ended pinching at
8353     * @return float The zoom value from 0 to 1.
8354     * @inner
8355     */
8356    function calculatePinchZoom(startDistance, endDistance) {
8357      var percent = (endDistance / startDistance) * 1;
8358      return percent.toFixed(2);
8359    }
8360
8361
8362    /**
8363     * Returns the pinch direction, either IN or OUT for the given points
8364     * @return string Either {@link $.fn.swipe.directions.IN} or {@link $.fn.swipe.directions.OUT}
8365     * @see $.fn.swipe.directions
8366     * @inner
8367     */
8368    function calculatePinchDirection() {
8369      if (pinchZoom < 1) {
8370        return OUT;
8371      } else {
8372        return IN;
8373      }
8374    }
8375
8376
8377    /**
8378     * Calculate the length / distance of the swipe
8379     * @param {point} startPoint A point object containing x and y co-ordinates
8380     * @param {point} endPoint A point object containing x and y co-ordinates
8381     * @return int
8382     * @inner
8383     */
8384    function calculateDistance(startPoint, endPoint) {
8385      return Math.round(Math.sqrt(Math.pow(endPoint.x - startPoint.x, 2) + Math.pow(endPoint.y - startPoint.y, 2)));
8386    }
8387
8388    /**
8389     * Calculate the angle of the swipe
8390     * @param {point} startPoint A point object containing x and y co-ordinates
8391     * @param {point} endPoint A point object containing x and y co-ordinates
8392     * @return int
8393     * @inner
8394     */
8395    function calculateAngle(startPoint, endPoint) {
8396      var x = startPoint.x - endPoint.x;
8397      var y = endPoint.y - startPoint.y;
8398      var r = Math.atan2(y, x); //radians
8399      var angle = Math.round(r * 180 / Math.PI); //degrees
8400
8401      //ensure value is positive
8402      if (angle < 0) {
8403        angle = 360 - Math.abs(angle);
8404      }
8405
8406      return angle;
8407    }
8408
8409    /**
8410     * Calculate the direction of the swipe
8411     * This will also call calculateAngle to get the latest angle of swipe
8412     * @param {point} startPoint A point object containing x and y co-ordinates
8413     * @param {point} endPoint A point object containing x and y co-ordinates
8414     * @return string Either {@link $.fn.swipe.directions.LEFT} / {@link $.fn.swipe.directions.RIGHT} / {@link $.fn.swipe.directions.DOWN} / {@link $.fn.swipe.directions.UP}
8415     * @see $.fn.swipe.directions
8416     * @inner
8417     */
8418    function calculateDirection(startPoint, endPoint) {
8419
8420      if( comparePoints(startPoint, endPoint) ) {
8421        return NONE;
8422      }
8423
8424      var angle = calculateAngle(startPoint, endPoint);
8425
8426      if ((angle <= 45) && (angle >= 0)) {
8427        return LEFT;
8428      } else if ((angle <= 360) && (angle >= 315)) {
8429        return LEFT;
8430      } else if ((angle >= 135) && (angle <= 225)) {
8431        return RIGHT;
8432      } else if ((angle > 45) && (angle < 135)) {
8433        return DOWN;
8434      } else {
8435        return UP;
8436      }
8437    }
8438
8439
8440    /**
8441     * Returns a MS time stamp of the current time
8442     * @return int
8443     * @inner
8444     */
8445    function getTimeStamp() {
8446      var now = new Date();
8447      return now.getTime();
8448    }
8449
8450
8451
8452    /**
8453     * Returns a bounds object with left, right, top and bottom properties for the element specified.
8454     * @param {DomNode} The DOM node to get the bounds for.
8455     */
8456    function getbounds(el) {
8457      el = $(el);
8458      var offset = el.offset();
8459
8460      var bounds = {
8461        left: offset.left,
8462        right: offset.left + el.outerWidth(),
8463        top: offset.top,
8464        bottom: offset.top + el.outerHeight()
8465      }
8466
8467      return bounds;
8468    }
8469
8470
8471    /**
8472     * Checks if the point object is in the bounds object.
8473     * @param {object} point A point object.
8474     * @param {int} point.x The x value of the point.
8475     * @param {int} point.y The x value of the point.
8476     * @param {object} bounds The bounds object to test
8477     * @param {int} bounds.left The leftmost value
8478     * @param {int} bounds.right The righttmost value
8479     * @param {int} bounds.top The topmost value
8480     * @param {int} bounds.bottom The bottommost value
8481     */
8482    function isInBounds(point, bounds) {
8483      return (point.x > bounds.left && point.x < bounds.right && point.y > bounds.top && point.y < bounds.bottom);
8484    };
8485
8486    /**
8487     * Checks if the two points are equal
8488     * @param {object} point A point object.
8489     * @param {object} point B point object.
8490     * @return true of the points match
8491     */
8492    function comparePoints(pointA, pointB) {
8493      return (pointA.x == pointB.x && pointA.y == pointB.y);
8494    }
8495
8496
8497  }
8498
8499
8500
8501
8502  /**
8503   * A catch all handler that is triggered for all swipe directions.
8504   * @name $.fn.swipe#swipe
8505   * @event
8506   * @default null
8507   * @param {EventObject} event The original event object
8508   * @param {int} direction The direction the user swiped in. See {@link $.fn.swipe.directions}
8509   * @param {int} distance The distance the user swiped
8510   * @param {int} duration The duration of the swipe in milliseconds
8511   * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers}
8512   * @param {object} fingerData The coordinates of fingers in event
8513   * @param {string} currentDirection The current direction the user is swiping.
8514   */
8515
8516
8517
8518
8519  /**
8520   * A handler that is triggered for "left" swipes.
8521   * @name $.fn.swipe#swipeLeft
8522   * @event
8523   * @default null
8524   * @param {EventObject} event The original event object
8525   * @param {int} direction The direction the user swiped in. See {@link $.fn.swipe.directions}
8526   * @param {int} distance The distance the user swiped
8527   * @param {int} duration The duration of the swipe in milliseconds
8528   * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers}
8529   * @param {object} fingerData The coordinates of fingers in event
8530   * @param {string} currentDirection The current direction the user is swiping.
8531   */
8532
8533  /**
8534   * A handler that is triggered for "right" swipes.
8535   * @name $.fn.swipe#swipeRight
8536   * @event
8537   * @default null
8538   * @param {EventObject} event The original event object
8539   * @param {int} direction The direction the user swiped in. See {@link $.fn.swipe.directions}
8540   * @param {int} distance The distance the user swiped
8541   * @param {int} duration The duration of the swipe in milliseconds
8542   * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers}
8543   * @param {object} fingerData The coordinates of fingers in event
8544   * @param {string} currentDirection The current direction the user is swiping.
8545   */
8546
8547  /**
8548   * A handler that is triggered for "up" swipes.
8549   * @name $.fn.swipe#swipeUp
8550   * @event
8551   * @default null
8552   * @param {EventObject} event The original event object
8553   * @param {int} direction The direction the user swiped in. See {@link $.fn.swipe.directions}
8554   * @param {int} distance The distance the user swiped
8555   * @param {int} duration The duration of the swipe in milliseconds
8556   * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers}
8557   * @param {object} fingerData The coordinates of fingers in event
8558   * @param {string} currentDirection The current direction the user is swiping.
8559   */
8560
8561  /**
8562   * A handler that is triggered for "down" swipes.
8563   * @name $.fn.swipe#swipeDown
8564   * @event
8565   * @default null
8566   * @param {EventObject} event The original event object
8567   * @param {int} direction The direction the user swiped in. See {@link $.fn.swipe.directions}
8568   * @param {int} distance The distance the user swiped
8569   * @param {int} duration The duration of the swipe in milliseconds
8570   * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers}
8571   * @param {object} fingerData The coordinates of fingers in event
8572   * @param {string} currentDirection The current direction the user is swiping.
8573   */
8574
8575  /**
8576   * A handler triggered for every phase of the swipe. This handler is constantly fired for the duration of the pinch.
8577   * This is triggered regardless of swipe thresholds.
8578   * @name $.fn.swipe#swipeStatus
8579   * @event
8580   * @default null
8581   * @param {EventObject} event The original event object
8582   * @param {string} phase The phase of the swipe event. See {@link $.fn.swipe.phases}
8583   * @param {string} direction The direction the user swiped in. This is null if the user has yet to move. See {@link $.fn.swipe.directions}
8584   * @param {int} distance The distance the user swiped. This is 0 if the user has yet to move.
8585   * @param {int} duration The duration of the swipe in milliseconds
8586   * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers}
8587   * @param {object} fingerData The coordinates of fingers in event
8588   * @param {string} currentDirection The current direction the user is swiping.
8589   */
8590
8591  /**
8592   * A handler triggered for pinch in events.
8593   * @name $.fn.swipe#pinchIn
8594   * @event
8595   * @default null
8596   * @param {EventObject} event The original event object
8597   * @param {int} direction The direction the user pinched in. See {@link $.fn.swipe.directions}
8598   * @param {int} distance The distance the user pinched
8599   * @param {int} duration The duration of the swipe in milliseconds
8600   * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers}
8601   * @param {int} zoom The zoom/scale level the user pinched too, 0-1.
8602   * @param {object} fingerData The coordinates of fingers in event
8603   */
8604
8605  /**
8606   * A handler triggered for pinch out events.
8607   * @name $.fn.swipe#pinchOut
8608   * @event
8609   * @default null
8610   * @param {EventObject} event The original event object
8611   * @param {int} direction The direction the user pinched in. See {@link $.fn.swipe.directions}
8612   * @param {int} distance The distance the user pinched
8613   * @param {int} duration The duration of the swipe in milliseconds
8614   * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers}
8615   * @param {int} zoom The zoom/scale level the user pinched too, 0-1.
8616   * @param {object} fingerData The coordinates of fingers in event
8617   */
8618
8619  /**
8620   * A handler triggered for all pinch events. This handler is constantly fired for the duration of the pinch. This is triggered regardless of thresholds.
8621   * @name $.fn.swipe#pinchStatus
8622   * @event
8623   * @default null
8624   * @param {EventObject} event The original event object
8625   * @param {int} direction The direction the user pinched in. See {@link $.fn.swipe.directions}
8626   * @param {int} distance The distance the user pinched
8627   * @param {int} duration The duration of the swipe in milliseconds
8628   * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers}
8629   * @param {int} zoom The zoom/scale level the user pinched too, 0-1.
8630   * @param {object} fingerData The coordinates of fingers in event
8631   */
8632
8633  /**
8634   * A click handler triggered when a user simply clicks, rather than swipes on an element.
8635   * This is deprecated since version 1.6.2, any assignment to click will be assigned to the tap handler.
8636   * You cannot use <code>on</code> to bind to this event as the default jQ <code>click</code> event will be triggered.
8637   * Use the <code>tap</code> event instead.
8638   * @name $.fn.swipe#click
8639   * @event
8640   * @deprecated since version 1.6.2, please use {@link $.fn.swipe#tap} instead
8641   * @default null
8642   * @param {EventObject} event The original event object
8643   * @param {DomObject} target The element clicked on.
8644   */
8645
8646  /**
8647   * A click / tap handler triggered when a user simply clicks or taps, rather than swipes on an element.
8648   * @name $.fn.swipe#tap
8649   * @event
8650   * @default null
8651   * @param {EventObject} event The original event object
8652   * @param {DomObject} target The element clicked on.
8653   */
8654
8655  /**
8656   * A double tap handler triggered when a user double clicks or taps on an element.
8657   * You can set the time delay for a double tap with the {@link $.fn.swipe.defaults#doubleTapThreshold} property.
8658   * Note: If you set both <code>doubleTap</code> and <code>tap</code> handlers, the <code>tap</code> event will be delayed by the <code>doubleTapThreshold</code>
8659   * as the script needs to check if its a double tap.
8660   * @name $.fn.swipe#doubleTap
8661   * @see  $.fn.swipe.defaults#doubleTapThreshold
8662   * @event
8663   * @default null
8664   * @param {EventObject} event The original event object
8665   * @param {DomObject} target The element clicked on.
8666   */
8667
8668  /**
8669   * A long tap handler triggered once a tap has been release if the tap was longer than the longTapThreshold.
8670   * You can set the time delay for a long tap with the {@link $.fn.swipe.defaults#longTapThreshold} property.
8671   * @name $.fn.swipe#longTap
8672   * @see  $.fn.swipe.defaults#longTapThreshold
8673   * @event
8674   * @default null
8675   * @param {EventObject} event The original event object
8676   * @param {DomObject} target The element clicked on.
8677   */
8678
8679  /**
8680   * A hold tap handler triggered as soon as the longTapThreshold is reached
8681   * You can set the time delay for a long tap with the {@link $.fn.swipe.defaults#longTapThreshold} property.
8682   * @name $.fn.swipe#hold
8683   * @see  $.fn.swipe.defaults#longTapThreshold
8684   * @event
8685   * @default null
8686   * @param {EventObject} event The original event object
8687   * @param {DomObject} target The element clicked on.
8688   */
8689
8690}));
8691$(document).ready(function() {
8692    var $cardTiles,
8693        $window = $(window),
8694		$cardTileWrapper = $('.cmp-tile-wrapper');
8695	
8696	LOREM.articleList = function(elem){
8697		var $elem = $(elem);
8698		var self = this;
8699		var $currentListOfArticles = $elem.closest('.cmp-tile-wrapper');
8700        var noOfTilesPerRow = $currentListOfArticles.data('tiles-per-row');
8701		self.mobile = window.matchMedia('(max-width: 767px)').matches;
8702    	self.desktop = window.matchMedia('(min-width: 992px)').matches;
8703		self.tablet = window.matchMedia('(min-width: 768px) and (max-width: 991px)').matches;
8704		self.totalItemCount = $elem.find('.cmp-card-tile').length;
8705		self.loadOnScroll = $elem.find('.cmp-tile-list-wrap').data('loadOnScroll');
8706		this.calcMaxHeight = function(){
8707			if($elem.length) {
8708				$cardTiles = $elem.find('.cmp-card-tile');
8709				if(self.desktop) {
8710					LOREM.options.bindListMaxHeight($cardTiles, noOfTilesPerRow || 3);
8711				} else if(self.tablet) {
8712					LOREM.options.bindListMaxHeight($cardTiles, noOfTilesPerRow || 2);
8713				} else {
8714					$cardTiles.css('height','');
8715				}
8716            }
8717		};
8718		this.makeArticlesVisible = function(initCount, lastCount, timer){
8719			self.timer = timer || 200;
8720			self.initCount = initCount || 0;
8721			self.lastCount = lastCount || self.maxItems;
8722			
8723			if ( self.initCount < self.lastCount ) {
8724				// this setTimeout is for lazy load of each tile
8725				setTimeout(function() {
8726					$elem.find('.cmp-tile-list').eq(initCount).addClass('make-tile-visible');
8727					self.initCount += 1;
8728					self.shownItems = self.initCount;
8729					if(self.shownItems === self.totalItemCount) {
8730						$elem.find('.cmp-tile-btn-wrapper').hide();
8731					} else {
8732						self.makeArticlesVisible(self.initCount, self.lastCount);
8733						self.calcMaxHeight();
8734					}
8735				}, timer);
8736			}	
8737		};
8738		this.showArticleList = function() {
8739			// function for initial visible items of the article list
8740			var $self,
8741				$loadMoreLink = $elem.find('.article-list-loadmore');
8742			$elem.find('.cmp-tile-list-wrap').each(function() {
8743				$self = $(this);
8744				self.maxItems = $self.data('maxItems') || $self.find('.cmp-card-tile').length;
8745				self.loadMore = $self.data('loadMore') || $self.find('.cmp-card-tile').length;
8746				for(var i=0; i<self.maxItems; i++) {
8747					$self.find('.cmp-tile-list').eq(i).addClass('showTile');
8748				}
8749			});
8750			self.makeArticlesVisible(0, self.maxItems, 200);
8751			if(!self.loadOnScroll) {
8752				$loadMoreLink.on('click', self.onClickLoadMore);
8753			} else {
8754				self.onScrollLoadItems($self);
8755			}
8756		};
8757		this.onClickLoadMore = function(e) {
8758			// function for displaying load more items after button click
8759			e.preventDefault();
8760			var $self = $(this);
8761			self.lastIndexItem = self.shownItems + self.loadMore;
8762			for(var i=self.shownItems; i<self.lastIndexItem; i++) {
8763				if ( i <= self.totalItemCount ) {
8764					$self.closest('.cmp-tile-wrapper').find('.cmp-tile-list').eq(i).addClass('showTile');	
8765				}
8766			}
8767			self.makeArticlesVisible(self.shownItems, self.lastIndexItem, 200);
8768			self.calcMaxHeight();
8769		};
8770		this.canLoad = true;
8771		this.loadTile = function(i, countLen, $selfCmpTileListWrap) {
8772			// function for load items on scroll
8773			if ( i < countLen && self.canLoad ) {
8774				self.canLoad = false;
8775				$selfCmpTileListWrap.find('.cmp-tile-list').eq(i + 1).addClass('showTile').attr('data-loaded', true);
8776				self.loadTimeout = setTimeout(function(){
8777					$selfCmpTileListWrap.find('.cmp-tile-list').eq(i + 1).addClass('make-tile-visible');
8778					self.calcMaxHeight();
8779					i += 1;
8780					if ( i <= countLen ) {
8781						self.canLoad = true;
8782					}
8783					self.loadTile(i, countLen, $selfCmpTileListWrap);
8784				}, self.timer || 200);
8785			}
8786		};
8787		this.onScrollLoadItems = function($elem) {
8788			// function for displaying load more tiles on scroll
8789			var $selfCmpTileListWrap = $elem.closest('.cmp-tile-wrapper'),
8790				countLen;
8791			self.itemsOnScrollDesktop = parseInt($selfCmpTileListWrap.find('.load-items-on-scroll-desktop').val()) || 3;
8792			self.itemsOnScrollTablet = parseInt($selfCmpTileListWrap.find('.load-items-on-scroll-tablet').val()) || 2;
8793			self.itemsOnScrollMobile = parseInt($selfCmpTileListWrap.find('.load-items-on-scroll-mobile').val()) || 1;
8794			$window.on('resize scroll', function() {
8795				var $last = $selfCmpTileListWrap.find('.cmp-tile-list.showTile').last();
8796				self.scrollIndex = $last.index();
8797				if(LOREM.options.isInViewport($last) && self.scrollIndex+1 !== $selfCmpTileListWrap.find('.cmp-tile-list').length) {
8798					if(self.desktop) {
8799						countLen = self.scrollIndex + self.itemsOnScrollDesktop;
8800					} else if(self.tablet) {
8801						countLen = self.scrollIndex + self.itemsOnScrollTablet;
8802					}
8803					else {
8804						countLen = self.scrollIndex + self.itemsOnScrollMobile;
8805					}
8806					if(self.scrollIndex < $selfCmpTileListWrap.find('.cmp-tile-list').length) {
8807						self.loadTile(self.scrollIndex, countLen, $selfCmpTileListWrap);
8808					}
8809				}
8810			});
8811		};
8812		this.calcWidthPerRow = function($elem){
8813			if (!LOREM.devices.isMobile()) {
8814	            if(noOfTilesPerRow!==undefined){
8815		            var dynamicTileWidth = $cardTileWrapper.width() / noOfTilesPerRow;
8816		            $currentListOfArticles.find('.cmp-tile-list').css('width',dynamicTileWidth+'px');
8817	            }
8818            }else{
8819            	$currentListOfArticles.find('.cmp-tile-list').css('width','100%');
8820            }
8821        };
8822		$(window).on('resize', function(){
8823			self.calcMaxHeight();
8824			self.mobile = window.matchMedia('(max-width: 767px)').matches;
8825			self.desktop = window.matchMedia('(min-width: 992px)').matches;
8826			self.tablet = window.matchMedia('(min-width: 768px) and (max-width: 991px)').matches;
8827			self.calcWidthPerRow($(this));
8828		});
8829		this.calcMaxHeight();
8830		this.showArticleList();
8831	};
8832	
8833	if($cardTileWrapper.length) {
8834        var $this;
8835		$cardTileWrapper.each(function(){
8836            $this = $(this);
8837            new LOREM.articleList($this).calcWidthPerRow($this);
8838			if ( !$this.attr('data-processed') ) {
8839				$this.attr('data-processed', 'true');
8840				new LOREM.articleList($this);
8841			}
8842		});
8843	}
8844	LOREM.options._shuffleTiles($('[data-tiles-shuffle]'));
8845	if($('.cmp-card-tile.cursorclick').length>0){
8846		 LOREM.options._entireTileClickable($('.cmp-card-tile.cursorclick'),'.cmp-article-list-fullview-link');
8847	}
8848});
8849
8850function MouseWheelHandler(e, element) {
8851  var delta = 0;
8852  if (typeof e === 'number') {
8853    delta = e;
8854  } else {
8855    if (e.deltaX !== 0) {
8856      delta = e.deltaX;
8857    } else {
8858      delta = e.deltaY;
8859    }
8860    e.preventDefault();
8861  }
8862
8863  element.scrollLeft -= (delta);
8864
8865}
8866
8867window.onload = function() {
8868  $('.cmp-carousel-container').each(function() { 
8869	  if($('.article-tile-items div.cmp-card-tile').length < 5){
8870  		$('.control-container').hide();
8871    }
8872	  var articleTileWidth = $('.article-tile-items').find('[data-sli
8872deTiles]').outerWidth(true);
8873	  var carouselId= $(this).attr('id'),
8874	      carousel = {};
8875	      carousel.e =document.getElementById(carouselId);
8876	  var articleItem = $('#'+carouselId).find('.article-tile-items').attr('id');
8877	      carousel.items = document.getElementById(articleItem);
8878	  var articleItemLeft = $('#'+carouselId).find('.left-scroll').attr('id');
8879	      carousel.leftScroll = document.getElementById(articleItemLeft);
8880	  var articleItemRight = $('#'+carouselId).find('.right-scroll').attr('id');
8881	      carousel.rightScroll = document.getElementById(articleItemRight);
8882
8883		if(carousel.items){
8884		  carousel.items.addEventListener("mousewheel", handleMouse, false);
8885		  carousel.items.addEventListener("scroll", scrollEvent);
8886		  carousel.leftScroll.addEventListener("click", leftScrollClick);
8887		  carousel.rightScroll.addEventListener("click", rightScrollClick);
8888		    setMaxHeight();
8889		  setLeftScrollOpacity();
8890		  setRightScrollOpacity();
8891		  if ($(window).width() < 992) {
8892			mobileSwipe();
8893			if($('.article-tile-items div.cmp-card-tile').length < 5){
8894		  		$('.control-container').show();
8895		    }
8896			}
8897		}
8898  
8899  function handleMouse(e) {
8900    MouseWheelHandler(e, carousel.items);
8901  }
8902
8903  function leftScrollClick() {
8904    MouseWheelHandler(articleTileWidth, carousel.items);
8905  }
8906
8907  function rightScrollClick() {
8908    MouseWheelHandler(-articleTileWidth, carousel.items);
8909  }
8910
8911  function scrollEvent(e) {
8912    setLeftScrollOpacity();
8913    setRightScrollOpacity();
8914  }
8915  
8916  function setLeftScrollOpacity() {
8917    if (isScrolledAllLeft()) {
8918      carousel.leftScroll.style.opacity = 0;
8919    } else {
8920      carousel.leftScroll.style.opacity = 1;
8921    }
8922  }
8923  
8924  function isScrolledAllLeft() {
8925    if (carousel.items.scrollLeft === 0) {
8926      return true;
8927    } else {
8928      return false;
8929    }
8930  }
8931  
8932  function isScrolledAllRight() {
8933    if (carousel.items.scrollWidth > carousel.items.offsetWidth) {
8934      if (carousel.items.scrollLeft + carousel.items.offsetWidth === carousel.items.scrollWidth) {
8935        return true;
8936      } 
8937    }    
8938    return false;
8939  }
8940  
8941  function setRightScrollOpacity() {
8942    if (isScrolledAllRight()){
8943        carousel.rightScroll.style.opacity = 0;
8944      } else {
8945        carousel.rightScroll.style.opacity = 1;
8946      }
8947  }
8948 function setMaxHeight(){
8949	   var maxHeight = -1;
8950	   var articleContainer = $('.article-tile-item-container');
8951  articleContainer.each(function() {
8952     maxHeight = maxHeight > $(this).height() ? maxHeight : $(this).height();
8953        $(this).height(maxHeight);
8954   });
8955 }
8956 function mobileSwipe(){
8957	$('#'+carouselId).swipe({
8958		swipe:function(event, direction) {
8959			if (direction == "left") {
8960				  rightScrollClick();
8961			}
8962			if (direction == "right") {
8963				  leftScrollClick();
8964			}			
8965
8966		},
8967		threshold:0
8968	});
8969}
8970  });
8971}
8972
8973
8974
8975var LOREM = window.LOREM = LOREM || {};
8976var modalVideoPageUrl;
8977LOREM.MediaGalleryModal = {
8978     _handleplaceholders:function(){
8979        if($('.place-holder').length >0){
8980     	    var targetElem = $('.media-gallery-tile.hoveredtile');
8981             var titleText = targetElem.find('.card-title').html();
8982             var descText =  targetElem.find('.card-text').html();
8983             $('.placeholder').each(function(){
8984             	if($(this).hasClass("media-gallery-article-title")){
8985                     $('.media-gallery-article-title').append(titleText);
8986                   }
8987                   else if($(this).hasClass("media-gallery-article-description")){
8988                    $('.media-gallery-article-description').append(descText);
8989                   }
8990                   else if($(this).hasClass("media-gallery-article-video")){
8991                	   LOREM.MediaGalleryModal._videoFetch($(this));
8992                   }
8993             });
8994             if(personolizedElem === true){
8995            	 $('.place-holder').addClass('media-gallery-modal');
8996				 LOREM.dataPersonolization._init();
8997             }
8998         }
8999     },
9000     _videoFetch:function($this){
9001         var targetElem = $('.media-gallery-tile.hoveredtile');
9002         var ajaxUrlFetch = targetElem.find('.card-video-url').attr('href');
9003         if(ajaxUrlFetch != undefined){
9004        	 $this.addClass('modal-video-exists');
9005	 		  $.ajax({
9006	               url: ajaxUrlFetch,
9007	               type: 'GET',
9008	               contentType: 'text/plain',
9009	               dataType: 'html',
9010	               success: function(data) {
9011	               	  $('.place-holder').find('.media-gallery-article-video').append(data);
9012	               	 if(personolizedElem === true){
9013	                       LOREM.personolizationVideoHandler._initOnLoad();
9014	                       LOREM.personolizationHandler._init();
9015	               	 }
9016	 			  }
9017	           });
9018	 		  $('#genericLightbox').on('hide.bs.modal', function () {
9019	 			 if($('.media-gallery-tile').hasClass('hoveredtile')){
9020						$('.media-gallery-tile').removeClass('hoveredtile');
9021               }
9022	 			 if($('.placeholder .cmp-video').length >0){
9023	 				 jwplayer().stop();
9024	 			 }	 	         
9025	 	      });
9026         }
9027     },
9028     _videoClose:function(){
9029    	 if($('.placeholder .cmp-video').length >0){
9030   		  jwplayer().stop();
9031  		  }
9032	   }
9033}
9034$(document).ready(function() {
9035	var deepLinkParameter = window.location.href.split('#')[1];
9036	var dataArticleIdentifier = $('.media-gallery-tile[data-article-identifier]');
9037	if($('.media-gallery-tile').length>0){
9038	    LOREM.options._entireTileClickable($('.media-gallery-tile'),'.media-gallery-modallink',dataArticleIdentifier);
9039	}
9040	if (deepLinkParameter !== undefined) {
9041	    if (dataArticleIdentifier.length > 0) {
9042	    	dataArticleIdentifier.each(function() {
9043	            if ($(this).data('article-identifier') === deepLinkParameter) {
9044	                $(this).addClass('hoveredtile');
9045	            }
9046	        });
9047	    	if($('.media-gallery-tile.hoveredtile').length >0){
9048		    	setTimeout(function() {
9049	             $('.media-gallery-tile.hoveredtile').click();
9050	             LOREM.UTILS._showLoader();
9051	             },1000);
9052	    	}
9053	    }
9054	}
9055});
9056
9057$(document).ready(function(){
9058    LOREM.utilityNav={
9059	    checkUtilityNavSticky:function(){
9060	    	var stickyUtilityVal = $('.cmp-utilitynav-wrapper').data('sticky-utilitynav');
9061		    if(stickyUtilityVal){
9062		    	LOREM.utilityNav.isUtilityNavSticky();
9063		    }
9064	    },
9065		 isUtilityNavSticky:function() {
9066			var $header = $('.header-mainnav-wrapper');
9067			var $mobileHeader = $('.header-utilitynav-wrapper');
9068			var $utilitynavDiv =  $('.cmp-utilitynav-wrapper');
9069			var $countryDropdown = $('.country-dropdown');
9070			var notificationScrollVal = 0;
9071            //if ($('.cmp-notification').length > 0) {
9072               // if (!LOREM.notificationBanner._checkNotificationContainerSticky()) {
9073                //    notificationScrollVal = LOREM.notificationBanner._isnotificationContainerTop();
9074               // }
9075            //}
9076			if (window.pageYOffset > notificationScrollVal ) {
9077	            var topPaddingVal = 0;
9078	            var topPaddingNotificationVal = 0;
9079	            $utilitynavDiv.addClass('sticky');
9080                if($('.header-variation-leftnav').length > 0){
9081                $('.header-variation-leftnav').addClass('sticky');
9082                }
9083				$countryDropdown.addClass('country-sticky');
9084	            topPaddingVal = $utilitynavDiv.outerHeight();
9085	            //if (LOREM.notificationBanner._checkNotificationContainerSticky()) {
9086                   // $utilitynavDiv.css({
9087                      //  'top': LOREM.notificationBanner._isnotificationContainerTop()
9088                  //  });
9089                //}
9090	            if (!LOREM.devices.isDesktop()) {
9091	            	$mobileHeader.css({
9092						'padding-top': topPaddingVal + topPaddingNotificationVal
9093					});
9094	            }else{
9095		            $header.css({
9096						'padding-top': topPaddingVal + topPaddingNotificationVal
9097					});
9098	            }
9099	            
9100			} else {
9101				$utilitynavDiv.removeClass('sticky');
9102                if($('.header-variation-leftnav').length > 0){
9103                $('.header-variation-leftnav').removeClass('sticky');  
9104                }
9105				$countryDropdown.removeClass('country-sticky');
9106				$header.css({
9107					'padding-top': 0
9108				});
9109				$mobileHeader.css({
9110					'padding-top': 0
9111				});
9112			}
9113		}
9114	}
9115    $(window).on('load scroll resize', function () {
9116			LOREM.utilityNav.checkUtilityNavSticky();
9117	});
9118	$(document.body).on('touchmove', function(){
9119        LOREM.utilityNav.checkUtilityNavSticky();
9120   });
9121});
9122$(document).ready(function() {
9123	var $searchForm = $('.search-section').find('.searchInputForm'),
9124    minLengthMsg = $('.search-section').find('input[name="minLengthMsg"]').val();
9125    if(minLengthMsg == "" || minLengthMsg == undefined){
9126      minLengthMsg= "please enter at least 3 characters";
9127    }
9128	LOREM.search = {
9129		_autoload: [
9130			'bindEvents'
9131		],
9132		bindEvents: function() {
9133			$(document).on('click', '.search-icon, .search-section-closebtn', LOREM.search._closeSearchBar);
9134			$searchForm.on('submit', LOREM.search._searchInputField);
9135		},
9136		/*  function is for closing the search bar when it is opened on click  */
9137		_closeSearchBar: function(e) {
9138			e.preventDefault();
9139			var $self = $(this),
9140				$searchSection;
9141			if($self.hasClass('search-icon')){
9142			    $searchSection = $self.closest('.cmp-search').find('.search-section');
9143			    $searchSection.toggleClass('hide-search');
9144				$searchSection.find(".search-section-input").focus();
9145			}else{
9146				$self.closest('.search-section').toggleClass('hide-search');
9147			}
9148			
9149		},
9150		/*  function to redirect page for searching input field  */
9151		_searchInputField: function() {
9152			 var searchRegex = $('.search-section').find('input[name="searchRegex"]').val(),
9153				 searchInput = $(this).find('.search-section-input').val(),
9154                 searchErrorElem=$(this).find('.search-section-error');
9155			 if(searchRegex == "" || searchRegex == undefined){ 
9156                 searchRegex = /^[0-9a-zA-Z, ]+[0-9a-zA-Z]{1}$/;
9157                 if(searchInput.length <= 2) {
9158                   searchErrorElem.html(minLengthMsg);
9159                   searchErrorElem.removeClass('hidden');
9160				   return false;
9161                 }
9162             }else{
9163                var pattern = new RegExp(searchRegex);
9164                if(!pattern.test(searchInput)){
9165                     searchErrorElem.html(minLengthMsg);
9166                     searchErrorElem.removeClass('hidden');
9167				     return false;
9168                }
9169
9170		    }
9171        }
9172	};
9173});
9174$(document).ready(function () {
9175	var $navbar = $('#header-mainnav-wrapper'),
9176        $headerEl = $('header.header'),
9177        $mobileHeader = $('.header-utilitynav-wrapper'),
9178		$miniLogo = $navbar.find('.mini-logo'),
9179		$body = $('body'),
9180		onLoadTargetElem,
9181		checkScrollFlag = false,
9182		options = {
9183			height: 0
9184		},
9185        canMobileSticky,
9186        isMobile,
9187		navHeight,
9188		winHeight,
9189		difHeight;
9190	if(window.location.href.split('#')[1]) {
9191		onLoadTargetElem = '#' + window.location.href.split('#')[1].split('?')[0];
9192	}
9193	if (screen.width <= 991) {
9194		navHeight = $('.cmp-main-nav-container').height();
9195		winHeight = $(window).height();
9196		if (navHeight > winHeight){
9197			 difHeight = navHeight - winHeight;
9198			$('.cmp-main-nav-container').css('top','calc(-100% - ' + difHeight + 'px)');
9199		}
9200	}
9201
9202	LOREM.mainnav = {
9203        
9204		_autoload: ['init', 'checkMainNavSticky'],
9205		init: function () {
9206            canMobileSticky = $headerEl.hasClass('sticky-mobile-header');
9207            
9208			/*event handler for hamburger icon to show the hamburger menu in mobile/tablet*/
9209			$(document).on('click', '.cmp-main-nav-btn', function () {
9210				$('.cmp-main-nav-container').css('top','0').addClass('mobile-collapsible');
9211				setTimeout(function () {
9212					$('.navbar-close').show();
9213				}, 350);
9214				if ($('.cmp-notification').length > 0) {
9215                	$('.cmp-notification').addClass('mobileIndex');
9216                }
9217			});
9218
9219			/*event handler for close button to hide the hamburger menu in mobile/tablet*/
9220			$(document).on('click', '.navbar-close', function () {
9221				if (screen.width <= 991) {
9222					if (navHeight > winHeight){
9223						difHeight = navHeight - winHeight;
9224						$(this).closest('.cmp-main-nav-container').css('top','calc(-100% - ' + difHeight + 'px)');
9225					}
9226					else{
9227						$(this).closest('.cmp-main-nav-container').removeClass('mobile-collapsible').css('top','-100%');
9228					}
9229				}
9230				if ($('.cmp-notification').length > 0) {
9231                	$('.cmp-notification').removeClass('mobileIndex');
9232                }
9233			});
9234
9235			/*event handler for mobile dropdown to show inner dropdown on click of arrow icon*/
9236			$(document).on('click', 'ul.nav li.nav-item.dropdown.dropdown .dropdown-toggle-icon', function (e) {
9237				var $arrow = $(this);
9238                if($(this).closest('li').hasClass('dropdown-item-with-menu')){
9239                    var	$parentDropdown = $arrow.closest('.dropdown'),
9240					$childDropdown = $arrow.siblings('.dropdown-menu'),
9241					$remainingDropdowns = $parentDropdown.siblings('.dropdown');
9242				$remainingDropdowns.removeClass('show-inner-dropdown');
9243				$remainingDropdowns.find('.dropdown-menu').removeClass('show');
9244				if ($childDropdown.hasClass('show')) {
9245                    $(e.target).removeClass("expand");
9246                    $childDropdown.removeClass('show');
9247				} else {
9248					$childDropdown.addClass('show');
9249                    $(e.target).addClass("expand");
9250				}
9251
9252                }else{
9253				var	$parentDropdown = $arrow.closest('.dropdown'),
9254					$childDropdown = $arrow.siblings('.dropdown-menu'),
9255					$remainingDropdowns = $parentDropdown.siblings('.dropdown');
9256				$remainingDropdowns.removeClass('show-inner-dropdown');
9257				$remainingDropdowns.find('.dropdown-menu').removeClass('show');
9258				if ($parentDropdown.hasClass('show-inner-dropdown')) {
9259					$parentDropdown.removeClass('show-inner-dropdown');
9260					$childDropdown.removeClass('show');
9261                    $(e.target).removeClass("expand");
9262				} else {
9263					$parentDropdown.addClass('show-inner-dropdown');
9264					$childDropdown.addClass('show');
9265                    $(e.target).addClass("expand");
9266				}
9267               }      
9268
9269			});
9270
9271
9272
9273			$( window ).resize(function() {
9274                if ($(window).width() < 992) {
9275                  $( "li.nav-item.dropdown.active-link" ).addClass('show-inner-dropdown');
9276                  $( "ul.dropdown-menu.active-child-link " ).addClass('show');
9277                  $( "li.dropdown-item.active-child-innerlink " ).addClass('highlight-item');
9278              }else{
9279                  $( "li.nav-item.dropdown.active-link" ).removeClass('show-inner-dropdown');
9280                  $( "ul.dropdown-menu.active-child-link " ).removeClass('show');
9281                  $( "li.dropdown-item.active-child-innerlink " ).removeClass('highlight-item');
9282              }
9283          });
9284            
9285
9286		},
9287		checkMainNavSticky: function () {
9288            //console.log($headerEl);
9289            mobileSticky = canMobileSticky && window.matchMedia('(max-width: 991px)').matches;
9290            
9291            if(mobileSticky) {
9292            	if ($('.cmp-notification').length > 0) {
9293                    if ($('.cmp-notification').hasClass('sticky')){
9294						options['height'] = 0;
9295                   		LOREM.mainnav._makeMainNavSticky(options);
9296                    }
9297                    else {
9298						options['height'] = LOREM.notificationBanner._isnotificationContainerTop();
9299                   		LOREM.mainnav._makeMainNavSticky(options);
9300                    }
9301                } 
9302               else if($mobileHeader.hasClass('sticky')) {
9303                    options['height'] = $('header').outerHeight();
9304                    LOREM.mainnav._makeMainNavSticky(options);
9305                } else {
9306                    options['height'] = $mobileHeader.offset().top;
9307                    LOREM.mainnav._makeMainNavSticky(options);
9308                }
9309            } else {
9310            	if ($('.cmp-notification').length > 0) {
9311                    if ($('.cmp-notification').hasClass('sticky')){
9312						options['height'] = $('header.header').outerHeight() - $navbar.outerHeight();
9313                   		LOREM.mainnav._makeMainNavSticky(options);
9314                    }
9315                    else {
9316						options['height'] = $('header.header').outerHeight() + LOREM.notificationBanner._isnotificationContainerTop() - $navbar.outerHeight();
9317                   		LOREM.mainnav._makeMainNavSticky(options);
9318                    }
9319                }
9320                else if ($navbar.hasClass('sticky')) {
9321                    options['height'] = $('header').outerHeight();
9322                    LOREM.mainnav._makeMainNavSticky(options);
9323                } else if ($('.cmp-main-nav-container').hasClass('sticky-nav')) {
9324                    options['height'] = $navbar.offset().top;
9325                    LOREM.mainnav._makeMainNavSticky(options);
9326                }
9327            }
9328			
9329			if(onLoadTargetElem && $(onLoadTargetElem).length && !checkScrollFlag) {
9330                LOREM.options._calcTargetPosition(onLoadTargetElem);
9331                checkScrollFlag = true;
9332            }
9333            
9334			
9335		},
9336		/*to make main nav sticky*/
9337		_makeMainNavSticky: function (opt) {
9338            mobileSticky = canMobileSticky && window.matchMedia('(max-width: 991px)').matches;
9339			if (window.pageYOffset >= opt.height && window.pageYOffset > 0) {
9340                var topPaddingVal = 0;
9341                if(mobileSticky) {
9342                    $mobileHeader.addClass('sticky');
9343                    $navbar.removeClass('sticky');
9344                    $miniLogo.removeClass('show-mini-logo');
9345                    topPaddingVal = $mobileHeader.outerHeight();
9346                    /*to make mobile nav sticky after notification banner exist*/
9347                    if ($('.cmp-notification').length > 0) {
9348                        topPaddingVal = 0;
9349                        if (LOREM.notificationBanner._checkNotificationContainerSticky()) {
9350                            $mobileHeader.css({
9351                                'top': LOREM.notificationBanner._isnotificationContainerTop()
9352                            });
9353                        }
9354                    }
9355                } else {
9356                	if ($('.cmp-main-nav-container').hasClass('sticky-nav')) {
9357						$navbar.addClass('sticky');
9358                    }
9359                    $navbar.addClass('sticky');
9360                    $miniLogo.addClass('show-mini-logo');
9361                    $mobileHeader.removeClass('sticky');
9362                    topPaddingVal = $navbar.outerHeight();
9363                    /*to make main nav sticky after notification banner if sticky and exist*/
9364                    if ($('.cmp-notification').length > 0) {
9365						topPaddingVal = 0;
9366                        if (LOREM.notificationBanner._checkNotificationContainerSticky()) {
9367                            $navbar.css({
9368                                'top': LOREM.notificationBanner._isnotificationContainerTop()
9369                            });
9370                        }
9371                    }
9372                }
9373								
9374				$body.css({
9375					'padding-top': topPaddingVal
9376				});
9377			} else {
9378                $mobileHeader.removeClass('sticky');
9379                $navbar.removeClass('sticky');
9380				$miniLogo.removeClass('show-mini-logo');
9381
9382				$body.css({
9383					'padding-top': 0
9384				});
9385			}
9386		}
9387	}
9388
9389	$(window).on('scroll resize', function () {
9390		LOREM.mainnav.checkMainNavSticky();
9391	});
9392
9393 $(".dropdown-menu").each(function(index){
9394    if(!$(this).find("li").length){
9395        $(this).hide();
9396        $(this).closest('li').find('.dropdown-toggle-icon').hide();
9397    }
9398});
9399
9400});
9401$(document).ready(function() {
9402    var $referenceList,
9403        $window = $(window);
9404    LOREM.referenceList = {
9405        _autoload: [
9406            'calcMaxHeight'
9407        ],
9408        calcMaxHeight: function() {
9409            /* calculate max heights of each CTA component */
9410            $referenceList = $('.reference .cta-btn-wrapper');
9411            if($referenceList.length) {
9412                if($window.width() > 991) {
9413                    LOREM.options.bindListMaxHeight($referenceList, 2);
9414                }
9415                else {
9416                    $referenceList.css('height','auto');
9417                }
9418            }
9419        }
9420    }
9421});
9422$(window).resize(function() {
9423    /* calculate max heights of each CTA component on resize */
9424    LOREM.referenceList.calcMaxHeight();
9425});
9426$(document).on('click', '.make-ctanavclickable', function(){
9427		 window.location.href = $(this).data('ctanavurl');
9428})
9429let heroFullPlaylist;
9430let playListCounter = 0;
9431let heroImagePath;
9432let playOption;
9433LOREM.backgroundVideoHandler = {
9434    _init: function($videoEl) {
9435        var currentItem = $videoEl.find('.cardcontainer-video').attr('id');
9436        LOREM.backgroundVideoHandler._getJsonPlayList($videoEl);
9437        if (heroFullPlaylist.length > 0) {
9438            LOREM.backgroundVideoHandler._setupBackgrounPlayer('0', currentItem, $videoEl, playOption, heroImagePath, heroFullPlaylist);
9439        }
9440    },
9441    _allVideoInstance: function(playListCounter, currentVideoItem, heroFullPlaylist) {
9442        jwplayer(currentVideoItem).setup({
9443            playlist: heroFullPlaylist.slice(playListCounter, playListCounter + 1),
9444            controls: false,
9445            mute: true,
9446            autostart: true,
9447            stretching: 'stretching',
9448        });
9449    },
9450    _onCompleteVideo: function(playListCounter, currentVideoItem, $videoEl, playOption, heroImagePath, heroFullPlaylist) {
9451        jwplayer(currentVideoItem).on('complete', function() {
9452            jwplayer(currentVideoItem).remove();
9453            playListCounter++;
9454            if (playOption == 'repeatall') {
9455                if (heroFullPlaylist.length == playListCounter) playListCounter = 0;
9456                if ((heroFullPlaylist.length >= playListCounter) || ($videoEl.data('repeat') == false && heroFullPlaylist.length > playListCounter)) {
9457                    LOREM.backgroundVideoHandler._setupBackgrounPlayer(playListCounter, currentVideoItem, $videoEl, playOption, heroImagePath, heroFullPlaylist);
9458                }
9459            } else if (playOption == 'repeatfianlvideo') {
9460                if (heroFullPlaylist.length == playListCounter) playListCounter = heroFullPlaylist.length - 1;
9461                LOREM.backgroundVideoHandler._setupBackgrounPlayer(playListCounter, currentVideoItem, $videoEl, playOption, heroImagePath, heroFullPlaylist);
9462            } else if (playOption == 'showvideothumbnail') {
9463                if (heroFullPlaylist.length == playListCounter) {
9464                    document.getElementById(currentVideoItem).innerHTML = "<img src='" + heroImagePath + "' style='width: 100%'/>";
9465                } else {
9466                    LOREM.backgroundVideoHandler._setupBackgrounPlayer(playListCounter, currentVideoItem, $videoEl, playOption, heroImagePath, heroFullPlaylist);
9467                }
9468            }
9469        });
9470    },
9471    _getJsonPlayList: function($videoEl) {
9472        var videosPlayList = $videoEl.data('video-playlist'),
9473            desktopVideoOptions = $videoEl.data('video-desktopoptions'),
9474            desktopVideoThumbnailPath = $videoEl.data('video-thumbnailpath'),
9475            mobileVideoOptions = $videoEl.data('video-mobileooptions'),
9476            mobileVideoThumbnailPath = $videoEl.data('video-mobilethumbnailpath');
9477        if (videosPlayList) {
9478            if (LOREM.devices.isMobile()) {
9479                heroFullPlaylist = videosPlayList.mobilevideolist;
9480                heroImagePath = mobileVideoThumbnailPath;
9481                playOption = mobileVideoOptions;
9482            } else {
9483                heroFullPlaylist = videosPlayList.desktopvideolist;
9484                heroImagePath = desktopVideoThumbnailPath;
9485                playOption = desktopVideoOptions;
9486            }
9487        }
9488    },
9489    _setupBackgrounPlayer: function(playListCounter, currentVideoItem, $videoEl, playOption, heroImagePath, videosPlayList ) {
9490        LOREM.backgroundVideoHandler._allVideoInstance(playListCounter, currentVideoItem, videosPlayList);
9491        LOREM.backgroundVideoHandler._onCompleteVideo(playListCounter, currentVideoItem, $videoEl, playOption, heroImagePath, videosPlayList );
9492    }
9493}
9494
9495$(document).ready(function() {
9496    if ($('.video-background').length) {
9497        $('.video-background').each(function() {
9498            LOREM.backgroundVideoHandler._init($(this));
9499            if ($(this).find('.hero-content').html().trim() === "") {
9500                $(this).find('.hero-content').remove();
9501            }
9502        });
9503    }
9504});
9505$(".unmute-video").click( function (){
9506      var video = $(this).parent().find('video');
9507    if( $(video).prop('muted') ) {
9508          $(video).prop('muted', false);
9509    } else {
9510      $(video).prop('muted', true);
9511    }
9512  });
9513$(document).ready(function(){
9514	var $body = $("body"),
9515      $cmpISI = $('.cmp-isi'),
9516      $isiOverlay = $('.isi-overlay'),
9517	  cookieName = 'isi-state',
9518      suppressCookie= $('input[name=suppressRememberStatus]').val(),
9519      defaultView = $('input[name=defaultTrayStatus]').val(),
9520      enableExpandButton= $('input[name=enableExpandButton]').val(),
9521      enableCollapseButton = $('input[name=enableCollapseButton]').val()
9522      if(suppressCookie ==='true') {
9523        $.removeCookie(cookieName, { path: '/' });
9524      }
9525      if($.cookie(cookieName) === 'true' ) {
9526        collapsedView();
9527      } else {
9528        if(defaultView === 'collapsed'){
9529          collapsedView();
9530        } else if(defaultView === 'expanded') {
9531          expandedView();
9532        } else {
9533          previewView();
9534        }
9535      }
9536
9537    function collapsedView() {
9538      $cmpISI.find('.isi-container').hide();
9539      $cmpISI.find('.preview-container').show();
9540      $cmpISI.find('.expand-container').hide();
9541      $cmpISI.removeClass('is-collapsed is-expanded').addClass('is-preview');
9542      $isiOverlay.hide();
9543      $body.removeClass('no-scroll');
9544	  $body.parent().removeClass('no-scroll');
9545      if($.cookie(cookieName) !== 'true' && suppressCookie !=='true') {
9546      $.cookie(cookieName,'true',{ path: '/' });
9547      }
9548    };  
9549
9550    function expandedView() {
9551     $cmpISI.find('.isi-container').hide();
9552     $cmpISI.find('.expand-container').show();
9553     $cmpISI.removeClass('is-collapsed is-preview').addClass('is-expanded');
9554     $isiOverlay.show();
9555     $body.addClass('no-scroll');
9556	 $body.parent().addClass('no-scroll');
9557     $.removeCookie(cookieName, { path: '/' });
9558	    if (($cmpISI).find('.isi-footer-wrapper').length  == 0) {
9559            $body.find('.isi-footer-wrapper').clone().appendTo(".cmp-isi.is-expanded .expand-container");
9560        }
9561    };
9562
9563    function previewView() {
9564     if(enableExpandButton=='true'&& enableCollapseButton=='true'){
9565     previewCheckbox();
9566      }
9567     else if(enableExpandButton=='true'&& enableCollapseButton=='false'){
9568     previewCheckbox();
9569     }
9570     else{
9571     $cmpISI.find('.isi-container').show();
9572     $cmpISI.find('.preview-container').hide();      
9573     $cmpISI.find('.expand-container').hide();     
9574     $cmpISI.removeClass('is-preview is-expanded').addClass('is-collapsed');
9575     $isiOverlay.hide();
9576     $body.removeClass('no-scroll');
9577	 $body.parent().removeClass('no-scroll');
9578     $.removeCookie(cookieName, { path: '/' });
9579     }
9580    };
9581
9582    function previewCheckbox(){
9583      var $this = $('.isi-overlay'),
9584      $isiContainer = $this.siblings('.cmp-isi'),
9585      $isiChildren = $isiContainer.find('.collapse-container');
9586      $cmpISI.find('.isi-container').show();
9587      $cmpISI.find('.preview-container').hide();      
9588      $cmpISI.find('.expand-container').hide();
9589      $cmpISI.removeClass('is-preview is-expanded').addClass('is-collapsed');
9590      $isiOverlay.hide();
9591      if($isiChildren.find('.more-text-container').length>0 && $isiChildren.find('.hide-text-container').length>0){
9592      $isiChildren.find('.more-text-container').addClass('overridealignright');
9593      $isiChildren.find('.hide-text-container').addClass('overridealignright');
9594      }
9595     }
9596   $(document).on('click','.hide-text-container .up-arrow, .hide-text-container .down-arrow',function(e){
9597       e.stopPropagation();
9598       var $this = $(this),
9599       $parentContainer = $this.closest('.cmp-isi');
9600       $parentContainer.find('.isi-container').hide();
9601       if($this.hasClass('preview-container')){
9602       expandedView();
9603       }else{
9604       collapsedView();           
9605       }
9606    }); 
9607      $(document).on('click','.more-text-container .up-arrow',function(e){
9608        var $this = $(this),
9609        $parentContainer = $this.closest('.cmp-isi');
9610        $parentContainer.find('.isi-container').hide();
9611        $parentContainer.find('.expand-container').show();
9612        $parentContainer.removeClass('is-collapsed is-preview').addClass('is-expanded');
9613        $isiOverlay.show();
9614		if (($parentContainer).find('.isi-footer-wrapper').length == 0) {
9615            $body.find('.isi-footer-wrapper').clone().appendTo(".cmp-isi.is-expanded .expand-container");
9616        }
9617		$body.addClass('no-scroll');
9618		$body.parent().addClass('no-scroll');
9619       });
9620     $(document).on('click','.isi-overlay',function(){
9621        var $this = $(this),
9622        $isiContainer = $this.siblings('.cmp-isi');
9623        $this.hide();
9624        $isiContainer.find('.isi-container').hide();
9625        $isiContainer.find('.preview-container').show();
9626        $isiContainer.removeClass('is-collapsed is-expanded').addClass('is-preview');
9627		$body.removeClass('no-scroll');
9628		$body.parent().removeClass('no-scroll');
9629        if($.cookie(cookieName) !== 'true') {
9630        $.cookie(cookieName,'true',{ path: '/' });
9631         }
9632     });
9633	$(window).on('resize', function() {
9634		if($('.cmp-isi.sticky-element .isi-container.collapse-container').css('display') !== 'none'){
9635		    resizeISI();
9636		}
9637	});
9638
9639  	function resizeISI() {
9640        if($(window).width() < 1263) {      
9641          $('.cmp-isi.sticky-element .isi-container.collapse-container').addClass('resize-isi');
9642        } else {
9643  		    $('.cmp-isi.sticky-element .isi-container.collapse-container').removeClass('resize-isi');
9644        }
9645    }
9646});
9647$(document).ready(function() {
9648	var	$cardTilesWrapper = $('.cmp-article-tile.cursorclick');
9649	if($cardTilesWrapper.length) {
9650		LOREM.options._entireTileClickable($cardTilesWrapper,'.cmp-article-tile-fullview-link');
9651	}
9652});
9653$(document).ready(function() {
9654    LOREM.ctaTile = {
9655        _autoload: [
9656			'makeTileClickable'
9657        ],
9658        makeTileClickable: function() {
9659		   var $ctatileWraper = $('.cmp-cta-tile');
9660		   if($ctatileWraper.length) {    
9661			  LOREM.options._entireTileClickable($ctatileWraper,'.cmp-cta-tile-fullview-link');
9662		   }
9663        	}
9664    };
9665});
9666$(document).ready(function(){
9667	var $footerIsiElement = $('.cmp-footer-isi-content-element'),
9668		$isiTray = $('.cmp-isi'),
9669		$window =$(window),
9670		$backToTopWrapper = $('.cmp-backToTop-wrapper'),
9671		$backToTopLink = $backToTopWrapper.find('.backToTop-link'),
9672		$header = $('.header'),
9673		backToTopScrollHeight = $header.outerHeight();
9674	LOREM.footer = {
9675		_autoload: ['isiTrayVisibleFunc', 'backToTopFunc'],
9676		isiTrayVisibleFunc: function() {
9677			backToTopScrollHeight = $header.outerHeight() - $header.find('.header-mainnav-wrapper.sticky').outerHeight() || $header.outerHeight();
9678			var isiPaddingTop = parseInt($('.isi-content').css('padding-top')) + 100;
9679			if($footerIsiElement.length > 0 && $isiTray.length > 0){
9680				$window.scrollTop()  >= ($footerIsiElement.offset().top + isiPaddingTop) - $window.height() ? $isiTray.hide() : $isiTray.show();
9681			}
9682			if($window.scrollTop() > backToTopScrollHeight) {
9683				$backToTopWrapper.fadeIn();
9684			} else {
9685				$backToTopWrapper.fadeOut();
9686			}
9687		},
9688		backToTopFunc: function() {
9689			if($window.scrollTop() > backToTopScrollHeight) {
9690				$backToTopWrapper.fadeIn();
9691			} else {
9692				$backToTopWrapper.fadeOut();
9693			}
9694			$backToTopLink.on('click', function(e) {
9695				e.preventDefault();
9696				var $header = $('header');
9697				LOREM.options.scrollToFocusElem($header);
9698			});
9699		}
9700	};
9701	$window.on('resize scroll', function() {
9702		LOREM.footer.isiTrayVisibleFunc();
9703	});
9704});
9705$(document).ready(function () {
9706	$(document).on('click', '.tab-link', function(e){
9707        appendQueryParameter(e,$(this));
9708    });
9709	if (!LOREM.devices.isDesktop()) {
9710		getAccordion();
9711		showRelatedAccordion();
9712	} else {
9713		showRelatedTab();
9714	}
9715	$(document).on('click', '.custom-tab-item a', function(e) {
9716	    e.preventDefault();
9717	    var $tabContentDiv = $(this).closest('.cmp-tabs').find('.custom-tab-content .custom-tab-pane');
9718	    if ($(this).hasClass('active')) {
9719	        $(this).removeClass('active');
9720	        $tabContentDiv.removeClass('active');
9721	    } else {
9722	        $(this).parent().siblings().find('a').removeClass('active');
9723	        $tabContentDiv.removeClass('active');
9724	        $(this).addClass('active');
9725	        $($(this).attr('href')).addClass('active');
9726	    }
9727	    appendQueryParameter(e,$(this));
9728	});
9729	$(".accordion-mobile .accordion-link").click(function (e) {
9730		e.preventDefault();
9731		var accordionContainer = $(this).parent().parent().find('.accordion-collapse');
9732        $(this).toggleClass('collapse-view');
9733		if (accordionContainer.hasClass('collapse')) {
9734			accordionContainer.removeClass('collapse');
9735		} else {
9736			accordionContainer.addClass('collapse');
9737		}
9738		$(this).parent().parent().siblings().find('.accordion-collapse').addClass('collapse');
9739        $('.accordion-link').not($(this)).removeClass('collapse-view');
9740		appendQueryParameter(e,$(this));
9741
9742	});
9743});
9744/* adds the new reference key based on user selected tab */
9745function appendQueryParameter(e,$this) {
9746    var	referenceKey = $this.data('referencekey'),
9747	newUrl = LOREM.options.getFormattedUrl('tabKey', referenceKey);
9748	if (history.pushState) {
9749        window.history.pushState({path:newUrl},'',newUrl);
9750    }
9751	e.stopImmediatePropagation();
9752	return;
9753}
9754/*shows a realted accordion in open state based on reference key present in current URL.*/
9755function showRelatedAccordion() {
9756	var currentUrl = window.location.href,
9757		referenceKey = '',
9758		$accordionLinks = $('.accordion-link');
9759	if (currentUrl.indexOf('tabKey') >= 0) {
9760		referenceKey = currentUrl.split('tabKey=')[1];
9761		referenceKey = referenceKey.indexOf('&') >= 0 ? referenceKey.split('&')[0] : referenceKey;
9762	}
9763	if (referenceKey !== '') {
9764		$accordionLinks.each(function () {
9765			var $this = $(this);
9766			if ($this.data('referencekey') && ($this.data('referencekey') === referenceKey)) {
9767				$(this).parent().parent().find('.accordion-collapse').removeClass('collapse');
9768				$(this).parent().parent().siblings().find('.accordion-collapse').addClass('collapse');
9769				$('html, body').stop().animate({
9770                    scrollTop: $(this).parent().parent().offset().top - LOREM.options._calStickyHeaderHeight()
9771                }, 1000);
9772			}
9773		})
9774	}
9775}
9776/*shows a realted tab in open state based on reference key present in 
9777   current URL.if no key present shows the tabs component in default state*/
9778function showRelatedTab(){
9779	var currentUrl = window.location.href,
9780	referenceKey = '',
9781	$navLinks = $('.cmp-tabs').find('ul.tabs-list li a') ;
9782	if(currentUrl.indexOf('tabKey') >= 0){
9783		referenceKey = currentUrl.split('tabKey=')[1];
9784		referenceKey = referenceKey.indexOf('&') >= 0 ? referenceKey.split('&')[0] : referenceKey; 
9785	}
9786	if(referenceKey !== ''){
9787		$navLinks.each(function(){
9788			var $this = $(this);
9789			if($this.data('referencekey') && ($this.data('referencekey') === referenceKey)) {
9790				$this.parent().siblings().find('a').removeClass('active');
9791		        $this.closest('.cmp-tabs').find('.tab-content-wrapper .tab-content-div').removeClass('active');
9792				$this.addClass('active show');
9793				$('html, body').stop().animate({
9794                    scrollTop: $this.offset().top - LOREM.options._calStickyHeaderHeight()
9795                }, 1000);
9796				var self_href = $this.attr('href') || '';
9797				if(self_href) {
9798					$(self_href).addClass('active show');
9799				}
9800			}
9801		})
9802	}
9803}
9804/*to convert from tab view to accordion view for mobile*/
9805function getAccordion() {
9806	var tabElem = $(".cmp-tabs");
9807	tabElem.each(function () {
9808		var tabList = $(this).find('ul.tabs-list li').toArray();
9809        var tabContElem = $(this).find('.tab-content-wrapper .tab-content-div ').toArray();
9810		var concatElem = '';
9811		$.each(tabList, function (n, val) {
9812			concatElem += '<div  class="accordion-panel">';
9813			concatElem += '<h4 class="accordion-title"><a class="accordion-link" data-toggle="collapse" aria-expanded="false" data-referencekey="' + $(val).find('a').attr('data-referencekey') + '" href="' + $(val).find('a').attr('href') + '" >' + val.innerText + '</a></h4>';
9814			concatElem += '<div class="accordion-collapse collapse">';
9815			concatElem += '<div class="accordion-body">' + tabContElem[n].innerHTML + '</div>';
9816			concatElem += '</div>';
9817			concatElem += '</div>';
9818		});
9819		if (typeof GigyaSiteConfigJson !== 'undefined' && GigyaSiteConfigJson.SiteId === '517') {
9820			var data = $(this).parent().find('.accordion-mobile');
9821			data[0].innerHTML += concatElem;
9822		} else {
9823			$(this).parent().find('.accordion-mobile').html(concatElem);
9824		}
9825		$(this).css('display', 'none');
9826		$(this).find(".tab-content").css('display', 'none');
9827	});
9828}
9829$(document).ready(function(){
9830	 LOREM.Modal = {
9831		exitModalJson :{},
9832		init : function(){
9833
9834			LOREM.Modal.bindEvents();
9835			$(".exit-modal").length > 0 ? LOREM.Modal.getExitModalData() : '';
9836			$('#entryModal').length > 0 ? LOREM.Modal.initialiseCookieSetupForModal($('#entryModal')): '';
9837            $('#preferenceModal').length > 0 ? LOREM.Modal.initialiseCookieSetupForModal($('#preferenceModal')): '';
9838		},
9839		bindEvents : function(){
9840			$(document).on('click','.generic-modal-button',LOREM.Modal.setCookieIfRequired);
9841		},
9842		bindExitEvents :function(){
9843			$(document).on('click',"a:not([href^='#']):not('.contact-support-link'):not('.modal-button'):not('[data-lightbox-trigger]'):not('.open-modal')",LOREM.Modal.createExitModal);
9844			$(document).on('click','.destination-button',LOREM.Modal.updateTargetUrl);
9845		},
9846		getExitModalData : function(){
9847				$.ajax({
9848					url: $("#exitModalTargetPath").val() ,
9849					/*data:{currentPagePath : $("#resourcePath").val()},*/
9850					success:function(resp){
9851						LOREM.Modal.exitModalJson = resp;
9852						LOREM.Modal.bindExitEvents();
9853					},
9854					error:function(){
9855						
9856					}
9857				})
9858		},
9859		/*intialises cookies for modal popups*/
9860		initialiseCookieSetupForModal :function($modal){
9861			var modalPath = $modal.find('.modal-details').data('modalpath');
9862			if(modalPath !== '' && modalPath !== undefined){
9863                if($.cookie('cq-authoring-mode') == 'TOUCH'){
9864                    LOREM.Modal.showModal($modal,modalPath + '/jcr:content/root.html?wcmmode=disabled');
9865                }else{
9866				    LOREM.Modal.showModal($modal,modalPath + '/jcr:content/root.html');
9867                }  
9868			}
9869		},	
9870		/*sets cookie based on page properties*/			
9871		setCookieIfRequired : function(evt){ 
9872			evt.stopPropagation();	
9873			var $button = $(this),
9874				$modal = $button.closest('.cmp-modal'),
9875				isRedirect = $button.data('redirect'),
9876				redirectionUrl = $button.data('url');
9877			/*should check only for entry modal button*/
9878			if($modal.hasClass('entry-modal')){
9879			   var $modalDetails =$modal.find('.modal-details'),
9880				   createcookie = $button.data('createcookie'),
9881				   cookieName = $modalDetails.data('cookiename'),
9882				   modalPath = $modalDetails.data('modalpath');
9883			   if(createcookie && cookieName && modalPath){
9884				   /*if the data attribute setcookie(setcookie for first time users) value is true we are storing
9885						cookie to future date
9886						setting expiry date of 3 months(setting perminant cookie not for session)
9887				   */
9888				   if($modalDetails.data('setcookie')){
9889					   $.cookie(cookieName,'true',{ path: '/',expires: 90 });
9890				   }else{
9891					/*if the data attribute setcookie value is false we are storing
9892						cookie for session.once we close the browser we lost the session
9893						and eventually cookie wont exist after reopening the browser.
9894						not setting any expirt date to achieve functionality
9895				   */  
9896					   $.cookie(cookieName,'true',{ path: '/' });
9897				   }
9898			   }
9899			}
9900			if(isRedirect){//should check for entry/exit modal button
9901			  var urlObj =LOREM.Modal.checkUrlType(redirectionUrl);
9902			  LOREM.Modal.navigateToPath(urlObj,$button.data('target'));
9903		  	}
9904
9905		 },
9906		/*sets cookie for required modal*/
9907		showModal : function($modal,modalPath){
9908            if($modal.hasClass('preference-modals-mode')){
9909                isCookieExist = false;
9910                var currentPage = document.getElementById("currentpage").value;
9911				if(typeof videoPagePaths == 'undefined'){
9912					videoPagePaths=[];
9913				}
9914                if(!$.cookie('m_prefs') && videoPagePaths.includes(currentPage))
9915                	LOREM.Modal.updateModalContent($modal,modalPath,'','');
9916            }
9917			var	isCookieExist = LOREM.Modal.validateCookie($modal);
9918			if(!isCookieExist && $modal.hasClass('entry-modal')){
9919				  LOREM.Modal.updateModalContent($modal,modalPath,'','');
9920			}
9921		},
9922		/*checks whether cookie exist or not in user's browser*/
9923		validateCookie : function($modal){
9924			var cookieName = $modal.find('.modal-details').data('cookiename');
9925			return ($.cookie(cookieName)) ? true : false;
9926		},
9927		/*gets the content via ajax and update the model popup and shows mpdal popup to user*/
9928		updateModalContent : function($modal,modalPath,targetUrl,targetType){
9929			if(modalPath){          
9930				$.ajax({
9931					url: modalPath,
9932					success: function (resp) {
9933						$modal.find('.modal-content').html($(resp));
9934						$modal.modal('show');
9935						if ($(".preference-modals-mode").hasClass("show")) {
9936							var $dropdown = $("#preference-therapeuticarea");
9937							var dynamicDefaultText = $(".preference-text").data("text");
9938							
9939							$dropdown.empty(); // Clear existing options
9940							$dropdown.append(
9941							  $("<option></option>").attr("value", "").text(dynamicDefaultText)
9942							);
9943						
9944							$.each(preferencesJsonData, function (key, value) {
9945							  $dropdown.append($("<option></option>").attr("value", key).text(key));
9946							});
9947							$("body").addClass("preference-modal-show");
9948						}
9949						if($modal.hasClass('exit-modal')){
9950							$modal.attr('data-targeturl',targetUrl);
9951							$modal.attr('data-targettype',targetType)
9952						}
9953					},
9954					error:function(){
9955						
9956					}
9957				});    
9958			}
9959		},
9960		/*returns an object which contains proper url and type of url*/
9961		checkUrlType : function(redirectionUrl){
9962			//add http:// if it does n't exist
9963			redirectionUrl =  redirectionUrl.substr(0,3)==='www' ?  "http://" + redirectionUrl : redirectionUrl;
9964			return {isExternal:redirectionUrl.indexOf('http://') > -1 || redirectionUrl.indexOf('https://') > -1 || redirectionUrl.substr(0,4)==='tel:' || redirectionUrl.substr(0,7)==='mailto:' || redirectionUrl.substr(0,5)=== 'maps:' || redirectionUrl.substr(0,4)==='geo:' || redirectionUrl.substr(0,13)=== 'comgooglemaps',
9965					newUrl : redirectionUrl};
9966		},
9967		/*navigate to the path based on type of url*/
9968		navigateToPath : function(urlObj,targetType){
9969			var url ;
9970			if(targetType === '_blank'){
9971				url = urlObj.isExternal ? urlObj.newUrl : window.location.origin + urlObj.newUrl;
9972				window.open(url,"_blank");
9973		     }else{
9974				url = urlObj.isExternal ?  urlObj.newUrl :  window.location.origin + urlObj.newUrl;
9975	     		window.location =  url;  
9976
9977			 }
9978		},
9979        /*sets properties for the targeturl based on exit modal json data*/			
9980		determineLinkProperties : function(targetUrl){
9981			var linkProperties = {
9982					"isWhitelisted":false,
9983					"isBlackListed":false,
9984					"isModalLink"  :false,
9985					"urlPath"		:""
9986				},
9987				urlObj = LOREM.Modal.exitModalJson,
9988				blackListObj = {};
9989			if(urlObj !== undefined){
9990				if(urlObj.whitelist !== undefined){
9991					linkProperties.isWhitelisted = LOREM.Modal.isWhitelisted(urlObj.whitelist,targetUrl);
9992				}
9993				if(!linkProperties.isWhitelisted){
9994					if(urlObj.blacklist !== undefined){
9995						blackListObj = LOREM.Modal.isBlackListed(urlObj.blacklist,targetUrl);
9996						linkProperties.isBlackListed = blackListObj.isBlacklisted;
9997						if(linkProperties.isBlackListed){
9998                            if(blackListObj.blacklistedUrlPath !== "" &&  blackListObj.blacklistedUrlPath !== undefined){
9999								linkProperties.urlPath = blackListObj.blacklistedUrlPath;
10000								linkProperties.isModalLink = true;
10001                            }    
10002
10003						}else{
10004							if(urlObj.defaultModalPath !== "" &&  urlObj.defaultModalPath !== undefined){
10005								linkProperties.urlPath = urlObj.defaultModalPath;
10006								linkProperties.isModalLink = true;
10007                            }    
10008
10009						}
10010					}else{
10011                        if(urlObj.defaultModalPath !== "" &&  urlObj.defaultModalPath !== undefined){
10012                            linkProperties.urlPath = urlObj.defaultModalPath;
10013                            linkProperties.isModalLink = true;
10014                        }  
10015                    }
10016				}
10017				if(urlObj.whitelist === undefined && urlObj.blacklist === undefined){
10018                   		if(urlObj.defaultModalPath !== "" && urlObj.defaultModalPath !== undefined){
10019                            linkProperties.urlPath = urlObj.defaultModalPath;
10020                            linkProperties.isModalLink = true;
10021                        }
10022				}
10023				
10024			}
10025			return linkProperties;    
10026		},  
10027        /*returns true or false whether target url matches any one of the whitelisted urls*/			
10028		isWhitelisted :function(whitelist,targetUrl){
10029			var whitelistLength = whitelist.length,
10030				isWhitelisted = false;
10031			for(var i=0 ;i < whitelistLength;i++){
10032				var whitelistedExpression = whitelist[i].rule;
10033				isWhitelisted = LOREM.Modal.validatetargetUrl(whitelistedExpression,targetUrl);
10034				if(isWhitelisted){
10035					break;
10036				}
10037			}
10038			return isWhitelisted;
10039		},  
10040        /*returns true or false whether target url matches any one of the blacklisted urls*/						
10041		isBlackListed :function(blacklist,targetUrl){
10042			var blacklistLength = blacklist.length,
10043				isBlacklisted = false,
10044				blacklistedUrlPath ='';
10045			for(var i=0 ;i < blacklistLength;i++){
10046				var blacklistedExpression = blacklist[i].rule;
10047				isBlacklisted = LOREM.Modal.validatetargetUrl(blacklistedExpression,targetUrl);
10048				if(isBlacklisted){
10049					blacklistedUrlPath = blacklist[i].modalPath;
10050					break;
10051				}
10052			}
10053			return {"isBlacklisted":isBlacklisted,'blacklistedUrlPath' : blacklistedUrlPath};
10054		},  
10055        /*validates whether target url and given regex are matches or not*/			
10056		validatetargetUrl: function(exp,targetUrl){
10057			var mapObj = {
10058                  "\/":"\\/",
10059                  "\?":"\\?",
10060                  "\&":"\\&"
10061                };
10062             exp = exp.replace(/\/|\?|\&/gi, function(matched){
10063                        return mapObj[matched];  
10064             });	
10065			var regex = new RegExp(exp);
10066			return regex.test(targetUrl);
10067		},
10068		/*get exit modal content and show popup*/
10069		createExitModal : function(evt){
10070			evt.preventDefault();
10071			var $this = $(this),
10072				targetUrl = $this.attr('href'),
10073				urlObj =LOREM.Modal.checkUrlType(targetUrl),
10074				linkProperties;
10075				/*if internal---navigate to path directly*/
10076			if(!urlObj.isExternal){
10077				 LOREM.Modal.navigateToPath(urlObj,$this.attr('target'));
10078			}else{
10079				/*if external validate targetURL against to whitelist and blacklisted urls*/
10080				linkProperties = LOREM.Modal.determineLinkProperties(targetUrl);
10081				if(linkProperties.isModalLink){
10082					/*if target url is blacklisted,show corresponding modal popup */
10083					var modalPath = linkProperties.urlPath;
10084					if(modalPath !== undefined && modalPath !== ''){
10085                if($.cookie('cq-authoring-mode') == 'TOUCH'){
10086                    LOREM.Modal.updateModalContent($('#exitModal'),modalPath + '/jcr:content/root.html?wcmmode=disabled',targetUrl,$this.attr('target'));
10087                }else{
10088				    LOREM.Modal.updateModalContent($('#exitModal'),modalPath + '/jcr:content/root.html',targetUrl,$this.attr('target'));
10089                }
10090			}
10091				 }else{
10092					/*if target url is not any one of blacklists navigate to the corresponding page directly  */
10093					 LOREM.Modal.navigateToPath(urlObj,$this.attr('target'));
10094				}  
10095			}
10096		 },
10097		updateTargetUrl : function(evt){
10098			evt.preventDefault();
10099			var $this = $(this),
10100				$modal = $this.closest('.cmp-modal'),
10101				targetUrl = $modal.attr('data-targeturl'),
10102				targetType = $modal.attr('data-targettype');  
10103			if($modal.hasClass('exit-modal')){   
10104				var urlObj =LOREM.Modal.checkUrlType(targetUrl);
10105			  	LOREM.Modal.navigateToPath(urlObj,targetType);
10106			}
10107		}
10108	}
10109	if((($(".modal-button").length > 0 ) || ($(".modals").length > 0)) && window.iswcmModeEditMode === "false"){  
10110		LOREM.Modal.init();
10111        $(document).on('click', '.cmp-button-link', function(event){
10112		if(!$('.entry-modal').hasClass('show')){  
10113            if(typeof $(this).data('redirect') == 'undefined'){
10114		event.preventDefault();
10115            //LOREM.Modal.init();
10116
10117 }}
10118
10119
10120 })
10121
10122	}   
10123});
10124$(document).ready(function () {
10125	var $searchForm = $('#search-results-form'),
10126        $searchWrapper = $('.search-wrapper'),
10127		$searchResultsWrapper = $('#search-results-wrapper'),
10128		$searchCountWrapper = $searchWrapper.find('.search-count-wrapper'),
10129		$noResultsFound = $searchWrapper.find('.no-results-found'),
10130		$searchInputIcon = $searchForm.find('.search-input-icon'),
10131		$searchInput = $searchForm.find('.search-input-text'),
10132		$radioButtons = $('.radio-button input[type="radio"]'),
10133       // $searchResultNextLink = '<li><a href="#" id="nextPage" class="directionLink nextPageLink"></a></li>',
10134		//$searchResultPrevLink = '<li><a href="#" id="prevPage" class="directionLink prevPageLink hidden"></a></li>',
10135		$pagination,
10136		searchoffset,
10137		resultsPerPage,
10138		activePage,
10139		searchTerm,
10140        minLengthMsg = $('.cmp-search-results').find('input[name="minLengthMsg"]').val();
10141        if(minLengthMsg == "" || minLengthMsg == undefined){
10142          minLengthMsg= "please enter at least 3 characters";
10143        }
10144	LOREM.searchresults = {
10145currentSearchType: '', // Initialize the currentSearchType variable
10146		_autoload: [
10147			'_getSearchTermOnLoad',
10148			'bindEvents'
10149		],
10150		bindEvents: function() {
10151			$searchForm.on('submit', LOREM.searchresults._submitSearchForm);
10152			$searchForm.find('button[type="button"]').on('click', LOREM.searchresults._clickSearchSubmit);
10153			 $radioButtons.on('change', LOREM.searchresults._updateSearchType);
10154			//$searchResultsWrapper.on('click', '.pagination .pageLink', LOREM.searchresults._paginateResults);
10155			//$searchResultsWrapper.on('click', '.pagination #nextPage', LOREM.searchresults._paginateNextResults);
10156			//$searchResultsWrapper.on('click', '.pagination #prevPage', LOREM.searchresults._paginatePrevResults);
10157			$searchInputIcon.on('click', LOREM.searchresults._clearInputField);
10158		},
10159		/*  get search term on page load, reading from url  */
10160		_getSearchTermOnLoad: function () {
10161    // Check the "Site pages" radio button by default
10162    $('#dam-content').prop('checked', true);
10163
10164    // Get the search term and search type from the URL
10165    var searchTerm = LOREM.options.getQueryParam('q') || '';
10166    var searchType = LOREM.options.getQueryParam('r') || '';
10167
10168    // If the search term is not empty, perform the search and update the UI
10169    if (searchTerm !== '') {
10170        searchTerm = decodeURIComponent(searchTerm);
10171        searchTerm = searchTerm.indexOf('+') ? searchTerm.split('+').join(' ') : searchTerm;
10172        $searchInput.val(searchTerm);
10173
10174        // If the search type is 'content', check the "Site pages" radio button
10175        if (searchType === 'content') {
10176            $('#dam-content').prop('checked', true);
10177        } 
10178        // If the search type is 'assets', check the "Site documents" radio button
10179        else if (searchType === 'assets') {
10180            $('#dam-asset').prop('checked', true);
10181        }
10182
10183        // Fetch search results based on the search term and search type
10184        LOREM.searchresults._fetchSearchResults(searchTerm, '', searchType);
10185    }
10186},
10187		/*  prevent the form to submit when the search keyword is empty  */
10188	_submitSearchForm: function() {
10189    searchTerm = $searchInput.val();
10190    // Retrieve the regex from the dialog field
10191    var searchRegex = $('#regexInput').val();
10192    searchErrorElem = $(this).find('.search-results-error');
10193    // If no regex is provided or it's empty, fall back to default behavior
10194    if (searchRegex === "" || searchRegex === undefined) {
10195        searchRegex = /^[0-9a-zA-Z, ]+[0-9a-zA-Z]{1}$/;
10196        if (searchTerm === '' || searchTerm.length <= 2) {
10197            searchErrorElem.html(minLengthMsg);
10198            searchErrorElem.removeClass('hidden');
10199            return false;
10200        }
10201    } else {
10202        // If regex is provided, use it for validation
10203        var pattern = new RegExp(searchRegex);
10204        if (!pattern.test(searchTerm)) {
10205            searchErrorElem.html(minLengthMsg);
10206            searchErrorElem.removeClass('hidden');
10207            return false;
10208        }
10209    }
10210},
10211		/*  submit the form when the button is clicked  */
10212		_clickSearchSubmit: function() {
10213    searchTerm = $searchInput.val();
10214    // Check the "Site pages" radio button
10215    $('#dam-content').prop('checked', true);
10216    // Fetch search results
10217    searchTerm !== '' ? LOREM.searchresults._fetchSearchResults(searchTerm, '') 
10217: null;
10218    // Append 'r=content' to the URL
10219    var searchParams = new URLSearchParams(window.location.search);
10220    searchParams.set('r', 'content');
10221    var newUrl = window.location.pathname + '?' + searchParams.toString();
10222    window.history.pushState({path: newUrl}, '', newUrl);
10223},
10224
10225
10226		/*  append search results taking the search term and makes an ajax request  */
10227		_fetchSearchResults: function (str, offset, searchType) {
10228			LOREM.UTILS._showLoader();
10229			var getData,
10230				dataObj,
10231				currentPagePath = $('#currentPagePath').val();
10232			searchoffset = offset === '' ? parseInt($('#searchOffsetValue').val()) : offset;
10233			resultsPerPage = parseInt($('#resultsPerPage').val()) || 5; // default results are 5 per page if the author doesn't configure the records per page
10234			dataObj = {
10235				searchWord: str,
10236				page: currentPagePath,
10237                searchType: searchType // Added searchType to the dataObj
10238			};
10239			$.ajax({
10240				url: '/bin/dxp/search.json',
10241				type: 'GET',
10242				data: dataObj,
10243				success: function(resp) {
10244					LOREM.UTILS._hideLoader();
10245					var res = resp;
10246					if(typeof res === 'string') {
10247						res = JSON.parse(res);
10248					}
10249					getData = res;
10250					$searchResultsWrapper.find('.search-item').remove();
10251					if(getData.totalRecords) {
10252						$noResultsFound.addClass('hidden');
10253						$searchCountWrapper.removeClass('hidden');
10254						LOREM.searchresults._appendPagination(getData);
10255					} else {
10256						$noResultsFound.removeClass('hidden');
10257                        $('.paginationjs').hide();
10258						$searchCountWrapper.addClass('hidden');
10259					}
10260				},
10261				error: function(err) {
10262					LOREM.UTILS._hideLoader();
10263				}
10264			});
10265		},
10266		_appendPagination: function(data) {
10267			$searchWrapper.find('.total-count').text(data.totalRecords);
10268			$('.cmp-search-results').pagination2({ // you call the plugin
10269			//console.log('inside pagination');
10270			  dataSource: data, // pass all the data
10271                locator:'results',
10272			  pageSize: resultsPerPage, // put how many items per page you want
10273                hideWhenLessThanOnePage: true ,
10274			  callback: function(data,pagination) {
10275				 // console.log('inside function');
10276					var resultData = data;
10277					$searchResultsWrapper.empty();
10278					for(var i=0; i<resultData.length; i++) {
10279						var $searchItem = $('<div class="search-item" />'),
10280							$searchTitle = $('<a class="search-item-heading" />'),
10281							$searchDesc = $('<p class="search-item-decription" />');
10282						$searchTitle.attr('href', resultData[i].path).text(resultData[i].title);
10283						$searchDesc.html(resultData[i].description);
10284						$searchItem.append($searchTitle).append($searchDesc);
10285						$searchResultsWrapper.append($searchItem);
10286					}
10287				}
10288			});
10289		},
10290		/*  function used to remove the text in the input  */
10291		_clearInputField: function() {
10292			$searchInput.val('');
10293        },
10294        _updateSearchType: function () {
10295            var searchType;
10296            if ($('#dam-content').is(':checked')) {
10297                searchType = 'content';
10298            } else if ($('#dam-asset').is(':checked')) {
10299                searchType = 'assets';
10300            }
10301            // Check if the search type is actually changed before triggering the AJAX request
10302            if (searchType !== LOREM.searchresults.currentSearchType) {
10303                LOREM.searchresults.currentSearchType = searchType; // Update the current search type
10304                // Update the query parameter in the URL
10305                var searchParams = new URLSearchParams(window.location.search);
10306                searchParams.set('r', searchType);
10307                var newUrl = window.location.pathname + '?' + searchParams.toString();
10308                window.history.pushState({path: newUrl}, '', newUrl);
10309                LOREM.searchresults._fetchSearchResults($searchInput.val(), '', searchType);
10310            }
10311        }
10312	};
10313    LOREM.searchresults.bindEvents();
10314    LOREM.searchresults._getSearchTermOnLoad();
10315});
10316/*
10317 * pagination.js 2.1.5
10318 * A jQuery plugin to provide simple yet fully customisable pagination
10319 * https://github.com/superRaytin/paginationjs
10320
10321 * Homepage: http://pagination.js.org
10322 *
10323 * Copyright 2014-2100, superRaytin
10324 * Released under the MIT license.
10325*/
10326!function(a,b){function c(a){throw new Error("Pagination: "+a)}function d(a){a.dataSource||c('"dataSource" is required.'),"string"==typeof a.dataSource?void 0===a.totalNumberLocator?void 0===a.totalNumber?c('"totalNumber" is required.'):b.isNumeric(a.totalNumber)||c('"totalNumber" is incorrect. (Number)'):b.
10326isFunction(a.totalNumberLocator)||c('"totalNumberLocator" should be a Function.'):i.isObject(a.dataSource)&&(void 0===a.locator?c('"dataSource" is an Object, please specify "locator".'):"string"==typeof a.locator||b.isFunction(a.locator)||c(a.locator+" is incorrect. (String | Function)")),void 0===a.formatResult||b.isFunction(a.formatResult)||c('"formatResult" should be a Function.')}function e(a){var c=["go","previous","next","disable","enable","refresh","show","hide","destroy"];b.each(c,function(b,c){a.off(h+c)}),a.data("pagination",{}),b(".paginationjs",a).remove()}function f(a,b){return("object"==(b=typeof a)?null==a&&"null"||Object.prototype.toString.call(a).slice(8,-1):b).toLowerCase()}void 0===b&&c("Pagination requires jQuery.");var g="pagination",h="__pagination-";b.fn.pagination&&(g="pagination2"),b.fn[g]=function(f){if(void 0===f)return this;var j=b(this),k=b.extend({},b.fn[g].defaults,f),l={initialize:function(){var a=this;if(j.data("pagination")||j.data("pagination",{}),!1!==a.callHook("beforeInit")){j.data("pagination").initialized&&b(".paginationjs",j).remove(),a.disabled=!!k.disabled;var c=a.model={pageRange:k.pageRange,pageSize:k.pageSize};a.parseDataSource(k.dataSource,function(b){a.isAsync=i.isString(b),i.isArray(b)&&(c.totalNumber=k.totalNumber=b.length),a.isDynamicTotalNumber=a.isAsync&&k.totalNumberLocator;var d=a.render(!0);k.className&&d.addClass(k.className),c.el=d,j["bottom"===k.position?"append":"prepend"](d),a.observer(),j.data("pagination").initialized=!0,a.callHook("afterInit",d)})}},render:function(a){var c=this,d=c.model,e=d.el||b('<div class="paginationjs"></div>'),f=!0!==a;c.callHook("beforeRender",f);var g=d.pageNumber||k.pageNumber,h=k.pageRange||0,i=c.getTotalPage(),j=g-h,l=g+h;return l>i&&(l=i,j=i-2*h,j=j<1?1:j),j<=1&&(j=1,l=Math.min(2*h+1,i)),e.html(c.generateHTML({currentPage:g,pageRange:h,rangeStart:j,rangeEnd:l})),k.hideWhenLessThanOnePage&&e[i<=1?"hide":"show"](),c.callHook("afterRender",f),e},generatePageNumbersHTML:function(a){var b,c=this,d=a.currentPage,e=c.getTotalPage(),f=a.rangeStart,g=a.rangeEnd,h="",i=k.pageLink,j=k.ellipsisText,l=k.classPrefix,m=k.activeClassName,n=k.disableClassName;if(null===k.pageRange){for(b=1;b<=e;b++)h+=b==d?'<li class="'+l+"-page J-paginationjs-page "+m+'" data-num="'+b+'"><a>'+b+"</a></li>":'<li class="'+l+'-page J-paginationjs-page" data-num="'+b+'"><a href="'+i+'">'+b+"</a></li>";return h}if(f<=3)for(b=1;b<f;b++)h+=b==d?'<li class="'+l+"-page J-paginationjs-page "+m+'" data-num="'+b+'"><a>'+b+"</a></li>":'<li class="'+l+'-page J-paginationjs-page" data-num="'+b+'"><a href="'+i+'">'+b+"</a></li>";else k.showFirstOnEllipsisShow&&(h+='<li class="'+l+"-page "+l+'-first J-paginationjs-page" data-num="1"><a href="'+i+'">1</a></li>'),h+='<li class="'+l+"-ellipsis "+n+'"><a>'+j+"</a></li>";for(b=f;b<=g;b++)h+=b==d?'<li class="'+l+"-page J-paginationjs-page "+m+'" data-num="'+b+'"><a>'+b+"</a></li>":'<li class="'+l+'-page J-paginationjs-page" data-num="'+b+'"><a href="'+i+'">'+b+"</a></li>";if(g>=e-2)for(b=g+1;b<=e;b++)h+='<li class="'+l+'-page J-paginationjs-page" data-num="'+b+'"><a href="'+i+'">'+b+"</a></li>";else h+='<li class="'+l+"-ellipsis "+n+'"><a>'+j+"</a></li>",k.showLastOnEllipsisShow&&(h+='<li class="'+l+"-page "+l+'-last J-paginationjs-page" data-num="'+e+'"><a href="'+i+'">'+e+"</a></li>");return h},generateHTML:function(a){var c,d=this,e=a.currentPage,f=d.getTotalPage(),g=d.getTotalNumber(),h=k.showPrevious,i=k.showNext,j=k.showPageNumbers,l=k.showNavigator,m=k.showGoInput,n=k.showGoButton,o=k.pageLink,p=k.prevText,q=k.nextText,r=k.goButtonText,s=k.classPrefix,t=k.disableClassName,u=k.ulClassName,v="",w='<input type="text" class="J-paginationjs-go-pagenumber">',x='<input type="button" class="J-paginationjs-go-button" value="'+r+'">',y=b.isFunction(k.formatNavigator)?k.formatNavigator(e,f,g):k.formatNavigator,z=b.isFunction(k.formatGoInput)?k.formatGoInput(w,e,f,g):k.formatGoInput,A=b.isFunction(k.formatGoButton)?k.formatGoButton(x,e,f,g):k.formatGoButton,B=b.isFunction(k.autoHidePrevious)?k.autoHidePrevious():k.autoHidePrevious,C=b.isFunction(k.autoHideNext)?k.autoHideNext():k.autoHideNext,D=b.isFunction(k.header)?k.header(e,f,g):k.header,E=b.isFunction(k.footer)?k.footer(e,f,g):k.footer;return D&&(c=d.replaceVariables(D,{currentPage:e,totalPage:f,totalNumber:g}),v+=c),(h||j||i)&&(v+='<div class="paginationjs-pages">',v+=u?'<ul class="'+u+'">':"<ul>",h&&(e<=1?B||(v+='<li class="'+s+"-prev "+t+'"><a>'+p+"</a></li>"):v+='<li class="'+s+'-prev J-paginationjs-previous" data-num="'+(e-1)+'" title="Previous page"><a href="'+o+'">'+p+"</a></li>"),j&&(v+=d.generatePageNumbersHTML(a)),i&&(e>=f?C||(v+='<li class="'+s+"-next "+t+'"><a>
10326'+q+"</a></li>"):v+='<li class="'+s+'-next J-paginationjs-next" data-num="'+(e+1)+'" title="Next page"><a href="'+o+'">'+q+"</a></li>"),v+="</ul></div>"),l&&y&&(c=d.replaceVariables(y,{currentPage:e,totalPage:f,totalNumber:g}),v+='<div class="'+s+'-nav J-paginationjs-nav">'+c+"</div>"),m&&z&&(c=d.replaceVariables(z,{currentPage:e,totalPage:f,totalNumber:g,input:w}),v+='<div class="'+s+'-go-input">'+c+"</div>"),n&&A&&(c=d.replaceVariables(A,{currentPage:e,totalPage:f,totalNumber:g,button:x}),v+='<div class="'+s+'-go-button">'+c+"</div>"),E&&(c=d.replaceVariables(E,{currentPage:e,totalPage:f,totalNumber:g}),v+=c),v},findTotalNumberFromRemoteResponse:function(a){this.model.totalNumber=k.totalNumberLocator(a)},go:function(a,c){function d(a){if(!1===e.callHook("beforePaging",g))return!1;if(f.direction=void 0===f.pageNumber?0:g>f.pageNumber?1:-1,f.pageNumber=g,e.render(),e.disabled&&e.isAsync&&e.enable(),j.data("pagination").model=f,k.formatResult){var d=b.extend(!0,[],a);i.isArray(a=k.formatResult(d))||(a=d)}j.data("pagination").currentPageData=a,e.doCallback(a,c),e.callHook("afterPaging",g),1==g&&e.callHook("afterIsFirstPage"),g==e.getTotalPage()&&e.callHook("afterIsLastPage")}var e=this,f=e.model;if(!e.disabled){var g=a;if((g=parseInt(g))&&!(g<1)){var h=k.pageSize,l=e.getTotalNumber(),m=e.getTotalPage();if(!(l>0&&g>m)){if(!e.isAsync)return void d(e.getDataFragment(g));var n={},o=k.alias||{};n[o.pageSize?o.pageSize:"pageSize"]=h,n[o.pageNumber?o.pageNumber:"pageNumber"]=g;var p=b.isFunction(k.ajax)?k.ajax():k.ajax,q={type:"get",cache:!1,data:{},contentType:"application/x-www-form-urlencoded; charset=UTF-8",dataType:"json",async:!0};b.extend(!0,q,p),b.extend(q.data,n),q.url=k.dataSource,q.success=function(a){e.isDynamicTotalNumber?e.findTotalNumberFromRemoteResponse(a):e.model.totalNumber=k.totalNumber,d(e.filterDataByLocator(a))},q.error=function(a,b,c){k.formatAjaxError&&k.formatAjaxError(a,b,c),e.enable()},e.disable(),b.ajax(q)}}}},doCallback:function(a,c){var d=this,e=d.model;b.isFunction(c)?c(a,e):b.isFunction(k.callback)&&k.callback(a,e)},destroy:function(){!1!==this.callHook("beforeDestroy")&&(this.model.el.remove(),j.off(),b("#paginationjs-style").remove(),this.callHook("afterDestroy"))},previous:function(a){this.go(this.model.pageNumber-1,a)},next:function(a){this.go(this.model.pageNumber+1,a)},disable:function(){var a=this,b=a.isAsync?"async":"sync";!1!==a.callHook("beforeDisable",b)&&(a.disabled=!0,a.model.disabled=!0,a.callHook("afterDisable",b))},enable:function(){var a=this,b=a.isAsync?"async":"sync";!1!==a.callHook("beforeEnable",b)&&(a.disabled=!1,a.model.disabled=!1,a.callHook("afterEnable",b))},refresh:function(a){this.go(this.model.pageNumber,a)},show:function(){var a=this;a.model.el.is(":visible")||a.model.el.show()},hide:function(){var a=this;a.model.el.is(":visible")&&a.model.el.hide()},replaceVariables:function(a,b){var c;for(var d in b){var e=b[d],f=new RegExp("<%=\\s*"+d+"\\s*%>","img");c=(c||a).replace(f,e)}return c},getDataFragment:function(a){var b=k.pageSize,c=k.dataSource,d=this.getTotalNumber(),e=b*(a-1)+1,f=Math.min(a*b,d);return c.slice(e-1,f)},getTotalNumber:function(){return this.model.totalNumber||k.totalNumber||0},getTotalPage:function(){return Math.ceil(this.getTotalNumber()/k.pageSize)},getLocator:function(a){var d;return"string"==typeof a?d=a:b.isFunction(a)?d=a():c('"locator" is incorrect. (String | Function)'),d},filterDataByLocator:function(a){var d,e=this.getLocator(k.locator);if(i.isObject(a)){try{b.each(e.split("."),function(b,c){d=(d||a)[c]})}catch(a){}d?i.isArray(d)||c("dataSource."+e+" must be an Array."):c("dataSource."+e+" is undefined.")}return d||a},parseDataSource:function(a,d){var e=this;i.isObject(a)?d(k.dataSource=e.filterDataByLocator(a)):i.isArray(a)?d(k.dataSource=a):b.isFunction(a)?k.dataSource(function(a){i.isArray(a)||c('The parameter of "done" Function should be an Array.'),e.parseDataSource.call(e,a,d)}):"string"==typeof a?(/^https?|file:/.test(a)&&(k.ajaxDataType="jsonp"),d(a)):c('Unexpected type of "dataSource".')},callHook:function(c){var d,e=j.data("pagination"),f=Array.prototype.slice.apply(arguments);return f.shift(),k[c]&&b.isFunction(k[c])&&!1===k[c].apply(a,f)&&(d=!1),e.hooks&&e.hooks[c]&&b.each(e.hooks[c],function(b,c){!1===c.apply(a,f)&&(d=!1)}),!1!==d},observer:function(){var a=this,d=a.model.el;j.on(h+"go",function(d,e,f){(e=parseInt(b.trim(e)))&&(b.isNumeric(e)||c('"pageNumber" is incorrect. (Number)'),a.go(e,f))}),d.delegate(".J-paginationjs-page","click",function(c){var d=b(c.currentTarget),e=b.trim(d.attr("data-num"));if(e&&!d.hasClass(k.disableClassName)&&!d.hasClass(k.activeClassName))return!1!==a.callHook("beforePageOnClick",c,e)&&(a.go(e),a.callHook("afterPageOnClick",c,e),!!k.pageLink&&void 0)}),d.delegate(".J-paginationjs-previous","click",function(c){var d=b(c.currentTarget),e=b.trim(d.attr("data-num"));if(e&&!d.hasClass(k.disableClassName))return!1!==a.callHook("beforePreviousOnClick",c,e)&&(a.go(e),a.callHook("afterPreviousOnClick",c,e),!!k.pageLink&&void 0)}),d.delegate(".J-paginationjs-next","click",function(c){var d=b(c.currentTarget),e=b.trim(d.attr("data-num"));if(e&&!d.hasClass(k.disableClassName))return!1!==a.callHook("beforeNextOnClick",c,e)&&(a.go(e),a.callHook("afterNextOnClick",c,e),!!k.pageLink&&void 0)}),d.delegate(".J-paginationjs-go-button","click",function(c){var e=b(".J-paginationjs-go-pagenumber",d).val();if(!1===a.callHook("beforeGoButtonOnClick",c,e))return!1;j.trigger(h+"go",e),a.callHook("afterGoButtonOnClick",c,e)}),d.delegate(".J-paginationjs-go-pagenumber","keyup",function(c){if(13===c.which){var e=b(c.currentTarget).val();if(!1===a.callHook("beforeGoInputOnEnter",c,e))return!1;j.trigger(h+"go",e),b(".J-paginationjs-go-pagenumber",d).focus(),a.callHook("afterGoInputOnEnter",c,e)}}),j.on(h+"previous",function(b,c){a.previous(c)}),j.on(h+"next",function(b,c){a.next(c)}),j.on(h+"disable",function(){a.disable()}),j.on(h+"enable",function(){a.enable()}),j.on(h+"refresh",function(b,c){a.refresh(c)}),j.on(h+"show",function(){a.show()}),j.on(h+"hide",function(){a.hide()}),j.on(h+"destroy",function(){a.destroy()});var e=Math.max(a.getTotalPage(),1),f=k.pageNumber;a.isDynamicTotalNumber&&(f=1),k.triggerPagingOnInit&&j.trigger(h+"go",Math.min(f,e))}};if(j.data("pagination")&&!0===j.data("pagination").initialized){if(b.isNumeric(f))return j.trigger.call(this,h+"go",f,arguments[1]),this;if("string"==typeof f){var m=Array.prototype.slice.apply(arguments);switch(m[0]=h+m[0],f){case"previous":case"next":case"go":case"disable":case"enable":case"refresh":case"show":case"hide":case"destroy":j.trigger.apply(this,m);break;case"getSelectedPageNum":return j.data("pagination").model?j.data("pagination").model.pageNumber:j.data("pagination").attributes.pageNumber;case"getTotalPage":return Math.ceil(j.data("pagination").model.totalNumber/j.data("pagination").model.pageSize);case"getSelectedPageData":return j.data("pagination").currentPageData;case"isDisabled":return!0===j.data("pagination").model.disabled;default:c("Unknown action: "+f)}return this}e(j)}
10326else i.isObject(f)||c("Illegal options");return d(k),l.initialize(),this},b.fn[g].defaults={totalNumber:0,pageNumber:1,pageSize:10,pageRange:2,showPrevious:!0,showNext:!0,showPageNumbers:!0,showNavigator:!1,showGoInput:!1,showGoButton:!1,pageLink:"",prevText:"&laquo;",nextText:"&raquo;",ellipsisText:"...",goButtonText:"Go",classPrefix:"paginationjs",activeClassName:"active",disableClassName:"disabled",inlineStyle:!0,formatNavigator:"<%= currentPage %> / <%= totalPage %>",formatGoInput:"<%= input %>",formatGoButton:"<%= button %>",position:"bottom",autoHidePrevious:!1,autoHideNext:!1,triggerPagingOnInit:!0,hideWhenLessThanOnePage:!1,showFirstOnEllipsisShow:!0,showLastOnEllipsisShow:!0,callback:function(){}},b.fn.addHook=function(a,d){arguments.length<2&&c("Missing argument."),b.isFunction(d)||c("callback must be a function.");var e=b(this),f=e.data("pagination");f||(e.data("pagination",{}),f=e.data("pagination")),!f.hooks&&(f.hooks={}),f.hooks[a]=f.hooks[a]||[],f.hooks[a].push(d)},b[g]=function(a,d){arguments.length<2&&c("Requires two parameters.");var e;if(e="string"!=typeof a&&a instanceof jQuery?a:b(a),e.length)return e.pagination(d),e};var i={};b.each(["Object","Array","String"],function(a,b){i["is"+b]=function(a){return f(a)===b.toLowerCase()}}),"function"==typeof define&&define.amd&&define(function(){return b})}(this,window.jQuery);
10327$(document).ready(function(){
10328   /*trigger the events only for mobile and tablet*/
10329	if(!window.matchMedia('(min-width: 992px)').matches){
10330	   /*event handler for list dropdown*/
10331		var cmpListDropdown = $('.cmp-list-dropdown');
10332		if(cmpListDropdown.length >0){
10333			cmpListDropdown.each(function() {
10334				var listDropdownHover = $(this).parent().hasClass('list-dropdown-hover');
10335				var hoverElement = $(this).find('.list-dropdown-header');
10336		        var dropDownMenu = $(this).find('.dropdown-menu');
10337				if (listDropdownHover) {
10338			        var downIcon = dropDownMenu.siblings(".arrow-down-icon");
10339			        var upIcon = dropDownMenu.siblings(".arrow-up-icon");
10340			        hoverElement.on("click", function() {
10341			            var dropDownMenu = $(this).find('.dropdown-menu');
10342			            dropDownMenu.toggle();
10343			            upIcon.toggle();
10344			            downIcon.toggle();
10345			        });
10346			        $(document).on("click", function(evt) {
10347			            if (dropDownMenu.is(":visible") && evt.target !== dropDownMenu[0] && evt.target !== downIcon[0] && evt.target !== hoverElement[0] && evt.target !== hoverElement.find('.dropdown-text')[0]) {
10348
10349                            dropDownMenu.hide();
10350			                dropDownMenu.siblings(".arrow-up-icon").hide();
10351			                downIcon.css("display", "block");
10352			            }
10353			        });
10354			        dropDownMenu.find('ul li').on('click', function() {
10355			            var anchorLinksStart = $(this).find("a.list-item-link[href^='#']");
10356			            var replaceText = anchorLinksStart.find('span.list-item-label').html();
10357			            if (anchorLinksStart.length > 0 && anchorLinksStart.attr("href")[0] === '#') {
10358			                hoverElement.find('.dropdown-text').text(replaceText);
10359			                $(this).addClass('active').siblings().removeClass('active');
10360			            }
10361			        });
10362				}else{
10363				   $(document).on("click",".dropdown-arrow",function(evt){
10364						evt.stopPropagation();
10365						var $this = $(this), 
10366						$dropdownMenu = $this.siblings(".dropdown-menu");
10367						$this.hide();
10368						if($this.hasClass("arrow-up-icon")){
10369							$dropdownMenu.hide();
10370							$this.siblings(".arrow-down-icon").css("display","block");
10371						}else{
10372							$dropdownMenu.css("display","block");
10373							$this.siblings(".arrow-up-icon").css("display","block");
10374						}
10375				   });
10376					/*hide the dropdown if user clicks outside of dropdown*/
10377					$(document).on("click",function(evt){
10378						var $downArrow = dropDownMenu.siblings(".arrow-down-icon");
10379						if(dropDownMenu.is(":visible") && evt.target !== dropDownMenu[0] && evt.target !== $downArrow[0]){
10380							dropDownMenu.hide();
10381							dropDownMenu.siblings(".arrow-up-icon").hide();
10382							$downArrow.css("display","block");
10383						}
10384					});
10385				}
10386			});
10387		}
10388		if ($('.sticky-list-dropdown').length > 0) {
10389		    var $headerStickyHeight;
10390		    if ($('header').hasClass('sticky-mobile-header')) {
10391		        $headerStickyHeight = $('.header-utilitynav-wrapper').height();
10392		    } else {
10393		        $headerStickyHeight = 0;
10394		    }
10395		    var listDropDownTop = $('.sticky-list-dropdown').offset().top;
10396		    if(listDropDownTop === $headerStickyHeight){
10397	            $('.sticky-list-dropdown').find('.cmp-list-dropdown').first().addClass('sticky');
10398	 		    var $cmpListDropDownSticky = $('.cmp-list-dropdown.sticky');
10399	 		    $cmpListDropDownSticky.css({
10400	 		        'padding-top': $headerStickyHeight
10401	 		    });
10402		    }
10403		    $(window).scroll(function() {
10404		    	var currentScroll = parseInt($(window).scrollTop()) + $headerStickyHeight;
10405		    	 if (currentScroll >= listDropDownTop ) { 
10406		    		 $('.sticky-list-dropdown').find('.cmp-list-dropdown').first().addClass('sticky');
10407		 		    var $cmpListDropDownSticky = $('.cmp-list-dropdown.sticky');
10408		 		    $cmpListDropDownSticky.css({
10409		 		        'padding-top': $headerStickyHeight
10410		 		    });
10411		    	 }else{
10412		    		$('.sticky-list-dropdown').find('.cmp-list-dropdown').removeClass('sticky');
10413	    	        $('.cmp-list-dropdown').css({
10414	    			        'padding-top':0
10415	    			});
10416		    	 }
10417		    });
10418		}
10419		if($('.list-dropdown-active').length >0){
10420            var listSelectorLinks = $('.list-dropdown-active .cmp-list-dropdown .dropdown-menu ul li');
10421            listSelectorLinks.each(function(){
10422                var dropdownLinkHref =  $(this).find('a.list-item-link').attr('href');
10423                if(window.location.pathname === dropdownLinkHref){
10424                    $(this).addClass('active');
10425                }
10426            });
10427        }
10428	}
10429});
10430$(document).on('click', 'list-item.dropdown-item', function(){
10431  $('.list-dropdown-header.dropdown').unbind('mouseenter mouseleave');
10432})
10433
10434$(document).ready(function() {
10435    var $listActionsEl = $('.list-filter-sort-options'),
10436        listCtxObj,
10437        FILTER_FLAG = false,
10438        SORT_FLAG = false,
10439        targetEl,
10440        onloadList;
10441            
10442    LOREM.listActions = {
10443        _init: function() {
10444			listCtxObj = this;
10445            listCtxObj._bindEvents();
10446            
10447        },
10448        
10449        /** 
10450		  * Function handler for event binding.
10451		  * 
10452		  */
10453        _bindEvents: function() {
10454            $listActionsEl.on('change', 'select[name="filter-select"]', listCtxObj._filterListHandler);
10455            $listActionsEl.on('change', 'select[name="sort-select"]', listCtxObj._sortListHandler);
10456            $listActionsEl.on('click', '.reset-actions', listCtxObj._resetActions);
10457        },
10458        _targetElem: function($this) {
10459            $listActionsEl = $this.closest('.list-filter-sort-options');
10460            var $targetArticle = $listActionsEl.parents().find('.cmp-tile-wrapper[data-tagged-component="' + $listActionsEl.data('tagged-component') + '"]');
10461            var $targetRighArticle = $listActionsEl.parents().find('.cmp-right-rail-wrapper[data-tagged-component="' + $listActionsEl.data('tagged-component') + '"]');
10462            if ($targetArticle !== undefined && $targetArticle.length > 0) {
10463                targetEl = $('.cmp-tile-wrapper[data-tagged-component="' + $listActionsEl.data('tagged-component') + '"]');
10464            } else if ($targetRighArticle !== undefined && $targetRighArticle.length > 0) {
10465                targetEl = $('.cmp-right-rail-wrapper[data-tagged-component="' + $listActionsEl.data('tagged-component') + '"]');
10466            }
10467            return targetEl;
10468        },
10469        /** 
10470		  * Function handler apply selected filter for list items.
10471		  * 
10472		  */
10473        _filterListHandler: function(ev, el){
10474            ev.preventDefault();
10475            var $this = $(this);
10476            var tagName = $this.val();
10477            if($listActionsEl.data('tagged-component')) {
10478                FILTER_FLAG = true;
10479                targetEl = listCtxObj._targetElem($this);
10480                var items = targetEl.find('.cmp-tile-list');
10481                
10482                $(items).each(function(idx, item){
10483                    var $item = $(item);
10484                    $item.removeClass('filter-action').hide();
10485                    if($item.data('tags')) {
10486                        var tags = $item.data('tags').split(',');
10487                        if(tags.indexOf(tagName) >= 0) {
10488                            $item.addClass('filter-action').show();
10489                        }
10490                    }
10491                    if(tagName.indexOf("list-default") != -1) {
10492						targetEl.find('.cmp-tile-list').removeClass('filter-action').show();
10493                    }
10494                });
10495                $('html').animate({scrollTop: $(window).scrollTop() + 1});
10496            }
10497        },
10498        /** 
10499		  * Function handler sort list items.
10500		  * 
10501		  */
10502        _sortListHandler: function(ev){
10503            ev.preventDefault();
10504            var $this = $(this);
10505            var sortVal = $this.val(); 
10506            if($listActionsEl.data('tagged-component')) {
10507            	targetEl = listCtxObj._targetElem($this);
10508            	onloadList = targetEl.find('.cmp-tile-list-wrap').html();
10509                if(!SORT_FLAG) {
10510                    listCtxObj._formatDateAttr(targetEl);
10511                }
10512                targetEl.find('.cmp-tile-list').addClass('sort-action');
10513                SORT_FLAG = true;            
10514                if(sortVal === 'newest') {
10515                    listCtxObj._sortByDate(targetEl);
10516                } else if(sortVal === 'popular') {
10517                    listCtxObj._sortByRank(targetEl);
10518                }
10519                $('html').animate({scrollTop: $(window).scrollTop() + 1});
10520            }
10521        },
10522        /** 
10523		  * Function handler to sort list items.
10524		  * 
10525		  */
10526        _sortByRank: function(targetEl) {
10527        	targetEl.each(function(){
10528	            var items = $(this).find('.cmp-tile-list');
10529	            items.sort(function(a, b){
10530	                return +$(a).data('rank') - +$(b).data('rank');
10531	            });
10532	            var $parentEl = $(this).find('.cmp-tile-list-wrap');
10533	            items.appendTo($parentEl);
10534        	});
10535        },
10536        _formatDateAttr: function(targetEl) {
10537            targetEl.find('.cmp-tile-list').each(function(){
10538                var $this = $(this);
10539                if($this.attr('publishdate')) {
10540                    var date = new Date($this.attr('publishdate'));
10541                    $this.attr('data-time', date.getTime());
10542                }
10543            });
10544        },
10545        _sortByDate: function(targetEl) {
10546            
10547        	targetEl.each(function(){
10548	            var $parentEl = $(this).find('.cmp-tile-list-wrap'); 
10549	            var itemsWithPublishDate = $(this).find('.cmp-tile-list[publishdate]');
10550	            var itemsWithOutPublishDate = $(this).find('.cmp-tile-list').not('[publishdate]');
10551	            itemsWithPublishDate.sort(function(a, b){
10552	                return +$(b).data('time') - +$(a).data('time');
10553	            });
10554	            itemsWithPublishDate.appendTo($parentEl);
10555	            itemsWithOutPublishDate.appendTo($parentEl);     
10556        	});
10557        },
10558        /** 
10559		  * Function handler to reset filter and sort actions.
10560		  * 
10561		  */
10562        _resetActions: function(ev){
10563            ev.preventDefault();
10564            var $this = $(this);
10565            $listActionsEl = $this.closest('.list-filter-sort-options');           
10566            if (SORT_FLAG && $listActionsEl.data('tagged-component')) {
10567                targetEl = listCtxObj._targetElem($this);
10568                targetEl.find('.cmp-tile-list').remove();
10569                var $parentEl = targetEl.find('.cmp-tile-list-wrap');
10570                targetEl.find('.cmp-tile-list').removeClass('sort-action');
10571                $parentEl.append(onloadList);
10572                if (FILTER_FLAG && $listActionsEl.data('tagged-component')) {
10573                    targetEl.find('.cmp-tile-list').removeClass('filter-action').show();
10574                }
10575            } else {
10576                if (FILTER_FLAG && $listActionsEl.data('tagged-component')) {
10577                    targetEl = listCtxObj._targetElem($this);
10578                    targetEl.find('.cmp-tile-list').removeClass('filter-action').show();
10579                }
10580            }          
10581            FILTER_FLAG = false;
10582            SORT_FLAG = false;
10583            
10584            $listActionsEl.find('select[name="filter-select"]').val('0');
10585            $listActionsEl.find('select[name="sort-select"]').val('0');  
10586            if($listActionsEl.find('.select-selected').length >0 && resetText !== undefined){
10587            	$listActionsEl.find('.select-selected').html(resetText);
10588            	if($listActionsEl.find('.select-items div').hasClass('same-as-selected')){
10589					$listActionsEl.find('.select-items div').removeClass('same-as-selected');
10590                }
10591            }
10592         
10593        }
10594    }
10595    if($listActionsEl.length) {
10596        LOREM.listActions._init($(this));
10597    }
10598    if ($('.customDropdownHover').find('select[name="filter-select"]').length > 0) {
10599        LOREM.options._customDropdown($('.customDropdownHover').find('select[name="filter-select"]'));
10600        var resetText = $listActionsEl.find('.select-selected').html();
10601    }
10602});
10603var modalCtxObj;
10604var lightBoxDataTarget;
10605var $changePasswordFormID;
10606var $changePasswordEl;
10607var $resetPasswordEl;
10608var $resetPasswordFormID ;
10609var temLightBoxPath;
10610var dataFlag;
10611var lightboxModalId = $('#genericLightbox');
10612var personolizationModalPageUrl;
10613var personolizedElem;
10614LOREM.LightBoxModal = {
10615    _init: function() {
10616		lightBoxDataTarget = $('a[data-target="#genericLightbox"]');
10617        modalCtxObj = this;
10618        modalCtxObj._bindEvents(lightBoxDataTarget);
10619	},
10620    _bindEvents: function(lightBoxDataTarget) {
10621        	lightBoxDataTarget.on('click',modalCtxObj._modalAnchorClick);
10622     },
10623    _modalAnchorClick: function(ev, el) {
10624        ev.preventDefault();
10625        var lightBoxPath = $(this).data("lightbox-path"); 
10626        personolizedElem = $(this).parent().data('personalization');
10627        if(personolizedElem === true){
10628			$(this).parent().addClass('article-viewed');
10629        	personolizationModalPageUrl = $(this).parent().find('.data-personalization-url').attr('href');
10630        }
10631        if (temLightBoxPath != undefined && temLightBoxPath == lightBoxPath && !($('.placeholder').length >0)) {
10632        	lightboxModalId.modal('show');
10633        }
10634        else{
10635        	if(lightBoxPath != undefined){
10636        		temLightBoxPath = lightBoxPath;
10637	            $.ajax({
10638	                url: lightBoxPath,
10639	                type: 'GET',
10640	                contentType: 'text/plain',
10641	                dataType: 'html',
10642	                success: function(data) {
10643	                	modalCtxObj._videoLoadOnModal(data);
10644	                	if(dataFlag){
10645	                		modalCtxObj._lightboxDataReplace(data);
10646	                	}
10647	                	LOREM.UTILS._hideLoader();
10648	                	lightboxModalId.modal('show');
10649					}
10650	            });
10651        	}
10652        }
10653    },
10654    _plceholderReplacement:function(){
10655    	LOREM.MediaGalleryModal._handleplaceholders();
10656      	if($('.genericform-medication-reminder').length >0){
10657      		LOREM.genericformMedicationReminder._optOutBtnPlaceholder($('.genericform-medication-reminder'));
10658      	}
10659      	if($('.mapresults-v2').length >0){
10660      		LOREM.TreatmentResults_v2._shareModalPlaceholder($('.genericForm'));
10661      	}
10662    },
10663    _declaringVariables:function(){
10664	    $changePasswordFormID = $('.changePasswordForm').attr('id');
10665 		$changePasswordEl = $('#'+$changePasswordFormID);
10666	    $resetPasswordFormID = $('.resetPasswordForm').attr('id');
10667	    $resetPasswordEl = $('#'+$resetPasswordFormID);
10668    },
10669    _genericBindFnOnLoad:function(){
10670    	modalCtxObj._declaringVariables();
10671	   if ($('#signInForm').length) {
10672                LOREM.signInForm._init();
10673        }
10674	   if($('#forgotPasswordForm').length) {
10675	        LOREM.forgotPasswordForm._init();
10676	    }
10677	   if($changePasswordEl.length) {
10678	        LOREM.changePasswordForm._init();
10679	    }
10680	   if($resetPasswordEl.length) {
10681	        LOREM.resetPasswordForm._init();
10682	    }
10683	   if($('form.user-form').length){
10684     		LOREM.onBlurValidate._init($('.lightbox-modal'));
10685     		$('form.user-form').each(function() {
10686                LOREM.autopopulateCityState._init($(this).find('.form-group'));
10687            });
10688       }
10689	   if ($('.genericForm').length) {
10690			$('.genericForm').each(function() {
10691				LOREM.genericForm._init($(this));
10692			});
10693	   }
10694	   if($('.ciam-signin-form').length) {
10695		   $('.ciam-signin-form').each(function() {
10696			   LOREM.ciamSignInForm._init($(this));
10697 			});
10698	   }
10699	   if($('.ciam-register-wrapper').length) {
10700			$('.ciam-register-wrapper').each(function() {
10701				LOREM.ciamRegister.checkEmailValidation($(this).find('.emailValidationForm'));
10702				LOREM.options.conditionalFunction($(this).find('.registrationForm'));
10703			});
10704		}
10705	   if ($('.ciam-edit-profile-container').length) {
10706	        $('.ciam-edit-profile-container').each(function() {
10707	            LOREM.ciamEditProfile._init($(this).find('.ciam-editProfile'));
10708	            LOREM.options.conditionalFunction($(this).find('.ciam-editProfile'));
10709	        });
10710	    }
10711	   if ($('.ciamForgotPasswordForm').length) {
10712	        $('.ciamForgotPasswordForm').each(function() {
10713	            LOREM.ciamForgotPasswordForm._init($(this));
10714	        });
10715	    }
10716	   if($('.changeResetPasswordForm').length) {
10717			 $('.changeResetPasswordForm').each(function() {
10718		        LOREM.CIAMChangePasswordForm._init($(this));
10719			 });
10720		 }
10721    },
10722    _handleFnOnLoad:function(){
10723	  var pairs = location.search.substr(1).split('&');
10724	    for (var i = 0; i < pairs.length; i++) {
10725	        var search = pairs[i].split('='),
10726	            key = search[0],
10727	            val = search[1];
10728	       if (key == 'lightbox') {
10729	            $('[data-lightbox-path="' + val + '"]').click();
10730	        }
10731	    }
10732    },
10733    _videoLoadOnModal: function(data) {
10734        var getScriptjs = $(data).find('script[type="text/javascript"]').attr('src');
10735        var alreadyLoaded = document.querySelector('script[src="' + getScriptjs + '"]') ? true : false;
10736        if (getScriptjs !== undefined) {
10737            if (!alreadyLoaded) {
10738                dataFlag = false;
10739                function loadScript(url, callback) {
10740                    var head = document.getElementsByTagName('head')[0];
10741                    var script = document.createElement('script');
10742                    script.type = 'text/javascript';
10743                    script.src = url;
10744                    script.onload = callback;
10745                    head.appendChild(script);
10746                }
10747                var replaceCode = function() {
10748                    if (dataFlag == false) {
10749                        modalCtxObj._lightboxDataReplace(data);
10750                    }
10751                };
10752                loadScript(getScriptjs, replaceCode);
10753            } else {
10754                dataFlag = true;
10755            }
10756        } else {
10757            dataFlag = true;
10758        }
10759        lightboxModalId.on('hide.bs.modal', function() {
10760            if ($(".lightbox-modal").find('.cmp-video').length > 0) {
10761            	 $('.cmp-video').each(function() {
10762                 	var divElem = $(this).find('div')[0];
10763                    var currentVideoItem = $(divElem).attr('id');
10764                 	if(($('.jwplayer').length >0) && jwplayer(currentVideoItem).getState()  === 'playing'){
10765                     	jwplayer(currentVideoItem).stop();
10766                     }
10767               });
10768            }
10769        });
10770    },
10771    _lightboxDataReplace:function(data){
10772    	$(".lightbox-modal").replaceWith(data);
10773		$('.lightbox-modal a[data-target="#genericLightbox"]').attr('href', 'javascript:void(0);');
10774        modalCtxObj._genericBindFnOnLoad();
10775      	if($(".lightbox-modal").length > 0){
10776			var lightboxlink = $('.lightbox-modal a[data-target="#genericLightbox"]');
10777             modalCtxObj._bindEvents(lightboxlink);
10778             modalCtxObj._plceholderReplacement();
10779        }
10780      	if($('.lightbox-modal[data-preventclose]').length>0){
10781      		lightboxModalId.modal({
10782            	 backdrop: 'static'
10783            });
10784        }
10785    }
10786}
10787$(document).ready(function() {
10788    if ($('a[data-target="#genericLightbox"]').length > 0) {
10789        LOREM.LightBoxModal._init();
10790        LOREM.LightBoxModal._handleFnOnLoad();
10791        $(document).keydown(function(e) {
10792        	if($('.lightbox-modal[data-preventclose]').length <= 0){
10793        	  if (e.keyCode == 27) {
10794        		  lightboxModalId.modal('hide');
10795        		  LOREM.MediaGalleryModal._videoClose();
10796        	  }
10797        	}
10798	    
10799	     if ($('#genericLightbox .modal-button .close-icon-button.close').is(':visible')) {
10800                let isTabPressed = e.key === 'Tab' || e.keyCode === 9;
10801                if (!isTabPressed) {
10802                    return;
10803                }
10804                if (e.shiftKey) {
10805                    document.querySelector('#genericLightbox .modal-button .close-icon-button.close').focus();
10806                    e.preventDefault();
10807                } else {
10808                    document.querySelector('#genericLightbox .modal-button .close-icon-button.close').focus();
10809                    e.preventDefault();
10810                }
10811            }
10812        });
10813    }
10814	$(document).on('click','a[data-target="#genericLightbox"]', function() {
10815		$('html').css('overflow', 'hidden');
10816	});
10817	$(document).on('hide.bs.modal', function () {
10818		$('html').css('overflow', 'auto');
10819	});
10820});
10821$(document).ready(function() {
10822    var cTZ, calendarTimeZone, evState, calendarTitle, calendarDate, calendarAddress, calendarDescription, eventTimeZone, eventState,  addToCalCtxObj;
10823
10824    var testData = false; /* change value to true if testing w/o eventdetails component */
10825
10826    LOREM.addToCalendarComp = {
10827        _init: function() {
10828            addToCalCtxObj = this;
10829            addToCalCtxObj._registerElements(testData);
10830            addToCalCtxObj._populateBasicInfo();
10831            },
10832
10833        _registerElements: function(testReq) {
10834            if (!testReq) {
10835                calendarTitle = $('#calendar-title').val();
10836                calendarDate = $('#calendar-date').val();
10837                eventTimeZone = $('#calendar-timezone').val();
10838                eventState = $('#event-state');
10839                calendarAddress = $('#calendar-address').val();
10840                calendarDescription = $('#calendar-description').val();
10841            } else {
10842                /* test data */
10843                calendarTitle = "Test Calendar Title";
10844                calendarDate = "23-01-2019 12:00";
10845                eventTimeZone = "PST";
10846                eventState = "MA";
10847                calendarAddress = "10 Test Address";
10848                calendarDescription = "Test calendar description content.";
10849            }
10850        },
10851
10852        /* TODO: Fetch event info from event service with eventID, no event component needed */
10853        /* _fetchEventInfo: function(eventID){} */
10854
10855        _populateBasicInfo: function() {
10856
10857            if (eventTimeZone) {
10858                calendarTimeZone = eventTimeZone.substring(0, 1);
10859            }
10860
10861            eventState = $('#event-state').text();
10862            if (eventState) {
10863                evState = eventState.substring(0, 2);
10864            }
10865            /* AZ is always MST; check first letter of timezone to set timezone string required by atc.js */
10866            if (evState !== 'AZ') {
10867                switch (calendarTimeZone) {
10868                    case 'C':
10869                        cTZ = 'america/chicago';
10870                        break;
10871                    case 'M':
10872                        cTZ = 'america/denver';
10873                        break;
10874                    case 'P':
10875                        cTZ = 'america/los_angeles';
10876                        break;
10877                    default:
10878                        cTZ = 'america/new_york';
10879                }
10880            } else {
10881                cTZ = 'america/phoenix';
10882            }
10883
10884            $('.start').html(calendarDate);
10885            $('#cal-timezone').html(cTZ);
10886            $('#cal-title').html(calendarTitle);
10887            $('#cal-description').html(calendarDescription);
10888            $('.location').html(calendarAddress);
10889
10890        },
10891
10892    }
10893
10894    /* TODO:  Check if event component exists before init */
10895    LOREM.addToCalendarComp._init();
10896
10897});
10898//     Underscore.js 1.9.1
10899//     http://underscorejs.org
10900//     (c) 2009-2018 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
10901//     Underscore may be freely distributed under the MIT license.
10902
10903(function() {
10904
10905  // Baseline setup
10906  // --------------
10907
10908  // Establish the root object, `window` (`self`) in the browser, `global`
10909  // on the server, or `this` in some virtual machines. We use `self`
10910  // instead of `window` for `WebWorker` support.
10911  var root = typeof self == 'object' && self.self === self && self ||
10912            typeof global == 'object' && global.global === global && global ||
10913            this ||
10914            {};
10915
10916  // Save the previous value of the `_` variable.
10917  var previousUnderscore = root._;
10918
10919  // Save bytes in the minified (but not gzipped) version:
10920  var ArrayProto = Array.prototype, ObjProto = Object.prototype;
10921  var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;
10922
10923  // Create quick reference variables for speed access to core prototypes.
10924  var push = ArrayProto.push,
10925      slice = ArrayProto.slice,
10926      toString = ObjProto.toString,
10927      hasOwnProperty = ObjProto.hasOwnProperty;
10928
10929  // All **ECMAScript 5** native function implementations that we hope to use
10930  // are declared here.
10931  var nativeIsArray = Array.isArray,
10932      nativeKeys = Object.keys,
10933      nativeCreate = Object.create;
10934
10935  // Naked function reference for surrogate-prototype-swapping.
10936  var Ctor = function(){};
10937
10938  // Create a safe reference to the Underscore object for use below.
10939  var _ = function(obj) {
10940    if (obj instanceof _) return obj;
10941    if (!(this instanceof _)) return new _(obj);
10942    this._wrapped = obj;
10943  };
10944
10945  // Export the Underscore object for **Node.js**, with
10946  // backwards-compatibility for their old module API. If we're in
10947  // the browser, add `_` as a global object.
10948  // (`nodeType` is checked to ensure that `module`
10949  // and `exports` are not HTML elements.)
10950  if (typeof exports != 'undefined' && !exports.nodeType) {
10951    if (typeof module != 'undefined' && !module.nodeType && module.exports) {
10952      exports = module.exports = _;
10953    }
10954    exports._ = _;
10955  } else {
10956    root._ = _;
10957  }
10958
10959  // Current version.
10960  _.VERSION = '1.9.1';
10961
10962  // Internal function that returns an efficient (for current engines) version
10963  // of the passed-in callback, to be repeatedly applied in other Underscore
10964  // functions.
10965  var optimizeCb = function(func, context, argCount) {
10966    if (context === void 0) return func;
10967    switch (argCount == null ? 3 : argCount) {
10968      case 1: return function(value) {
10969        return func.call(context, value);
10970      };
10971      // The 2-argument case is omitted because we’re not using it.
10972      case 3: return function(value, index, collection) {
10973        return func.call(context, value, index, collection);
10974      };
10975      case 4: return function(accumulator, value, index, collection) {
10976        return func.call(context, accumulator, value, index, collection);
10977      };
10978    }
10979    return function() {
10980      return func.apply(context, arguments);
10981    };
10982  };
10983
10984  var builtinIteratee;
10985
10986  // An internal function to generate callbacks that can be applied to each
10987  // element in a collection, returning the desired result — either `identity`,
10988  // an arbitrary callback, a property matcher, or a property accessor.
10989  var cb = function(value, context, argCount) {
10990    if (_.iteratee !== builtinIteratee) return _.iteratee(value, context);
10991    if (value == null) return _.identity;
10992    if (_.isFunction(value)) return optimizeCb(value, context, argCount);
10993    if (_.isObject(value) && !_.isArray(value)) return _.matcher(value);
10994    return _.property(value);
10995  };
10996
10997  // External wrapper for our callback generator. Users may customize
10998  // `_.iteratee` if they want additional predicate/iteratee shorthand styles.
10999  // This abstraction hides the internal-only argCount argument.
11000  _.iteratee = builtinIteratee = function(value, context) {
11001    return cb(value, context, Infinity);
11002  };
11003
11004  // Some functions take a variable number of arguments, or a few expected
11005  // arguments at the beginning and then a variable number of values to operate
11006  // on. This helper accumulates all remaining arguments past the function’s
11007  // argument length (or an explicit `startIndex`), into an array that becomes
11008  // the last argument. Similar to ES6’s "rest parameter".
11009  var restArguments = function(func, startIndex) {
11010    startIndex = startIndex == null ? func.length - 1 : +startIndex;
11011    return function() {
11012      var length = Math.max(arguments.length - startIndex, 0),
11013          rest = Array(length),
11014          index = 0;
11015      for (; index < length; index++) {
11016        rest[index] = arguments[index + startIndex];
11017      }
11018      switch (startIndex) {
11019        case 0: return func.call(this, rest);
11020        case 1: return func.call(this, arguments[0], rest);
11021        case 2: return func.call(this, arguments[0], arguments[1], rest);
11022      }
11023      var args = Array(startIndex + 1);
11024      for (index = 0; index < startIndex; index++) {
11025        args[index] = arguments[index];
11026      }
11027      args[startIndex] = rest;
11028      return func.apply(this, args);
11029    };
11030  };
11031
11032  // An internal function for creating a new object that inherits from another.
11033  var baseCreate = function(prototype) {
11034    if (!_.isObject(prototype)) return {};
11035    if (nativeCreate) return nativeCreate(prototype);
11036    Ctor.prototype = prototype;
11037    var result = new Ctor;
11038    Ctor.prototype = null;
11039    return result;
11040  };
11041
11042  var shallowProperty = function(key) {
11043    return function(obj) {
11044      return obj == null ? void 0 : obj[key];
11045    };
11046  };
11047
11048  var has = function(obj, path) {
11049    return obj != null && hasOwnProperty.call(obj, path);
11050  }
11051
11052  var deepGet = function(obj, path) {
11053    var length = path.length;
11054    for (var i = 0; i < length; i++) {
11055      if (obj == null) return void 0;
11056      obj = obj[path[i]];
11057    }
11058    return length ? obj : void 0;
11059  };
11060
11061  // Helper for collection methods to determine whether a collection
11062  // should be iterated as an array or as an object.
11063  // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength
11064  // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094
11065  var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;
11066  var getLength = shallowProperty('length');
11067  var isArrayLike = function(collection) {
11068    var length = getLength(collection);
11069    return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;
11070  };
11071
11072  // Collection Functions
11073  // --------------------
11074
11075  // The cornerstone, an `each` implementation, aka `forEach`.
11076  // Handles raw objects in addition to array-likes. Treats all
11077  // sparse array-likes as if they were dense.
11078  _.each = _.forEach = function(obj, iteratee, context) {
11079    iteratee = optimizeCb(iteratee, context);
11080    var i, length;
11081    if (isArrayLike(obj)) {
11082      for (i = 0, length = obj.length; i < length; i++) {
11083        iteratee(obj[i], i, obj);
11084      }
11085    } else {
11086      var keys = _.keys(obj);
11087      for (i = 0, length = keys.length; i < length; i++) {
11088        iteratee(obj[keys[i]], keys[i], obj);
11089      }
11090    }
11091    return obj;
11092  };
11093
11094  // Return the results of applying the iteratee to each element.
11095  _.map = _.collect = function(obj, iteratee, context) {
11096    iteratee = cb(iteratee, context);
11097    var keys = !isArrayLike(obj) && _.keys(obj),
11098        length = (keys || obj).length,
11099        results = Array(length);
11100    for (var index = 0; index < length; index++) {
11101      var currentKey = keys ? keys[index] : index;
11102      results[index] = iteratee(obj[currentKey], currentKey, obj);
11103    }
11104    return results;
11105  };
11106
11107  // Create a reducing function iterating left or right.
11108  var createReduce = function(dir) {
11109    // Wrap code that reassigns argument variables in a separate function than
11110    // the one that accesses `arguments.length` to avoid a perf hit. (#1991)
11111    var reducer = function(obj, iteratee, memo, initial) {
11112      var keys = !isArrayLike(obj) && _.keys(obj),
11113          length = (keys || obj).length,
11114          index = dir > 0 ? 0 : length - 1;
11115      if (!initial) {
11116        memo = obj[keys ? keys[index] : index];
11117        index += dir;
11118      }
11119      for (; index >= 0 && index < length; index += dir) {
11120        var currentKey = keys ? keys[index] : index;
11121        memo = iteratee(memo, obj[currentKey], currentKey, obj);
11122      }
11123      return memo;
11124    };
11125
11126    return function(obj, iteratee, memo, context) {
11127      var initial = arguments.length >= 3;
11128      return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);
11129    };
11130  };
11131
11132  // **Reduce** builds up a single result from a list of values, aka `inject`,
11133  // or `foldl`.
11134  _.reduce = _.foldl = _.inject = createReduce(1);
11135
11136  // The right-associative version of reduce, also known as `foldr`.
11137  _.reduceRight = _.foldr = createReduce(-1);
11138
11139  // Return the first value which passes a truth test. Aliased as `detect`.
11140  _.find = _.detect = function(obj, predicate, context) {
11141    var keyFinder = isArrayLike(obj) ? _.findIndex : _.findKey;
11142    var key = keyFinder(obj, predicate, context);
11143    if (key !== void 0 && key !== -1) return obj[key];
11144  };
11145
11146  // Return all the elements that pass a truth test.
11147  // Aliased as `select`.
11148  _.filter = _.select = function(obj, predicate, context) {
11149    var results = [];
11150    predicate = cb(predicate, context);
11151    _.each(obj, function(value, index, list) {
11152      if (predicate(value, index, list)) results.push(value);
11153    });
11154    return results;
11155  };
11156
11157  // Return all the elements for which a truth test fails.
11158  _.reject = function(obj, predicate, context) {
11159    return _.filter(obj, _.negate(cb(predicate)), context);
11160  };
11161
11162  // Determine whether all of the elements match a truth test.
11163  // Aliased as `all`.
11164  _.every = _.all = function(obj, predicate, context) {
11165    predicate = cb(predicate, context);
11166    var keys = !isArrayLike(obj) && _.keys(obj),
11167        length = (keys || obj).length;
11168    for (var index = 0; index < length; index++) {
11169      var currentKey = keys ? keys[index] : index;
11170      if (!predicate(obj[currentKey], currentKey, obj)) return false;
11171    }
11172    return true;
11173  };
11174
11175  // Determine if at least one element in the object matches a truth test.
11176  // Aliased as `any`.
11177  _.some = _.any = function(obj, predicate, context) {
11178    predicate = cb(predicate, context);
11179    var keys = !isArrayLike(obj) && _.keys(obj),
11180        length = (keys || obj).length;
11181    for (var index = 0; index < length; index++) {
11182      var currentKey = keys ? keys[index] : index;
11183      if (predicate(obj[currentKey], currentKey, obj)) return true;
11184    }
11185    return false;
11186  };
11187
11188  // Determine if the array or object contains a given item (using `===`).
11189  // Aliased as `includes` and `include`.
11190  _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) {
11191    if (!isArrayLike(obj)) obj = _.values(obj);
11192    if (typeof fromIndex != 'number' || guard) fromIndex = 0;
11193    return _.indexOf(obj, item, fromIndex) >= 0;
11194  };
11195
11196  // Invoke a method (with arguments) on every item in a collection.
11197  _.invoke = restArguments(function(obj, path, args) {
11198    var contextPath, func;
11199    if (_.isFunction(path)) {
11200      func = path;
11201    } else if (_.isArray(path)) {
11202      contextPath = path.slice(0, -1);
11203      path = path[path.length - 1];
11204    }
11205    return _.map(obj, function(context) {
11206      var method = func;
11207      if (!method) {
11208        if (contextPath && contextPath.length) {
11209          context = deepGet(context, contextPath);
11210        }
11211        if (context == null) return void 0;
11212        method = context[path];
11213      }
11214      return method == null ? method : method.apply(context, args);
11215    });
11216  });
11217
11218  // Convenience version of a common use case of `map`: fetching a property.
11219  _.pluck = function(obj, key) {
11220    return _.map(obj, _.property(key));
11221  };
11222
11223  // Convenience version of a common use case of `filter`: selecting only objects
11224  // containing specific `key:value` pairs.
11225  _.where = function(obj, attrs) {
11226    return _.filter(obj, _.matcher(attrs));
11227  };
11228
11229  // Convenience version of a common use case of `find`: getting the first object
11230  // containing specific `key:value` pairs.
11231  _.findWhere = function(obj, attrs) {
11232    return _.find(obj, _.matcher(attrs));
11233  };
11234
11235  // Return the maximum element (or element-based computation).
11236  _.max = function(obj, iteratee, context) {
11237    var result = -Infinity, lastComputed = -Infinity,
11238        value, computed;
11239    if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {
11240      obj = isArrayLike(obj) ? obj : _.values(obj);
11241      for (var i = 0, length = obj.length; i < length; i++) {
11242        value = obj[i];
11243        if (value != null && value > result) {
11244          result = value;
11245        }
11246      }
11247    } else {
11248      iteratee = cb(iteratee, context);
11249      _.each(obj, function(v, index, list) {
11250        computed = iteratee(v, index, list);
11251        if (computed > lastComputed || computed === -Infinity && result === -Infinity) {
11252          result = v;
11253          lastComputed = computed;
11254        }
11255      });
11256    }
11257    return result;
11258  };
11259
11260  // Return the minimum element (or element-based computation).
11261  _.min = function(obj, iteratee, context) {
11262    var result = Infinity, lastComputed = Infinity,
11263        value, computed;
11264    if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {
11265      obj = isArrayLike(obj) ? obj : _.values(obj);
11266      for (var i = 0, length = obj.length; i < length; i++) {
11267        value = obj[i];
11268        if (value != null && value < result) {
11269          result = value;
11270        }
11271      }
11272    } else {
11273      iteratee = cb(iteratee, context);
11274      _.each(obj, function(v, index, list) {
11275        computed = iteratee(v, index, list);
11276        if (computed < lastComputed || computed === Infinity && result === Infinity) {
11277          result = v;
11278          lastComputed = computed;
11279        }
11280      });
11281    }
11282    return result;
11283  };
11284
11285  // Shuffle a collection.
11286  _.shuffle = function(obj) {
11287    return _.sample(obj, Infinity);
11288  };
11289
11290  // Sample **n** random values from a collection using the modern version of the
11291  // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).
11292  // If **n** is not specified, returns a single random element.
11293  // The internal `guard` argument allows it to work with `map`.
11294  _.sample = function(obj, n, guard) {
11295    if (n == null || guard) {
11296      if (!isArrayLike(obj)) obj = _.values(obj);
11297      return obj[_.random(obj.length - 1)];
11298    }
11299    var sample = isArrayLike(obj) ? _.clone(obj) : _.values(obj);
11300    var length = getLength(sample);
11301    n = Math.max(Math.min(n, length), 0);
11302    var last = length - 1;
11303    for (var index = 0; index < n; index++) {
11304      var rand = _.random(index, last);
11305      var temp = sample[index];
11306      sample[index] = sample[rand];
11307      sample[rand] = temp;
11308    }
11309    return sample.slice(0, n);
11310  };
11311
11312  // Sort the object's values by a criterion produced by an iteratee.
11313  _.sortBy = function(obj, iteratee, context) {
11314    var index = 0;
11315    iteratee = cb(iteratee, context);
11316    return _.pluck(_.map(obj, function(value, key, list) {
11317      return {
11318        value: value,
11319        index: index++,
11320        criteria: iteratee(value, key, list)
11321      };
11322    }).sort(function(left, right) {
11323      var a = left.criteria;
11324      var b = right.criteria;
11325      if (a !== b) {
11326        if (a > b || a === void 0) return 1;
11327        if (a < b || b === void 0) return -1;
11328      }
11329      return left.index - right.index;
11330    }), 'value');
11331  };
11332
11333  // An internal function used for aggregate "group by" operations.
11334  var group = function(behavior, partition) {
11335    return function(obj, iteratee, context) {
11336      var result = partition ? [[], []] : {};
11337      iteratee = cb(iteratee, context);
11338      _.each(obj, function(value, index) {
11339        var key = iteratee(value, index, obj);
11340        behavior(result, value, key);
11341      });
11342      return result;
11343    };
11344  };
11345
11346  // Groups the object's values by a criterion. Pass either a string attribute
11347  // to group by, or a function that returns the criterion.
11348  _.groupBy = group(function(result, value, key) {
11349    if (has(result, key)) result[key].push(value); else result[key] = [value];
11350  });
11351
11352  // Indexes the object's values by a criterion, similar to `groupBy`, but for
11353  // when you know that your index values will be unique.
11354  _.indexBy = group(function(result, value, key) {
11355    result[key] = value;
11356  });
11357
11358  // Counts instances of an object that group by a certain criterion. Pass
11359  // either a string attribute to count by, or a function that returns the
11360  // criterion.
11361  _.countBy = group(function(result, value, key) {
11362    if (has(result, key)) result[key]++; else result[key] = 1;
11363  });
11364
11365  var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;
11366  // Safely create a real, live array from anything iterable.
11367  _.toArray = function(obj) {
11368    if (!obj) return [];
11369    if (_.isArray(obj)) return slice.call(obj);
11370    if (_.isString(obj)) {
11371      // Keep surrogate pair characters together
11372      return obj.match(reStrSymbol);
11373    }
11374    if (isArrayLike(obj)) return _.map(obj, _.identity);
11375    return _.values(obj);
11376  };
11377
11378  // Return the number of elements in an object.
11379  _.size = function(obj) {
11380    if (obj == null) return 0;
11381    return isArrayLike(obj) ? obj.length : _.keys(obj).length;
11382  };
11383
11384  // Split a collection into two arrays: one whose elements all satisfy the given
11385  // predicate, and one whose elements all do not satisfy the predicate.
11386  _.partition = group(function(result, value, pass) {
11387    result[pass ? 0 : 1].push(value);
11388  }, true);
11389
11390  // Array Functions
11391  // ---------------
11392
11393  // Get the first element of an array. Passing **n** will return the first N
11394  // values in the array. Aliased as `head` and `take`. The **guard** check
11395  // allows it to work with `_.map`.
11396  _.first = _.head = _.take = function(array, n, guard) {
11397    if (array == null || array.length < 1) return n == null ? void 0 : [];
11398    if (n == null || guard) return array[0];
11399    return _.initial(array, array.length - n);
11400  };
11401
11402  // Returns everything but the last entry of the array. Especially useful on
11403  // the arguments object. Passing **n** will return all the values in
11404  // the array, excluding the last N.
11405  _.initial = function(array, n, guard) {
11406    return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));
11407  };
11408
11409  // Get the last element of an array. Passing **n** will return the last N
11410  // values in the array.
11411  _.last = function(array, n, guard) {
11412    if (array == null || array.length < 1) return n == null ? void 0 : [];
11413    if (n == null || guard) return array[array.length - 1];
11414    return _.rest(array, Math.max(0, array.length - n));
11415  };
11416
11417  // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.
11418  // Especially useful on the arguments object. Passing an **n** will return
11419  // the rest N values in the array.
11420  _.rest = _.tail = _.drop = function(array, n, guard) {
11421    return slice.call(array, n == null || guard ? 1 : n);
11422  };
11423
11424  // Trim out all falsy values from an array.
11425  _.compact = function(array) {
11426    return _.filter(array, Boolean);
11427  };
11428
11429  // Internal implementation of a recursive `flatten` function.
11430  var flatten = function(input, shallow, strict, output) {
11431    output = output || [];
11432    var idx = output.length;
11433    for (var i = 0, length = getLength(input); i < length; i++) {
11434      var value = input[i];
11435      if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) {
11436        // Flatten current level of array or arguments object.
11437        if (shallow) {
11438          var j = 0, len = value.length;
11439          while (j < len) output[idx++] = value[j++];
11440        } else {
11441          flatten(value, shallow, strict, output);
11442          idx = output.length;
11443        }
11444      } else if (!strict) {
11445        output[idx++] = value;
11446      }
11447    }
11448    return output;
11449  };
11450
11451  // Flatten out an array, either recursively (by default), or just one level.
11452  _.flatten = function(array, shallow) {
11453    return flatten(array, shallow, false);
11454  };
11455
11456  // Return a version of the array that does not contain the specified value(s).
11457  _.without = restArguments(function(array, otherArrays) {
11458    return _.difference(array, otherArrays);
11459  });
11460
11461  // Produce a duplicate-free version of the array. If the array has already
11462  // been sorted, you have the option of using a faster algorithm.
11463  // The faster algorithm will not work with an iteratee if the iteratee
11464  // is not a one-to-one function, so providing an iteratee will disable
11465  // the faster algorithm.
11466  // Aliased as `unique`.
11467  _.uniq = _.unique = function(array, isSorted, iteratee, context) {
11468    if (!_.isBoolean(isSorted)) {
11469      context = iteratee;
11470      iteratee = isSorted;
11471      isSorted = false;
11472    }
11473    if (iteratee != null) iteratee = cb(iteratee, context);
11474    var result = [];
11475    var seen = [];
11476    for (var i = 0, length = getLength(array); i < length; i++) {
11477      var value = array[i],
11478          computed = iteratee ? iteratee(value, i, array) : value;
11479      if (isSorted && !iteratee) {
11480        if (!i || seen !== computed) result.push(value);
11481        seen = computed;
11482      } else if (iteratee) {
11483        if (!_.contains(seen, computed)) {
11484          seen.push(computed);
11485          result.push(value);
11486        }
11487      } else if (!_.contains(result, value)) {
11488        result.push(value);
11489      }
11490    }
11491    return result;
11492  };
11493
11494  // Produce an array that contains the union: each distinct element from all of
11495  // the passed-in arrays.
11496  _.union = restArguments(function(arrays) {
11497    return _.uniq(flatten(arrays, true, true));
11498  });
11499
11500  // Produce an array that contains every item shared between all the
11501  // passed-in arrays.
11502  _.intersection = function(array) {
11503    var result = [];
11504    var argsLength = arguments.length;
11505    for (var i = 0, length = getLength(array); i < length; i++) {
11506      var item = array[i];
11507      if (_.contains(result, item)) continue;
11508      var j;
11509      for (j = 1; j < argsLength; j++) {
11510        if (!_.contains(arguments[j], item)) break;
11511      }
11512      if (j === argsLength) result.push(item);
11513    }
11514    return result;
11515  };
11516
11517  // Take the difference between one array and a number of other arrays.
11518  // Only the elements present in just the first array will remain.
11519  _.difference = restArguments(function(array, rest) {
11520    rest = flatten(rest, true, true);
11521    return _.filter(array, function(value){
11522      return !_.contains(rest, value);
11523    });
11524  });
11525
11526  // Complement of _.zip. Unzip accepts an array of arrays and groups
11527  // each array's elements on shared indices.
11528  _.unzip = function(array) {
11529    var length = array && _.max(array, getLength).length || 0;
11530    var result = Array(length);
11531
11532    for (var index = 0; index < length; index++) {
11533      result[index] = _.pluck(array, index);
11534    }
11535    return result;
11536  };
11537
11538  // Zip together multiple lists into a single array -- elements that share
11539  // an index go together.
11540  _.zip = restArguments(_.unzip);
11541
11542  // Converts lists into objects. Pass either a single array of `[key, value]`
11543  // pairs, or two parallel arrays of the same length -- one of keys, and one of
11544  // the corresponding values. Passing by pairs is the reverse of _.pairs.
11545  _.object = function(list, values) {
11546    var result = {};
11547    for (var i = 0, length = getLength(list); i < length; i++) {
11548      if (values) {
11549        result[list[i]] = values[i];
11550      } else {
11551        result[list[i][0]] = list[i][1];
11552      }
11553    }
11554    return result;
11555  };
11556
11557  // Generator function to create the findIndex and findLastIndex functions.
11558  var createPredicateIndexFinder = function(dir) {
11559    return function(array, predicate, context) {
11560      predicate = cb(predicate, context);
11561      var length = getLength(array);
11562      var index = dir > 0 ? 0 : length - 1;
11563      for (; index >= 0 && index < length; index += dir) {
11564        if (predicate(array[index], index, array)) return index;
11565      }
11566      return -1;
11567    };
11568  };
11569
11570  // Returns the first index on an array-like that passes a predicate test.
11571  _.findIndex = createPredicateIndexFinder(1);
11572  _.findLastIndex = createPredicateIndexFinder(-1);
11573
11574  // Use a comparator function to figure out the smallest index at which
11575  // an object should be inserted so as to maintain order. Uses binary search.
11576  _.sortedIndex = function(array, obj, iteratee, context) {
11577    iteratee = cb(iteratee, context, 1);
11578    var value = iteratee(obj);
11579    var low = 0, high = getLength(array);
11580    while (low < high) {
11581      var mid = Math.floor((low + high) / 2);
11582      if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;
11583    }
11584    return low;
11585  };
11586
11587  // Generator function to create the indexOf and lastIndexOf functions.
11588  var createIndexFinder = function(dir, predicateFind, sortedIndex) {
11589    return function(array, item, idx) {
11590      var i = 0, length = getLength(array);
11591      if (typeof idx == 'number') {
11592        if (dir > 0) {
11593          i = idx >= 0 ? idx : Math.max(idx + length, i);
11594        } else {
11595          length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;
11596        }
11597      } else if (sortedIndex && idx && length) {
11598        idx = sortedIndex(array, item);
11599        return array[idx] === item ? idx : -1;
11600      }
11601      if (item !== item) {
11602        idx = predicateFind(slice.call(array, i, length), _.isNaN);
11603        return idx >= 0 ? idx + i : -1;
11604      }
11605      for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {
11606        if (array[idx] === item) return idx;
11607      }
11608      return -1;
11609    };
11610  };
11611
11612  // Return the position of the first occurrence of an item in an array,
11613  // or -1 if the item is not included in the array.
11614  // If the array is large and already in sort order, pass `true`
11615  // for **isSorted** to use binary search.
11616  _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex);
11617  _.lastIndexOf = createIndexFinder(-1, _.findLastIndex);
11618
11619  // Generate an integer Array containing an arithmetic progression. A port of
11620  // the native Python `range()` function. See
11621  // [the Python documentation](http://docs.python.org/library/functions.html#range).
11622  _.range = function(start, stop, step) {
11623    if (stop == null) {
11624      stop = start || 0;
11625      start = 0;
11626    }
11627    if (!step) {
11628      step = stop < start ? -1 : 1;
11629    }
11630
11631    var length = Math.max(Math.ceil((stop - start) / step), 0);
11632    var range = Array(length);
11633
11634    for (var idx = 0; idx < length; idx++, start += step) {
11635      range[idx] = start;
11636    }
11637
11638    return range;
11639  };
11640
11641  // Chunk a single array into multiple arrays, each containing `count` or fewer
11642  // items.
11643  _.chunk = function(array, count) {
11644    if (count == null || count < 1) return [];
11645    var result = [];
11646    var i = 0, length = array.length;
11647    while (i < length) {
11648      result.push(slice.call(array, i, i += count));
11649    }
11650    return result;
11651  };
11652
11653  // Function (ahem) Functions
11654  // ------------------
11655
11656  // Determines whether to execute a function as a constructor
11657  // or a normal function with the provided arguments.
11658  var executeBound = function(sourceFunc, boundFunc, context, callingContext, args
11658) {
11659    if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);
11660    var self = baseCreate(sourceFunc.prototype);
11661    var result = sourceFunc.apply(self, args);
11662    if (_.isObject(result)) return result;
11663    return self;
11664  };
11665
11666  // Create a function bound to a given object (assigning `this`, and arguments,
11667  // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if
11668  // available.
11669  _.bind = restArguments(function(func, context, args) {
11670    if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function');
11671    var bound = restArguments(function(callArgs) {
11672      return executeBound(func, bound, context, this, args.concat(callArgs));
11673    });
11674    return bound;
11675  });
11676
11677  // Partially apply a function by creating a version that has had some of its
11678  // arguments pre-filled, without changing its dynamic `this` context. _ acts
11679  // as a placeholder by default, allowing any combination of arguments to be
11680  // pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.
11681  _.partial = restArguments(function(func, boundArgs) {
11682    var placeholder = _.partial.placeholder;
11683    var bound = function() {
11684      var position = 0, length = boundArgs.length;
11685      var args = Array(length);
11686      for (var i = 0; i < length; i++) {
11687        args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];
11688      }
11689      while (position < arguments.length) args.push(arguments[position++]);
11690      return executeBound(func, bound, this, this, args);
11691    };
11692    return bound;
11693  });
11694
11695  _.partial.placeholder = _;
11696
11697  // Bind a number of an object's methods to that object. Remaining arguments
11698  // are the method names to be bound. Useful for ensuring that all callbacks
11699  // defined on an object belong to it.
11700  _.bindAll = restArguments(function(obj, keys) {
11701    keys = flatten(keys, false, false);
11702    var index = keys.length;
11703    if (index < 1) throw new Error('bindAll must be passed function names');
11704    while (index--) {
11705      var key = keys[index];
11706      obj[key] = _.bind(obj[key], obj);
11707    }
11708  });
11709
11710  // Memoize an expensive function by storing its results.
11711  _.memoize = function(func, hasher) {
11712    var memoize = function(key) {
11713      var cache = memoize.cache;
11714      var address = '' + (hasher ? hasher.apply(this, arguments) : key);
11715      if (!has(cache, address)) cache[address] = func.apply(this, arguments);
11716      return cache[address];
11717    };
11718    memoize.cache = {};
11719    return memoize;
11720  };
11721
11722  // Delays a function for the given number of milliseconds, and then calls
11723  // it with the arguments supplied.
11724  _.delay = restArguments(function(func, wait, args) {
11725    return setTimeout(function() {
11726      return func.apply(null, args);
11727    }, wait);
11728  });
11729
11730  // Defers a function, scheduling it to run after the current call stack has
11731  // cleared.
11732  _.defer = _.partial(_.delay, _, 1);
11733
11734  // Returns a function, that, when invoked, will only be triggered at most once
11735  // during a given window of time. Normally, the throttled function will run
11736  // as much as it can, without ever going more than once per `wait` duration;
11737  // but if you'd like to disable the execution on the leading edge, pass
11738  // `{leading: false}`. To disable execution on the trailing edge, ditto.
11739  _.throttle = function(func, wait, options) {
11740    var timeout, context, args, result;
11741    var previous = 0;
11742    if (!options) options = {};
11743
11744    var later = function() {
11745      previous = options.leading === false ? 0 : _.now();
11746      timeout = null;
11747      result = func.apply(context, args);
11748      if (!timeout) context = args = null;
11749    };
11750
11751    var throttled = function() {
11752      var now = _.now();
11753      if (!previous && options.leading === false) previous = now;
11754      var remaining = wait - (now - previous);
11755      context = this;
11756      args = arguments;
11757      if (remaining <= 0 || remaining > wait) {
11758        if (timeout) {
11759          clearTimeout(timeout);
11760          timeout = null;
11761        }
11762        previous = now;
11763        result = func.apply(context, args);
11764        if (!timeout) context = args = null;
11765      } else if (!timeout && options.trailing !== false) {
11766        timeout = setTimeout(later, remaining);
11767      }
11768      return result;
11769    };
11770
11771    throttled.cancel = function() {
11772      clearTimeout(timeout);
11773      previous = 0;
11774      timeout = context = args = null;
11775    };
11776
11777    return throttled;
11778  };
11779
11780  // Returns a function, that, as long as it continues to be invoked, will not
11781  // be triggered. The function will be called after it stops being called for
11782  // N milliseconds. If `immediate` is passed, trigger the function on the
11783  // leading edge, instead of the trailing.
11784  _.debounce = function(func, wait, immediate) {
11785    var timeout, result;
11786
11787    var later = function(context, args) {
11788      timeout = null;
11789      if (args) result = func.apply(context, args);
11790    };
11791
11792    var debounced = restArguments(function(args) {
11793      if (timeout) clearTimeout(timeout);
11794      if (immediate) {
11795        var callNow = !timeout;
11796        timeout = setTimeout(later, wait);
11797        if (callNow) result = func.apply(this, args);
11798      } else {
11799        timeout = _.delay(later, wait, this, args);
11800      }
11801
11802      return result;
11803    });
11804
11805    debounced.cancel = function() {
11806      clearTimeout(timeout);
11807      timeout = null;
11808    };
11809
11810    return debounced;
11811  };
11812
11813  // Returns the first function passed as an argument to the second,
11814  // allowing you to adjust arguments, run code before and after, and
11815  // conditionally execute the original function.
11816  _.wrap = function(func, wrapper) {
11817    return _.partial(wrapper, func);
11818  };
11819
11820  // Returns a negated version of the passed-in predicate.
11821  _.negate = function(predicate) {
11822    return function() {
11823      return !predicate.apply(this, arguments);
11824    };
11825  };
11826
11827  // Returns a function that is the composition of a list of functions, each
11828  // consuming the return value of the function that follows.
11829  _.compose = function() {
11830    var args = arguments;
11831    var start = args.length - 1;
11832    return function() {
11833      var i = start;
11834      var result = args[start].apply(this, arguments);
11835      while (i--) result = args[i].call(this, result);
11836      return result;
11837    };
11838  };
11839
11840  // Returns a function that will only be executed on and after the Nth call.
11841  _.after = function(times, func) {
11842    return function() {
11843      if (--times < 1) {
11844        return func.apply(this, arguments);
11845      }
11846    };
11847  };
11848
11849  // Returns a function that will only be executed up to (but not including) the Nth call.
11850  _.before = function(times, func) {
11851    var memo;
11852    return function() {
11853      if (--times > 0) {
11854        memo = func.apply(this, arguments);
11855      }
11856      if (times <= 1) func = null;
11857      return memo;
11858    };
11859  };
11860
11861  // Returns a function that will be executed at most one time, no matter how
11862  // often you call it. Useful for lazy initialization.
11863  _.once = _.partial(_.before, 2);
11864
11865  _.restArguments = restArguments;
11866
11867  // Object Functions
11868  // ----------------
11869
11870  // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.
11871  var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');
11872  var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',
11873    'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];
11874
11875  var collectNonEnumProps = function(obj, keys) {
11876    var nonEnumIdx = nonEnumerableProps.length;
11877    var constructor = obj.constructor;
11878    var proto = _.isFunction(constructor) && constructor.prototype || ObjProto;
11879
11880    // Constructor is a special case.
11881    var prop = 'constructor';
11882    if (has(obj, prop) && !_.contains(keys, prop)) keys.push(prop);
11883
11884    while (nonEnumIdx--) {
11885      prop = nonEnumerableProps[nonEnumIdx];
11886      if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) {
11887        keys.push(prop);
11888      }
11889    }
11890  };
11891
11892  // Retrieve the names of an object's own properties.
11893  // Delegates to **ECMAScript 5**'s native `Object.keys`.
11894  _.keys = function(obj) {
11895    if (!_.isObject(obj)) return [];
11896    if (nativeKeys) return nativeKeys(obj);
11897    var keys = [];
11898    for (var key in obj) if (has(obj, key)) keys.push(key);
11899    // Ahem, IE < 9.
11900    if (hasEnumBug) collectNonEnumProps(obj, keys);
11901    return keys;
11902  };
11903
11904  // Retrieve all the property names of an object.
11905  _.allKeys = function(obj) {
11906    if (!_.isObject(obj)) return [];
11907    var keys = [];
11908    for (var key in obj) keys.push(key);
11909    // Ahem, IE < 9.
11910    if (hasEnumBug) collectNonEnumProps(obj, keys);
11911    return keys;
11912  };
11913
11914  // Retrieve the values of an object's properties.
11915  _.values = function(obj) {
11916    var keys = _.keys(obj);
11917    var length = keys.length;
11918    var values = Array(length);
11919    for (var i = 0; i < length; i++) {
11920      values[i] = obj[keys[i]];
11921    }
11922    return values;
11923  };
11924
11925  // Returns the results of applying the iteratee to each element of the object.
11926  // In contrast to _.map it returns an object.
11927  _.mapObject = function(obj, iteratee, context) {
11928    iteratee = cb(iteratee, context);
11929    var keys = _.keys(obj),
11930        length = keys.length,
11931        results = {};
11932    for (var index = 0; index < length; index++) {
11933      var currentKey = keys[index];
11934      results[currentKey] = iteratee(obj[currentKey], currentKey, obj);
11935    }
11936    return results;
11937  };
11938
11939  // Convert an object into a list of `[key, value]` pairs.
11940  // The opposite of _.object.
11941  _.pairs = function(obj) {
11942    var keys = _.keys(obj);
11943    var length = keys.length;
11944    var pairs = Array(length);
11945    for (var i = 0; i < length; i++) {
11946      pairs[i] = [keys[i], obj[keys[i]]];
11947    }
11948    return pairs;
11949  };
11950
11951  // Invert the keys and values of an object. The values must be serializable.
11952  _.invert = function(obj) {
11953    var result = {};
11954    var keys = _.keys(obj);
11955    for (var i = 0, length = keys.length; i < length; i++) {
11956      result[obj[keys[i]]] = keys[i];
11957    }
11958    return result;
11959  };
11960
11961  // Return a sorted list of the function names available on the object.
11962  // Aliased as `methods`.
11963  _.functions = _.methods = function(obj) {
11964    var names = [];
11965    for (var key in obj) {
11966      if (_.isFunction(obj[key])) names.push(key);
11967    }
11968    return names.sort();
11969  };
11970
11971  // An internal function for creating assigner functions.
11972  var createAssigner = function(keysFunc, defaults) {
11973    return function(obj) {
11974      var length = arguments.length;
11975      if (defaults) obj = Object(obj);
11976      if (length < 2 || obj == null) return obj;
11977      for (var index = 1; index < length; index++) {
11978        var source = arguments[index],
11979            keys = keysFunc(source),
11980            l = keys.length;
11981        for (var i = 0; i < l; i++) {
11982          var key = keys[i];
11983          if (!defaults || obj[key] === void 0) obj[key] = source[key];
11984        }
11985      }
11986      return obj;
11987    };
11988  };
11989
11990  // Extend a given object with all the properties in passed-in object(s).
11991  _.extend = createAssigner(_.allKeys);
11992
11993  // Assigns a given object with all the own properties in the passed-in object(s).
11994  // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)
11995  _.extendOwn = _.assign = createAssigner(_.keys);
11996
11997  // Returns the first key on an object that passes a predicate test.
11998  _.findKey = function(obj, predicate, context) {
11999    predicate = cb(predicate, context);
12000    var keys = _.keys(obj), key;
12001    for (var i = 0, length = keys.length; i < length; i++) {
12002      key = keys[i];
12003      if (predicate(obj[key], key, obj)) return key;
12004    }
12005  };
12006
12007  // Internal pick helper function to determine if `obj` has key `key`.
12008  var keyInObj = function(value, key, obj) {
12009    return key in obj;
12010  };
12011
12012  // Return a copy of the object only containing the whitelisted properties.
12013  _.pick = restArguments(function(obj, keys) {
12014    var result = {}
12014, iteratee = keys[0];
12015    if (obj == null) return result;
12016    if (_.isFunction(iteratee)) {
12017      if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);
12018      keys = _.allKeys(obj);
12019    } else {
12020      iteratee = keyInObj;
12021      keys = flatten(keys, false, false);
12022      obj = Object(obj);
12023    }
12024    for (var i = 0, length = keys.length; i < length; i++) {
12025      var key = keys[i];
12026      var value = obj[key];
12027      if (iteratee(value, key, obj)) result[key] = value;
12028    }
12029    return result;
12030  });
12031
12032  // Return a copy of the object without the blacklisted properties.
12033  _.omit = restArguments(function(obj, keys) {
12034    var iteratee = keys[0], context;
12035    if (_.isFunction(iteratee)) {
12036      iteratee = _.negate(iteratee);
12037      if (keys.length > 1) context = keys[1];
12038    } else {
12039      keys = _.map(flatten(keys, false, false), String);
12040      iteratee = function(value, key) {
12041        return !_.contains(keys, key);
12042      };
12043    }
12044    return _.pick(obj, iteratee, context);
12045  });
12046
12047  // Fill in a given object with default properties.
12048  _.defaults = createAssigner(_.allKeys, true);
12049
12050  // Creates an object that inherits from the given prototype object.
12051  // If additional properties are provided then they will be added to the
12052  // created object.
12053  _.create = function(prototype, props) {
12054    var result = baseCreate(prototype);
12055    if (props) _.extendOwn(result, props);
12056    return result;
12057  };
12058
12059  // Create a (shallow-cloned) duplicate of an object.
12060  _.clone = function(obj) {
12061    if (!_.isObject(obj)) return obj;
12062    return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
12063  };
12064
12065  // Invokes interceptor with the obj, and then returns obj.
12066  // The primary purpose of this method is to "tap into" a method chain, in
12067  // order to perform operations on intermediate results within the chain.
12068  _.tap = function(obj, interceptor) {
12069    interceptor(obj);
12070    return obj;
12071  };
12072
12073  // Returns whether an object has a given set of `key:value` pairs.
12074  _.isMatch = function(object, attrs) {
12075    var keys = _.keys(attrs), length = keys.length;
12076    if (object == null) return !length;
12077    var obj = Object(object);
12078    for (var i = 0; i < length; i++) {
12079      var key = keys[i];
12080      if (attrs[key] !== obj[key] || !(key in obj)) return false;
12081    }
12082    return true;
12083  };
12084
12085
12086  // Internal recursive comparison function for `isEqual`.
12087  var eq, deepEq;
12088  eq = function(a, b, aStack, bStack) {
12089    // Identical objects are equal. `0 === -0`, but they aren't identical.
12090    // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).
12091    if (a === b) return a !== 0 || 1 / a === 1 / b;
12092    // `null` or `undefined` only equal to itself (strict comparison).
12093    if (a == null || b == null) return false;
12094    // `NaN`s are equivalent, but non-reflexive.
12095    if (a !== a) return b !== b;
12096    // Exhaust primitive checks
12097    var type = typeof a;
12098    if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;
12099    return deepEq(a, b, aStack, bStack);
12100  };
12101
12102  // Internal recursive comparison function for `isEqual`.
12103  deepEq = function(a, b, aStack, bStack) {
12104    // Unwrap any wrapped objects.
12105    if (a instanceof _) a = a._wrapped;
12106    if (b instanceof _) b = b._wrapped;
12107    // Compare `[[Class]]` names.
12108    var className = toString.call(a);
12109    if (className !== toString.call(b)) return false;
12110    switch (className) {
12111      // Strings, numbers, regular expressions, dates, and booleans are compared by value.
12112      case '[object RegExp]':
12113      // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')
12114      case '[object String]':
12115        // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
12116        // equivalent to `new String("5")`.
12117        return '' + a === '' + b;
12118      case '[object Number]':
12119        // `NaN`s are equivalent, but non-reflexive.
12120        // Object(NaN) is equivalent to NaN.
12121        if (+a !== +a) return +b !== +b;
12122        // An `egal` comparison is performed for other numeric values.
12123        return +a === 0 ? 1 / +a === 1 / b : +a === +b;
12124      case '[object Date]':
12125      case '[object Boolean]':
12126        // Coerce dates and booleans to numeric primitive values. Dates are compared by their
12127        // millisecond representations. Note that invalid dates with millisecond representations
12128        // of `NaN` are not equivalent.
12129        return +a === +b;
12130      case '[object Symbol]':
12131        return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);
12132    }
12133
12134    var areArrays = className === '[object Array]';
12135    if (!areArrays) {
12136      if (typeof a != 'object' || typeof b != 'object') return false;
vendor: 5,070 bytes, lines 12137-12281
12137
12138      // Objects with different constructors are not equivalent, but `Object`s or `Array`s
12139      // from different frames are.
12140      var aCtor = a.constructor, bCtor = b.constructor;
12141      if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor &&
12142                               _.isFunction(bCtor) && bCtor instanceof bCtor)
12143                          && ('constructor' in a && 'constructor' in b)) {
12144        return false;
12145      }
12146    }
12147    // Assume equality for cyclic structures. The algorithm for detecting cyclic
12148    // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
12149
12150    // Initializing stack of traversed objects.
12151    // It's done here since we only need them for objects and arrays comparison.
12152    aStack = aStack || [];
12153    bStack = bStack || [];
12154    var length = aStack.length;
12155    while (length--) {
12156      // Linear search. Performance is inversely proportional to the number of
12157      // unique nested structures.
12158      if (aStack[length] === a) return bStack[length] === b;
12159    }
12160
12161    // Add the first object to the stack of traversed objects.
12162    aStack.push(a);
12163    bStack.push(b);
12164
12165    // Recursively compare objects and arrays.
12166    if (areArrays) {
12167      // Compare array lengths to determine if a deep comparison is necessary.
12168      length = a.length;
12169      if (length !== b.length) return false;
12170      // Deep compare the contents, ignoring non-numeric properties.
12171      while (length--) {
12172        if (!eq(a[length], b[length], aStack, bStack)) return false;
12173      }
12174    } else {
12175      // Deep compare objects.
12176      var keys = _.keys(a), key;
12177      length = keys.length;
12178      // Ensure that both objects contain the same number of properties before comparing deep equality.
12179      if (_.keys(b).length !== length) return false;
12180      while (length--) {
12181        // Deep compare each member
12182        key = keys[length];
12183        if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;
12184      }
12185    }
12186    // Remove the first object from the stack of traversed objects.
12187    aStack.pop();
12188    bStack.pop();
12189    return true;
12190  };
12191
12192  // Perform a deep comparison to check if two objects are equal.
12193  _.isEqual = function(a, b) {
12194    return eq(a, b);
12195  };
12196
12197  // Is a given array, string, or object empty?
12198  // An "empty" object has no enumerable own-properties.
12199  _.isEmpty = function(obj) {
12200    if (obj == null) return true;
12201    if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0;
12202    return _.keys(obj).length === 0;
12203  };
12204
12205  // Is a given value a DOM element?
12206  _.isElement = function(obj) {
12207    return !!(obj && obj.nodeType === 1);
12208  };
12209
12210  // Is a given value an array?
12211  // Delegates to ECMA5's native Array.isArray
12212  _.isArray = nativeIsArray || function(obj) {
12213    return toString.call(obj) === '[object Array]';
12214  };
12215
12216  // Is a given variable an object?
12217  _.isObject = function(obj) {
12218    var type = typeof obj;
12219    return type === 'function' || type === 'object' && !!obj;
12220  };
12221
12222  // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError, isMap, isWeakMap, isSet, isWeakSet.
12223  _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error', 'Symbol', 'Map', 'WeakMap', 'Set', 'WeakSet'], function(name) {
12224    _['is' + name] = function(obj) {
12225      return toString.call(obj) === '[object ' + name + ']';
12226    };
12227  });
12228
12229  // Define a fallback version of the method in browsers (ahem, IE < 9), where
12230  // there isn't any inspectable "Arguments" type.
12231  if (!_.isArguments(arguments)) {
12232    _.isArguments = function(obj) {
12233      return has(obj, 'callee');
12234    };
12235  }
12236
12237  // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8,
12238  // IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).
12239  var nodelist = root.document && root.document.childNodes;
12240  if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {
12241    _.isFunction = function(obj) {
12242      return typeof obj == 'function' || false;
12243    };
12244  }
12245
12246  // Is a given object a finite number?
12247  _.isFinite = function(obj) {
12248    return !_.isSymbol(obj) && isFinite(obj) && !isNaN(parseFloat(obj));
12249  };
12250
12251  // Is the given value `NaN`?
12252  _.isNaN = function(obj) {
12253    return _.isNumber(obj) && isNaN(obj);
12254  };
12255
12256  // Is a given value a boolean?
12257  _.isBoolean = function(obj) {
12258    return obj === true || obj === false || toString.call(obj) === '[object Boolean]';
12259  };
12260
12261  // Is a given value equal to null?
12262  _.isNull = function(obj) {
12263    return obj === null;
12264  };
12265
12266  // Is a given variable undefined?
12267  _.isUndefined = function(obj) {
12268    return obj === void 0;
12269  };
12270
12271  // Shortcut function for checking if an object has a given property directly
12272  // on itself (in other words, not on a prototype).
12273  _.has = function(obj, path) {
12274    if (!_.isArray(path)) {
12275      return has(obj, path);
12276    }
12277    var length = path.length;
12278    for (var i = 0; i < length; i++) {
12279      var key = path[i];
12280      if (obj == null || !hasOwnProperty.call(obj, key)) {
12281        return false;
12282      }
12283      obj = obj[key];
12284    }
12285    return !!length;
12286  };
12287
12288  // Utility Functions
12289  // -----------------
12290
12291  // Run Underscore.js in *noConflict* mode, returning the `_` variable to its
12292  // previous owner. Returns a reference to the Underscore object.
12293  _.noConflict = function() {
12294    root._ = previousUnderscore;
12295    return this;
12296  };
12297
12298  // Keep the identity function around for default iteratees.
12299  _.identity = function(value) {
12300    return value;
12301  };
12302
12303  // Predicate-generating functions. Often useful outside of Underscore.
12304  _.constant = function(value) {
12305    return function() {
12306      return value;
12307    };
12308  };
12309
12310  _.noop = function(){};
12311
12312  // Creates a function that, when passed an object, will traverse that object’s
12313  // properties down the given `path`, specified as an array of keys or indexes.
12314  _.property = function(path) {
12315    if (!_.isArray(path)) {
12316      return shallowProperty(path);
12317    }
12318    return function(obj) {
12319      return deepGet(obj, path);
12320    };
12321  };
12322
12323  // Generates a function for a given object that returns a given property.
12324  _.propertyOf = function(obj) {
12325    if (obj == null) {
12326      return function(){};
12327    }
12328    return function(path) {
12329      return !_.isArray(path) ? obj[path] : deepGet(obj, path);
12330    };
12331  };
12332
12333  // Returns a predicate for checking whether an object has a given set of
12334  // `key:value` pairs.
12335  _.matcher = _.matches = function(attrs) {
12336    attrs = _.extendOwn({}, attrs);
12337    return function(obj) {
12338      return _.isMatch(obj, attrs);
12339    };
12340  };
12341
12342  // Run a function **n** times.
12343  _.times = function(n, iteratee, context) {
12344    var accum = Array(Math.max(0, n));
12345    iteratee = optimizeCb(iteratee, context, 1);
12346    for (var i = 0; i < n; i++) accum[i] = iteratee(i);
12347    return accum;
12348  };
12349
12350  // Return a random integer between min and max (inclusive).
12351  _.random = function(min, max) {
12352    if (max == null) {
12353      max = min;
12354      min = 0;
12355    }
12356    return min + Math.floor(Math.random() * (max - min + 1));
12357  };
12358
12359  // A (possibly faster) way to get the current timestamp as an integer.
12360  _.now = Date.now || function() {
12361    return new Date().getTime();
12362  };
12363
12364  // List of HTML entities for escaping.
12365  var escapeMap = {
12366    '&': '&amp;',
12367    '<': '&lt;',
12368    '>': '&gt;',
12369    '"': '&quot;',
12370    "'": '&#x27;',
12371    '`': '&#x60;'
12372  };
12373  var unescapeMap = _.invert(escapeMap);
12374
12375  // Functions for escaping and unescaping strings to/from HTML interpolation.
12376  var createEscaper = function(map) {
12377    var escaper = function(match) {
12378      return map[match];
12379    };
12380    // Regexes for identifying a key that needs to be escaped.
12381    var source = '(?:' + _.keys(map).join('|') + ')';
12382    var testRegexp = RegExp(source);
12383    var replaceRegexp = RegExp(source, 'g');
12384    return function(string) {
12385      string = string == null ? '' : '' + string;
12386      return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;
12387    };
12388  };
12389  _.escape = createEscaper(escapeMap);
12390  _.unescape = createEscaper(unescapeMap);
12391
12392  // Traverses the children of `obj` along `path`. If a child is a function, it
12393  // is invoked with its parent as context. Returns the value of the final
12394  // child, or `fallback` if any child is undefined.
12395  _.result = function(obj, path, fallback) {
12396    if (!_.isArray(path)) path = [path];
12397    var length = path.length;
12398    if (!length) {
12399      return _.isFunction(fallback) ? fallback.call(obj) : fallback;
12400    }
12401    for (var i = 0; i < length; i++) {
12402      var prop = obj == null ? void 0 : obj[path[i]];
12403      if (prop === void 0) {
12404        prop = fallback;
12405        i = length; // Ensure we don't continue iterating.
12406      }
12407      obj = _.isFunction(prop) ? prop.call(obj) : prop;
12408    }
12409    return obj;
12410  };
12411
12412  // Generate a unique integer id (unique within the entire client session).
12413  // Useful for temporary DOM ids.
12414  var idCounter = 0;
12415  _.uniqueId = function(prefix) {
12416    var id = ++idCounter + '';
12417    return prefix ? prefix + id : id;
12418  };
12419
12420  // By default, Underscore uses ERB-style template delimiters, change the
12421  // following template settings to use alternative delimiters.
12422  _.templateSettings = {
12423    evaluate: /<%([\s\S]+?)%>/g,
12424    interpolate: /<%=([\s\S]+?)%>/g,
12425    escape: /<%-([\s\S]+?)%>/g
12426  };
12427
12428  // When customizing `templateSettings`, if you don't want to define an
12429  // interpolation, evaluation or escaping regex, we need one that is
12430  // guaranteed not to match.
12431  var noMatch = /(.)^/;
12432
12433  // Certain characters need to be escaped so that they can be put into a
12434  // string literal.
12435  var escapes = {
12436    "'": "'",
12437    '\\': '\\',
12438    '\r': 'r',
12439    '\n': 'n',
12440    '\u2028': 'u2028',
12441    '\u2029': 'u2029'
12442  };
12443
12444  var escapeRegExp = /\\|'|\r|\n|\u2028|\u2029/g;
12445
12446  var escapeChar = function(match) {
12447    return '\\' + escapes[match];
12448  };
12449
12450  // JavaScript micro-templating, similar to John Resig's implementation.
12451  // Underscore templating handles arbitrary delimiters, preserves whitespace,
12452  // and correctly escapes quotes within interpolated code.
12453  // NB: `oldSettings` only exists for backwards compatibility.
12454  _.template = function(text, settings, oldSettings) {
12455    if (!settings && oldSettings) settings = oldSettings;
12456    settings = _.defaults({}, settings, _.templateSettings);
12457
12458    // Combine delimiters into one regular expression via alternation.
12459    var matcher = RegExp([
12460      (settings.escape || noMatch).source,
12461      (settings.interpolate || noMatch).source,
12462      (settings.evaluate || noMatch).source
12463    ].join('|') + '|$', 'g');
12464
12465    // Compile the template source, escaping string literals appropriately.
12466    var index = 0;
12467    var source = "__p+='";
12468    text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {
12469      source += text.slice(index, offset).replace(escapeRegExp, escapeChar);
12470      index = offset + match.length;
12471
12472      if (escape) {
12473        source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'";
12474      } else if (interpolate) {
12475        source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
12476      } else if (evaluate) {
12477        source += "';\n" + evaluate + "\n__p+='";
12478      }
12479
12480      // Adobe VMs need the match returned to produce the correct offset.
12481      return match;
12482    });
12483    source += "';\n";
12484
12485    // If a variable is not specified, place data values in local scope.
12486    if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';
12487
12488    source = "var __t,__p='',__j=Array.prototype.join," +
12489      "print=function(){__p+=__j.call(arguments,'');};\n" +
12490      source + 'return __p;\n';
12491
12492    var render;
12493    try {
12494      render = new Function(settings.variable || 'obj', '_', source);
12495    } catch (e) {
12496      e.source = source;
12497      throw e;
12498    }
12499
12500    var template = function(data) {
12501      return render.call(this, data, _);
12502    };
12503
12504    // Provide the compiled source as a convenience for precompilation.
12505    var argument = settings.variable || 'obj';
12506    template.source = 'function(' + argument + '){\n' + source + '}';
12507
12508    return template;
12509  };
12510
12511  // Add a "chain" function. Start chaining a wrapped Underscore object.
12512  _.chain = function(obj) {
12513    var instance = _(obj);
12514    instance._chain = true;
12515    return instance;
12516  };
12517
12518  // OOP
12519  // ---------------
12520  // If Underscore is called as a function, it returns a wrapped object that
12521  // can be used OO-style. This wrapper holds altered versions of all the
12522  // underscore functions. Wrapped objects may be chained.
12523
12524  // Helper function to continue chaining intermediate results.
12525  var chainResult = function(instance, obj) {
12526    return instance._chain ? _(obj).chain() : obj;
12527  };
12528
12529  // Add your own custom functions to the Underscore object.
12530  _.mixin = function(obj) {
12531    _.each(_.functions(obj), function(name) {
12532      var func = _[name] = obj[name];
12533      _.prototype[name] = function() {
12534        var args = [this._wrapped];
12535        push.apply(args, arguments);
12536        return chainResult(this, func.apply(_, args));
12537      };
12538    });
12539    return _;
12540  };
12541
12542  // Add all of the Underscore functions to the wrapper object.
12543  _.mixin(_);
12544
12545  // Add all mutator Array functions to the wrapper.
12546  _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
12547    var method = ArrayProto[name];
12548    _.prototype[name] = function() {
12549      var obj = this._wrapped;
12550      method.apply(obj, arguments);
12551      if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0];
12552      return chainResult(this, obj);
12553    };
12554  });
12555
12556  // Add all accessor Array functions to the wrapper.
12557  _.each(['concat', 'join', 'slice'], function(name) {
12558    var method = ArrayProto[name];
12559    _.prototype[name] = function() {
12560      return chainResult(this, method.apply(this._wrapped, arguments));
12561    };
12562  });
12563
12564  // Extracts the result from a wrapped and chained object.
12565  _.prototype.value = function() {
12566    return this._wrapped;
12567  };
12568
12569  // Provide unwrapping proxy for some methods used in engine operations
12570  // such as arithmetic and JSON stringification.
12571  _.prototype.valueOf = _.prototype.toJSON = _.prototype.value;
12572
12573  _.prototype.toString = function() {
12574    return String(this._wrapped);
12575  };
12576
12577  // AMD registration happens at the end for compatibility with AMD loaders
12578  // that may not enforce next-turn semantics on modules. Even though general
12579  // practice for AMD registration is to be anonymous, underscore registers
12580  // as a named module because, like jQuery, it is a base library that is
12581  // popular enough to be bundled in a third party lib, but not be part of
12582  // an AMD load request. Those cases could generate an error when an
12583  // anonymous define() is called outside of a loader request.
12584  if (typeof define == 'function' && define.amd) {
12585    define('underscore', [], function() {
12586      return _;
12587    });
12588  }
12589}());
12590var infowindow;
12591var map;
12592var geocoder;
12593var center;
12594var userPosition;
12595var geoPostal_Code = '';
12596var markers = [];
12597var markerCluster;
12598var mapsKey= $('input[name="google_mapskey"]').val();
12599LOREM.MapInitialize = {
12600    _init: function() { 
12601        locatorCtxObj = this;
12602        if(mapsKey){
12603            infowindow = new google.maps.InfoWindow();
12604            google.maps.event.addDomListener(window, 'load', locatorCtxObj.initialize);
12605        }
12606    },
12607  	initialize: function() {
12608        geocoder = new google.maps.Geocoder();
12609        var mapOptions = {
12610            zoom: 11,
12611            maxZoom: 15,
12612            mapTypeControl: false,
12613            mapTypeControlOptions: {
12614                style: google.maps.MapTypeControlStyle.DEFAULT,
12615                mapTypeIds: [
12616                    google.maps.MapTypeId.ROADMAP,
12617                    google.maps.MapTypeId.TERRAIN
12618                ]
12619            },
12620            zoomControl: true,
12621            zoomControlOptions: {
12622                style: google.maps.ZoomControlStyle.SMALL
12623            }
12624        };
12625        map = new google.maps.Map(document.getElementById('map-canvas'),
12626            mapOptions);
12627        google.maps.event.addListener(map, 'click', function() {
12628            infowindow.close();
12629        });
12630        google.maps.event.addListener(map, 'position_changed', function() {
12631            infowindow.close();
12632        });
12633        if (navigator.geolocation) {
12634            navigator.geolocation.getCurrentPosition(function(position) {
12635
12636                userPosition = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
12637                geoActive = true;
12638                if(mapsKey){
12639                    geocoder.geocode({
12640                        'latLng': userPosition
12641                    }, function(results, status) {
12642                        if (status == google.maps.GeocoderStatus.OK) {
12643                            var searchAddressComponents = results[0].address_components;
12644                          $.each(searchAddressComponents, function() {
12645                                if (this.types[0] == "postal_code") {
12646                                    geoPostal_Code = this.short_name;
12647                                }
12648                            });
12649                        }
12650                    });
12651                }
12652                map.setCenter(userPosition);
12653                center = userPosition;
12654              }, function() {
12655                userPosition = new google.maps.LatLng(null, null);
12656                geoActive = false;
12657
12658                var options = {
12659                    map: map,
12660                    position: new google.maps.LatLng(39.8282, -98.5795),
12661                };
12662
12663                map.setCenter(options.position);
12664                map.setZoom(4);
12665            });
12666
12667        } else {
12668            userPosition = new google.maps.LatLng(null, null);
12669            geoActive = false;
12670            var options = {
12671                map: map,
12672                position: new google.maps.LatLng(39.8282, -98.5795),
12673            };
12674            map.setCenter(options.position);
12675            map.setZoom(4);
12676            
12677        }
12678   },
12679    clearMapMarkers: function() {
12680        var i = 0,
12681            l = markers.length;
12682        for (i; i < l; i++) {
12683            markers[i].setMap(null);
12684        }
12685        markers = [];
12686        if (markerCluster)
12687            markerCluster.clearMarkers();
12688    },
12689    setCurrentPosition: function() {
12690        if (navigator.geolocation) {
12691            if(mapsKey) {
12692            navigator.geolocation.getCurrentPosition(function(position) {
12693                userPosition = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
12694                geoActive = true;
12695                if(map !== undefined){
12696                	map.setCenter(userPosition);
12697                }
12698                center = userPosition;
12699            }, function() {
12700                userPosition = new google.maps.LatLng(null, null);
12701                geoActive = false;
12702                var options = {
12703                    map: map,
12704                    position: new google.maps.LatLng(39.8282, -98.5795),
12705                };
12706                map.setCenter(options.position);
12707                map.setZoom(4);
12708            });
12709        }
12710        }
12711    },
12712    closeInfoWindow: function() {
12713        if(mapsKey) {
12714            google.maps.event.trigger(map, 'click', function() {
12715                infowindow.close();
12716            });
12717            google.maps.event.trigger(map, 'position_changed', function() {
12718                infowindow.close();
12719            });
12720            google.maps.event.trigger(map, 'zoom_changed', function() {
12721                infowindow.close();
12722            });
12723        }
12724    }
12725}
12726$(document).ready(function() {
12727	if ($('.map-results-container').length > 0) {
12728		LOREM.MapInitialize._init();
12729	}
12730
12731});
12732var infusionCenterCount;
12733var pageSize;
12734var bounds;
12735var loctorCtxObj;
12736var infowindow;
12737var marker;
12738LOREM.TreatmentResults = {
12739    _init: function($genericFormEl,response,$locatorEl,$mapEl) {
12740        if(mapsKey){
12741        bounds = new google.maps.LatLngBounds();
12742        }
12743        LOREM.MapInitialize.clearMapMarkers();
12744    	loctorCtxObj = this;
12745    	loctorCtxObj._getLocations($genericFormEl,response,$locatorEl);
12746    	loctorCtxObj._markCenters($genericFormEl,response,$mapEl);
12747        loctorCtxObj._bindEvents($genericFormEl);
12748        loctorCtxObj.animationForMobile();
12749    },
12750    _bindEvents: function($genericFormEl) {
12751    	$genericFormEl.find('.center-address').on('click', loctorCtxObj._markLocation); 
12752    	$genericFormEl.find('.contact-center').on('click', loctorCtxObj._contactCenter); 
12753
12754    },
12755	_getLocations:function($genericFormEl,response,$locatorEl){
12756    	var items = $genericFormEl.find(".results");
12757    	if(response != null){
12758    		infusionCenterCount = response.length;
12759	    	if(infusionCenterCount > 0){
12760	    		$genericFormEl.find('.total-results-count').show();
12761	    		$genericFormEl.find('.onload-text').hide();	
12762                $genericFormEl.find('.map-results-container .no-results').hide();
12763                var pageSize = $genericFormEl.find(".map-results-container .pagination").data('results-per-page')|| 5;    	
12764                $genericFormEl.find('.total-results-count span').html(infusionCenterCount);
12765                $genericFormEl.find('.results').empty();
12766                LOREM.MapInitialize.closeInfoWindow();                
12767                var template = _.template($locatorEl.html());
12768                var resultsTemplate = template({  LocatorServices: response  });
12769                if((template !== undefined) && (resultsTemplate !== undefined)){
12770                    $genericFormEl.find('.results').append(resultsTemplate);  
12771                }            
12772                loctorCtxObj._showPage(1,$genericFormEl,pageSize);
12773                items.slice(pageSize).show();
12774                var $stateEl = $genericFormEl.find('[name="state"]');
12775                if(($stateEl !== undefined) && ($stateEl.val() !== null)){
12776                	$genericFormEl.find('.infusion-center .hidecity span').hide();             	
12777                	
12778                }
12779                loctorCtxObj._getPagination($genericFormEl,infusionCenterCount,pageSize);
12780	    	}
12781	    	else{
12782	    		loctorCtxObj.noresultsdisplay($genericFormEl);
12783	    	}
12784    	}
12785    	else{
12786    		loctorCtxObj.noresultsdisplay($genericFormEl);
12787    	}
12788
12789        if(infusionCenterCount <= pageSize || infusionCenterCount === undefined){
12790        	$genericFormEl.find(".pagination").empty();
12791        }
12792	},
12793	_getPagination: function($genericFormEl,infusionCenterCount,pageSize){
12794                $genericFormEl.find(".map-results-container .pagination").pagination({
12795                    items: infusionCenterCount,
12796                    itemsOnPage: pageSize,
12797                    displayedPages: 2,
12798                    cssStyle: 'light-theme',
12799                    prevText:  $genericFormEl.find(".map-results-container .pagination").data('prev-page'),
12800                    nextText:  $genericFormEl.find(".map-results-container .pagination").data('next-page'),
12801                    onPageClick: function(page) {
12802                        LOREM.MapInitialize.closeInfoWindow();
12803                        $genericFormEl.find(".infusion-center").hide();
12804                        $genericFormEl.find(".infusion-center").each(function(n) {
12805                            if (n >= pageSize * (page - 1) && n < pageSize * page)
12806                            $(this).show();
12807                        });
12808                    }
12809                });
12810    },
12811	_showPage: function(page,$genericFormEl,pageSize) {
12812                  $genericFormEl.find(".infusion-center").hide();
12813                    $genericFormEl.find(".infusion-center").each(function(n) {
12814                        if (n >= pageSize * (page - 1) && n < pageSize * page)
12815                        $(this).show();
12816                    });
12817    },
12818	animationForMobile:function(){
12819		if (screen.width < 991) {
12820            $("html, body").delay(2000).animate({
12821                scrollTop: $('#map-canvas').offset().top
12822            }, 2000);
12823        }
12824	},
12825	noresultsdisplay: function($genericFormEl) {
12826		var noResultsDisplay = $genericFormEl.find(".map-results-container .no-results").data('noresultsmsg') ;
12827        $genericFormEl.find('.total-results-count').hide();
12828	   	$genericFormEl.find('.onload-text').hide();	
12829	    $genericFormEl.find('.results').empty();
12830        $genericFormEl.find(".pagination").empty();
12831        LOREM.MapInitialize.clearMapMarkers();
12832        LOREM.MapInitialize.setCurrentPosition();
12833        $genericFormEl.find('.map-results-container .no-results').html(noResultsDisplay).show();
12834	 },
12835	_markCenters: function($genericFormEl,response,$mapEl) {
12836		if(response != null){
12837			infusionCenterCount = response.length;
12838            if(infusionCenterCount >0 && infusionCenterCount !== undefined){
12839               for (var i = 0; i < infusionCenterCount; i++) {
12840                    var template = _.template($mapEl.html());
12841                    var mapTemplate = template({  LocatorServices: response[i] });
12842                    if((template !== undefined) && (mapTemplate !== undefined)){
12843                           var markerInfo = mapTemplate;   
12844                    }
12845                    if(mapsKey && response[i]['latitude'] !==undefined && response[i]['longitude'] !==undefined){
12846                        var latLng = new google.maps.LatLng(response[i]['latitude'], response[i]['longitude']);
12847                        bounds.extend(latLng);
12848
12849                    
12850                    var iconBase = scriptsIconsPath + '/new-marker.png';
12851                    marker = new MarkerWithLabel({
12852                        position: latLng,
12853                        html: markerInfo,
12854                        icon: iconBase,
12855                        labelContent: (i + 1) + "",
12856                        labelAnchor: new google.maps.Point(13, 38),
12857                        labelClass: "mapLabel",
12858                        labelInBackground: false
12859                    });
12860                    markers.push(marker);
12861                   }
12862                }
12863            }
12864        }
12865        var clusterOptions = {
12866            maxZoom: 15
12867        }
12868        if(mapsKey) {
12869        var markerCluster = new MarkerClusterer(map, markers, clusterOptions);
12870            infowindow = new google.maps.InfoWindow({
12871                content: markerInfo,
12872                maxWidth: 270
12873            });
12874        }
12875        for (let i = 0; i < markers.length; i++) {
12876            marker = markers[i];
12877            google.maps.event.addListener(marker, 'click', function() {
12878                if (infowindow) {
12879                    infowindow.close();
12880                };
12881                infowindow.setContent(this.html);
12882                infowindow.setPosition(this.getPosition());
12883                infowindow.setOptions({
12884                    pixelOffset: {
12885                        height: -40,
12886                        width: 0
12887                    }
12888                });
12889                infowindow.open(map);
12890            });
12891        }
12892        if(mapsKey) {
12893        google.maps.event.addListener(markerCluster, 'clusterclick', function(cluster) {
12894            var clusterOfMarkers = cluster.getMarkers();
12895            var clusterContentInfo = "";
12896            for (var i = 0; i < clusterOfMarkers.length; i++) {
12897                clusterContentInfo = clusterContentInfo + clusterOfMarkers[i].html;
12898            }
12899            infowindow.setContent(clusterContentInfo);
12900            infowindow.setPosition(clusterOfMarkers[1].getPosition());
12901            infowindow.open(map);
12902        });
12903
12904        if (infusionCenterCount > 0)
12905            map.fitBounds(bounds);
12906        }
12907    },
12908
12909      _markLocation: function(e) {
12910            e.preventDefault();
12911            var address = $(this).data('address') + " " + $(this).data('city') + ", " + $(this).data('state');
12912          if(mapsKey) {
12913            geocoder.geocode({
12914                'address': address
12915            }, function(results, status) {
12916                if (status === google.maps.GeocoderStatus.OK) {
12917                    map.setCenter(results[0].geometry.location);
12918                } else {
12919                    alert('Geocode was not successful for the following reason: ' + status);
12920                }
12921            });
12922            google.maps.event.trigger(markers[$(this).data('centernum')], 'click');
12923            map.setZoom(14);
12924          }
12925        },
12926    _contactCenter: function(e) {
12927        e.preventDefault();
12928        $(this).find('.chevronToggle').toggleClass('contact-arrow');
12929        $(this).siblings('.mile-city-container').find('.locator-h4 .hidecity').toggle();
12930        $(this).siblings('div.expandable-content').toggle();
12931    }
12932}
12933LOREM.TreatmentBindValidations={
12934    _init:function($genericFormEl){
12935		this._bindEvents($genericFormEl);
12936    },
12937    _bindEvents:function($genericFormEl){
12938         $genericFormEl.find('[name="radius"]').click(this._clearStateField);
12939        $genericFormEl.find('[name="state"]').click(this._clearGeoField);
12940    },
12941    _locServiceValidateForm: function($genericFormEl) {
12942      var $zipCodeEl = $genericFormEl.find('[name="zip"]');
12943	  var $milesEl = $genericFormEl.find('[name="radius"]');
12944	  var $stateEl = $genericFormEl.find('[name="state"]');
12945 		var isValid = true;
12946         $genericFormEl.find('.custom-error').remove(); 
12947        if($milesEl === undefined && $stateEl === undefined ){
12948            //do nothing
12949        }
12950         else if($milesEl.val() === null && $stateEl.val() === null) {
12951             //please select a search radius, please select a state msg to be displayed
12952             var milesErr = $milesEl.attr('data-cmp-required');
12953            	 $milesEl.closest('.form-group').append('<span class="custom-error">'+milesErr+'</span>');
12954             var stateErr = $stateEl.attr('data-cmp-required');
12955                 $stateEl.closest('.form-group').append('<span class="custom-error">'+stateErr+'</span>');
12956                 isValid = false;
12957         } else if($stateEl.val() === null && $milesEl.val() !== null 
12958                   && $zipCodeEl.val() === '') {
12959             //please select zipcode
12960             var errorTxt = $zipCodeEl.attr('data-cmp-required');
12961 				$zipCodeEl.closest('.form-group').append('<span class="custom-error">'+errorTxt+'</span>');
12962 				isValid = false;
12963         }         
12964         return isValid;
12965 	},
12966    _clearGeoField: function(ev) {
12967    	var $genericFormEl = $('#' + ev.target.closest('form').id);
12968        var $zipCodeEl = $genericFormEl.find('[name="zip"]');
12969        var $milesEl = $genericFormEl.find('[name="radius"]');
12970        if($milesEl !==undefined){
12971            $milesEl.val('0');
12972            $milesEl.closest('.form-group').find('.custom-error').remove(); 
12973        }
12974        $zipCodeEl.val('');        
12975    },
12976    _clearStateField: function(ev) {
12977    	var $genericFormEl = $('#' + ev.target.closest('form').id);
12978        var $stateEl = $genericFormEl.find('[name="state"]');
12979        if($stateEl !== undefined){
12980             $stateEl.val('0');  
12981             $stateEl.closest('.form-group').find('.custom-error').remove(); 
12982        }
12983     }
12984}
12985
12986var infusionCenterCount;
12987var pageSize;
12988var bounds;
12989var loctorCtxObj;
12990var filteredResponse;
12991var originalRes;
12992var preventFetchData;
12993var onLoadTextHtml;
12994var newFilter;
12995var infowindow;
12996var marker;
12997LOREM.TreatmentResults_v2 = {
12998    _init: function($genericFormEl,response,$locatorEl,$mapEl) {
12999        loctorCtxObj = this;
13000        if(mapsKey){
13001         bounds = new google.maps.LatLngBounds();
13002        }
13003         LOREM.MapInitialize.clearMapMarkers();
13004    	 $genericFormEl.find('.mapresults-v2 .results').empty();
13005    	 originalRes = response;
13006    	 filteredResponse = LOREM.options.filteredValues($('input[name=patientType]').closest('.form-group'),originalRes,'hcpPatientType');
13007    	 loctorCtxObj._medicareAndSpineFilter(filteredResponse);
13008    	 loctorCtxObj._getLocations($genericFormEl,newFilter,$locatorEl);
13009    	 if (!LOREM.devices.isMobile()) {
13010    		 loctorCtxObj._markCenters($genericFormEl,newFilter,$mapEl);
13011    	 }
13012         loctorCtxObj._bindEvents($genericFormEl,$locatorEl,$mapEl,newFilter);
13013
13014    },
13015    _bindEvents: function($genericFormEl,$locatorEl,$mapEl) {
13016    	if (!LOREM.devices.isMobile()){
13017    		 $genericFormEl.find('.mapresults-v2 .center-address').on('click', loctorCtxObj._markLocation); 
13018    	 }
13019    	$genericFormEl.find('.mapresults-v2 .contact-center').on('click', loctorCtxObj._contactCenter); 
13020    	$genericFormEl.find('input[name=patientType],input[name=acceptsMedicare],input[name=treatsSpine]').on('click',function(){
13021    		loctorCtxObj.checkBoxClicked($genericFormEl,$locatorEl,$mapEl,originalRes);
13022    	});
13023        if(preventFetchData ==='true'){
13024	        $genericFormEl.find('.use-my-location').on('click',function(){
13025				 loctorCtxObj._clearData($genericFormEl);
13026			 });
13027        }
13028    },
13029    _medicareAndSpineFilter:function(filteredResponse){
13030    	newFilter = filteredResponse;
13031    	if(($genericFormEl.find('input[name=acceptsMedicare]').length >0) || ($genericFormEl.find('input[name=treatsSpine]').length >0)){
13032	    	var isOnlyMedicare = false;
13033	    	var isMedicareAndSpine = false;
13034	    	var isMedicareChecked = $('input[name=acceptsMedicare]').is(':checked');
13035	    	var isSpineChecked = $('input[name=treatsSpine]').is(':checked');
13036	    	if(isMedicareChecked || isSpineChecked){
13037		    	if(isMedicareChecked && isSpineChecked){
13038		    		isMedicareAndSpine=true;
13039		    		isOnlyMedicare = false;
13040		    		newFilter = newCkbBoxFilterFun(filteredResponse);
13041		    	}else{
13042		    		isMedicareAndSpine=false;
13043			    	if(isMedicareChecked && !isSpineChecked ){
13044			    		isOnlyMedicare = true;
13045			    		newFilter = newCkbBoxFilterFun(filteredResponse);
13046			    	}
13047			    	if(!isMedicareChecked && isSpineChecked ){
13048			    		isOnlyMedicare = false;
13049			    		newFilter = newCkbBoxFilterFun(filteredResponse);
13050			    	}
13051		    	}
13052	    	}
13053	    	function newCkbBoxFilterFun(filteredResponse){
13054	       		var resultElemArray = [];
13055	    		filteredResponse.filter(function(entry) {
13056	    			if(((isMedicareAndSpine && (entry['hcpAcceptsMedicare'] === "TRUE")) && ((e
13056ntry['hcpTreatsSpine'] === "TRUE"))) || (isOnlyMedicare && ((entry['hcpAcceptsMedicare'] === "TRUE"))) || (!isOnlyMedicare && ((entry['hcpTreatsSpine'] === "TRUE")))){
13057	    				resultElemArray.push(entry);
13058	    			}
13059	    		});
13060	    		return resultElemArray;
13061	       	}
13062    	}
13063    	return newFilter;
13064   	},
13065   	
13066    _getLocations:function($genericFormEl,response,$locatorEl){
13067    	var items = $genericFormEl.find(".mapresults-v2 .results");
13068    	if(response != null){
13069    		infusionCenterCount = response.length;
13070	    	if(infusionCenterCount > 0){
13071				$genericFormEl.find('.mapresults-v2 .total-results-count').show();
13072	    		$genericFormEl.find('.mapresults-v2 .onload-text').hide();	
13073                $genericFormEl.find('.map-results-container .mapresults-v2 .no-results').hide();
13074                var pageSize = $genericFormEl.find(".map-results-container .mapresults-v2 .pagination").data('results-per-page')|| 5;    	
13075                $genericFormEl.find('.mapresults-v2 .total-results-count span').html(infusionCenterCount);
13076                $genericFormEl.find('.mapresults-v2 .results').empty();
13077                LOREM.MapInitialize.closeInfoWindow();                
13078                var template = _.template($locatorEl.html());
13079                var resultsTemplate = template({  LocatorServices: response  });
13080                if((template !== undefined) && (resultsTemplate !== undefined)){
13081                    $genericFormEl.find('.mapresults-v2 .results').append(resultsTemplate);  
13082                }            
13083                loctorCtxObj._showPage(1,$genericFormEl,pageSize);
13084                items.slice(pageSize).show();
13085                var $stateEl = $genericFormEl.find('[name="state"]');
13086                if(($stateEl !== undefined) && ($stateEl.val() !== null)){
13087                	$genericFormEl.find('.infusion-center .hidecity span').hide();             	
13088                	
13089                }
13090                $genericFormEl.find('.location-search-results').attr('data-results',JSON.stringify(response));
13091                loctorCtxObj._shareClick($genericFormEl);
13092				loctorCtxObj._getPagination($genericFormEl,infusionCenterCount,pageSize);
13093	    	}
13094	    	else{
13095	    		loctorCtxObj.noresultsdisplay($genericFormEl);
13096	    	}
13097    	}
13098    	else{
13099    		loctorCtxObj.noresultsdisplay($genericFormEl);
13100    	}
13101
13102        if(infusionCenterCount <= pageSize || infusionCenterCount === undefined){
13103        	$genericFormEl.find(".mapresults-v2 .pagination").empty();
13104        }
13105	},
13106    _getPagination: function($genericFormEl,infusionCenterCount,pageSize){
13107                $genericFormEl.find(".map-results-container .mapresults-v2 .pagination").pagination({
13108                    items: infusionCenterCount,
13109                    itemsOnPage: pageSize,
13110                    displayedPages: 2,
13111                    cssStyle: 'light-theme',
13112                    prevText:  $genericFormEl.find(".map-results-container .pagination").data('prev-page'),
13113                    nextText:  $genericFormEl.find(".map-results-container .pagination").data('next-page'),
13114                    onPageClick: function(page) {
13115                        LOREM.MapInitialize.closeInfoWindow();
13116                        $genericFormEl.find(".infusion-center").hide();
13117                        $genericFormEl.find(".infusion-center").each(function(n) {
13118                            if (n >= pageSize * (page - 1) && n < pageSize * page)
13119                            $(this).show();
13120                        });
13121                    }
13122                });
13123    },
13124    _showPage: function(page,$genericFormEl,pageSize) {
13125                  $genericFormEl.find(".infusion-center").hide();
13126                    $genericFormEl.find(".infusion-center").each(function(n) {
13127                        if (n >= pageSize * (page - 1) && n < pageSize * page)
13128                        $(this).show();
13129                    });
13130     },
13131    _clearData:function($genericFormEl){
13132         LOREM.TreatmentResults_v2.noresultsdisplay($genericFormEl);
13133        var noResultsDisplay = $(".map-results-container .mapresults-v2 .no-results").data('noresultsmsg') ;
13134        $('.map-results-container .mapresults-v2 .no-results').html(noResultsDisplay).hide();
13135        $('.mapresults-v2 .onload-text').show();
13136    },
13137	noresultsdisplay: function($genericFormEl) {
13138		var noResultsDisplay = $genericFormEl.find(".map-results-container .mapresults-v2 .no-results").data('noresultsmsg') ;
13139        $genericFormEl.find('.mapresults-v2 .total-results-count').hide();
13140	   	$genericFormEl.find('.mapresults-v2 .onload-text').hide();	
13141	    $genericFormEl.find('.mapresults-v2 .results').empty();
13142        $genericFormEl.find(".mapresults-v2 .pagination").empty();
13143        LOREM.MapInitialize.clearMapMarkers();
13144        LOREM.MapInitialize.setCurrentPosition();
13145        $genericFormEl.find('.map-results-container .mapresults-v2 .no-results').html(noResultsDisplay).show();
13146	 },
13147	_markCenters: function($genericFormEl,response,$mapEl) {
13148		if(response != null){
13149			infusionCenterCount = response.length;
13150            if(infusionCenterCount >0 && infusionCenterCount !== undefined){
13151               for (var i = 0; i < infusionCenterCount; i++) {
13152            	   var template = _.template($mapEl.html());
13153                   var mapTemplate = template({  LocatorServices: response[i] });
13154                   if((template !== undefined) && (mapTemplate !== undefined)){
13155                          var markerInfo = mapTemplate;   
13156                   }
13157
13158                   if(mapsKey){
13159                    var latLng = new google.maps.LatLng(response[i]['latitude'], response[i]['longitude']);
13160                    bounds.extend(latLng);
13161
13162
13163                    var iconBase = scriptsIconsPath + '/new-marker.png';
13164                    marker = new MarkerWithLabel({
13165                        position: latLng,
13166                        html: markerInfo,
13167                        icon: iconBase,
13168                        labelContent: (i + 1) + "",
13169                        labelAnchor: new google.maps.Point(13, 38),
13170                        labelClass: "mapLabel",
13171                        labelInBackground: false
13172                    });
13173                    markers.push(marker);
13174                   }
13175                }
13176            }
13177        }
13178        var clusterOptions = {
13179            maxZoom: 15
13180        }
13181        if(mapsKey){
13182            var markerCluster = new MarkerClusterer(map, markers, clusterOptions);
13183            infowindow = new google.maps.InfoWindow({
13184                content: markerInfo,
13185                maxWidth: 270
13186            });
13187        }
13188        for (let i = 0; i < markers.length; i++) {
13189            marker = markers[i];
13190            google.maps.event.addListener(marker, 'click', function() {
13191                if (infowindow) {
13192                    infowindow.close();
13193                };
13194                infowindow.setContent(this.html);
13195                infowindow.setPosition(this.getPosition());
13196                infowindow.setOptions({
13197                    pixelOffset: {
13198                        height: -40,
13199                        width: 0
13200                    }
13201                });
13202                infowindow.open(map);
13203            });
13204        }
13205        if(mapsKey) {
13206        google.maps.event.addListener(markerCluster, 'clusterclick', function(cluster) {
13207            var clusterOfMarkers = cluster.getMarkers();
13208            var clusterContentInfo = "";
13209            for (var i = 0; i < clusterOfMarkers.length; i++) {
13210                clusterContentInfo = clusterContentInfo + clusterOfMarkers[i].html;
13211            }
13212            infowindow.setContent(clusterContentInfo);
13213            infowindow.setPosition(clusterOfMarkers[1].getPosition());
13214            infowindow.open(map);
13215        });
13216        if (infusionCenterCount > 0)
13217            map.fitBounds(bounds);
13218        }
13219    },
13220
13221      _markLocation: function(e) {
13222            e.preventDefault();
13223            var address = $(this).data('address') + " " + $(this).data('city') + ", " + $(this).data('state');
13224            if(mapsKey) {
13225            geocoder.geocode({
13226                'address': address
13227            }, function(results, status) {
13228                if (status === google.maps.GeocoderStatus.OK) {
13229                    map.setCenter(results[0].geometry.location);
13230                } else {
13231                    alert('Geocode was not successful for the following reason: ' + status);
13232                }
13233            });
13234            google.maps.event.trigger(markers[$(this).data('centernum')], 'click');
13235            
13236            map.setZoom(14);
13237            }
13238        },
13239    _contactCenter: function(e) {
13240        e.preventDefault();
13241        $(this).find('.chevronToggle').toggleClass('contact-arrow');
13242        $(this).parent().next('div.expandable-content').toggle();
13243    },
13244    checkBoxClicked:function($genericFormEl,$locatorEl,$mapEl,originalRes){ 
13245    	 LOREM.MapInitialize.clearMapMarkers();
13246		 filteredResponse = LOREM.options.filteredValues($('input[name=patientType]').closest('.form-group'),originalRes,'hcpPatientType');
13247		 loctorCtxObj._medicareAndSpineFilter(filteredResponse);
13248		 loctorCtxObj._getLocations($genericFormEl,newFilter,$locatorEl); 
13249		 if (!LOREM.devices.isMobile()){
13250			 loctorCtxObj._markCenters($genericFormEl,newFilter,$mapEl); 
13251			 $genericFormEl.find('.mapresults-v2 .center-address').on('click', loctorCtxObj._markLocation); 
13252		 }
13253	     $genericFormEl.find('.mapresults-v2 .contact-center').on('click', loctorCtxObj._contactCenter); 
13254    },
13255    _shareClick:function($genericFormEl){
13256    	$genericFormEl.find('.share-div').each(function() {
13257	    	$(this).on('click',function(){
13258				$genericFormEl.find('a.share-div-link').click();
13259	    		$genericFormEl.find('.mapresults-v2 .placeholder-share-markup').empty();
13260	    		$genericFormEl.find('.mapresults-v2 .placeholder-inputhidden-markup').empty();
13261		    	var dataVal = $(this).parents('.infusion-center').html();
13262		    	$genericFormEl.find('.mapresults-v2 .placeholder-share-markup').append(dataVal);  
13263		    	var allData = $('.location-search-results').data('results');
13264		    	var indexElem = $(this).parents('.infusion-center').find('.center-address').attr('data-centernum');
13265		    	var selectedLocObj = allData[indexElem];
13266		    	var hiddenMarkup =LOREM.options._generateHiddenKeys(selectedLocObj);
13267                $genericFormEl.find('.mapresults-v2 .placeholder-inputhidden-markup').append(hiddenMarkup);
13268		    });
13269    	});
13270    },
13271    _getUseMyLocContent:function(){
13272        var $permissionEl = $('.mapresults-v2').parents().find('.geo-address-wrapper').find('[name="isPermissionGranted"]');
13273        $permissionEl.on("change", function(){ 
13274        if ($permissionEl.val() ==='false') {
13275			var onLoadText = $('.mapresults-v2 .onload-text');
13276	       var useMylocLink = $('.mapresults-v2').parents().find('.geo-address-wrapper .use-my-loc').html();
13277	       onLoadText.html(useMylocLink);
13278	       $('.mapresults-v2 .no-permission-grant').removeClass('hidden');
13279           $('.mapresults-v2').find('.use-my-location').on('click',function(){
13280			LOREM.geoAddress._useMyLocationSubmit($('.mapresults-v2').parents().find('.geo-address-wrapper'));
13281		 });
13282        } else {
13283			LOREM.TreatmentResults_v2._clearData($('.map-results-container .mapresults-v2').parents().find('.genericForm'));
13284			 $('.mapresults-v2 .onload-text').html(onLoadTextHtml);
13285
13286        }
13287    }).trigger('change');
13288    },
13289
13290    _shareModalPlaceholder:function($genericFormEl){
13291    	if($('.placeholder').length >0){
13292		   	 var sharedataHTML = $genericFormEl.find('.mapresults-v2 .placeholder-share-markup').html();
13293		   	var shareemailHTML = $genericFormEl.find('.mapresults-v2 .placeholder-inputhidden-markup').html();
13294		   	 $('.placeholder').each(function(){
13295			    	 if($(this).hasClass("share-locator-data")){
13296			    		 $('.share-locator-data').append(sharedataHTML);
13297			    	 }
13298			    	 if($(this).hasClass("share-locator-data-email")){
13299			    		 $('.share-locator-data-email').append(shareemailHTML);
13300			    	 }
13301		   	 });
13302    	}
13303    }
13304}
13305$(document).ready(function() {
13306     onLoadTextHtml = $('.mapresults-v2 .onload-text').html();
13307     preventFetchData = $('.mapresults-v2').parents().find('.geo-address-wrapper').find('[name="geoAddress"]').attr('data-prevent-autosubmit');
13308     if(preventFetchData === 'true'){
13309       LOREM.TreatmentResults_v2._clearData($('.map-results-container .mapresults-v2').parents().find('.genericForm'));
13310     }
13311});
13312
13313
13314var dataPersonolizationCtxObj;
13315var pageURL;
13316var pageListJson = [];
13317var pageHistoryObj = {};
13318LOREM.dataPersonolization = {
13319    _init: function() {
13320        dataPersonolizationCtxObj = this;
13321        pageURL = dataPersonolizationCtxObj._getPageURL();
13322        if (dataPersonolizationCtxObj._isTrackingEnabled()) {
13323            if (dataPersonolizationCtxObj._isArticleDetailPage() || dataPersonolizationCtxObj._isPageContainsVideo() || $('.media-gallery-modal').length >0) {
13324                dataPersonolizationCtxObj._createLocalStorage();
13325            }
13326        }
13327    },
13328    _getPageURL: function() {
13329        var domainName = window.location.origin;
13330        var pathName;
13331        if(personolizationModalPageUrl !== undefined){
13332        	pathName = personolizationModalPageUrl;
13333        }else{
13334			pathName = window.location.pathname;
13335        }
13336        return domainName + pathName;
13337    },
13338    _isTrackingEnabled: function() {
13339    	if(typeof isTrackingEnabled !== "undefined"){
13340	        if (isTrackingEnabled == 'true') {
13341	            return true;
13342	        }
13343    	}
13344    	return false;
13345    },
13346    _isArticleDetailPage: function() {
13347        var articleDetailCheck = $(document).find('meta[name="template"]').attr("content") === "article-detail-template";
13348        return articleDetailCheck ? true : false;
13349    },
13350    _isPageContainsVideo: function() {
13351        if (personolizationModalPageUrl !== undefined) {
13352            if ($('.modal-video-exists').length > 0) {
13353                return true;
13354            }
13355            return false;
13356        } else {
13357            if ($('.cmp-video').length > 0) {
13358                return true;
13359            }
13360            return false;
13361        }
13362    },
13363    _createLocalStorage: function() {
13364    	dataPersonolizationCtxObj._initiateOrResetStorage();
13365        var processedPageList = dataPersonolizationCtxObj._process();
13366        dataPersonolizationCtxObj._updateLocalStorage(processedPageList);
13367    },
13368    _initiateOrResetStorage:function(){
13369    	if (localStorage.getItem('pageHistory') != undefined) {
13370            pageHistoryObj = $.parseJSON(localStorage.getItem('pageHistory'));
13371            pageListJson = pageHistoryObj.pageList;
13372        } else {
13373            pageHistoryObj = {};
13374        }
13375    },
13376    _updateLocalStorage: function(processedPageList) {
13377        if (processedPageList != undefined && processedPageList.length > 0) {
13378            pageHistoryObj.pageList = processedPageList;
13379        }
13380        pageHistoryObj.expiryDate = dataPersonolizationCtxObj._expirydate();
13381        localStorage.setItem('pageHistory', JSON.stringify(pageHistoryObj));
13382    },
13383    _getSysDate: function() {
13384        var today = new Date();
13385        var dd = today.getDate();
13386        var mm = today.getMonth() + 1; //January is 0!
13387        var yyyy = today.getFullYear();
13388        if (dd < 10) {
13389            dd = '0' + dd;
13390        }
13391        if (mm < 10) {
13392            mm = '0' + mm;
13393        }
13394        var today = mm + '/' + dd + '/' + yyyy;
13395        return today;
13396    },
13397    _createPageJSON: function() {
13398        var pageJSON = {};
13399        pageJSON.pageURL = dataPersonolizationCtxObj._getPageURL();
13400        pageJSON.lastVisited = dataPersonolizationCtxObj._getSysDate();
13401        pageJSON.containsVideo = dataPersonolizationCtxObj._isPageContainsVideo();
13402        if (pageJSON.containsVideo === true) {
13403            pageJSON.videoDetails = dataPersonolizationCtxObj._createVideoJSON();
13404        }
13405        return pageJSON;
13406    },
13407    _createVideoJSON: function() {
13408        var videoDetails = [];
13409        var videoElem;
13410        if (personolizationModalPageUrl !== undefined) {
13411            videoElem = $('.modal-video-exists').find('.cmp-video');
13412        } else {
13413            videoElem = $('.cmp-video');
13414        }
13415        videoElem.each(function() {
13416            var videoJSON = {};
13417            videoJSON.videoURL = $(this).data('video-url');
13418            videoJSON.videoPlayedPercentage = 0;
13419            videoJSON.videoPlayedTime = 0;
13420            videoDetails.push(videoJSON);
13421        });
13422        return videoDetails;
13423    },
13424    _createOrUpdatePage: function(optionalvideoURL, optionalvideoPercent, optionalVideoPlayedTime) {
13425    	dataPersonolizationCtxObj._initiateOrResetStorage();
13426        var isUpdate = false;
13427        var isExpired = false;
13428        var updatedElem, updatedElemIndex;
13429        var cookieExpiryInDate = new Date(pageHistoryObj.expiryDate);
13430        for (var i in pageListJson) {
13431            var pageLastVisitedInDate = new Date(pageListJson[i].lastVisited);
13432            if (pageListJson[i].pageURL == dataPersonolizationCtxObj._getPageURL()) {
13433                isUpdate = true;
13434                isExpired = dataPersonolizationCtxObj._ispageExpired(pageLastVisitedInDate, cookieExpiryInDate);
13435                updatedElem = pageListJson[i];
13436                updatedElem.lastVisited = dataPersonolizationCtxObj._getSysDate();
13437                updatedElemIndex = i;
13438                break;
13439            }
13440        }
13441        if (isUpdate && optionalvideoURL != null) {
13442            updatedElem = dataPersonolizationCtxObj._createOrUpdatevideo(updatedElem, optionalvideoURL, optionalvideoPercent, optionalVideoPlayedTime);
13443            if (isExpired == true) {
13444                updatedElem = dataPersonolizationCtxObj._createOrUpdatevideo(updatedElem, optionalvideoURL, 0, 0);
13445            }
13446        }
13447        if (isUpdate == true) {
13448            pageListJson[updatedElemIndex] = updatedElem;
13449        }
13450        if (isUpdate == false) {
13451            pageListJson.push(dataPersonolizationCtxObj._createPageJSON());
13452        }
13453        return pageListJson;
13454    },
13455    _createOrUpdatevideo: function(updatedElem, optionalvideoURL, optionalvideoPercent, optionalVideoPlayedTime) {
13456        var updateVideoFlag = false;
13457        var videoDetailArray = updatedElem.videoDetails;
13458        var updatedVideoElem, updatedVideoElemIndex;
13459        for (var i in videoDetailArray) {
13460            if (videoDetailArray[i].videoURL == optionalvideoURL) {
13461                updatedVideoElem = videoDetailArray[i];
13462                updatedVideoElem.videoPlayedPercentage = optionalvideoPercent;
13463                updatedVideoElem.videoPlayedTime = optionalVideoPlayedTime;
13464                updatedVideoElemIndex = i;
13465                updateVideoFlag = true;
13466                break;
13467            }
13468        }
13469        if (updateVideoFlag) {
13470            videoDetailArray[updatedVideoElemIndex] = updatedVideoElem;
13471        } else {
13472            var vidJSON = {};
13473            vidJSON.videoURL = optionalvideoURL;
13474            vidJSON.videoPlayedPercentage = optionalvideoPercent;
13475            vidJSON.videoPlayedTime = optionalVideoPlayedTime;
13476            videoDetailArray.push(vidJSON);
13477        }
13478        updatedElem.videoDetails = videoDetailArray;
13479        return updatedElem;
13480    },
13481    _process: function() {
13482        return dataPersonolizationCtxObj._createOrUpdatePage();
13483    },
13484    _expirydate: function() {
13485        if (cookieExpiryInDays != undefined && cookieExpiryInDays != '') {
13486            var newDate = new Date();
13487            newDate.setDate(newDate.getDate() + parseInt(cookieExpiryInDays));
13488            var month = "0" + (newDate.getMonth() + 1);
13489            var date = "0" + newDate.getDate();
13490            month = month.slice(-2);
13491            date = date.slice(-2);
13492            var expiryDate = month + "/" + date + "/" + newDate.getFullYear();
13493            return expiryDate;
13494        }
13495    },
13496    _ispageExpired: function(pageLastVisitedInDate, cookieExpiryInDate) {
13497        if (pageLastVisitedInDate >= cookieExpiryInDate) {
13498            return true;
13499        }
13500        return false;
13501    }
13502}
13503$(document).ready(function() {
13504    LOREM.dataPersonolization._init();
13505});
13506var currentVideoItem;
13507var localStoragePageHistoryValue;
13508var currentPageVideoList = [];
13509LOREM.personolizationVideoHandler = {
13510    _init: function() {
13511        if (LOREM.dataPersonolization._isTrackingEnabled()) {
13512            LOREM.personolizationVideoHandler._bindVideoPlayers();
13513        }
13514    },
13515    _bindVideoPlayers: function() {
13516        var isVideoExists = false;
13517        var videoPersonolizedElem = LOREM.personolizationVideoHandler._getpersonolizedElem();
13518        if(videoPersonolizedElem.length>0){
13519        	videoPersonolizedElem.each(function() {
13520	            var divElem = $(this).find('div')[0];
13521	            var currentVideoItem = $(divElem).attr('id');
13522	            var videoURL = $(this).data('video-url');
13523	            var videoPlayedObj;
13524	            if (!isVideoExists) {
13525	                currentPageVideoList = LOREM.personolizationVideoHandler._getCurrentPageVideoList();
13526	                isVideoExists = true;
13527	            }
13528	            jwplayer(currentVideoItem).on('play pause', function() {
13529	                LOREM.personolizationVideoHandler._getVideoDuration(jwplayer(currentVideoItem));
13530	                LOREM.personolizationVideoHandler._elemVideoPlayed(jwplayer(currentVideoItem));
13531	            });
13532	            videoPlayedObj = LOREM.personolizationVideoHandler._videoPlayedDetails(videoURL);
13533	            if (videoPlayedObj.videoPlayedTime !== undefined && videoPlayedObj.videoPlayedTime > 0 && videoPlayedObj.videoPlayedPercentage!== 100) {
13534	            	jwplayer(currentVideoItem).seek(videoPlayedObj.videoPlayedTime).pause();
13535	            }
13536        	});
13537        }
13538    },
13539    _getVideoDuration: function($player) {
13540        var getVideoCompletePercentage = 0;
13541        var getVideoDuration = parseInt($player.getDuration());
13542        var getVideoposition = parseInt($player.getPosition());
13543        if (getVideoDuration > getVideoposition) {
13544            getVideoCompletePercentage = parseInt(getVideoposition / getVideoDuration * 100);
13545        }
13546        return getVideoCompletePercentage;
13547    },
13548    _elemVideoPlayed: function($player) {
13549        if ($player.getState() == "playing") {
13550            LOREM.personolizationVideoHandler._updateVideoPlayedPercent($player);
13551        } else {
13552            if ($player.getState() == "pause") {
13553                LOREM.personolizationVideoHandler._updatePageVideo($player);
13554            }
13555        }
13556    },
13557    _updatePageVideo: function($player) {
13558        if ($player != undefined && $player.getPlaylist() != undefined && $player.getPlaylist().length > 0) {
13559            var playingFileURL = $player.getPlaylist()[0].file;
13560            var processedPageList = LOREM.dataPersonolization._createOrUpdatePage(playingFileURL, LOREM.personolizationVideoHandler._getVideoDuration($player), parseInt($player.getPosition()));
13561            LOREM.dataPersonolization._updateLocalStorage(processedPageList);
13562            $player.on('complete', function() {
13563                processedPageList = LOREM.dataPersonolization._createOrUpdatePage(playingFileURL, 100, parseInt($player.getDuration()));
13564                LOREM.dataPersonolization._updateLocalStorage(processedPageList);
13565            });
13566        } else {
13567            console.log('jwplayer is undefined');
13568        }
13569    },
13570    _updateVideoPlayedPercent: function($player) {
13571        if ($player.getState() == "playing") {
13572            LOREM.personolizationVideoHandler._updatePageVideo($player);
13573            setTimeout(function() {
13574                LOREM.personolizationVideoHandler._updateVideoPlayedPercent($player);
13575            }, 3000);
13576        }
13577    },
13578    _getCurrentPageVideoList: function() {
13579        var videoList = [];
13580        if (localStorage.getItem('pageHistory') !== undefined) {
13581            localStoragePageHistoryValue = $.parseJSON(localStorage.getItem('pageHistory'));
13582            if(localStoragePageHistoryValue !== null){
13583	            var pageList = localStoragePageHistoryValue.pageList;
13584	            for (var i in pageList) {
13585	                if ((pageList[i].pageURL == LOREM.dataPersonolization._getPageURL()) && (pageList[i].containsVideo === true)) {
13586	                    videoList = pageList[i].videoDetails;
13587	                    break;
13588	                }
13589	            }
13590            }
13591        }
13592        return videoList;
13593    },
13594    _videoPlayedDetails: function(videourl) {
13595        var getVideoDetails = {};
13596        for (var j in currentPageVideoList) {
13597            if (currentPageVideoList[j] !== undefined) {
13598                if (videourl == currentPageVideoList[j].videoURL) {
13599                    var videoPlayedTime = currentPageVideoList[j].videoPlayedTime;
13600                    var videoPlayedPercentage = currentPageVideoList[j].videoPlayedPercentage;
13601                    getVideoDetails['videoPlayedTime'] = videoPlayedTime;
13602                    getVideoDetails['videoPlayedPercentage'] = videoPlayedPercentage;
13603                    if (videoPlayedTime > 0) {
13604                    	getVideoDetails.videoPlayedTime = videoPlayedTime - 5;
13605                        if (getVideoDetails.videoPlayedPercentage == 100) {
13606                        	getVideoDetails.videoPlayedTime = videoPlayedTime;
13607                        }
13608                    }
13609                }
13610            }
13611        }
13612        return getVideoDetails;
13613    },
13614    _initOnLoad: function() {
13615        var videoPersonolizedElem = LOREM.personolizationVideoHandler._getpersonolizedElem();
13616        var currentVideoItem;
13617        videoPersonolizedElem.each(function() {
13618            var divElem = $(this).find('div')[0];
13619            currentVideoItem = $(divElem).attr('id');
13620        });
13621        if ((typeof jwplayer(currentVideoItem) === 'undefined') || (jwplayer(currentVideoItem).qoe().setupTime === null)) {
13622            setTimeout(LOREM.personolizationVideoHandler._initOnLoad, 100);
13623            return;
13624        }
13625        LOREM.personolizationVideoHandler._init();
13626    },
13627    _getpersonolizedElem:function(){
13628    	var videoElem ;
13629        if(personolizationModalPageUrl !== undefined){
13630        	videoElem = $('.modal-video-exists').find('.cmp-video');
13631        }else{
13632        	videoElem =  $('.cmp-video[data-personalization=true]');
13633        }
13634        return videoElem;
13635    }
13636}
13637$(document).ready(function() {
13638	if($('.cmp-video').length >0){
13639	    LOREM.personolizationVideoHandler._initOnLoad();
13640	 }
13641});
13642
13643var localStoragePageHistoryValue;
13644var pageList;
13645LOREM.personolizationHandler = {
13646    _init: function() {
13647        if (LOREM.dataPersonolization._isTrackingEnabled()) {
13648        	var $dataPersonolizationElem
13649            if($('.modal-video-exists').length >0){
13650            	$dataPersonolizationElem = $('.modal-video-exists').find('.cmp-video');
13651            }
13652            else{
13653                $dataPersonolizationElem  = $(document).find('[data-personalization]');
13654            }
13655            if (localStorage.getItem('pageHistory') != undefined) {
13656                localStoragePageHistoryValue = $.parseJSON(localStorage.getItem('pageHistory'));
13657                pageList = localStoragePageHistoryValue.pageList;
13658                if ($dataPersonolizationElem != undefined && $dataPersonolizationElem.length > 0) {
13659                    $dataPersonolizationElem.each(function($this) {
13660                        var videoPercent;
13661                        $this = $(this);
13662                        LOREM.personolizationHandler._addingPersonolizedClasses($this);
13663                        LOREM.personolizationHandler._addingProgressbar($this);
13664                    });
13665                    LOREM.personolizationHandler._unWatchedTilesShuffle($('.article-viewed'));
13666                }
13667            }
13668        }
13669    },
13670    _getVideoPercentMatchVideo: function($this, videoURL) {
13671        for (var i in pageList) {
13672            if (pageList[i] != undefined) {
13673                for (var j in pageList[i].videoDetails) {
13674                    if (pageList[i].pageURL == LOREM.dataPersonolization._getPageURL()) {
13675                        if (videoURL != undefined) {
13676                            var storedUrl = pageList[i].videoDetails[j].videoURL;
13677                            if (videoURL == storedUrl) {
13678                                var videoSeekPercent = pageList[i].videoDetails[j].videoPlayedPercentage;
13679                                if (videoSeekPercent > 0) {
13680                                    $this.addClass('article-viewed');
13681                                    return videoSeekPercent;
13682                                }
13683                                break;
13684                            }
13685                        }
13686                    }
13687                }
13688            }
13689        }
13690    },
13691    _getVideoPercentMatchURL: function($this) {
13692        var domainName = window.location.origin;
13693        var dataPageAttr = $this.find('.data-personalization-url').attr('href');
13694        var dataPageUrl = domainName + dataPageAttr;
13695        var cookieExpiryInDate = new Date(localStoragePageHistoryValue.expiryDate);
13696        for (var i in pageList) {
13697            if (pageList[i] != undefined) {
13698                var pageLastVisitedInDate = new Date(pageList[i].lastVisited);
13699                if (pageList[i].pageURL == dataPageUrl) {
13700                    var isExpired = LOREM.dataPersonolization._ispageExpired(pageLastVisitedInDate, cookieExpiryInDate);
13701                    if (!isExpired) {
13702                        $this.addClass('article-viewed');
13703                    }
13704                    for (var j in pageList[i].videoDetails) {
13705                        if (pageList[i].videoDetails[j] != undefined) {
13706                            var videoSeekPercent = pageList[i].videoDetails[j].videoPlayedPercentage;
13707                            return videoSeekPercent;
13708                            break;
13709                        }
13710                    }
13711                }
13712            }
13713        }
13714    },
13715    _removeClassesOnPlay: function($player, $this) {
13716        $player.on('play', function() {
13717            if ($this.hasClass('article-viewed')) {
13718                $this.removeClass('article-video-played');
13719                $this.removeClass('article-video-completed');
13720                $this.removeClass('article-viewed');
13721                $this.find('.progress').hide();
13722            }
13723        });
13724    },
13725    _addingPersonolizedClasses: function($this) {
13726        if ($this.hasClass('cmp-video')) {
13727            var divElem = $this.find('div')[0];
13728            var currentVideoItem = $(divElem).attr('id');
13729            videoPercent = LOREM.personolizationHandler._getVideoPercentMatchVideo($this, $this.data('video-url'));
13730            LOREM.personolizationHandler._removeClassesOnPlay(jwplayer(currentVideoItem), $this);
13731        } else {
13732            videoPercent = LOREM.personolizationHandler._getVideoPercentMatchURL($this);
13733        }
13734        if (videoPercent > 0) {
13735            if (videoPercent == 100) {
13736                $this.addClass('article-video-completed');
13737            } else {
13738                $this.addClass('article-video-played');
13739            }
13740        }
13741    },
13742    _addingProgressbar: function($this) {
13743        if ($this.hasClass('article-video-played') || $this.hasClass('article-video-completed')) {
13744            var addProgressHTML = ('<div class="progress"><div class="progress-bar bg-success"><span>Complete %</span></div></div>');
13745            if($this.hasClass('cmp-video')){
13746				$this.append(addProgressHTML);
13747            }else{
13748				$this.prepend(addProgressHTML);
13749            }
13750            LOREM.personolizationHandler._addingWidthAndTopToProgressDiv($this);
13751            $this.find('.progress-bar').css('width', videoPercent + '%');
13752        } else {
13753            $this.find('.progress').remove();
13754        }
13755    },
13756    _addingWidthAndTopToProgressDiv:function($this){
13757    	if($this.hasClass('cmp-card-tile')){
13758    		if($this.find('.card-tile-img-link img').length >0){
13759                var elemPaddingTop = parseInt($this.find('.card-tile-img-link').css('padding-top')) || 0;
13760	    		var progressTop  = $this.parent().show().find('.card-tile-img-link img').height() + elemPaddingTop;
13761	    		$this.find('.progress').css('top', progressTop + 'px');
13762    		}else{
13763    			$this.find('.progress').css('top', '0');
13764    		}
13765	    	if($this.closest('.cmp-right-rail-wrapper').hasClass('horizontal-tile')){
13766	    		var progressWidth  = $this.closest('.cmp-right-rail-wrapper.horizontal-tile').find('.card-tile-img-link img').width();
13767	    		$this.find('.progress').css('width', progressWidth + 'px');
13768	    	}
13769    	}
13770    },
13771    _unWatchedTilesShuffle: function($this) {
13772    	if($this.hasClass('article-video-played') || $this.hasClass('article-video-completed')){
13773	        var watchedTilesListWrapper = $this.closest('.cmp-right-rail-wrapper');
13774	        if (watchedTilesListWrapper.length > 0 && watchedTilesListWrapper.find('[data-tiles-shuffle]').length > 0) {
13775	            LOREM.options._shuffleTiles(watchedTilesListWrapper.find('[data-tiles-shuffle]'), $this.hasClass('article-video-played') || $this.hasClass('article-video-completed'));
13776	            if ($('.cmp-card-tile.cursorclick').length > 0) {
13777	                LOREM.options._entireTileClickable($('.cmp-card-tile.cursorclick'), '.cmp-article-list-fullview-link');
13778	            }
13779	        }
13780        }
13781    }
13782}
13783$(document).ready(function() {
13784    LOREM.personolizationHandler._init();
13785});
13786
13787/* Function to handle right rail sticky*/
13788function triggerSticky() {
13789     if ($('.sticky-right-rail').length > 0) {
13790         var currentScroll = parseInt($(window).scrollTop()) + LOREM.options._calStickyHeaderHeight(),
13791          rightRailTop = parseInt($('.sticky-right-rail').parent().offset().top),
13792          imgWidth= parseInt($('.sticky-right-rail').width());
13793
13794         if (currentScroll >= rightRailTop) {
13795             $('.sticky-right-rail').first().addClass('make-right-rail-sticky');
13796             $('.sticky-right-rail').width(imgWidth);
13797             $('.make-right-rail-sticky').css('top', LOREM.options._calStickyHeaderHeight()+'px');
13798         } else {
13799			 $('.sticky-right-rail').removeClass('make-right-rail-sticky');
13800             $('.sticky-right-rail').css('top', 0);
13801			 $('.sticky-right-rail').css('width','');
13802         }
13803     }
13804 }
13805 $(window).scroll(function() {
13806    triggerSticky();
13807 });
13808$(document).on('foundation-contentloaded', function(e) {
13809    $('[name="./listAlignment"]').on('mouseup', '.coral3-SelectList-item', function(){
13810        var listAlignVal = $(this).val();
13811        if(listAlignVal == 'list-horizontal') {
13812            $('[name="./listTitle"]').closest('.coral-Form-fieldwrapper').addClass('hide');
13813        }
13814        else {
13815            $('[name="./listTitle"]').closest('.coral-Form-fieldwrapper').removeClass('hide');
13816        }
13817    });
13818});
13819
13820
13821$(document).on('click', '.open-modal', function(e) {
13822  var  currentTarget = $(e.currentTarget).prop("tagName");
13823  var  etarget = $(e.target).prop("tagName");
13824var $this = $(this);
13825var temporary_image_tag = $this.siblings('img').clone();
13826
13827
13828  /**
13829   * getting data set form clicked element
13830   */
13831  var target = e.currentTarget.dataset.target || null,
13832    url = e.currentTarget.dataset.url || null,
13833    modalHeader = e.currentTarget.dataset.modalheader || null,
13834    className = e.currentTarget.dataset.classname || '',
13835    authorUrl = e.currentTarget.dataset.authorurl || '',
13836    datapoplink = e.currentTarget.dataset.aaPopup || '',
13837    targetPage = $(this).attr('target') || '_blank',
13838    ariaLabel = $(this).attr('aria-label') || null,
13839    title = $(this).attr('title') || null,
13840    classes = $(this).attr('class') || null,
13841    youtubeasset = e.currentTarget.dataset.youtubeasset || false,
13842    birghtcovaasset = e.currentTarget.dataset.birghtcovaasset || false,
13843    birghtcovavideoid = e.currentTarget.dataset.birghtcovavideoid || "",
13844    birghtcovaaccount = e.currentTarget.dataset.birghtcovaaccount || "",
13845    birghtcovaplayerid = e.currentTarget.dataset.birghtcovaplayerid || "",    
13846    damAsset = e.currentTarget.dataset.damasset || false;
13847
13848  /**
13849   * for twitter component stoping the modal form opening 2 times when clicked on anchor
13850   */
13851  if((target == "externalLink" && currentTarget == "DIV" && etarget == "A")){
13852    return true;
13853  }
13854  if((target == "externalLinkTwitter" && currentTarget == "DIV" && etarget == "A")){
13855    return true;
13856  }
13857  e.preventDefault();
13858  $(document).trigger('modal:open');
13859  if (target) {
13860
13861    var template = '<div id=' + target + ' class="modal fade ' + className + '" tabindex="-1" role="dialog" aria-modal="true" aria-label="' + (ariaLabel ? ariaLabel.replace(/"/g, '&quot;') : '') + '" aria-hidden="true"><div class="modal-dialog">';
13862
13863    if (className.indexOf("disable-close") == -1) {
13864      // js updated send document icon 
13865      
13866      if (className == 'searchamilpopup') {
13867        template += '<button class="close" type="button" data-dismiss="modal" aria-label="Close">\
13868                        <i class="icon icon-close">\
13869                        <svg aria-hidden="true" focusable="false" role="presentation" width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">\
13870                            <title></title>\
13871                            <g id="375-px" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">\
13872                                <g id="02_BMS_medical_landing_Hamburger_expanded_mobile_375" transform="translate(-319.000000, -76.000000)">\
13873                                    <g id="Group" transform="translate(319.000000, 76.000000)">\
13874                                        <g id="Group-19" fill="#D8D8D8" fill-opacity="0">\
13875                                            <rect id="Rectangle" x="0" y="0" width="32" height="32"></rect>\
13876                                        </g>\
13877                                        <g id="Group" transform="translate(8.000000, 8.000000)">\
13878                                            <rect id="Rectangle" x="0" y="0" width="16" height="16"></rect>\
13879                                            <path d="M15.7396505,0.260349528 C16.0482129,0.56891193
138791 16.0824976,1.04788864 15.8425046,1.39432089 L15.7396505,1.51742825 L9.257,8 L15.7396505,14.4825718 C16.0867832,14.8297045 16.0867832,15.3925178 15.7396505,15.7396505 C15.4310881,16.0482129 14.9521114,16.0824976 14.6056791,15.8425046 L14.4825718,15.7396505 L8,9.257 L1.51742825,15.7396505 C1.17029555,16.0867832 0.607482232,16.0867832 0.260349528,15.7396505 C-0.0482128755,15.4310881 -0.082497587,14.9521114 0.157495393,14.6056791 L0.260349528,14.4825718 L6.743,8 L0.260349528,1.51742825 C-0.0867831759,1.17029555 -0.0867831759,0.607482232 0.260349528,0.260349528 C0.568911931,-0.0482128755 1.04788864,-0.082497587 1.39432089,0.157495393 L1.51742825,0.260349528 L8,6.743 L14.4825718,0.260349528 C14.8297045,-0.0867831759 15.3925178,-0.0867831759 15.7396505,0.260349528 Z" id="Combined-Shape" fill="#595454"></path>\
13880                                        </g>\
13881                                    </g>\
13882                                </g>\
13883                            </g>\
13884                        </svg>\
13885                        </i>\
13886                      </button>'
13887      }
13888      else{
13889        template += '<button class="close" type="button" data-dismiss="modal" aria-label="Close">\
13890                <i class="icon icon-close">\
13891                          <svg aria-hidden="true" focusable="false" role="presentation" class="icon-svg" viewBox="0 0 50 50">\
13892                            <title></title>\
13893                            <path d="M30.56,25,47.85,7.71a3.93,3.93,0,0,0-5.56-5.56L25,19.44,7.71,2.15A3.93,3.93,0,0,0,2.15,7.71L19.44,25,2.15,42.29a3.93,3.93,0,1,0,5.56,5.56L25,30.56,42.29,47.85a3.93,3.93,0,0,0,5.56-5.56Z"/>\
13894                          </svg>\
13895                        </i>\
13896                      </button>';
13897      }
13898    }
13899    template += '<div class="modal-content"></div>\
13900                      </div>\
13901                    </div>';
13902    target = '#' + target;
13903    /**
13904     * if the given content to be loded form given URL source
13905     */
13906
13907    // open modal js for send document on mail 
13908
13909		if (className == 'searchamilpopup') {
13910      $('body').append(template);
13911       $('.search-main-card__descriptiaon__ullist-li-blockcontent.searchmail a').removeClass('selectedForMail');
13912       $(e.currentTarget).addClass('selectedForMail');
13913       $(target).find('.modal-header').html(modalHeader);
13914       $('.BMS-mio-send-mail').clone().appendTo($(target).find(".modal-content"));
13915       if (navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1) {
13916         $('body').addClass('ios');
13917         $('html').addClass('ios');
13918       }
13919
13920       $(target).modal('show');
13921       $(document).trigger('modal:opened', [e]);
13922     }
13923
13924    if (url) {
13925        $('body').append(template);
13926
13927      /**
13928       * fixing the scrolling issue when modal open with video for IOS devices
13929       */
13930      if (className == 'video-modal'){
13931        if(navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1){
13932          $('body').addClass('ios');
13933          $('html').addClass('ios');
13934        }
13935      }
13936      /**
13937       * If the the modal open is not video iframe modal then load the HTML content form the URL to modal content
13938       */
13939      if(className != 'video-iframe-modal'){
13940        $(target).find(".modal-content").load(url, function(response, status, xhr) {
13941          /**
13942           * if error dispaly 404
13943           */
13944          if (status == "error") {
13945
13946            if (classes.includes('has-enlarged-image')) {
13947              console.log('No content to load, please specify a url.');
13948			  if(temporary_image_tag.length > 0)
13949              	$(target).find(".modal-content").html(temporary_image_tag.attr('style', ''));
13950              else
13951				$(target).find(".modal-content").html('<h2 class="pod-title" style="margin: 0 auto; text-align: center; padding: 20px 0;">404 Page Not Found</h2>');
13952            }
13953            else {
13954              $(target).find(".modal-content").html('<h2 class="pod-title" style="margin: 0 auto; text-align: center; padding: 20px 0;">404 Page Not Found</h2>');
13955            }
13956
13957          }
13958          /**
13959           * if external link modal update the continue link
13960           */
13961          if (target == "#externalLink") {
13962          const firstDownloadBtn = document.querySelector('.modal-dialog button.close');
13963          $('html').css('overflow', 'hidden');
13964          if(firstDownloadBtn)
13965            firstDownloadBtn.tabIndex = "-1";
13966                      $(".modal-dialog .modal-header button.close").attr("tabindex", "3");
13967                      const modal = document.getElementById('externalLink');
13968                      modal.addEventListener('keydown', function(e) {
13969                          $(".modal-dialog .modal-header button.close").attr("tabindex", "3");
13970                          try {
13971                              let isTabPressed = e.key === 'Tab' || e.keyCode === 9;
13972                              let firstFocusableElement = document.querySelector('.modal-dialog .modal-button .last-button a');
13973                              let secondFocusableElement = document.querySelector('.modal-dialog .modal-button .first-button a');
13974                              let lastFocusableElement = document.querySelector('.modal-dialog .modal-header button.close');
13975                              if (!isTabPressed) {
13976                                  return;
13977                              }
13978                              if (e.shiftKey) {
13979                                  if (document.activeElement === firstFocusableElement) {
13980                                       if ($(lastFocusableElement).is(':visible')) {
13981                                          lastFocusableElement.focus();
13982                                      } else if ($(secondFocusableElement).is(':visible')) {
13983                                          secondFocusableElement.focus();
13984                                      }
13985                                      e.preventDefault();
13986                                  } else if (document.activeElement === lastFocusableElement) {
13987                                      if ($(secondFocusableElement).is(':visible')) {
13988                                          secondFocusableElement.focus();
13989                                      } else if ($(firstFocusableElement).is(':visible')) {
13990                                          firstFocusableElement.focus();
13991                                      }
13992                                      e.preventDefault();
13993                                  } else {
13994                                      firstFocusableElement.focus();
13995                                      e.preventDefault();
13996                                  }
13997                              } else if (document.activeElement === firstFocusableElement) {
13998                                  if ($(secondFocusableElement).is(':visible')) {
13999                                      secondFocusableElement.focus();
14000                                  } else if ($(lastFocusableElement).is(':visible')) {
14001                                      lastFocusableElement.focus();
14002                                  }
14003                                  e.preventDefault();
14004                              } else if (document.activeElement === secondFocusableElement) {
14005                                  if ($(lastFocusableElement).is(':visible')) {
14006                                      lastFocusableElement.focus();
14007                                  } else if ($(firstFocusableElement).is(':visible')) {
14008                                      firstFocusableElement.focus();
14009                                  }
14010                                  e.preventDefault();
14011                              } else if (document.activeElement === lastFocusableElement) {
14012                                  firstFocusableElement.focus();
14013                                  e.preventDefault();
14014                              } else if (document.activeElement.id === 'externalLink') {
14015                                  firstFocusableElement.focus();
14016                                  e.preventDefault();
14017                              }
14018                          } catch (err) {
14019                              console.log(err);
14020                          }
14021                      });
14022                      $('#external-continue-link').attr('href', authorUrl).attr('target', targetPage).attr('aria-label', ariaLabel).attr('title', title).attr('data-aa-popuplink', datapoplink).attr("tabindex", "1");
14023                      
14024            $('#external-continue-link').on('click', function(e) {
14025              if($(this).closest('.external-link-warning-modal').hasClass('smashfly-link')){
14026                $(this).attr('disabled','disabled');
14027                e.preventDefault();
14028                if(/MSIE|Trident/.test(window.navigator.userAgent)){
14029                  var link = document.createElement('a');
14030                  link.target = '_blank';
14031                  link.href = $(this).attr('href');
14032                  link.click();
14033                }else{
14034                  window.open($(this).attr('href'));
14035                }
14036                $(this).removeAttr('disabled');
14037              }
14038              if ($(e.currentTarget).closest('.external-link-warning-modal.dismissal-button').length > 0) {
14039                window.location.reload();
14040              }
14041              $(target).modal('hide');
14042            })
14043            if ($('#external-continue-close').length > 0) {
14044        $('#external-continue-close').attr("tabindex", "2");
14045              $('.modal-button').on('click', '#external-continue-close', function(e) {
14046                if ($(e.currentTarget).closest('.external-link-warning-modal.dismissal-button').length > 0) {
14047                  window.location.reload();
14048                }
14049                $(target).modal('hide');
14050              })
14051            }
14052
14053          }
14054          if (target == "#externalLinkTwitter") {
14055            $('#external-continue-link').attr('href', authorUrl).attr('target', targetPage).attr('aria-label', ariaLabel).attr('title', title);
14056            $('#external-continue-link').on('click', function(e) {
14057              e.preventDefault();
14058              var url = $(this).attr('href') + '&original_referer=' + encodeURIComponent(window.location.href);
14059              window.open(url, '_blank','width=510,height=570,location=yes,scrollbars=yes,status=yes');
14060              $(target).modal('hide');
14061            })
14062            if ($('#external-continue-close').length > 0) {
14063              $('#external-continue-close').on('click', function() {
14064                $(target).modal('hide');
14065              })
14066            }
14067
14068          }
14069          /**
14070           * disabling close on esc key press and outside of modal click
14071           */
14072          if (className.indexOf("disable-close") != -1) {
14073            $(target).modal({
14074              backdrop: 'static',
14075              keyboard: false
14076            });
14077          }
14078          /**
14079           * opening the modal
14080           */
14081
14082          $(target).modal('show');
14083          /**
14084           * trigger custom event to notify other componet that modal as been opened if they are listing
14085           */
14086          $(document).trigger('modal:opened');
14087
14088        });
14089      } else if(className === 'video-iframe-modal') {
14090          /**
14091           * trigger custom event to notify other componet that modal as been opened if they are listing
14092           */
14093          $(document).trigger('modal:opened', [e]);
14094  }
14095
14096
14097      $(target).on('hidden.bs.modal', function() {
14098        /**
14099         * removing the modal divsion form page when model is closed
14100         */
14101        $(target).next().remove();
14102        $(target).remove();
14103    $this.trigger('focus');
14104        if($('.modal').length == 0){
14105          $('body').removeClass('ios');
14106          $('html').removeClass('ios');
14107        }
14108        else{
14109          /**
14110           * fixing the modal close bug when more than one modal is opened
14111           */
14112          // $('body').addClass('modal-open');
14113        }
14114
14115        /**
14116         * trigger custom event to notify other componet that modal as been closed if they are listing
14117         */
14118        $(document).trigger('modal:closed');
14119      });
14120    }
14121    else if( className.indexOf('order-modal') >= 0
14122    || className.indexOf('switzerland-modal') >= 0
14123    || className.indexOf('nav-country-modal') >= 0
14124    || className.indexOf('nav-translations-modal') >= 0
14125    || className.indexOf('generic-registration-modal') >= 0
14126    ){
14127
14128      /**
14129       * empty modal is opened and modal content is filled by respective component js file
14130       */
14131
14132      $('body').append(template);
14133      $(target).modal({
14134        backdrop: 'static',
14135        keyboard: false
14136      });
14137
14138      /**
14139       * fixing the scrolling issue when modal open with form for IOS devices
14140       */
14141      if(navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1){
14142        $('body').addClass('ios');
14143        $('html').addClass('ios');
14144      }
14145      $(target).modal('show');
14146
14147      /**
14148       * trigger custom event to notify other componet that modal as been opened if they are listing
14149       */
14150
14151      $(document).trigger('modal:opened',[e]);
14152
14153      $(target).on('hidden.bs.modal', function() {
14154        /**
14155         * removing the modal divsion form page when model is closed
14156         */
14157        $(target).next().remove();
14158        $(target).remove();
14159        if($('.modal').length == 0){
14160          $('body').removeClass('ios');
14161          $('html').removeClass('ios');
14162        }
14163        else{
14164          $('body').addClass('modal-open');
14165        }
14166        /**
14167         * trigger custom event to notify other componet that modal as been closed if they are listing
14168         */
14169        $(document).trigger('modal:closed');
14170      });
14171    }
14172  } else {
14173    console.log('Please specify an id.');
14174  }
14175});
14176//Triggering click event on keydown of enter of a link within accordion dropdown
14177$(document).on("keydown", ".open-modal", function(e) {
14178  if (e.key === "Enter" || e.keyCode === 13) {
14179    $(this).trigger("click"); 
14180  }
14181});
14182$( document ).ready(function() {
14183    if($('#raAssesmentIframe').length){
14184  getPdfByBackend();
14185    }
14186});
14187$( document ).ready(function() {
14188init();
14189 $( ".date-selection input" ).datepicker({
14190    minDate: 0,
14191     beforeShowDay: $.datepicker.noWeekends
14192});
14193 function init() {
14194
14195  $(document).on('click','.submit-btn',function(event){
14196  	//$(event.currentTarget).prop("disabled",true);
14197
14198    if(!submitEventListener($(event.currentTarget).parents('form'))){
14199      event.preventDefault();
14200    }
14201    //formChangeEventListener($(event.currentTarget).parents('form'));
14202  })
14203
14204
14205}
14206
14207
14208function submitEventListener(selector) {
14209   let $form = $(selector);
14210   let isRequiredValidation = requiredValidation($form);
14211   let isPatternValidation = patternValidation($form);
14212   let isValidCaptcha = validateCaptcha();
14213   let finalFormvalidationState = false;
14214
14215   if (isRequiredValidation || isPatternValidation || !isValidCaptcha) {
14216      finalFormvalidationState = false;
14217   }
14218
14219   else {
14220        finalFormvalidationState =  true;
14221   }
14222
14223   if(finalFormvalidationState){
14224	$form.parent().append('<div class="form-loading"><i class="icon icon-spinner"><svg width="120px" height="120px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" class="uil-default"><rect x="0" y="0" width="100" height="100" fill="none" class="bk"></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(0 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(45 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.15s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(90 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.3s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(135 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.44999999999999996s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(180 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.6s" repeatCount="indef
14224inite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(225 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.75s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(270 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.8999999999999999s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(315 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="1.05s" repeatCount="indefinite"></animate></rect></svg></i></div>')
14225    $.post($form.find('[type="submit"]').attr('formaction'),$form.serializeArray(),function(res){
14226      if(res.status.trim() == "success"){
14227
14228      $(".response-message .response-text.success").show();
14229      $(".response-message .response-text.error").hide();
14230
14231      }
14232      else if(res.status.trim() == "failure") {
14233
14234	     $(".response-message .response-text.success").hide();
14235      $(".response-message .response-text.error").show();
14236
14237        /**
14238         * if there is server side error then reset captcha if exist
14239         */
14240        if($('.g-recaptcha').length){
14241          grecaptcha.reset();
14242        }
14243
14244        $form.find('[type="submit"]').prop("disabled",false);
14245      }
14246      else {
14247        $form.find('[type="submit"]').prop("disabled",false);
14248      }
14249    })
14250    .fail(function() {
14251      if($('.g-recaptcha').length){
14252        grecaptcha.reset();
14253      }
14254      $form.find('[type="submit"]').prop("disabled",false);
14255    })
14256    .always(function(){
14257      $form.parent().find('.form-loading').remove();
14258    })
14259   }
14260   else{
14261    $form.parent().find('.form-loading').remove();
14262   }
14263
14264   return false;
14265 }
14266 
14267
14268 function requiredValidation($form) {
14269  var errorFlag = false;
14270  var inputSelector = 'input[required]:visible,textarea[required]:visible,select[required]:visible';
14271
14272  $.each($form.find(inputSelector), function(index, input) {
14273    var $input = $(input);
14274    /**
14275     * if the field value is empty displaing error
14276     */
14277    if (!$input.val()) {
14278      errorFlag = true;
14279      displayError({
14280        "field": $input,
14281        "class": ".required"
14282      });
14283    } else {
14284      removeError({
14285        "field": $input,
14286        "class": ".required"
14287      });
14288    }
14289  })
14290
14291  if($('input:checkbox[name="topics"][required]').length > 0 && $('input:checkbox[name="topics"]:checked').length == 0) {
14292
14293        errorFlag = true;
14294		displayError({
14295        "field": $($form.find('input:checkbox[name=topics]')[0]),
14296        "class": ".required"
14297    })
14298  }
14299     else{
14300         
14301  removeError({
14302        "field": $($form.find('input:checkbox[name=topics]')[0]),
14303        "class": ".required"
14304      });
14305  }
14306	return errorFlag;
14307}
14308
14309
14310
14311
14312function patternValidation($form) {
14313  var errorFlag = false;
14314  $.each($form.find('input[pattern]:visible'), function(index, input) {
14315    var $input = $(input);
14316    if ($input.val()) {
14317      try {
14318        var pattern = new RegExp($input.attr('pattern'));
14319        /**
14320         * if the pattern is wrong displaing error
14321         */
14322        if (pattern.test($input.val())) {
14323          removeError({
14324            "field": $input,
14325            "class": ".pattern"
14326          });
14327      
14328        } else {
14329          errorFlag = true;
14330          displayError({
14331            "field": $input,
14332            "class": ".pattern"
14333          });
14334        }
14335      }
14336      catch(e){
14337        console.error("in vaild pattren (Regular Expression )",$input.attr('pattern'));
14338        console.error(e);
14339      }
14340
14341    } else {
14342      removeError({
14343        "field": $input,
14344        "class": ".pattern",
14345        "dontRemoveBorder": true
14346      });
14347    }
14348  })
14349  return errorFlag;
14350}
14351
14352
14353function validateCaptcha() {
14354  if($('.g-recaptcha').length > 0){
14355    if(!grecaptcha) return false;
14356    let captchaResponse;
14357    /**
14358     * if reCaptcha is created dynamically then in widgetId reCaptcha reference will be set.
14359     */
14360
14361      captchaResponse = grecaptcha.getResponse();
14362
14363    if (captchaResponse.length == 0) {
14364		$('.g-recaptcha').css("border", "1px Solid #e76468");
14365      $('.g-recaptcha').addClass("form-error");
14366      return false;
14367    } else {
14368      $('.g-recaptcha').addClass("form-error");
14369      $('.g-recaptcha').css("border", "0px");
14370      return true;
14371    }
14372  }else{
14373    return true;
14374  }
14375}
14376
14377function displayError(args, $form) {
14378
14379
14380 args.field.addClass('form-error');
14381 if (args.field.is("select")){
14382   args.field.parent().children(args.class).addClass('active');
14383  }
14384else if (args.field.prop('type') == "checkbox"){
14385   args.field.parent().parent().children(args.class).addClass('active');
14386  } 
14387    else{
14388 args.field.siblings(args.class).addClass('active');
14389  }
14390}
14391
14392
14393function removeError(args, $form) {
14394
14395    if (!args.dontRemoveBorder) {
14396	 args.field.removeClass('form-error');
14397    }
14398   if (args.field.is("select")){
14399    args.field.parent().children(args.class).removeClass('active')
14400  } else if (args.field.prop('type') == "checkbox"){
14401   args.field.parent().parent().children(args.class).removeClass('active');
14402  }else{
14403  args.field.siblings(args.class).removeClass('active');
14404  }
14405}
14406
14407
14408// Global recaptchaCallback
14409recaptchaCallback = function(){
14410  // Specific to iOS
14411  if(navigator.userAgent.match(/(iPhone|iPod|iPad)/i)){
14412    // Scroll recaptcha back into view to fix iOS scrolling bug
14413    $('.g-recaptcha').get(0).scrollIntoView(true);
14414    window.scrollBy(0, -50);
14415  }
14416    $('.submit-btn').prop("disabled",false);
14417}
14418
14419
14420function resetForm($form) {
14421  $.each($form.find('input:visible,select:visible'), function(index, input) {
14422    var $input = $(input);
14423    removeError({
14424      "field": $input,
14425      "class": ".required"
14426    });
14427    removeError({
14428      "field": $input,
14429      "class": ".pattern"
14430    });
14431  })
14432
14433}
14434
14435
14436});
14437
14438
14439
14440
14441 $('form.cnc-form').find('input[required],select[required]').on('change', function(event) {
14442      var $this = event.currentTarget;
14443      //$form.find("button").attr("disabled", false);
14444     var  isRequiredInputValid=requiredValidationInputChange($this);
14445     if(!isRequiredInputValid && $this['pattern']){
14446      var ispatternInputValid=validatePattern($this);
14447      }
14448    });
14449
14450 function requiredValidationInputChange(input) {
14451  var errorFlag = false;
14452  var $input = $(input);
14453
14454  if (!$input.val()) {
14455  	errorFlag=true;
14456
14457    $input.addClass('form-error');
14458   	$input.removeClass('valid-checkmark');
14459	$input.siblings('.required').addClass('active');
14460    $input.siblings('.pattern').removeClass('active');
14461
14462    } else {
14463      $input.removeClass('form-error');
14464      if(!$input.attr('pattern')){
14465	  $input.not('.hasDatepicker').addClass('valid-checkmark');
14466      }
14467	  $input.siblings('.required').removeClass('active');
14468    }
14469 
14470 
14471	if($input.prop('type') == "checkbox" && $input.prop('required')){
14472	
14473	if($input.prop('checked') || $('input:checkbox[name="topics"]:checked').length > 0 ){
14474	$input.parent().parent().children('.required').removeClass('active');
14475	}else{
14476	$input.parent().parent().children('.required').addClass('active');
14477	}
14478	
14479	
14480	
14481	}
14482	
14483	
14484  return errorFlag;
14485}
14486
14487
14488function validatePattern(input){
14489    var errorFlag = false;
14490  	var $input = $(input);
14491   if ($input.val()) {
14492      try {
14493        var pattern = new RegExp($input.attr('pattern'));
14494        /**
14495         * if the pattern is wrong displaing error
14496         */
14497        if (pattern.test($input.val())) {
14498          $input.removeClass('form-error');
14499	      $input.addClass('valid-checkmark');
14500	      $input.siblings('.pattern').removeClass('active');
14501      
14502        } else {
14503        	errorFlag=true;
14504           	$input.addClass('form-error');
14505   			$input.removeClass('valid-checkmark');
14506			$input.siblings('.pattern').addClass('active');
14507
14508        }
14509      }
14510      catch(e){
14511        /**
14512         * if the given pattern is wrong.
14513         */
14514        console.error("in vaild pattern (Regular Expression )",$input.attr('pattern'));
14515        console.error(e);
14516      }
14517
14518	  return errorFlag;
14519    }
14520}
14521	$( document ).ready(function() {
14522	init();
14523
14524	 function init() {
14525		 if($('#ehrform-id').length>0){
14526		resetForm();
14527		 }
14528		 $("#genericLightbox").on('hide.bs.modal', function(){
14529			 if($('.modal-body').hasClass("ehr-modal-reload")){
14530			 window.location.href=window.location.href.split('?')[0];
14531		 }
14532			 else{
14533				resetForm();
14534			 }
14535	});
14536
14537	  $(document).on('click','.submit-ehr-form',function(event){
14538		//$(event.currentTarget).prop("disabled",true);
14539
14540		if(!submitEventListenerEHR($(event.currentTarget).parents('form'))){
14541		  event.preventDefault();
14542		}
14543		//formChangeEventListener($(event.currentTarget).parents('form'));
14544	  })
14545
14546
14547	}
14548
14549	function resetForm() {	
14550	  $.each($('#ehrform-id').find('input:visible'), function(index, input) {
14551		var $input = $(input);
14552		removeErrorEHR({
14553		  "field": $input,
14554		  "class": ".required"
14555		});
14556		removeErrorEHR({
14557		  "field": $input,
14558		  "class": ".pattern"
14559		});
14560	  })
14561
14562	  /* if($('.g-recaptcha').length){
14563			grecaptcha.reset();
14564		  }
14565		$('.g-recaptcha').removeClass("form-error");
14566		$('.g-recaptcha').css("border", "0px"); */
14567
14568
14569		$('input:checkbox:visible[name="contact"]').prop('checked', false);
14570        $('input:radio:visible[name="contact"]').prop('checked', false);
14571		$('.checkboxList').removeClass("form-error");
14572
14573	}
14574
14575
14576
14577
14578	function submitEventListenerEHR(selector) {
14579	   let $form = $(selector);
14580	   let isRequiredValidation = requiredValidationEHR($form);
14581	   let isPatternValidation = patternValidationEHR($form);
14582	   let isValidCaptcha = validateCaptchaEHR();
14583	   let finalFormvalidationState = false;
14584
14585	   if (isRequiredValidation || isPatternValidation || !isValidCaptcha) {
14586		  finalFormvalidationState = false;
14587	   }
14588
14589	   else {
14590			finalFormvalidationState =  true;
14591	   }
14592
14593	   if(finalFormvalidationState){
14594	   $form.parent().append('<div class="form-loading"><i class="icon icon-spinner"><svg width="120px" height="120px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" class="uil-default"><rect x="0" y="0" width="100" height="100" fill="none" class="bk"></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(0 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(45 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.15s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(90 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.3s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(135 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.44999999999999996s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(180 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.6s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(225 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.75s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(270 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.8999999999999999s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(315 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="1.05s" repeatCount="indefinite"></animate></rect></svg></i></div>')
14595		$.post($form.find('[type="submit"]').attr('formaction'),$form.serializeArray(),function(res){
14596
14597		  if(res.status.trim() == "success"){
14598
14599				$("#ehrform-id").hide();
14600			  $(".response-message .response-text.success").show();
14601	   // $(".modal#genericLightbox .lightbox-modal.ehr-form-modal").css("top", "20%");
14602		  $(".response-message .response-text.error").hide();
14603
14604			  $(".modal-body").addClass("ehr-modal-reload");
14605			  $(".modal-dialog.ehr-form-modal").css('height', "250px");
14606			  $(".ehr-form-modal").animate({
14607				scrollTop: 0
14608				},600);
14609
14610		  }
14611		  else if(res.status.trim() == "failure") {
14612
14613			 $(".response-message .response-text.success").hide();
14614		  $(".response-message .response-text.error").show();
14615
14616
14617			/**
14618			 * if there is server side error then reset captcha if exist
14619			 */
14620			if($('.g-recaptcha').length){
14621			  grecaptcha.reset();
14622			}
14623
14624			$form.find('[type="submit"]').prop("disabled",false);
14625		  }
14626		  else {
14627			$form.find('[type="submit"]').prop("disabled",false);
14628		  }
14629		})
14630		.fail(function() {
14631		  if($('.g-recaptcha').length){
14632			grecaptcha.reset();
14633		  }
14634		  $form.find('[type="submit"]').prop("disabled",false);
14635		})
14636		.always(function(){
14637		  $form.parent().find('.form-loading').remove();
14638		})
14639	   }
14640	   else{
14641		$form.parent().find('.form-loading').remove();
14642	   }
14643
14644	   return false;
14645	 }
14646	 
14647
14648	 function requiredValidationEHR($form) {
14649	  var errorFlag = false;
14650	  var inputSelector = 'input[required]:visible';
14651
14652	  $.each($form.find(inputSelector), function(index, input) {
14653		var $input = $(input);
14654		/**
14655		 * if the field value is empty displaing error
14656		 */
14657		if (!$input.val()) {
14658		  errorFlag = true;
14659		  displayErrorEHR({
14660			"field": $input,
14661			"class": ".required"
14662		  });
14663		} else {
14664		  removeErrorEHR({
14665			"field": $input,
14666			"class": ".required"
14667		  });
14668		}
14669	  })
14670
14671	 if($('input:checkbox:visible[name="contact"][required]').length > 0 
14672		 && $('input:checkbox:visible[name="contact"]:checked').length == 0) {
14673
14674			errorFlag = true;
14675			displayErrorEHR({
14676			"field": $($form.find('input:checkbox[name=contact]')[0]),
14677			"class": ".required"
14678		})
14679	  }
14680		 else{
14681
14682	  removeErrorEHR({
14683			"field": $($form.find('input:checkbox[name=contact]')[0]),
14684			"class": ".required"
14685		  });
14686	  }
14687
14688	  	 if($('input:radio:visible[name="contact"][required]').length > 0 
14689		 && $('input:radio:visible[name="contact"]:checked').length == 0) {
14690
14691			errorFlag = true;
14692			displayErrorEHR({
14693			"field": $($form.find('input:radio[name=contact]')[0]),
14694			"class": ".required"
14695		})
14696	  }
14697		 else{
14698
14699	  removeErrorEHR({
14700			"field": $($form.find('input:radio[name=contact]')[0]),
14701			"class": ".required"
14702		  });
14703	  }
14704
14705		return errorFlag;
14706	}
14707
14708
14709
14710
14711	function patternValidationEHR($form) {
14712	  var errorFlag = false;
14713	  $.each($form.find('input[pattern]:visible'), function(index, input) {
14714		var $input = $(input);
14715		if ($input.val()) {
14716		  try {
14717			var pattern = new RegExp($input.attr('pattern'));
14718			/**
14719			 * if the pattern is wrong displaing error
14720			 */
14721			if (pattern.test($input.val())) {
14722			  removeErrorEHR({
14723				"field": $input,
14724				"class": ".pattern"
14725			  });
14726		  
14727			} else {
14728			  errorFlag = true;
14729			  displayErrorEHR({
14730				"field": $input,
14731				"class": ".pattern"
14732			  });
14733			}
14734		  }
14735		  catch(e){
14736			console.error("in vaild pattren (Regular Expression )",$input.attr('pattern'));
14737			console.error(e);
14738		  }
14739
14740		} else {
14741		  removeErrorEHR({
14742			"field": $input,
14743			"class": ".pattern",
14744			"dontRemoveBorder": true
14745		  });
14746		}
14747	  })
14748	  return errorFlag;
14749	}
14750
14751
14752	function validateCaptchaEHR() {
14753	  if($('.g-recaptcha').length > 0){
14754		if(!grecaptcha) return false;
14755		let captchaResponse;
14756		/**
14757		 * if reCaptcha is created dynamically then in widgetId reCaptcha reference will be set.
14758		 */
14759
14760		  captchaResponse = grecaptcha.getResponse();
14761
14762		if (captchaResponse.length == 0) {
14763		$('.g-recaptcha').css("border", "1px Solid #d0103a");
14764		  $('.g-recaptcha').addClass("form-error");
14765		  return false;
14766		} else {
14767		  $('.g-recaptcha').removeClass("form-error");
14768		  $('.g-recaptcha').css("border", "0px");
14769		  return true;
14770		}
14771	  }else{
14772		return true;
14773	  }
14774	}
14775
14776	function displayErrorEHR(args, $form) {
14777
14778		if(args.field.prop('type') != "checkbox"){
14779	 args.field.parent().addClass('form-error');
14780		}
14781	 if (args.field.is("select")){
14782	   args.field.parent().children(args.class).addClass('active');
14783	  }
14784		 else if(args.field.prop('type') == "checkbox"){
14785	   args.field.parent().nextAll(args.class).addClass('active');
14786		args.field.parent().parent().addClass('form-error');
14787	  }
14788	  else if(args.field.prop('type') == "radio"){
14789	   args.field.parent().nextAll(args.class).addClass('active');
14790		args.field.parent().parent().addClass('form-error');
14791	  }
14792		else
14793	  {
14794	 args.field.siblings(args.class).addClass('active');
14795	  }
14796	}
14797
14798
14799	function removeErrorEHR(args, $form) {
14800
14801		  if (!args.dontRemoveBorder) {
14802	args.field.parent().removeClass('form-error');
14803		  }
14804	   if (args.field.is("select")){
14805		args.field.parent().children(args.class).removeClass('active')
14806	  }
14807	else if (args.field.prop('type') == "checkbox"){
14808	   args.field.parent().nextAll(args.class).removeClass('active');
14809	  }
14810	  else if (args.field.prop('type') == "radio"){	
14811	   args.field.parent().nextAll(args.class).removeClass('active');
14812	  }
14813		else{
14814	  args.field.siblings(args.class).removeClass('active');
14815	  }
14816	}
14817
14818
14819	// Global recaptchaCallback
14820	recaptchaCallback = function(){
14821	  // Specific to iOS
14822	  if(navigator.userAgent.match(/(iPhone|iPod|iPad)/i)){
14823		// Scroll recaptcha back into view to fix iOS scrolling bug
14824		$('.g-recaptcha').get(0).scrollIntoView(true);
14825		window.scrollBy(0, -50);
14826	  }
14827		$('.submit-ehr-form').prop("disabled",false);
14828	}
14829
14830
14831	});
14832
14833
14834
14835
14836	 //$('form#ehrform-id').find('input[required]').on('change', function(event) {
14837		   $(document).on('change','form#ehrform-id input[required]',function(event){
14838		  var $this = event.currentTarget;
14839		  //$form.find("button").attr("disabled", false);
14840		 var  isRequiredInputValid=requiredValidationInputChangeEHR($this);
14841		 if(!isRequiredInputValid && $this['pattern']){
14842		  var ispatternInputValid=validatePatternEHR($this);
14843		  }
14844		});
14845
14846	 function requiredValidationInputChangeEHR(input) {
14847	  var errorFlag = false;
14848	  var $input = $(input);
14849
14850	  if (!$input.val()) {
14851		errorFlag=true;
14852
14853		$input.parent().addClass('form-error');
14854		$input.siblings('.required').addClass('active');
14855		$input.siblings('.pattern').removeClass('active');
14856
14857		} else {
14858		  $input.parent().removeClass('form-error');
14859		  $input.siblings('.required').removeClass('active');
14860		}
14861
14862		 if($input.prop('type') == "checkbox" && $input.prop('required')){
14863
14864		if($input.prop('checked') || $('input:checkbox[name="contact"]:checked').length > 0 ){
14865		  $input.parent().nextAll('.required').removeClass('active');
14866			 $input.parent().parent().removeClass('form-error');
14867		}else{
14868		  $input.parent().nextAll('.required').addClass('active');
14869		  $input.parent().parent().addClass('form-error');
14870		}
14871		
14872		}
14873										
14874		 if($input.prop('type') == "radio" && $input.prop('required')){
14875
14876			if($input.prop('checked') || $('input:radio[name="contact"]:checked').length > 0 ){
14877				$input.parent().nextAll('.required').removeClass('active');
14878				$input.parent().parent().removeClass('form-error');
14879			}else{
14880				$input.parent().nextAll('.required').addClass('active');
14881				$input.parent().parent().addClass('form-error');
14882			}
14883		
14884		}
14885
14886	 
14887	  return errorFlag;
14888	}
14889
14890
14891	function validatePatternEHR(input){
14892		var errorFlag = false;
14893		var $input = $(input); 
14894	   if ($input.val()) {
14895		  try {
14896			var pattern = new RegExp($input.attr('pattern'));
14897			/**
14898			 * if the pattern is wrong displaing error
14899			 */
14900			if (pattern.test($input.val())) {
14901			  $input.parent().removeClass('form-error');
14902			  $input.siblings('.pattern').removeClass('active');
14903
14904			} else {
14905				errorFlag=true; 
14906				$input.parent().addClass('form-error');
14907				$input.siblings('.pattern').addClass('active');
14908
14909			}
14910		  }
14911		  catch(e){
14912			/**
14913			 * if the given pattern is wrong.
14914			 */
14915			console.error("in vaild pattern (Regular Expression )",$input.attr('pattern'));
14916			console.error(e);
14917		  }
14918
14919		  return errorFlag;
14920		}
14921	}
14922$( document ).ready(function() {
14923    if($('#pmChecklistIframe').length){
14924  getPdfByBackend();
14925    }
14926});
14927//pdf generation JS code 
14928
14929function getPdfByBackend(){
14930  var dataURL = $(".ElementIframe").attr("data-pdf-html-url");
14931  var dataAwsURL = "/bin/buildeasy/genericapi";
14932  var dataPdfName = $(".ElementIframe").attr("data-pdf-name");
14933  var dataParam =  {
14934    "reqType": "HTMLTOPDFConverterGeneric",
14935    "executionType": "startExecution",
14936    "input": {
14937            "url": window.location.origin + dataURL,
14938        	"s3FileName": dataPdfName
14939      }
14940  };
14941  if(window.outerWidth < 550 && !!window.navigator.userAgent.match(/iPhone/)) {
14942	  $(".allowPopup").css("display",'block');
14943  }
14944  $.ajax({
14945   method:"POST",
14946   url: dataAwsURL,//aws url
14947   dataType: 'json',
14948  // data: dataURL,// given in data attribute -pdf report.html
14949   data: {
14950      payload: JSON.stringify(dataParam),
14951      reqType: "reqHTMLTOPDFConverterGeneric"
14952    },
14953   crossDomain: true,
14954    success: function(response){
14955        var status = response.message.status;
14956        if (status == "SUCCEEDED") {
14957          var successStatus = JSON.parse(response.message.output).status;
14958          if (successStatus == '200') {
14959            var urlReplaceIframe = JSON.parse(response.message.output).message;
14960            if(window.outerWidth < 550 && !!window.navigator.userAgent.match(/iPhone/)) {
14961              $('#overlay').hide();
14962              $(".ElementIframe").css("display",'none');
14963              window.open(urlReplaceIframe, "_blank");
14964            } else {
14965              $(".ElementIframe").attr('src', urlReplaceIframe);
14966              $(".ElementIframe").css("display",'block');
14967            }
14968          } else if (successStatus == '500') {
14969            errorDisplay(response);
14970          } else if (successStatus == '404') {
14971            errorDisplay(response);
14972          }
14973      }
14974    },
14975    error: function(textStatus, errorThrown) {
14976      console.log(textStatus, errorThrown);
14977      $('#overlay').fadeOut("slow");
14978      $(".ElementIframe").css("display",'none');
14979      $("#errorMsg").show();
14980      $("#errorMsg").html("Internal error occured, please try again later");
14981    }
14982  });
14983
14984  function errorDisplay(errResp){
14985    $('#overlay').fadeOut("slow");
14986    $(".ElementIframe").css("display",'none');
14987    $("#errorMsg").show();
14988    $("#errorMsg").html(JSON.parse(errResp.message.output).message);
14989  }
14990}
14991
14992
14993//var abc = $(document).find(".col-md-4.mb-3.pr-0").find(".selectedGray").find("input")
14994
14995$( document ).ready(function() {
14996    if($('#walletcardIframe').length){
14997  getPdfByBackend();
14998    }
14999});
15000$(document).ready(function(){
15001
15002  //input field validation
15003  function inputFieldErrorValidation() {
15004    $(document).on('click','#payerPortal-button', function(){
15005      var fName = $("#payerPortal-firstName").val();
15006      var lName = $("#payerPortal-lastName").val();
15007      var email = $("#payerPortal-email").val();
15008      var phonenumber = $("#payerPortal-phoneNumber").val();
15009      var errorMessage_fName = $(".payerPortal-input__fName").attr('data-fName-errorMessage');
15010      var errorMessage_lName = $(".payerPortal-input__lName").attr('data-lName-errorMessage');
15011      var errorMessage_email = $(".payerPortal-input__email").attr('data-email-errorMessage');
15012      var errorMessage_phoneNumber = $(".payerPortal-input_phoneNumber").attr('data-phoneNumber-errorMessage');
15013      if(fName == '' || lName == '' || email == '' || phonenumber == ""){
15014        $("#payerPortal-firstName").attr("placeholder", errorMessage_fName);
15015    		$("#payerPortal-lastName").attr("placeholder", errorMessage_lName);
15016    		$("#payerPortal-email").attr("placeholder", errorMessage_email);
15017    		$("#payerPortal-phoneNumber").attr("placeholder", errorMessage_phoneNumber);
15018        if(phonenumber != ''){
15019            mobilePatternValidation();
15020            }
15021        else if(email != ''){
15022            emailPatternValidation();
15023		}
15024
15025        else if(fName == ''){
15026          $("#payerPortal-firstName").focus();
15027        }
15028        else if (lName == '') {
15029          $("#payerPortal-lastName").focus();
15030        }
15031        else if (email == '') {
15032          $("#payerPortal-email").focus();
15033        }
15034        else if (phonenumber == '') {
15035          $("#payerPortal-phoneNumber").focus();
15036        }
15037        $('#payerPortal-form input').keyup(function(){
15038          if( $(this).val() == '' ) {
15039            $(this).removeAttr("placeholder");
15040          }
15041          return false;
15042          });
15043        recaptchaValidating();
15044        return false;
15045      }
15046      emailPatternValidation();
15047      mobilePatternValidation();
15048      EPPFormFinalSubmit($("#payerPortal-form"));
15049      return false;
15050    });
15051  }
15052  inputFieldErrorValidation();
15053
15054    $(document).on('change', '.epp-form-modal input:checkbox', function(){
15055    if($(this).is(":checked")) {
15056    console.log("checked");
15057    $(this).addClass('active');
15058    } else {
15059    console.log("unChecked");
15060    $(this).removeClass("active");
15061    }
15062  });
15063
15064
15065  //Email validation
15066  function emailPatternValidation() {
15067    var emailPattern = new RegExp($('#payerPortal-email').attr('pattern'));
15068    var emailVAL = $("#payerPortal-email").val();
15069    var emailValid = $("#payerPortal-email").attr('data-valid-Message');
15070    if(emailPattern.test(emailVAL)){
15071       $('#payerPortal-email').removeAttr('placeholder');
15072       return true;
15073     }
15074     else{
15075       $('#payerPortal-email').val('');
15076       $('#payerPortal-email').attr("placeholder", emailValid);
15077       $("#payerPortal-email").focus();
15078       return false;
15079     }
15080  }
15081
15082  //Mobile Validation
15083  function mobilePatternValidation(){
15084    var mobilePattern = new RegExp($('#payerPortal-phoneNumber').attr('pattern'));
15085    var mobileVAL = $("#payerPortal-phoneNumber").val();
15086    var mobileValid = $("#payerPortal-phoneNumber").attr('data-valid-phoneMessage');
15087    if(mobilePattern.test(mobileVAL)){
15088      $('#payerPortal-phoneNumber').removeAttr('placeholder');
15089      return true;
15090    }
15091    else{
15092      $('#payerPortal-phoneNumber').val('');
15093      $('#payerPortal-phoneNumber').attr("placeholder", mobileValid);
15094      $("#payerPortal-phoneNumber").focus();
15095      return false;
15096    }
15097  }
15098
15099  function EPPFormFinalSubmit(selector){
15100    var $form = $(selector);
15101    let isvalidateEmail = emailPatternValidation($form);
15102    let isvalidateMobile = mobilePatternValidation($form);
15103    let finalFormValidation = true;
15104    let isvalidateCaptchaEPP = recaptchaValidating($form);
15105    if(isvalidateEmail && isvalidateMobile && isvalidateCaptchaEPP){
15106      finalFormValidation = true;
15107	  $("#payerPortal-firstName").focus();
15108      $("#payerPortal-button").attr("disabled", "disabled");
15109    }
15110    else{
15111      finalFormValidation = false;
15112    }
15113    if(finalFormValidation){
15114
15115    //if success validation getting input values here
15116    $form.parent().append('<div class="form-loading"><i class="icon icon-spinner"><svg width="120px" height="120px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" class="uil-default"><rect x="0" y="0" width="100" height="100" fill="none" class="bk"></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(0 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(45 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.15s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(90 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.3s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(135 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.44999999999999996s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(180 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.6s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(225 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.75s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(270 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.8999999999999999s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(315 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="1.05s" repeatCount="indefinite"></animate></rect></svg></i></div>')
15117    $.post($('#payerPortal-form').find('.payerPortal-input__submit').attr('formaction'),$('#payerPortal-form').serializeArray(),function(res){
15118      if(res.status == "success"){
15119        $(".payerPortal-wrapper").css("display", "none");
15120        $(".payerPortal-success__message").css("display", "block");
15121        $(".modal-dialog.epp-form-modal").css('height', "250px");
15122          if(window._satellite){
15123                    _satellite.track('Form Success');
15124                }
15125        EPPresetForm();
15126      }
15127      else if(res.status == "failure"){
15128        $(".payerPortal-wrapper").css("display", "none");
15129        $(".payerPortal-error__message").css("display", "block");
15130        $(".modal-dialog.epp-form-modal").css('height', "250px");
15131          if(window._satellite){
15132                    _satellite.track('Form Failure');
15133                }
15134        EPPresetForm();
15135      }
15136    })
15137    }
15138  }
15139
15140  // recaptcha Validation
15141    function recaptchaValidating() {
15142      if($('.g-recaptcha').length > 0){
15143        if(!grecaptcha) return false;
15144        var capthaResponse;
15145        capthaResponse = grecaptcha.getResponse();
15146        //  if (capthaResponse == "" || capthaResponse == undefined || capthaResponse.length == 0){
15147        if (capthaResponse.length == 0){
15148          $('.g-recaptcha').css("border", "1px Solid #d0103a");
15149          $('.g-recaptcha').addClass("form-epp-error");
15150          return false;
15151        }
15152        else{
15153          $('.g-recaptcha').removeClass("form-epp-error");
15154          $('.g-recaptcha').css("border", "0px");
15155          return true;
15156        }
15157      }
15158      else{
15159        return true;
15160      }
15161    }
15162
15163    function EPPresetForm(){
15164      $('.transformer-modal-close').on('click', function(){
15165        location.reload();
15166        $('.payerPortal-success__message').hide();
15167        $(".payerPortal-error__message").hide();
15168      });
15169    }
15170
15171});
15172var checkPage = IsProtectedUrl("production");
15173if (checkPage && !$.cookie("apex__PatientLogin") && !$.cookie("apex__PatientCode")) {
15174  var currentPage, patientPages = ["meine-therapie/informationsmaterialien", "meine-therapie/informationsmaterialien-1", "meine-therapie/informationsmaterialien-1/formular", "meine-therapie/informationsmaterialien/formular"];
15175  window.location.href.toLowerCase().indexOf("visual.force.com") > -1 ? (currentPage = getParameterByName("name"),
15176    $.cookie("apex__gigyaSession") && !patientPages.includes(currentPage) || (window.location.href = "Preview?sname=aktivmitpsa_DE&name=index&returnURL=" + currentPage)) : window.location.href.toLowerCase().indexOf("secure.force.com") > -1 ? (currentPage = getParameterByName("name"),
15177      $.cookie("apex__gigyaSession") && !patientPages.includes(currentPage) || (window.location.href = "aktivmitpsade/index&returnURL=" + currentPage)) : (currentPage = window.location.pathname,
15178        $.cookie("apex__gigyaSession") && !patientPages.includes(currentPage) || (window.location = "index&returnURL=" + currentPage))
15179}
15180function IsProtectedUrl(e) {
15181  var a = !1
15182    , n = "";
15183  if ("prev" == e)
15184    n = getParameterByName("name"),
15185      console.log("page name:" + n);
15186  else if ("production" == e) {
15187    n = window.location.pathname
15188  }
15189  for (var i = ["meine-therapie", "meine-therapie/anwendung-von-orencia", "meine-therapie/anwendung-von-orencia-1", "meine-therapie/anwendung-von-orencia-2", "meine-therapie/informationsmaterialien", "meine-therapie/informationsmaterialien-1", "meine-therapie/informationsmaterialien-1/formular", "meine-therapie/informationsmaterialien/formular", "meine-therapie/reisen-mit-orencia", "meine-therapie/was-ist-orencia"], o = i.length, r = 0; r < o; r++)
15190    if (n.toLowerCase() == i[r].toLowerCase()) {
15191      a = !0;
15192      break
15193    }
15194  return a
15195}
15196/*clear cookies on redirection to loginpage*/
15197function clearcookies() {
15198  $.cookie('apex__loginType', '', { path: '/' });
15199  $.cookie('apex__patientCodeSession', '', { path: '/' });
15200  $.cookie('apex__PatientLogin', '', { path: '/' });
15201  $.cookie('apex__PatientCode', '', { path: '/' });
15202  $.cookie('apex__PatientCodeType', '', { path: '/' });
15203  document.cookie = GigyaSiteConfigJson.SiteId + "_redirectPageName" + '=;secure;path=/';
15204  $.cookie('apex__SiteId', '', { path: '/' });
15205  $.cookie("redirectPageName", '', { path: '/' });
15206}
15207
15208function GetQueryStringVarByName(e, a, n) {
15209  null == a && (a = ""),
15210    e = (e = e.toLowerCase()).replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
15211  var i = new RegExp("[\\?&]" + e + "=([^&#]*)")
15212    , o = null == n ? window.location.href : n;
15213  o = o.toLowerCase();
15214  var r = i.exec(o);
15215  return null == r ? a : r[1]
15216}
15217function getParameterByName(e) {
15218  e = e.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
15219  var a = new RegExp("[\\?&]" + e + "=([^&#]*)").exec(location.search);
15220  return null === a ? "" : decodeURIComponent(a[1].replace(/\+/g, " "))
15221}
15222
15223function createCookieForSuccessfulLogin(tokenValue) {
15224  if (window._satellite) {
15225    _satellite.track('Form Success');
15226  }
15227  $.cookie('apex__loginType', 'patientcode', { path: '/' });
15228  $.cookie('apex__patientCodeSession', tokenValue, { path: '/' });
15229  $.cookie('apex__PatientLogin', 'CodeLogin', { path: '/' });
15230  $.cookie('apex__PatientCode', $('.formtext').val(), { path: '/' });
15231  $.cookie('apex__PatientCodeType', 'BIGID', { path: '/' });
15232  var siteId = $.cookie('apex__SiteId');
15233  if (getQueryParameterByName('ReturnUrl')) {
15234    $.cookie('redirectPageURL', getQueryParameterByName('ReturnUrl'), { path: '/' });
15235  } else if (getQueryParameterByName('returnUrl')) {
15236    $.cookie('redirectPageURL', getQueryParameterByName('returnurl'), { path: '/' });
15237  } else {
15238    $.cookie('redirectPageURL', GigyaSiteConfigJson.PostLoginPage, { path: '/' });
15239  }
15240
15241   try {
15242    if ($.cookie('redirectPageURL'))
15243		$(".serach-overlay").remove();
15244	    SecureRedirect($.cookie('redirectPageURL'), false);
15245  }
15246  catch (err) {
15247    console.log('catch block' + err.message);
15248	$(".serach-overlay").remove();
15249    SecureRedirect($.cookie('redirectPageURL'), false);
15250  }
15251}
15252
15253function CodeCompareAWS(codeInput) {
15254  $.cookie('apex__SiteId', GigyaSiteConfigJson.SiteId, { path: '/' });
15255  var inputJson = {
15256    "reqType": "BigIntegerService",
15257    "executionType": "startExecution",
15258    "input": {
15259      "RegistrationNumber": codeInput,
15260      "PatientCodeType": "BIGID",
15261      "dummyNumber": GigyaSiteConfigJson.dummybigid
15262    }
15263  };
15264
15265  $.ajax({
15266    url: "/bin/buildeasy/genericapi",
15267    data: {
15268      payload: JSON.stringify(inputJson),
15269      reqType: "reqBigIntegerService"
15270    },
15271    dataType: 'json',
15272    type: "POST",
15273    success: function (result, code, jqXHR) {
15274      console.log("Patient Login startExecution completed successfully");
15275      var finalResponse = result;
15276      var isCodeloginSuccess = JSON.parse(finalResponse.message.output).validNumber;
15277      var patientCodeSession = JSON.parse(finalResponse.message.output).token;
15278      var statusCode = JSON.parse(finalResponse.message.output).statusCode;
15279
15280      if(statusCode == 200) {
15281        if (isCodeloginSuccess) {
15282          createCookieForSuccessfulLogin(patientCodeSession);
15283        } else {
15284          // Please login with correct code
15285          $('.invalid-code').show();
15286          $(".serach-overlay").remove();
15287        }
15288      } else {
15289        $('.invalid-code').show();
15290        $(".serach-overlay").remove();
15291      }
15292    }, error: function () {
15293      console.log("Patient Login request failed");
15294      $(".serach-overlay").remove();
15295    }
15296  });
15297}
15298
15299function getQueryParameterByName(name) {
15300  var url = window.location.href;
15301  name = name.replace(/[\[\]]/g, "\$&");
15302  var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
15303    results = regex.exec(url);
15304  if (!results) return null;
15305  if (!results[2]) return '';
15306  return decodeURIComponent(results[2].replace(/\+/g, " "));
15307}
15308function SecureRedirect(pageName, includeQueryString) {
15309  if (includeQueryString == null)
15310    includeQueryString = true;
15311  var host = window.location.protocol + '//' + window.location.host;
15312  var search = (includeQueryString == true) ? window.location.search : '';
15313  window.location.replace(host + pageName + search);
15314}
15315$(document).ready(function () {
15316  var e = ""
15317    , a = ""
15318    , n = window.location.href;
15319  n.indexOf("returnURL") > -1 ? (a = GetQueryStringVarByName("returnURL"),
15320    a = unescape(a),
15321    a = unescape(a)) : a = "meine-therapie",
15322    $.cookie("redirectPageName", a, { path: '/' }),
15323    $("a.submit-btn-nl").click(function (a) {
15324      clearcookies();
15325      $('.invalid-code, .show-error').hide();
15326        if ($('.formtext').val() == "") {
15327          $('.show-error').show();
15328        }
15329        else {
15330          $('.invalid-code').hide();
15331          $('.show-error').hide();
15332		   $('body').append('<div class="serach-overlay"><svg width="120px" height="120px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" class="uil-default"><rect x="0" y="0" width="100" height="100" fill="none" class="bk"></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(0 50 50) translate(0 -30)"> <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(45 50 50) translate(0 -30)"> <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.15s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(90 50 50) translate(0 -30)"> <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.3s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(135 50 50) translate(0 -30)"> <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.44999999999999996s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(180 50 50) translate(0 -30)"> <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.6s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(225 50 50) translate(0 -30)"> <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.75s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(270 50 50) translate(0 -30)"> <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.8999999999999999s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(315 50 50) translate(0 -30)"> <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="1.05s" repeatCount="indef
15332inite"></animate></rect></svg></div>')
15333          
15334        }
15335        "" == (e = $(".formtext").val()) ? (a.preventDefault(),
15336          $("#wrong-code").show()) : (a.preventDefault(), CodeCompareAWS(e));
15337    }),
15338
15339    $('.formtext').keypress(function (event) {
15340      if (event.which == 13) {
15341        event.preventDefault();
15342        $('a.submit-btn-nl').click();
15343      }
15344    });
15345
15346  $('#bodyContent .gy-class-logout').click(function () {
15347    $.cookie('apex__loginType', '', { path: '/' });
15348    $.cookie('apex__patientCodeSession', '', { path: '/' });
15349    $.cookie('apex__PatientLogin', '', { path: '/' });
15350    $.cookie('apex__PatientCode', '', { path: '/' });
15351    $.cookie('apex__PatientCodeType', '', { path: '/' });
15352    $.cookie('apex__SiteId', '', { path: '/' });
15353    $.cookie("redirectPageName", '', { path: '/' });
15354
15355    window.open(window.origin, '_self');
15356  }),
15357    $(".header-menu-btn-logout").click(function () {
15358      $.cookie("apex__PatientLogin") && ($.cookie("apex__PatientLogin", "", {
15359        path: "/"
15360      }),
15361        $.cookie("apex__PatientCode", "", {
15362          path: "/"
15363        }),
15364        $.cookie("apex__LoginUserType", "", {
15365          path: "/"
15366        }),
15367        $.cookie("apex__PatientLogintimestamp_459", "", {
15368          path: "/"
15369        }),
15370        $.cookie("apex__Patient_AuthToken_459", "", {
15371          path: "/"
15372        }),
15373        window.location.href.toLowerCase().indexOf("visual.force.com") > -1 ? window.location.href = "Preview?sname=aktivmitpsa_DE&name=index" : window.location.href.toLowerCase().indexOf("secure.force.com") > -1 ? window.location.href = "aktivmitpsade/index" : window.location.href = "index")
15374    })
15375});
15376
15377
15378$('.patient-logout a').click(function (e) {
15379  e.preventDefault();
15380  $.cookie('apex__loginType', '', { path: '/' });
15381  $.cookie('apex__patientCodeSession', '', { path: '/' });
15382  $.cookie('apex__PatientLogin', '', { path: '/' });
15383  $.cookie('apex__PatientCode', '', { path: '/' });
15384  $.cookie('apex__PatientCodeType', '', { path: '/' });
15385  $.cookie('apex__SiteId', '', { path: '/' });
15386  $.cookie("redirectPageName", '', { path: '/' });
15387
15388  window.open(window.origin, '_self');
15389  localStorage.removeItem('interstetial-opdivo');
15390});
15391//console.log('hello');
15392//let submitBtn = document.getElementById('submit-btn');
15393// submitBtn.addEventListener('click', validateInspireForm);
15394$(document).ready(function () {
15395    init();
15396    $('.medicine-check .input-radio').change(function (event) {
15397        // console.log(event.currentTarget);
15398        if (event.target.value == "Yes") {
15399            $('.medicine-no').hide();
15400            $('.medicine-yes').show();
15401        } else {
15402            $('.medicine-yes').hide();
15403            $('.medicine-no').show();
15404        }
15405    });
15406    $('.input-radio').change(function (event) {
15407        $(this).parent().parent().children('.error-text').hide();
15408    });
15409    $('.input-text').focus(function (event) {
15410        $(this).siblings('.error-text').hide();
15411    });
15412    $('.input-text').blur(function (event) {
15413        if ($(this).val() == '') {
15414            let siblings = $(this).siblings('.error-text')[0];
15415            siblings.style.display = 'block';
15416        }
15417        else if ($(this).attr('pattern')) {
15418            validatePaternSTI($(this));
15419        }
15420    });
15421    $('.terms-checkbox').change(function (event) {
15422        // $(this).parent().parent().parent().children('.error-text').hide();
15423
15424        let spanElem = $(this).parent().parent().parent().children('.error-text');
15425        if (event.target.checked && spanElem) {
15426            spanElem.hide();
15427        } else {
15428            spanElem.show();
15429        }
15430    });
15431
15432    $('.medicine-yes .input-checkbox').change(function (event) {
15433        // console.log(event.currentTarget);
15434        let spanElem = $(this).parent().next().children()[1];
15435        if (event.target.checked && spanElem) {
15436            spanElem.style.display = 'block';
15437        } else if (spanElem) {
15438            spanElem.style.display = 'none';
15439        }
15440    });
15441    $('textarea.input-text').on('focus', function () {
15442        let char = parseInt($(this).val().length);
15443        $(this).next().text(`${char}/200`);
15444    });
15445    $('textarea.input-text').on('input', function () {
15446        let char = parseInt($(this).val().length);
15447        $(this).next().text(`${char}/200`);
15448    });
15449    $('input[type="number"],input[type="tel"]').on('input', function (e) {
15450        let phoneNum = document.getElementById('phone-number');
15451        let $this = $(this);
15452        let maxlength = parseInt($this.attr('maxlength'));
15453        let value = $this.val();
15454        if (($this.attr('id') == 'phone-number') && (value.length == 3 || value.length == 4 || value.length == 8 || value.length == 7) && e.originalEvent.inputType == 'insertText') {
15455            if(value.length == 4 || value.length == 8){
15456                if(value.charAt(value.length-1) != '-'){
15457                    let last_char = value.charAt(value.length-1);
15458                    value = value.slice(0,-1) + '-' + last_char;
15459                    phoneNum.value = value;
15460                }
15461            }else{
15462                addHyphen($this, value);
15463            }
15464            
15465        }
15466        if (value && value.length >= maxlength) {
15467            $this.val(value.substr(0, maxlength));
15468        }
15469    });
15470	
15471	$('.inspire-modal-close, .inspire-btn-close').click(function(){
15472            $('.inspire-modal-container').hide();
15473    });
15474
15475    function addHyphen(element, value) {
15476        // let val = $(element).val().split('-').join('');   // Remove dash (-) if mistakenly entered.
15477        let val = value;
15478
15479        // let finalVal = val + "-";    // Add (-) after 3rd every char.
15480        let finalVal = val + "-";
15481        element[0].value = finalVal;		// Update the input box.
15482    }
15483    $('.medicine-container .input-checkbox').change(function (event) {
15484        // console.log(event.currentTarget);
15485        let count = $('.medicine-container .input-checkbox:checked').length;
15486        let errSpan = $('.medicine-container .error-text');
15487        if (count > 0) {
15488            errSpan.hide();
15489        } else {
15490            errSpan.show();
15491        }
15492    });
15493    // function validateInspireForm (e){
15494    //     e.preventDefault();
15495    //     console.log('Submit');
15496    // }
15497    function validatePaternSTI(input) {
15498        var errorFlag = false;
15499        var $input = $(input);
15500        if ($input.val()) {
15501            try {
15502                var pattern = new RegExp($input.attr('pattern'));
15503                /**
15504                 * if the pattern is wrong displaying error
15505                 */
15506                if (pattern.test($input.val())) {
15507                    //removeError($input);
15508                    $input.siblings('.error-text.pattern').css('display','none');
15509                    if ($input.attr('name') == 'confirmEmail' && $input.val() != $('#email').val()) {
15510                        errorFlag = true;
15511                        //displayError($input);
15512                        $input.siblings('.error-text.pattern').css('display','block');
15513                    }
15514                } else {
15515                    errorFlag = true;
15516                    //displayError($input);
15517                    $input.siblings('.error-text.pattern').css('display','block');
15518                }
15519            }
15520            catch (e) {
15521                console.error("invaild pattern (Regular Expression )", $input.attr('pattern'));
15522                console.error(e);
15523            }
15524        } else {
15525            displayError($input);
15526        }
15527        return errorFlag;
15528    }
15529    function init() {
15530        $(document).on('click', '#submit-sti-btn', function (event) {
15531            //$(event.currentTarget).prop("disabled",true);
15532
15533            if (!submitEventListenerSTI($(event.currentTarget).parents('form'))) {
15534                event.preventDefault();
15535            }
15536            //formChangeEventListener($(event.currentTarget).parents('form'));
15537        });
15538    }
15539    function getTopOffset(controlEl) {
15540        const labelOffset = 80;
15541        let top = parseInt(controlEl.offsetTop);
15542        return top - labelOffset;
15543    }
15544
15545    function scrollToFirstInvalidControl() {
15546        const firstInvalidControl = $("form.inspire-form .error-text:visible")[0];
15547
15548        window.scroll({
15549            top: getTopOffset(firstInvalidControl),
15550            left: 0,
15551            behavior: "smooth"
15552        });
15553    }
15554
15555    function submitEventListenerSTI(selector) {
15556        let $form = $(selector);
15557        let isRequiredValidation = requiredValidationSTI($form);
15558        let isPatternValidation = patternValidationSTI($form);
15559        let isValidCaptcha = validateCaptchaSTI();
15560        let finalFormvalidationState = false;
15561        console.log(isRequiredValidation, ': isRequiredValidation');
15562        console.log(isPatternValidation, ': isPatternValidation');
15563        console.log(isValidCaptcha, ': isValidCaptcha');
15564        if (isRequiredValidation || isPatternValidation || !isValidCaptcha) {
15565          //if (isRequiredValidation || isPatternValidation) {
15566            finalFormvalidationState = false;
15567            scrollToFirstInvalidControl();
15568        }
15569
15570        else {
15571            finalFormvalidationState = true;
15572        }
15573
15574        if (finalFormvalidationState) {
15575            $form.parent().append('<div class="form-loading"><i class="icon icon-spinner"><svg width="120px" height="120px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" class="uil-default"><rect x="0" y="0" width="100" height="100" fill="none" class="bk"></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(0 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(45 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.15s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(90 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.3s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(135 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.44999999999999996s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(180 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.6s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(225 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.75s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(270 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.8999999999999999s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(315 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="1.05s" repeatCount="indefinite"></animate></rect></svg></i></div>')
15576            $.post($form.find('[type="submit"]').attr('formaction'), $form.serializeArray(), function (res) {
15577                if (res.status.trim() == "success") {
15578
15579                    // $(".response-message .response-text.success").show();
15580                    // $(".response-message .response-text.error").hide();
15581                    console.log("STI form submit Success");
15582					if(window._satellite){
15583						_satellite.track('Form Success');
15584					}
15585                    $('.inspire-modal-container, .success-text').show();                    
15586
15587                    $('.failure-text').hide();
15588                    resetFormSTI($form);
15589                }
15590                else if (res.status.trim() == "failure") {
15591
15592                    // $(".response-message .response-text.success").hide();
15593                    // $(".response-message .response-text.error").show();
15594                    console.log("STI form submit Failure");
15595                    $('.inspire-modal-container, .failure-text').show();                    
15596
15597                    $('.success-text').hide();
15598                    resetFormSTI($form);
15599                    /**
15600                     * if there is server side error then reset captcha if exist
15601                     */
15602                    if ($('.g-recaptcha').length) {
15603                        grecaptcha.reset();
15604                    }
15605
15606                    $form.find('[type="submit"]').prop("disabled", false);
15607                }
15608                else {
15609                    $form.find('[type="submit"]').prop("disabled", false);
15610                }
15611            })
15612                .fail(function () {
15613                    if ($('.g-recaptcha').length) {
15614                        grecaptcha.reset();
15615                    }
15616                    $form.find('[type="submit"]').prop("disabled", false);
15617                })
15618                .always(function () {
15619                    $form.parent().find('.form-loading:visible').remove();
15620                })
15621        }
15622        else {
15623            $form.parent().find('.form-loading').remove();
15624        }
15625
15626        return false;
15627    }
15628
15629    function requiredValidationSTI($form) {
15630        console.log("In required validation");
15631        var errorFlag = false;
15632        var inputSelector = 'input[required]:visible,textarea[required]:visible';
15633
15634        $.each($form.find(inputSelector), function (index, input) {
15635            var $input = $(input);
15636            /**
15637             * if the field value is empty displaing error
15638             */
15639            if ($input.attr('type') == 'radio') {
15640                var radioBtnParent = $input.parent().parent();
15641                // console.log(radioBtnParent.find(".input-radio:checked").length);
15642                if (radioBtnParent.find(".input-radio:checked").length == 0) {
15643                    errorFlag = true;
15644					displayError($input);
15645                } else {
15646                    removeError($input);
15647                }
15648            } else if ($input.attr('type') == 'checkbox' && $input.attr('name') == 'medicine') {
15649                var checkboxBtnParent = $input.parent().parent().parent();
15650                if (checkboxBtnParent.find(".input-checkbox:checked").length == 0) {
15651                    errorFlag = true;
15652					displayError($input);
15653                } else {
15654                    removeError($input);
15655                }
15656            }
15657            else {
15658                if (!$input.val()) {
15659                    errorFlag = true;
15660                    displayError($input);
15661                } else {
15662                    removeError($input);
15663                }
15664            }
15665        });
15666
15667        // if ($('input:checkbox[name="topics"][required]').length > 0 && $('input:checkbox[name="topics"]:checked').length == 0) {
15668        if ($('input:checkbox[class="terms-checkbox"][required]').length != $('input:checkbox[class="terms-checkbox"]:checked').length) {
15669            errorFlag = true;
15670            var checkboxSelector = $form.find('input:checkbox[class="terms-checkbox"]');
15671            $.each(checkboxSelector, function (index, checkbox) {
15672                var $checkbox = $(checkbox);
15673                if (!($checkbox.is(':checked'))) {
15674                    displayError($checkbox);
15675                } else {
15676                    removeError($checkbox);
15677                }
15678            });
15679        }
15680        // if($('input:checkbox[name="medicine"][required]').length)
15681        return errorFlag;
15682    }
15683    // -----------------------****************************--------------------------
15684    function patternValidationSTI($form) {
15685        var errorFlag = false;
15686        $.each($form.find('input[pattern]:visible'), function (index, input) {
15687            var $input = $(input);
15688            if ($input.val()) {
15689                try {
15690                    var pattern = new RegExp($input.attr('pattern'));
15691                    /**
15692                     * if the pattern is wrong displaying error
15693                     */
15694                    if (pattern.test($input.val())) {
15695                        //removeError($input);
15696                        $input.siblings('.error-text.pattern').css('display','none');
15697                        if ($input.attr('name') == 'confirmEmail' && $input.val() != $('#email').val()) {
15698                            errorFlag = true;
15699                            //displayError($input);
15700                            $input.siblings('.error-text.pattern').css('display','block');
15701                        }
15702                    } else {
15703                        errorFlag = true;
15704                        //displayError($input);
15705                        $input.siblings('.error-text.pattern').css('display','block');
15706                    }
15707                }
15708                catch (e) {
15709                    console.error("invaild pattern (Regular Expression )", $input.attr('pattern'));
15710                    console.error(e);
15711                }
15712
15713            } else {
15714                displayError($input);
15715            }
15716        })
15717        return errorFlag;
15718    }
15719
15720     function validateCaptchaSTI() {
15721        if ($('.g-recaptcha-sti').length > 0) {
15722            if (!grecaptcha) return false;
15723            let captchaResponse;
15724            /**
15725             * if reCaptcha is created dynamically then in widgetId reCaptcha reference will be set.
15726             */
15727
15728
15729
15730           captchaResponse = grecaptcha.getResponse();
15731
15732
15733
15734           if (captchaResponse.length == 0) {
15735                $('.g-recaptcha-sti').css("border", "1px Solid #e76468");
15736                $('.g-recaptcha-sti + .error-text').show();
15737                return false;
15738            } else {
15739                $('.g-recaptcha-sti').css("border", "none");
15740                $('.g-recaptcha-sti + .error-text').hide();
15741                return true;
15742            }
15743        } else {
15744            return true;
15745        }
15746    }
15747
15748    function displayError(input, $form) {
15749        if (input.prop('type') == "checkbox") {
15750            input.parent().parent().parent().children('.error-text').show();
15751        }
15752        else if (input.prop('type') == "radio") {
15753            input.parent().parent().children('.error-text').show();
15754        }
15755        else {
15756            let errorText=	input.siblings('.error-text')[0];
15757            errorText.style.display = 'block';
15758        }
15759    }
15760
15761    function removeError(input, $form) {
15762        if (input.prop('type') == "checkbox") {
15763            input.parent().parent().parent().children('.error-text').hide();
15764        }
15765        else if (input.prop('type') == "radio") {
15766            input.parent().parent().children('.error-text').hide();
15767        }
15768        else {
15769            let errorText=	input.siblings('.error-text')[0];
15770            errorText.style.display = 'none';
15771        }
15772    }
15773
15774    // Global recaptchaCallback
15775    recaptchaCallback = function () {
15776        // Specific to iOS
15777        if (navigator.userAgent.match(/(iPhone|iPod|iPad)/i)) {
15778            // Scroll recaptcha back into view to fix iOS scrolling bug
15779            $('.g-recaptcha').get(0).scrollIntoView(true);
15780            window.scrollBy(0, -50);
15781        }
15782
15783        $('#submit-sti-btn').prop("disabled", false);
15784
15785       let captchaResponse = grecaptcha.getResponse();
15786
15787          if (captchaResponse.length == 0) {
15788                $('.g-recaptcha-sti').css("border", "1px Solid #e76468");
15789                $('.g-recaptcha-sti + .error-text').show();
15790                // return false;
15791            } else {
15792                $('.g-recaptcha-sti').css("border", "none");
15793                $('.g-recaptcha-sti + .error-text').hide();
15794                // return true;
15795            }
15796    }
15797
15798    function resetFormSTI($form) {
15799        document.getElementById("share-inspire-form").reset();
15800        $('.medicine-yes, .medicine-no').hide();
15801		$('.medicine-info').hide();
15802		grecaptcha.reset();
15803    }
15804
15805});
15806$(document).ready(function () {
15807  init();
15808  function showErrorMessage(errorName, $input) {
15809    let errorContainer = $(".camzyos-error-fiels-container");
15810    let fieldName = $input.attr("id");
15811    let inputFieldClassList = `#${$input.attr("id")}`;
15812    let errorFieldClassList = `.camzyos-error-field.${$input.attr("id")}`;
15813    let inputContainer = $(inputFieldClassList);
15814    if ($(errorFieldClassList).length === 0) {
15815      let errorMessage = "";
15816      if (errorName === "required") {
15817        errorMessage = $input.data("requiredMessage");
15818
15819      } else if (errorName === "pattern") {
15820        errorMessage = $input.data("patternMessage");
15821      }
15822      if(errorMessage != undefined) {
15823      let errorElement = `<p class="camzyos-error-field ${fieldName}">${errorMessage}</p>`;
15824      inputContainer.closest(".camzyos-input-wrapper").append(errorElement).show();
15825      errorContainer.parent().show();
15826    }
15827    }
15828  }
15829
15830  function hideErrorMessage(errorName, $input) {
15831    // let errorContainer = $(".camzyos-error-fiels-container");
15832    let errorFieldClassList = `.camzyos-error-field.${$input.attr("id")}`;
15833    // errorContainer.find(errorFieldClassList).remove();
15834    $(".camzyos-input-wrapper").find(errorFieldClassList).remove();
15835    // if (errorName === 'required') {
15836    //     let errorFieldClassList = `.camzyos-error-field.${$input.attr('name')}`;
15837    //     errorContainer.find(errorFieldClassList).remove();
15838    // } else if (errorName === 'pattern') {
15839    //     let errorFieldClassList = `.camzyos-error-field.${$input.attr('name')}`;
15840    //     errorContainer.find(errorFieldClassList).remove();
15841    // }
15842  }
15843  $(".camzyos-input-text").focus(function (event) {
15844    $(".camzyos-system-error-container").hide();
15845    $(this).removeClass("error");
15846    if ($(this).val() == "" && $(this).prop("required")) {
15847      hideErrorMessage("required", $(this));
15848    } else if ($(this).attr("pattern")) {
15849      hideErrorMessage("pattern", $(this));
15850    }
15851  });
15852  $(".camzyos-input-text").blur(function (event) {
15853    if ($(this).val() == "" && $(this).prop("required")) {
15854      $(this).addClass("error");
15855      showErrorMessage("required", $(this));
15856    } else if ($(this).attr("pattern")) {
15857      validatePatern($(this));
15858    }
15859  });
15860
15861  $("textarea.camzyos-input-text").on("focus", function () {
15862    let char = parseInt($(this).val().length);
15863    let maxlength = parseInt($(this).attr("maxlength"));
15864    $(this).next().text(`${char}/${maxlength}`);
15865  });
15866  $("textarea.camzyos-input-text").on("input", function () {
15867    let char = parseInt($(this).val().length);
15868    let maxlength = parseInt($(this).attr("maxlength"));
15869    $(this).next().text(`${char}/${maxlength}`);
15870  });
15871  function addHyphen(element, value) {
15872    var $input = $(input);
15873    // let val = $(element).val().split('-').join('');   // Remove dash (-) if mistakenly entered.
15874    let val = value;
15875
15876    // let finalVal = val + "-";    // Add (-) after 3rd every char.
15877    let finalVal = val + "-";
15878    element[0].value = finalVal; // Update the input box.
15879  }
15880  $(".camzyos-input-container.top-checkboxes .camzyos-input-checkbox").change(
15881    function (event) {
15882      // console.log(event.currentTarget);
15883      let count = $(
15884        ".camzyos-input-container.top-checkboxes .camzyos-input-checkbox:checked"
15885      ).length;
15886      let errSpan = $(
15887        ".camzyos-input-container.top-checkboxes camzyos-error-field"
15888      );
15889      if (count <= 0) {
15890        $('.checkbox-error-msg-sotyktu').css('display','block');
15891      } else {
15892        // errSpan.show();
15893    $('.checkbox-error-msg-sotyktu').css('display','none');
15894      }
15895    }
15896  );
15897
15898  function validatePatern(input) {
15899    var errorFlag = false;
15900    var $input = $(input);
15901    if ($input.val()) {
15902      try {
15903        var pattern = new RegExp($input.attr("pattern"));
15904        /**
15905         * if the pattern is wrong displaying error
15906         */
15907        if (pattern.test($input.val())) {
15908          $input.siblings(".error-text.pattern").css("display", "none");
15909
15910          $input.removeClass("error");
15911        } else {
15912          errorFlag = true;
15913          $input.addClass("error");
15914          showErrorMessage("pattern", $input);
15915        }
15916      } catch (e) {
15917        console.error(
15918          "invaild pattern (Regular Expression )",
15919          $input.attr("pattern")
15920        );
15921        console.error(e);
15922      }
15923    } else {
15924      $input.addClass("error");
15925    }
15926
15927    if ($("#camzyos-email-conf").val() != $("#camzyos-email").val()) {
15928      errorFlag = true;
15929
15930        if($("#camzyos-email-conf").val()){
15931             $input.siblings(".error-text.pattern").css("display", "none");
15932
15933      $("#camzyos-email-conf").addClass("error");
15934      showErrorMessage("pattern", $("#camzyos-email-conf"));
15935        }
15936    } else {
15937      $("#camzyos-email-conf")
15938        ?.siblings(".error-text.pattern")
15939        .css("display", "none");
15940
15941      $("#camzyos-email-conf")?.removeClass("error");
15942    }
15943
15944    //displayError($input);
15945    // $input.siblings(".error-text.pattern").css("display", "block");
15946
15947    return errorFlag;
15948  }
15949
15950  function init() {
15951    $(document).on("click", "#camzyos-submit-btn", function (event) {
15952      $(".camzyos-system-error-container").hide();
15953      scrollToFirstInvalidControlCamzyos();
15954      //$(event.currentTarget).prop("disabled",true);
15955
15956      if (!submitEventListenerCamzyos($(event.currentTarget).parents("form"))) {
15957        event.preventDefault();
15958      }
15959      //formChangeEventListener($(event.currentTarget).parents('form'));
15960    });
15961  }
15962  function getTopOffsetCamzyos(controlEl) {
15963    const labelOffset = 80;
15964    let top = controlEl ? parseInt(controlEl.offsetTop) : 0;
15965    return top - labelOffset;
15966  }
15967
15968  function scrollToFirstInvalidControlCamzyos() {
15969    const firstInvalidControl = $(
15970      "form.camzyos-form .camzyos-required-heading-info"
15971    )[0];
15972
15973    window.scroll({
15974      top: getTopOffsetCamzyos(firstInvalidControl),
15975      left: 0,
15976      behavior: "smooth",
15977    });
15978  }
15979
15980  function submitEventListenerCamzyos(selector) {
15981    let $form = $(selector);
15982    let isRequiredValidation = requiredValidationCamzyos($form);
15983    let isPatternValidation = patternValidationCamzyos($form);
15984    let isValidCaptcha = validateCaptchaCamzyos();
15985    let finalFormvalidationState = false;
15986    console.log(isRequiredValidation, ": isRequiredValidation");
15987    console.log(isPatternValidation, ": isPatternValidation");
15988    console.log(isValidCaptcha, ": isValidCaptcha");
15989    if (isRequiredValidation || isPatternValidation || !isValidCaptcha) {
15990      //if (isRequiredValidation || isPatternValidation) {
15991      finalFormvalidationState = false;
15992      scrollToFirstInvalidControlCamzyos();
15993    } else {
15994      finalFormvalidationState = true;
15995    }
15996
15997    if (finalFormvalidationState) {
15998      $form
15999        .parent()
16000        .append(
16001          '<div class="form-loading"><i class="icon icon-spinner"><svg width="120px" height="120px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" class="uil-default"><rect x="0" y="0" width="100" height="100" fill="none" class="bk"></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(0 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(45 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.15s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(90 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.3s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(135 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.44999999999999996s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(180 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.6s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(225 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.75s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(270 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.8999999999999999s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(315 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="1.05s" repeatCount="indefinite"></animate></rect></svg></i></div>'
16002        );
16003      $.post(
16004        $form.find('[type="submit"]').attr("formaction"),
16005        $form.serializeArray(),
16006        function (res) {
16007          if (res.status.trim() == "success") {
16008            let redirectURL = res["redirect_path"];
16009            /**
16010             * if form is successfully submited then open thank you page as authored by user
16011             */
16012            //window.location.href = redirectURL;
16013            $form.hide();
16014            $(".camzyos-text-wrapper").hide();
16015            $(".camzyos-success-text-wrapper").show();
16016          } else if (res.status.trim() == "failure") {
16017            /**
16018             * if there is server side error then reset captcha if exist
16019             */
16020            if ($(".g-recaptcha").length) {
16021              grecaptcha.reset();
16022            }
16023            resetFormCamzyos($form);
16024            $(".global-level-msg").show();
16025            $form.find('[type="submit"]').prop("disabled", false);
16026            resetFormCamzyos($form);
16027            $(".camzyos-system-error-container").show();
16028            scrollToFirstInvalidControlCamzyos();
16029          } else {
16030            $form.find('[type="submit"]').prop("disabled", false);
16031          }
16032        }
16033      )
16034        .fail(function () {
16035          if ($(".g-recaptcha").length) {
16036            grecaptcha.reset();
16037          }
16038          $form.find('[type="submit"]').prop("disabled", false);
16039        })
16040        .always(function () {
16041          $form.parent().find(".form-loading:visible").remove();
16042        });
16043    } else {
16044      $form.parent().find(".form-loading").remove();
16045    }
16046
16047    return false;
16048  }
16049
16050  function requiredValidationCamzyos($form) {
16051    var errorFlag = false;
16052    var inputSelector =
16053      "input[required]:visible,textarea[required]:visible,[type=required]:checked";
16054
16055    $.each($form.find(inputSelector), function (index, input) {
16056      var $input = $(input);
16057      /**
16058       * if the field value is empty displaing error
16059       */
16060
16061      if (!$input.val()) {
16062        errorFlag = true;
16063        $input.addClass("error");
16064        showErrorMessage("required", $input);
16065      } else {
16066        $input.removeClass("error");
16067      }
16068
16069      if (
16070        $input.attr("type") == "checkbox" &&
16071        $input.attr("name") == "topicsDetails"
16072      ) {
16073        var checkboxBtnParent = $input.parent().parent().parent();
16074        if (checkboxBtnParent.find(".camzyos-input-checkbox:checked").length == 0) {
16075          errorFlag = true;
16076          //displayError($input);
16077          //$input.addClass("error");
16078          //showErrorMessage("required", $input);
16079           $('.checkbox-error-msg-sotyktu').css('display','block');
16080        } else {
16081
16082          // removeError($input);
16083          //hideErrorMessage("required", $input);
16084          //$input.removeClass("error");
16085          $('.checkbox-error-msg-sotyktu').css('display','none');
16086        }
16087      } else {
16088        if (!$input.val()) {
16089          errorFlag = true;
16090          displayError($input);
16091        } else {
16092          removeError($input);
16093        }
16094      }
16095    });
16096
16097    // if ($('input:checkbox[name="topics"][required]').length > 0 && $('input:checkbox[name="topics"]:checked').length == 0) {
16098    // if($('input:checkbox[name="medicine"][required]').length)
16099    return errorFlag;
16100  }
16101  // -----------------------****************************--------------------------
16102  function patternValidationCamzyos($form) {
16103    console.log("pattern");
16104    var errorFlag = false;
16105    $.each($form.find("input[pattern]:visible"), function (index, input) {
16106      var $input = $(input);
16107      if ($input.val()) {
16108        try {
16109          var pattern = new RegExp($input.attr("pattern"));
16110          /**
16111           * if the pattern is wrong displaying error
16112           */
16113          if (pattern.test($input.val())) {
16114            $input.siblings(".error-text.pattern").css("display", "none");
16115
16116            if (
16117              $input.attr("name") == "confirmEmail" &&
16118              $input.val() != $("#email").val()
16119            ) {
16120              //console.log("confirmmail", $input.attr("name"));
16121              //errorFlag = true;
16122              //displayError($input);
16123              $input.siblings(".error-text.pattern").css("display", "block");
16124            }
16125            $input.removeClass("error");
16126          } else {
16127            //console.log("confirmation");
16128            errorFlag = true;
16129            $input.addClass("error");
16130          }
16131        } catch (e) {
16132          console.error(
16133            "invaild pattern (Regular Expression )",
16134            $input.attr("pattern")
16135          );
16136          console.error(e);
16137        }
16138      } else {
16139        $input.addClass("error");
16140      }
16141    });
16142    return errorFlag;
16143  }
16144
16145  function displayError(input, $form) {
16146    input.siblings(".error-text").show();
16147  }
16148
16149  function removeError(input, $form) {
16150    input.siblings(".error-text").hide();
16151  }
16152  function validateCaptchaCamzyos() {
16153    if ($(".g-recaptcha").length > 0) {
16154      if (!grecaptcha) return false;
16155      let captchaResponse;
16156      /**
16157       * if reCaptcha is created dynamically then in widgetId reCaptcha reference will be set.
16158       */
16159      captchaResponse = grecaptcha.getResponse();
16160      if (captchaResponse.length == 0) {
16161        $(".g-recaptcha").css("border", "1px Solid #e76468");
16162        // $('.g-recaptcha-camzyos + .error-text').show();
16163        return false;
16164      } else {
16165        $(".g-recaptcha").css("border", "none");
16166        // $('.g-recaptcha-camzyos + .error-text').hide();
16167        return true;
16168      }
16169    } else {
16170      return true;
16171    }
16172  }
16173  // Global recaptchaCallback
16174  window.recaptchaCallback = function () {
16175    // Specific to iOS
16176    if (navigator.userAgent.match(/(iPhone|iPod|iPad)/i)) {
16177      // Scroll recaptcha back into view to fix iOS scrolling bug
16178      $(".g-recaptcha").get(0).scrollIntoView(true);
16179      window.scrollBy(0, -50);
16180    }
16181
16182    $("#camzyos-submit-btn").prop("disabled", false);
16183
16184    let captchaResponse = grecaptcha.getResponse();
16185
16186    if (captchaResponse.length == 0) {
16187      $(".g-recaptcha").css("border", "1px Solid #e76468");
16188      // $('.g-recaptcha-camzyos + .error-text').show();
16189      // return false;
16190    } else {
16191      $(".g-recaptcha").css("border", "none");
16192      // $('.g-recaptcha-camzyos + .error-text').hide();
16193      // return true;
16194    }
16195  };
16196
16197  function resetFormCamzyos($form) {
16198    document.getElementById("camzyos-contactus-form").reset();
16199    // $('.medicine-yes, .medicine-no').hide();
16200    // $('.medicine-info').hide();
16201    grecaptcha.reset();
16202  }
16203
16204
16205
16206});
16207
16208
16209$(document).ready(function () {
16210    init();
16211    $('.optout-input-text').focus(function (event) {
16212        removeErrorOptout($(this));
16213    });
16214    $('.optout-input-text').blur(function (event) {
16215        if ($(this).val() == '' && $(this).prop('required')) {
16216            displayErrorOptout($(this), 'required');
16217        }
16218        else if ($(this).attr('pattern')) {
16219            validatePaternOptout($(this));
16220        }
16221    });
16222    $('.optout-input-checkbox').change(function (event) {
16223        // $(this).parent().parent().parent().children('.error-text').hide();
16224
16225        let spanElem = $(this).parent().parent().parent().children('.optout-error-text');
16226        if (event.target.checked && spanElem) {
16227            spanElem.css('visibility', 'hidden');
16228            $(this).css('border','1px solid #414042');
16229            $('#optout-submit-btn').prop('disabled', false);
16230        } else {
16231            spanElem.css('visibility', 'visible');
16232            $(this).css('border','1px solid #FF3333');
16233            $('#optout-submit-btn').prop('disabled', true);
16234        }
16235    });
16236    $('#optout-reset-btn').click(function (event) {
16237        $('#optout-submit-btn').prop('disabled', true);
16238        $('.optout-error-text').css('visibility', 'hidden');
16239    });
16240
16241    function validatePaternOptout(input) {
16242        var errorFlag = false;
16243        var $input = $(input);
16244        if ($input.val()) {
16245            try {
16246                var pattern = new RegExp($input.attr('pattern'));
16247                /**
16248                 * if the pattern is wrong displaying error
16249                 */
16250                if (pattern.test($input.val())) {
16251                    removeErrorOptout(input);
16252                } else {
16253                    errorFlag = true;
16254                    displayErrorOptout(input, 'pattern');
16255                }
16256            }
16257            catch (e) {
16258                console.error("invaild pattern (Regular Expression )", $input.attr('pattern'));
16259                console.error(e);
16260            }
16261        } else {
16262            $input.next().css('visibility', 'visible');
16263        }
16264        return errorFlag;
16265    }
16266    function init() {
16267        $(document).on('click', '#optout-submit-btn', function (event) {
16268            //$(event.currentTarget).prop("disabled",true);
16269
16270            if (!submitEventListeneroptout($(event.currentTarget).parents('form'))) {
16271                event.preventDefault();
16272            }
16273            //formChangeEventListener($(event.currentTarget).parents('form'));
16274        });
16275    }
16276    function getTopOffsetOpt(controlEl) {
16277        const labelOffset = 80;
16278        let top = parseInt(controlEl.offsetTop);
16279        return top - labelOffset;
16280    }
16281
16282    function scrollToFirstInvalidControlOpt() {
16283        const firstInvalidControl = $("form.optout-form .optout-error-text:visible")[0];
16284
16285        window.scroll({
16286            top: getTopOffsetOpt(firstInvalidControl),
16287            left: 0,
16288            behavior: "smooth"
16289        });
16290    }
16291
16292    function createOptoutModal($form, status) {
16293        if (document.querySelector('.optout-modal')) {
16294            $('.optout-modal').remove();
16295        }
16296        let div = document.createElement('div');
16297        div.classList.add('optout-modal');
16298        div.id = 'camzyos-optout-modal';
16299        div.style.display = 'none';
16300        //     div.innerHTML = `
16301        //   <div class="optout-modal-container-content">
16302        //       <span class="optout-modal-close">×</span>
16303        //       <div class="optout-modal-heading">We have received your request to opt out.<span>Thank you.</sapn></div>
16304        //   </div>
16305        //   `;
16306        let html = $(status).val();
16307        div.innerHTML = html;
16308        document.body.appendChild(div);
16309        div.querySelector('.optout-modal-close').addEventListener('click', () => {
16310            div.style.display = 'none';
16311            resetFormoptout($form);
16312        });
16313        div.addEventListener('click', (event) => {
16314            let modalContainer = document.querySelector('.optout-modal');
16315            if (event.target == modalContainer) {
16316                modalContainer.style.display = "none";
16317                resetFormoptout($form);
16318            }
16319        });
16320
16321
16322    }
16323
16324    function showModal() {
16325        document.querySelector('.optout-modal').style.display = 'block';
16326    }
16327
16328    function submitEventListeneroptout(selector) {
16329        let $form = $(selector);
16330        let isRequiredValidation = requiredValidationoptout($form);
16331        let isPatternValidation = patternValidationoptout($form);
16332        let isValidCaptcha = validateCaptchaoptout();
16333        let finalFormvalidationState = false;
16334        console.log(isRequiredValidation, ': isRequiredValidation');
16335        console.log(isPatternValidation, ': isPatternValidation');
16336        console.log(isValidCaptcha, ': isValidCaptcha');
16337        if (isRequiredValidation || isPatternValidation || !isValidCaptcha) {
16338            //if (isRequiredValidation || isPatternValidation) {
16339            finalFormvalidationState = false;
16340            scrollToFirstInvalidControlOpt();
16341        } else {
16342            finalFormvalidationState = true;
16343        }
16344
16345        if (finalFormvalidationState) {
16346
16347
16348            $form.parent().append('<div class="form-loading"><i class="icon icon-spinner"><svg width="120px" height="120px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" class="uil-default"><rect x="0" y="0" width="100" height="100" fill="none" class="bk"></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(0 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(45 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.15s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(90 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.3s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(135 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.44999999999999996s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(180 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.6s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(225 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.75s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(270 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.8999999999999999s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(315 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="1.05s" repeatCount="indefinite"></animate></rect></svg></i></div>')
16349            $.post($form.find('[type="submit"]').attr('formaction'), $form.serializeArray(), function (res) {
16350                if (res.status.trim() == "success") {
16351                    createOptoutModal($form, '.optout-success-msg');
16352                    showModal();
16353                    // $(".response-message .response-text.success").show();
16354                    // $(".response-message .response-text.error").hide();
16355                    console.log("optout form submit Success");
16356                    if (window._satellite) {
16357                         _satellite.track('Form Success');
16358                     }
16359                    // $('.inspire-modal-container, .success-text').show();
16360
16361                    // $('.failure-text').hide();
16362                    resetFormoptout($form);
16363                }
16364                else if (res.status.trim() == "failure") {
16365                    createOptoutModal($form, '.optout-error-msg');
16366                    showModal();
16367                    // $(".response-message .response-text.success").hide();
16368                    // $(".response-message .response-text.error").show();
16369                    console.log("optout form submit Failure");
16370                    // $('.inspire-modal-container, .failure-text').show();
16371
16372                    // $('.success-text').hide();
16373                    resetFormoptout($form);
16374                    /**
16375                     * if there is server side error then reset captcha if exist
16376                     */
16377                    if ($('.g-recaptcha').length) {
16378                        grecaptcha.reset();
16379                    }
16380
16381                    $form.find('[type="submit"]').prop("disabled", false);
16382                }
16383                else {
16384                    $form.find('[type="submit"]').prop("disabled", false);
16385                }
16386            })
16387                .fail(function () {
16388                    if ($('.g-recaptcha').length) {
16389                        grecaptcha.reset();
16390                    }
16391                    $form.find('[type="submit"]').prop("disabled", false);
16392                })
16393                .always(function () {
16394                    $form.parent().find('.form-loading:visible').remove();
16395                })
16396        }
16397        else {
16398            $form.parent().find('.form-loading').remove();
16399        }
16400
16401        return false;
16402    }
16403
16404    function requiredValidationoptout($form) {
16405        var errorFlag = false;
16406        var inputSelector = 'input[required]:visible';
16407
16408        $.each($form.find(inputSelector), function (index, input) {
16409            var $input = $(input);
16410            /**
16411             * if the field value is empty displaing error
16412             */
16413
16414            if (!$input.val()) {
16415                errorFlag = true;
16416                displayErrorOptout($input, 'required');
16417            } else {
16418                removeErrorOptout($input);
16419            }
16420
16421        });
16422        return errorFlag;
16423    }
16424    // -----------------------****************************--------------------------
16425    function patternValidationoptout($form) {
16426        var errorFlag = false;
16427        $.each($form.find('input[pattern]:visible'), function (index, input) {
16428            var $input = $(input);
16429            if ($input.val()) {
16430                try {
16431                    var pattern = new RegExp($input.attr('pattern'));
16432                    /**
16433                     * if the pattern is wrong displaying error
16434                     */
16435                    if (pattern.test($input.val())) {
16436                        // $input.next().css('visibility', 'hidden');
16437                        removeErrorOptout($input);
16438
16439                    } else {
16440                        errorFlag = true;
16441                        // $input.next().css('visibility', 'visible');
16442                        displayErrorOptout($input, 'pattern');
16443                    }
16444                }
16445                catch (e) {
16446                    console.error("invaild pattern (Regular Expression )", $input.attr('pattern'));
16447                    console.error(e);
16448                }
16449
16450            } else {
16451                // $input.next().css('visibility', 'visible');
16452                displayErrorOptout($input, 'required');
16453            }
16454        })
16455        return errorFlag;
16456    }
16457
16458    function displayErrorOptout(input, errorType, $form) {
16459        // const $input = $(input);
16460        let errorMessage = '';
16461        if (errorType === 'required') {
16462            errorMessage = input.data('requiredMessage');
16463
16464        } else if (errorType === 'pattern') {
16465            errorMessage = input.data('patternMessage');
16466        }
16467        input.next().html(errorMessage);
16468        input.next().css('visibility', 'visible');
16469
16470    }
16471
16472    function removeErrorOptout(input, $form) {
16473
16474        // input.siblings('.error-text').hide();
16475        // const $input = $(input);
16476        input.next().css('visibility', 'hidden');
16477
16478    }
16479    function validateCaptchaoptout() {
16480        if ($('.g-recaptcha').length > 0) {
16481            if (!grecaptcha) return false;
16482            let captchaResponse;
16483            /**
16484             * if reCaptcha is created dynamically then in widgetId reCaptcha reference will be set.
16485             */
16486            captchaResponse = grecaptcha.getResponse();
16487            if (captchaResponse.length == 0) {
16488                $('.g-recaptcha').css("border", "1px Solid #e76468");
16489                // $('.g-recaptcha + .error-text').show();
16490                return false;
16491            } else {
16492                $('.g-recaptcha').css("border", "none");
16493                // $('.g-recaptcha + .error-text').hide();
16494                return true;
16495            }
16496        } else {
16497            return true;
16498        }
16499    }
16500    // Global recaptchaCallback
16501    recaptchaCallback = function () {
16502        // Specific to iOS
16503        if (navigator.userAgent.match(/(iPhone|iPod|iPad)/i)) {
16504            // Scroll recaptcha back into view to fix iOS scrolling bug
16505            $('.g-recaptcha').get(0).scrollIntoView(true);
16506            window.scrollBy(0, -50);
16507        }
16508
16509        // $('#optout-submit-btn').prop("disabled", false);
16510
16511        let captchaResponse = grecaptcha.getResponse();
16512
16513        if (captchaResponse.length == 0) {
16514            $('.g-recaptcha').css("border", "1px Solid #e76468");
16515            // $('.g-recaptcha + .error-text').show();
16516            // return false;
16517        } else {
16518            $('.g-recaptcha').css("border", "none");
16519            // $('.g-recaptcha + .error-text').hide();
16520            // return true;
16521        }
16522    }
16523
16524    function resetFormoptout($form) {
16525        document.getElementById("optout--form").reset();
16526        $('#optout-submit-btn').prop('disabled', true);
16527        grecaptcha.reset();
16528    }
16529});
16530$(document).on('change blur','#hcm-first-name',function(event){
16531			var $this = $(this);
16532			showOrHideErrorHCM($this, false);
16533
16534		});
16535		$(document).on('change blur','#hcm-last-name',function(event){
16536			var $this = $(this);
16537			showOrHideErrorHCM($this, false);
16538		});
16539		$(document).on('change blur','#hcm-hospital-name',function(event){
16540			var $this = $(this);
16541			showOrHideErrorHCM($this, false);
16542		});
16543		
16544		function showOrHideErrorHCM($input,validatePattern){
16545			if (!$input.val()) {
16546				  errorFlag = true;
16547				  displayErrorHCM({
16548					"field": $input,
16549					"class": ".required"
16550				  });
16551				} else {
16552				  removeErrorHCM({
16553					"field": $input,
16554					"class": ".required"
16555				  });
16556				}
16557			if ($input.val() && validatePattern) {
16558				  try {
16559					var pattern = new RegExp($input.attr('pattern'));
16560					if (pattern.test($input.val())) {
16561					  removeErrorHCM({
16562						"field": $input,
16563						"class": ".pattern"
16564					  });
16565					} else {
16566					  errorFlag = true;
16567					  displayErrorHCM({
16568						"field": $input,
16569						"class": ".pattern"
16570					  });
16571					}
16572				  }
16573				  catch(e){
16574					console.error("in vaild pattren (Regular Expression )",$input.attr('pattern'));
16575					console.error(e);
16576				  }
16577				} else {
16578				  removeErrorHCM({
16579					"field": $input,
16580					"class": ".pattern",
16581					"dontRemoveBorder": true
16582				  });
16583				}
16584		}
16585
16586		$(document).on('change blur','#hcm-email-address',function(event){
16587			var $this = $(this);
16588			removeErrorHCM({
16589				"field": $this,
16590				"class": ".match"
16591			});
16592			showOrHideErrorHCM($this, true);
16593			if($this.val() && $('#hcm-confirm-email-address').val() && !($(this).siblings('.error-text.pattern').is(":visible") || $(this).siblings('.error-text.required').is(":visible")) && ($this.val() != $('#hcm-confirm-email-address').val())) {
16594				$('.camzyoshcm-submit-btn').attr("disabled", true);
16595				displayErrorHCM({
16596					"field": $this,
16597					"class": ".match"
16598				});
16599			} else if($(this).siblings('.error-text.pattern').is(":visible") || $(this).siblings('.error-text.required').is(":visible")) {
16600				// do nothing
16601			} else {
16602				$('.camzyoshcm-submit-btn').attr("disabled", false);
16603				removeErrorHCM({
16604					"field": $this,
16605					"class": ".match"
16606				});
16607				removeErrorHCM({
16608					"field": $('#hcm-confirm-email-address'),
16609					"class": ".match"
16610				});
16611			}
16612		});
16613			$(document).on('change blur','#hcm-confirm-email-address',function(event){
16614				var $this = $(this);
16615				removeErrorHCM({
16616					"field": $this,
16617					"class": ".match"
16618				});
16619				showOrHideErrorHCM($this, true);
16620				if($this.val() && $('#hcm-email-address').val() && !($(this).siblings('.error-text.pattern').is(":visible") || $(this).siblings('.error-text.required').is(":visible")) && ($this.val() != $('#hcm-email-address').val())) {
16621					$('.camzyoshcm-submit-btn').attr("disabled", true);
16622					displayErrorHCM({
16623						"field": $this,
16624						"class": ".match"
16625					});
16626				} else if($(this).siblings('.error-text.pattern').is(":visible") || $(this).siblings('.error-text.required').is(":visible")) {
16627					// do nothing
16628				} else {
16629					$('.camzyoshcm-submit-btn').attr("disabled", false);
16630					removeErrorHCM({
16631						"field": $this,
16632						"class": ".match"
16633					});
16634					removeErrorHCM({
16635						"field": $('#hcm-email-address'),
16636						"class": ".match"
16637					});
16638				}
16639			});	
16640
16641			$(document).on('click','.camzyoshcm-submit-btn',function(event){
16642				$(event.currentTarget).prop("disabled",true);
16643				if(!submitEventListenerHCM($(event.currentTarget).parents('form'))){
16644				  event.preventDefault();
16645				}
16646				formChangeEventListenerHCM($(event.currentTarget).parents('form'));
16647			});
16648			
16649			$(document).on('click','.hcm-success',function(event){
16650                 window.location.href= $(this).attr('data-path');
16651            });
16652
16653			function requiredValidationHCM($form) {
16654			  var errorFlag = false;
16655			  var inputSelector = 'input[required]:visible';
16656			  $.each($form.find(inputSelector), function(index, input) {
16657				var $input = $(input);
16658				if (!$input.val()) {
16659				  errorFlag = true;
16660				  displayErrorHCM({
16661					"field": $input,
16662					"class": ".required"
16663				  });
16664				} else {
16665				  removeErrorHCM({
16666					"field": $input,
16667					"class": ".required"
16668				  });
16669				}
16670			  })
16671			  return errorFlag;
16672			}
16673			
16674			function displayErrorHCM(args, $form) {
16675			  args.field.addClass('form-error');
16676			  if (args.field.prop('type') == "checkbox") {
16677				args.field.parent().parent().siblings(args.class).show();
16678			  } else if($("form").hasClass('bms-relaunch')){
16679				args.field.nextAll(args.class).show();
16680			  } else{
16681				args.field.siblings("label").children(args.class).show();
16682			  }
16683			}
16684
16685			function removeErrorHCM(args, $form) {
16686			  if (!args.dontRemoveBorder) {
16687				args.field.removeClass('form-error');
16688			  }
16689			  if (args.field.prop('type') == "checkbox") {
16690				args.field.parent().parent().siblings(args.class).hide();
16691			  } else if($("form").hasClass('bms-relaunch')){
16692				args.field.nextAll(args.class).hide();
16693			  } else{
16694				args.field.siblings("label").children(args.class).hide();
16695			  }
16696			}
16697			
16698			function patternValidationHCM($form) {
16699			  var errorFlag = false;
16700			  $.each($form.find('input[pattern]:visible'), function(index, input) {
16701				var $input = $(input);
16702				if ($input.val()) {
16703				  try {
16704					var pattern = new RegExp($input.attr('pattern'));
16705					/**
16706					 * if the pattern is wrong displaing error
16707					 */
16708					if (pattern.test($input.val())) {
16709					  removeErrorHCM({
16710						"field": $input,
16711						"class": ".pattern"
16712					  });
16713					} else {
16714					  errorFlag = true;
16715					  displayErrorHCM({
16716						"field": $input,
16717						"class": ".pattern"
16718					  });
16719					}
16720				  }
16721				  catch(e){
16722					/**
16723					 * if the given pattern is wrong.
16724					 */
16725					console.error("in vaild pattren (Regular Expression )",$input.attr('pattern'));
16726					console.error(e);
16727				  }
16728				} else {
16729				  /**
16730				   * remove pattern error because required error as to be dispalyed
16731				   */
16732				  removeErrorHCM({
16733					"field": $input,
16734					"class": ".pattern",
16735					"dontRemoveBorder": true
16736				  });
16737				}
16738			  })
16739			  return errorFlag;
16740			}
16741
16742			function validateCaptchaHCM() {
16743			  if($('.g-recaptcha').length > 0){
16744				if(!grecaptcha) return false;
16745				let captchaResponse;
16746				/**
16747				 * if reCaptcha is created dynamically then in global.widgetId reCaptcha reference will be set.
16748				 */
16749				if(global.widgetId)
16750				  captchaResponse = grecaptcha.getResponse(global.widgetId);
16751				else
16752				  captchaResponse = grecaptcha.getResponse();
16753
16754				if (captchaResponse.length == 0) {
16755				  if($("form").hasClass('bms-relaunch')){
16756					$('.g-recaptcha').css("border", "2px solid #BE2BBB");
16757				  } else {
16758					$('.g-recaptcha').css("border", "1px solid #CC0000");
16759				  }
16760				  $('.g-recaptcha').addClass("form-error");
16761				  return false;
16762				} else {
16763				  $('.g-recaptcha').addClass("form-error");
16764				  $('.g-recaptcha').css("border", "0px");
16765				  return true;
16766				}
16767			  }else{
16768				return true;
16769			  }
16770			}
16771			
16772			function submitEventListenerHCM(selector) {
16773			   let $form = $(selector);
16774			   let isrequiredValidationHCM = requiredValidationHCM($form);
16775			   let ispatternValidationHCM = patternValidationHCM($form);
16776			   //let isValidCaptcha = validateCaptchaHCM();
16777			   let finalFormvalidationState = false;
16778			   if (isrequiredValidationHCM || ispatternValidationHCM ) {
16779				 finalFormvalidationState = false;
16780			   } else {
16781				 finalFormvalidationState =  true;
16782			   }
16783
16784			   if(finalFormvalidationState){
16785			   $form.parent().append('<div class="form-loading"><i class="icon icon-spinner"><svg width="120px" height="120px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" class="uil-default"><rect x="0" y="0" width="100" height="100" fill="none" class="bk"></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(0 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0s" repeatCount="indef
16785inite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(45 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.15s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(90 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.3s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(135 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.44999999999999996s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(180 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.6s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(225 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.75s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(270 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.8999999999999999s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(315 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="1.05s" repeatCount="indefinite"></animate></rect></svg></i></div>');
16786				$.post($form.find('[type="submit"]').attr('formaction'),$form.serializeArray(),function(res){
16787					if(res.status.trim() == "success"){
16788					  $('#myModal').modal({backdrop: 'static', keyboard: false}, 'show');
16789					}
16790					else if(res.status.trim() == "failure") {
16791					  /*if($('.g-recaptcha').length){
16792						grecaptcha.reset();
16793					  }*/
16794					  $form.find('[type="submit"]').prop("disabled",false);
16795					  $('#myModalFailure').modal({backdrop: 'static', keyboard: false}, 'show');
16796					}
16797					else {
16798					  $form.find('[type="submit"]').prop("disabled",false);
16799					}
16800				  })
16801				  .fail(function() {
16802					if($('.g-recaptcha').length){
16803					  grecaptcha.reset();
16804					}
16805					$form.find('[type="submit"]').prop("disabled",false);
16806				  })
16807				  .always(function(){
16808					$form.parent().find('.form-loading').remove();
16809				  })
16810			   }
16811			   else{
16812				$form.parent().find('.form-loading').remove();
16813				$('html, body').animate({
16814					scrollTop: $('.error-text:visible').offset().top - 100
16815				  }, 2000);
16816			   }
16817
16818			   return false;
16819			 }
16820		
16821			function formChangeEventListenerHCM(selector) {
16822			  let $form = $(selector);
16823			  $.each($form.find('input'), function(index, input) {
16824				var $input = $(input);
16825				$input.on('change keyup', function(event) {
16826				  var $this = $(this);
16827				  $form.find('[type="submit"]').attr("disabled", false);
16828				  removeErrorHCM({
16829					"field": $this,
16830					"class": ".required"
16831				  });
16832				  removeErrorHCM({
16833					"field": $this,
16834					"class": ".pattern"
16835				  });
16836				})
16837			  });
16838			}
16839$(document).ready(function () {
16840    init();
16841    $("#popup-message,#popup").on("click", function (e) {
16842      e.target.id == "popup" || e.target.id == "popup-message"
16843        ? $(this).hide()
16844        : "";
16845         modalContainer.style.display = "none";
16846        resetForminquiry();
16847    });
16848    $(document).keyup(function (ev) {
16849      if (ev.keyCode == 27) {
16850        $("#popup-message").hide();
16851        $("#popup").hide();
16852        modalContainer.style.display = "none";
16853        resetForminquiry();
16854      }
16855    });
16856  $(".inquiry-input-text").focus(function (event) {
16857      $(this).removeClass("error");
16858      removeErrorinquiry($(this));
16859      $(this).removeClass("success-msg");
16860    });
16861    $(".inquiry-input-text").blur(function (event) {
16862      //$(this).addClass("success-msg");
16863      if ($(this).val() == "" && $(this).prop("required")) {
16864        displayErrorinquiry($(this), "required");
16865  
16866        $(this).addClass("error");
16867      } else if ($(this).attr("pattern")) {
16868        validatePaterninquiry($(this));
16869      } else{
16870		  $(this).addClass("success-msg");
16871	  }
16872    });
16873  
16874    $("#inquiry-reset-btn").click(function (event) {
16875      $("#inquiry-submit-btn").prop("disabled", true);
16876      $(".inquiry-error-text").css("visibility", "hidden");
16877    });
16878  
16879    $("textarea.inquiry-input-text").on("focusout", function () {
16880      let char = parseInt($(this).val().length);
16881      let maxlength = parseInt($(this).attr("maxlength"));
16882      $(this).next().next().text(`${char}/${maxlength}`);
16883      if (char == 0) {
16884          $(this).removeClass("success-msg");
16885        $(this).next().css("visibility", "visible");
16886      } else {
16887        $(this).next().css("visibility", "hidden");
16888      }
16889    });
16890    $("textarea.inquiry-input-text").on("input", function () {
16891      let char = parseInt($(this).val().length);
16892      let maxlength = parseInt($(this).attr("maxlength"));
16893      $(this).next().next().text(`${char}/${maxlength}`);
16894    });
16895  
16896    function validatePaterninquiry(input) {
16897      var errorFlag = false;
16898      var $input = $(input);
16899      if ($input.val()) {
16900        try {
16901          var pattern = new RegExp($input.attr("pattern"));
16902          /**
16903           * if the pattern is wrong displaying error
16904           */
16905          if (pattern.test($input.val())) {
16906            $input.removeClass("error");
16907			$input.addClass("success-msg");
16908            removeErrorinquiry(input);
16909          } else {
16910            errorFlag = true;
16911            $input.addClass("error");
16912            displayErrorinquiry(input, "pattern");
16913          }
16914        } catch (e) {
16915          console.error(
16916            "invaild pattern (Regular Expression )",
16917            $input.attr("pattern")
16918          );
16919          console.error(e);
16920        }
16921      } else {
16922        $input.addClass("error");
16923        $input.next().css("visibility", "visible");
16924      }
16925      return errorFlag;
16926    }
16927    function init() {
16928      $(document).on("click", "#inquiry-submit-btn", function (event) {
16929        //$(event.currentTarget).prop("disabled",true);
16930  
16931        if (!submitEventListenerinquiry($(event.currentTarget).parents("form"))) {
16932          event.preventDefault();
16933        }
16934        //formChangeEventListener($(event.currentTarget).parents('form'));
16935      });
16936    }
16937  
16938    function scrollToFirstInvalidControlInquiry() {
16939         $('html, body').animate({
16940                scrollTop: $("form.inquiry-form .inquiry-error-text:visible").offset().top-350
16941            });
16942
16943    }
16944  
16945   
16946   
16947    function inquiryModalHandlers() {
16948       document
16949      .querySelector("#close-button-sbc-success1")
16950      .addEventListener("click", (event) => {
16951        let modalContainer = document.querySelector("#popup");
16952        // if (event.target == modalContainer) {
16953        modalContainer.style.display = "none";
16954         resetForminquiry();
16955        // }
16956      });
16957    document
16958      .querySelector("#close-button-sbc-fail1")
16959      .addEventListener("click", (event) => {
16960        let modalContainer = document.querySelector("#popup-message");
16961        //if (event.target == modalContainer) {
16962        modalContainer.style.display = "none";
16963         resetForminquiry();
16964        // }
16965      });
16966    document
16967      .querySelector("#close-button-sbc-success2")
16968      .addEventListener("click", (event) => {
16969        let modalContainer = document.querySelector("#popup");
16970        // if (event.target == modalContainer) {
16971        modalContainer.style.display = "none";
16972        resetForminquiry();
16973        // }
16974      });
16975    document
16976      .querySelector("#close-button-sbc-fail2")
16977      .addEventListener("click", (event) => {
16978        let modalContainer = document.querySelector("#popup-message");
16979        //if (event.target == modalContainer) {
16980        modalContainer.style.display = "none";
16981        resetForminquiry();
16982        // }
16983      });
16984  }
16985  
16986    function submitEventListenerinquiry(selector) {
16987      let $form = $(selector);
16988      let isRequiredValidation = requiredValidationinquiry($form);
16989      let isPatternValidation = patternValidationinquiry($form);
16990      // let istextAreaValidation = requiredValidationinquiry($form);
16991      let isValidCaptcha = validateCaptchainquiry();
16992      let finalFormvalidationState = false;
16993      console.log(isRequiredValidation, ": isRequiredValidation");
16994      console.log(isPatternValidation, ": isPatternValidation");
16995      // console.log(istextAreaValidation, ': istextAreaValidation');
16996      console.log(isValidCaptcha, ": isValidCaptcha");
16997      if (isRequiredValidation || isPatternValidation || !isValidCaptcha) {
16998        //if (isRequiredValidation || isPatternValidation) {
16999        finalFormvalidationState = false;
17000        scrollToFirstInvalidControlInquiry();
17001      } else {
17002        finalFormvalidationState = true;
17003      }
17004  
17005      if (finalFormvalidationState) {
17006        $form
17007          .parent()
17008          .append(
17009            '<div class="form-loading"><i class="icon icon-spinner"><svg width="120px" height="120px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" class="uil-default"><rect x="0" y="0" width="100" height="100" fill="none" class="bk"></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(0 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0s" repeatCount="indef
17009inite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(45 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.15s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(90 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.3s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(135 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.44999999999999996s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(180 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.6s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(225 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.75s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(270 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.8999999999999999s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#757575" transform="rotate(315 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="1.05s" repeatCount="indefinite"></animate></rect></svg></i></div>'
17010          );
17011  
17012        $.post(
17013          $form.find('[type="submit"]').attr("formaction"),
17014          $form.serializeArray(),
17015          function (res) {
17016            if (res.status.trim() == "success") {
17017              //createinquiryModal($form, ".inquiry-success-msg");
17018              document.getElementById("popup").style.display = "block";
17019              inquiryModalHandlers();
17020              //showModal();
17021             
17022              // $(".response-message .response-text.success").show();
17023              // $(".response-message .response-text.error").hide();
17024              console.log("inquiry form submit Success");
17025              // if (window._satellite) {
17026              //     _satellite.track('Form Success');
17027              // }
17028              // $('.inspire-modal-container, .success-text').show();
17029  
17030              // $('.failure-text').hide();
17031              resetForminquiry($form);
17032            } else if (res.status.trim() == "failure") {
17033              //createinquiryModal($form, ".inquiry-error-msg");
17034              document.getElementById("popup-message").style.display = "block";
17035              inquiryModalHandlers();
17036              //showModal();
17037              // $(".response-message .response-text.success").hide();
17038              // $(".response-message .response-text.error").show();
17039              console.log("inquiry form submit Failure");
17040              // $('.inspire-modal-container, .failure-text').show();
17041
17042              // $('.success-text').hide();
17043              resetForminquiry($form);
17044              /**
17045               * if there is server side error then reset captcha if exist
17046               */
17047  
17048              if ($(".g-recaptcha").length) {
17049                grecaptcha.reset();
17050              }
17051  
17052              $form.find('[type="submit"]').prop("disabled", false);
17053            } else {
17054              $form.find('[type="submit"]').prop("disabled", false);
17055            }
17056          }
17057        )
17058          .fail(function () {
17059            if ($(".g-recaptcha").length) {
17060              grecaptcha.reset();
17061            }
17062            $form.find('[type="submit"]').prop("disabled", false);
17063          })
17064          .always(function () {
17065            $form.parent().find(".form-loading:visible").remove();
17066          });
17067      } else {
17068        $form.parent().find(".form-loading").remove();
17069      }
17070    }
17071  
17072    function requiredValidationinquiry($form) {
17073      var errorFlag = false;
17074      var inputSelector = "input[required]:visible, textarea[required]:visible";
17075  
17076      $.each($form.find(inputSelector), function (index, input) {
17077        var $input = $(input);
17078        /**
17079         * if the field value is empty displaing error
17080         */
17081  
17082        if (!$input.val()) {
17083          errorFlag = true;
17084          displayErrorinquiry($input, "required");
17085
17086          $input.addClass("error");
17087        } else {
17088          removeErrorinquiry($input);
17089		  $input.addClass("success-msg");
17090        }
17091        
17092      });
17093      return errorFlag;
17094    }
17095    // -----------------------****************************--------------------------
17096    function patternValidationinquiry($form) {
17097      var errorFlag = false;
17098      $.each($form.find("input[pattern]:visible"), function (index, input) {
17099        var $input = $(input);
17100        if ($input.val()) {
17101          try {
17102            var pattern = new RegExp($input.attr("pattern"));
17103            /**
17104             * if the pattern is wrong displaying error
17105             */
17106            if (pattern.test($input.val())) {
17107              removeErrorinquiry($input);
17108              $input.removeClass("error");
17109            } else {
17110              errorFlag = true;
17111              $input.addClass("error");
17112              displayErrorinquiry($input, "pattern");
17113            }
17114          } catch (e) {
17115            console.error(
17116              "invaild pattern (Regular Expression )",
17117              $input.attr("pattern")
17118            );
17119            console.error(e);
17120          }
17121        } else {
17122          $input.addClass("error");
17123          displayErrorinquiry($input, "required");
17124        }
17125      });
17126      return errorFlag;
17127    }
17128  
17129    function displayErrorinquiry(input, errorType, $form) {
17130      // const $input = $(input);
17131      let errorMessage = "";
17132      if (errorType === "required") {
17133        errorMessage = input.data("requiredMessage");
17134      } else if (errorType === "pattern") {
17135        errorMessage = input.data("patternMessage");
17136      }
17137      input.next().html(errorMessage);
17138      input.next().css("visibility", "visible");
17139    }
17140  
17141    function removeErrorinquiry(input, $form) {
17142      //$(input).addClass("success-msg");
17143      // input.siblings('.error-text').hide();
17144      // const $input = $(input);
17145      // span('class').css('visibility', 'hidden');
17146      input.next().css("visibility", "hidden");
17147    }
17148    function validateCaptchainquiry() {
17149      if ($(".g-recaptcha").length > 0) {
17150        if (!grecaptcha) return false;
17151        let captchaResponse;
17152        /**
17153         * if reCaptcha is created dynamically then in widgetId reCaptcha reference will be set.
17154         */
17155        captchaResponse = grecaptcha.getResponse();
17156        if (captchaResponse.length == 0) {
17157          $(".g-recaptcha").css("border", "1px Solid #e76468");
17158          // $('.g-recaptcha + .error-text').show();
17159          return false;
17160        } else {
17161          $(".g-recaptcha").css("border", "none");
17162          // $('.g-recaptcha + .error-text').hide();
17163          return true;
17164        }
17165      } else {
17166        return true;
17167      }
17168    }
17169    // Global recaptchaCallback
17170    recaptchaCallback = function () {
17171      // Specific to iOS
17172      if (navigator.userAgent.match(/(iPhone|iPod|iPad)/i)) {
17173        // Scroll recaptcha back into view to fix iOS scrolling bug
17174        $(".g-recaptcha").get(0).scrollIntoView(true);
17175        window.scrollBy(0, -50);
17176      }
17177  
17178      // $('#inquiry-submit-btn').prop("disabled", false);
17179  
17180      let captchaResponse = grecaptcha.getResponse();
17181  
17182      if (captchaResponse.length == 0) {
17183        $(".g-recaptcha").css("border", "1px Solid #e76468");
17184        // $('.g-recaptcha + .error-text').show();
17185        // return false;
17186      } else {
17187        $(".g-recaptcha").css("border", "none");
17188        // $('.g-recaptcha + .error-text').hide();
17189        // return true;
17190      }
17191    };
17192
17193    function resetForminquiry($form) {
17194      document.getElementById("inquiry--form").reset();
17195      $("#inquiry-submit-btn").prop("disabled", false);
17196      document.getElementsByClassName("inquiry-input-text");
17197      $("textarea.inquiry-input-text").next().next().text("0/255");
17198      $(".inquiry-input-text").removeClass("success-msg");
17199      grecaptcha.reset();
17200  
17201    }
17202  });
17203
17204var arrVideos=$(".mode_video_static_container");
17205var isModeVideoDynamic=$(".mode_video_dynamic_container").length>0;
17206var inputValue = $("#preference-selection").val() || "dynamic";
17207$(document).ready(function(){
17208
17209	
17210// Popup logic for feedback consent
17211if ($('.mode_header.header_fix').hasClass('showconsentpopup')) {
17212    try {
17213        if (!localStorage.getItem('consentpopupshown')) {
17214            let journeyStartTime = localStorage.getItem('journeyStartTime');
17215            let cumulativeJourneyTime = parseInt(localStorage.getItem('cumulativeJourneyTime')) || 0;
17216
17217            const waitTime = $('.mode_header.header_fix .feedback-form .wait-time').text() || "120";
17218            const surveyHeading = $('.mode_header.header_fix .feedback-form .survey-heading').text() || "data:image/gif;base64,R0lGODlhAQABAIAAAAABAAEAAAAAAABAAEAAAIBRAA7";
17219			const surveyHeadingAlt = $('.mode_header.header_fix .feedback-form .survey-heading-alt').text() || "";
17220            const readyForSurveyText = $('.mode_header.header_fix .feedback-form .ready-survey-text').html() || "Please take a few minutes to share your feedback with us.";
17221            const yesButtonText = $('.mode_header.header_fix .feedback-form .yes-button-text').text() || "Yes, I'll participate";
17222            const yesButtonURL = $('.mode_header.header_fix .feedback-form .yes-button-url').text() || "#";
17223            const noButtonText = $('.mode_header.header_fix .feedback-form .no-button-text').text() || "No, thanks.";
17224            const thankYouMessage = $('.mode_header.header_fix .feedback-form .thank-you-message').html() || "Thank you for agreeing to participate in the survey.";
17225
17226            const JOURNEY_TIME_THRESHOLD = parseInt(waitTime) * 1000;
17227            const CHECK_INTERVAL = 1000;
17228
17229            if (!journeyStartTime) {
17230                journeyStartTime = new Date().toISOString();
17231                localStorage.setItem('journeyStartTime', journeyStartTime);
17232            }
17233
17234            let lastTimestamp = performance.now();
17235            const intervalId = setInterval(function () {
17236                const currentTimestamp = performance.now();
17237                const timeSpent = currentTimestamp - lastTimestamp;
17238                cumulativeJourneyTime += timeSpent;
17239                localStorage.setItem('cumulativeJourneyTime', cumulativeJourneyTime);
17240                lastTimestamp = currentTimestamp;
17241
17242                if (cumulativeJourneyTime >= JOURNEY_TIME_THRESHOLD) {
17243                    clearInterval(intervalId);
17244
17245                    // Capture date/time and time difference
17246                    const currentTime = new Date();
17247                    const localstorageTime = new Date(journeyStartTime);
17248                    const currentDateTime = currentTime.toISOString();
17249                    const timeDifference = currentTime - localstorageTime;
17250                    localStorage.setItem('popupTriggerDateTime', currentDateTime);
17251                    localStorage.setItem('journeyTimeDifference', timeDifference);
17252
17253                    // Create modal
17254                    var yesClicked = false;
17255                    var thankYouWindow = null;
17256                    function disableBodyScroll() {
17257                        const scrollY = window.scrollY;
17258
17259                        $('body').css({
17260                            'position': 'fixed',
17261                            'width': '100%',
17262                            'top': `-${scrollY}px`,
17263                            'overflow-y': 'scroll'
17264                        }).attr('data-scroll-position', scrollY);
17265                    }
17266
17267
17268                    function enableBodyScroll() {
17269                        const scrollY = parseInt($('body').attr('data-scroll-position') || '0');
17270
17271                        $('body').css({
17272                            'position': '',
17273                            'width': '',
17274                            'top': '',
17275                            'overflow-y': ''
17276                        }).removeAttr('data-scroll-position');
17277
17278                        window.scrollTo(0, scrollY);
17279                    }
17280
17281                    const modalContainer = $('<div>', {
17282                        id: 'feedbackConsentModal'
17283                    });
17284
17285                    const modalContent = $('<div>', {
17286                        html: `
17287                        <div class="feedback-popup-container">
17288                            <div class="feedback-popup-header">
17289                                <span class="feedback-popup-image"><img src=${surveyHeading} alt=\'${surveyHeadingAlt}\'></span>
17290                            </div>
17291                            <p class="feedback-popup-content"></p>
17292                            <div class="feedback-popup-actions">
17293                                <button id="yesPopupButton" class="feedback-popup-button">${yesButtonText}</button>
17294                                <button id="noPopupButton" class="feedback-popup-button secondary">${noButtonText}</button>
17295                            </div>
17296                        </div>
17297                        `
17298                    });
17299
17300                    modalContainer.append(modalContent);
17301                    $('body').append(modalContainer);
17302					$('html').toggleClass('disable-page-scrolling');
17303					$('.feedback-popup-content').html(readyForSurveyText);
17304                    disableBodyScroll();
17305                    function closeModal() {
17306                        $('#feedbackConsentModal').remove();
17307                        enableBodyScroll();
17308                    }
17309
17310                    $(document).on('click', '#yesPopupButton', function() {
17311                        try {
17312                            localStorage.setItem('consentpopupshown', 'true');
17313                            yesClicked = true;
17314							$('html').toggleClass('disable-page-scrolling');
17315
17316                            thankYouWindow = window.open('', 'thankYouWindow', 'width=500,height=500');
17317                            if (thankYouWindow) {
17318                                thankYouWindow.document.write(`
17319                                    <!DOCTYPE html>
17320                                    <html>
17321                                    <head>
17322                                        <title>FeedBack</title>
17323                                        <style>
17324											@font-face {
17325												font-family: BMSHumanity;
17326												src: url("data:font/truetype;charset=utf-8;base64,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LuAvgDBgMYAyIDMAM+A0wDcgN4A4IDiAOSA5wDqgO4A8ID9AQCBCwEVgSEBLIEuAS+BMQE1gT0BP4FIAVCBWAFZgVwBX4FkAWiBawFsgW4AAMAdv/aA1f/3gPm/9IAFQDL/9oA3//ZAOH/zgEj/+MBKv/hAS7/4wE4/+MBQP/jAUP/4AFT/+MBVf/jAVv/3wFc/+MBbv/jAXD/2AFx/+MBjP/gAZL/0ANF/+ADS/+4A+D/2AAGAMv/9gDf//YA4f/sAO7//AD+//kBBP/2AAIAdv/dAHz/7wAHAHz/5gDh/9wBBP/rAXD/6ANL/7MDV//eA+D/2AAEAHb/8QB8//kA/v/5A1f/7gAhAFv/7AB8//QAlP/nAKn/+ACv/+4Awv/uAMX/7gDL/9UA3//VAOH/ywDu/+wA/v/ZAQT/0wEj/9cBKv/XAS7/1wE4/9cBQP/XAUP/0gFT/9cBVf/XAVv/2wFc/9cBbv/XAXD/3QFx/9cBkv/iA0v/wwNX/+wDfP/QA37/0APf/+QD4P/SABQAW//wAHb/+gCp//oA/v/mASP/+gEq//oBLv/6ATj/+gFA//oBQ//3AVP/+gFV//oBW//2AVz/+gFu//oBcP/1AXH/+gGM//ADfv/jA9//7AACA0n/6gNM/9gABwC0ACgAtQA8ALYANgC3ADwAuQAyALsAPwC9ACwABAC+AB4AvwAeAMAAHgDBAB4AAQNM/+wABwC0ACgAtQA8ALYANgC3ADwAuQAyALsAPwC9ACwABQD+//EDSf/jA0z/0QNb//UD5v+6AAUA/v/5AQT/9ANM/8EDW//2A+b/swADA0n/4gNM/8kD5v/PAAIA/v/1AQT//AAFAOH/8ADuAA0A/gAIAQT/+ANb//QAAgDh//ADTP/GAAEBjP/pAAED9v/1AAIBcP/yAYz/7wACA+b/7AP2//YAAwGM/+oBkv/qA+b/zwAEAXD/7gGS//QD9f/4A/b//AACAXD/8QPm/+sAAwGz//gBtP/2Abb/7QADAbP//QG0//oBtv/xAAMBs//9AbT/+wG2//YACQGe//cBoP/9AaH//AGi//wBowAWAaT//AGs//wBrv/8AbD/+QABAbb/8AACAbP/9gG0//YAAQGnAA0AAgGz//YBtP/3AAIBs//2AbT/9gADAbP/+wG0//0Btv/uAAMBs//1AbT/+QG2//IAAgGz//wBtP/9AAwBnv/7AaD//QGh//wBov/9AaT//QGs//0Brv/9AbD//AGzABQBtAANAbb//AG3//wAAwGz//wBtP/+Abb/8AAKAZ7/+AGg//oBof/6AaL/+gGk//oBrP/6Aa7/+gGzAAoBtAAQAbb/+wAKAZ7/7wGg//oBof/6AaL/+gGk//oBrP/6Aa7/+gGzAAsBtAAJAbb//AALAZ7/+QGg//sBov/8AaT//AGn//kBrP/9Aa7//QGw//4Bsv/8AbT//gG2//UACwGe//UBoP/7AaH/+wGi//sBpP/7Aaz/+wGu//sBswATAbQAFAG2AAQBt//9AAECLP/OAAECLP/OAAECLP/OAAQBuP/EAjX/sAJx/8QCuv+wAAcAqf/3AMv/4gDf/+AA4f/SAO7/9AD+/+MBBP/OAAIAdv/AAP7/7AAIAFv/5QH0/+wB/v/sAg//4gJ4/+gCf//pAoX/4gKZ/+wACAH0/+MB/v/tAg//5AIR/+cCeP/kAn//5AKF/9gCmf/vAAcB6v/sAfT/8QIP//cCeP/sAn//7AKF/+wCmf/2AAEAdv/QAAIAdv/PAHz/yAADAsH/9gLI//YCz//3AAQCwf/sAsT/9gLI//ECz//nAAQCwf/sAsT/9gLI/+wCz//sAAIAdv/sAHz/6QABAHb/zQABAYz/7AABAYz/4AABnfAABAAAAD8AiADaASwBMgE4AT4BmAJWAlwCxgMcAyIDKAMuAzQDYgN0A4YDoAPOBDAE9gT8BTIFrAW+BdwF5gXsBfIF+AX+BgwGEgYYBiIGSAZeBmQGagZwBnYGfAaWBqgGrgbIBtoHDAcaByQHOgdMB1oHfAeeB7AHxgfQB94H5Af6CAQAFAG4AAoB1f/VAev/2gHy/+wB9P/4AfX/9QIR/+oCIf/6AiT/+AIl//cCJ//mAjUAFQI7ABICUv/uAlz//gJe//wCZv/4Amf//QJo//sDSf+4ABQBvv/4AdT/8wHh//gB6//sAfr/8wH///UCEP/vAh3//QIn/+0CNf/9Ajv/+gI///oCQP/9Akf//AJR//cCUv/9Al7/+wJk//0CZv/6Amj/9QABAh8AMgABAh8AMgABAh8AMgAWAb7/+AHV//oB6//kAfT/+AH1/+0B+v/7Af7/+QH///gCBv/9Ag///AIR//cCG//8Ah3/+gIj//sCJ//vAjv/9wJH//UCUv/4Al7/+gJk//sCZv/8Amj/9AAvAbj/yAG+/7YBwv/nAcP/6wHK//EB1P/bAev/+QH0/+oB9f/1Afr/xQH+//EB///vAg//5QIQ/+4CEf/4Ahv/+AId//MCI//gAif/+QI1/8wCO//LAj//+AJA//kCQf/tAkL/7QJE/+0CR//tAkj/9QJK/+0CS//tAlH/6AJS//UCVP/tAlf/7QJZ/+0CXP/5Al7/8wJh/+8CY//tAmT/6wJm//wCZ//xAmj/+gNX/94DWf/qA1v/9gPf/+IAAQIfADIAGgG4//ABvv/tAcL/+QHD//cByv/8AdT/7AHh/+4B5//5Aev/7QH6/+oB
17326///yAhD/+QId//kCI//5Aif//gI1//ICO//vAkf/+QJR//UCUv/8Al7/+AJh//ACZv/7Amj/+QNX/+MDWf/jABUB1f/wAd//+gHr//oB8v/iAfT/7gH1/+0CD//3AhH/5gIg/+0CJP/4AiX/7QIn/94CR//vAlL/1gJf/+8CYf/4AmT/+wJm/+UCZ//uAmj/3gPf/+QAAQHv/9gAAQHv/9gAAQHv/9gAAQHv/9gACwG4//kBvv/3AcP/9wHV//gB6//uAfr/8AIG//oCEP/kAhH/8gId//ACJ//gAAQB9P/6Afr/6AId//ACJ//pAAQB7//YAif/7gJS//UCZv/8AAYB7//YAfr/+wH///oCEP/wAh3/8QIn/+cACwHv/9gCNf/6Ajv/7gI///YCQP/4Akf/+AJR/+UCUv/1Al7/9QJkAAsCaP/tABgCNf/vAjv/7gI///cCQP/3Akb/9QJN/+wCTv/wAk//8AJS//YCWP/sAlr/9QJe/+4CYf/rAmL/7AJk//gCZf/sAmj/8QM+/9gDP//YA0L/2ANX/+wDW//sA3L/7gN0/+4AMQG4/6UBvv+nAeT/6QHn/90B8v/kAfT/qQH1/9kB+v+aAf7/sgH//68CD/+9AhD/sQIR/7gCG/+1Ah3/tQIg/9sCI/+aAiX/8AIn/74CNf+PAjr/sAI7/5ICP/++AkD/tgJB/7ACQv+wAkT/sAJF/7ACR/+rAkj/sAJK/7ACS/+wAlH/pwJS/6kCVP+wAlb/ugJX/7ACWf+wAlv/sAJc/7ACXv+pAl//sAJh/64CY/+wAmT/pAJm/7ACZ/+sAmj/swPg/8QAAQIfADIADQH7//YB/P/2Af3/9gII//YCC//2Ag0AAAIOAAACHP/2Aib/9gIrAAACLAAAAi//9gIx//YAHgH0/8IB9f/cAfr/ugH7/8gB/P/IAf3/yAH+/+YB///iAgX/xAIG/+QCCP/IAgv/yAIP/8gCEf/cAhn/xAIb/8QCHP/IAh8AHgIj/9QCJv/IAiv/2AIs/9gCLv/EAi//yAIx/8gCNP/oAjv/zgJG/84CUP/kAlr/zgAEAh8AHgIr/9gCLP/YAlD/5AAHAdX/7gHr/9AB7/+4Aif/7AJS/9wCaP/nA0n/xAACA1n/6wNb//EAAQIs//sAAQIs//sAAQIs//sAAQIs//sAAwH6//0CEf/6Aif/9AABAiz/+wABAiz/+wACAfT//QIP//8ACQH6//YB/v/+Af///gIQ//QCHf/4Aif/9wNX/9wDWf/qA1v/+AAFAfT//AH1//ECD//7AhH//QIn//kAAQIs//sAAQIs//sAAQIs//sAAQIs//sAAQIn//YABgH0//0B9f/1Af7//gIP//4CI//+Aif//gAEAfr/8wH+//wCEf/3Aif/5gABAiz/+wAGAfr/+AH+//sB///6AhD/9QIR//oCJ//rAAQB9P/lAfr/zgIP/+8CI//rAAwB+//sAfz/7AH9/+wCCP/sAgv/7AIc/+wCJv/sAi7/5wIv/+wCMf/sA1cAAANZABQAAwM+/84DP//OA0L/zgACAif/7gNJ/84ABQJS/+UCaP/kA0n/uAOP/+wD9f/2AAQCO//6AlH/9wJe//wCaP/zAAMCO//5AlL/9gJo/+cACAI1/90CO//dAj//9wJA//gCR//rAlH/5QJo//0DSf/1AAgCNf/tAjv/4gI///kCQP/4Akf/+AJR/+wCXv/vAmj/8QAEAlL/6gJc//YCaP/rAm//5AAFAjX/+gI7//wCQP/9AlL/8AJo//IAAgNJ/8wDj//zAAMCaP/wA0n/zgOP//MAAQJo/+4ABQI1/8MCO//EAmH/5AJk//ACb//oAAICbP/gAm3/4AACAmj/9ANJ/8QAAZZkAAQAAAApAFwA1gGMAd4CXAK6AswDEgMwA1oDyARWBKQFUgXABjYGxAbaBuwG/gcEBxoHMAc+B1gHZgd0B6YHzAfeB/AIIgg4CGoIoAiyCNQI+gkoCUIJYAAeAnH/9gJ4//cCe//3An//9AKC//MCg//SAob/6wKH/+4Cmf/4Apz/5AKh/+wCpf/kAqj/1wK6//QCvf/0Ar//7ALE/+8Cxf/xAsf/9gLI//sCy//4Asz/+ALN/+ACz//8AtD/7ALR//MDRf/YA1f/2gNZ/+MDW//1AC0Ccf+8AnT/pgJ4/9ICe//FAnz/7QJ//9IChf/SApn/7AKh/6kCov+cAqP/mwKl/6YCqP+UArr/iQK7/5ICvP+SAr3/iAK+/5ICv/+SAsD/kgLB/40Cwv+SAsP/kgLE/4sCxf+OAsb/kgLH/6ICyP+IAsn/kgLK/5ICy/+kAsz/pALN/5QCz/+LAtD/iwLR/5MC0/+wAtT/3gLX/5MC2f+IAtr/kgLb/5IDRf/hA9//rwPg/70AFAJ4//cCf//4AoX/9wKH//sCuv/2Ar3/9wK///QCwf/pAsT/+QLF/+oCx//5Asj/6QLL//UCzP/1As3/2wLP/+EC0P/uAtH/4gLX/+cC2f/5AB8CeP/nAn//4AKF/+cCmf/zApz/+QKh/+ACov/4AqP/+AKl/9oCqP/mArv/9gK8//sCvv/7AsD/+wLB//ACwv/uAsP/+wLF//sCxv/7Asj/8ALJ//sCyv/7As3/9ALP/+YC0f/mAtP/9QLU//UC2v/4Atv/+APf/9kD4P/2ABcCcf/0Anb/5AJ7/+0Cgv/vAoP/1wKG/+UCh//1Apz/5AKh//MCpf/+Aqj/7gK6//ICvf/yAr//7gLE/+8Czf/uAtD/8gLZ/+8DRf/RA0n/7ANX/+EDWf/bA1v/7wAEAsH/8wLI//MCzf/oAs//7gARAnj/6QJ//9wChf/kAof/7wKZ/+YCnP/5AqH/4AKj/+kCpf/WAqj/5gLB/+4CyP/uAs3/4ALP/+oC1//vA9//2gPg//MABwK///QCwf/0Asj/8gLN/+QCz//2AtD/9gLR//YACgKh//ICpf/3Aqj/7gLB//YCyP/2As3/7ALP//wC0P/+AtH/+ALX//sAGwJx/+oCdv/eAnv/7AKC//ICg//PAob/4wKH//sCof/xAqX/9AKo/+gCuv/wAr3/8AK///ICwv/vAsT/8ALH//oCy//6Asz/+QLN//IC0P/rAtH/9QLZ/+8DRf/SA0n/7ANX/+QDWf/cA1v/9AAjAnH/0wJ2/+ECeP/5Anv/0wJ//+0Cgv/vAoP/6wKF//oChv/YAof/+wKZ//oCnP/VAqH/8wKi/+MCo//nAqX//gKo/+8Cuv/GAr3/xgK//+4Cwf/oAsL/8gLE/8ICyP/lAsv/+gLM//oCzf/9As//6ALQ/+gC1//pAtn/uwNF/84DV//ZA1n/3gNb/+wAEwJ4/+kCf//YAoX/6wKH//cCmf/cApz/9gKh/9sCo//tAqX/3AKo/+ICwf/sAsj/6QLN/9kCz//qAtH/2wLS//QC1//qA9//4APg//QAKwJx/8QCeP/aAnv/xgJ//9MChf/NAof//QKZ/88CnP/3AqH/sAKi/50Co/+lAqX/tQKo/70Cuv+wArv/ugK8/7oCvf+wAr7/ugK//7ICwP+6AsH/ugLC/7ACw/+6AsT/sALF/70Cxv/CAsf/yALI/8ICyf+6Asr/ugLL/80CzP/GAs3/uwLP/7AC0P+6AtH/uwLT/8UC1P/FAtf/uwLZ/7gC2v+7Atv/uwNF/9gAGwJx//ACdv/nAnv/8gKC/+cCg//OAob/5QKH//4CnP/iAqH//gKl//8CqP/3Arr/6gK9/+kCv//kAsT/5gLH//kCy//0Asz/9gLN//MC0P/rAtH//ALZ/+cDRf/YA0n/7QNX/9EDWf/fA1v/9AAdAnj/5wJ//+MChf/nAof/9AKZ/+UCof/mAqL/9AKj//ACpf/aAqj/5wK7/+gCvP/oAr7/6ALA/+gCwf/oAsL/8wLD/+gCxf/nAsb/6ALH//0CyP/qAsn/6ALK/+gCzf/UAs//7ALR/+QC1//qA9//2wPg//IAIwJx/9kCeP/1Anv/1AJ///ECgv/1AoP/+gKF//oChv/2Apn/8AKc//QCof/7AqL/5AKj/+gCqP/yArr/xAK7//ECvP/xAr3/xwK//+UCwP/sAsH/5QLC/+0Cw//sAsT/xALF/+ACxv/sAsj/7ALJ/+wCyv/sAs3/9gLP/+wC0P/sAtH/+wLX/+8C2f/EAAUCnP/4AqH/8gKl//ICqP/vA1n/2wAEApz/8gKh//ICpf/uAqj/7gAEApz/+wNX/+sDWf/sA1v/9gABAqj/9gAFApn/8wKh//ECpf/sAqj/9wPf/+8ABQKZ//sCnP/1AqH/7wKl//cCqP/zAAMCmf/+Apz/+AKj//wABgKc/+sCo//7Aqj/+wNX/9EDWf/iA1v/7AADApz/+QKj//0CqP/7AAMCnP/iAqH//gKj//0ADAK6//sCwf/7AsT//QLI//kCzP/9As3/4gLQ/+4C0f/1A4j/7wOK/+4DjP/vA4//7wAJArr/1gK9/9YCwf/iAsT/1gLF/+8CyP/pAs//3AP1/9gD9v/iAAQCwf/yAsj/8gLP/+kC0f/6AAQCwf/sAsj/7ALP/+0D9f/2AAwCuv/rAr//6gLE/+sCzP/3As3/5gLQ/+kC0f/3A
173260n/7AOI//YDiv/sA4z/7AOP/+wABQLB/+cCyP/oAs//5QLR//AD9f/tAAwCuv/tAr//7wLE//MCzP/4As3/3gLQ/+oC0f/8A0n/4gOI/+8Div/uA4z/6gOP/+kADQK6/90Cv//oAsH/+gLE/+QCyP/7Asz/+ALN//YCz//7AtD/6gLR//0DiP/tA4r/4wOM/98ABALB/+cCyP/nAs//5QLR//kACAK6/94Cwf/oAsT/3QLI/+MCz//kAtH//gP1/+ED9v/pAAkCuv/iAr//9gLB/+4CxP/gAsj/8QLP/+UC0f/8A/X/6QP2//QACwK6//gCv//zAsT/+ALM//gCzf/rAtD/7gNJ/+QDiP/2A4r/6QOM/+wDj//mAAYCwf/rAsj/6wLP/+8C0f/yA/X/7gP2//4ABwK6/9wCwf/7AsT/3QLI//0Czf/8As///ALQ/+8AAQKc//YAAo1UAAQAAJIYku4AJABTAAAACwAb//D/+v/w//r/8P/6//v//v+//+P/6v/1/9//+f/Q/+z/+v/8//sADv/x//v/2v/2//7/7//w/9v/xP/D//P/8//7//r/4//4/7n/8f/rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+4AAP/vAAoAAP/sAAAAAP/Y/88AAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9kAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/v/8sAAAAAAAAAAAAAAAAAAAAA/+AAAAAAAAD/5wAA/9v/6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/a/+z/2f/qAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6wAAAAD/9f/rAAD/9gAA//AAAAAAAAD/8AAA//D/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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/u/+7/7gAA/+L/7AAA//n/+v/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7gAAAAAAAAAAAAD/+wAA//sAAAAAAAAAAAAAAAAAAP/x//b/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+sAAP/sAAD/8wAAAAAAAAAAAAAAAAAA/+gAAP/jAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/0/+UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAP/2/+sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9sAAAAAAAAAAP/6/+4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+oAAAAAAAAAKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2ABQAAAAAAAD/6QAJ//sAAAAAAAAAAP/w//D/8P/w//AAAAAAAAAAAAAAAAAAAAAAAAAAAP/KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//QAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/w//D/8P/w//D/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmGkAAQAAGyAbRQAIABIAAD/6v/q/+r/6v/q/+r/pv/N/9L/0/+a/7r/pf+w/7j/wP+6/+r/lP/q/7X/ugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/OAAD/zgAA/84ABQAAAAAAAAAAAAoAAAAAAAD/7AAAAAAACP/O/+sACv+L/4D/4v/j/7T/sP+m//H/sP/O/+L/sv+w/7H/sP+y/8//zv/E/6f/xP/E//b/7P/O/7r/sP+p/6b/sP/s/7D/2P/Y/7D/4v/h/+4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/E/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/hAAD/yAAAAAD/7v/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+QAAP/h/9cAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/0v/d/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAP/y/+0AAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/5//s//X/+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/RAAD/xQAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAP/aAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/PAAD/yQAAAAAAAAAAAAAAAAAAAAAAAP/XAAAAAP/KAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/3gAA/+AAAP/VAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/j/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4v/s/+L/9v/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/4//QAAP/d//3/6f/4/+oAAP/xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/1gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+v/7//z/7f/8//f//P/6/+v/5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/9AAD/+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8v/0QAA/+3//f/d//r/zAAA//EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//H/7v/3/98AAP90AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/5QAA/+X/8//2AAD/4P/SAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//D/+v/qAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/vf+S/9QAAP+3AAD/rf+j/7z/rgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/sP+q/7H/qP+f/2wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7QAA/+0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/EAAD/2P/oAAAAAP/b/9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/bAAD/+gAA/+j/5P/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ugAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8gAAAAD/2QAA/+oAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAA/+sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/g/+X/1AAA/+MAAP/a//IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+7/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/i//EAAP/1AAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/3f/1AAD//AAA//v/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//j/9v/jAAAAAP/lAAD/+f/vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4v/v/+X/lAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/r//7/5gAAAAD/6AAAAAD/8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/5wAA/5IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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WwKvAAH/ZQKvAAH/ZAKvAAH/YQKvAAH/ZgIdAAH/YgIdAAH/bgIdAAH/XAIdAAH/WwIdAAH/ZQIdAAH/ZAIdAAH/YQIdAAEBJAAAAAECXgAKAAEBJwKvAAEBEwAAAAEBEwKvAAEBGAKvAAEBCQAAAAEBuAAKAAEBCQKvAAEA/gAAAAEBDAKvAAEBQAAAAAEBQAKvAAEArQAAAAEBOgAKAAEArQKvAAEBHAAAAAEBIQKvAAEBlwAAAAEBlwKvAAEBUAAAAAEBUAKvAAEBSwAAAAEBywAKAAEBSwKvAAEA9wAAAAEA9wKvAAEBBQAAAAEBBQKvAAEBCAAAAAEBCAKvAAEBWgAAAAEBKQAAAAECYwAKAAEBLAKvAAEBVgAAAAECBQAKAAEBVgKvAAEBjQAAAAEBjQKvAAEBkgAKAAEBgQAAAAECAQAKAAEBgQKvAAEBiQKvAAEBlgAAAAEArQNYAAEBDANYAAEBHAHiAAEBAAHiAAEBLAHiAAEAYAHiAAEBgAAKAAEBBQHiAAEBYgAAAAEBYgHiAAEAYAKjAAEBAAKjAAEBDgHiAAEA7wAAAAEB6QAKAAEA8AIdAAEA7QAAAAEA7QIdAAEA/gIdAAEA7gAAAAEBkAAKAAEA9AIdAAEA4QAAAAEA6gIdAAEBGQAAAAEBGQIdAAEApwAAAAEBLQAKAAEApwIdAAEBCwAAAAEA9w
17326IdAAEBUAIdAAEBGwAAAAEBGwIdAAEBHgIdAAEA1wAAAAEA1wIdAAEA0QAAAAEA0QIdAAEA6gAAAAEBKgAAAAEBKwIcAAEApwLQAAEA6gLQAAEaiBvyAAMADACqACcAAgkoAAIJLgACCTQAAgk6AAIJQAACCSgAAgkoAAIJRgACCUwAAgkuAAIJRgAACRYAAAkcAAEJIgACCVIAAglYAAIJXgACCWQAAglqAAIJUgACCVIAAglwAAIJdgACCXwAAglwAAIJggACCYgAAgmOAAIJlAACCZoAAgmCAAIJggACCaAAAgmmAAIJrAACCaAAAglGAAIJcAACCaABaQkUCRoJIAkUCRoJJgkUCRoJLAkUCRoJMgkUCRoJOAkUCRoJPgkUCRoJJgkUCRoJRAkUCRoJSgkUCRoJUAkUCRoJVglcAAAJYglcAAAJaAluAAAJdAl6AAAJgAl6AAAJhgl6AAAJjAmSAAAAAAl6AAAJmAl6AAAJngmkAAAJqgmkAAAJsAm2CbwJwgm2CbwJyAm2CbwJzgm2CbwJ1Am2CbwJ2gm2CbwJ4Am2CbwJ5gm2CbwJyAm2CbwJ7AnyAAAJ+An+AAAKBAn+AAAKCgn+AAAKEAoWAAAKBAn+AAAKHAoiAAAKKAoiAAAKLgo0CjoKQApGCjoKTAo0CjoKUgo0CjoKWAo0CjoKXgo0CjoKZAo0CjoKago0CjoKUgo0CjoKcAo0CjoKdgp8AAAKggp8AAAKiAp8AAAKjgqUAAAKmgqgAAAKmgqmAAAKrAqmAAAKsgq4AAAKrAq+AAAKrAqmAAAKxArKAAAK0ArWAAAK3ArWAAAK4grWAAAK6AruAAAK3ArWAAAK9Ar6CwALBgr6CwALDAr6CwALEgr6CwALGAr6CwALHgr6CwALDAr6CwALJAr6CwALKgswAAALNgswAAALPAr6CwALQgtIAAALTgtUAAALWgtgAAALZgtsAAALcgtsAAALeAtsAAALfguEAAALcgnyAAALignyAAALkAnyAAALlgucAAAAAAnyAAALoguoAAALiguuAAALtAuuAAALugvAAAALtAvAAAALtAvGC8wL0gvGC8wL2AvGC8wL3gvGC8wL5AvGC8wL6gvGC8wL2AvGC8wL8AvGC8wL9gvGC8wL/AvGC8wMAgwIAAAMDgwUAAAMGgwUAAAMIAwUAAAMJgwUAAAMLAwUAAAMIAwyAAALcgw4AAALtAw4AAAMPgw4AAAMRAw4AAAMSgw4AAAMPgxQAAAMVgxQAAAMXAxQAAAMYgxQAAAMaAxuDHQMegxuDHQMgAxuDHQMhgxuDHQMgAxuDHQMjAxuDHQMkgxuDHQMmAxuDHQMngxuDHQMpAxuDHQMqgxuDHQMsAy2AAAMvAy2AAAMwgzIAAAMzgzUAAAM2gzUAAAM4AzUAAAM4AzmAAAAAAzUAAAM7AzUAAAM8gzIAAAMzgz4AAAMzgz+DQQNCgz+DQQNEAz+DQQNFgz+DQQNEAz+DQQNHAz+DQQNIgz+DQQNFgz+DQQNKAz+DQQNLg00AAANOg1AAAANRg1AAAANTA1AAAANUgAAAAANWA1AAAANTA1eAAANZA1eAAANag1wDXYNfA1wDXYNgg1wDXYNiA1wDXYNjg1wDXYNlA1wDXYNmg1wDXYNoA1wDXYNpg2sAAANsg2sAAANuA2sAAANvg3EAAANyg3QAAANyg3WAAANZA3WAAAN3A3iAAANZA3oAAANZA3WAAANZArKAAAN7g1eAAAN9A1eAAAN+g4AAAAOBg1eAAAN+g4MAAAN9A1eAAAOEguuDhgOHguuDhgOJAuuDhgOKguuDhgOMAuuDhgONguuDhgOPAuuDhgOQguuDhgOSAAAAAANCgAAAAANEAuuDhgOTg5UAAAOWgzIAAAOYAzIAAAOYA3WAAAOZg3WAAAObA3WAAAObA3oAAAOZg5yAAAOeA5yAAAOfg5yAAAOfg6EAAAAAA5yAAAOig6QAAAOeA6WAAAOnA6iAAAOnA6oAAAOnA6oAAAOnA6uDrQOug6uDrQOwA6uDrQOxg6uDrQOzA6uDrQO0g6uDrQO2A6uDrQO3g6uDrQO5A6uDrQO6g6uDrQO8A72AAAO/AswAAAPAgswAAAPCAswAAAPDgswAAAPFAswAAAPGg8gAAAPJg8sAAAPMg8sAAAPOA8sAAAPPg8sAAAPRA8sAAAPSg9QAAAPVg9QAAAPXA9QAAAPXA9QAAAPYg9oD24PdA9oD24Peg9oD24PgA9oD24Phg9oD24PjA9oD24Pkg9oD24PmA9oD24Png9oD24PpA9oD24Pqg9oD24PsA+2AAAPvA+2AAAPwg/IAAAPzg/UAAAP2g/UAAAP4A/UAAAP5g/sAAAAAA/UAAAP8g/UAAAP+Aw4AAAP/gw4AAAQBBAKEBAQFhAKEBAQHBAKEBAQIhAKEBAQKBAKEBAQLhAKEBAQNBAKEBAQOhAKEBAQQBAKEBAQRhBMAAAQUhBYEF4QZBBqAAAQcBB2AAAQfBB2AAAQghB2AAAQiBCOAAAQfBB2AAAQlBCaAAAQoBCaAAAQphCsELIQuBC+EMQQyhCsELIQ0BCsELIQ1hCsELIQ3BCsELIQ4hCsELIQ6BCsELIQ7hD0ELIQ+hCsELIRABCsELIRBhEMAAAREhEMAAAREhEMAAARGBEMAAARHhEkAAARKhEwAAARKhE2AAARPBE2AAARQhFIAAARPBFOAAARPBE2AAARVArWAAARWhFgAAARZhFgAAARbBFgAAARchF4AAARZhFgAAARfgqUEYQRigqUEYQRkAqUEYQRlgqUEYQRnAqUEYQRogqUEYQRqAqUEYQRrgqUEYQRtBG6AAARwBG6AAARxgqUEYQRzBHSAAAR2A8gAAAR3hG6AAARwAxQAAAR5AxQAAAR6gxQAAAR8BH2AAAR5A6WAAAR/A6WAAASAg6WAAASCBIOAAAAAA6WAAASFA6oAAAR/BIaAAASIBImAAASLBImAAASMhI4AAASLBI4AAASLAluEj4SRAluEj4SSgluEj4SUAluEj4SVgluEj4SXAluEj4SYgluEj4SaAluEj4SbgluEj4SdAluEj4SehKAAAAShhKMAAASkhKMAAASmBKMAAASnhKMAAASpBKMAAASqhKwAAAR5BK2AAASvBK2AAASwhK2AAASyBK2AAASzhK2AAAS1BLaAAAR5BLaAAAR6hLaAAAR8BLaAAAS4AAB/1kAAAAB/1IAAAAB/8wACgAB/2YB4gAB/2IB4gAB/24B4gAB/1wB4gAB/1sB4gAB/2UB4gAB/2QB4gAB/2YCrwAB/2ICrwAB/24CrwAB/1wCrwAB/1sCrwAB/2UCrwAB/2QCrwAB/2ECrwAB/2YCHQAB/2ICHQAB/24CHQAB/1wCHQAB/1sCHQAB/2UCHQAB/2QCHQAB/2ECHQABASQAAAABAl4ACgABAScCrwABAScDdwABAScDXwABAScDhgABAScDgAABAScDWAABAScDNQABAScDlwABAScEBAABAScDWgABAbEAAAABAlsCrwABAlsDdwABARMAAAABARMCrwABAWEAAAABAWoCrwABAWoDdwABAWoDhgABAYD/OgABAWoDgAABAWoDZgABAUcAAAABATMCrwABATMDhgABAQkAAAABAbgACgABAQkCrwABAQkDdwABAQkDXwABAQkDhgABAQkDgAABAQkDWAABAQkDZgABAQkDNQABAPAAAAABAPACrwABAWkAAAABAWwCrwABAWwDXwABAWwDgAABAWn/NQABAWwDZgABAUAAAAABAUACrwABAUADgAABAK0AAAABAToACgABAK0CrwABAhMAAAABAhcCrwABAK0DdwABAK0DXwABAK0DgAABAK0DWAABAK0DZgABAK0DNQABAK0DWgABALYAAAABALoCrwABALoDdwABALoDgAABARwAAAABASECrwABARz/NQABAPYAAAABAHACrwABAHADdwABAQACFgABAPb/NQABAUQBjwABAZcAAAABAZcCrwABAVAAAAABAVACrwABAVADdwABAVADhgABAVD/NQABAVADWgABAUsAAAABAcsACgABAUsCrwABAUsDdwABAUsDXwABAUsDgAABAUsDWAABAUsDdgABAUsDN
17326QABAU8AAAABAU8CrwABAU8DdwABAUsDWgABAcgAAAABAcgCrwABAPcAAAABAPcCrwABAUgAAAABAUgCrwABARAAAAABAQgCrwABAQgDdwABAQgDhgABARD/NQABAPkCrwABAPkDdwABAPkDhgABAQ//OgABAPkDgAABAPD/NQABAQUAAAABAQUCrwABAQUDhgABAQX/NQABAVUAAAABAmUACgABAVUCrwABAVUDdwABAVUDXwABAVUDgAABAVUDWAABAVUDdgABAVUDNQABAVUDlwABAVUDWgABASMAAAABASMCrwABAbAAAAABAa8CrwABAa8DdwABAa8DgAABAa8DWAABAQgAAAABAQoAAAABAQUDdwABAQUDgAABAQUDWAABAP4AAAABAQwCrwABAQwDdwABAQwDhgABAQwDZgABAQQAAAABAgUACgABAQAB4gABAQACugABAQACpgABAQACwgABAQACowABAQACwAABAQACggABAQACwwABAQADUgABAQACqgABAX0AAAABAX0B4gABAX0CugABAQcAAAABAQcCxQABAPsAAAABAQkB4gABAQkCugABARr/OgABAQkCwgABAQkCpgABAiwCFwABARIAAAABAbYADwABAQYB4gABAQYCugABAQYCpgABAQYCwgABAQYCowABAQYCwAABAQYCggABAKsAAAABAKsCxQABAQH/KQABAPoB4gABAPoCpgABAPoCwgABAPYCygABAQYAAAABAGMCnQABAGMDbgABAG0AAAABALIACgABAG0B4gABAG0CugABAG0CpgABAG0CwgABAG0CowABAG0CwAABAG0CggABAG0CqgABAHv/KQABAIkB4gABAIkCugABAIkCwgABAOUAAAABAGMCpwABAOX/NQABAGMAAAABAGMDZQABAOQCFwABAGP/NQABAZcB4gABAQsB4gABAQsCugABAT4AAAABAUMB4gABAQb/NQABAQsCqgABAYAACgABAQUB4gABAQUCugABAQUCpgABAQUCwgABAQUCowABAQUCwAABAQUCuQABAQUCggABAQUCqgABAawAAAABAawB4gABAQcB4gABALQB4gABALQCugABALQAAAABALoB4gABALoCugABANP/OgABALoCwgABALT/NQABANAAAAABAHcCRgABAO4CDQABAND/NQABAQEAAAABAc4ACgABAQEB4gABAQECugABAQECpgABAQECwgABAQECowABAQECwAABAQECuQABAQECggABAQECwwABAQECqgABANkAAAABANkB4gABAVEB4gABAVECugABAVECwgABAVECowABAVECwAABANcAAAABANcB4gABAOn/KQABAPYB4gABAPYCugABAPYCwgABAPYCowABAPYCwAABAMkAAAABAMkB4gABAMkCugABAMkCpgABAO8AAAABAekACgABAPACHQABAPAC5wABAPAC2AABAPAC9gABAPAC9AABAPAC0AABAPAC7QABAPACuQABAPAC/wABAPADdgABAPAC3AABAXUAAAABAdkCHQABAdkC5wABAO0AAAABAO0CHQABASEAAAABASkCHQABASkC5wABASkC9gABAUD/OgABASkC9AABASkCzgABAQoCHQABAQoC9gABAO4AAAABAZAACgABAPQCHQABAPQC5wABAPQC2AABAPQC9gABAPQC9AABAPQC0AABAPQCzgABAPQC7QABAPQCuQABANMAAAABANMCHQABAl0AAAABAuMACgABAl0CHQABAp4AAAABAhYCHQABAS4AAAABASICHQABASIC2AABASIC9AABAS7/NQABASICzgABARkAAAABARkCHQABARkC9AABAKcAAAABAS0ACgABAKcCHQABAJMAAAABAQkACgABAJMCHQABAKcC5wABAKcC2AABAKcC9AABAKcC0AABAKcCzgABAKcC7QABAeoAAAABAfgCHQABAKcCuQABAKcC3AABAJwAAAABAKoCHQABAKoC5wABAKoC9AABAQsAAAABAPcCHQABAQv/NQABAPgAAAABAHACHQABAHAC5wABAP4BegABAPj/NQABATUBUwABAVACHQABARsAAAABARsCHQABARsC5wABARsC9gABARv/NQABARsC3AABAZIACgABAR4CHQABAR4C5wABAR4C2AABAR4C9AABAR4C0AABAR4C7QABAR4C5gABAR4CuQABASAAAAABASACHQABASAC5wABAR4C3AABAYEAAAABAYECHQABANcCHQABAOoCHQABAOoC5wABAOoC9gABAP7/NQABANwCHQABANwC5wABANwC9gABAO//OgABANwC9AABAncAAAABAoMCHQABANEAAAABANECHQAB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APAHwAfAAsAH0AgQARAIIAhQA4AIYAkwAqAJQAlABAAJUAmgATAJsAmwAUAJwAnAAYAJ0AngAUAJ8AqAAVAKkAqQBRAKoArgAWAK8ArwBFALIAsgA6ALQAvQA6AL4AwQAXAMIAwgBIAMUAxQBKAMsAywBMAMwAzQA7AM4AzgAZAM8A0gA7ANMA3gAYAN8A3wBOAOEA4QAjAOIA5QA8AOYA6wAwAO4A7gAmAPMA/QAaAP4A/gAoAP8BAwAbAQQBBAA2AQUBCQAcAQoBDQAyARUBIAAzASEBIgA0ASMBIwBBASQBKQAEASoBKgBCAS4BLgBDATgBOABEATsBPwAGAUABQABGAUMBQwBHAU8BUgAvAVMBUwBJAVUBVQBLAVsBWwAxAVwBXABNAWIBbQAIAW4BbgBPAXABcAAkAXEBcQBQAXUBegAKAXwBgAAMAYEBiwAOAYwBjAApAY0BkQAQAZIBkgAuAZMBlwASAZgBmwA3Az4DPwArA0ADQQA5A0IDQgArA0UDRQAlA0kDSQAfA0sDSwBSA0wDTAAgA1cDVwAtA3IDcgAZA3QDdAAZA3wDfAAhA34DfgAiA98D3wA/A+AD4AA1A+YD5gAnAAIAGQEjASMAEAEkASkAAQEqAS0AAgEuATcAAwE4ATgAEQE7AT8ABAFAAUAAEgFDAUMAEwFPAVIADwFTAVQABQFVAVoABgFbAVsAFAFcAVwAFQFiAWwABwFuAW4AFgFwAXAAFwFxAXQACAF1AXoACQF8AYAACgGBAYsACwGMAYwAGAGNAZEADAGSAZIAGQGTAZcADQGYAZsADgACABoAzgDOAAoBFQEgAAEBIQEiAA8BJAEpAAIBOwE/AAMBTwFSABEBWwFbABQBYgFtAAQBcAFwAAsBdQF6AAUBfAGAAAYBgQGLAAcBjAGMAA4BjQGRAAgBkgGSABMBkwGXAAkBmAGbABADPgM/ABIDQANBABcDQgNCABIDcgNyAAoDdAN0AAoDjwOPAAwD5gPmAA0D9QP1ABYD9gP2ABUAAgAnAJQAlAABAJUAmgACAJsAmwAUAJ0AnQADAJ8AqAAEAKkAqQAFAKoArgAGAK8AsQAHALIAsgAIALQAuQAIALsAvQAIAL4AwQAJAMIAwwAKAMcAxwADAMgAyAAWAMkAyQAXAMsAywAZAMwA0gALANMA3QAMAN8A3wAaAOEA4QAbAOIA5QANAOYA6wAOAOwA7AAVAO0A7QAYAO4A8AAPAPEA8QAcAPIA8gAPAPMA/QAQAP4A/gAdAP8BAwARAQQBBAAeAQUBCQASAQoBDQATAQ4BDgAIARABEAAFAREBEQAIARIBEgAJARQBFAAJAAIASAAEAA8AIwAwADAAJgBmAGoAJAB9AIEAJQCGAJMADQCUAJQAFQCVAJoADgCbAJsADwCcAJwAEQCdAJ4ADwCfAKgAEACpAKkAFgCqAK4AAQCvAK8AFwCyALIAFAC0AL0AFAC+AMEABgDCAMIAGADFAMUAGQDLAMsAHwDMAM0AGwDOAM4AAgDPANIAGwDTAN4AEQDfAN8AIADhAOEAEwDiAOUAHQDmAOsAHgDuAO4AGgDzAP0AEgD+AP4ACwD/AQMABwEEAQQADAEFAQkACAEKAQ0ACQLoAugAPgLtAu0APAM+Az8AHANAA0EAQQNCA0IAHANFA0UAIQNGA0YAIgNHA0cAOANJA0kAAwNLA0sAPQNMA0wABANNA00ALQNXA1cANwNbA1sACgNfA18AQANjA2MAKANkA2QANQNmA2YAKwNnA2cAKQNoA2gANANpA2kAPwNqA2oANgNsA2
17326wALANtA20AKgNvA28AOgNwA3AAOQNyA3IAAgN0A3QAAgN1A3UALgN2A3YAMAN3A3cAMQN4A3gAMwN7A3sALwN9A30AMgPgA+AAJwPiA+IAOwPmA+YABQABA0UARwAWABcAAAAAAAIAAAAeAAMAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAHAAAAAAAAAAAAFQAFAAYACAAAAAAAAAALAAoAEgAfABMAAAAAAAAAAAAcABkAAQAaAAEAGwAMAA4ADwARABgAHQANAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAgBnAAQADwAXABMAGAABACgALAADAE0AWAAFAFsAWwASAGYAagAHAGsAdQAJAHYAdgATAHcAewALAH0AgQANAIIAhQAaAIYAkwAbAJUAmgAiAJsAmwAjAJwAnAAmAJ0AngAjAJ8AqAAkAKoArgAlALIAsgBDALQAvQBDAL4AwQBCAMwAzQBEAM8A0gBEANMA3gAmAOEA4QA5AOIA5QBFAOYA6wAnAPMA/QBGAP4A/gAVAP8BAwAQAQQBBAA7AQUBCQARAQoBDQBHARUBIAAYASQBKQACATsBPwAEAWIBbQAGAXABcAAUAXUBegAZAXwBgAAIAYEBiwAKAYwBjAAWAY0BkQAMAZIBkgA8AZMBlwAOAbgBuAAoAb4BvgAqAckByQAcAcwBzAAeAc8BzwAeAdMB0wAeAd0B3QAcAeAB4AAeAeoB6gAeAfMB8wAeAfQB9AAvAfoB+gAyAfsB/QAgAgUCBQAfAggCCAAgAgsCCwAgAgwCDAA9Ag0CDgAPAhcCFwA9AhkCGQAfAhwCHAAgAiYCJgAgAisCLAAPAi8CLwAgAjECMQAgAjUCNQAwAjsCOwAzAkYCRgAdAloCWgAdAnECcQApAnQCdAArAnsCewAsAn8CfwAtAoQChABAAoUChQAuApECkQBAApICkgAhApQClAA+ApUClQAhApwCnAA1Ap4CngA+AqACoAAhAqQCpAAhAqYCpgBBAqcCpwAhAqkCqQBBAqoCqgA/Aq4CsABBArECsQAhArICsgA/ArMCswAhArkCuQAhAroCugAxAr0CvQA0AsECwQA6AsQCxAA2AsgCyAA3As8CzwA4AAIABQPfA98AAgPmA+YABQPnA+cABAP1A/UAAwP2A/YAAQACAAkAZ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AAPAAYABwAAAAgAAAAQAAkAAAAMAA0ADgABAAoAAwALAAAAAAAAAAAAAAAAAAEAAAAAAAEAAgBWAM4AzgAHAnECcQAhAnYCdgAkAngCeAAOAnsCewAiAn8CfwAKAoICggAjAoMCgwANAoQChAABAoUChQALAocChwAMApECkQABApICkgADApMCkwAfApQClAAEApUClQADApYClgAeApcClwAJApkCmQAbApoCmgAFApsCmwAfApwCnAA0Ap0CnQAfAp4CngAEAp8CnwAJAqACoAADAqECoQAVAqICogA7AqMCowAYAqQCpAADAqUCpQAZAqYCpgAIAqcCpwADAqgCqAASAqkCqQAIAqoCqgAGAqsCrQAFAq4CsAAIArECsQADArICsgAGArMCswADArQCtAAeArgCuAAJArkCuQADAroCugAlArsCuwAnArwCvAAvAr0CvQAqAr4CvgArAr8CvwBAAsACwAAtAsECwQAcAsICwgAwAsMCwwAzAsQCxAA1AsUCxQA2AsYCxgA3AscCxwA/AsgCyAATAskCyQA6AsoCygA8AssCywA+AswCzAA9As0CzQAaAs4CzgACAs8CzwAUAtAC0AApAtEC0QAWAtMC0wAyAtQC1AAxAtUC1gACAtcC1wA4AtkC2QAmAtoC2gAsAtsC2wAuAz4DPwAgA0ADQQAdA0IDQgAgA0UDRQAXA0kDSQAQA1cDVwA5A1sDWwAoA3IDcgAHA3QDdAAHA98D3wARA+AD4AAPAAIACgK7ArsAAQK8ArwAAgLBAsEACQLIAsgAAwLKAsoABwLNAs0ACALOAs4ACgLPAs8ABQLRAtEABgLXAtcABAACABIAzgDOAAICugK6AAMCyALIAAgCzQLNAAwCzgLOAAECzwLPAAkC0QLRAAoC1QLWAAEDPgM/AA4DQANBAA0DQgNCAA4DSQNJAAQDcgNyAAIDdAN0AAIDigOKAAYDjAOMAAcDjwOPAAsD9QP1AAUAAQKSACcACAAJAAMAAAABAAcAAgAAAAQACwAMAAAAAwAHAAAADQAAAA8ADgAQAAYAAAAKAAYABQAEAAQABAAGAAYABgAAAAUAAAABAAIAAAAAAAcAAgAjAM4AzgADApICkgANApQClAABApUClQANApYClgAOApcClwAQApkCmQASApwCnAAIAp4CngABAp8CnwAQAqACoAANAqECoQAKAqQCpAANAqUCpQAMAqYCpgAEAqcCpwANAqgCqAAHAqkCqQAEAqoCqgAPAq4CsAAEArECsQANArICsgAPArMCswANArQCtAAOArgCuAAQArkCuQANAz4DPwACA0IDQgACA0UDRQALA1cDVwAJA1kDWQAFA1sDWwAGA3IDcgADA3QDdAADA98D3wARAAEAAAAKA7QWygADREZMVAAUY3lybABObGF0bgFCAAQAAAAA//8AGAAAAA8AHgAtADwASwBaAGkAeACTAKIAsQDAAM8A3gDtAPwBCwEaASkBOAFHAVYBZQAWAANCR1IgAExNS0QgAIRUQVQgALwAAP//ABgAAQAQAB8ALgA9AEwAWwBqAHkAlACjALIAwQDQAN8A7gD9AQwBGwEqATkBSAFXAWYAAP//ABkAAgARACAALwA+AE0AXABrAHoAhwCVAKQAswDCANEA4ADvAP4BDQEcASsBOgFJAVgBZwAA//8AGQADABIAIQAwAD8ATgBdAGwAewCIAJYApQC0AMMA0gDhAPAA/wEOAR0BLAE7AUoBWQFoAAD//wAZAAQAEwAiADEAQABPAF4AbQB8AIkAlwCmALUAxADTAOIA8QEAAQ8BHgEtATwBSwFaAWkAOgAJQVpFIABwQ0FUIACoQ1JUIADgS0FaIAEYTU9MIAFQTkxEIAGIUk9NIAHAU1JCIAH4VFJLIAIwAAD//wAYAAUAFAAjADIAQQBQAF8AbgB9AJgApwC2AMUA1ADjAPIBAQEQAR8BLgE9AUwBWwFqAAD//wAZAAYAFQAkADMAQgBRAGAAbwB+AIoAmQCoALcAxgDVAOQA8wECAREBIAEvAT4BTQFcAWsAAP//ABkABwAWACUANABDAFIAYQBwAH8AiwCaAKkAuADHANYA5QD0AQMBEgEhATABPwFOAV0BbAAA//8AGQAIABcAJgA1AEQAUwBiAHEAgACMAJsAqgC5AMgA1wDmAPUBBAETASIBMQFAAU8BXgFtAAD//wAZAAkAGAAnADYARQBUAGMAcgCBAI0AnACrALoAyQDYAOcA9gEFARQBIwEyAUEBUAFfAW4AAP//ABkACgAZACgANwBGAFUAZABzAIIAjgCdAKwAuwDKANkA6AD3AQYBFQEkATMBQgFRAWABbwAA//8AGQALABoAKQA4AEcAVgBlAHQAgwCPAJ4ArQC8AMsA2gDpAPgBBwEWASUBNAFDAVIBYQFwAAD//wAZAAwAGwAqADkASABXAGYAdQCEAJAAnwCuAL0AzADbAOoA+QEIARcBJgE1AUQBUwFiAXEAAP//ABkADQAcACsAOgBJAFgAZwB2AIUAkQCgAK8AvgDNANwA6wD6AQkBGAEnATYBRQFUAWMBcgAA//8AGQAOAB0ALAA7AEoAWQBoAHcAhgCSAKEAsAC/AM4A3QDsAPsBCgEZASgBNwFGAVUBZAFzAXRhYWx0CLphYWx0CMJhYWx0CMphYWx0CNJhYWx0CNphYWx0COJhYWx0COphYWx0CPJhYWx0CPp
17326hYWx0CQJhYWx0CQphYWx0CRJhYWx0CRphYWx0CSJhYWx0CSpjMnNjCTJjMnNjCTxjMnNjCUZjMnNjCVBjMnNjCVpjMnNjCWRjMnNjCW5jMnNjCXhjMnNjCYJjMnNjCYxjMnNjCZZjMnNjCaBjMnNjCapjMnNjCbRjMnNjCb5jYWx0CchjYWx0CdJjYWx0CdxjYWx0CeZjYWx0CfBjYWx0CfpjYWx0CgRjYWx0Cg5jYWx0ChhjYWx0CiJjYWx0CixjYWx0CjZjYWx0CkBjYWx0CkpjYWx0ClRjYXNlCl5jYXNlCmhjYXNlCnJjYXNlCnxjYXNlCoZjYXNlCpBjYXNlCppjYXNlCqRjYXNlCq5jYXNlCrhjYXNlCsJjYXNlCsxjYXNlCtZjYXNlCuBjYXNlCupjY21wCvRjY21wCvxjY21wCwRjY21wCwxjY21wCxRjY21wCxxjY21wCyRjY21wCyxjY21wCzRjY21wCzxjY21wC0RjY21wC0xjY21wC1RjY21wC1xjY21wC2Rkbm9tC2xkbm9tC3Jkbm9tC3hkbm9tC35kbm9tC4Rkbm9tC4pkbm9tC5Bkbm9tC5Zkbm9tC5xkbm9tC6Jkbm9tC6hkbm9tC65kbm9tC7Rkbm9tC7pkbm9tC8BmcmFjC8ZmcmFjC9BmcmFjC9pmcmFjC+RmcmFjC+5mcmFjC/hmcmFjDAJmcmFjDAxmcmFjDBZmcmFjDCBmcmFjDCpmcmFjDDRmcmFjDD5mcmFjDEhmcmFjDFJsaWdhDFxsaWdhDGJsaWdhDGhsaWdhDG5saWdhDHRsaWdhDHpsaWdhDIBsaWdhDIZsaWdhDIxsaWdhDJJsaWdhDJhsaWdhDJ5saWdhDKRsaWdhDKpsaWdhDLBsbnVtDLZsbnVtDLxsbnVtDMJsbnVtDMhsbnVtDM5sbnVtDNRsbnVtDNpsbnVtDOBsbnVtDOZsbnVtDOxsbnVtDPJsbnVtDPhsbnVtDP5sbnVtDQRsbnVtDQpsb2NsDRBsb2NsDRZsb2NsDRxsb2NsDSJsb2NsDShsb2NsDS5sb2NsDTRsb2NsDTpsb2NsDUBsb2NsDUZsb2NsDUxsb2NsDVJudW1yDVhudW1yDV5udW1yDWRudW1yDWpudW1yDXBudW1yDXZudW1yDXxudW1yDYJudW1yDYhudW1yDY5udW1yDZRudW1yDZpudW1yDaBudW1yDaZudW1yDaxvbnVtDbJvbnVtDbhvbnVtDb5vbnVtDcRvbnVtDcpvbnVtDdBvbnVtDdZvbnVtDdxvbnVtDeJvbnVtDehvbnVtDe5vbnVtDfRvbnVtDfpvbnVtDgBvbnVtDgZvcmRuDgxvcmRuDhZvcmRuDiBvcmRuDipvcmRuDjRvcmRuDj5vcmRuDkhvcmRuDlJvcmRuDlxvcmRuDmZvcmRuDnBvcmRuDnpvcmRuDoRvcmRuDo5vcmRuDphwbnVtDqJwbnVtDqhwbnVtDq5wbnVtDrRwbnVtDrpwbnVtDsBwbnVtDsZwbnVtDsxwbnVtDtJwbnVtDthwbnVtDt5wbnVtDuRwbnVtDupwbnVtDvBwbnVtDvZzYWx0DvxzYWx0DwJzYWx0DwhzYWx0Dw5zYWx0DxRzYWx0DxpzYWx0DyBzYWx0DyZzYWx0DyxzYWx0DzJzYWx0DzhzYWx0Dz5zYWx0D0RzYWx0D0pzYWx0D1BzaW5mD1ZzaW5mD1xzaW5mD2JzaW5mD2hzaW5mD25zaW5mD3RzaW5mD3pzaW5mD4BzaW5mD4ZzaW5mD4xzaW5mD5JzaW5mD5hzaW5mD55zaW5mD6RzaW5mD6pzbWNwD7BzbWNwD7pzbWNwD8RzbWNwD85zbWNwD9hzbWNwD+JzbWNwD+xzbWNwD/ZzbWNwEABzbWNwEApzbWNwEBRzbWNwEB5zbWNwEChzbWNwEDJzbWNwEDxzczAxEEZzczAxEExzczAxEFJzczAxEFhzczAxEF5zczAxEGRzczAxEGpzczAxEHBzczAxEHZzczAxEHxzczAxEIJzczAxEIhzczAxEI5zczAxEJRzczAxEJpzczAyEKBzczAyEKZzczAyEKxzczAyELJzczAyELhzczAyEL5zczAyEMRzczAyEMpzczAyENBzczAyENZzczAyENxzczAyEOJzczAyEOhzczAyEO5zczAyEPRzczAzEPpzczAzEQBzczAzEQZzczAzEQxzczAzERJzczAzERhzczAzER5zczAzESRzczAzESpzczAzETBzczAzETZzczAzETxzczAzEUJzczAzEUhzczAzEU5zczA0EVRzczA0EVpzczA0EWBzczA0EWZzczA0EWxzczA0EXJzczA0EXhzczA0EX5zczA0EYRzczA0EYpzczA0EZBzczA0EZZzczA0EZxzczA0EaJzczA0EahzdWJzEa5zdWJzEbRzdWJzEbpzdWJzEcBzdWJzEcZzdWJzEcxzdWJzEdJzdWJzEdhzdWJzEd5zdWJzEeRzdWJzEepzdWJzEfBzdWJzEfZzdWJzEfxzdWJzEgJzdXBzEghzdXBzEg5zdXBzEhRzdXBzEhpzdXBzEiBzdXBzEiZzdXBzEixzdXBzEjJzdXBzEjhzdXBzEj5zdXBzEkRzdXBzEkpzdXBzElBzdXBzElZzdXBzElx0bnVtEmJ0bnVtEmh0bnVtEm50bnVtEnR0bnVtEnp0bnVtEoB0bnVtEoZ0bnVtEox0bnVtEpJ0bnVtEph0bnVtEp50bnVtEqR0bnVtEqp0bnVtErB0bnVtErZ6ZXJvErx6ZXJvEsJ6ZXJvEsh6ZXJvEs56ZXJvEtR6ZXJvEtp6ZXJvEuB6ZXJvEuZ6ZXJvEux6ZXJvEvJ6ZXJvEvh6ZXJvEv56ZXJvEwR6ZXJvEwp6ZXJvExAAAAACAAAAAQAAAAIAAAABAAAAAgAAAAEAAAACAAAAAQAAAAIAAAABAAAAAgAAAAEAAAACAAAAAQAAAAIAAAABAAAAAgAAAAEAAAACAAAAAQAAAAIAAAABAAAAAgAAAAEAAAACAAAAAQAAAAIAAAABAAAAAgAAAAEAAAADACMAJAAlAAAAAwAjACQAJQAAAAMAIwAkACUAAAADACMAJAAlAAAAAwAjACQAJQAAAAMAIwAkACUAAAADACMAJAAlAAAAAwAjACQAJQAAAAMAIwAkACUAAAADACMAJAAlAAAAAwAjACQAJQAAAAMAIwAkACUAAAADACMAJAAlAAAAAwAjACQAJQAAAAMAIwAkACUAAAADABEAEgATAAAAAwARABIAEwAAAAMAEQASABMAAAADABEAEgATAAAAAwARABIAEwAAAAMAEQASABMAAAADABEAEgATAAAAAwARABIAEwAAAAMAEQASABMAAAADABEAEgATAAAAAwARABIAEwAAAAMAEQASABMAAAADABEAEgATAAAAAwARABIAEwAAAAMAEQASABMAAAADABAAEQASAAAAAwAQABEAEgAAAAMAEAARABIAAAADABAAEQASAAAAAwAQABEAEgAAAAMAEAARABIAAAADABAAEQASAAAAAwAQABEAEgAAAAMAEAARABIAAAADABAAEQASAAAAAwAQABEAEgAAAAMAEAARABIAAAADABAAEQASAAAAAwAQABEAEgAAAAMAEAARABIAAAACAAIAAwAAAAIAAgADAAAAAgACAAMAAAACAAIAAwAAAAIAAgADAAAAAgACAAMAAAACAAIAAwAAAAIAAgADAAAAAgACAAMAAAACAAIAAwAAAAIAAgADAAAAAgACAAMAAAACAAIAAwAAAAIAAgADAAAAAgACAAMAAAABABgAAAABABgAAAABABgAAAABABgAAAABABgAAAABABgAAAABABgAAAABABgAAAABABgAAAABABgAAAABABgAAAABABgAAAABABgAAAABABgAAAABABgAAAADABkAGgAbAAAAAwAZABoAGwAAAAMAGQAaABsAAAADABkAGgAbAAAAAwAZABoAGwAAAAMAGQAaABsAAAADABkAGgAbAAAAAwAZABoAGwAAAAMAGQAaABsAAAADABkAGgAbAAAAAwAZABoAGwAAAAMAGQAaABsAAAADABkAGgAbAAAAAwAZABoAGwAAAAMAGQAaABsAAAABACkAAAABACkAAAABACkAAAABACkAAAABACkAAAABACkAAAABACkAAAABACkAAAABACkAAAABACkAAAABACkAAAABACkAAAABACkAAAABACkAAAABACkAAAABAB8AAAABAB8AAAABAB8AAAABAB8AAAABAB8AAAABAB8AAAABAB8AAAABAB8AAAABAB8AAAABAB8AAAABAB8AAAABAB8AAAABAB8AAAABAB8AAAABAB8AAAABAA4AAAABAA8AAAABAA0AAAABAAwAAAABAAYAAAABAAsAAAABAAkAAAABAAgAAAABAAUAAAABAAcAAAABAAQAAAABAAoAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABACIAAAABACIAAAABACIAAAABACIAAAABACIAAAABACIAAAABACIAAAABACIAAAABACIAAAABACIAAAABACIAAAABACIAAAABACIAAAABACIAAAABACIAAAADABwAHQAeAAAAAwAcAB0AHgAAAAMAHAAdAB4AAAADABwAHQAeAAAAAwAcAB0AHgAAAAMAHAAdAB4AAAADABwAHQAeAAAAAwAcAB0AHgAAAAMAHAAdAB4AAAADABwAHQAeAAAAAwAcAB0AHgAAAAMAHAAdAB4AAAADABwAHQAeAAAAAwAcAB0AHgAAAAMAHAAdAB4AAAABACAAAAABACAAAAABACAAAAABACAAAAABACAAAAABACAAAAABACAAAAABACAAAAABACAAAAABACAAAAABACAAAAABACAAAAABACAAAAABACAAAAABACAAAAABACsAAAABACsAAAABACsAAAABACsAAAABACsAAAABACsAAAABACsAAAABACsAAAABACsAAAABACsAAAABACsAAAABACsAAAABACsAAAABACsAAAABACsAAAABABUAAAABABUAAAABABUAAAABABUAAAABABUAAAABABUAAAABABUAAAABABUAAAABABUAAAABABUAAAABABUAAAABABUAAAABABUAAAABABUAAAABABUAAAADACYAJwAoAAAAAwAmACcAKAAAAAMAJgAnACgAAAADACYAJwAoAAAAAwAmACcAKAAAAAMAJgAnACgAAAADACYAJwAoAAAAAwAmACcAKAAAAAMAJgAnACgAAAADACYAJwAoAAAAAwAmACcAKAAAAAMAJgAnACgAAAADACYAJwAoAAAAAwAmACcAKAAAAAMAJgAnACgQDAABACwQBgABACwQAAABACwP+gABACwP9AABACwP7gABACwP6AABACwP4gABACwP3AABACwP1gABACwP0AABACwPygABACwPxAABACwPvgABACwPuAABACwPxAABAC0PvgABAC0PuAABAC0PsgABAC0PrAABAC0PpgABAC0PoAABAC0PmgABAC0PlAABAC0PjgABAC0PiAABAC0PggABAC0PfAABAC0PdgABAC0PcAABAC0PfAABAC4PdgABAC4PcAABAC4PagABAC4PZAABAC4PXgABAC4PWAABAC4PUgABAC4PTAABAC4PRgABAC4PQAABAC4POgABAC4PNAABAC4PLgABAC4PKAABAC4PLAABAC8PJgABAC8PIAABAC8PGgABAC8PFAABAC8PDgABAC8PCAABAC8PAgABAC8O/AABAC8O9gABAC8O8AABAC8O6gABAC8O5AABAC8O3gABAC8O2AABAC8AAAABABQAAAABABQAAAABABQAAAABABQAAAABABQAAAABABQAAAABABQAAAABABQAAAABABQAAAABABQAAAABABQAAAABABQAAAABABQAAAABABQAAAABABQAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABACEAAAABACEAAAABACEAAAABACEAAAABACEAAAABACEAAAABACEAAAABACEAAAABACEAAAABACEAAAABACEAAAABACEAAAABACEAAAABACEAAAABACEAAAABACoAAAABACoAAAABACoAAAABACoAAAABACoAAAABACoAAAABACoAAAABACoAAAABACoAAAABACoAAAABACoAAAABACoAAAABACoAAAABACoAAAABACoAOQB0AHwAhACSAJwApACuALgAwADIANAA2ADgAOgA8AD4AQABCAESASwBNgE+AUYBTgFWAV4BZgFuAXgBggGKAZIBmgGiAaoBsgG6AcQB0gHaAeQB9gH+AgYCDgIWAh4CJgIuAjYCPgJGAk4CVgJeAmYCbgABAAAAAQ0AAAMAAAABEG4ABgAAAAQB8gIEAhgCKgAGAAAAAgIuAkAAAQAAAAECSAAGAAAAAgJGAlgABgAAAAICYAJ0AAEAAAABAn4AAQAAAAEChAABAAAAAQKKAAEAAAABAogAAQAAAAEChgABAAAAAQKEAAEAAAABAoIAAQAAAAECgAABAAAAAQKGAAEAAAABAoQABgAAAAIC2gLsAAYAAAAKAvQDBgMcAy4D
17326QANQA2QDdAOIA5YABgAAAAIDjgOeAAEAAAABA6YAAQAAAAEDxgABAAAAAQPmAAEAAAABBDoAAQAAAAEEWgABAAAAAQR6AAEAAAABBHgABgAAAAIEdgSIAAYAAAACBJAEogAEAAAAAQSqAAEAAAABBLYAAQAAAAEE6AABAAAAAQUMAAEAAAABBVYAAQAAAAEFoAABAAAAAQXqAAYAAAACB/QIBgAGAAAABAgOCB4IMAhCAAEAAAABCEYABgAAAAIKZgp4AAYAAAAGCoAKkAqiCrQKxgrUAAQAAAABCtQAAQAAAAELFAABAAAAAQsWAAEAAAABCzIAAQAAAAELPAABAAAAAQtGAAEAAAABC0gAAQAAAAEUXAABAAAAARSOAAQAAAABFJAAAQAAAAEUpgABAAAAARTEAAEAAAABFMIAAQAAAAEUwAABAAAAARTGAAEAAAABFOQAAwAAAAEVAgABFQoAAQAAADAAAwAAAAEU8AACFQIU+AABAAAAMAADAAEU9gABFPYAAAABAAAAMAADAAEVDAABFOQAAAABAAAAMAADAAAAARTSAAEVEAABAAAAMAADAAEU/gABFMAAAAABAAAAMAABFQIAPwADAAEVAgABFQgAAAABAAAAMQADAAEU/AABFQIAAAABAAAAMQADAAAAAhT2FPwAART2AAEAAAAyAAMAAAACFO4U6AABFO4AAQAAADIAAhTgAAQAZQBqAOsA8gACFNIABABlAGoA6wDyAAEU0AAGAAEUygAGAAEUxAAGAAEUvgAGAAEUuAAGAAIUuAAEAjACMQIyAjMAARRoAD8AAhSwACwDTQNOA08DUANeA18DYANhA2IDYwNqA2sDbANtA24DewN8A30DfgQUBBUEFgQXBBgEGQQaBBsEHAQdBB4EHwQgBCEEIgQjBCQEJQQmBCcEKAQpBEEERQRMAAMAARSeAAEUqgAAAAEAAAAzAAMAARSeAAEUrAAAAAEAAAAzAAMAARSgAAEU2gACFKAUoAAAAAMAARSOAAEUzgACFI4UjgABAAAAMwADAAAAARS4AAEU1AABAAAAMwADAAEUwgABFKYAAAABAAAAMwADAAAAARSOAAIUVBSwAAAAAwAAAAEUhAACFEQUoAABAAAAMwADAAAAARRqAAIUMBQwAAAAAwAAAAEUYAACFCAUIAABAAAAMwADAAAAARRGAAEUDAAAAAMAAAABFD4AARP+AAEAAAAzAAMAARReAAETUAABFF4AAAADAAEUTgABE0AAAAABAAAANAACFFgAEQMGAwcDCAMJAwoDCwMMAw0DDgMPBEcESANUA1UD1QO5A7cAAhQwABEDBgMHAwgDCQMKAwsDDAMNAw4DDwRHBEgDVANVA9UDuQO3AAIUKgArAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwMkAyUDJgMnAygDKQMqAysDLAMtBEkESgNcA10D1gO6A7gAAhOsABEDGgMbAxwDHQMeAx8DIAMhAyIDIwOFA4YDgwOEA/ID8wP0AAIThAARAxADEQMSAxMDFAMVAxYDFwMYAxkDgQOCA38DgAPvA/AD8QABE9j/4wABE9gAPgADAAET3AABE+IAAAABAAAANQADAAET2gABE9AAAAABAAAANQADAAETrgABE9IAAAABAAAANgADAAETnAABE8gAAAABAAAANgABE74AAQAIAAEABAPuAAMA0wM+AAITsAAaAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwACE64AEwLmAucC6ALpAuoC6wLsAu0C7gLvA1EDoQOiA6MDpAOlA6YD1wPYAAITngAmAuYC5wLoAukC6gLrAuwC7QLuAu8C8QLyAvMC9AL1AvYC9wL4AvkC+gNRA1IDoQOiA6MDpAOlA6YDpwOoA6kDqgOrA6wD1wPYA9kD2gACE4YAJgLcAt0C3gLfAuAC4QLiAuMC5ALlAvsC/AL9Av4C/wMAAwEDAgMDAwQDSgNTA5oDnAOdA54DnwOgA7EDsgOzA7QDtQO2A9MD1APbA9wAAhNWACYC+wL8Av0C/gL/AwADAQMCAwMDBALxAvIC8wL0AvUC9gL3AvgC+QL6A1MDUgOxA7IDswO0A7UDtgOnA6gDqQOqA6sDrAPbA9wD2QPaAAITMgEGARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAS0BLgEvATABMQEyATMBNAE1ATYBNwE4ATsBPAE9AT4BPwFAAUEBQgFDAUsBRQFGAUcBSAFJAUoBTAFNAU4BTwFRAVIBUwFUAVUBVgFXAVgBWQF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NgE3ATwBPQE+AT8BQQFCAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFQAVEBUgFUAVYBVwFYAVkBWgFdAV4BXwFgAWEBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW8BcgFzAXQBdgF3AXkBegF7AX0BfgGAAYIBgwGEAYUBhgGHAYgBiQGKAYsBjgGPAZABkQGUAZUBlgGXAZkBmgGbATkBOgI1AjYCNwI4AjkCOgI7AjwCPQI+Aj8CQAJBAkICQwJEAkUCRgJHAkgCSQJKAksCTAJNAk4CTwJQAlECUgJTAlQCVQJWAlcCWAJZAloCWwJcAl0CXgJfAmACYQJiAmMCZAJlAmYCZwJoAmkCagJrAmwCbQJuAm8CcAI1AjcCOQI6AjwCPQI+Aj8CQAJBAkICQwJEAkUCRgJHAkgCSQJLAkwCTgJPAlACUQJSAlMCVAJVAlYCVwJYAlkCWgJbAlwCXQJeAl8CYAJhAmICYwJkAmUCZgJnAmgCaQJqAmsCbAJtAm4CbwJwAjgCOwJKAk0CNgK6ArsCvAK9Ar4CvwLAAsECwwLEAsUCxgLHAsgCyQLKAswCzQLPAtAC0QLSAtQC1gK6ArwCvQK+Ar8CwALCAsMCxALFAsYCyALJAsoCywLMAs0CzgLQAtEC0gLTAtQC1QLWAtcC2ALZAtoC2wLUAtYCwgLOAsgC0gK6Ar4CwAMQAxEDEgMTAxQDFQMWAxcDGAMZA40DjwNQA5IDagNrA2wDbQNuA3sDfAN9A34D9QP2AAEMoACnAVQBWgFgAWYBbAFyAXoBgAGGAYwBkgGYAZ4BpAGsAbQBugHAAcYBzAHUAdoB4AHmAewB8gH4Af4CBAIKAhACFgIcAiICKAIuAjQCOgJAAkYCTAJSAlgCXgJkAmoCcAJ2AnwCggKIAo4CngKsAroCyALWAuQC8gMAAw4DHAMkAyoDMAM2AzwDQgNIA04DVANaA2ADZgNsA3IDeAN+A4QDigOQA5YDmgOeA6IDpgOqA64DsgO2A7oDvgPIA9ID2APeA+QD6gPwA/YD/AQABA4EHAQiBCgELgQ0BDoEQARGBEwEVARaBGAEZgRsBHIEegSABIYEjASSBJgEoASmBKoErgSyBLYEvATABMoE1ATeBOQE6gTwBPYE/AUCBQYFCgUQBRYFHAUiBSgFLgU0BToFQAVGBUwFUgVYBV4FZAVqBXAFdgV8BYIFiAWOBZQFmgACAZwBFQACADwBTwACAZ0BYgACAGUBeAACAGoBfwADAZ4BnAEVAAIBnwEjAAIBoAEkAAIBoQEqAAIBogEuAAIBowE4AAIBpAE7AAIBpQFAAAMAuAGmAUMAAwDAAacBTwACAagBUwACAakBVQACAaoBWwACAasBXAADAawBnQFiAAIBrQFuAAIBrgFwAAIBrwFxAAIBsAF1AAIA6wF4AAIBsQF8AAIA8gF/AAIBsgGBAAIBswGMAAIBtAGNAAIBtQGSAAIBtgGTAAIBtwGYAAICNAI2AAICMAI4AAICMQI7AAICMgJKAAICMwJNAAICkALCAAICkQLOAAICcQLZAAICdQLaAAICdwLbAAICeQLTAAICfwLXAAIChALVAAICiALYAAICuwK2AAICwQK3AAICxwK4AAICzwK5AAcDBgMkAxoDEALmAvsDBQAGAwcDJQMbAxEC5wL8AAYDCAMmAxwDEgLoAv0ABgMJAycDHQMTAukC/gAGAwoDKAMeAxQC6gL/AAYDCwMpAx8DFQLrAwAABgMMAyoDIAMWAuwDAQAGAw0DKwMhAxcC7QMCAAYDDgMsAyIDGALuAwMABgMPAy0DIwMZAu8DBAADAtwC8QLwAAIC3QLyAAIC3gLzAAIC3wL0AAIC4AL1AAIC4QL2AAIC4gL3AAIC4wL4AAIC5AL5AAIC5QL6AAIC5gL7AAIC5wL8AAIC6AL9AAIC6QL+AAIC6gL/AAIC6wMAAAIC7AMBAAIC7QMCAAIC7gMDAAIC7wMEAAEC8QABAvIAAQLzAAEC9AABAvUAAQL2AAEC9wABAvgAAQL5AAEC+gAEBEcESQOFA4EABARIBEoDhgOCAAIDTQOOAAIDTgOQAAIDTwOTAAIDUQNTAAIDLgORAAIDSgNSAAIDUQNTAAEDUgAGA14DVANcA4MDfwOHAAYDXwNVA10DhAOAA4gAAgNgA4kAAgNhA4oAAgNiA4sAAgNjA4wAAgOhA7EAAgOiA7IAAgOjA7MAAgOkA7QAAwOlA7UDrwACA6YDtgACA5oDpwACA5wDqAACA50DqQACA54DqgADA58DqwOtAAIDoAOsAAIDoQOxAAIDogOyAAIDowOzAAIDpAO0AAMDpQO1A64AAgOmA7YAAQOnAAEDqAABA6kAAQOqAAIDqwOwAAEDrAAEA9UD1gPyA+8A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FQIrASECqAADBEQBNgAAAAD//wAIAugBLwNlAAMERQE2AAAAAP//ABwCYwEaAtgAAwQxATYAAAAAAAEAAAABAEF+uYMgXw889QAHA+gAAAAA2l25igAAAADaXcXK/qb/JAPoBAQAAAAHAAIAAAAAAAAAAQAAAwL/GgBkA/7+pv9eA+gAAQAAAAAAAAAAAAAAAAAABEwCFwAUAAAAAADcAAAA3AAAAkgABwJIAAcCSAAHAkgABwJIAAcCSAAHAkgABwJIAAcCSAAHAkgABwJIAAcCSAAHA2EABANhAAQCJQBNAkMAMwJDADMCQwAzAkMAMwJDADMCQwAzAo0ATQKPAAACjQBNAo8AAAHpAE0B6QBNAekATQHpAE0B6QBNAekATQHpAE0B6QBNAekATQHpAE0B4ABNAoIAMwKCADMCggAzAoIAMwKCADMCfwBNAogAEwJ/AE0BXQA8AsgAPAFdADwBXQAuAV0AHQFdACwBXQA8AV0APAFdAC0BXQA8AV0ACAFrACsBawArAWsAKgIFAE0CBQBNAawATQGsABgBrABNAawATQGsAE0BrAAEAy0ATQKgAE0CoABNAqAATQKgAE0ClgBNAqAATQKWADMClgAzApYAMwKWADMClgAzApYAMwKWADMClgAzAp4ANwKeADcClgAzA48AMwHuAE0B7gBNApAAMwIQAE0CEABNAhAATQIQAE0B5gAwAeYAMAHmADAB5gAwAeYAMAHmADACEwARAhcAEwITABECEwARAhMAEQKpAE0CqQBNAqkATQKpAE0CqQBNAqkATQKpAE0CqQBNAqkATQKpAE0CqQBNAkUAEQNfABMDXwATA18AEwNfABMDXwATAhAAFAIKABICCgASAgoAEgIKABICCgASAf8AFgH/ABYB/wAWAf8AFgIHACUCBwAlAgcAJQIHACUCBwAlAgcAJQIHACUCBwAlAgcAJQIHACUCBwAlAgcAJQL5ACYC+QAmAg0AQwGlACkBpQApAaUAKQGlACkBpQApAaUAKQ
17326IOACkCCQApAg4AKQIOACkB5wApAecAKQHnACkB5wApAecAKQHnACkB5wApAecAKQHnACkB5wApAVUAEwICAB4CAgAeAgIAHgICAB4CAgAeAgsAQwILAAECC//TANwARADcAE0A3AAVANz/7gDc/90A3P/sANwARADc//8B0gBEANz/7QDc/+4A3P/IAPb/wQD2/8EA9v/BAPb/wQGeAEMBngBDAbEAQwDGAEMAxgALAMYAQwDGADYBLQBDAOQAAAMtAEMCCwBDAgsAQwJDACgCCwBDAgsAQwIPAEkCCwBDAgoAKQIKACkCCgApAgoAKQIKACkCCgApAgoAKQIKACkCCwApAgsAKQIKACkDWAApAg0AQgIOAEMCDgApASUAQwElAEMBJQAkASUANgF3ABwBdwAcAXcAHAF3ABwBdwAcAXcAHAIXAEMBEgATAUcAEQFHABABRwARAUcAEQFHABECAQBDAgEAQwIBAEMCAQBDAgEAQwIBAEMCAQBDAgEAQwIBAEMCAQBDAgEAQwGxAA8CnQANAp0ADQKdAA0CnQANAp0ADQGtAA8B0QAQAdEAEAHRABAB0QAQAdEAEAF+ABUBfgAVAX4AFQF+ABUB0gATAe8AEwJlABMC4gATAuIAEwL/ABMB0gATAd0ADQHdAA0B3QANAd0ADQHdAA0B3QANAd0ADQHdAA0B3QANAd0ADQHdAA0B3QANAq4AAwKuAAMB2gBPAd0AKwHdACsB3QArAd0AKwHdACsB3QArAhQATwItABsCFABPAi0AGwG8AE8BvABPAbwATwG8AE8BvABPAbwATwG8AE8BvABPAbwATwG8AE8BpgBPAvAATwM1AE8CEwAuAhMALgITAC4CEwAuAhMALgIxAE8CMQAhAjEATwFOAEEBJgAtAU4AQQFOACgBTgAXAU4AJgFOAEEBTgA5ApkAQQFOACcBTgBBAU4AAgFLACsBSwArAUsAKwFLABoB1QBPAdUATwGPAE8BjwAYAZMATwGPAE8BjwBPAakADQKgAEUCNQBPAjUATwI1AE8CNQBPAkEATwI1AE8COAAwAjgAMAI4ADACOAAwAjgAMAI4ADACOAAwAjgAMAJAADQCQAA0AjgAMAMBADABrgBPAagATwI/ADAB0wBPAdMATwHTAE8B0wBPAacAMAGnADABpwAwAacAMAGnADABpwAwA04AMAGkAA4BrwAVAaQADgGkAA4BpAAOAiYAQgImAEICJgBCAiYAQgImAEICJgBCAiYAQgImAEICJgBCAiYAQgImAEIB2AAKAtUAEgLVABIC1QASAtUAEgLVABIB0wAdAa8ADAGvAAwBrwAMAa8ADAGvAAwBvAAoAbwAKAG8ACgBvAAoASIAIAEvABgBIgAgAToALgEDABcBOgAYARgAFwDBABUBOgAYAT8ALgCOACoAnf/lARMALgCOAC4B5AAuAT8ALgEvABgBOgAuAToAGADEAC4A8wAeANoAEgE7ACsBBAAJAZIADQEaABUBFAAIAP8AGwJIAAcCHQBNAiUATQHfAE0B3wBNAfIATQKTAAkB6QBNAekATQHpAE0DcwAdAfYAHgKQAE0CkABNApAATQJLAE0CSwBNAnIACAMtAE0CfwBNApYAMwJxAE0B7gBNAkMAMwITABECCQAmAgkAJgKnABsCEAAUAjMAHwKWAE0DcQBNA5EATQJ5AE0CFgBNAmEAAQLlAE0DlQAHA5AATQHmADACLgAiAjQAHAFdADwBXQAsAWsAKwJ5AAMDPQBNAikAGwJ9AAMCTQAKApIANQKCABYB9AAEAkcATQKuAE0CCgASAhUAGAI+AE0ChAAzApYAMwIHACUCCAA6Ac8AQwFuAEMBbgBDAYgAQwINAA8B5wApAecAKQHnACkCjgAfAZoAHgIJAEMCCQBDAgkAQwHZAEMB2QBDAfUAEAJpADsCCABDAgoAKQIAAEMCDQBCAaUAKQGdAAkB0QAQAdEAEAJqACcBrQAPAc4AIAIRAEMC3ABDAuIAQwINAEMB0ABDAiYAAQKEAEMC6AAKAvIAQwF3ABwBwAAiAckAHgDcAEQA3P/sAPb/wQIcAA4CqgBDAdwAHAIKAA8CCgASAgAAKQHSABMBkAAYAcYAQwITAEMBzAAVAcwAFQILAEMB5wAjAfwAKQGHACICDgAqAgsAQwMtAEMCBgAuAd0ADQHsAFUB2gBPAZcATwGXAE8BqABPAiMAAQG8AE8BvABPAbwATwLPABsBtgApAj8ATwI/AE8CPwBPAfoATwH6AE8CFwARAqAARQIxAE8COAAwAi8ATwGuAE8B3QArAaQADgGqAB8BqgAfAlAAJQHTAB0B8AAtAjYATwLyAE8C+wBPAi8ATwHMAE8CAgALAooATwL8ABIDAgBPAacAMAHkADQB6wApAU4AQQFOACYBSwArAg0AAwLDAE8B3wAcAgkABAHkABACLwA3AgAADQGsABoB/ABPAkoATwGvAAwBuwASAdsATwIDACoCLQA3AkgABwIlAE0B3wBNAjEAFwHpAE0B/wAWAn8ATQKiADQBXQA8AgUATQJCABMDLQBNAqAATQHaAB8ClgAzAnEATQHuAE0B3wAcAhMAEQIXABICxAAjAhAAFAKaACYCswA7Ak0ADAI2AAUCzAAFAbUABgLMAA0ClAADAu8AGgFdACwCFwASAjcAKwIVAEYBuwADAfsAJQGvACgBigAhAhsAHgIzAC0A6ABAAeEAPQHSABICGABDAbMACgGaACMCCgApAkcAHAIFADwBngAiAikAJQGnAAQCAAAWAnMAJQGb//0CYQA6AsQALQDoABUA6P/fAOj/zQIAABYCAAAWAgAAFgIKACkCxAAtAjcAKwGvACgCGwAeAhoAOQIpACABmwAjAm4AJQHdAA0B2gBPAZcATwHOAAkBvABPAbwAKAIxAE8CRgA0AU4AQQHVAE8B7AAPAqAARQI1AE8BoQAgAjgAMAIvAE8BrgBPAcIAJAHCACQBpAAOAdMAEQJgACYB0wAdAkUAJgJUADkBTgBBAU4AJgHTABEB0wARAjgAMAJUADkB3QANAbwATwIxAE8CHAAnAhwAZQIcAEMCHABIAhwANgIcAEgCHABJAhwAXgIcADQCHAA8AhwAJwF/ACMBzwARAdIAHgH0ABwB2wAlAf0ANAGsABsCDAArAf0AJgIcACcCOAAyAU4AEAHmADMBzgASAfgAGwHSACACEAA8AdQAKQIPADICEAAyAhwAJAIcAF4CHABLAhwAPAIcACwCHABBAhwARAIcAEwCHAA4AhwANgIcACcBIgAUASIAMgEiACcBIgAjASIAHQEiACABIgAkASIALgEiABoBIgAcASIAFAEiADIBIgAnASIAIwEiAB0BIgAgASIAJAEiAC4BIgAaASIAHAEiABQBIgAyASIAJwEiACMBIgAdASIAIAEiACQBIgAuASIAGgEiABwBIgAUASIAMgEiACcBIgAjASIAHQEiACABIgAkASIALgEiABoBIgAcAJr/XwMHADwDBwAxAwcANwMHADQDBwBPAwcALQMHADgDBwA2AwcALQMHADADBwA0AwcAKwMHADsDBwAyAwcAOQDDADIAwAAzAM0AOADOADcCSQAyAP4ASwEIAFABlwA4AZcAOQDNADIB/gBXATYAFwIcAB4BRQArAVsAMAEIAF8BlwA5AM0AMgH+AFcCHAAeAhwAIwIcACMAvgAwAL4AEgFCAGMBQgAgAVMANQFTAA0BKgBfASoADwC+ADAAvgASAUIAYwFCACABUwA1AVMADQEqAF8BKgAPAQ8ALQEPAC0B9AAAA+gAAAPoAAAB/gAFAQ8ALQEPAC0B9AAAA+gAAAPoAAAAsQAoAVgAKAFYACQBWAAoALEAJACxACgBzQA3Ac0ATAEjADcBIwBMAS4AKACVACgBzQA3Ac0ATAEjADcBIwBMAL4AMAC+ABIAkAAiAJAAIQC+ADAAvgASAJAAIgCQACEA9gAzAPcAGwE2ADUBNgAWAO8ANwDwABYAvwAzAL8AMwGRAC4BkQAuAUAAGwFCABsAzQAyAM4ANwPoAAAB9AAAADcAAADcAAAAbgAAAhwAVgIcAFMCHABQAhwAGAIc/9ACHABJAhwAIgHaADYB8AAzAhwAGAIc/9AB9wAuAeoACQH4ADsBwAAxAgEAFwHM/9kB4ABEAdEADwH3AC4B4ABEAhwASQIcAGICHABQAhwAZQIcACwCHAABAhwAYgIcADYBIgAgASIAIAEiACABIgAgAhwAQQIcAEACHABRAhwAQQIcAEECHABBAhwAXgIcAF4CHABbAhwATgIcAFQCHABOAf4ANAIcAEwCHABHAz8ALAFbAAkCswA7AjEAFwJwACACXAAjAiQAHAIXADsCGABDAtoAMgP+ADIBIgAgASIAIALaADID/gAyAsQAJgPuACYCxAAmA+4AJgHeACACTwBkAy
17326oANwKdACkB/gAzAdAATwM/AEEDPwBBAz8AQQI4//0BCgAfAL0AQAC9AEACAQA9AbYAEAIBAD0DYwAoA7kATQEiACABIgAgASIAIAEiACABIgAgASIAIAKAAC0CBwAZASsASwErAEgAAP7lAAD/LQAA/wAAAP8EAAD+pgAA/tYAAP7WAAD+5gAA/wsAAP69AAD+5QAA/ywAAP8aAAD/DwE2ADoBNgAcATYADAE2AFABNgAMATYAGwE2AGMBNgA2ATb/3AE2ABsBNgBFATYAQQE2//MAAP7lAAD/LQAA/wAAAP8EAAD+pgAA/tYAAP7WAAD+5gAA/wsAAP68AAD+5QE2ADoBNgAcATYADAE2AAwBNgAbATYAYwE2ADYBNv/cATYAGwE2AEEBNv/yAAD+5QAA/y0AAP8AAAD/BAAA/qYAAP7WAAD+1gAA/uYAAP8LAAD+vAAA/uUBNgA6ATYAHAE2AAwBNgAMATYAGwE2AGMBNgA2ATb/3AE2ABsBNgBBATb/8gErAEwBNgBjAXAAJQE2AGMAAP7fAAD+0gAA/t8AkAAiAJAAIQCQACIAkAAhATYAFQAIABwAAABAAEAAQABAAIwAmACkALAAvADIANQA4AFiAW4BiAGUAgACDAJoAsQC0ALcA4QDkAOcA+QESgRWBLwFCgUWBSIFLgU6BUYFUgVeBWoF+gY8BqAGrAa4BsQG0AcMB3AHfAfEB9AH3AfoB/QIAAgMCBgIJAiuCLoJAAkMCRgJXglqCZgJpAm2CcIJ1AoqCn4KvgrKCtYK4gtOC1oLnguqC7YLwgvOC9oL5gvyDIIMjgyaDWoNqA3qDlIOpg6yDr4Oyg8uDzoPRg/8EAgQFBBMEKIQrhC6EMYRAhEOERoRJhEyET4RShFWEcwR2BHkEiASdBKAEowSmBKkEvITMBM8E0gTVBNgE6YTshO+E8oUVhRiFG4UehSGFJIUnhSqFVQVYBV6FYYWSBZUFsYXFhciFy4XxBfQF9wYThjIGNoZchnQGdwZ6Bn0GgAaDBoYGiQaMBrQGyob9BwAHAwdDh0aHWIdyB3aHhQeNh5CHk4eWh5mHm4eeh6GHpIfAh8OH2AfmB+kH7Af+CAEIEogbiCAIJIgniCwIPohWiGeIaohtiHCIc4iKCI0InIifiKKIpYioiKuIroixiNSI14jaiQYJHQk0iUwJXAlf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AABAAAAAAABAAwA2QABAAAAAAACAAUA5QABAAAAAAADABwA6gABAAAAAAAEABIBBgABAAAAAAAFACEBGAABAAAAAAAGABEBOQABAAAAAAAHANkBSgABAAAAAAAIAA0CIwABAAAAAAAJABkCMAABAAAAAAAKANkCSQABAAAAAAALABgDIgABAAAAAAAMABgDOgABAAAAAAANAIQDUgABAAAAAAAOABgD1gABAAAAAAATABQD7gADAAEECQAAAbIEAgADAAEECQABACQFtAADAAEECQACAA4F2AADAAEECQADADgF5gADAAEECQAEACQGHgADAAEECQAFAEIGQgADAAEECQAGACIGhAADAAEECQAHAbIGpgADAAEECQAIABoIWAADAAEECQAJADIIcgADAAEECQAKAbIIpAADAAEECQALADAKVgADAAEECQAMADAKhgADAAEECQANAQgKtgADAAEECQAOADALvgADAAEECQAQABgL7gADAAEECQARAAoMBgADAAEECQATACgMEAADAAEECQEAACQMOAADAAEECQEBACAMXAADAAEECQECABwMfAADAAEECQEDACIMmEJNUyBIdW1hbml0eSBpcyBhIGxpY2Vuc2VkIHZlcnNpb24gb2YgRlMgQWxiZXJ0IFBybyBDb3B5cmlnaHQgKGMpIDIwMDcgYnkgRm9udHNtaXRoIEx0ZCBmb3IgQnJpc3RvbC1NeWVycyBTcXVpYmIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZm9udCBtYXkgbm90IGJlIGFsdGVyZWQgaW4gYW55IHdheSB3aXRob3V0IHByaW9yIHBlcm1pc3Npb24gb2YgRm9udHNtaXRoIEx0ZC5CTVMgSHVtYW5pdHlMaWdodDEuMDAxO2ZzbWk7Qk1TSHVtYW5pdHktTGlnaHRCTVMgSHVtYW5pdHkgTGlnaHRWZXJzaW9uIDEuMDAxOyB0dGZh
17326dXRvaGludCAodjEuOClCTVNIdW1hbml0eS1MaWdodEJNUyBIdW1hbml0eSBpcyBhIGxpY2Vuc2VkIHZlcnNpb24gb2YgRlMgQWxiZXJ0IFBybyBDb3B5cmlnaHQgKGMpIDIwMDcgYnkgRm9udHNtaXRoIEx0ZCBmb3IgQnJpc3RvbC1NeWVycyBTcXVpYmIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZm9udCBtYXkgbm90IGJlIGFsdGVyZWQgaW4gYW55IHdheSB3aXRob3V0IHByaW9yIHBlcm1pc3Npb24gb2YgRm9udHNtaXRoIEx0ZC5Gb250c21pdGggTHRkSmFzb24gU21pdGgsIFBoaWwgR2FybmhhbUJNUyBIdW1hbml0eSBpcyBhIGxpY2Vuc2VkIHZlcnNpb24gb2YgRlMgQWxiZXJ0IFBybyBDb3B5cmlnaHQgKGMpIDIwMDcgYnkgRm9udHNtaXRoIEx0ZCBmb3IgQnJpc3RvbC1NeWVycyBTcXVpYmIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZm9udCBtYXkgbm90IGJlIGFsdGVyZWQgaW4gYW55IHdheSB3aXRob3V0IHByaW9yIHBlcm1pc3Npb24gb2YgRm9udHNtaXRoIEx0ZC5odHRwOi8vd3d3LmZvbnRzbWl0aC5jb21odHRwOi8vd3d3LmZvbnRzbWl0aC5jb21Gb250c21pdGggTHRkLiBFTkQgVVNFUiBMSUNFTkNFIEFHUkVFTUVOVC4gWW91IGFyZSBib3VuZCBieSB0aGUgQ29uZGl0aW9ucyBvZiBTYWxlIHNldCBvdXQgb24gb3VyIHdlYnNpdGUg0SBodHRwOi8vd3d3LmZvbnRzbWl0aC5jb21odHRwOi8vd3d3LmZvbnRzbWl0aC5jb21CTVMgSHVtYW5pdHkgQUJDIGFiYwBCAE0AUwAgAEgAdQBtAGEAbgBpAHQAeQAgAGkAcwAgAGEAIABsAGkAYwBlAG4AcwBlAGQAIAB2AGUAcgBzAGkAbwBuACAAbwBmACAARgBTACAAQQBsAGIAZQByAHQAIABQAHIAbwAgAEMAbwBwAHkAcgBpAGcAaAB0ACAAKABjACkAIAAyADAAMAA3ACAAYgB5ACAARgBvAG4AdABzAG0AaQB0AGgAIABMAHQAZAAgAGYAbwByACAAQgByAGkAcwB0AG8AbAAtAE0AeQBlAHIAcwAgAFMAcQB1AGkAYgBiAC4AIABBAGwAbAAgAHIAaQBnAGgAdABzACAAcgBlAHMAZQByAHYAZQBkAC4AIABUAGgAaQBzACAAZgBvAG4AdAAgAG0AYQB5ACAAbgBvAHQAIABiAGUAIABhAGwAdABlAHIAZQBkACAAaQBuACAAYQBuAHkAIAB3AGEAeQAgAHcAaQB0AGgAbwB1AHQAIABwAHIAaQBvAHIAIABwAGUAcgBtAGkAcwBzAGkAbwBuACAAbwBmACAARgBvAG4AdABzAG0AaQB0AGgAIABMAHQAZAAuAEIATQBTACAASAB1AG0AYQBuAGkAdAB5ACAATABpAGcAaAB0AFIAZQBnAHUAbABhAHIAMQAuADAAMAAxADsAZgBzAG0AaQA7AEIATQBTAEgAdQBtAGEAbgBpAHQAeQAtAEwAaQBnAGgAdABCAE0AUwAgAEgAdQBtAGEAbgBpAHQAeQAgAEwAaQBnAGgAdABWAGUAcgBzAGkAbwBuACAAMQAuADAAMAAxADsAIAB0AHQAZgBhAHUAdABvAGgAaQBuAHQAIAAoAHYAMQAuADgAKQBCAE0AUwBIAHUAbQBhAG4AaQB0AHkALQBMAGkAZwBoAHQAQgBNAFMAIABIAHUAbQBhAG4AaQB0AHkAIABpAHMAIABhACAAbABpAGMAZQBuAHMAZQBkACAAdgBlAHIAcwBpAG8AbgAgAG8AZgAgAEYAUwAgAEEAbABiAGUAcgB0ACAAUAByAG8AIABDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADAANwAgAGIAeQAgAEYAbwBuAHQAcwBtAGkAdABoACAATAB0AGQAIABmAG8AcgAgAEIAcgBpAHMAdABvAGwALQBNAHkAZQByAHMAIABTAHEAdQBpAGIAYgAuACAAQQBsAGwAIAByAGkAZwBoAHQAcwAgAHIAZQBzAGUAcgB2AGUAZAAuACAAVABoAGkAcwAgAGYAbwBuAHQAIABtAGEAeQAgAG4AbwB0ACAAYgBlACAAYQBsAHQAZQByAGUAZAAgAGkAbgAgAGEAbgB5ACAAdwBhAHkAIAB3AGkAdABoAG8AdQB0ACAAcAByAGkAbwByACAAcABlAHIAbQBpAHMAcwBpAG8AbgAgAG8AZgAgAEYAbwBuAHQAcwBtAGkAdABoACAATAB0AGQALgBGAG8AbgB0AHMAbQBpAHQAaAAgAEwAdABkAEoAYQBzAG8AbgAgAFMAbQBpAHQAaAAsACAAUABoAGkAbAAgAEcAYQByAG4AaABhAG0AQgBNAFMAIABIAHUAbQBhAG4AaQB0AHkAIABpAHMAIABhACAAbABpAGMAZQBuAHMAZQBkACAAdgBlAHIAcwBpAG8AbgAgAG8AZgAgAEYAUwAgAEEAbABiAGUAcgB0ACAAUAByAG8AIABDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADAANwAgAGIAeQAgAEYAbwBuAHQAcwBtAGkAdABoACAATAB0AGQAIABmAG8AcgAgAEIAcgBpAHMAdABvAGwALQBNAHkAZQByAHMAIABTAHEAdQBpAGIAYgAuACAAQQBsAGwAIAByAGkAZwBoAHQAcwAgAHIAZQBzAGUAcgB2AGUAZAAuACAAVABoAGkAcwAgAGYAbwBuAHQAIABtAGEAeQAgAG4AbwB0ACAAYgBlACAAYQBsAHQAZQByAGUAZAAgAGkAbgAgAGEAbgB5ACAAdwBhAHkAIAB3AGkAdABoAG8AdQB0ACAAcAByAGkAbwByACAAcABlAHIAbQBpAHMAcwBpAG8AbgAgAG8AZgAgAEYAbwBuAHQAcwBtAGkAdABoACAATAB0AGQALgBoAHQAdABwADoALwAvAHcAdwB3AC4AZgBvAG4AdABzAG0AaQB0AGgALgBjAG8AbQBoAHQAdABwADoALwAvAHcAdwB3AC4AZgBvAG4AdABzAG0AaQB0AGgALgBjAG8AbQBGAG8AbgB0AHMAbQBpAHQAaAAgAEwAdABkAC4AIABFAE4ARAAgAFUAUwBFAFIAIABMAEkAQwBFAE4AQwBFACAAQQBHAFIARQBFAE0ARQBOAFQALgAgAFkAbwB1ACAAYQByAGUAIABiAG8AdQBuAGQAIABiAHkAIAB0AGgAZQAgAEMAbwBuAGQAaQB0AGkAbwBuAHMAIABvAGYAIABTAGEAbABlACAAcwBlAHQAIABvAHUAdAAgAG8AbgAgAG8AdQByACAAdwBlAGIAcwBpAHQAZQAgIBQAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZgBvAG4AdABzAG0AaQB0AGgALgBjAG8AbQBoAHQAdABwADoALwAvAHcAdwB3AC4AZgBvAG4AdABzAG0AaQB0AGgALgBjAG8AbQBCAE0AUwAgAEgAdQBtAGEAbgBpAHQAeQBMAGkAZwBoAHQAQgBNAFMAIABIAHUAbQBhAG4AaQB0AHkAIABBAEIAQwAgAGEAYgBjAFMAdABlAHIAbABpAG4AZwAgAEEAbAB0AGUAcgBuAGEAdABlAEcAcgBlAGUAawAgAEEAbAB0AGUAcgBuAGEAdABlAHMAUwBlAHIAYgBpAGEAbgAgAFMAYwByAGkAcAB0AE0AYQBjAGUAZABvAG4AaQBhAG4AIABTAGMAcgBpAHAAdAACAAAAAAAA/7gAOAAAAAAAAAAAAAAAAAAAAAAAAAAABE4AAAABAAIAAwAkAMkBAgEDAMcAYgCtAQQBBQBjAQYArgCQAQcAJQAmAP0A/wBkAQgBCQAnAOkBCgELACgAZQEMAQ0AyADKAQ4AywEPARAAKQAqAPgBEQESARMAKwEUARUALAEWAMwBFwDNAM4A+gDPARgBGQEaAC0BGwEcAC4BHQAvAR4BHwEgASEA4gAwADEBIgEjASQBJQBmADIA0AEmANEAZwDTAScBKACRASkArwCwADMA7QA0ADUBKgErASwANgEtAOQA+wEuAS8ANwEwATEBMgEzADgA1AE0ANUAaADWATUBNgE3ATgBOQA5ADoBOgE7ATwBPQA7ADwA6wE+ALsBPwA9AUAA5gFBAEQAaQFCAUMAawBsAGoBRAFFAG4BRgBtAKABRwBFAEYA/gEAAG8BSAFJAEcA6gFKAQEASABwAUsBTAByAHMBTQBxAU4BTwBJAEoA+QFQAVEBUgBLAVMBVABMANcAdAFVAHYAdwFWAHUBVwFYAVkBWgBNAVsBXAFdAE4BXgFfAE8BYAFhAWIBYwDjAFAAUQFkAWUBZgFnAWgAeABSAHkBaQB7AHwAegFqAWsAoQFsAH0AsQBTAO4AVABVAW0BbgFvAFYBcADlAPwBcQFyAIkBcwBXAXQBdQF2AXcAWAB+AXgAgACBAH8BeQF6AXsBfAF9AFkAWgF+AX8BgAGBAFsAXADsAYIAugGDAF0BhADnAYUAwADBAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wIAAgECAgIDAgQCBQIGAgcCCAIJAgoCCwIMAg0CDgIPAhACEQCdAJ4CEgITAhQCFQIWAhcCGAIZAhoCGwIcAh0CHgIfAiACIQIiAiMCJAIlAiYCJwIoAikCKgIrAiwCLQIuAi8CMAIxAjICMwI0AjUCNgI3AjgCOQI6AjsCPAI9Aj4CPwJAAkECQgJDAkQCRQJGAkcCSAJJAkoCSwJMAk0CTgJPAlACUQJSAlMCVAJVAlYCVwJYAlkCWgJbAlwCXQJeAl8CYAJhAmICYwJkAmUCZgJnAmgCaQJqAmsCbAJtAm4CbwJwAnECcgJzAnQCdQJ2AncCeAJ5AnoCewJ8An0CfgJ/AoACgQKCAoMChAKFAoYChwKIAokCigKLAowCjQKOAo8CkAKRApICkwKUApUClgKXApgCmQKaApsCnAKdAp4CnwKgAqECogKjAqQCpQKmAqcCqAKpAqoCqwKsAq0CrgKvArACsQKyArMCtAK1ArYCtwK4ArkCugK7ArwCvQK+Ar8CwALBAsICwwLEAsUCxgLHAsgCyQLKAssCzALNAs4CzwLQAtEC0gLTAtQC1QLWAtcC2ALZAtoC2wLcAt0C3gLfAuAC4QLiAuMC5ALlAuYC5wLoAukC6gLrAuwC7QLuAu8C8ALxAvIC8wL0AvUC9gL3AvgC+QL6AvsC/AL9Av4C/wMAAwEDAgMDAwQDBQMGAwcDCAMJAwoDCwMMAw0DDgMPAxADEQMSAxMDFACbAxUDFgMXAxgDGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDKwMsAy0DLgMvAzADMQMyAzMDNAM1AzYDNwM4AzkDOgM7AzwDPQM+Az8DQANBA0IDQwNEA0UDRgNHA0gDSQNKA0sDTANNA04AEwAUABUAFgAXABgAGQAaABsAHANPA1ADUQNSA1MDVANVA1YDVwNYA1kDWgNbA1wDXQNeA18DYANhA2IDYwNkA2UDZgNnA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QDdQN2A3cDeAN5A3oDewN8A30DfgN/A4ADgQOCA4MDhAOFA4YDhwOIA4kDigOLA4wDjQOOA48DkAORA5IDkwOUA5UDlgC8APQDlwOYAPUA9gOZA5oDmwOcA50DngOfA6ADoQOiABEADwAdAB4AqwAEAKMAIgCiAMMAhwANAAYAEgA/A6MDpAOlA6YDpwOoA6kDqgOrAAsADABeAGAAPgBAA6wDrQOuA68DsAOxA7IDswAQA7QAsgCzA7UAQgO2A7cDuAO5A7oAxADFALQAtQC2ALcAqQCqAL4AvwAFAAoDuwO8A70DvgO/A8ADwQPCA8MDxAPFA8YDxwPIA8kDygPLA8wDzQPOA88D0APRA9ID0wPUA9UD1gPXA9gD2QCEAL0ABwPaAKYAhQCWA9sD3APdA94D3wPgA+ED4gPjA+QD5QPmA+cD6APpA+oD6wPsA+0D7gPvA/AD8QPyA/MD9AAOAO8A8AC4ACAAjwAhAB8AlQCUAJMApwCkAGEAQQCSAJwD9QP2AJoAmQClAJgD9wAIAMYD+AP5A/oD+wP8A/0D/gP/ALkEAAAjAAkAiACGAIsAigQBAIwAgwBfAOgAggQCAMIEAwQEBAUEBgQHBAgECQQKBAsEDAQNBA4EDwQQBBEEEgQTBBQEFQQWBBcEGAQZBBoEGwQcAI0A2
17326wDhAN4A2ACOANwAQwDfANoA4ADdANkEHQQeBB8EIAQhBCIEIwQkBCUEJgQnBCgEKQQqBCsELAQtBC4ELwQwBDEEMgQzBDQENQQ2BDcEOAQ5BDoEOwQ8BD0EPgQ/BEAEQQRCBEMERARFBEYERwRIBEkESgRLBEwETQROBE8EUARRBFIEUwRUBFUEVgZBYnJldmUHdW5pMDFDRAdBbWFjcm9uB0FvZ29uZWsKQXJpbmdhY3V0ZQdBRWFjdXRlC0NjaXJjdW1mbGV4CkNkb3RhY2NlbnQGRGNhcm9uBkRjcm9hdAZFYnJldmUGRWNhcm9uCkVkb3RhY2NlbnQHRW1hY3JvbgdFb2dvbmVrC0djaXJjdW1mbGV4B3VuaTAxMjIKR2RvdGFjY2VudARIYmFyC0hjaXJjdW1mbGV4AklKBklicmV2ZQdJbWFjcm9uB0lvZ29uZWsGSXRpbGRlC3VuaTAwQTQwMzAxC0pjaXJjdW1mbGV4B3VuaTAxMzYGTGFjdXRlBkxjYXJvbgd1bmkwMTNCBExkb3QGTmFjdXRlBk5jYXJvbgd1bmkwMTQ1A0VuZwZPYnJldmUNT2h1bmdhcnVtbGF1dAdPbWFjcm9uC09zbGFzaGFjdXRlBlJhY3V0ZQZSY2Fyb24HdW5pMDE1NgZTYWN1dGULU2NpcmN1bWZsZXgHdW5pMDIxOARUYmFyBlRjYXJvbgd1bmkwMTYyB3VuaTAyMUEGVWJyZXZlDVVodW5nYXJ1bWxhdXQHVW1hY3JvbgdVb2dvbmVrBVVyaW5nBlV0aWxkZQZXYWN1dGULV2NpcmN1bWZsZXgJV2RpZXJlc2lzBldncmF2ZQtZY2lyY3VtZmxleAZZZ3JhdmUGWmFjdXRlClpkb3RhY2NlbnQGYWJyZXZlB3VuaTAxQ0UHYW1hY3Jvbgdhb2dvbmVrCmFyaW5nYWN1dGUHYWVhY3V0ZQtjY2lyY3VtZmxleApjZG90YWNjZW50BmRjYXJvbgZlYnJldmUGZWNhcm9uCmVkb3RhY2NlbnQHZW1hY3Jvbgdlb2dvbmVrC2djaXJjdW1mbGV4B3VuaTAxMjMKZ2RvdGFjY2VudARoYmFyC2hjaXJjdW1mbGV4BmlicmV2ZQlpLmxvY2xUUksCaWoHaW1hY3Jvbgdpb2dvbmVrBml0aWxkZQd1bmkwMjM3C3VuaTAwNkEwMzAxC2pjaXJjdW1mbGV4B3VuaTAxMzcMa2dyZWVubGFuZGljBmxhY3V0ZQZsY2Fyb24HdW5pMDEzQwRsZG90Bm5hY3V0ZQtuYXBvc3Ryb3BoZQZuY2Fyb24HdW5pMDE0NgNlbmcGb2JyZXZlDW9odW5nYXJ1bWxhdXQHb21hY3Jvbgtvc2xhc2hhY3V0ZQZyYWN1dGUGcmNhcm9uB3VuaTAxNTcGc2FjdXRlC3NjaXJjdW1mbGV4B3VuaTAyMTkFbG9uZ3MEdGJhcgZ0Y2Fyb24HdW5pMDE2Mwd1bmkwMjFCBnVicmV2ZQ11aHVuZ2FydW1sYXV0B3VtYWNyb24HdW9nb25lawV1cmluZwZ1dGlsZGUGd2FjdXRlC3djaXJjdW1mbGV4CXdkaWVyZXNpcwZ3Z3JhdmULeWNpcmN1bWZsZXgGeWdyYXZlBnphY3V0ZQp6ZG90YWNjZW50CGZfZi5saWdhCmZfZl9pLmxpZ2EKZl9mX2oubGlnYQpmX2ZfbC5saWdhCGZfai5saWdhBGEuc2MJYWFjdXRlLnNjCWFicmV2ZS5zYwp1bmkwMUNFLnNjDmFjaXJjdW1mbGV4LnNjDGFkaWVyZXNpcy5zYwlhZ3JhdmUuc2MKYW1hY3Jvbi5zYwphb2dvbmVrLnNjCGFyaW5nLnNjDWFyaW5nYWN1dGUuc2MJYXRpbGRlLnNjBWFlLnNjCmFlYWN1dGUuc2MEYi5zYwRjLnNjCWNhY3V0ZS5zYwljY2Fyb24uc2MLY2NlZGlsbGEuc2MOY2NpcmN1bWZsZXguc2MNY2RvdGFjY2VudC5zYwRkLnNjBmV0aC5zYwlkY2Fyb24uc2MJZGNyb2F0LnNjBGUuc2MJZWFjdXRlLnNjCWVicmV2ZS5zYwllY2Fyb24uc2MOZWNpcmN1bWZsZXguc2MMZWRpZXJlc2lzLnNjDWVkb3RhY2NlbnQuc2MJZWdyYXZlLnNjCmVtYW
17326Nyb24uc2MKZW9nb25lay5zYwRmLnNjBWZpLnNjBWZsLnNjBGcuc2MJZ2JyZXZlLnNjDmdjaXJjdW1mbGV4LnNjCnVuaTAxMjMuc2MNZ2RvdGFjY2VudC5zYwRoLnNjB2hiYXIuc2MOaGNpcmN1bWZsZXguc2MEaS5zYwtkb3RsZXNzaS5zYwlpYWN1dGUuc2MJaWJyZXZlLnNjDmljaXJjdW1mbGV4LnNjDGlkaWVyZXNpcy5zYwxpLnNjLmxvY2xUUksJaWdyYXZlLnNjBWlqLnNjCmltYWNyb24uc2MKaW9nb25lay5zYwlpdGlsZGUuc2MEai5zYwp1bmkwMjM3LnNjDnVuaTAwNkEwMzAxLnNjDmpjaXJjdW1mbGV4LnNjBGsuc2MKdW5pMDEzNy5zYwRsLnNjCWxhY3V0ZS5zYwlsY2Fyb24uc2MKdW5pMDEzQy5zYwdsZG90LnNjCWxzbGFzaC5zYwRtLnNjBG4uc2MJbmFjdXRlLnNjCW5jYXJvbi5zYwp1bmkwMTQ2LnNjBmVuZy5zYwludGlsZGUuc2MEby5zYwlvYWN1dGUuc2MJb2JyZXZlLnNjDm9jaXJjdW1mbGV4LnNjDG9kaWVyZXNpcy5zYwlvZ3JhdmUuc2MQb2h1bmdhcnVtbGF1dC5zYwpvbWFjcm9uLnNjCW9zbGFzaC5zYw5vc2xhc2hhY3V0ZS5zYwlvdGlsZGUuc2MFb2Uuc2MEcC5zYwh0aG9ybi5zYwRxLnNjBHIuc2MJcmFjdXRlLnNjCXJjYXJvbi5zYwp1bmkwMTU3LnNjBHMuc2MJc2FjdXRlLnNjCXNjYXJvbi5zYwtzY2VkaWxsYS5zYw5zY2lyY3VtZmxleC5zYwp1bmkwMjE5LnNjDWdlcm1hbmRibHMuc2MEdC5zYwd0YmFyLnNjCXRjYXJvbi5zYwp1bmkwMTYzLnNjCnVuaTAyMUIuc2MEdS5zYwl1YWN1dGUuc2MJdWJyZXZlLnNjDnVjaXJjdW1mbGV4LnNjDHVkaWVyZXNpcy5zYwl1Z3JhdmUuc2MQdWh1bmdhcnVtbGF1dC5zYwp1bWFjcm9uLnNjCnVvZ29uZWsuc2MIdXJpbmcuc2MJdXRpbGRlLnNjBHYuc2MEdy5zYwl3YWN1dGUuc2MOd2NpcmN1bWZsZXguc2MMd2RpZXJlc2lzLnNjCXdncmF2ZS5zYwR4LnNjBHkuc2MJeWFjdXRlLnNjDnljaXJjdW1mbGV4LnNjDHlkaWVyZXNpcy5zYwl5Z3JhdmUuc2MEei5zYwl6YWN1dGUuc2MJemNhcm9uLnNjDXpkb3RhY2NlbnQuc2MGYS5zdXBzBmIuc3VwcwZjLnN1cHMGZC5zdXBzBmUuc3VwcwZmLnN1cHMGZy5zdXBzBmguc3VwcwZpLnN1cHMGai5zdXBzBmsuc3VwcwZsLnN1cHMGbS5zdXBzBm4uc3VwcwZvLnN1cHMGcC5zdXBzBnEuc3VwcwZyLnN1cHMGcy5zdXBzBnQuc3VwcwZ1LnN1cHMGdi5zdXBzBncuc3VwcwZ4LnN1cHMGeS5zdXBzBnouc3Vwcwd1bmkwNDEwB3VuaTA0MTEHdW5pMDQxMgd1bmkwNDEzB3VuaTA0MDMHdW5pMDQ5MAd1bmkwNDE0B3VuaTA0MTUHdW5pMDQwMAd1bmkwNDAxB3VuaTA0MTYHdW5pMDQxNwd1bmkwNDE4B3VuaTA0MTkHdW5pMDQwRAd1bmkwNDFBB3VuaTA0MEMHdW5pMDQxQgd1bmkwNDFDB3VuaTA0MUQHdW5pMDQxRQd1bmkwNDFGB3VuaTA0MjAHdW5pMDQyMQd1bmkwNDIyB3VuaTA0MjMHdW5pMDQwRQd1bmkwNDI0B3VuaTA0MjUHdW5pMDQyNwd1bmkwNDI2B3VuaTA0MjgHdW5pMDQyOQd1bmkwNDBGB3VuaTA0MkMHdW5pMDQyQQd1bmkwNDJCB3VuaTA0MDkHdW5pMDQwQQd1bmkwNDA1B3VuaTA0MDQHdW5pMDQyRAd1bmkwNDA2B3VuaTA0MDcHdW5pMDQwOAd1bmkwNDBCB3VuaTA0MkUHdW5pMDQyRgd1bmkwNDAyB3VuaTA0NjIHdW5pMDQ3Mgd1bmkwNDc0B3VuaTA0OTIHdW5pMDQ5QQd1bmkwNEEyB3VuaTA0QUUHdW5pMDRCMAd1bmkwNEJBB3VuaTA0RDgHdW5pMDRFOAd1bmkwNDMwB3VuaTA0MzEHdW5pMDQzMgd1bmkwNDMzB3VuaTA0NTMHdW5pMDQ5MQd1bmkwNDM0B3VuaTA0MzUHdW5pMDQ1MAd1bmkwNDUxB3VuaTA0MzYHdW5pMDQzNwd1bmkwNDM4B3VuaTA0MzkHdW5pMDQ1RAd1bmkwNDNBB3VuaTA0NUMHdW5pMDQzQgd1bmkwNDNDB3VuaTA0M0QHdW5pMDQzRQd1bmkwNDNGB3VuaTA0NDAHdW5pMDQ0MQd1bmkwNDQyB3VuaTA0NDMHdW5pMDQ1RQd1bmkwNDQ0B3VuaTA0NDUHdW5pMDQ0Nwd1bmkwNDQ2B3VuaTA0NDgHdW5pMDQ0OQd1bmkwNDVGB3VuaTA0NEMHdW5pMDQ0QQd1bmkwNDRCB3VuaTA0NTkHdW5pMDQ1QQd1bmkwNDU1B3VuaTA0NTQHdW5pMDQ0RAd1bmkwNDU2B3VuaTA0NTcHdW5pMDQ1OAd1bmkwNDVCB3VuaTA0NEUHdW5pMDQ0Rgd1bmkwNDUyB3VuaTA0NjMHdW5pMDQ3Mwd1bmkwNDc1B3VuaTA0OTMHdW5pMDQ5Qgd1bmkwNEEzB3VuaTA0QUYHdW5pMDRCMQd1bmkwNEJCB3VuaTA0RDkHdW5pMDRFOQ91bmkwNDMzLmxvY2xCR1IPdW5pMDQzNC5sb2NsQkdSD3VuaTA0M0YubG9jbEJHUg91bmkwNDQyLmxvY2xCR1IPdW5pMDQzMS5sb2NsU1JCCnVuaTA0MzAuc2MKdW5pMDQzMS5zYwp1bmkwNDMyLnNjCnVuaTA0MzMuc2MKdW5pMDQ1My5zYwp1bmkwNDkxLnNjCnVuaTA0MzQuc2MKdW5pMDQzNS5zYwp1bmkwNDUwLnNjCnVuaTA0NTEuc2MKdW5pMDQzNi5zYwp1bmkwNDM3LnNjCnVuaTA0Mzguc2MKdW5pMDQzOS5zYwp1bmkwNDVELnNjCnVuaTA0M0Euc2MKdW5pMDQ1Qy5zYwp1bmkwNDNCLnNjCnVuaTA0M0Muc2MKdW5pMDQzRC5zYwp1bmkwNDNFLnNjCnVuaTA0M0Yuc2MKdW5pMDQ0MC5zYwp1bmkwNDQxLnNjCnVuaTA0NDIuc2MKdW5pMDQ0My5zYwp1bmkwNDVFLnNjCnVuaTA0NDQuc2MKdW5pMDQ0NS5zYwp1bmkwNDQ3LnNjCnVuaTA0NDYuc2MKdW5pMDQ0OC5zYwp1bmkwNDQ5LnNjCnVuaTA0NUYuc2MKdW5pMDQ0Qy5zYwp1bmkwNDRBLnNjCnVuaTA0NEIuc2MKdW5pMDQ1OS5zYwp1bmkwNDVBLnNjCnVuaTA0NTUuc2MKdW5pMDQ1NC5zYwp1bmkwNDRELnNjCnVuaTA0NTYuc2MKdW5pMDQ1Ny5zYwp1bmkwNDU4LnNjCnVuaTA0NUIuc2MKdW5pMDQ0RS5zYwp1bmkwNDRGLnNjCnVuaTA0NTIuc2MKdW5pMDQ2My5zYwp1bmkwNDczLnNjCnVuaTA0NzUuc2MKdW5pMDQ5My5zYwp1bmkwNDlCLnNjCnVuaTA0QTMuc2MKdW5pMDRBRi5zYwp1bmkwNEIxLnNjCnVuaTA0QkIuc2MKdW5pMDREOS5zYwp1bmkwNEU5LnNjBUFscGhhBEJldGEFR2FtbWEHdW5pMDM5NAdFcHNpbG9uBFpldGEDRXRhBVRoZXRhBElvdGEFS2FwcGEGTGFtYmRhAk11Ak51AlhpB09taWNyb24CUGkDUmhvBVNpZ21hA1RhdQdVcHNpbG9uA1BoaQNDaGkDUHNpB3VuaTAzQTkKQWxwaGF0b25vcwxFcHNpbG9udG9ub3MIRXRhdG9ub3MJSW90YXRvbm9zDE9taWNyb250b25vcwxVcHNpbG9udG9ub3MKT21lZ2F0b25vcwxJb3RhZGllcmVzaXMPVXBzaWxvbmRpZXJlc2lzBWFscGhhBGJldGEFZ2FtbWEFZGVsdGEHZXBzaWxvbgR6ZXRhA2V0YQV0aGV0YQRpb3RhBWthcHBhBmxhbWJkYQd1bmkwM0JDAm51AnhpB29taWNyb24DcmhvB3VuaTAzQzIFc2lnbWEDdGF1B3Vwc2lsb24DcGhpA2NoaQNwc2kFb21lZ2EJaW90YXRvbm9zDGlvdGFkaWVyZXNpcxFpb3RhZGllcmVzaXN0b25vcwx1cHNpbG9udG9ub3MPdXBzaWxvbmRpZXJlc2lzFHVwc2lsb25kaWVyZXNpc3Rvbm9zDG9taWNyb250b25vcwpvbWVnYXRvbm9zCmFscGhhdG9ub3MMZXBzaWxvbnRvbm9zCGV0YXRvbm9zCWJldGEuc3MwMgp0aGV0YS5zczAyB3hpLnNzMDIIcGhpLnNzMDIIYWxwaGEuc2MHYmV0YS5zYwhnYW1tYS5zYwhkZWx0YS5zYwplcHNpbG9uLnNjB3pldGEuc2MGZXRhLnNjCHRoZXRhLnNjB2lvdGEuc2MIa2FwcGEuc2MJbGFtYmRhLnNjCnVuaTAzQkMuc2MFbnUuc2MFeGkuc2MKb21pY3Jvbi5zYwVwaS5zYwZyaG8uc2MKdW5pMDNDMi5zYwhzaWdtYS5zYwZ0YXUuc2MKdXBzaWxvbi5zYwZwaGkuc2MGY2hpLnNjBnBzaS5zYwhvbWVnYS5zYwxpb3RhdG9ub3Muc2MPaW90YWRpZXJlc2lzLnNjD3Vwc2lsb250b25vcy5zYxJ1cHNpbG9uZGllcmVzaXMuc2MPb21pY3JvbnRvbm9zLnNjDW9tZWdhdG9ub3Muc2MNYWxwaGF0b25vcy5zYw9lcHNpbG9udG9ub3Muc2MLZXRhdG9ub3Muc2MHemVyby5sZgZvbmUubGYGdHdvLmxmCHRocmVlLmxmB2ZvdXIubGYHZml2ZS5sZgZzaXgubGYIc2V2ZW4ubGYIZWlnaHQubGYHbmluZS5sZgx6ZXJvLmxmLnplcm8IemVyby5vc2YHb25lLm9zZgd0d28ub3NmCXRocmVlLm9zZghmb3VyLm9zZghmaXZlLm9zZgdzaXgub3NmCXNldmVuLm9zZgllaWdodC5vc2YIbmluZS5vc2YJemVyby50b3NmCG9uZS50b3NmCHR3by50b3NmCnRocmVlLnRvc2YJZm91ci50b3NmCWZpdmUudG9zZghzaXgudG9zZgpzZXZlbi50b3NmCmVpZ2h0LnRvc2YJbmluZS50b3NmCXplcm8uemVybwd1bmkyMDgwB3VuaTIwODEHdW5pMjA4Mgd1bmkyMDgzB3VuaTIwODQHdW5pMjA4NQd1bmkyMDg2B3VuaTIwODcHdW5pMjA4OAd1bmkyMDg5CXplcm8uZG5vbQhvbmUuZG5vbQh0d28uZG5vbQp0aHJlZS5kbm9tCWZvdXIuZG5vbQlmaXZlLmRub20Ic2l4LmRub20Kc2V2ZW4uZG5vbQplaWdodC5kbm9tCW5pbmUuZG5vbQl6ZXJvLm51bXIIb25lLm51bXIIdHdvLm51bXIKdGhyZWUubnVtcglmb3VyLm51bXIJZml2ZS5udW1yCHNpeC5udW1yCnNldmVuLm51bXIKZWlnaHQubnVtcgluaW5lLm51bXIHdW5pMjA3MAd1bmkwMEI5B3VuaTAwQjIHdW5pMDBCMwd1bmkyMDc0B3VuaTIwNzUHdW5pMjA3Ngd1bmkyMDc3B3VuaTIwNzgHdW5pMjA3OQd1bmkyMTUzB3VuaTIxNTQHdW5pMjE1NQd1bmkyMTU2B3VuaTIxNTcHdW5pMjE1OAd1bmkyMTU5B3VuaTIxNUEJb25lZWlnaHRoDHRocmVlZWlnaHRocwtmaXZlZWlnaHRocwxzZXZlbmVpZ2h0aHMPZXhjbGFtZG93bi5jYXNlEXF1ZXN0aW9uZG93bi5jYXNlE3BlcmlvZGNlbnRlcmVkLmNhc2ULYnVsbGV0LmNhc2UNbnVtYmVyc2lnbi5sZg5udW1iZXJzaWduLm9zZg9udW1iZXJzaWduLnRvc2YHdW5pMjA4RAd1bmkyMDhFB3VuaTIwN0QHdW5pMjA3RQ5wYXJlbmxlZnQuY2FzZQ9wYXJlbnJpZ2h0LmNhc2UOYnJhY2VsZWZ0LmNhc2UPYnJhY2VyaWdodC5jYXNlEGJyYWNrZXRsZWZ0LmNhc2URYnJhY2tldHJpZ2h0LmNhc2UHdW5pMDBBRAd1bmkyMDE1C2h5cGhlbi5jYXNlDHVuaTAwQUQuY2FzZQtlbmRhc2guY2FzZQtlbWRhc2guY2FzZQx1bmkyMDE1LmNhc2USZ3VpbGxlbW90bGVmdC5jYXNlE2d1aWxsZW1vd
17326HJpZ2h0LmNhc2USZ3VpbHNpbmdsbGVmdC5jYXNlE2d1aWxzaW5nbHJpZ2h0LmNhc2UOcGFyZW5sZWZ0LmRub20PcGFyZW5yaWdodC5kbm9tC3BlcmlvZC5kbm9tCmNvbW1hLmRub20OcGFyZW5sZWZ0Lm51bXIPcGFyZW5yaWdodC5udW1yC3BlcmlvZC5udW1yCmNvbW1hLm51bXIMcGFyZW5sZWZ0LnNjDXBhcmVucmlnaHQuc2MMYnJhY2VsZWZ0LnNjDWJyYWNlcmlnaHQuc2MOYnJhY2tldGxlZnQuc2MPYnJhY2tldHJpZ2h0LnNjCWV4Y2xhbS5zYw1leGNsYW1kb3duLnNjC3F1ZXN0aW9uLnNjD3F1ZXN0aW9uZG93bi5zYwhzbGFzaC5zYwxiYWNrc2xhc2guc2MJYW5vdGVsZWlhB3VuaTAzN0UHdW5pMjAwMwd1bmkyMDAyB3VuaTIwMEEHdW5pMDBBMAd1bmkyMDA5BEV1cm8HY2VudC5sZglkb2xsYXIubGYHRXVyby5sZglmbG9yaW4ubGYLc3RlcmxpbmcubGYGeWVuLmxmCGNlbnQub3NmCmRvbGxhci5vc2YIRXVyby5vc2YKZmxvcmluLm9zZgxzdGVybGluZy5vc2YHeWVuLm9zZhBzdGVybGluZy5sZi5zczAxEXN0ZXJsaW5nLm9zZi5zczAxDXN0ZXJsaW5nLnNzMDESc3RlcmxpbmcudG9zZi5zczAxCWNlbnQudG9zZgtkb2xsYXIudG9zZglFdXJvLnRvc2YLZmxvcmluLnRvc2YNc3RlcmxpbmcudG9zZgh5ZW4udG9zZgd1bmkyMDhDB3VuaTIwN0MHdW5pMjA4Qgd1bmkyMDdCB3VuaTIxMjYHdW5pMjIwNgd1bmkwMEI1B3VuaTIwOEEHdW5pMjA3QQpwZXJjZW50LmxmDnBlcnRob3VzYW5kLmxmC3BlcmNlbnQub3NmD3BlcnRob3VzYW5kLm9zZgxwZXJjZW50LnRvc2YQcGVydGhvdXNhbmQudG9zZgd1bmlGOEZGB3VuaTIxMTcHdW5pMjExMwllc3RpbWF0ZWQHdW5pMjExNglwbHVzLmRub20KbWludXMuZG5vbQplcXVhbC5kbm9tCXBsdXMubnVtcgptaW51cy5udW1yCmVxdWFsLm51bXIFYXQuc2MMYW1wZXJzYW5kLnNjB3VuaTAzNzQHdW5pMDM3NQd1bmkwMzA4B3VuaTAzMDcJZ3JhdmVjb21iCWFjdXRlY29tYgd1bmkwMzBCB3VuaTAzMDIHdW5pMDMwQwd1bmkwMzA2B3VuaTAzMEEJdGlsZGVjb21iB3VuaTAzMDQHdW5pMDMyNgd1bmkwMzI3B3VuaTAzMjgMdW5pMDMwOC5jYXNlDHVuaTAzMDcuY2FzZQ5ncmF2ZWNvbWIuY2FzZQ5hY3V0ZWNvbWIuY2FzZQx1bmkwMzBCLmNhc2UMdW5pMDMwMi5jYXNlDHVuaTAzMEMuY2FzZQx1bmkwMzA2LmNhc2UMdW5pMDMwQS5jYXNlDnRpbGRlY29tYi5jYXNlDHVuaTAzMDQuY2FzZQphY3V0ZS5jYXNlCmJyZXZlLmNhc2UKY2Fyb24uY2FzZQ9jaXJjdW1mbGV4LmNhc2UNZGllcmVzaXMuY2FzZQ5kb3RhY2NlbnQuY2FzZQpncmF2ZS5jYXNlEWh1bmdhcnVtbGF1dC5jYXNlC21hY3Jvbi5jYXNlCXJpbmcuY2FzZQp0aWxkZS5jYXNlCnVuaTAzMDguc2MKdW5pMDMwNy5zYwxncmF2ZWNvbWIuc2MMYWN1dGVjb21iLnNjCnVuaTAzMEIuc2MKdW5pMDMwMi5zYwp1bmkwMzBDLnNjCnVuaTAzMDYuc2MKdW5pMDMwQS5zYwx0aWxkZWNvbWIuc2MKdW5pMDMwNC5zYwhhY3V0ZS5zYwhicmV2ZS5zYwhjYXJvbi5zYw1jaXJjdW1mbGV4LnNjC2RpZXJlc2lzLnNjDGRvdGFjY2VudC5zYwhncmF2ZS5zYw9odW5nYXJ1bWxhdXQuc2MJbWFjcm9uLnNjB3Jpbmcuc2MIdGlsZGUuc2MFdG9ub3MKdG9ub3MuY2FzZQ1kaWVyZXNpc3Rvbm9zCHRvbm9zLnNjC2JyZXZlY29tYmN5EGJyZXZlY29tYmN5LmNhc2UOYnJldmVjb21iY3kuc2MOcGVyaW9kaW5mZXJpb3INY29tbWFpbmZlcmlvcg5wZXJpb2RzdXBlcmlvcg1jb21tYXN1cGVyaW9yB2JyZXZlY3kMYnJldmVjeS5jYXNlCmJyZXZlY3kuc2MAAQAB//8ADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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") format("truetype");
17327												font-weight: 400;
17328												font-style: normal
17329											}
17330											.feedback-popup-container {
17331                                                font-family: BMSHumanity;
17332                                                padding: 20px;
17333                                                border: 1px solid #d3d3d3;
17334                                                background-color: #ffffff;
17335                                                position: relative;
17336                                            }
17337                                            .feedback-popup-header {
17338                                                display: flex;
17339                                                justify-content: space-between;
17340                                                align-items: center;
17341                                                border-bottom: 1px solid #d3d3d3;
17342                                                padding-bottom: 10px;
17343                                                margin-bottom: 20px;
17344                                            }
17345                                            .feedback-popup-title {
17346                                                font-size: 18px;
17347                                                font-weight: bold;
17348                                                color: #595454;
17349                                            }
17350                                            .feedback-popup-content {
17351                                                font-size: 14px;
17352                                                color: #595454;
17353                                                margin-bottom: 20px;
17354                                            }
17355                                        </style>
17356                                    </head>
17357                                    <body>
17358                                        <div class="feedback-popup-container">
17359                                            <div class="feedback-popup-header">
17360											<span class="feedback-popup-image"><img src=${surveyHeading} alt=\'${surveyHeadingAlt}\'></span>
17361                                            </div>
17362                                            <p class="feedback-popup-content">${thankYouMessage}</p>
17363                                        </div>
17364                                    </body>
17365                                    </html>
17366                                `);
17367
17368                                // Close document write to ensure it renders properly
17369                                thankYouWindow.document.close();
17370                            } else {
17371                                // Fallback to modal
17372                                modalContent.html(`
17373                                    <div class="feedback-popup-container">
17374                                        <div class="feedback-popup-header">
17375                                             <span class="feedback-popup-image"><img src=${surveyHeading} alt=\'${surveyHeadingAlt}\'></span>
17376                                        </div>
17377                                        <p class="feedback-popup-content">${thankYouMessage}</p>
17378                                    </div>
17379                                `);
17380                            }
17381                            closeModal();
17382                        } catch (e) {
17383                            enableBodyScroll();
17384                        }
17385                    });
17386
17387                    $(document).on('click', '#noPopupButton', function() {
17388                        try {
17389                            localStorage.setItem('consentpopupshown', 'true');
17390                            closeModal();
17391							$('html').toggleClass('disable-page-scrolling');
17392                        } catch (e) {
17393                            enableBodyScroll();
17394                        }
17395                    });
17396
17397                    $(document).on('click', '#closePopupButton', function() {
17398                        closeModal();
17399                    });
17400
17401                    function handleUnload() {
17402						if (yesClicked && thankYouWindow && !thankYouWindow.closed && yesButtonURL && yesButtonURL !== '#') {
17403							try {
17404								thankYouWindow.location.href = yesButtonURL;
17405								thankYouWindow.focus();
17406							} catch (e) {
17407								window.open(yesButtonURL, '_blank');
17408							}
17409						}
17410					}
17411
17412					$(window).on('beforeunload', handleUnload);
17413
17414                }
17415            }, CHECK_INTERVAL);
17416        } else {
17417            console.log("Consent popup already shown");
17418        }
17419    } catch (e) {
17420        console.error("Error in popup logic:", e);
17421    }
17422}
17423	// to hide all the featured videos initially
17424	// var mode_videos_player=$(".video-player_mode")
17425	// mode_videos_player.hide();
17426
17427    /*if($('#videotype').val() === 'dynamic' && $('#isdynamic').val() === 'true'){
17428        var videoIdval = getQueryStringValue("videoid")
17429        if(typeof videoIdval === undefined || videoIdval == ''){
17430        var videoIdrecentlyadded = $(".video-list-link:first").attr("videoId");
17431
17432        var videoTitlerecentlyadded = $(".video-list-link:first", this).text();
17433
17434		loadModeVideo(videoIdrecentlyadded, videoTitlerecentlyadded);
17435        }
17436    }*/
17437$(document).on("click", ".mode_player .video-list-link, #mode_videos_list .video-list-link, #mode_videos_search_list .video-list-link, #mode_videos_search_list .video-list-link", function(event) {
17438	 event.preventDefault();
17439
17440        var videoId = $(this).attr("videoId");
17441
17442        var videoTitle = $(".video-list-title", this).text();
17443
17444        var videoIdurl = getQueryStringValue("videoid");
17445
17446        var url = window.location.href;
17447
17448        var flag = false;
17449
17450        if(typeof videoIdurl == 'undefined' || videoIdurl ==''){
17451
17452		if (url.indexOf('?') > -1){
17453   			url += '&videoid='+videoId
17454		}else{
17455   			url += '?videoid='+videoId
17456		}
17457		flag=true;
17458        window.location.href = url;
17459
17460        }
17461
17462        if(!flag){
17463        loadModeVideo(videoId, videoTitle);
17464        }
17465
17466        if(typeof $(".video-player-cont-dynamic") !== undefined){
17467			$('html, body').animate({scrollTop: $(".video-player-cont-dynamic").offset().top-$('.header_fix').height()}, "slow");
17468		}
17469		if(typeof $(".video-player-cont-static") !== undefined) {
17470			$('html, body').animate({scrollTop: $(".video-player-cont-static").offset().top-$('.header_fix').height()}, "slow");   
17471		}
17472})
17473
17474	if($(".mode_player").length>0){
17475     var videoId = $(".mode_player .modeVideoID").val();
17476	 var inputs = $(".mode_player .modeVideoID");
17477	 var arrVideosID=[];
17478	 for(var i = 0; i < inputs.length; i++){
17479		console.log("test",$(inputs[i]).val());
17480		arrVideosID.push($(inputs[i]).val());
17481	}
17482
17483
17484
17485    if(typeof videoId == 'undefined' || videoId ==''){
17486
17487		videoId = getQueryStringValue("videoid");
17488
17489      }
17490    //var videoId = getQueryStringValue("videoid")
17491	  if(inputs.length>0) {
17492		  var accountId = $("#accountId").val();
17493		  var websiteId = $("#websiteId").val();
17494		  if(isModeVideoDynamic){
17495			if(videoId) {
17496				var accountId = $("#accountId").val();
17497				var websiteId = $("#websiteId").val();
17498				if($("#hideAction").val() !='true'){
17499				loadModeVideoDetails(videoId,accountId,websiteId,"dynamic");
17500			}
17501			loadModeVideo(videoId);
17502			}
17503			}else{
17504				for(let i=0;i<arrVideosID.length;i++){
17505					if($("#hideAction").val() !='true'){
17506						loadModeVideoDetails(arrVideosID[i],accountId,websiteId,"dynamic");
17507					}
17508				loadModeVideo(arrVideosID[i]);
17509				}
17510			}
17511    }
17512	}
17513    /*if(videoId) {
17514		var accountId = $("#accountId").val();
17515        var websiteId = $("#websiteId").val();
17516        if($("#hideAction").val() !='true'){
17517        	loadModeVideoDetails(videoId,accountId,websiteId,"dynamic");
17518        }
17519		loadModeVideo(videoId);
17520    }*/
17521    if($(".mode_player .video-player-wrap").length) {
17522		videoModeDownload();
17523    }
17524
17525	
17526
17527    $(".mode_player #like_action,.mode_player #dislike_action,.mode_player #favourite_action").on("click", function(event){
17528        event.preventDefault();
17529		console.log(event,"event")
17530		var videoIdUrl = $(".modeVideoID").val();
17531		if(isModeVideoDynamic){
17532			if(typeof videoIdUrl == undefined || videoIdUrl ==''){
17533				videoIdUrl = getQueryStringValue("videoid")
17534			}
17535		}else{
17536			var videoIdUrl=event.currentTarget.parentNode.parentNode.parentNode.parentNode.parentNode.getAttribute("value");
17537		}
17538        var accountId = $("#accountId").val();
17539        var websiteId = $("#websiteId").val();
17540        var type = $(this).attr("id");
17541        var status = this.classList.contains('disabled-link');
17542
17543        loadModeVideoDetails(videoIdUrl,accountId,websiteId,type,status);
17544    });
17545});
17546
17547function loadModeVideoDetails(videoIdUrl,accountId,websiteId,type,status) {
17548
17549    if(status){
17550        if(type == 'favourite_action'){
17551			type = 'video_remove_favourite';
17552        }
17553    }
17554
17555    var Payload = {
17556            "accountId": accountId,
17557            "videoId": videoIdUrl,
17558            "websiteId": websiteId,
17559            "type": type,
17560            "apiKey": $('#api_key').val(),
17561            "specialty": $('#video_player_specialty_dynamic').attr('specialty'),
17562            "therapeuticarea": $('#video_player_specialty_dynamic').attr('therapeuticarea'),
17563            "currentPage": $("#currentpage").val()
17564        };
17565
17566    var emailShareValue = $("#emailShare").val() || "";
17567    if (emailShareValue) {
17568        Payload.emailShare = emailShareValue;
17569    }
17570
17571    	$.ajax({
17572            type:"POST",
17573            url: "/bin/commercial/fetchVideosData",
17574			data: Payload,
17575            headers: {
17576                'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
17577            },
17578            success: function(response) {
17579
17580                console.log(response);
17581				displayModeValue(response);
17582            },
17583            error: function(result) {
17584				$(".carousel").removeClass("loading");
17585                //console.log(result);
17586            }
17587		}); 
17588}
17589
17590function displayModeValue(response){
17591    let initialLikeCount = parseInt($("#like_action span").text()) || 0;
17592	arrVideos=$(".mode_video_static_container");
17593	if(isModeVideoDynamic){
17594		if(response.type == 'dynamic'){
17595		$("#like_action, #dislike_action").removeClass('disabled-link disabled');
17596		if(response.liked == 'true'){
17597			$("#like_action").addClass('disabled-link disabled');
17598		}
17599		if(response.disliked == 'true'){
17600			$("#dislike_action").addClass('disabled-link disabled');
17601		}
17602		if(response.favourite == 'true'){
17603			$("#favourite_action").addClass('disabled-link');
17604            $("#favourite_action span").text($("#titleafteradding").val());
17605		}else if(response.favourite == 'false'){
17606			$("#favourite_action span").text($("#favtitle").val());
17607			 $("#favourite_action").removeClass('disabled-link');
17608		}
17609		if(response.name){
17610			$("#video_player_title_dynamic").text(response.name);
17611		}
17612		if(response.description){
17613			$("#video_player_desc_dynamic").text(response.description);
17614		}
17615		if(response.description==""){
17616				$("#video_player_desc_dynamic").text("");
17617		}
17618		if(response.specialty){
17619			/*var videoSpecialty = response.specialty.contains(",") ? response.specialty.split(",") : response.specialty;
17620			if(null != videoSpecialty){
17621			videoSpecialty.forEach((x, i) =>
17622			if($('#specialtyLoggedIn').val().includes(x[i].trim())){
17623				$(".video-static-specialty").show();
17624				break;
17625			});
17626			}*/
17627			$("#video_player_specialty_dynamic").text( $("#specialtylabel").val().concat(response.specialty));
17628            $("#video_player_specialty_dynamic").attr('specialty',response.specialty);
17629            $("#video_player_specialty_dynamic").attr('therapeuticarea',response.therapeuticarea);
17630		}
17631
17632
17633		if(inputValue === "manual") {
17634				let videoId = response.videoId; // Assume response contains the video ID                 
17635				let isLiked = JSON.parse(localStorage.getItem('isLikedArray')) || [];
17636            	let disLiked = JSON.parse(localStorage.getItem('isDislikedArray')) || [];
17637
17638				// Check if the video ID exists in the liked array
17639				if (isLiked.indexOf(videoId) !== -1) {
17640					// Add the 'disabled-link' class to the like button
17641					$("#like_action").addClass('disabled-link disabled');
17642                }else if(disLiked.indexOf(videoId) !== -1) {
17643                    $("#dislike_action").addClass('disabled-link disabled');
17644
17645                }
17646
17647
17648		}
17649
17650
17651    }
17652
17653
17654else if(response.type == 'like_action'){
17655    $("#like_action").addClass('disabled-link disabled');
17656    $("#dislike_action").removeClass('disabled-link disabled');
17657    let videoId = response.videoId; // Assume response contains the video ID
17658    let isLiked = JSON.parse(localStorage.getItem('isLikedArray')) || [];
17659    let isDisliked = JSON.parse(localStorage.getItem('isDislikedArray')) || [];
17660
17661    // Check if the video is in the disliked array, and remove it if it is
17662    if (isDisliked.indexOf(videoId) !== -1) {
17663                const index = isDisliked.indexOf(videoId);
17664        if (index > -1) { // only splice array when item is found
17665            isDisliked.splice(index, 1); // 2nd parameter means remove one item only
17666        }
17667        localStorage.setItem('isDislikedArray', JSON.stringify(isDisliked));
17668    }
17669
17670    // Check if the video ID is not already in the liked array
17671    if (isLiked.indexOf(videoId) === -1) {
17672        isLiked.push(videoId);
17673        localStorage.setItem('isLikedArray', JSON.stringify(isLiked));
17674          let currentLikeCount = parseInt($("#like_action span").text()) || initialLikeCount;
17675    $("#like_action").children('span').text(currentLikeCount + 1);
17676    }
17677
17678}
17679
17680else if(response.type == 'dislike_action'){
17681    $("#dislike_action").addClass('disabled-link disabled');
17682    $("#like_action").removeClass('disabled-link disabled');
17683    let videoId = response.videoId; // Assume response contains the video ID
17684    let isLiked = JSON.parse(localStorage.getItem('isLikedArray')) || [];
17685    let isDisliked = JSON.parse(localStorage.getItem('isDislikedArray')) || [];
17686
17687
17688    if (isLiked.indexOf(videoId) !== -1) {
17689        const index = isLiked.indexOf(videoId);
17690        if (index > -1) { // only splice array when item is found
17691            isLiked.splice(index, 1); // 2nd parameter means remove one item only
17692        }
17693        localStorage.setItem('isLikedArray', JSON.stringify(isLiked));
17694    }
17695
17696
17697    if (isDisliked.indexOf(videoId) === -1) {
17698        isDisliked.push(videoId);
17699        localStorage.setItem('isDislikedArray', JSON.stringify(isDisliked));
17700    }
17701
17702
17703    let currentLikeCount = parseInt($("#like_action span").text()) || initialLikeCount;
17704    if (currentLikeCount > initialLikeCount) {
17705       response.likecount--;
17706            $("#like_action").children('span').text(response.likecount);
17707    }
17708}
17709
17710    else if(response.type == 'favourite_action'){
17711		$("#favourite_action").addClass('disabled-link');
17712        $("#favourite_action span").text($("#titleafteradding").val());
17713    }
17714    else if(response.type == 'video_remove_favourite'){
17715
17716        if($("#favourite_action").hasClass('disabled-link')){
17717            $("#favourite_action").removeClass('disabled-link')
17718			$("#favourite_action span").text($("#favtitle").val());
17719		}
17720    }
17721	if(response.name) {
17722		var videoidUrl=getQueryStringValue("videoid");
17723        if(!(videoidUrl == undefined || videoidUrl == '')){
17724			$(".cmp-breadcrumb__item[index='4'] span").text(response.name);
17725			$(".cmp-breadcrumb__item--active").removeClass("cmp-breadcrumb__item--active");
17726			$(".cmp-breadcrumb__item[index='4']").removeClass("hide").addClass("cmp-breadcrumb__item--active");
17727			$(".breadcrumb_mode").show().removeClass("white");
17728			$(".video-player-title").text(response.name);
17729		}
17730	}
17731	$("#like_action").children('span').text("");
17732	if(response.likecount > 0){
17733		$("#like_action").children('span').text(response.likecount);
17734		// if(response.dislikeCount==0){
17735			// $("#dislike_action").children('span').text("");
17736		// }
17737	}
17738	if(response.dislikeCount > 0){
17739		// $("#dislike_action").children('span').text(response.dislikeCount);
17740		if(response.likecount==0){
17741			$("#like_action").children('span').text("");
17742		}
17743	}
17744	}else{
17745	for(let i=0;i<arrVideos.length;i++){
17746		if(arrVideos[i].getAttribute("value")==response.videoId){
17747			var like_action=arrVideos[i].querySelector('#like_action');
17748			var dislike_action=arrVideos[i].querySelector('#dislike_action');
17749			var favourite_action=arrVideos[i].querySelector('#favourite_action');
17750		if(response.type == 'dynamic'){
17751				$(like_action).removeClass('disabled-link disabled');
17752				$(dislike_action).removeClass('disabled-link disabled');
17753
17754				// var favourite_action=arrVideos[i].querySelector('#favourite_action');
17755
17756				if(response.liked == 'true'){
17757					like_action.classList.add("disabled-link", "disabled");
17758				}
17759				if(response.disliked == 'true'){
17760					dislike_action.classList.add("disabled-link", "disabled");
17761				}
17762				if(response.favourite == 'true'){
17763					favourite_action.classList.add('disabled-link');
17764	
17765					arrVideos[i].querySelector("#favourite_action span").innerHTML=$("#titleafteradding").val();
17766
17767
17768					// $("#favourite_action span").text($("#titleafteradding").val());
17769				}else if(response.favourite == 'false'){
17770					arrVideos[i].querySelector("#favourite_action span").innerHTML=$("#favtitle").val();
17771					// $("#favourite_action span").text($("#favtitle").val());
17772					favourite_action.classList.remove('disabled-link');
17773					// $("#favourite_action").removeClass('disabled-link');
17774				}
17775
17776				if(response.name){
17777					$("#video_player_title_dynamic").text(response.name);
17778				}
17779				if(response.description){
17780					arrVideos[i].querySelector("#video_player_desc_dynamic").innerHTML=response.description;
17781					// $("#video_player_desc_dynamic").text(response.description);
17782				}
17783				if(response.description==""){
17784					arrVideos[i].querySelector("#video_player_desc_dynamic").innerHTML="";
17785					// $("#video_player_desc_dynamic").text("");
17786				}
17787				if (response.therapeuticarea) {
17788                        arrVideos[i].querySelector("#video_player_specialty_dynamic").setAttribute('therapeuticarea', response.therapeuticarea);
17789                }
17790				if(response.specialty){
17791					// arrVideos[i].querySelector("#video_player_specialty_dynamic").innerHTML=$("#specialtylabel").val().concat("");
17792					arrVideos[i].querySelector("#video_player_specialty_dynamic").innerHTML=$("#specialtylabel").val().concat(response.specialty);
17793					arrVideos[i].querySelector("#video_player_specialty_dynamic").setAttribute('specialty',response.specialty)
17794
17795
17796					// to hide featured video which doesn't match
17797					// var featured_video_shown_specialty="";
17798					// var user_specialty=$('.video-player_mode').find("#specialtyLoggedIn").val()
17799					// var featured_video_specialty_list=[];
17800					// $(".video-player-specialty").map((key,val)=>
17801					// {
17802					// 		featured_video_specialty_list.push($(val).attr("specialty"))
17803					// })
17804
17805					// featured_video_specialty_list.sort(function(a, b){
17806					// 	return a.length - b.length;
17807					// });
17808
17809					// var specialtyMatches=false;
17810					// var multi_specialty_check=false;
17811
17812					// featured_video_specialty_list.map((featured_video_single_specialty,key)=>{
17813					// 	specialtyMatches=false;
17814					// 	var featured_video_specialty_single_list=[];
17815					// 	var specialty_single_length;
17816					// 	if(specialtyMatches && multi_specialty_check){
17817					// 		return;
17818					// 	}
17819					// 	// for multispecialty featured video
17820					// 	if(featured_video_single_specialty.includes(",")){
17821					// 		multi_specialty_check=true;
17822					// 		featured_video_specialty_single_list=featured_video_single_specialty.split(",").map((item)=>{return item.trim()})
17823					// 		specialty_single_length=featured_video_specialty_single_list.length;
17824
17825					// 		for(var i=0;i<specialty_single_length;i++){
17826					// 			if(user_specialty.includes(featured_video_specialty_single_list[i])){
17827					// 				specialtyMatches=true;
17828					// 				if(featured_video_shown_specialty.length==0){
17829					// 					featured_video_shown_specialty=featured_video_single_specialty
17830					// 				}
17831					// 			}
17832					// 			else{
17833					// 				specialtyMatches=false;
17834					// 				if(featured_video_shown_specialty.length>0){
17835					// 					return;
17836					// 				}
17837					// 			}
17838					// 		}
17839					// 	}else{
17840					// 		if(user_specialty.includes(featured_video_single_specialty) && !multi_specialty_check){
17841					// 			specialtyMatches=true;
17842					// 		}
17843					// 	}
17844					// 	if(specialtyMatches){
17845					// 		featured_video_shown_specialty=featured_video_single_specialty
17846					// 	}
17847					// })
17848
17849					// var mode_videos_player=$(".video-player_mode")
17850					// if($(".mode_video_static").length>0){
17851					// 	mode_videos_player.map((index,value)=>{
17852					// 		if($(value).find('.video-player-specialty').attr("specialty")===featured_video_shown_specialty){
17853					// 			$(value).find('.mode_video_static').show();
17854					// 		}
17855					// 	})
17856					// }
17857					//$("#video_player_specialty_dynamic").text( $("#specialtylabel").val().concat(response.specialty));
17858					//$("#video_player_specialty_dynamic").attr('specialty',response.specialty);
17859				}
17860
17861			}
17862		else if(response.type == 'like_action'){
17863			$(like_action).addClass('disabled-link disabled');
17864			$(dislike_action).removeClass('disabled-link disabled');
17865
17866
17867			// $("#like_action").addClass('disabled-link');
17868			// $("#dislike_action").removeClass('disabled-link');
17869		}
17870		else if(response.type == 'dislike_action'){
17871			$(dislike_action).addClass('disabled-link disabled');
17872			$(like_action).removeClass('disabled-link disabled');
17873
17874			// $("#dislike_action").addClass('disabled-link');
17875			// $("#like_action").removeClass('disabled-link');
17876		}
17877		else if(response.type == 'favourite_action'){
17878			favourite_action.classList.add('disabled-link');
17879			// $("#favourite_action").addClass('disabled-link');
17880			arrVideos[i].querySelector("#favourite_action span").innerHTML=$("#titleafteradding").val();
17881
17882			// $("#favourite_action span").text($("#titleafteradding").val());
17883		}
17884		else if(response.type == 'video_remove_favourite'){
17885			if(favourite_action.classList.contains('disabled-link')){
17886				favourite_action.classList.remove('disabled-link');
17887				arrVideos[i].querySelector("#favourite_action span").innerHTML=$("#favtitle").val();
17888			}
17889			// if($("#favourite_action").hasClass('disabled-link')){
17890				// $("#favourite_action").removeClass('disabled-link')
17891				// $("#favourite_action span").text($("#favtitle").val());
17892			// }
17893		}
17894		if(response.name) {
17895		var videoidUrl=getQueryStringValue("videoid");
17896        if(!(videoidUrl == undefined || videoidUrl == '')){
17897			$(".cmp-breadcrumb__item[index='4'] span").text(response.name);
17898			$(".cmp-breadcrumb__item--active").removeClass("cmp-breadcrumb__item--active");
17899			$(".cmp-breadcrumb__item[index='4']").removeClass("hide").addClass("cmp-breadcrumb__item--active");
17900			$(".breadcrumb_mode").show().removeClass("white");
17901			$(".video-player-title").text(response.name);
17902		}
17903	}
17904
17905	if(response.likecount > 0){
17906		arrVideos[i].querySelector("#like_action span").innerHTML=response.likecount;
17907		// $("#like_action").children('span').text(response.likecount);
17908		// if(response.dislikeCount==0){
17909			// $("#dislike_action").children('span').text("");
17910		// }
17911	}
17912	if(response.dislikeCount > 0){
17913		// $("#dislike_action").children('span').text(response.dislikeCount);
17914		if(response.likecount==0){
17915			arrVideos[i].querySelector("#like_action span").innerHTML="";
17916		}
17917	}
17918	}}
17919}
17920}
17921if($(".mode_player").length>0){
17922	$('.mode_player .video-player-actions a').on('keydown',function(event){
17923		if(event.which===13){
17924			$(this).click();
17925		}
17926	})
17927}
17928
17929//
17930function mode_showSpecialtyVideo(){
17931	// var featured_video_shown_specialty="";
17932	// var user_specialty=$('.video-player_mode').find("#specialtyLoggedIn").val()
17933	// var featured_video_specialty_list=[];
17934	// $(".video-player-specialty").map((key,val)=>
17935	// {
17936			// featured_video_specialty_list.push($(val).attr("specialty"))
17937	// })
17938
17939	// featured_video_specialty_list.sort(function(a, b){
17940		// return a.length - b.length;
17941	// });
17942
17943	// var specialtyMatches=false;
17944	// var multi_specialty_check=false;
17945
17946	// featured_video_specialty_list.map((featured_video_single_specialty,key)=>{
17947		// specialtyMatches=false;
17948		// var featured_video_specialty_single_list=[];
17949		// var specialty_single_length;
17950		// if(specialtyMatches && multi_specialty_check){
17951			// return;
17952		// }
17953		// for multispecialty featured video
17954		// if(featured_video_single_specialty.includes(",")){
17955			// multi_specialty_check=true;
17956			// featured_video_specialty_single_list=featured_video_single_specialty.split(",").map((item)=>{return item.trim()})
17957			// specialty_single_length=featured_video_specialty_single_list.length;
17958
17959			// for(var i=0;i<specialty_single_length;i++){
17960				// if(user_specialty.includes(featured_video_specialty_single_list[i])){
17961					// specialtyMatches=true;
17962					// if(featured_video_shown_specialty.length==0){
17963						// featured_video_shown_specialty=featured_video_single_specialty
17964					// }
17965				// }
17966				// else{
17967					// specialtyMatches=false;
17968					// if(featured_video_shown_specialty.length>0){
17969						// return;
17970					// }
17971				// }
17972			// }
17973		// }else{
17974			// if(user_specialty.includes(featured_video_single_specialty) && !multi_specialty_check){
17975				// specialtyMatches=true;
17976			// }
17977		// }
17978		// if(specialtyMatches){
17979			// featured_video_shown_specialty=featured_video_single_specialty
17980		// }
17981	// })
17982
17983
17984	var mode_videos_player=$(".video-player_mode");
17985
17986	if($(".mode_video_static").length>0){
17987		let videoPlayerDisplayedCount = 0;
17988		mode_videos_player.map((index,value)=>{
17989			// if($(value).find('.video-player-specialty').attr("specialty")===featured_video_shown_specialty && featured_video_shown_specialty.length>0){
17990				// $(value).find('.mode_video_static').show();
17991				// clearInterval(mode_showSpecialtyVideo);
17992			// }
17993			if(videoPlayerDisplayedCount == 1) {
17994                return;
17995            }
17996            if ($(value).find('.video-player-specialty').attr("therapeuticarea") === $(value).find('#therapeuticareaLoggedIn').val()) {
17997                $(value).find('.mode_video_static').show();
17998                clearInterval(videoIntervalID);
17999                videoPlayerDisplayedCount++;
18000                return;
18001            }
18002		})
18003	}
18004}
18004
18005
18006const videoIntervalID = setInterval(mode_showSpecialtyVideo,2000);
18007
18008function getQueryStringValue (key) {
18009    return decodeURIComponent(window.location.search.replace(new RegExp("^(?:.*[&\\?]" + encodeURIComponent(key).replace(/[\.\+\*]/g, "\\$&") + "(?:\\=([^&]*))?)?.*$", "i"), "$1"));
18010}
18011function loadModeVideo(videoId, videoTitle){
18012    var player = null;
18013    //var videojs = null;
18014    var accountId = $("#accountId").val();
18015    var playerId = $("#playerId").val();
18016
18017    if(videoTitle) {
18018		$(".cmp-breadcrumb__item[index='4'] span").text(videoTitle);
18019		$(".cmp-breadcrumb__item--active").removeClass("cmp-breadcrumb__item--active");
18020		$(".cmp-breadcrumb__item[index='4']").removeClass("hide").addClass("cmp-breadcrumb__item--active");
18021		$(".breadcrumb_mode").show().removeClass("white");
18022		$(".video-player-title").text(videoTitle);
18023    }
18024    $('.video-list-player').empty();
18025
18026    $('.video-list-player').html('<video id="myPlayerID" style="width: 100%; height: 100%;" data-video-id="'+videoId+'" data-account="'+accountId+'" data-player="'+playerId+'" data-embed="default"data-application-id class="video-js" controls></video><script src="//players.brightcove.net/'+accountId+'/'+playerId+'_default/index.min.js"></script>');
18027
18028    if(typeof $(".video-player-cont-dynamic") !== undefined){
18029    	$(".video-player-cont-dynamic").show();
18030    }
18031	$(".mode_player .modeVideoID").each(function(){
18032		if(!$(this).val()){$(this).val(videoId)}
18033		if(videoId === $(this).val()){			
18034			var shareURL = $(this).parents('.mode_player').find(".share-action").attr("href");
18035		    shareURL = shareURL.substr(0, (shareURL.indexOf("videoid") + 8));
18036		    shareURL = shareURL + videoId;
18037		    $(this).parents('.mode_player').find(".share-action").attr("href", shareURL);
18038		}
18039	})
18040    // var shareURL = $(".share-action").attr("href");
18041    // shareURL = shareURL.substr(0, (shareURL.indexOf("videoid") + 8));
18042    // shareURL = shareURL + videoId;
18043    // $(".share-action").attr("href", shareURL);
18044
18045
18046	var websiteId = $("#websiteId").val();
18047	loadModeVideoDetails(videoId,accountId,websiteId,"dynamic");
18048    videoModeDownload();
18049}
18050function videoModeDownload(content)
18051{
18052	var content = setInterval(function(){
18053		if(typeof(videojs) != "undefined" && videojs) {
18054			videojs.getPlayer('myPlayerID').ready(function() {
18055				var myPlayer = this,
18056				videoName,
18057				totalRenditions,
18058				mp4Ara = [],
18059				highestQuality,
18060				spacer,
18061				newElement = document.createElement('div'),
18062				newImage = document.createElement('img');
18063
18064				myPlayer.on('loadstart', function() {
18065					//Reinitialize array of MP4 renditions in case used with playlist
18066					//This prevents the array having a cumulative list for all videos in playlist
18067					mp4Ara = [];
18068
18069					// +++ Get video name and the MP4 renditions +++
18070					videoName = myPlayer.mediainfo['name'];
18071					videoName = removeSpaces(videoName);
18072					var rendtionsAra = myPlayer.mediainfo.sources;
18073					totalRenditions = rendtionsAra.length;
18074
18075					// +++ Loop over videos and extract only MP4 versions +++
18076					for (var i = 0; i < totalRenditions; i++) {
18077						if (rendtionsAra[i].container === "MP4" && rendtionsAra[i].hasOwnProperty('src')) {
18078							mp4Ara.push(rendtionsAra[i]);
18079						};
18080					};
18081
18082					// +++ Sort the renditions from highest to lowest on size+++
18083					mp4Ara.sort(function(a, b) {
18084						return b.size - a.size;
18085					});
18086
18087					// +++ Extract the highest rendition +++
18088					highestQuality = mp4Ara[0].src;
18089
18090					// +++ On image click call the download function +++
18091					$(".download-action").off("click").on("click", function(){
18092						// The download function forces download by the browsers
18093						// NOT opening the video in a new window/tab
18094						var x=new XMLHttpRequest();
18095						x.open("GET", highestQuality, true);
18096						x.responseType = 'blob';
18097						x.onload=function(e){doDownload(x.response, videoName, "video/mp4"); }
18098						x.send();
18099                        $(".download-progress-msg").show();
18100                        setTimeout(function(){
18101							$(".download-progress-msg").hide();
18102                        }, 3000)
18103					});
18104				})
18105
18106				myPlayer.trigger('loadstart');
18107				clearInterval(content);
18108			}, 1000);
18109		}
18110	});
18111}
18112
18113/*
18114 * remove spaces from a string
18115 * @param {String} str string to process
18116 * @return {String} trimmed string
18117 */
18118function removeSpaces(str) {
18119 try {
18120  str= str.replace(/\s/g, '');
18121  return str;
18122 }
18123 catch(e) {
18124	console.log("Stringreplace");
18125 }
18126
18127}
18128
18129//download.js v4.2, by dandavis; 2008-2016. [CCBY2] see http://danml.com/download.html for tests/usage
18130// v1 landed a FF+Chrome compat way of downloading strings to local un-named files, upgraded to use a hidden frame and optional mime
18131// v2 added named files via a[download], msSaveBlob, IE (10+) support, and window.URL support for larger+faster saves than dataURLs
18132// v3 added dataURL and Blob Input, bind-toggle arity, and legacy dataURL fallback was improved with force-download mime and base64 support. 3.1 improved safari handling.
18133// v4 adds AMD/UMD, commonJS, and plain browser support
18134// v4.1 adds url download capability via solo URL argument (same domain/CORS only)
18135// v4.2 adds semantic variable names, long (over 2MB) dataURL support, and hidden by default temp anchors
18136// https://github.com/rndme/download
18137
18138(function(root, factory) {
18139if (typeof define === 'function' && define.amd) {
18140  // AMD. Register as an anonymous module.
18141  define([], factory);
18142} else if (typeof exports === 'object') {
18143  // Node. Does not work with strict CommonJS, but
18144  // only CommonJS-like environments that support module.exports,
18145  // like Node.
18146  module.exports = factory();
18147} else {
18148  // Browser globals (root is window)
18149  root.doDownload = factory();
18150}
18151}(this, function() {
18152
18153return function doDownload(data, strFileName, strMimeType) {
18154
18155  var self = window, // this script is only for browsers anyway...
18156	defaultMime = "application/octet-stream", // this default mime also triggers iframe downloads
18157	mimeType = strMimeType || defaultMime,
18158	payload = data,
18159	url = !strFileName && !strMimeType && payload,
18160	anchor = document.createElement("a"),
18161	toString = function(a) {
18162	  return String(a);
18163	},
18164	myBlob = (self.Blob || self.MozBlob || self.WebKitBlob || toString),
18165	fileName = strFileName || "download",
18166	blob,
18167	reader;
18168  myBlob = myBlob.call ? myBlob.bind(self) : Blob;
18169
18170  if (String(this) === "true") { //reverse arguments, allowing download.bind(true, "text/xml", "export.xml") to act as a callback
18171	payload = [payload, mimeType];
18172	mimeType = payload[0];
18173	payload = payload[1];
18174  }
18175
18176
18177  if (url && url.length < 2048) { // if no filename and no mime, assume a url was passed as the only argument
18178	fileName = url.split("/").pop().split("?")[0];
18179	anchor.href = url; // assign href prop to temp anchor
18180	if (anchor.href.indexOf(url) !== -1) { // if the browser determines that it's a potentially valid url path:
18181	  var ajax = new XMLHttpRequest();
18182	  ajax.open("GET", url, true);
18183	  ajax.responseType = 'blob';
18184	  ajax.onload = function(e) {
18185		download(e.target.response, fileName, defaultMime);
18186	  };
18187	  setTimeout(function() {
18188		ajax.send();
18189	  }, 0); // allows setting custom ajax headers using the return:
18190	  return ajax;
18191	} // end if valid url?
18192  } // end if url?
18193
18194
18195  //go ahead and download dataURLs right away
18196  if (/^data\:[\w+\-]+\/[\w+\-]+[,;]/.test(payload)) {
18197
18198	if (payload.length > (1024 * 1024 * 1.999) && myBlob !== toString) {
18199	  payload = dataUrlToBlob(payload);
18200	  mimeType = payload.type || defaultMime;
18201	} else {
18202	  return navigator.msSaveBlob ? // IE10 can't do a[download], only Blobs:
18203		navigator.msSaveBlob(dataUrlToBlob(payload), fileName) :
18204		saver(payload); // everyone else can save dataURLs un-processed
18205	}
18206
18207  } //end if dataURL passed?
18208
18209  blob = payload instanceof myBlob ?
18210	payload :
18211	new myBlob([payload], {
18212	  type: mimeType
18213	});
18214
18215
18216  function dataUrlToBlob(strUrl) {
18217	var parts = strUrl.split(/[:;,]/),
18218	  type = parts[1],
18219	  decoder = parts[2] == "base64" ? atob : decodeURIComponent,
18220	  binData = decoder(parts.pop()),
18221	  mx = binData.length,
18222	  i = 0,
18223	  uiArr = new Uint8Array(mx);
18224
18225	for (i; i < mx; ++i) uiArr[i] = binData.charCodeAt(i);
18226
18227	return new myBlob([uiArr], {
18228	  type: type
18229	});
18230  }
18231
18232  function saver(url, winMode) {
18233
18234	if ('download' in anchor) { //html5 A[download]
18235	  anchor.href = url;
18236	  anchor.setAttribute("download", fileName);
18237	  anchor.className = "download-js-link";
18238	  anchor.innerHTML = "downloading...";
18239	  anchor.style.display = "none";
18240	  document.body.appendChild(anchor);
18241	  setTimeout(function() {
18242		anchor.click();
18243		document.body.removeChild(anchor);
18244		if (winMode === true) {
18245		  setTimeout(function() {
18246			self.URL.revokeObjectURL(anchor.href);
18247		  }, 250);
18248		}
18249	  }, 66);
18250	  return true;
18251	}
18252
18253	// handle non-a[download] safari as best we can:
18254	if (/(Version)\/(\d+)\.(\d+)(?:\.(\d+))?.*Safari\//.test(navigator.userAgent)) {
18255	  url = url.replace(/^data:([\w\/\-\+]+)/, defaultMime);
18256	  if (!window.open(url)) { // popup blocked, offer direct download:
18257		if (confirm("Displaying New Document\n\nUse Save As... to download, then click back to return to this page.")) {
18258		  location.href = url;
18259		}
18260	  }
18261	  return true;
18262	}
18263
18264	//do iframe dataURL download (old ch+FF):
18265	var f = document.createElement("iframe");
18266	document.body.appendChild(f);
18267
18268	if (!winMode) { // force a mime that will download:
18269	  url = "data:" + url.replace(/^data:([\w\/\-\+]+)/, defaultMime);
18270	}
18271	f.src = url;
18272	setTimeout(function() {
18273	  document.body.removeChild(f);
18274	}, 333);
18275
18276  } //end saver
18277
18278
18279  if (navigator.msSaveBlob) { // IE10+ : (has Blob, but not a[download] or URL)
18280	return navigator.msSaveBlob(blob, fileName);
18281  }
18282
18283  if (self.URL) { // simple fast and modern way using Blob and URL:
18284	saver(self.URL.createObjectURL(blob), true);
18285  } else {
18286	// handle non-Blob()+non-URL browsers:
18287	if (typeof blob === "string" || blob.constructor === toString) {
18288	  try {
18289		return saver("data:" + mimeType + ";base64," + self.btoa(blob));
18290	  } catch (y) {
18291		return saver("data:" + mimeType + "," + encodeURIComponent(blob));
18292	  }
18293	}
18294
18295	// Blob but not URL support:
18296	reader = new FileReader();
18297	reader.onload = function(e) {
18298	  saver(this.result);
18299	};
18300	reader.readAsDataURL(blob);
18301  }
18302  return true;
18303}; /* end download() */
18304}));
18305var carousel_response = {};
18306var active_carousel_type = "";
18307var slidesPerPageComp = 4;
18308var slidesPerPageDefault = slidesPerPageComp;
18309$(document).ready(function() {
18310	if(window.matchMedia('(max-width: 550px)').matches){
18311		$(".mode_featured_videos p.carousel-title,#mode_videos_list p.video-list-title").each(function (i,val) {
18312			if($(val).text().length>36){
18313			$(val).text($(val).text().substring(0,34)+"...")
18314			}   
18315		});	
18316	}		
18317	if(window.matchMedia('(min-width: 1024px)').matches) {
18318		$(".mode_featured_videos .video-carousel").each(function(index){
18319			var id = $(this).attr("id");
18320			var count = parseInt($("#"+id+"_info").data("count"));
18321			if(count < slidesPerPageDefault) {
18322				slidesPerPageComp = count;
18323			}
18324            else {
18325				slidesPerPageComp = slidesPerPageDefault;
18326            }
18327			var limit = parseInt($("#"+id+"_info").data("limit"));
18328			$(this).attr("slides-per-page", slidesPerPageComp);
18329			$(this).attr("type", $("#"+id+"_info").data("type"));
18330			$(this).attr("totalCount", count);
18331			limit = (count < limit) ? count : limit;
18332            $(this).attr("limit", limit);
18333			$(this).attr("next-offset", $("#"+id+"_info").data("limit"));
18334			$(this).attr("total-slides", (limit-1));
18335			$(this).attr("account-id", $("#"+id+"_info").data("accountid"));
18336			$(this).attr("websiteid", $("#"+id+"_info").data("websiteid"));
18337			carousel_response[id]  = $("#"+id+"_info").data("response");
18338		});
18339		$(".mode_featured_videos .video-carousel .carousel-item[index='0']").addClass("active");
18340		createModeVideoCourasel();
18341		$(".mode_featured_videos .carousel-control-prev").addClass("disabled");
18342	}
18343	if($(".mode_featured_videos .video-list-cont,#mode_videos_list .video-list-cont").length) {
18344		var totalCount = parseInt($(".meta-data-span").data("count"));
18345		var limit = parseInt($(".meta-data-span").data("limit"));
18346		if(totalCount > limit ) {
18347			$(".videos-see-more").css('display','flex');
18348		}
18349	}
18350	$(".mode_featured_videos .videos-see-more,#mode_videos_list .videos-see-more").click(function(){
18351		var nextOffset = parseInt($(this).attr("next-offset"));
18352		var totalCount = parseInt($(".meta-data-span").data("count"));
18353		if(totalCount > nextOffset) {			
18354			var fetchVideoPayload = {
18355				"type": $(".meta-data-span").data("type"),
18356				"accountId": $(".meta-data-span").data("accountid"),
18357				"limit": parseInt($(".meta-data-span").data("limit")),
18358				"offset": parseInt(nextOffset),
18359				"website_id": $(".meta-data-span").data("websiteid"),
18360				"currentPage" : $("#currentpage").val()
18361			}
18362			fetchModeVideo(fetchVideoPayload, true);
18363			nextOffset += parseInt($(".meta-data-span").data("limit"));
18364			if(nextOffset >= totalCount) {
18365				$(".videos-see-more").hide();
18366			}
18367			else {
18368				$(this).attr("next-offset", nextOffset);
18369			}
18370		}	
18371	});
18372	if (window.matchMedia('(min-width: 1023px)').matches) {
18373	var eqheight = 0;
18374	$(".mode_featured_videos .carousel-item a,#mode_videos_list .video-list-item a").each(function(){
18375		var tileheight= $(this).find('.tile-img').height()+$(this).find('.tile-cnt').height()+$(this).find('.tile-cnt > div').height()+27;
18376	  if (tileheight > eqheight) { eqheight = tileheight; }
18377	});
18378	$(".mode_featured_videos .carousel-item a,#mode_videos_list .video-list-item a").css('min-height',eqheight);
18379	}
18380	
18381	if(window.location.href.search("protected/recently-added") >-1 || window.location.href.search("protected/most-liked") >-1){
18382		$("#mode_videos_list h1").css("font-size","36px");
18383	}
18384	
18385	$("#mode_videos_list .filter-options li").filter(function(idx) {
18386		if(this.innerHTML.indexOf("All") == 0){
18387			$(this).toggleClass('active');
18388		}
18389	});
18390	$('.modevideos span[aria-label="Scroll video carousel"]').on('keydown',function(event){
18391		if(event.which===13){
18392			$(this).click();
18393		}
18394	})
18395});
18396
18397function createModeVideoCourasel() {
18398	if(active_carousel_type) {
18399		$('#'+active_carousel_type+'.video-carousel.carousel .carousel-item').each(function() {
18400			var next = $(this).next();
18401			if (!next.length) {
18402				next = $(this).siblings(':first');
18403			}
18404			next.children(':first-child').clone().appendTo($(this));
18405			var limit = $(this).closest(".carousel").attr("carousel-limit");
18406			var slidesPerPage = $(this).closest(".carousel").attr("slides-per-page");
18407			for (var i = 1; i < (slidesPerPage-1); i++) {
18408				next = next.next();
18409				if (!next.length) {
18410					next = $(this).siblings(':first');
18411				}
18412				next.children(':first-child').clone().appendTo($(this));
18413			}
18414		});
18415		var activeSlide = $("#"+active_carousel_type).attr("active-slide");	
18416		$("#"+active_carousel_type +" .carousel-item[index='"+activeSlide+"']").addClass("active");
18417	}
18418	else {
18419		
18420		$('.mode_featured_videos .video-carousel.carousel .carousel-item').each(function() {
18421			var next = $(this).next();
18422			if (!next.length) {
18423				next = $(this).siblings(':first');
18424			}
18425			next.children(':first-child').clone().appendTo($(this));
18426			var limit = $(this).closest(".carousel").attr("carousel-limit");
18427			var slidesPerPage = $(this).closest(".carousel").attr("slides-per-page");
18428			for (var i = 1; i < (slidesPerPage-1); i++) {
18429				next = next.next();
18430				if (!next.length) {
18431					next = $(this).siblings(':first');
18432				}
18433				next.children(':first-child').clone().appendTo($(this));
18434			}
18435		});
18436	}
18437    $('.mode_featured_videos .video-carousel').carousel({
18438        interval: false,
18439        wrap: false
18440    });
18441    $('.mode_featured_videos .video-carousel').off('slide.bs.carousel').on('slide.bs.carousel', function(event) {
18442        console.log(event);
18443        console.log(event.to);
18444		var limit = parseInt($(this).closest(".carousel").attr("limit"));
18445		var totalcount = parseInt($(this).closest(".carousel").attr("totalcount"));
18446		if(slidesPerPageDefault < totalcount){			
18447			$(this).find(".carousel-control-prev").removeClass("disabled");
18448			$(event.target).attr("active-slide", event.to);
18449			if (!$(".video-carousel.carousel").hasClass("loading")) {
18450				var nextOffset = parseInt($(this).closest(".carousel").attr("next-offset"));
18451				var type = $(this).closest(".carousel").attr("type");
18452				active_carousel_type = type;
18453				var accountId = $(this).closest(".carousel").attr("account-id");
18454				var website_id = $(this).closest(".carousel").attr("websiteid");
18455				var totalSlides = parseInt($(this).closest(".carousel").attr("total-slides"));
18456				if (event.direction == "left") {
18457					if(!($(this).find('.carousel-control-next').hasClass("disabled"))) {						
18458						if(event.to == (totalSlides - (slidesPerPageDefault - 1))) {						
18459							if (nextOffset < totalcount) {
18460								$(".video-carousel.carousel").addClass("loading");
18461								var fetchVideoPayload = {
18462									"type": type,
18463									"accountId": accountId,
18464									"limit": parseInt(limit),
18465									"offset": parseInt(nextOffset),
18466									"website_id": website_id
18467								}
18468								fetchModeVideo(fetchVideoPayload);
18469								$(this).find('.carousel-control-next').addClass("disabled");
18470							} 
18471							else {
18472								$(this).find('.carousel-control-next').addClass("disabled");
18473							}
18474						}
18475						if(event.to == (totalcount - slidesPerPageDefault)) {	
18476							$(this).find('.carousel-control-next').addClass("disabled");
18477						}
18478						else if(event.to > (totalcount - slidesPerPageDefault)) {
18479							return false;
18480						}
18481					}
18482					else { 
18483						return false;
18484					}
18485				}
18486				else { 
18487					$(".carousel-control-next", event.terget).removeClass("disabled");
18488					if(event.to == 0 ){
18489						$(".carousel-control-prev", event.terget).addClass("disabled");
18490					}
18491				}
18492			} 
18493			else {
18494				return false;
18495			}
18496		}
18497		else {
18498	        return false;
18499        }
18500    });
18501}
18502function generateModeVideosHTML(mVideos, isListingPage) {
18503	if(isListingPage) {
18504		if(mVideos.length) {
18505			var innerVideosHTML = "";  
18506			for (var i = 0; i < mVideos.length; i++) {
18507				console.log(mVideos[i]);
18508				innerVideosHTML = innerVideosHTML + '<div class="video-list-item"><a href="" videoid="'+mVideos[i].id+'" class="video-list-link" tabindex="0" role="link"><img src="'+mVideos[i].poster+'" class="video-list-img"><p class="video-list-title">'+(mVideos[i].name)+'</p><p class="video-list-duration">'+mVideos[i].duration+'</p></a></div>';
18509			}
18510			$("#mode_videos_list .video-list-inner").append(innerVideosHTML)
18511		}
18512	}
18513	else {		
18514		if(mVideos.length) {
18515			carousel_response[active_carousel_type] = carousel_response[active_carousel_type].concat(mVideos);
18516			var carouselVideos = carousel_response[active_carousel_type];
18517			var nextOffset = $("#"+active_carousel_type).attr("next-offset");
18518			var totalCount = $("#"+active_carousel_type).attr("totalcount");
18519			var limit = $("#"+active_carousel_type).attr("limit");
18520			var totalSlides = $("#"+active_carousel_type).attr("total-slides");
18521			totalSlides = parseInt(totalSlides) + parseInt(limit);
18522			nextOffset = parseInt(nextOffset) + parseInt(limit);
18523			totalSlides = (totalSlides > totalCount) ? totalCount : totalSlides;
18524			$("#"+active_carousel_type).attr("total-slides", totalSlides);
18525			$("#"+active_carousel_type).attr("next-offset", nextOffset);
18526			let innerVideosHTML = '';
18527			for (var i = 0; i < carouselVideos.length; i++) {
18528				console.log(carouselVideos[i]);
18529				// innerVideosHTML = innerVideosHTML + '<div class="carousel-item"  index="'+i+'"><a href="" videoid="'+carouselVideos[i].id+'" class="carousel-link"><img src="'+carouselVideos[i].thumbnail+'" class="carousel-img"><p class="carousel-title">'+(carouselVideos[i].name)+'</p><p class="carousel-duration">'+carouselVideos[i].duration+'</p></a></div>';
18530				innerVideosHTML = innerVideosHTML +'<div class="carousel-item" index="'+i+'"><a href="" videoid="'+carouselVideos[i].id+'" class="carousel-link" style="min-height: 315.2px;"><div class="tile-img"><img src="'+carouselVideos[i].poster+'" class="carousel-img" alt=""><span class="videoCommonThumbnail"></span><p class="carousel-duration">'+carouselVideos[i].duration+'</p></div><div class="tile-cnt"><p class="carousel-title">'+(carouselVideos[i].name)+'</p><div><p class="video-list-specialty">'+carouselVideos[i].specialty+'</p><p class="btm-icons text-right mb-0"><span class="like-blk"></span></p></div></div></a></div>';
18531			}
18532			$("#"+active_carousel_type+" .carousel-inner > div").html("").html(innerVideosHTML);
18533			$("#"+active_carousel_type).find('.carousel-control-next').removeClass("disabled");
18534			createModeVideoCourasel();
18535		}
18536	}
18537}
18538function fetchModeVideo(fetchVideoPayload, isListingPage) {
18539
18540    $.ajax({
18541        type: "POST",
18542        url: "/bin/commercial/videoslisting",
18543        data: fetchVideoPayload,
18544		dataType: "json",
18545        headers: new Headers({
18546            'Content-Type': 'application/json'
18547        }),
18548        success: function(response) {
18549            console.log(response);
18550			$(".mode_featured_videos .video-carousel.carousel").removeClass("loading");
18551            generateModeVideosHTML(response, isListingPage);
18552        },
18553        error: function(result) {
18554            console.log(result);
18555			$(".mode_featured_videos .video-carousel.carousel").removeClass("loading");
18556        }
18557    });
18558}
18559
18560$("#mode_videos_list .filter-toggle").click(function() {
18561	  $(".filter-dropdown").toggleClass('active');	
18562});
18563
18564var filter_values=["All"]
18565$("#mode_videos_list .filter-options li").click(function(idx) {
18566	$(this).toggleClass('active');
18567	var filterText=this.innerHTML==="All"?this.innerHTML:this.innerHTML.split("-")[1].trim()
18568	if ($.inArray(filterText, filter_values) > -1){
18569		 filter_values.splice( $.inArray(filterText, filter_values), 1 );
18570	}else{
18571		filter_values.push(filterText)		
18572	}		
18573	let	data_therapeuticarea,data_specialty;
18574	$(".video-list-item").map((idx,item) => 
18575	{	
18576		// data_specialty=$(item).attr("data-specialty")?$(".item").attr("data-therapeuticarea")?"-"+$(item).attr("data-specialty"):$(item).attr("data-specialty"):"";
18577		data_specialty=$(item).attr("data-specialty").includes(",")?$(item).attr("data-specialty").split(","):[$(item).attr("data-specialty")];
18578		
18579		
18580	data_specialty.every((val) => 
18581		{
18582				
18583			if(filter_values.includes("All")){
18584				$(item).show();
18585				$(".video-list-item:nth-child(4n+1)").css("padding-left","0")
18586				$(".video-list-item:nth-child(4n)").css("padding-right","0")
18587			}else{
18588				if($(item).attr("data-specialty").includes(",")){
18589					var multipleSpecialty=$(item).attr("data-specialty").split(",");
18590					var show;
18591					for(let i=0;i<multipleSpecialty.length;i++){
18592						if(filter_values.includes(multipleSpecialty[i].trim()))
18593								{
18594									$(item).show();
18595									show=true;
18596								}	
18597					}
18598					if(!show){
18599						$(item).hide();
18600					}			
18601				}else{					
18602					if(filter_values.includes(val)){
18603						$(item).show();
18604						$(".video-list-item:nth-child(4n+1)").css("padding-left","")
18605						$(".video-list-item:nth-child(4n)").css("padding-right","")
18606					}else{
18607						$(item).hide();
18608					}
18609				}	
18610			}	
18611		})		
18612		
18613	})
18614}
18614);
18615var mobMedia = window.matchMedia("(max-width: 1023px)");
18616var deskMedia = window.matchMedia("(min-width: 1024px)")
18617
18618$(".mode_header .header-desk-toggle-on").click(function() {
18619  $(".header-desk-toggle-on").hide();
18620  $(".header-desk-toggle-off").show();
18621  $(".header_dropdown_desk").show();
18622});
18623
18624$(".mode_header .header-desk-toggle-off").click(function() {
18625  $(".header-desk-toggle-off").hide();
18626  $(".header_dropdown_desk").hide();
18627  $(".header-desk-toggle-on").show();
18628});
18629var inputValue = $("#preference-selection").val() || "dynamic";
18630var sciencePreferences = $.cookie("m_prefs");
18631
18632
18633$(document).ready(function() {
18634	$(".mode_header .nav-item a").each(function(){
18635		var href = $(this).attr("href");
18636			if(location.href.indexOf(href) > -1||($.cookie("apex__gigyaSession") && window.location.pathname==="/" &&$(this).text()=="Home" )) {
18637				$(".mode_header .nav-item a").removeClass("active");
18638				$(this).addClass("active");
18639			}
18640	});
18641
18642
18643
18644	if(location.href.indexOf("email-share") > -1 ){
18645		$(".mode_header .header-profile-content").removeClass("d-lg-block");
18646	}
18647	
18648	if($(".mode_header").length>0){
18649	
18650	if(!($.cookie("apex__gigyaSession"))){
18651		$(".header_mode>div:nth-child(1)").css("padding-bottom","75px");
18652	}
18653
18654	if($.cookie("m_prefs")){
18655		$(".header_mode>div:nth-child(1)").removeAttr("style");
18656	}
18657	
18658	var sessionCookie = $.cookie("apex__gigyaSession");
18659	if(!sessionCookie){
18660		$(".header_mode .search-toggle-mob").hide()
18661	}	
18662	if(sessionCookie) {		
18663		sessionCookie = JSON.parse(sessionCookie)
18664		if(sessionCookie.UID) {
18665			$(".mode_header .profile-info").show();
18666			$(".mode_header .sign-in-btn").hide();
18667		}
18668		$(".secure-nav-item").removeClass('d-none');
18669		if(location.href.indexOf("site-map") < 0 && location.href.indexOf("email-share") < 0 && location.href.indexOf("protected") == -1) {
18670			// location.href = "/content/commercial/us/mode/en/protected/home.html";
18671		}
18672		gigya.accounts.getAccountInfo({
18673			callback: SetProfileInfo
18674		});
18675		$(".mode_header .header-menu,.mode_header .navbar-toggler").show();
18676		$("#utilities-menu .nav-item a").each(function(){
18677			var href = $(this).attr("href");
18678			if(location.href.indexOf(href) > -1) {
18679				$(this).addClass("active");
18680			}
18681		});
18682	}
18683	else if (inputValue == "manual" && sciencePreferences) {
18684		$(".mode_header .profile-info").show();
18685		$(".header_dropdown_desk > hr").first().hide();
18686		$(".header_dropdown_desk > div:first-child").attr(
18687		  "style",
18688		  "display: none !important"
18689		);
18690	  } else {
18691		$(".mode_header  .profile-info").hide();
18692		$(".mode_header  .sign-in-btn").css('display', 'flex');
18693		if(location.href.indexOf("site-map") < 0 && location.href.indexOf("email-share") < 0 && location.href.indexOf("protected") > -1) {
18694
18695			// location.href = "/content/commercial/us/mode/en/home.html";
18696		}
18697	}
18698	if (sessionCookie) {
18699    $(".mode_header .sign-in-btn").hide();
18700  	} else {
18701    $(".mode_header .sign-in-btn").css("display", "flex");
18702  	}
18703	
18704	if(typeof gigya != 'undefined') {
18705		gigya.accounts.showScreenSet({
18706			screenSet: "Mode_RegistrationLogin",
18707			containerID: "registration-login",
18708			startScreen: "gigya-register-screen"
18709		});
18710	}
18711	
18712		$('.mode_header img[role="button"]').on('keydown',function(event){
18713			if(event.which===13){
18714				$(this).click();
18715			}
18716		})
18717	}
18718	$(".mode_header .navbar-toggler").on("click", function(event){
18719		if(!$("body").hasClass("mobile-menu-open")){
18720			toggleModal('close','click');
18721		}
18722		$("body").toggleClass("mobile-menu-open");
18723	});
18724	if (window.matchMedia('(max-width: 767px)').matches) {
18725		$(".mode_header .profile-info").on("click", function(event){
18726			$(".profile-info").toggleClass("show-logout");
18727		});
18728	}
18729	$(".mode_header #email-id-cont button").on("click", function(event){
18730		var emailVal = $("#email-id-cont input").val();
18731		console.log(emailVal);
18732		if(isEmail(emailVal)) {			
18733			$(".card-img-container").attr("style", "height: auto !important");
18734			$(".pre-login-content").attr("style", "display: none !important");
18735			$("#registration-login").show();
18736			$('input[name="email"]').val(emailVal);
18737		}
18738	});
18739	if(window.location.href.search("login")>0 && $(".TeaserComponent_mode").length>0 &&!($.cookie("apex__gigyaSession"))){	   setTimeout(() => {
18740			gigya.accounts.showScreenSet({
18741			screenSet: "Mode_RegistrationLogin",
18742			containerID: "screenset_container",
18743			startScreen: "gigya-login-screen"
18744		});
18745		$(".card-img-container").attr("style", "height: auto !important");
18746		$(".pre-login-content").attr("style", "display: none !important");
18747		$("#screenset_container").show();
18748		$('.hide-onload').removeClass('d-none');	
18749		}, "1000");
18750	}	
18751	$(".mode_header .header-profile-content a.sign-in-btn").on("click", function(event){
18752		event.preventDefault();
18753		gigya.accounts.showScreenSet({
18754			screenSet: "Mode_RegistrationLogin",
18755			containerID: "screenset_container",
18756			startScreen: "gigya-login-screen"
18757		});
18758		$(".card-img-container").attr("style", "height: auto !important");
18759		$(".pre-login-content").attr("style", "display: none !important");
18760		$("#screenset_container").show();
18761		$('.hide-onload').removeClass('d-none');
18762	});
18763	
18764	$(".mode_header .header-profile-content a.sign-out-btn,.mode_header .header_dropdown_desk a.sign-out-btn, .mode_header .header-menu a.sign-out-btn").on("click", function(event){ 
18765		event.preventDefault();
18766		var cookie_name = "m_prefs";
18767		document.cookie =
18768		  cookie_name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
18769		  localStorage.removeItem('mmcontent');
18770		if(typeof gigya != "undefined" && typeof gigya.accounts != "undefined" && $.cookie("apex__gigyaSession")) {
18771			gigya.accounts.logout();
18772		} else {
18773			location.reload();
18774		}
18775	});
18776
18777	const $modal = $(".top-nav-country-modal");
18778	const $trigger = $(".mode_header .countrybar-toggler, .mode_header .top-nav-location-trigger");
18779	const $close = $(".top-nav-country-modal .overlay-bar .close");
18780	const $firstLink = $(".top-nav-country-modal .overlay-bar .country-lang-link:first a");
18781
18782	function toggleModal(action,type) {
18783		$modal.toggleClass('show', action === 'open');
18784		$trigger.attr('aria-expanded', action === 'open' ? 'true' : 'false');
18785		if(type == 'keydown'){
18786			if (action === 'open') {
18787			    $firstLink.focus();
18788			} else {
18789			    $trigger.focus();
18790			}
18791		}
18792		if($("body").hasClass("mobile-menu-open") && action === 'open'){
18793			$(".mode_header .navbar-toggler").click();
18794		}
18795    }
18796
18797	$trigger.on('click keydown', function(e) {
18798		if (e.type === 'click' || e.keyCode === 13 || e.keyCode === 32) {
18799			e.preventDefault();
18800			toggleModal('open',e.type);
18801		}
18802		$(".mode_header .header-desk-toggle-off").click();
18803	});
18804
18805	$close.on('click keydown', function(e) {
18806		if (e.type === 'click' || e.keyCode === 13 || e.keyCode === 32) {
18807			e.preventDefault();
18808			toggleModal('close',e.type);
18809		}
18810	});
18811	$(".mode_header .header-desk-toggle-on").click(function() {
18812		toggleModal('close','click');
18813	});
18814});
18815function isEmail(email) {
18816  var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
18817  return regex.test(email);
18818}
18819function SetProfileInfo(account) {
18820	console.log(account);
18821	var firstName= (account && account.profile ? account.profile.firstName : '');
18822	var lastName= (account && account.profile ? account.profile.lastName : '');
18823	$(".mode_header .profile-info .first-name").text(firstName);
18824	$(".mode_header .profile-info .last-name").text(lastName);
18825}
18826
18827$('.mode_header #searchButtonDesk').click(function(){
18828	var url=window.location.href;
18829	
18830	if($(".header-serach-input-desk").val().length>0){
18831		window.location.href=$("#searchButtonDesk").attr('href')+"?search="+$(".header-serach-input-desk").val();
18832		if (url.indexOf('?') > -1){
18833   			url += '&videoid='+videoId
18834		}else{
18835   			url += '?videoid='+videoId
18836		}
18837	}	
18838});
18839
18840$('.mode_header #searchButtonMob').click(function(){
18841	var url=window.location.href;
18842	
18843	if($(".header-serach-input-mob").val().length>0){
18844		window.location.href=$("#searchButtonMob").attr('href')+"?search="+$(".header-serach-input-mob").val();
18845		if (url.indexOf('?') > -1){
18846   			url += '&videoid='+videoId
18847		}else{
18848   			url += '?videoid='+videoId
18849		}
18850	}	
18851});
18852
18853$(".mode_header .search-toggle-mob").click(function() {
18854  $(".mode_header .search-toggle-mob").hide();
18855  $(".mode_header .flex-col").hide();
18856  $(".mode_header .navbar-toggler").hide();
18857  $(".mode_header .header-serach-cont-mob").css('display','flex');  
18858});
18859
18860$(document).ready(function () {
18861  var currentUrl = window.location.href;
18862  var sessionCookie = $.cookie("apex__gigyaSession");
18863  function loadJsonData(modal = null) {
18864    if (modal) {
18865      $(modal).modal("show");
18866      if ($(".preference-modals-mode").hasClass("show")) {
18867        $("body").addClass("preference-modal-show");
18868      }
18869    }
18870    populateDropdown(preferencesJsonData); // Populate dropdown
18871    preselectPreferences();
18872  }
18873  let displayText;
18874  if (sessionCookie) {
18875    displayText = $(".sign-out-btn.purple").attr("data-logout-text");
18876  } else {
18877    displayText = $(".sign-out-btn.purple").attr("data-preferences-text");
18878  }
18879  $(".sign-out-btn.purple span").text(displayText);
18880
18881  // Function to populate dropdown menu
18882  function populateDropdown(data) {
18883    var $dropdown = $("#preference-therapeuticarea");
18884    var dynamicDefaultText = $(".preference-text").data("text");
18885    
18886    $dropdown.empty(); // Clear existing options
18887    $dropdown.append(
18888      $("<option></option>").attr("value", "").text(dynamicDefaultText)
18889    );
18890
18891    $.each(data, function (key, value) {
18892      $dropdown.append($("<option></option>").attr("value", key).text(key));
18893    });
18894
18895    $dropdown.trigger("change");
18896  }
18897  function preselectPreferences() {
18898    var encodedData = $.cookie("m_prefs");
18899    if (encodedData) {
18900      var m_prefs = JSON.parse(encodedData);
18901      $("#preference-therapeuticarea").val(m_prefs.therapeuticarea).change();
18902      setTimeout(function () {
18903        $('#preference-specialty input[type="checkbox"]').each(function () {
18904          if (m_prefs.specialty.includes($(this).val())) {
18905            $(this).prop("checked", true);
18906          }
18907        });
18908      }, 100);
18909      $(".preference-modals-mode button.close").show();
18910    }
18911  }
18912  $("#deleteCookieBtn").on("click", function () {
18913    deleteCookie("cookieName");
18914  });
18915 if (inputValue == "manual"){
18916  enableMenu();
18917
18918  // Always load the JSON data, even if the cookie exists
18919  loadJsonData();
18920 }
18921
18922  $(document).on("click", ".update-preference", function (event) {
18923    var $modal = $("#preferenceModal");
18924    $.ajax({
18925      url:
18926        $modal.find(".modal-details").data("modalpath") +
18927        "/jcr:content/root.html",
18928      success: function (resp) {
18929        $modal.find(".modal-content").html($(resp));
18930        loadJsonData($modal); // Load JSON data for the modal
18931      },
18932      error: function () {},
18933    });
18934  });
18935
18936  $(document).on("click",".save-preference-cookie, .teaser-btn", function (event) {
18937      event.preventDefault(); // Prevent the default action for both buttons
18938
18939      // Common function to collect checked values
18940      function getCheckedValues() {
18941        var checkedValues = [];
18942        $('#preference-specialty input[type="checkbox"]:checked').each(function () {
18943          checkedValues.push($(this).val());
18944        });
18945        return checkedValues;
18946      }
18947
18948      // Common function for validation
18949      function validateCheckedValues(checkedValues) {
18950        if (checkedValues.length === 0) {
18951          $(".error-message").show();
18952          return false;
18953        } else {
18954          $(".error-message").hide();
18955          return true;
18956        }
18957      }
18958
18959      // Get checked checkboxes
18960      var checkedValues = getCheckedValues();
18961
18962      // Perform validation
18963      if (!validateCheckedValues(checkedValues)) {
18964        return; // Stop execution if validation fails
18965      }
18966
18967      // Get selected option and prepare data to store
18968      var selectedOption = $("#preference-therapeuticarea").val();
18969      var dataToStore = {
18970        therapeuticarea: selectedOption,
18971        specialty: checkedValues,
18972      };
18973
18974      // Store the data in a cookie
18975      var encodedData = JSON.stringify(dataToStore);
18976      $.cookie("m_prefs", encodedData, { path: "/", expires: 90 });
18977
18978      // updating localStorage MMContent value
18979      mmContentDataCall(true);
18980
18981      // Redirect logic
18982      var returnUrl = new URLSearchParams(window.location.search).get(
18983        "returnurl"
18984      );
18985      var redirectUrl =
18986        $(this).data("red-url") || $(this).data('redirect-url') ||
18987        (returnUrl ? decodeURIComponent(returnUrl) : window.location.href);
18988
18989      // Redirect to the specified URL
18990      window.location.href = redirectUrl;
18991
18992      if (!currentUrl.includes("returnurl")) {
18993        // Redirect to /home.html if 'returnurl' is not found
18994        //window.location.href = "/home.html";
18995        location.reload();
18996      }
18997    }
18998  );
18999  if (!currentUrl.includes("returnurl")) {
19000    $(document).on(
19001      "click",
19002      ".TeaserComponent_mode .teaser-btn, .TeaserComponent_mode .preference-update-btn",
19003      function (event) {
19004        window.location.href = "/home.html";
19005      }
19006    );
19007  }
19008  if ($.cookie("m_prefs")) {
19009    $(".preference-update-btn ").show();
19010    $(".teaser-btn").remove();
19011  } else {
19012    $(".teaser-btn").show();
19013    $(".preference-update-btn ").remove();
19014  }
19015  $(document).on("change", "#preference-therapeuticarea", function () {
19016    var selectedKey = $(this).val();
19017    var $jsonDataDisplay = $("#preference-specialty");
19018    $jsonDataDisplay.empty();
19019
19020    if (preferencesJsonData[selectedKey]) {
19021      let count = 0;
19022      $(".speciality-option").show();
19023      $.each(preferencesJsonData[selectedKey], function (index, value) {
19024        count = count +1;
19025        $jsonDataDisplay.append(
19026          '<div><input type="checkbox" value="' +
19027            value +
19028            '">' +
19029            value +
19030            "</div>"
19031        );
19032      });
19033      if (count === 1) {
19034		    const checkbox = document.querySelector("#preference-specialty input[type='checkbox']");
19035		    checkbox.checked = true;
19036		  }
19037    } else {
19038      $(".speciality-option").hide();
19039    }
19040  });
19041  if (inputValue == "manual"){
19042  // Initialize the process
19043  loadJsonData();
19044  }
19045
19046  // This is for Multimedia component, Check if the div with id "mmLinkItem" exists
19047  const $mmLinkItem = $('.mm-link-item');
19048    
19049  if ($mmLinkItem.length > 0) {
19050      mmContentDataCall();
19051  } else {
19052      console.log('Div with id "mmLinkItem" is not present.');
19053  }
19054});
19055
19056function enableMenu() {
19057  var inputValue = $("#preference-selection").val() || "dynamic";
19058  var sciencePreferences = $.cookie("m_prefs");
19059  if (inputValue == "manual" && sciencePreferences) {
19060    $(".mode_header .header-menu, .mode_header .navbar-toggler").show();
19061    $("#favourite_action").hide();
19062    $(".fav-icon").hide();
19063  }
19064}
19065
19066
19067function mmContentDataCall(onUpdate=false) {
19068  // The div exists, get the value of the "data-url" attribute
19069  const dataUrl = '/bin/getmmcontent';
19070  const encodedData = $.cookie("m_prefs") || '';  // Default to empty string if falsy (null, undefined, etc.)
19071
19072  const m_prefs = encodedData ? JSON.parse(encodedData) : {};  // Default to empty object if encodedData is falsy
19073  const therapeuticarea = m_prefs.therapeuticarea || '';  // Default to empty string if therapeuticarea is falsy
19074
19075  const currentPage = $('#currentpage').length ? $('#currentpage').val() || '' : '';  // Check if the element exists, then get the value
19076
19077  // Define your payload
19078   const payload = {
19079      "therapeuticArea": therapeuticarea,
19080      "page": currentPage
19081  };
19082
19083  const localMMContentKey = 'mmcontent';
19084
19085  let storedResponse = localStorage.getItem(localMMContentKey);
19086  if (!storedResponse || onUpdate) {
19087    if (therapeuticarea) {
19088      // Make an AJAX request
19089      $.ajax({
19090          url: dataUrl, // Use the data-url value as the endpoint
19091          type: 'GET', // Set the HTTP method
19092          data: payload, // Send the payload data
19093          success: function(response) {
19094              localStorage.setItem(localMMContentKey, JSON.stringify(response));
19095              // Optionally, you can trigger an event or call a function from another file
19096              // to notify that the data is ready.
19097              window.dispatchEvent(new Event('ajaxDataReady'));
19098          },
19099          error: function(xhr, status, error) {
19100              console.log('AJAX request failed:', error);
19101          }
19102      });
19103    }
19104  }
19105  let updatedResponse = localStorage.getItem(localMMContentKey);
19106  if (updatedResponse) {
19107    const localContent = JSON.parse(updatedResponse);
19108    if (Object.keys(localContent).length > 0) {
19109      if (!localContent.error) {
19110        $(".mm-link-item").show();
19111      }
19112    }
19113  }     
19114}
19115
19116function isValidModeEmail(emailField){
19117        var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
19118
19119        if (reg.test(emailField.value) == false) 
19120        {
19121            $('.mode_teaser .error-msg').css('display','inline-block');
19122            return false;
19123        }else{
19124			$('.mode_teaser .error-msg').css('display','none');
19125
19126        }
19127
19128        return true;
19129
19130}
19131
19132function registerModeEmail(){
19133	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
19134
19135        if (reg.test($("#email-id-teaser").val()) == false) 
19136        {
19137            $('.mode_teaser .error-msg').css('display','inline-block');
19138            return false;
19139        }else{
19140			$('.mode_teaser .error-msg').css('display','none');
19141
19142        }
19143
19144        return true;
19145}
19146$(document).ready(function(){
19147
19148    var videoidUrl=getQueryStringValue("videoid");
19149
19150    if (videoidUrl == undefined || videoidUrl == '') {
19151
19152        $(".mode_breadcrumb").hide();
19153
19154    }
19155
19156});
19157
19158function getQueryStringValue (key) {  
19159    return decodeURIComponent(window.location.search.replace(new RegExp("^(?:.*[&\\?]" + encodeURIComponent(key).replace(/[\.\+\*]/g, "\\$&") + "(?:\\=([^&]*))?)?.*$", "i"), "$1"));  
19160}
19161$(document).ready(function(){
19162	var modal=$('.mode_footer  #entryModal');
19163	if(modal.length>0){
19164		modal.on('keydown',function(event){
19165		if(event.key==="Escape"||event.keyCode===27){
19166            	event.preventDefault();
19167				event.stopPropagation();
19168				event.stopImmediatePropagation();
19169		}
19170		});
19171	}	
19172	
19173});
19174
19175
19176$(".mode_footer #entryModal .modal-button").click(function() {
19177	$("#entryModal").hide();
19178	$(".modal-backdrop ").hide();
19179});
19180$(document).ready(function () {
19181    init();
19182
19183    $(document).on('click', 'input.sac-form-input-text', function (event) {
19184        // $(this).removeClass("error");
19185        removeErrorSAC($(this));
19186        // $(this).removeClass("success-msg");
19187    });
19188    $(document).on('blur', 'input.sac-form-input-text', function (event) {
19189        //$(this).addClass("success-msg");
19190        if ($(this).val() == "" && $(this).prop("required")) {
19191            displayErrorSAC($(this), "required");
19192            $(this).addClass("error");
19193        } else if ($(this).attr("pattern")) {
19194            validatePaternSAC($(this));
19195        }
19196    });
19197    $(document).on('focus', 'select#sac-form-date', function (event) {
19198        loadDateDropdownSAC(14);
19199    })
19200    $(document).on('focus', 'select#sac-form-time', function (event) {
19201
19202        let timeOptions = document.querySelectorAll("#sac-form-time option");
19203        if (timeOptions.length > 1) {
19204            let timeOptionsValues = [];
19205            let currHours = new Date().getHours();
19206            for (let i = 1; i < timeOptions.length; i++) {
19207                timeOptionsValues.push(timeOptions[i].value);
19208            }
19209            let dateVal = $('#sac-form-date').find(":selected").val();
19210            if (dateVal.toLowerCase().includes('please select') || new Date(dateVal).getDate() == new Date().getDate()) {
19211                if (currHours >= 8) {
19212                    timeOptions[1].disabled = true;
19213                }
19214                if (currHours >= 12) {
19215                    timeOptions[2].disabled = true;
19216                }
19217                if (currHours >= 15) {
19218                    timeOptions[3].disabled = true;
19219                }
19220            } else {
19221                timeOptions.forEach(opt => opt.disabled = false);
19222            }
19223        }
19224    });
19225
19226    $(document).on('change', '.sac-form-input-checkbox, select.sac-form-input-text', function (event) {
19227        let spanElem = $(this).parent().parent().children('.sac-form-error-text');
19228        if (event.currentTarget.tagName.toLowerCase() == 'select') {
19229            spanElem = $(this).parent().children('.sac-form-error-text');
19230            if (event.currentTarget.selectedIndex > 0) {
19231                if (event.currentTarget.id === 'sac-form-date') {
19232                    $('select#sac-form-time')[0].selectedIndex = 0;
19233                }
19234                spanElem.hide();
19235                return;
19236            }
19237        }
19238        if (event.target.checked && spanElem) {
19239            spanElem.hide();
19240        } else {
19241            spanElem.show();
19242        }
19243    });
19244	
19245	$(document).on('input', 'input.sac-form-input-text[type="number"], input.sac-form-input-text[type="tel"]', function (e) {
19246        // let phoneNum = document.getElementById('sac-form-phone-number');
19247        let $this = $(this);
19248        let maxlength = parseInt($this.attr('maxlength'));
19249        let value = $this.val();
19250        // if (($this.attr('id') == 'sac-form-phone-number') && (value.length == 3 || value.length == 4 || value.length == 8 || value.length == 7) && e.originalEvent.inputType == 'insertText') {
19251            // if(value.length == 4 || value.length == 8){
19252                // if(value.charAt(value.length-1) != '-'){
19253                    // let last_char = value.charAt(value.length-1);
19254                    // value = value.slice(0,-1) + '-' + last_char;
19255                    // phoneNum.value = value;
19256                // }
19257            // }else{
19258                // let finalVal = value + "-";
19259                // $this[0].value = finalVal;
19260            // }
19261            
19262        // }
19263        if (value && value.length >= maxlength) {
19264            $this.val(value.substr(0, maxlength));
19265        }
19266    });
19267
19268    $(document).on('click', '.sac-form-main-container .sac-form-close', function () {
19269        $('.sac-form-main-container-wrapper').hide();
19270    });
19271
19272    $(document).on('click', '.sac-modal-close', () => {
19273        $('.sac-form-main-container-wrapper').hide();
19274        $('.sac-modal-container').hide();
19275        $('.sac-form-main-container').show();
19276        document.getElementById('#sac-form').reset();
19277    }
19278    );
19279
19280    function validatePaternSAC(input) {
19281        var errorFlag = false;
19282        var $input = $(input);
19283        if ($input.val()) {
19284            try {
19285                var pattern = new RegExp($input.attr("pattern"));
19286                /**
19287                 * if the pattern is wrong displaying error
19288                 */
19289                if (pattern.test($input.val())) {
19290                    // $input.removeClass("error");
19291                    // $input.addClass("success-msg");
19292                    removeErrorSAC(input);
19293                } else {
19294                    errorFlag = true;
19295                    // $input.addClass("error");
19296                    displayErrorSAC(input, "pattern");
19297                }
19298            } catch (e) {
19299                console.error("invaild pattern (Regular Expression )", $input.attr("pattern"));
19300                console.error(e);
19301            }
19302        } else {
19303            displayErrorSAC(input, "required");
19304        }
19305        return errorFlag;
19306    }
19307
19308    function formatDateSAC(date) {
19309        var monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
19310        var dayNames = ["Sun,", "Mon,", "Tue,", "Wed,", "Thu,", "Fri,", "Sat,"];
19311        var d = new Date(date)
19312            , day = (d.getDay())
19313            , month = (d.getMonth())
19314            , date = d.getDate()
19315        daydate = date + ",",
19316            year = d.getFullYear();
19317        day = dayNames[day];
19318        month = monthNames[month];
19319
19320        if (date > 0 && date <= 9)
19321            daydate = '0' + daydate;
19322
19323        return [day, month, daydate, year].join(' ');
19324    }
19325    function loadDateDropdownSAC(count) {
19326        var options = `<option value=${$('#sac-form-date option:first-child').val() || ''}>${$('#sac-form-date option:first-child').text()}</option>`;
19327        var curr = new Date;
19328        var first = curr.getDate()
19329        for (var i = 0; i < count; i++) {
19330            var next = new Date(curr.getTime());
19331            next.setDate(first + i);
19332            weekendday = next.getDay();
19333            if ((weekendday != 0) && (weekendday != 6)) {
19334                options += `<option value="${formatDateSAC((next.toString()))}">${formatDateSAC((next.toString()))}</option>`;
19335            }
19336        }
19337        $('#sac-form-date').html('');
19338        $('#sac-form-date').append(options);
19339        if (curr.getHours() >= 15) {
19340            let dateOptions = document.querySelectorAll("#sac-form-date option");
19341            dateOptions[1].disabled = true;
19342        }
19343    }
19344
19345    function init() {
19346        $(document).on("click", "#sac-form-submit", function (event) {
19347            //$(event.currentTarget).prop("disabled",true);
19348
19349            if (!submitEventListenerSAC($(event.currentTarget).parents("form"))) {
19350                event.preventDefault();
19351            }
19352            //formChangeEventListener($(event.currentTarget).parents('form'));
19353        });
19354		
19355		$("#genericLightbox").on('hide.bs.modal', function() {
19356            if ($('.accesssupportform').length > 0) {
19357                resetFormSAC();
19358
19359                //hide error text//hide captcha border//hide modal//show form
19360                $('.sac-form-error-text').hide();
19361                $('.sac-form .g-recaptcha').css('border', 'none');
19362                $('.sac-form-main-container-wrapper .sac-form-main-container').show();
19363                $('.sac-form-main-container-wrapper .sac-modal-container').hide();
19364            }
19365
19366        });
19367        // loadDateDropdownSAC(14);
19368    }
19369
19370    function scrollToFirstInvalidControlSAC() {
19371        // $('html, body').animate({
19372        //     scrollTop: $("form.sac-form .sac-form-error-text:visible").offset().top - 350
19373        // });
19374        $('.modal-body').animate({
19375            scrollTop: $("form.sac-form .sac-form-error-text:visible").first().offset().top + 1500
19376        });
19377    }
19378
19379    function submitEventListenerSAC(selector) {
19380        let $form = $(selector);
19381        let isRequiredValidation = requiredValidationSAC($form);
19382        let isPatternValidation = patternValidationSAC($form);
19383        // if(!isRequiredValidation) {
19384        //     validateTimeAndDateSAC($form);
19385        // }
19386        let isValidCaptcha = validateCaptchaSAC();
19387        let finalFormvalidationState = false;
19388        console.log(isRequiredValidation, ": isRequiredValidation");
19389        console.log(isPatternValidation, ": isPatternValidation");
19390        // console.log(istextAreaValidation, ': istextAreaValidation');
19391        // console.log(isValidCaptcha, ": isValidCaptcha");
19392        if (isRequiredValidation || isPatternValidation || !isValidCaptcha) {
19393            // if (isRequiredValidation || isPatternValidation) {
19394            finalFormvalidationState = false;
19395            $('.sac-form-global-error-container .sac-form-error-text').css('display', 'block');
19396            scrollToFirstInvalidControlSAC();
19397        } else {
19398            finalFormvalidationState = true;
19399            $('.sac-form-global-error-container .sac-form-error-text').css('display', 'none');
19400
19401        }
19402
19403        if (finalFormvalidationState) {
19404            $form.parent().append('<div class="form-loading"><i class="icon icon-spinner"><svg width="120px" height="120px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" class="uil-default"><rect x="0" y="0" width="100" height="100" fill="none" class="bk"></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#FFFFFF" transform="rotate(0 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#FFFFFF" transform="rotate(45 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.15s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#FFFFFF" transform="rotate(90 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.3s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#FFFFFF" transform="rotate(135 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.44999999999999996s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#FFFFFF" transform="rotate(180 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.6s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#FFFFFF" transform="rotate(225 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.75s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#FFFFFF" transform="rotate(270 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="0.8999999999999999s" repeatCount="indefinite"></animate></rect><rect x="40" y="40" width="20" height="20" rx="100%" ry="100%" fill="#FFFFFF" transform="rotate(315 50 50) translate(0 -30)">  <animate attributeName="opacity" from="1" to="0" dur="1.2s" begin="1.05s" repeatCount="indefinite"></animate></rect></svg></i></div>')
19405
19406            $.post($form.find('[type="submit"]').attr("formaction"), $form.serializeArray(), function (res) {
19407                // console.log(res);
19408                if (res.status.trim() == "success") {
19409                    $form.parent().find(".form-loading").remove();
19410                    $('.sac-form-main-container').hide();
19411                    $('.sac-modal-container').show();
19412                    $('.sac-modal-success-wrapper').css('display', 'flex');
19413                    $('.sac-modal-failure-wrapper').hide();
19414
19415                    console.log("sac form submit Success");
19416
19417                    resetFormSAC($form);
19418                } else if (res.status.trim() == "failure") {
19419
19420                    console.log("sac form submit Failure");
19421
19422                    $form.parent().find(".form-loading").remove();
19423                    $('.sac-form-main-container').hide();
19424                    $('.sac-modal-container').show();
19425                    $('.sac-modal-success-wrapper').hide();
19426                    $('.sac-modal-failure-wrapper').css('display', 'flex');
19427                    resetFormSAC($form);
19428
19429                    /**
19430                         * if there is server side error then reset captcha if exist
19431                         */
19432
19433                    if ($(".g-recaptcha").length) {
19434                        grecaptcha.reset();
19435                    }
19436
19437                } else {
19438                    //$form.find('[type="submit"]').prop("disabled", false);
19439                    console.log("SAC Form");
19440                }
19441            }).fail(function () {
19442                if ($(".g-recaptcha").length) {
19443                    grecaptcha.reset();
19444                }
19445                // $form.find('[type="submit"]').prop("disabled", false);
19446            }).always(function () {
19447                $form.parent().find(".form-loading:visible").remove();
19448            });
19449
19450        } else {
19451            $form.parent().find(".form-loading").remove();
19452        }
19453    }
19454
19455    // function validateTimeAndDateSAC($form) {
19456    //     let date = new Date();
19457    //     let todayDate = date.getDate();
19458    //     let selectedDate = new Date($('#sac-form-date').val()).getDate();
19459    //     if(todayDate == selectedDate) {
19460    //         let currentTime = date.getHours();
19461    //         let selectedTime = $('#sac-form-time').val();
19462    //         let selectedOption = $('#sac-form-time').prop('selectedIndex');
19463    //         const timings = {
19464    //             1 : 8,
19465    //             2 : 12,
19466    //             3 : 15
19467    //         }
19468    //         if(currentTime < timings[`${selectedOption}`]) {
19469    //             return console.log(true , '------------------;');
19470    //         }
19471    //         return console.log(false , '---------------;');
19472
19473    //     }
19474    // }
19475
19476    function requiredValidationSAC($form) {
19477        var errorFlag = false;
19478        var inputSelector = "input[required]:visible, select[required]:visible";
19479
19480        $.each($form.find(inputSelector), function (index, input) {
19481            var $input = $(input);
19482            /**
19483             * if the field value is empty displaing error
19484             */
19485            // console.log($input.prop('type'));
19486
19487            if (!$input.val()) {
19488                errorFlag = true;
19489                displayErrorSAC($input, "required");
19490
19491                $input.addClass("error");
19492            } else {
19493                removeErrorSAC($input);
19494                $input.addClass("success-msg");
19495            }
19496
19497            if ($input.prop('type') == "checkbox") {
19498
19499                if ($input.prop('checked') || $('input:checkbox[name="termsCheckbox"]:checked').length > 0) {
19500                    $input.parent().parent().children('.sac-form-error-text').hide();
19501                } else {
19502                    $input.parent().parent().children('.sac-form-error-text').show();
19503                    errorFlag = true;
19504                }
19505            }
19506
19507            if ($input.prop('type') == "select-one") {
19508
19509                if ($input.prop('selectedIndex') > 0 && $input.val()) {
19510                    $input.parent().find('.sac-form-error-text').hide();
19511                } else {
19512                    $input.parent().find('.sac-form-error-text').show();
19513                    if (!$input.val()) {
19514                        $input.prop('selectedIndex', 0);
19515                    }
19516                    errorFlag = true;
19517                }
19518            }
19519
19520        });
19521        return errorFlag;
19522    }
19523    // -----------------------****************************--------------------------
19524    function patternValidationSAC($form) {
19525        var errorFlag = false;
19526        $.each($form.find("input[pattern]:visible"), function (index, input) {
19527            var $input = $(input);
19528            if ($input.val()) {
19529                try {
19530                    var pattern = new RegExp($input.attr("pattern"));
19531                    /**
19532                     * if the pattern is wrong displaying error
19533                     */
19534                    if (pattern.test($input.val())) {
19535                        removeErrorSAC($input);
19536                        $input.removeClass("error");
19537                    } else {
19538                        errorFlag = true;
19539                        $input.addClass("error");
19540                        displayErrorSAC($input, "pattern");
19541                    }
19542                } catch (e) {
19543                    console.error("invaild pattern (Regular Expression )", $input.attr("pattern"));
19544                    console.error(e);
19545                }
19546            } else {
19547                $input.addClass("error");
19548                displayErrorSAC($input, "required");
19549            }
19550        });
19551        return errorFlag;
19552    }
19553
19554    function displayErrorSAC(input, errorType, $form) {
19555        // const $input = $(input);
19556        let errorMessage = "";
19557        if (errorType === "required") {
19558            errorMessage = input.data("requiredMessage");
19559        } else if (errorType === "pattern") {
19560            errorMessage = input.data("patternMessage");
19561        }
19562        // input.next().html(errorMessage);
19563        input.parent().find('.sac-form-error-text').html(errorMessage).show();
19564    }
19565
19566    function removeErrorSAC(input, $form) {
19567        //$(input).addClass("success-msg");
19568        // input.siblings('.error-text').hide();
19569        // const $input = $(input);
19570        // span('class').css('visibility', 'hidden');
19571        input.parent().find('.sac-form-error-text').hide();
19572    }
19573    function validateCaptchaSAC() {
19574        if ($(".g-recaptcha").length > 0) {
19575            if (!grecaptcha)
19576                return false;
19577            let captchaResponse;
19578            /**
19579             * if reCaptcha is created dynamically then in widgetId reCaptcha reference will be set.
19580             */
19581            captchaResponse = grecaptcha.getResponse();
19582            if (captchaResponse.length == 0) {
19583                $(".g-recaptcha").css("border", "1px Solid #e76468");
19584                // $('.g-recaptcha + .error-text').show();
19585                return false;
19586            } else {
19587                $(".g-recaptcha").css("border", "none");
19588                // $('.g-recaptcha + .error-text').hide();
19589                return true;
19590            }
19591        } else {
19592            return true;
19593        }
19594    }
19595
19596    // Global recaptchaCallback
19597    recaptchaCallback = function () {
19598        // Specific to iOS
19599        if (navigator.userAgent.match(/(iPhone|iPod|iPad)/i)) {
19600            // Scroll recaptcha back into view to fix iOS scrolling bug
19601            $(".g-recaptcha").get(0).scrollIntoView(true);
19602            window.scrollBy(0, -50);
19603        }
19604
19605        let captchaResponse = grecaptcha.getResponse();
19606
19607        if (captchaResponse.length == 0) {
19608            $(".g-recaptcha").css("border", "1px Solid #e76468");
19609            // $('.g-recaptcha + .error-text').show();
19610            // return false;
19611        } else {
19612            $(".g-recaptcha").css("border", "none");
19613            // $('.g-recaptcha + .error-text').hide();
19614            // return true;
19615        }
19616    };
19617
19618    function resetFormSAC($form) {
19619        document.getElementById("sac-form").reset();
19620        grecaptcha.reset();
19621    }
19622});
19623$(document).ready(function() {
19624    // Check if the div with id "mmcontent" exists
19625    const $mmContent = $('#mmcontent');
19626
19627    if ($mmContent.length > 0) {
19628
19629        const localMMContentKey = 'mmcontent';
19630        
19631        let storedResponse = localStorage.getItem(localMMContentKey);
19632
19633        // Sample Test data load directly without ajax call
19634        if (storedResponse) {
19635            renderContent(storedResponse);
19636        } else {
19637            window.addEventListener('ajaxDataReady', function() {
19638                let readyResponse = localStorage.getItem(localMMContentKey);
19639                renderContent(readyResponse);
19640            });
19641        }
19642        
19643    } else {
19644        console.log('Div with id "mmcontent" is not present.');
19645    }
19646});
19647
19648
19649function renderContent(items) {
19650    const $mmContent = $('#mmcontent');
19651    const $loader = $('.bms-mode__multimedia--loader');
19652    //const dataError = $mmContent.data('errorMsg') || '';
19653    let htmlContent;
19654    // Assuming the response is an array of objects
19655        // Loop through the response data and use it
19656    items = JSON.parse(items);
19657    if (Object.keys(items).length > 0) {
19658        if (items && items.error) {
19659            //htmlContent = '<div class="bms-mode__multimedia--no-result-container"><h3 class="bms-mode__multimedia--no-result">'+ dataError +'</h3></div>';
19660            //$mmContent.append(htmlContent); // Append the HTML to the .content div
19661            window.location.href = '/';
19662        } else {
19663            $(".mm-link-item").show();
19664            items?.forEach(function(item, index) {
19665                const image = item.image;
19666                const title = item.title;
19667                const pageUrl = item.page_url;
19668                // For example, appending each item to a div with class "content"
19669                htmlContent = '<div class="bms-mode__multimedia--list-item" index="'+ index +'" role="gridcell">';
19670                htmlContent += '<a class="bms-mode__multimedia--list-link" target="_blank" href="'+ pageUrl +'" aria-label="'+ title +'">';
19671                htmlContent += '<div class="bms-mode__multimedia--tile-img">';
19672                htmlContent += '<img src="'+ image +'" class="bms-mode__multimedia--list-img" alt="Thumbnail of '+ title +'">';
19673                htmlContent += '</div>';
19674                htmlContent += '<div class="bms-mode__multimedia--tile-cnt">';
19675                htmlContent += '<p class="bms-mode__multimedia--list-title" role="heading" aria-level="3">'+ title +'</p>';
19676                htmlContent += '</div>';
19677                htmlContent += '</a>';
19678                htmlContent += '</div>';
19679                $mmContent.append(htmlContent); // Append the HTML to the .content div
19680            });
19681        }
19682    } else {
19683        //htmlContent = '<div class="bms-mode__multimedia--no-result-container"><h3 class="bms-mode__multimedia--no-result">'+ dataError +'</h3></div>';
19684        //$mmContent.append(htmlContent); // Append the HTML to the .content div
19685        window.location.href = '/'; 
19686    }
19687
19688    // hide loader
19689    $loader?.hide();
19690}
19691LOREM.devices = {
19692	isDesktop:function(){
19693		if (screen.width >= 992) {
19694			return true;
19695		}
19696	},
19697	isTablet:function(){
19698		if ((screen.width <= 991) && (screen.width >= 768)) {
19699			return true;
19700		}
19701	},
19702	isMobile:function(){
19703		if (screen.width <= 767) {
19704			return true;
19705		}	
19706	}
19707}
19708
19709var LOREM = window.LOREM = LOREM || {};
19710var scriptsIconsPath= '/etc.clientlibs/bms-commercial-shared/clientlibs/base/resources';
19711
19712$(function () {
19713	function _autoload() {
19714		$.each(LOREM, function (fn_key, obj) {
19715			if ($.isArray(obj._autoload)) {
19716				$.each(obj._autoload, function (key, value) {
19717					if ($.isArray(value)) {
19718						if (value[1]) {
19719							LOREM[fn_key][value[0]]();
19720						} else {
19721							if (value[2]) {
19722								LOREM[fn_key][value[2]]();
19723							}
19724						}
19725					} else {
19726						LOREM[fn_key][value]();
19727					}
19728				});
19729			}
19730		});
19731	}
19732	_autoload();
19733});
19734
19735
19736LOREM.options = {
19737	_autoload: ['_anchorTargetClick'],
19738	bindListMaxHeight: function (element, listSize) {
19739		/* function definition for calculating heights with respect to each row */
19740		var $list;
19741                var tilesperrow=element.closest('.cmp-tile-wrapper').data('tilesPerRow');
19742		if(tilesperrow !==undefined && tilesperrow >3) {
19743			var height = 0;
19744		} else {
19745			var height;
19746		}
19747		var maxProducts = function (maxLen, totLen) {
19748			var lastList = totLen % listSize;
19749			var lastIndex = totLen - lastList;
19750			var maxHeight;
19751			$list.each(function (index) {
19752				$(this).outerHeight() > height ? height = $(this).outerHeight() : null;
19753				index > lastIndex ? maxLen = lastList : null;
19754				/* assign max heights to each tile after calculating in last row */
19755				if ((index + 1) % maxLen === 0 || ((index + 1) % lastList === 1 && (index + 1) === totLen)) {
19756					assignHeightToTile(index);
19757				}				
19758			});
19759			/* max heights function to assign each tile after calculating in each row */
19760			function assignHeightToTile(index) {
19761				maxHeight = height;
19762				$list.each(function (ind) {
19763					if (ind === index) {
19764						for (var i = ind; i > index - maxLen; i--) {
19765							$list.eq(i).css('height', maxHeight);
19766						}
19767						return false;
19768					}
19769				});
19770			}
19771		};
19772		/* function initialization for calculating heights*/
19773		var calcMaxHeight = function () {
19774			element.css('height', 'auto');
19775			$list = element;
19776			var $window = $(window);
19777			if ($window.width() > 767) {
19778				$list.length < listSize ? maxProducts($list.length, $list.length) : maxProducts(listSize, $list.length);
19779			} else {
19780				$list.length < 1 ? maxProducts($list.length, $list.length) : maxProducts(1, $list.length);
19781			}
19782		};
19783		if(element.length > 1) {
19784            calcMaxHeight();
19785        }
19786	},
19787	 /*below functions takes key and value,generates new URL without disturbing other query parameters*/
19788	getFormattedUrl : function(key,referenceKey,setNewUrl){
19789		var currentUrl = window.location.href,
19790			newUrl = '';
19791		if(setNewUrl !== undefined){
19792			currentUrl = setNewUrl;
19793		}
19794		if(currentUrl.indexOf('?') >= 0){
19795			if(currentUrl.indexOf(key + '=') >= 0){
19796				var urlArray = currentUrl.split(key + '='),
19797				qpArray = urlArray[1].split('&'),
19798				qpString = '';
19799				for(var i=1;i< qpArray.length;i++){
19800					qpString  +=  '&' + qpArray[i];
19801				}
19802
19803			   newUrl = urlArray[0] + key + '=' + referenceKey;
19804			   newUrl = urlArray[1].indexOf('&') >= 0 ? newUrl + qpString : newUrl;
19805			}else{
19806				newUrl = currentUrl + '&' + key + '=' + referenceKey;   
19807			}
19808
19809		} else {
19810			 newUrl = currentUrl + '?' + key + '=' + referenceKey;  
19811		}
19812		return newUrl;
19813	},
19814	getQueryParam: function (name) {
19815		if (location.search.indexOf('?') >= 0) {
19816			var qparam = location.search.split('?')[1],
19817				paramValue = '';
19818			qparam.split('&').forEach(function (q) {
19819				var r = q.split('=');
19820				if (r[0] === name) {
19821					paramValue = r[1];
19822				}
19823			});
19824			return paramValue;
19825		}
19826		return '';
19827	},
19828    validateEmail: function(str) {
19829     	var emailRegex = /^\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b$/i;
19830      	if(str && emailRegex.test(str)) {
19831       		return true;
19832      	}
19833      	return false;
19834    },
19835	validatePhone: function(str) {
19836		var phoneRegex = /^\s*(?:\+?(\d{1,3}))?[-. (]*(\d{3})[-. )]*(\d{3})[-. ]*(\d{4})(?: *x(\d+))?\s*$/;
19837      	if(str && phoneRegex.test(str)) {
19838       		return true;
19839      	}
19840      	return false;
19841	},
19842	appendErrorElem: function(element, errMsg) {
19843		var $errorElem;
19844		var $highLightElem=element.find('input:not([type="checkbox"]),select,textarea');
19845		if(!element.find('.hasError').length) {
19846			$errorElem = $('<span class="hasError" />');
19847			$errorElem.text(errMsg || '');
19848			element.append($errorElem);
19849		} else {
19850			element.find('.hasError').text(errMsg || '');
19851		}
19852		if(!$highLightElem.find('.highlightError').length && $('input[name="erroroutline"]').val()) {
19853			$highLightElem.addClass('highlightError');
19854		} else {
19855			$highLightElem.removeClass('highlightError');
19856		}
19857	},
19858	valueTrim:function(selfvalue){
19859		if(selfvalue!==undefined) { 
19860			return  $.trim(selfvalue);
19861		}
19862		return;
19863	},
19864	validateInputRegex: function(str,regex) {
19865		var inputRegex = new RegExp(regex);
19866		 if(str!==undefined && regex!==undefined){
19867			if(str && inputRegex.test(str)) {
19868		       return true;
19869			}
19870		 	return false;
19871		 }
19872	},
19873	validateMin: function(str,min) {
19874		 if(str!==undefined && min!==undefined){
19875			 if(str.length > min-1) {
19876		       return true;
19877		     }
19878			 return false;
19879		 }
19880	},
19881	validateFormFields: function($elem) {
19882	    var flag;
19883	    if ($elem.length) {
19884	        $elem.find('.form-group').each(function() {
19885	            LOREM.options.validateFormFieldsElement($(this));
19886	        });
19887	        flag = !($elem.find('.hasError').is(':visible')); 
19888	    }
19889	    return flag;
19890	},
19891	validateFormFieldsElement: function($elem) {
19892	    var flag = true;
19893	    var errorText;
19894	    if ($elem.length) {
19895	    	if(($elem.find('.hasError').is(':visible')) && ($elem.find('.custom-error').is(':visible'))){
19896	    		$elem.find('.custom-error').remove();
19897            }
19898	        var $self = $elem,
19899	            $inputReq = $self.find('[required]:visible'),
19900                $input = $self.find("input:not(:hidden),select,textarea"),
19901				selfvalue1 = $inputReq.val(),
19902	            selfvalue = $input.val(),
19903	            minLength = $input.attr('minlength'),
19904	            maxLength = $input.attr('maxlength'),
19905	            regexValidation = $input.attr('data-regex'),
19906	            isSpecialCase = $inputReq.attr('type') === 'checkbox' || $inputReq.attr('type') === 'radio';
19907	        var isInputType = $input.attr('type') === 'text' || $input.attr('type') === 'password' || $input.attr('type') === 'tel' || $input.attr('type') === 'number' || $input.attr('type') === 'email';
19908	        var isTextArea = $('textarea');
19909	        var formFallBackError = $elem.closest('form').parents().find('.cmp-error-messages-wrapper');
19910	        if (isInputType === true) {
19911	            selfvalue = LOREM.options.valueTrim($input.val());
19912	            $input.val(selfvalue);
19913	        }
19914	        //selfvalue1 is the value when the required is visible for inputs
19915	        var $highLightElem=$elem.find('input:not([type="checkbox"]),select,textarea');
19916	        if (!(selfvalue1 === '' || selfvalue1 === null) && isSpecialCase) {
19917	            // checkbox and radio button code goes here
19918	            if (!$inputReq.is(':checked')) {
19919	                errorText = $inputReq.attr('data-cmp-required') || 'Required Field';
19920	                LOREM.options.appendErrorElem($self, errorText);
19921	                flag = false;
19922	            } else {
19923	                $self.find('.hasError').remove();
19924	                $highLightElem.removeClass('highlightError');
19925	            }
19926	        } else if (!(selfvalue1 === '' || selfvalue1 === null) && (selfvalue !== "") && isInputType) {
19927	            	//logic for fallback password validation
19928	            	var minmaxfallbackflag = false;
19929	            	if((minLength === undefined) && (maxLength === undefined)){            		
19930	            		minmaxfallbackflag = true;
19931	            	}
19932	            	if(minLength === undefined){minLength = 0;}
19933	            if ((minLength > 0 && isInputType && !LOREM.options.validateMin(selfvalue, minLength))) {
19934	                errorText = $input.attr('data-min-message') || formFallBackError.attr('data-min-length-message') || 'Validation For Minimum Field Length Has Failed.';
19935	                LOREM.options.appendErrorElem($self, errorText);
19936	                flag = false;
19937	            } else if ($input.attr('name') === 'password'){
19938	                var $password = $input.val();
19939	               if (minmaxfallbackflag && ($password.length < 6 || $password.length > 15)) {
19940	                    errorText = 'Please Enter a Value Between 6 and 15 Characters.';
19941	                    LOREM.options.appendErrorElem($self, errorText);
19942	                    flag = false;
19943	                } else if ((isInputType && (regexValidation !== undefined) && !LOREM.options.validateInputRegex(selfvalue, regexValidation))) {
19944	                    errorText = $input.attr('data-regex-constraint-message') || formFallBackError.attr('data-regex-message') || 'Validation For Regular Expression Has Failed.';
19945	                    LOREM.options.appendErrorElem($self, errorText);
19946	                    flag = false;
19947	                } else {
19948	                    $self.find('.hasError').remove();
19949	                    $highLightElem.removeClass('highlightError');
19950	                }
19951	            } else if ((isInputType && (regexValidation !== undefined) &&  !LOREM.options.validateInputRegex(selfvalue, regexValidation))) {
19952	                errorText = $input.attr('data-regex-constraint-message') || formFallBackError.attr('data-regex-message')|| 'Validation For Regular Expression Has Failed.';
19953	                LOREM.options.appendErrorElem($self, errorText);
19954	                flag = false;
19955	            }else if((regexValidation === undefined) && ((($input.attr('type') === 'email') && !LOREM.options.validateEmail(selfvalue)) || (($input.attr('type') === 'tel') && !LOREM.options.validatePhone(selfvalue)))){ 
19956	            	errorText = $input.attr('data-cmp-constraint') || formFallBackError.attr('data-regex-message') || 'Validation For Regular Expression Has Failed.';
19957	            	 LOREM.options.appendErrorElem($self, errorText);
19958	            }
19959	            else {
19960	                $self.find('.hasError').remove();
19961	                $highLightElem.removeClass('highlightError');
19962	            }
19963	        } else if (!(selfvalue1 === '' || selfvalue1 === null || isInputType) && (isTextArea !== undefined) && ((isTextArea.length) > 0) && (isTextArea.val())!=="")  {
19964	            var isTextAreaVal= isTextArea.val();
19965	            if ((minLength > 0 && !LOREM.options.validateMin(isTextAreaVal, minLength))) {
19966	                errorText = $input.attr('data-min-message') || formFallBackError.attr('data-min-length-message') || 'Validation For Minimum Field Length Has Failed.';
19967	                LOREM.options.appendErrorElem($self, errorText);
19968	                flag = false;
19969	            } else if ((!isInputType && (regexValidation !== undefined) && (isTextAreaVal > 0) && !LOREM.options.validateInputRegex(isTextAreaVal, regexValidation))) {
19970	                errorText = $input.attr('data-regex-constraint-message') || formFallBackError.attr('data-regex-message') || 'Validation For Regular Expression Has Failed.';
19971	                LOREM.options.appendErrorElem($self, errorText);
19972	                flag = false;
19973	            } else {
19974	                $self.find('.hasError').remove();
19975	                $highLightElem.removeClass('highlightError');
19976	            }
19977	        } else {
19978	            if (selfvalue1 === '' || selfvalue1 === null) {
19979	                errorText = $inputReq.attr('data-cmp-required') || 'Required Field';
19980	                LOREM.options.appendErrorElem($self, errorText);
19981	                flag = false;
19982	            } else {
19983	                errorText = $input.attr('data-cmp-constraint') || '';
19984	                if (($input.attr('type') === 'email' && (selfvalue !== "") && !LOREM.options.validateEmail(selfvalue)) || ($input.attr('type') === 'tel' && (selfvalue !== "") && !LOREM.options.validatePhone(selfvalue))) {
19985	                    LOREM.options.appendErrorElem($self, errorText);
19986	                } else {
19987	                    $self.find('.hasError').remove();
19988	                    $highLightElem.removeClass('highlightError');
19989	                }
19990	            }
19991	        }
19992	    }
19993	    return flag;
19994	},
19995	
19996	formTextValidateOnBlur: function($elem) {
19997		   $elem = $(this);
19998	       var el = $('input,select,textarea'),
19999	        $hidden = $elem.attr('type') === 'hidden';
20000	    if (!$hidden) {
20001	        el.on('blur change', function() {
20002	            LOREM.options.validateFormFieldsElement($(this).closest('.form-group'));
20003
20004	        });
20005	        return true;
20006	    }
20007	    return false;
20008	},
20009	populateValues: function($formel , name, fieldval){
20010		var $elem = $formel.find("[name='" + name + "']");		
20011		if(!($elem === undefined)){
20012			var isAttrCheckOrRadio = $elem.attr('type') === 'checkbox' || $elem.attr('type') === 'radio';
20013			if(!($elem.attr('type') === undefined) && isAttrCheckOrRadio){
20014				$formel.find("[name='" + name + "'][value='"+fieldval+"']").attr("checked", "checked").triggerHandler("change");			
20015			}
20016			else{
20017				$elem.val(fieldval).triggerHandler("change");
20018			}
20019            return true;
20020		}
20021		return false;	
20022	},
20023	_validatePassword: function($elem) {
20024		var $changepwd = $('.changePasswordForm').length;
20025        var isValid = true,
20026        $currentPassword = $elem.find('input[name="current_password"]'),
20027        $password =$elem.find('input[name="password"]'),
20028        $confirmPassword = $elem.find('input[name="confirm_password"]');
20029        	var $passwordField = $password.closest('.form-group'),
20030				$confirmPasswordField = $confirmPassword.closest('.form-group'),
20031				errorText;
20032         	if (($changepwd > 0) && ($currentPassword.val() === $password.val())) {
20033				errorText = $password.attr('data-cmp-constraint') || '';
20034				LOREM.options.appendErrorElem($passwordField, errorText);
20035				isValid = false;
20036			}
20037			if ($password.val() !== $confirmPassword.val()) {
20038				errorText = $confirmPassword.attr('data-cmp-constraint') || '';
20039				LOREM.options.appendErrorElem($confirmPasswordField, errorText);
20040				isValid = false;
20041			}
20042        return isValid;
20043	 },
20044	scrollToFocusElem: function($elem) {
20045		if($elem.length) {
20046			var $body = $('html, body'),
20047				$headerMainnavWrapper = $('#header-mainnav-wrapper'),
20048				$utilitynavWrapper =  $('.cmp-utilitynav-wrapper'),
20049				elemScrollTop;
20050			if($utilitynavWrapper.hasClass('sticky')) {
20051				elemScrollTop = $elem.offset().top - $('.header-utilitynav-wrapper').outerHeight();
20052			}else{
20053				elemScrollTop = $elem.offset().top - $('header').outerHeight() + $headerMainnavWrapper.outerHeight();
20054			}
20055			/* to scroll even top of the page when header has position fixed */
20056			if($headerMainnavWrapper.hasClass('sticky')) {
20057				elemScrollTop = $elem.offset().top - $headerMainnavWrapper.outerHeight() - 20;
20058			}
20059			$body.stop().animate({
20060				scrollTop: elemScrollTop
20061			}, 500);
20062		}
20063	},
20064	/*  Show/hide fields conditionally  */
20065	conditionalFunction: function ($elem) {
20066		$.fn.conditionize = function (options) {
20067			var settings = $.extend({
20068				hideJS: true
20069			}, options);
20070			$.fn.showOrHide = function (listenTo, listenFor, $section) {
20071				var $listenToElem = $(listenTo);
20072				if(typeof listenFor === "boolean"){
20073					listenFor = listenFor.toString();
20074				}
20075				if ($listenToElem.is('select, input:not([type="radio"]):not([type="checkbox"])') && $listenToElem.val() === listenFor) {
20076					$section.slideDown();
20077				}else if ($listenToElem.val() && $listenToElem.val().length) {
20078				    var slideFlag = false;
20079				    $.each($(listenTo), function() {
20080				        if ($(this).val() === listenFor) {
20081				            slideFlag = true;
20082				            if ($(this).is(':checked')) {
20083				                $section.slideDown();
20084				            } else if (!$(this).is(':checked')) {
20085				                $section.slideUp();
20086				            }
20087				        }
20088						else {
20089                            if ($(this).is('select')) {
20090				                $section.slideUp();
20091                            } 
20092                        }
20093				    });
20094				    if (!slideFlag && $(listenTo + ":checked").val() === listenFor) {
20095				        $section.slideDown();
20096				    }
20097				}else {
20098					$section.slideUp();
20099				}
20100			}
20101			return this.each(function () {
20102				var $self = $(this),
20103					listenTo = "[name=" + $self.data('cond-option') + "]",
20104					listenFor = $self.data('cond-value'),
20105					$section = $self;
20106				//Set up event listener
20107				$(listenTo).on('change', function () {
20108					$.fn.showOrHide(listenTo, listenFor, $section);
20109				});
20110				//If setting was chosen, hide everything first...
20111				if (settings.hideJS) {
20112					$self.hide();
20113				}
20114				//Show based on current value on page load
20115				$.fn.showOrHide(listenTo, listenFor, $section);
20116			});
20117		}
20118		var $conditionalElem = $elem.find('.conditional'),
20119			isPublishMode;
20120		/*  to check whether CQ object is present or not and handle if there is an error  */
20121		try {
20122		   isPublishMode = JSON.parse(iswcmModeEditMode) ? false : true;
20123		} catch(error) {
20124		   isPublishMode = true;
20125		}
20126		if($conditionalElem.length && isPublishMode) {
20127			$conditionalElem.conditionize();
20128		}
20129	},
20130	isInViewport: function($elem) {
20131		var elementTop = $elem.offset().top + $elem.outerHeight(),
20132			elementBottom = elementTop + $elem.outerHeight(),
20133			viewportTop = $(window).scrollTop(),
20134			viewportBottom = viewportTop + $(window).height();
20135		return elementBottom > viewportTop && elementTop < viewportBottom;
20136	},
20137	_anchorTargetClick: function() {
20138        $(document).on('click', 'a[href ^= "#"]', function(e) {
20139            var targetLink = $(this).attr('href');
20140            var anchortagVal = targetLink.replace('#', '');
20141            var targetElem;
20142            if (anchortagVal.length > 0) {
20143                targetElem = LOREM.options._getTargetElem(anchortagVal);
20144            }
20145            if (targetElem !== undefined && targetElem.length > 0) {
20146                e.preventDefault();
20147                LOREM.options._calcTargetPosition(targetElem);
20148            }
20149        });
20150       	LOREM.options._deepLinkingElemScroll();
20151    },
20152    _calcTargetPosition: function(elem) {
20153        if (elem.length) {
20154            var $bodyHtml = $('body,html');
20155            var scrollHeight = $(elem).offset().top;
20156            var headerHeightCal = LOREM.options._calStickyHeaderHeight();
20157            $bodyHtml.stop().animate({
20158                scrollTop: scrollHeight - headerHeightCal
20159            }, 1000);
20160        }
20161    },
20162    /*below function is used to scrollto the matched element  when the header is sticky*/
20163	_deepLinkingElemScroll:function(){
20164		var queryParameterOnLoad = window.location.hash;
20165        if (queryParameterOnLoad !== "") {
20166            var scrollElemAttr = queryParameterOnLoad.replace('#', '');
20167            var srolledElem ;
20168            var headerHeightCal = LOREM.options._calStickyHeaderHeight();
20169            if (scrollElemAttr.length > 0) {
20170                srolledElem = LOREM.options._getTargetElem(scrollElemAttr);
20171            }
20172            if(srolledElem !== undefined && srolledElem.length>0 && headerHeightCal!== undefined){
20173                $('html, body').stop().animate({
20174                    scrollTop: srolledElem.offset().top - headerHeightCal
20175                }, 1000);
20176            }
20177        }
20178	},
20179	/*below function is used to get the id/name element assosiated with the href value on a page*/
20180	_getTargetElem:function(elem){
20181        var targetElem;
20182        var targetElemNameAttr = $("[name= " + elem + "]").parent();
20183        var targetElemIdAttr = $("[id= " + elem + "]").parent();
20184        if(targetElemIdAttr.length >0){
20185            targetElem = targetElemIdAttr;
20186        }else{
20187            targetElem = targetElemNameAttr;
20188        }
20189        return targetElem;
20190    },
20191    /*below function is used to calculate the height of header when it is sticky*/
20192    _calStickyHeaderHeight: function() {
20193    	var $mainNavWrapper = $('.header-mainnav-wrapper');
20194    	var $utilityNavWrapper = $('.header-utilitynav-wrapper');
20195    	var $cmpUtilityNavWrapper = $('.cmp-utilitynav-wrapper');
20196        var $headerSticky = $mainNavWrapper.find('.cmp-main-nav-container').hasClass('sticky-nav') || $('.header').hasClass('sticky-mobile-header');
20197        var $utilitynavDivSticky = $('.cmp-utilitynav-wrapper').data('sticky-utilitynav');
20198        var headerHeightCal = 0;
20199        if ($headerSticky || $utilitynavDivSticky) {
20200            if ($headerSticky && $utilitynavDivSticky) {
20201                if (LOREM.devices.isDesktop()) {
20202                    headerHeightCal = $mainNavWrapper.height() + $cmpUtilityNavWrapper.height();
20203                } else {
20204                    headerHeightCal = $utilityNavWrapper.height() + $cmpUtilityNavWrapper.height();
20205                }
20206            } else {
20207                if ($headerSticky && !$utilitynavDivSticky) {
20208                    if (LOREM.devices.isDesktop()) {
20209                        headerHeightCal = $mainNavWrapper.height();
20210                    } else {
20211                        headerHeightCal = $utilityNavWrapper.height();
20212                    }
20213                }
20214                if (!$headerSticky && $utilitynavDivSticky) {
20215                    headerHeightCal = $cmpUtilityNavWrapper.height();
20216                }
20217            }
20218           
20219        }
20220        if($('.sticky-list-dropdown .cmp-list-dropdown').length >0){
20221        	var $listSelectorSticky = $('.sticky-list-dropdown').find('.cmp-list-dropdown').first();
20222        	if($listSelectorSticky.length >0){
20223        		headerHeightCal =  headerHeightCal +  ($listSelectorSticky.height());
20224        	}
20225        }
20226        /*height added if notification banner exists*/
20227        if ($('.cmp-notification').length > 0) {
20228            if ($('.notification-banner-bg').data('sticky-notification')) {
20229                headerHeightCal = headerHeightCal + $('.cmp-notification').height();
20230            }
20231        }
20232        return headerHeightCal;
20233    },
20234	/*  generic ajax call implenatation
20235	 * formel is the form element, type is get or post for the request, url is the json url which needs to passed
20236	 * and data is the form data 
20237	 * hideloaderflag is need to set by default true and in any scenario if we need to skip it can be passed as false and give in fallback in particular componet
20238	 * callbacksucess is fallback sucess fn for form
20239	 * callbackfailure is fallback failure fn for any form*/
20240	ajaxCallHandler:function($formel,type,URL,data,hideLoaderFlag, showSstaticMsg, callbackSucess,callbackFailure){
20241		$.ajax({
20242			type: type,
20243			url: URL,
20244			data: data,
20245			success: function(response) {
20246				if(response.error === false){
20247                    $formel.parent().find('.alert-danger').addClass("hidden");
20248                    $formel.parent().find('.alert-success').removeClass("hidden");
20249                }
20250                else if(response.error === true){
20251                    $formel.parent().find('.alert-success').addClass("hidden");
20252                    $formel.parent().find('.alert-danger').removeClass("hidden");
20253                    LOREM.options.sucessErrorHandling($formel,response, showSstaticMsg);
20254                }
20255                else{
20256                	$formel.parent().find('.alert-success').addClass("hidden");
20257                    $formel.parent().find('.alert-danger').addClass("hidden");
20258                }
20259                if(hideLoaderFlag !== undefined && hideLoaderFlag === true){
20260                	LOREM.UTILS._hideLoader();
20261                }
20262                callbackSucess(response,$formel);
20263            },
20264            error: function(response) {
20265                LOREM.UTILS._hideLoader();
20266                LOREM.options.failureErrorHandling($formel,response);
20267                $formel.parent().find('.alert-danger').removeClass("hidden");
20268                callbackFailure(response);
20269            }
20270		});				
20271	},
20272	sucessErrorHandling: function($formel,response,showSstaticMsg){	
20273		var $appendErrorElem = $formel.parent().find('.alert-danger');
20274		var $staticErrorMsg = 'Something went wrong!';
20275		var $errorMsg = response.responseMsg;
20276		if(showSstaticMsg === true){
20277			$errorMsg = $staticErrorMsg + $errorMsg;
20278		}
20279		if(response.error === true){
20280			var $defaultMsg = $formel.parents().find('.cmp-error-messages-wrapper').data('default-message') || $errorMsg;
20281			if($defaultMsg !== undefined){
20282				$appendErrorElem.html($defaultMsg);
20283			}
20284		}		
20285	},
20286	failureErrorHandling: function($formel,response){
20287		var $appendErrorElem = $formel.parent().find('.alert-danger');
20288		var $errorEL = $formel.parents().find('.cmp-error-messages-wrapper');
20289		var $staticErrorMsg = 'Something went wrong!';
20290		var $defaultMsg = $errorEL.data('default-message') || $staticErrorMsg;
20291		if(response.status === 500){
20292			var $serviceErrorMsg = $errorEL.data('status-500-message') || $defaultMsg;
20293			if($serviceErrorMsg !== undefined){
20294				$appendErrorElem.html($serviceErrorMsg);
20295			}
20296		} else if(response.status === 400){
20297			var $badReqErrorMsg = $errorEL.data('status-400-message') || $defaultMsg;
20298			if($badReqErrorMsg !== undefined){
20299				$appendErrorElem.html($badReqErrorMsg);
20300			}
20301		} else if(response.status === 401){
20302			var $unAuthorizedErrorMsg = $errorEL.data('status-401-message')  || $defaultMsg;
20303			if($unAuthorizedErrorMsg !== undefined){
20304				$appendErrorElem.html($unAuthorizedErrorMsg);
20305			}
20306		} else if(response.status === 503){
20307			var $serviceUnAvilErrorMsg = $errorEL.data('status-503-message') || $defaultMsg;
20308			if($serviceUnAvilErrorMsg !== undefined){
20309				$appendErrorElem.html($serviceUnAvilErrorMsg);
20310			}
20311		} else if(response.status === 404){
20312			var $serviceNotFoundErrorMsg = $errorEL.data('status-404-message') || $defaultMsg;
20313			if($serviceNotFoundErrorMsg !== undefined){
20314				$appendErrorElem.html($serviceNotFoundErrorMsg);
20315			}
20316		} else{
20317			if($defaultMsg !== undefined){
20318				$appendErrorElem.html($defaultMsg);
20319			}
20320		}		
20321		$appendErrorElem.removeClass("hidden");
20322	},
20323	formElemresponseMatch:function(formel,response){
20324		if(response !== undefined && response !== ''){
20325			var data = response;
20326			var $formElements = formel.find("input,select");
20327		    $formElements.each(function() {
20328		    	var inputName = $(this).attr("name");
20329		        var isCheckbox = $(this).attr('type') === 'checkbox';
20330		        Object.keys(data).forEach(function(key) {
20331		        	var populateVal;
20332		            if (key === inputName) {
20333		                if(isCheckbox === true){	
20334		                	var checkedVal =data[key];
20335		                	if (typeof checkedVal === "boolean" || typeof checkedVal === "string") {
20336		                	    var tempChedVal = "" + checkedVal;
20337		                	    checkedVal = [];
20338		                	    checkedVal.push(tempChedVal);
20339		                	}
20340			                for(var i=0; i<checkedVal.length; i++) {
20341			                    populateVal = checkedVal[i];
20342			                    LOREM.options.populateValues(formel, inputName, populateVal);
20343			                }
20344				        }
20345		                else{
20346		                	populateVal =data[key];
20347			                LOREM.options.populateValues(formel, inputName, populateVal);
20348		                }
20349		            }
20350		        });
20351		    });
20352		}
20353	},
20354	/*To handle sysnchroous ajax calls*/
20355	synchronousAjax:function($formel,type,URL,data) {
20356      return new Promise(function(resolve, reject) {
20357        $.ajax({
20358    	  type: type,	
20359          url: URL,
20360          data:data,
20361          success: function(response) {
20362				resolve(response); // Resolve promise and go to then()
20363          },
20364          error: function(err) {
20365            reject(err) // Reject the promise and go to catch()
20366          }
20367        })
20368      })
20369	},
20370	filteredValues:function($chkBoxelem,resultsArray,key){
20371		var chkedElemArray = [];
20372		var allElemArray = [];
20373		$.each($($chkBoxelem.find("input[type=checkbox]")), function() {
20374			  allElemArray.push($(this).val());
20375			if($(this).is(':checked')){
20376				chkedElemArray.push($(this).val());
20377			}
20378		});
20379		var resultsData= [];
20380		var resultsOriginal = resultsArray;
20381		resultsOriginal.filter(function(entry) {
20382			var resultElemArray = [];
20383			if ($.isArray(entry[key])){
20384				resultElemArray = entry[key];
20385			}
20386			else{
20387				resultElemArray.push(entry[key]);
20388				
20389			}
20390			var cssClassName = '';
20391			var allActiveFlag =false;
20392			var addToResults = false;
20393			if(($.inArray( 'BOTH', resultElemArray) !== -1) || ($.inArray('ALL', resultElemArray) !== -1)){
20394				allActiveFlag = true;
20395			}
20396			allElemArray.forEach(function(item,index){
20397				if(allActiveFlag || (($.inArray( item, chkedElemArray ) !== -1) && ($.inArray( item, resultElemArray) !== -1 ))){
20398					if(!addToResults && (chkedElemArray.length>0)){
20399						addToResults = true;
20400					}
20401					cssClassName +=  'icon-checkbox-' + item.toLowerCase().trim().replace(/\s/g, '-') + '-active ';
20402				}else{
20403					cssClassName += 'icon-checkbox-' +item.toLowerCase().trim().replace(/\s/g, '-')  + '-inactive ';
20404				}
20405				
20406			});
20407			entry.cssClass = cssClassName.trim();
20408			if(addToResults){
20409				resultsData.push(entry);
20410			}
20411		});
20412		return resultsData;
20413	},
20414	_generateHiddenKeys : function(selectedJsonResp) {
20415		var container = $('<div />');
20416		Object.keys(selectedJsonResp).forEach(function(key) {
20417			$('<input>').attr({
20418				type : 'hidden',
20419				name : key,
20420				value : selectedJsonResp[key]
20421			}).appendTo(container);
20422		});
20423		return container;
20424	},
20425	_entireTileClickable:function($this,clickedElem,dataArticleIdentifier){
20426		$this.each(function(){
20427			$(this).hover(function(){
20428		       $(this).toggleClass('hoveredtile');
20429			});
20430			$(this).on('click', function(e){
20431                if(dataArticleIdentifier !== undefined && dataArticleIdentifier.length>0){
20432					var deepLinkParameter =  $(this).data('article-identifier');
20433                    if(deepLinkParameter !== undefined){
20434                    	location.href =  window.location.href.split('#')[0] + ('#'+deepLinkParameter);
20435                    }else{
20436                        window.history.pushState({}, document.title, window.location.pathname);
20437                    }
20438                }
20439
20440                  var clicked = $(this).find(clickedElem)[0];
20441                if (clicked === undefined) {
20442                    return;
20443                }
20444                $(this).find(clickedElem)[0].click();
20445
20446	        });
20447	   });
20448	},
20449	_checkboxAllAndNone: function() {	    
20450	    var allCheckboxFormElem = $('input:checkbox').closest(".form-group").find($(':checkbox'));
20451	    var noneVal = "NONE";
20452	    var allVal = "ALL";	    
20453	    if (allCheckboxFormElem !== undefined && allCheckboxFormElem.length > 0) {
20454	        allCheckboxFormElem.each(function() {
20455	        	var currentNoneEle = $(this).hasClass('icon-checkbox-none');
20456	            var currentAllEle = $(this).hasClass('icon-checkbox-all');
20457	        	if(currentNoneEle || currentAllEle) {
20458		            var currentFormElem = $(this).closest(".form-group");
20459		            currentFormElem.find('.icon-checkbox-all').click(function() {
20460		                if ($(this).prop('checked') === true) {
20461		                    $(this).closest('.form-group').find($(':checkbox')).each(function() {
20462		                        if ($(this).val().toLowerCase() !== noneVal.toLowerCase()) {
20463		                            $(this).prop('checked', true);
20464		                        }
20465		                    })
20466		                    currentFormElem.find('.icon-checkbox-none').prop('checked', false);
20467		                } else {
20468		                    $(this).closest('.form-group').find($(':checkbox')).each(function() {
20469		                        if ($(this).val().toLowerCase() !== noneVal.toLowerCase()) {
20470		                            $(this).prop('checked', false);
20471		                        }
20472		                    })
20473		                }
20474		            });
20475		            currentFormElem.find('.icon-checkbox-none').click(function() {
20476		                if ($(this).prop('checked') === true) {
20477		                    $(this).closest('.form-group').find($(':checkbox')).each(function() {
20478		                        $(this).prop('checked', false);
20479		                    })
20480		                    currentFormElem.find('.icon-checkbox-none').prop('checked', true);
20481		                }
20482		            });
20483		            currentFormElem.find($(':checkbox')).click(function(){	            	
20484		                var checkboxCount;
20485		                var currentFormGroup = $(this).closest(".form-group");
20486		                var currentChecBox = currentFormGroup.find($(':checkbox'));
20487		                var currentNoneEle = currentFormGroup.find($(':checkbox')).hasClass('icon-checkbox-none');
20488		                var currentAllEle = currentFormGroup.find($(':checkbox')).hasClass('icon-checkbox-all');
20489
20490	                    if (currentNoneEle && currentAllEle) {
20491	                        checkboxCount = 2;
20492	                    } else if (currentNoneEle || currentAllEle) {
20493	                        checkboxCount = 1;
20494	                    }
20495
20496						if ($(this).prop("checked") === false && $(this).val().toLowerCase() !== allVal.toLowerCase()) {
20497	                        if (currentChecBox.hasClass('icon-checkbox-all')) {
20498	                            currentFormGroup.find('.icon-checkbox-all').prop('checked', false);
20499	                        }
20500	                        if (currentChecBox.hasClass('icon-checkbox-none')) {
20501	                            currentFormGroup.find('.icon-checkbox-none').prop('checked', false);
20502	                        }
20503	                    } else if ($(this).prop("checked") === true && $(this).val().toLowerCase() !== noneVal.toLowerCase()) {
20504                            if (currentChecBox.hasClass('icon-checkbox-none')) {
20505	                            currentFormGroup.find('.icon-checkbox-none').prop('checked', false);
20506	                        }
20507	                    } else if (allCheckboxFormElem.find($(':checkbox')).not(':checked').length === 0) {
20508	                        if (currentChecBox.hasClass('icon-checkbox-all')) {
20509	                            currentFormGroup.find('.icon-checkbox-all').prop('checked', false);
20510	                        }
20511	                    }
20512	                    if (currentChecBox.length === currentChecBox.filter(':checked').length + checkboxCount &&
20513	                    currentFormGroup.find($(':checkbox')).hasClass('icon-checkbox-all') ) {	                       
20514	                        currentFormGroup.find('.icon-checkbox-all').prop('checked', true);	                      
20515	                    }
20516	                })
20517		        }
20518	        });
20519	    }
20520	},
20521	_shuffleTiles: function($elem, watchedArticleTilesList) {
20522	    $elem.each(function() {
20523	        var listTileWrapper = $(this);
20524	        listTileWrapper.children().removeClass('showTile make-tile-visible');
20525	        var dataMaxCount = listTileWrapper.attr('data-max-items');
20526	        var allPromoTiles = listTileWrapper.find('.cmp-tile-list.flex-unit');
20527	        var totalTilesLength = listTileWrapper.children().length;
20528	        var flexPos = [];
20529	        allPromoTiles.each(function() {
20530	            var flexPosVal = $(this).data('flex-position');
20531	            flexPos.push(flexPosVal);
20532	        });
20533	        var allNonPromoTiles = listTileWrapper.children().not('.cmp-tile-list.flex-unit');
20534	        var shuffleList = [];
20535	        if (watchedArticleTilesList) {
20536	        	var allUnwatchedList;
20537	            var allWatchedList ;
20538                if(allNonPromoTiles.find('.cmp-card-tile').hasClass('article-video-played')){
20539					allUnwatchedList = allNonPromoTiles.find('.cmp-card-tile').not('.article-video-played').parent();
20540	            	allWatchedList = allNonPromoTiles.find('.cmp-card-tile.article-video-played').parent();
20541                }else{
20542					allUnwatchedList = allNonPromoTiles.find('.cmp-card-tile').not('.article-video-completed').parent();
20543	            	allWatchedList = allNonPromoTiles.find('.cmp-card-tile.article-video-completed').parent();
20544                }
20545	            var unWatchedList = [];
20546	            var watchedList = [];
20547	            while (allUnwatchedList.length) {
20548	                unWatchedList.push(allUnwatchedList.splice(Math.floor(Math.random() * allUnwatchedList.length), 1)[0]);
20549	            }
20550	            while (allWatchedList.length) {
20551	                watchedList.push(allWatchedList.splice(Math.floor(Math.random() * allWatchedList.length), 1)[0]);
20552	            }
20553	            for (var m = 0; m < unWatchedList.length; m++) {
20554	            	shuffleList.push(unWatchedList[m]);
20555	            }
20556	            for (var k = 0; k < watchedList.length; k++) {
20557	            	shuffleList.push(watchedList[k]);
20558	            }
20559	        } else {
20560	            while (allNonPromoTiles.length) {
20561	                shuffleList.push(allNonPromoTiles.splice(Math.floor(Math.random() * allNonPromoTiles.length), 1)[0]);
20562	            }
20563	        }
20564	        var arr = [];
20565	        var allPromoIndex = 0;
20566	        var shuffleListIndex = 0;
20567	        for (var i = 0; i < totalTilesLength; i++) {
20568	            if ((allPromoTiles.length > 0) && ($.inArray(i, flexPos) !== -1)) {
20569	                arr.push(allPromoTiles[allPromoIndex]);
20570	                allPromoIndex++;
20571	            } else {
20572                    arr.push(shuffleList[shuffleListIndex]);
20573                    shuffleListIndex++;
20574	            }
20575	        }
20576	        listTileWrapper.children().remove();
20577	        listTileWrapper.append(arr);
20578	        for (var j = 0; j < dataMaxCount; j++) {
20579	            listTileWrapper.find('.cmp-tile-list').eq(j).addClass('showTile');
20580	        }
20581	        if (watchedArticleTilesList) {
20582	            listTileWrapper.find('.cmp-tile-list').not('.showTile').hide();
20583	        }
20584	    });
20585	},
20586	 /* This function handles to ignore the form fields from form submit*/
20587    _ignoreFieldFromSubmit: function(formData, removeField,formName) {
20588        if(formName === true){
20589           	formData = formData.not(function() {
20590           		return $(this).hasClass(removeField);
20591     	  	});
20592        } else {
20593            formData = formData.each(function(){
20594          		$(this).find("[class='" + removeField + "']").remove();
20595       		});
20596        }
20597       return formData;
20598 	},
20599 	/* select converts to custom dropdown specific js*/
20600 	_customDropdown: function($this) {
20601 	    var customSelectDiv, selElmnt, createSelectedDiv, createItemsDiv, createOptionsDiv;
20602 	    $this.parent().addClass('custom-select');
20603 	    customSelectDiv = document.getElementsByClassName("custom-select");
20604 	    for (var i = 0; i < customSelectDiv.length; i++) {
20605 	        selElmnt = customSelectDiv[i].getElementsByTagName("select")[0];
20606 	        createSelectedDiv = document.createElement("DIV");
20607 	        createSelectedDiv.setAttribute("class", "select-selected");
20608 	        createSelectedDiv.innerHTML = selElmnt.options[selElmnt.selectedIndex].innerHTML;
20609 	        customSelectDiv[i].appendChild(createSelectedDiv);
20610 	        createItemsDiv = document.createElement("DIV");
20611 	        createItemsDiv.setAttribute("class", "select-items select-hide");
20612 	        for (var j = 1; j < selElmnt.length; j++) {
20613 	            createOptionsDiv = document.createElement("DIV");
20614 	            createOptionsDiv.innerHTML = selElmnt.options[j].innerHTML;
20615				LOREM.options._clickSlectedItem(createOptionsDiv);
20616 	            createItemsDiv.appendChild(createOptionsDiv);
20617 	        }
20618 	        customSelectDiv[i].appendChild(createItemsDiv);
20619			LOREM.options._mouseEnterMouseLeave(createSelectedDiv,customSelectDiv[i]);
20620 	    }
20621 	},
20622 	_clickSlectedItem: function(selectDiv) {
20623 	    selectDiv.addEventListener("click", function() {
20624 	        var selectedDivReplace, selectItemsParentSelect, selectSiblings;
20625 	        selectItemsParentSelect = this.parentNode.parentNode.getElementsByTagName("select")[0];
20626 	        selectSiblings = this.parentNode.previousSibling;
20627 	        for (var m = 0; m < selectItemsParentSelect.length; m++) {
20628 	            if (selectItemsParentSelect.options[m].innerHTML === this.innerHTML) {
20629 	                selectItemsParentSelect.selectedIndex = m;
20630 	                selectSiblings.innerHTML = this.innerHTML;
20631 	                selectedDivReplace = this.parentNode.getElementsByClassName("same-as-selected");
20632 	                for (var k = 0; k < selectedDivReplace.length; k++) {
20633 	                    selectedDivReplace[k].removeAttribute("class");
20634 	                }
20635 	                this.setAttribute("class", "same-as-selected");
20636 	                break;
20637 	            }
20638 	        }
20639 	        selectSiblings.click();
20640 	        LOREM.options._selectedTriggerChange($(selectItemsParentSelect));
20641 	    });
20642 	},
20643 	_mouseEnterMouseLeave: function(mouseEnterElem, mouseLeaveElem) {
20644 	    mouseEnterElem.addEventListener("mouseenter", function(e) {
20645 	        e.stopPropagation();
20646 	        this.nextSibling.classList.toggle("select-hide");
20647 	    });
20648 	    mouseLeaveElem.addEventListener("mouseleave", function(e) {
20649 	        e.stopPropagation();
20650 	        LOREM.options._closeAllSelect();
20651 	    });
20652 	},
20653 	/*a function that will close all select boxes in the document,
20654	  except the current select box:*/
20655 	_closeAllSelect: function() {
20656 	    var selectItems, arrNo = [];
20657 	    selectItems = document.getElementsByClassName("select-items");
20658 	    for (var n = 0; n < selectItems.length; n++) {
20659 	        if (arrNo.indexOf(n)) {
20660 	            selectItems[n].classList.add("select-hide");
20661 	        }
20662 	    }
20663 	},
20664	/* matching custom dropdown div text with select option text and trigger change on hover*/
20665 	_selectedTriggerChange: function($this) {
20666 		var selectetedText = $this.parent().find('.select-selected').text();
20667 	    var triggerFlag = false;
20668 	    $this.find('option').each(function() {
20669 	        if ($(this).val() !== "0" && $(this).val() !== null && $(this).text() === selectetedText) {
20670 	        	triggerFlag = true;
20671 	            $(this).attr('selected', 'selected');
20672                 return false;
20673 	        }
20674 	    });
20675 	    if(triggerFlag){
20676 	    	$this.trigger("change");
20677            LOREM.options._closeAllSelect(this);
20678 	    }
20679 	}
20680};
20681
20682LOREM.dateUtils = {
20683	_dateminMax: function($elem) {
20684		var $input = $elem.find('input[type="date"]');
20685		var $inputJqueryDate = $elem.find('input[type="text"][class="jq-datepicker"]');
20686	    var isInputDate = $input.attr('type') === 'date';
20687	    var isJqueryDate = $inputJqueryDate.attr('type') === 'text' && $inputJqueryDate.attr('class') === 'jq-datepicker';
20688        var minLength = $input.attr('minlength');
20689        var maxLength = $input.attr('maxlength');
20690        var minLengthJqueryDate = $inputJqueryDate.attr('minlength');
20691        var maxLengthJqueryDate = $inputJqueryDate.attr('maxlength');
20692        var jqueryDateFormat =  $inputJqueryDate.attr('data-date-format');
20693        if ((minLengthJqueryDate !== undefined || maxLengthJqueryDate !== undefined) && isJqueryDate === true) {
20694        	$inputJqueryDate.datepicker({ 
20695        		dateFormat:jqueryDateFormat,
20696            	minDate: minLengthJqueryDate, 
20697            	maxDate: maxLengthJqueryDate 
20698            });
20699        }
20700        else {
20701        	if((minLength !== undefined || maxLength !== undefined) && isInputDate === true) {
20702	            var futureMin = new Date(); // get today date
20703	            futureMin.setDate(futureMin.getDate() + parseInt(minLength)); // add min days
20704	            var finalDateMin = futureMin.getFullYear() + '-' + ((futureMin.getMonth() + 1) < 10 ? '0' : '') + (futureMin.getMonth() + 1) + '-' + (futureMin.getDate() < 10 ? '0' : '') + futureMin.getDate();
20705	            var futureMax = new Date(); // get today date
20706	            futureMax.setDate(futureMax.getDate() + parseInt(maxLength)); // add max days
20707	            var finalDateMax = futureMax.getFullYear() + '-' + ((futureMax.getMonth() + 1) < 10 ? '0' : '') + (futureMax.getMonth() + 1) + '-' + (futureMax.getDate() < 10 ? '0' : '') + futureMax.getDate();
20708	            if (minLength !== undefined)
20709	                $input.attr('min', finalDateMin);
20710	            if (maxLength !== undefined)
20711	                $input.attr('max', finalDateMax);
20712	        }
20713        }
20714    }
20715}
20716$(document).ready(function() {	
20717	var $this = $(this).find('form.user-form');
20718	var $formGroupDiv = $this.find('.form-group');
20719    if($formGroupDiv !== undefined && $formGroupDiv.length >0){
20720        $formGroupDiv.each(function() {
20721            LOREM.dateUtils._dateminMax($(this).closest('.form-group'));
20722            $(this).find('.jq-datepicker').keypress(function(e) {
20723                e.preventDefault();
20724            });
20725        });
20726    }
20727});
20728LOREM.UTILS = {
20729    
20730    _showLoader: function(){
20731        var $loaderEl = $('#LOREM-loader');
20732        $loaderEl.removeClass('d-none');
20733    },
20734    _hideLoader: function() {
20735        var $loaderEl = $('#LOREM-loader');
20736        $loaderEl.addClass('d-none');
20737    }
20738    
20739}
20740!function(e){function t(a,n){return this instanceof t?(e.isPlainObject(a)?n=a:(n=n||{},n.alias=a),this.el=void 0,this.opts=e.extend(!0,{},this.defaults,n),this.maskset=void 0,this.noMasksCache=n&&void 0!==n.definitions,this.userOptions=n||{},this.events={},this.dataAttribute="data-inputmask",this.isRTL=this.opts.numericInput,void i(this.opts.alias,n,this.opts)):new t(a,n)}function i(t,a,n){var r=n.aliases[t];return r?(r.alias&&i(r.alias,void 0,n),e.extend(!0,n,r),e.extend(!0,n,a),!0):(null===n.mask&&(n.mask=t),!1)}function a(i,a){function n(i,n,r){if(null!==i&&""!==i){if(1===i.length&&r.greedy===!1&&0!==r.repeat&&(r.placeholder=""),r.repeat>0||"*"===r.repeat||"+"===r.repeat){var o="*"===r.repeat?0:"+"===r.repeat?1:r.repeat;i=r.groupmarker.start+i+r.groupmarker.end+r.quantifiermarker.start+o+","+r.repeat+r.quantifiermarker.end}var s;return void 0===t.prototype.masksCache[i]||a===!0?(s={mask:i,maskToken:t.prototype.analyseMask(i,r),validPositions:{},_buffer:void 0,buffer:void 0,tests:{},metadata:n,maskLength:void 0},a!==!0&&(t.prototype.masksCache[r.numericInput?i.split("").reverse().join(""):i]=s,s=e.extend(!0,{},t.prototype.masksCache[r.numericInput?i.split("").reverse().join(""):i]))):s=e.extend(!0,{},t.prototype.masksCache[r.numericInput?i.split("").reverse().join(""):i]),s}}var r;
vendor: 25,543 bytes, line 20740
20740if(e.isFunction(i.mask)&&(i.mask=i.mask(i)),e.isArray(i.mask)){if(i.mask.length>1){i.keepStatic=null===i.keepStatic||i.keepStatic;var o=i.groupmarker.start;return e.each(i.numericInput?i.mask.reverse():i.mask,function(t,a){o.length>1&&(o+=i.groupmarker.end+i.alternatormarker+i.groupmarker.start),o+=void 0===a.mask||e.isFunction(a.mask)?a:a.mask}),o+=i.groupmarker.end,n(o,i.mask,i)}i.mask=i.mask.pop()}return i.mask&&(r=void 0===i.mask.mask||e.isFunction(i.mask.mask)?n(i.mask,i.mask,i):n(i.mask.mask,i.mask,i)),r}function n(i,a,r){function c(e,t,i){t=t||0;var a,n,o,s=[],l=0,u=f();V=void 0!==W?W.maxLength:void 0,V===-1&&(V=void 0);do e===!0&&p().validPositions[l]?(o=p().validPositions[l],n=o.match,a=o.locator.slice(),s.push(i===!0?o.input:i===!1?n.nativeDef:_(l,n))):(o=v(l,a,l-1),n=o.match,a=o.locator.slice(),(r.jitMasking===!1||l<u||"number"==typeof r.jitMasking&&isFinite(r.jitMasking)&&r.jitMasking>l)&&s.push(i===!1?n.nativeDef:_(l,n))),l++;while((void 0===V||l<V)&&(null!==n.fn||""!==n.def)||t>l);return""===s[s.length-1]&&s.pop(),p().maskLength=l+1,s}function p(){return a}function d(e){var t=p();t.buffer=void 0,e!==!0&&(t._buffer=void 0,t.validPositions={},t.p=0)}function f(e,t,i){var a=-1,n=-1,r=i||p().validPositions;void 0===e&&(e=-1);for(var o in r){var s=parseInt(o);r[s]&&(t||null!==r[s].match.fn)&&(s<=e&&(a=s),s>=e&&(n=s))}return a!==-1&&e-a>1||n<e?a:n}function m(t,i,a,n){function o(e){var t=p().validPositions[e];if(void 0!==t&&null===t.match.fn){var i=p().validPositions[e-1],a=p().validPositions[e+1];return void 0!==i&&void 0!==a}return!1}var s,l=t,u=e.extend(!0,{},p().validPositions),c=!1;for(p().p=t,s=i-1;s>=l;s--)void 0!==p().validPositions[s]&&(a!==!0&&(!p().validPositions[s].match.optionality&&o(s)||r.canClearPosition(p(),s,f(),n,r)===!1)||delete p().validPositions[s]);for(d(!0),s=l+1;s<=f();){for(;void 0!==p().validPositions[l];)l++;if(s<l&&(s=l+1),void 0===p().validPositions[s]&&E(s))s++;else{var m=v(s);c===!1&&u[l]&&u[l].match.def===m.match.def?(p().validPositions[l]=e.extend(!0,{},u[l]),p().validPositions[l].input=m.input,delete p().validPositions[s],s++):y(l,m.match.def)?A(l,m.input||_(s),!0)!==!1&&(delete p().validPositions[s],s++,c=!0):E(s)||(s++,l--),l++}}d(!0)}function h(e,t){for(var i,a=e,n=f(),o=p().validPositions[n]||k(0)[0],s=void 0!==o.alternation?o.locator[o.alternation].toString().split(","):[],l=0;l<a.length&&(i=a[l],!(i.match&&(r.greedy&&i.match.optionalQuantifier!==!0||(i.match.optionality===!1||i.match.newBlockMarker===!1)&&i.match.optionalQuantifier!==!0)&&(void 0===o.alternation||o.alternation!==i.alternation||void 0!==i.locator[o.alternation]&&S(i.locator[o.alternation].toString().split(","),s)))||t===!0&&(null!==i.match.fn||/[0-9a-bA-Z]/.test(i.match.def)));l++);return i}function v(e,t,i){return p().validPositions[e]||h(k(e,t?t.slice():t,i))}function g(e){return p().validPositions[e]?p().validPositions[e]:k(e)[0]}function y(e,t){for(var i=!1,a=k(e),n=0;n<a.length;n++)if(a[n].match&&a[n].match.def===t){i=!0;break}return i}function k(t,i,a){function n(i,a,o,s){function u(o,s,d){function h(t,i){var a=0===e.inArray(t,i.matches);return a||e.each(i.matches,function(e,n){if(n.isQuantifier===!0&&(a=h(t,i.matches[e-1])))return!1}),a}function g(t,i,a){var n,r;return(p().tests[t]||p().validPositions[t])&&e.each(p().tests[t]||[p().validPositions[t]],function(e,t){var o=void 0!==a?a:t.alternation,s=void 0!==t.locator[o]?t.locator[o].toString().indexOf(i):-1;(void 0===r||s<r)&&s!==-1&&(n=t,r=s)}),n?n.locator.slice((void 0!==a?a:n.alternation)+1):void 0!==a?g(t,i):void 0}function y(e,i){return null===e.match.fn&&null!==i.match.fn&&i.match.fn.test(e.match.def,p(),t,!1,r,!1)}if(c>1e4)throw"Inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. "+p().mask;if(c===t&&void 0===o.matches)return f.push({match:o,locator:s.reverse(),cd:v}),!0;if(void 0!==o.matches){if(o.isGroup&&d!==o){if(o=u(i.matches[e.inArray(o,i.matches)+1],s))return!0}else if(o.isOptional){var k=o;if(o=n(o,a,s,d)){if(l=f[f.length-1].match,!h(l,k))return!0;m=!0,c=t}}else if(o.isAlternator){var x,b=o,P=[],w=f.slice(),S=s.length,A=a.length>0?a.shift():-1;if(A===-1||"string"==typeof A){var E,C=c,R=a.slice(),M=[];if("string"==typeof A)M=A.split(",");else for(E=0;E<b.matches.length;E++)M.push(E);for(var O=0;O<M.length;O++){if(E=parseInt(M[O]),f=[],a=g(c,E,S)||R.slice(),o=u(b.matches[E]||i.matches[E],[E].concat(s),d)||o,o!==!0&&void 0!==o&&M[M.length-1]<b.matches.length){var _=e.inArray(o,i.matches)+1;i.matches.length>_&&(o=u(i.matches[_],[_].concat(s.slice(1,s.length)),d),o&&(M.push(_.toString()),e.each(f,function(e,t){t.alternation=s.length-1})))}x=f.slice(),c=C,f=[];for(var I=0;I<x.length;I++){var j=x[I],D=!1;j.alternation=j.alternation||S;for(var F=0;F<P.length;F++){var N=P[F];if(("string"!=typeof A||e.inArray(j.locator[j.alternation].toString(),M)!==-1)&&(j.match.def===N.match.def||y(j,N))){D=j.match.nativeDef===N.match.nativeDef,j.alternation==N.alternation&&N.locator[N.alternation].toString().indexOf(j.locator[j.alternation])===-1&&(N.locator[N.alternation]=N.locator[N.alternation]+","+j.locator[j.alternation],N.alternation=j.alternation,null==j.match.fn&&(N.na=N.na||j.locator[j.alternation].toString(),N.na.indexOf(j.locator[j.alternation])===-1&&(N.na=N.na+","+j.locator[j.alternation])));break}}D||P.push(j)}}"string"==typeof A&&(P=e.map(P,function(t,i){if(isFinite(i)){var a,n=t.alternation,r=t.locator[n].toString().split(",");t.locator[n]=void 0,t.alternation=void 0;for(var o=0;o<r.length;o++)a=e.inArray(r[o],M)!==-1,a&&(void 0!==t.locator[n]?(t.locator[n]+=",",t.locator[n]+=r[o]):t.locator[n]=parseInt(r[o]),t.alternation=n);if(void 0!==t.locator[n])return t}})),f=w.concat(P),c=t,m=f.length>0,a=R.slice()}else o=u(b.matches[A]||i.matches[A],[A].concat(s),d);if(o)return!0}else if(o.isQuantifier&&d!==i.matches[e.inArray(o,i.matches)-1])for(var T=o,G=a.length>0?a.shift():0;G<(isNaN(T.quantifier.max)?G+1:T.quantifier.max)&&c<=t;G++){var B=i.matches[e.inArray(T,i.matches)-1];if(o=u(B,[G].concat(s),B)){if(l=f[f.length-1].match,l.optionalQuantifier=G>T.quantifier.min-1,h(l,B)){if(G>T.quantifier.min-1){m=!0,c=t;break}return!0}return!0}}else if(o=n(o,a,s,d))return!0}else c++}for(var d=a.length>0?a.shift():0;d<i.matches.length;d++)if(i.matches[d].isQuantifier!==!0){var h=u(i.matches[d],[d].concat(o),s);if(h&&c===t)return h;if(c>t)break}}function o(t){var i=[];return e.isArray(t)||(t=[t]),t.length>0&&(void 0===t[0].alternation?(i=h(t.slice()).locator.slice(),0===i.length&&(i=t[0].locator.slice())):e.each(t,function(e,t){if(""!==t.def)if(0===i.length)i=t.locator.slice();else for(var a=0;a<i.length;a++)t.locator[a]&&i[a].toString().indexOf(t.locator[a])===-1&&(i[a]+=","+t.locator[a])})),i}function s(e){return r.keepStatic&&t>0&&e.length>1+(""===e[e.length-1].match.def?1:0)&&e[0].match.optionality!==!0&&e[0].match.optionalQuantifier!==!0&&null===e[0].match.fn&&!/[0-9a-bA-Z]/.test(e[0].match.def)?[h(e)]:e}var l,u=p().maskToken,c=i?a:0,d=i?i.slice():[0],f=[],m=!1,v=i?i.join(""):"";if(t>-1){if(void 0===i){for(var g,y=t-1;void 0===(g=p().validPositions[y]||p().tests[y])&&y>-1;)y--;void 0!==g&&y>-1&&(d=o(g),v=d.join(""),c=y)}if(p().tests[t]&&p().tests[t][0].cd===v)return s(p().tests[t]);for(var k=d.shift();k<u.length;k++){var x=n(u[k],d,[k]);if(x&&c===t||c>t)break}}return(0===f.length||m)&&f.push({match:{fn:null,cardinality:0,optionality:!0,casing:null,def:"",placeholder:""},locator:[],cd:v}),void 0!==i&&p().tests[t]?s(e.extend(!0,[],f)):(p().tests[t]=e.extend(!0,[],f),s(p().tests[t]))}function x(){return void 0===p()._buffer&&(p()._buffer=c(!1,1),void 0===p().buffer&&p()._buffer.slice()),p()._buffer}function b(e){return void 0!==p().buffer&&e!==!0||(p().buffer=c(!0,f(),!0)),p().buffer}function P(e,t,i){var a;if(e===!0)d(),e=0,t=i.length;else for(a=e;a<t;a++)delete p().validPositions[a];for(a=e;a<t;a++)d(!0),i[a]!==r.skipOptionalPartCharacter&&A(a,i[a],!0,!0)}function w(e,i,a){switch(r.casing||i.casing){case"upper":e=e.toUpperCase();break;case"lower":e=e.toLowerCase();break;case"title":var n=p().validPositions[a-1];e=0===a||n&&n.input===String.fromCharCode(t.keyCode.SPACE)?e.toUpperCase():e.toLowerCase()}return e}function S(t,i){for(var a=r.greedy?i:i.slice(0,1),n=!1,o=0;o<t.length;o++)if(e.inArray(t[o],a)!==-1){n=!0;break}return n}function A(i,a,n,o,s){function l(e){var t=q?e.begin-e.end>1||e.begin-e.end===1&&r.insertMode:e.end-e.begin>1||e.end-e.begin===1&&r.insertMode;return t&&0===e.begin&&e.end===p().maskLength?"full":t}function u(t,a,n){var s=!1;return e.each(k(t),function(u,c){for(var h=c.match,v=a?1:0,g="",y=h.cardinality;y>v;y--)g+=M(t-(y-1));if(a&&(g+=a),b(!0),s=null!=h.fn?h.fn.test(g,p(),t,n,r,l(i)):(a===h.def||a===r.skipOptionalPartCharacter)&&""!==h.def&&{c:h.placeholder||h.def,pos:t},s!==!1){var k=void 0!==s.c?s.c:a;k=k===r.skipOptionalPartCharacter&&null===h.fn?h.placeholder||h.def:k;var S=t,E=b();if(void 0!==s.remove&&(e.isArray(s.remove)||(s.remove=[s.remove]),e.each(s.remove.sort(function(e,t){return t-e}),function(e,t){m(t,t+1,!0)})),void 0!==s.insert&&(e.isArray(s.insert)||(s.insert=[s.insert]),e.each(s.insert.sort(function(e,t){return e-t}),function(e,t){A(t.pos,t.c,!0,o)})),s.refreshFromBuffer){var C=s.refreshFromBuffer;if(n=!0,P(C===!0?C:C.start,C.end,E),void 0===s.pos&&void 0===s.c)return s.pos=f(),!1;if(S=void 0!==s.pos?s.pos:t,S!==t)return s=e.extend(s,A(S,k,!0,o)),!1}else if(s!==!0&&void 0!==s.pos&&s.pos!==t&&(S=s.pos,P(t,S,b().slice()),S!==t))return s=e.extend(s,A(S,k,!0)),!1;return(s===!0||void 0!==s.pos||void 0!==s.c)&&(u>0&&d(!0),x(S,e.extend({},c,{input:w(k,h,S)}),o,l(i))||(s=!1),!1)}}),s}function c(t,i,a){var n,s,l,u,c,m,h,v,g=e.extend(!0,{},p().validPositions),y=!1,x=f();for(u=p().validPositions[x];x>=0;x--)if(l=p().validPositions[x],l&&void 0!==l.alternation){if(n=x,s=p().validPositions[n].alternation,u.locator[l.alternation]!==l.locator[l.alternation])break;u=l}if(void 0!==s){v=parseInt(n);var b=void 0!==u.locator[u.alternation||s]?u.locator[u.alternation||s]:h[0];b.length>0&&(b=b.split(",")[0]);var P=p().validPositions[v],w=p().validPositions[v-1];e.each(k(v,w?w.locator:void 0,v-1),function(n,l){h=l.locator[s]?l.locator[s].toString().split(","):[];for(var u=0;u<h.length;u++){var k=[],x=0,w=0,S=!1;if(b<h[u]&&(void 0===l.na||e.inArray(h[u],l.na.split(","))===-1)){p().validPositions[v]=e.extend(!0,{},l);var E=p().validPositions[v].locator;for(p().validPositions[v].locator[s]=parseInt(h[u]),null==l.match.fn?(P.input!==l.match.def&&(S=!0,P.generatedInput!==!0&&k.push(P.input)),w++,p().validPositions[v].generatedInput=!/[0-9a-bA-Z]/.test(l.match.def),p().validPositions[v].input=l.match.def):p().validPositions[v].input=P.input,c=v+1;c<f(void 0,!0)+1;c++)m=p().validPositions[c],m&&m.generatedInput!==!0&&/[0-9a-bA-Z]/.test(m.input)?k.push(m.input):c<t&&x++,delete p().validPositions[c];for(S&&k[0]===l.match.def&&k.shift(),d(!0),y=!0;k.length>0;){var C=k.shift();if(C!==r.skipOptionalPartCharacter&&!(y=A(f(void 0,!0)+1,C,!1,o,!0)))break}if(y){p().validPositions[v].locator=E;var R=f(t)+1;for(c=v+1;c<f()+1;c++)m=p().validPositions[c],(void 0===m||null==m.match.fn)&&c<t+(w-x)&&w++;t+=w-x,y=A(t>R?R:t,i,a,o,!0)}if(y)return!1;d(),p().validPositions=e.extend(!0,{},g)}}})}return y}function g(t,i){var a=p().validPositions[i];if(a)for(var n=a.locator,r=n.length,o=t;o<i;o++)if(void 0===p().validPositions[o]&&!E(o,!0)){var s=k(o),l=s[0],u=-1;e.each(s,function(e,t){for(var i=0;i<r&&void 0!==t.locator[i]&&S(t.locator[i].toString().split(","),n[i].toString().split(","));i++)u<i&&(u=i,l=t)}),x(o,e.extend({},l,{input:l.match.placeholder||l.match.def}),!0)}}function x(t,i,a,n){if(n||r.insertMode&&void 0!==p().validPositions[t]&&void 0===a){var o,s=e.extend(!0,{},p().validPositions),l=f(void 0,!0);for(o=t;o<=l;o++)delete p().validPositions[o];p().validPositions[t]=e.extend(!0,{},i);var u,c=!0,m=p().validPositions,h=!1,v=p().maskLength;for(o=u=t;o<=l;o++){var g=s[o];if(void 0!==g)for(var k=u;k<p().maskLength&&(null===g.match.fn&&m[o]&&(m[o].match.optionalQuantifier===!0||m[o].match.optionality===!0)||null!=g.match.fn);){if(k++,h===!1&&s[k]&&s[k].match.def===g.match.def)p().validPositions[k]=e.extend(!0,{},s[k]),p().validPositions[k].input=g.input,R(k),u=k,c=!0;else if(y(k,g.match.def)){var x=A(k,g.input,!0,!0);c=x!==!1,u=x.caret||x.insert?f():k,h=!0}else c=g.generatedInput===!0;if(p().maskLength<v&&(p().maskLength=v),c)break}if(!c)break}if(!c)return p().validPositions=e.extend(!0,{},s),d(!0),!1}else p().validPositions[t]=e.extend(!0,{},i);return d(!0),!0}function R(t){for(var i=t-1;i>-1&&!p().validPositions[i];i--);var a,n;for(i++;i<t;i++)void 0===p().validPositions[i]&&(r.jitMasking===!1||r.jitMasking>i)&&(n=k(i,v(i-1).locator,i-1).slice(),""===n[n.length-1].match.def&&n.pop(),a=h(n),a&&(a.match.def===r.radixPointDefinitionSymbol||!E(i,!0)||e.inArray(r.radixPoint,b())<i&&a.match.fn&&a.match.fn.test(_(i),p(),i,!1,r))&&(I=u(i,a.match.placeholder||(null==a.match.fn?a.match.def:""!==_(i)?_(i):b()[i]),!0),I!==!1&&(p().validPositions[I.pos||i].generatedInput=!0)))}n=n===!0;var O=i;void 0!==i.begin&&(O=q&&!l(i)?i.end:i.begin);var I=!1,j=e.extend(!0,{},p().validPositions);if(R(O),l(i)&&(G(void 0,t.keyCode.DELETE,i),O=p().p),O<p().maskLength&&(I=u(O,a,n),(!n||o===!0)&&I===!1)){var D=p().validPositions[O];if(!D||null!==D.match.fn||D.match.def!==a&&a!==r.skipOptionalPartCharacter){if((r.insertMode||void 0===p().validPositions[C(O)])&&!E(O,!0)){var F=k(O).slice();""===F[F.length-1].match.def&&F.pop();var N=h(F,!0);N&&null===N.match.fn&&(N=N.match.placeholder||N.match.def,u(O,N,n),p().validPositions[O].generatedInput=!0);for(var T=O+1,B=C(O);T<=B;T++)if(I=u(T,a,n),I!==!1){g(O,void 0!==I.pos?I.pos:T),O=T;break}}}else I={caret:C(O)}}return I===!1&&r.keepStatic&&!n&&s!==!0&&(I=c(O,a,n)),I===!0&&(I={pos:O}),e.isFunction(r.postValidation)&&I!==!1&&!n&&o!==!0&&(I=!!r.postValidation(b(!0),I,r)&&I),void 0===I.pos&&(I.pos=O),I===!1&&(d(!0),p().validPositions=e.extend(!0,{},j)),I}function E(e,t){var i;if(t?(i=v(e).match,""===i.def&&(i=g(e).match)):i=g(e).match,null!=i.fn)return i.fn;if(t!==!0&&e>-1){var a=k(e);return a.length>1+(""===a[a.length-1].match.def?1:0)}return!1}function C(e,t){var i=p().maskLength;if(e>=i)return i;for(var a=e;++a<i&&(t===!0&&(g(a).match.newBlockMarker!==!0||!E(a))||t!==!0&&!E(a)););return a}function R(e,t){var i,a=e;if(a<=0)return 0;for(;--a>0&&(t===!0&&g(a).match.newBlockMarker!==!0||t!==!0&&!E(a)&&(i=k(a),i.length<2||2===i.length&&""===i[1].match.def)););return a}function M(e){return void 0===p().validPositions[e]?_(e):p().validPositions[e].input}function O(t,i,a,n,o){if(n&&e.isFunction(r.onBeforeWrite)){var s=r.onBeforeWrite(n,i,a,r);if(s){if(s.refreshFromBuffer){var l=s.refreshFromBuffer;P(l===!0?l:l.start,l.end,s.buffer||i),i=b(!0)}void 0!==a&&(a=void 0!==s.caret?s.caret:a)}}t.inputmask._valueSet(i.join("")),void 0===a||void 0!==n&&"blur"===n.type?L(t,i,a):D(t,a),o===!0&&(Y=!0,e(t).trigger("input"))}function _(e,t){if(t=t||g(e).match,void 0!==t.placeholder)return t.placeholder;if(null===t.fn){if(e>-1&&void 0===p().validPositions[e]){var i,a=k(e),n=[];if(a.length>1+(""===a[a.length-1].match.def?1:0))for(var o=0;o<a.length;o++)if(a[o].match.optionality!==!0&&a[o].match.optionalQuantifier!==!0&&(null===a[o].match.fn||void 0===i||a[o].match.fn.test(i.match.def,p(),e,!0,r)!==!1)&&(n.push(a[o]),null===a[o].match.fn&&(i=a[o]),n.length>1&&/[0-9a-bA-Z]/.test(n[0].match.def)))return r.placeholder.charAt(e%r.placeholder.length)}return t.def}return r.placeholder.charAt(e%r.placeholder.length)}function I(i,a,n,o,s,l){function u(){var e=!1,t=x().slice(h,C(h)).join("").indexOf(m);if(t!==-1&&!E(h)){e=!0;for(var i=x().slice(h,h+t),a=0;a<i.length;a++)if(" "!==i[a]){e=!1;break}}return e}var c=o.slice(),m="",h=0,g=void 0;if(d(),p().p=C(-1),!n)if(r.autoUnmask!==!0){var y=x().slice(0,C(-1)).join(""),k=c.join("").match(new RegExp("^"+t.escapeRegex(y),"g"));k&&k.length>0&&(c.splice(0,k.length*y.length),h=C(h))}else h=C(h);if(e.each(c,function(t,a){if(void 0!==a){var o=new e.Event("keypress");o.which=a.charCodeAt(0),m+=a;var s=f(void 0,!0),l=p().validPositions[s],c=v(s+1,l?l.locator.slice():void 0,s);if(!u()||n||r.autoUnmask){var y=n?t:null==c.match.fn&&c.match.optionality&&s+1<p().p?s+1:p().p;g=ee.keypressEvent.call(i,o,!0,!1,n,y),h=y+1,m=""}else g=ee.keypressEvent.call(i,o,!0,!1,!0,s+1);if(!n&&e.isFunction(r.onBeforeWrite)&&(g=r.onBeforeWrite(o,b(),g.forwardPosition,r),g&&g.refreshFromBuffer)){var k=g.refreshFromBuffer;P(k===!0?k:k.start,k.end,g.buffer),d(!0),g.caret&&(p().p=g.caret)}}}),a){var w=void 0,S=f();document.activeElement===i&&(s||g)&&(w=D(i).begin,s&&g===!1&&(w=C(f(w))),g&&l!==!0&&(w<S+1||S===-1)&&(w=r.numericInput&&void 0===g.caret?R(g.forwardPosition):g.forwardPosition)),O(i,b(),w,s||new e.Event("checkval"))}}function j(t){if(t&&void 0===t.inputmask)return t.value;var i=[],a=p().validPositions;for(var n in a)a[n].match&&null!=a[n].match.fn&&i.push(a[n].input);var o=0===i.length?"":(q?i.reverse():i).join("");if(e.isFunction(r.onUnMask)){var s=(q?b().slice().reverse():b()).join("");o=r.onUnMask(s,o,r)||o}return o}function D(e,t,i,a){function n(e){if(a!==!0&&q&&"number"==typeof e&&(!r.greedy||""!==r.placeholder)){var t=b().join("").length;e=t-e}return e}var s;if("number"!=typeof t)return e.setSelectionRange?(t=e.selectionStart,i=e.selectionEnd):window.getSelection?(s=window.getSelection().getRangeAt(0),s.commonAncestorContainer.parentNode!==e&&s.commonAncestorContainer!==e||(t=s.startOffset,i=s.endOffset)):document.selection&&document.selection.createRange&&(s=document.selection.createRange(),t=0-s.duplicate().moveStart("character",-e.inputmask._valueGet().length),i=t+s.text.length),{begin:n(t),end:n(i)};t=n(t),i=n(i),i="number"==typeof i?i:t;var l=parseInt(((e.ownerDocument.defaultView||window).getComputedStyle?(e.ownerDocument.defaultView||window).getComputedStyle(e,null):e.currentStyle).fontSize)*i;if(e.scrollLeft=l>e.scrollWidth?l:0,o||r.insertMode!==!1||t!==i||i++,e.setSelectionRange)e.selectionStart=t,e.selectionEnd=i;else if(window.getSelection){if(s=document.createRange(),void 0===e.firstChild||null===e.firstChild){var u=document.createTextNode("");e.appendChild(u)}s.setStart(e.firstChild,t<e.inputmask._valueGet().length?t:e.inputmask._valueGet().length),s.setEnd(e.firstChild,i<e.inputmask._valueGet().length?i:e.inputmask._valueGet().length),s.collapse(!0);var c=window.getSelection();c.removeAllRanges(),c.addRange(s)}else e.createTextRange&&(s=e.createTextRange(),s.collapse(!0),s.moveEnd("character",i),s.moveStart("character",t),s.select());L(e,void 0,{begin:t,end:i})}function F(t){var i,a,n=b(),r=n.length,o=f(),s={},l=p().validPositions[o],u=void 0!==l?l.locator.slice():void 0;for(i=o+1;i<n.length;i++)a=v(i,u,i-1),u=a.locator.slice(),s[i]=e.extend(!0,{},a);var c=l&&void 0!==l.alternation?l.locator[l.alternation]:void 0;for(i=r-1;i>o&&(a=s[i],(a.match.optionality||a.match.optionalQuantifier||c&&(c!==s[i].locator[l.alternation]&&null!=a.match.fn||null===a.match.fn&&a.locator[l.alternation]&&S(a.locator[l.alternation].toString().split(","),c.toString().split(","))&&""!==k(i)[0].def))&&n[i]===_(i,a.match));i--)r--;return t?{l:r,def:s[r]?s[r].match:void 0}:r}function N(e){for(var t=F(),i=e.length-1;i>t&&!E(i);i--);return e.splice(t,i+1-t),e}function T(t){if(e.isFunction(r.isComplete))return r.isComplete(t,r);if("*"!==r.repeat){var i=!1,a=F(!0),n=R(a.l);if(void 0===a.def||a.def.newBlockMarker||a.def.optionality||a.def.optionalQuantifier){i=!0;for(var o=0;o<=n;o++){var s=v(o).match;if(null!==s.fn&&void 0===p().validPositions[o]&&s.optionality!==!0&&s.optionalQuantifier!==!0||null===s.fn&&t[o]!==_(o,s)){i=!1;break}}}return i}}function G(i,a,n,o){function s(){if(r.keepStatic){for(var t=[],a=f(-1,!0),n=e.extend(!0,{},p().validPositions),o=p().validPositions[a];a>=0;a--){var s=p().validPositions[a];if(s){if(s.generatedInput!==!0&&/[0-9a-bA-Z]/.test(s.input)&&t.push(s.input),delete p().validPositions[a],void 0!==s.alternation&&s.locator[s.alternation]!==o.locator[s.alternation])break;o=s}}if(a>-1)for(p().p=C(f(-1,!0));t.length>0;){var l=new e.Event("keypress");l.which=t.pop().charCodeAt(0),ee.keypressEvent.call(i,l,!0,!1,!1,p().p)}else p().validPositions=e.extend(!0,{},n)}}if((r.numericInput||q)&&(a===t.keyCode.BACKSPACE?a=t.keyCode.DELETE:a===t.keyCode.DELETE&&(a=t.keyCode.BACKSPACE),q)){var l=n.end;n.end=n.begin,n.begin=l}a===t.keyCode.BACKSPACE&&(n.end-n.begin<1||r.insertMode===!1)?(n.begin=R(n.begin),void 0===p().validPositions[n.begin]||p().validPositions[n.begin].input!==r.groupSeparator&&p().validPositions[n.begin].input!==r.radixPoint||n.begin--):a===t.keyCode.DELETE&&n.begin===n.end&&(n.end=E(n.end,!0)?n.end+1:C(n.end)+1,void 0===p().validPositions[n.begin]||p().validPositions[n.begin].input!==r.groupSeparator&&p().validPositions[n.begin].input!==r.radixPoint||n.end++),m(n.begin,n.end,!1,o),o!==!0&&s();var u=f(n.begin,!0);u<n.begin?p().p=C(u):o!==!0&&(p().p=n.begin)}function B(t){function i(e){var i,a=document.createElement("span");for(var n in o)isNaN(n)&&n.indexOf("font")!==-1&&(a.style[n]=o[n]);a.style.textTransform=o.textTransform,a.style.letterSpacing=o.letterSpacing,a.style.position="absolute",a.style.height="auto",a.style.width="auto",a.style.visibility="hidden",a.style.whiteSpace="nowrap",document.body.appendChild(a);var r,s=t.inputmask._valueGet(),l=0;for(i=0,r=s.length;i<=r;i++){if(a.innerHTML+=s.charAt(i)||"_",a.offsetWidth>=e){var u=e-l,c=a.offsetWidth-e;a.innerHTML=s.charAt(i),u-=a.offsetWidth/3,i=u<c?i-1:i;break}l=a.offsetWidth}return document.body.removeChild(a),i}function a(){z.style.position="absolute",z.style.top=n.top+"px",z.style.left=n.left+"px",z.style.width=parseInt(t.offsetWidth)-parseInt(o.paddingLeft)-parseInt(o.paddingRight)-parseInt(o.borderLeftWidth)-parseInt(o.borderRightWidth)+"px",z.style.height=parseInt(t.offsetHeight)-parseInt(o.paddingTop)-parseInt(o.paddingBottom)-parseInt(o.borderTopWidth)-parseInt(o.borderBottomWidth)+"px",z.style.lineHeight=z.style.height,z.style.zIndex=isNaN(o.zIndex)?-1:o.zIndex-1,z.style.webkitAppearance="textfield",z.style.mozAppearance="textfield",z.style.Appearance="textfield"}var n=e(t).position(),o=(t.ownerDocument.defaultView||window).getComputedStyle(t,null);t.parentNode,z=document.createElement("div"),document.body.appendChild(z);for(var s in o)isNaN(s)&&"cssText"!==s&&s.indexOf("webkit")==-1&&(z.style[s]=o[s]);t.style.backgroundColor="transparent",t.style.color="transparent",t.style.webkitAppearance="caret",t.style.mozAppearance="caret",t.style.Appearance="caret",a(),e(window).on("resize",function(i){n=e(t).position(),o=(t.ownerDocument.defaultView||window).getComputedStyle(t,null),a()}),e(t).on("click",function(e){return D(t,i(e.clientX)),ee.clickEvent.call(this,[e])}),e(t).on("keydown",function(e){e.shiftKey||r.insertMode===!1||setTimeout(function(){L(t)},0)})}function L(e,t,i){function a(){o||null!==l.fn&&void 0!==u.input?o&&null!==l.fn&&void 0!==u.input&&(o=!1,n+="</span>"):(o=!0,n+="<span class='im-static''>")}if(void 0!==z){t=t||b(),void 0===i?i=D(e):void 0===i.begin&&(i={begin:i,end:i});var n="",o=!1;if(""!=t){var s,l,u,c=0,d=f();do c===i.begin&&document.activeElement===e&&(n+="<span class='im-caret' style='border-right-width: 1px;border-right-style: solid;'></span>"),p().validPositions[c]?(u=p().validPositions[c],l=u.match,s=u.locator.slice(),a(),n+=u.input):(u=v(c,s,c-1),l=u.match,s=u.locator.slice(),(r.jitMasking===!1||c<d||"number"==typeof r.jitMasking&&isFinite(r.jitMasking)&&r.jitMasking>c)&&(a(),n+=_(c,l))),c++;while((void 0===V||c<V)&&(null!==l.fn||""!==l.def)||d>c)}z.innerHTML=n}}function H(t){function i(t,i){function a(t){function a(t){if(e.valHooks&&(void 0===e.valHooks[t]||e.valHooks[t].inputmaskpatch!==!0)){var a=e.valHooks[t]&&e.valHooks[t].get?e.valHooks[t].get:function(e){return e.value},n=e.valHooks[t]&&e.valHooks[t].set?e.valHooks[t].set:function(e,t){return e.value=t,e};e.valHooks[t]={get:function(e){if(e.inputmask){if(e.inputmask.opts.autoUnmask)return e.inputmask.unmaskedvalue();var t=a(e);return f(void 0,void 0,e.inputmask.maskset.validPositions)!==-1||i.nullable!==!0?t:""}return a(e)},set:function(t,i){var a,r=e(t);return a=n(t,i),t.inputmask&&r.trigger("setvalue"),a},inputmaskpatch:!0}}}function n(){return this.inputmask?this.inputmask.opts.autoUnmask?this.inputmask.unmaskedvalue():f()!==-1||i.nullable!==!0?document.activeElement===this&&i.clearMaskOnLostFocus?(q?N(b().slice()).reverse():N(b().slice())).join(""):s.call(this):"":s.call(this)}function r(t){l.call(this,t),this.inputmask&&e(this).trigger("setvalue")}function o(t){J.on(t,"mouseenter",function(t){var i=e(this),a=this,n=a.inputmask._valueGet();n!==b().join("")&&i.trigger("setvalue")})}var s,l;if(!t.inputmask.__valueGet){if(i.noValuePatching!==!0){if(Object.getOwnPropertyDescriptor){"function"!=typeof Object.getPrototypeOf&&(Object.getPrototypeOf="object"==typeof"test".__proto__?function(e){return e.__proto__}:function(e){return e.constructor.prototype});var u=Object.getPrototypeOf?Object.getOwnPropertyDescriptor(Object.getPrototypeOf(t),"value"):void 0;u&&u.get&&u.set?(s=u.get,l=u.set,Object.defineProperty(t,"value",{get:n,set:r,configurable:!0})):"INPUT"!==t.tagName&&(s=function(){return this.textContent},l=function(e){this.textContent=e},Object.defineProperty(t,"value",{get:n,set:r,configurable:!0}))}else document.__lookupGetter__&&t.__lookupGetter__("value")&&(s=t.__lookupGetter__("value"),l=t.__lookupSetter__("value"),t.__defineGetter__("value",n),t.__defineSetter__("value",r));t.inputmask.__valueGet=s,t.inputmask.__valueSet=l}
vendor: 5,132 bytes, line 20740
20740t.inputmask._valueGet=function(e){return q&&e!==!0?s.call(this.el).split("").reverse().join(""):s.call(this.el)},t.inputmask._valueSet=function(e,t){l.call(this.el,null===e||void 0===e?"":t!==!0&&q?e.split("").reverse().join(""):e)},void 0===s&&(s=function(){return this.value},l=function(e){this.value=e},a(t.type),o(t))}}var n=t.getAttribute("type"),r="INPUT"===t.tagName&&e.inArray(n,i.supportsInputType)!==-1||t.isContentEditable||"TEXTAREA"===t.tagName;if(!r)if("INPUT"===t.tagName){var o=document.createElement("input");o.setAttribute("type",n),r="text"===o.type,o=null}else r="partial";return r!==!1&&a(t),r}var a=i(t,r);if(a!==!1&&(W=t,U=e(W),("rtl"===W.dir||r.rightAlign)&&(W.style.textAlign="right"),("rtl"===W.dir||r.numericInput)&&(W.dir="ltr",W.removeAttribute("dir"),W.inputmask.isRTL=!0,q=!0),r.colorMask===!0&&B(W),u&&(W.hasOwnProperty("inputmode")&&(W.inputmode=r.inputmode,W.setAttribute("inputmode",r.inputmode)),"rtfm"===r.androidHack&&(r.colorMask!==!0&&B(W),W.type="password")),J.off(W),a===!0&&(J.on(W,"submit",ee.submitEvent),J.on(W,"reset",ee.resetEvent),J.on(W,"mouseenter",ee.mouseenterEvent),J.on(W,"blur",ee.blurEvent),J.on(W,"focus",ee.focusEvent),J.on(W,"mouseleave",ee.mouseleaveEvent),r.colorMask!==!0&&J.on(W,"click",ee.clickEvent),J.on(W,"dblclick",ee.dblclickEvent),J.on(W,"paste",ee.pasteEvent),J.on(W,"dragdrop",ee.pasteEvent),J.on(W,"drop",ee.pasteEvent),J.on(W,"cut",ee.cutEvent),J.on(W,"complete",r.oncomplete),J.on(W,"incomplete",r.onincomplete),J.on(W,"cleared",r.oncleared),r.inputEventOnly!==!0&&(J.on(W,"keydown",ee.keydownEvent),J.on(W,"keypress",ee.keypressEvent)),J.on(W,"compositionstart",e.noop),J.on(W,"compositionupdate",e.noop),J.on(W,"compositionend",e.noop),J.on(W,"keyup",e.noop),J.on(W,"input",ee.inputFallBackEvent)),J.on(W,"setvalue",ee.setValueEvent),x(),""!==W.inputmask._valueGet()||r.clearMaskOnLostFocus===!1||document.activeElement===W)){var n=e.isFunction(r.onBeforeMask)?r.onBeforeMask(W.inputmask._valueGet(),r)||W.inputmask._valueGet():W.inputmask._valueGet();I(W,!0,!1,n.split(""));var o=b().slice();K=o.join(""),T(o)===!1&&r.clearIncomplete&&d(),r.clearMaskOnLostFocus&&document.activeElement!==W&&(f()===-1?o=[]:N(o)),O(W,o),document.activeElement===W&&D(W,C(f()))}}a=a||this.maskset,r=r||this.opts;var K,U,V,z,Q,W=this.el,q=this.isRTL,Z=!1,Y=!1,$=!1,X=!1,J={on:function(i,a,n){var o=function(i){if(void 0===this.inputmask&&"FORM"!==this.nodeName){var a=e.data(this,"_inputmask_opts");a?new t(a).mask(this):J.off(this)}else{if("setvalue"===i.type||!(this.disabled||this.readOnly&&!("keydown"===i.type&&i.ctrlKey&&67===i.keyCode||r.tabThrough===!1&&i.keyCode===t.keyCode.TAB))){switch(i.type){case"input":if(Y===!0)return Y=!1,i.preventDefault();break;case"keydown":Z=!1,Y=!1;break;case"keypress":if(Z===!0)return i.preventDefault();Z=!0;break;case"click":if(s||l){var o=this,u=arguments;return setTimeout(function(){n.apply(o,u)},0),!1}}var c=n.apply(this,arguments);return c===!1&&(i.preventDefault(),i.stopPropagation()),c}i.preventDefault()}};i.inputmask.events[a]=i.inputmask.events[a]||[],i.inputmask.events[a].push(o),e.inArray(a,["submit","reset"])!==-1?null!=i.form&&e(i.form).on(a,o):e(i).on(a,o)},off:function(t,i){if(t.inputmask&&t.inputmask.events){var a;i?(a=[],a[i]=t.inputmask.events[i]):a=t.inputmask.events,e.each(a,function(i,a){for(;a.length>0;){var n=a.pop();e.inArray(i,["submit","reset"])!==-1?null!=t.form&&e(t.form).off(i,n):e(t).off(i,n)}delete t.inputmask.events[i]})}}},ee={keydownEvent:function(i){function a(e){var t=document.createElement("input"),i="on"+e,a=i in t;return a||(t.setAttribute(i,"return;"),a="function"==typeof t[i]),t=null,a}var n=this,o=e(n),s=i.keyCode,u=D(n);if(s===t.keyCode.BACKSPACE||s===t.keyCode.DELETE||l&&s===t.keyCode.BACKSPACE_SAFARI||i.ctrlKey&&s===t.keyCode.X&&!a("cut"))i.preventDefault(),G(n,s,u),O(n,b(!0),p().p,i,n.inputmask._valueGet()!==b().join("")),n.inputmask._valueGet()===x().join("")?o.trigger("cleared"):T(b())===!0&&o.trigger("complete");else if(s===t.keyCode.END||s===t.keyCode.PAGE_DOWN){i.preventDefault();var c=C(f());r.insertMode||c!==p().maskLength||i.shiftKey||c--,D(n,i.shiftKey?u.begin:c,c,!0)}else s===t.keyCode.HOME&&!i.shiftKey||s===t.keyCode.PAGE_UP?(i.preventDefault(),D(n,0,i.shiftKey?u.begin:0,!0)):(r.undoOnEscape&&s===t.keyCode.ESCAPE||90===s&&i.ctrlKey)&&i.altKey!==!0?(I(n,!0,!1,K.split("")),o.trigger("click")):s!==t.keyCode.INSERT||i.shiftKey||i.ctrlKey?r.tabThrough===!0&&s===t.keyCode.TAB?(i.shiftKey===!0?(null===g(u.begin).match.fn&&(u.begin=C(u.begin)),u.end=R(u.begin,!0),u.begin=R(u.end,!0)):(u.begin=C(u.begin,!0),u.end=C(u.begin,!0),u.end<p().maskLength&&u.end--),u.begin<p().maskLength&&(i.preventDefault(),D(n,u.begin,u.end))):i.shiftKey||r.insertMode===!1&&(s===t.keyCode.RIGHT?setTimeout(function(){var e=D(n);D(n,e.begin)},0):s===t.keyCode.LEFT&&setTimeout(function(){var e=D(n);D(n,q?e.begin+1:e.begin-1)},0)):(r.insertMode=!r.insertMode,D(n,r.insertMode||u.begin!==p().maskLength?u.begin:u.begin-1));r.onKeyDown.call(this,i,b(),D(n).begin,r),$=e.inArray(s,r.ignorables)!==-1},keypressEvent:function(i,a,n,o,s){var l=this,u=e(l),c=i.which||i.charCo
vendor: 10,896 bytes, lines 20740-20741
20740de||i.keyCode;if(!(a===!0||i.ctrlKey&&i.altKey)&&(i.ctrlKey||i.metaKey||$))return c===t.keyCode.ENTER&&K!==b().join("")&&(K=b().join(""),
20741setTimeout(function(){u.trigger("change")},0)),!0;if(c){46===c&&i.shiftKey===!1&&","===r.radixPoint&&(c=44);var f,m=a?{begin:s,end:s}:D(l),h=String.fromCharCode(c);p().writeOutBuffer=!0;var v=A(m,h,o);if(v!==!1&&(d(!0),f=void 0!==v.caret?v.caret:a?v.pos+1:C(v.pos),p().p=f),n!==!1){var g=this;if(setTimeout(function(){r.onKeyValidation.call(g,c,v,r)},0),p().writeOutBuffer&&v!==!1){var y=b();O(l,y,r.numericInput&&void 0===v.caret?R(f):f,i,a!==!0),a!==!0&&setTimeout(function(){T(y)===!0&&u.trigger("complete")},0)}}if(i.preventDefault(),a)return v.forwardPosition=f,v}},pasteEvent:function(t){var i,a=this,n=t.originalEvent||t,o=e(a),s=a.inputmask._valueGet(!0),l=D(a);q&&(i=l.end,l.end=l.begin,l.begin=i);var u=s.substr(0,l.begin),c=s.substr(l.end,s.length);if(u===(q?x().reverse():x()).slice(0,l.begin).join("")&&(u=""),c===(q?x().reverse():x()).slice(l.end).join("")&&(c=""),q&&(i=u,u=c,c=i),window.clipboardData&&window.clipboardData.getData)s=u+window.clipboardData.getData("Text")+c;else{if(!n.clipboardData||!n.clipboardData.getData)return!0;s=u+n.clipboardData.getData("text/plain")+c}var p=s;if(e.isFunction(r.onBeforePaste)){if(p=r.onBeforePaste(s,r),p===!1)return t.preventDefault();p||(p=s)}return I(a,!1,!1,q?p.split("").reverse():p.toString().split("")),O(a,b(),C(f()),t,K!==b().join("")),T(b())===!0&&o.trigger("complete"),t.preventDefault()},inputFallBackEvent:function(i){var a=this,n=a.inputmask._valueGet();if(b().join("")!==n){var r=D(a);if(n=n.replace(new RegExp("("+t.escapeRegex(x().join(""))+")*"),""),s){var o=n.replace(b().join(""),"");if(1===o.length){var l=new e.Event("keypress");return l.which=o.charCodeAt(0),ee.keypressEvent.call(a,l,!0,!0,!1,p().validPositions[r.begin-1]?r.begin:r.begin-1),!1}}if(r.begin>n.length&&(D(a,n.length),r=D(a)),b().length-n.length!==1||n.charAt(r.begin)===b()[r.begin]||n.charAt(r.begin+1)===b()[r.begin]||E(r.begin)){for(var u=f()+1,c=x().join("");null===n.match(t.escapeRegex(c)+"$");)c=c.slice(1);n=n.replace(c,""),n=n.split(""),I(a,!0,!1,n,i,r.begin<u),T(b())===!0&&e(a).trigger("complete")}else i.keyCode=t.keyCode.BACKSPACE,ee.keydownEvent.call(a,i);i.preventDefault()}},setValueEvent:function(t){var i=this,a=i.inputmask._valueGet();I(i,!0,!1,(e.isFunction(r.onBeforeMask)?r.onBeforeMask(a,r)||a:a).split("")),K=b().join(""),(r.clearMaskOnLostFocus||r.clearIncomplete)&&i.inputmask._valueGet()===x().join("")&&i.inputmask._valueSet("")},focusEvent:function(e){var t=this,i=t.inputmask._valueGet();r.showMaskOnFocus&&(!r.showMaskOnHover||r.showMaskOnHover&&""===i)&&(t.inputmask._valueGet()!==b().join("")?O(t,b(),C(f())):X===!1&&D(t,C(f()))),r.positionCaretOnTab===!0&&ee.clickEvent.apply(t,[e,!0]),K=b().join("")},mouseleaveEvent:function(e){var t=this;if(X=!1,r.clearMaskOnLostFocus&&document.activeElement!==t){var i=b().slice(),a=t.inputmask._valueGet();a!==t.getAttribute("placeholder")&&""!==a&&(f()===-1&&a===x().join("")?i=[]:N(i),O(t,i))}},clickEvent:function(t,i){function a(t){if(""!==r.radixPoint){var i=p().validPositions;if(void 0===i[t]||i[t].input===_(t)){if(t<C(-1))return!0;var a=e.inArray(r.radixPoint,b());if(a!==-1){for(var n in i)if(a<n&&i[n].input!==_(n))return!1;return!0}}}return!1}var n=this;setTimeout(function(){if(document.activeElement===n){var t=D(n);if(i&&(t.begin=t.end),t.begin===t.end)switch(r.positionCaretOnClick){case"none":break;case"radixFocus":if(a(t.begin)){var o=e.inArray(r.radixPoint,b().join(""));D(n,r.numericInput?C(o):o);break}default:var s=t.begin,l=f(s,!0),u=C(l);if(s<u)D(n,E(s)||E(s-1)?s:C(s));else{var c=_(u);(""!==c&&b()[u]!==c&&g(u).match.optionalQuantifier!==!0||!E(u)&&g(u).match.def===c)&&(u=C(u)),D(n,u)}}}},0)},dblclickEvent:function(e){var t=this;setTimeout(function(){D(t,0,C(f()))},0)},cutEvent:function(i){var a=this,n=e(a),r=D(a),o=i.originalEvent||i,s=window.clipboardData||o.clipboardData,l=q?b().slice(r.end,r.begin):b().slice(r.begin,r.end);s.setData("text",q?l.reverse().join(""):l.join("")),document.execCommand&&document.execCommand("copy"),G(a,t.keyCode.DELETE,r),O(a,b(),p().p,i,K!==b().join("")),a.inputmask._valueGet()===x().join("")&&n.trigger("cleared")},blurEvent:function(t){var i=e(this),a=this;if(a.inputmask){var n=a.inputmask._valueGet(),o=b().slice();K!==o.join("")&&setTimeout(function(){i.trigger("change"),K=o.join("")},0),""!==n&&(r.clearMaskOnLostFocus&&(f()===-1&&n===x().join("")?o=[]:N(o)),T(o)===!1&&(setTimeout(function(){i.trigger("incomplete")},0),r.clearIncomplete&&(d(),o=r.clearMaskOnLostFocus?[]:x().slice())),O(a,o,void 0,t))}},mouseenterEvent:function(e){var t=this;X=!0,document.activeElement!==t&&r.showMaskOnHover&&t.inputmask._valueGet()!==b().join("")&&O(t,b())},submitEvent:function(e){K!==b().join("")&&U.trigger("change"),r.clearMaskOnLostFocus&&f()===-1&&W.inputmask._valueGet&&W.inputmask._valueGet()===x().join("")&&W.inputmask._valueSet(""),r.removeMaskOnSubmit&&(W.inputmask._valueSet(W.inputmask.unmaskedvalue(),!0),setTimeout(function(){O(W,b())},0))},resetEvent:function(e){setTimeout(function(){U.trigger("setvalue")},0)}};if(void 0!==i)switch(i.action){case"isComplete":return W=i.el,T(b());case"unmaskedvalue":return void 0!==W&&void 0===i.value||(Q=i.value,Q=(e.isFunction(r.onBeforeMask)?r.onBeforeMask(Q,r)||Q:Q).split(""),I(void 0,!1,!1,q?Q.reverse():Q),e.isFunction(r.onBeforeWrite)&&r.onBeforeWrite(void 0,b(),0,r)),j(W);case"mask":H(W);break;case"format":return Q=(e.isFunction(r.onBeforeMask)?r.onBeforeMask(i.value,r)||i.value:i.value).split(""),I(void 0,!1,!1,q?Q.reverse():Q),e.isFunction(r.onBeforeWrite)&&r.onBeforeWrite(void 0,b(),0,r),i.metadata?{value:q?b().slice().reverse().join(""):b().join(""),metadata:n.call(this,{action:"getmetadata"},a,r)}:q?b().slice().reverse().join(""):b().join("");case"isValid":i.value?(Q=i.value.split(""),I(void 0,!1,!0,q?Q.reverse():Q)):i.value=b().join("");for(var te=b(),ie=F(),ae=te.length-1;ae>ie&&!E(ae);ae--);return te.splice(ie,ae+1-ie),T(te)&&i.value===b().join("");case"getemptymask":return x().join("");case"remove":if(W){U=e(W),W.inputmask._valueSet(j(W)),J.off(W);var ne;Object.getOwnPropertyDescriptor&&Object.getPrototypeOf?(ne=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(W),"value"),ne&&W.inputmask.__valueGet&&Object.defineProperty(W,"value",{get:W.inputmask.__valueGet,set:W.inputmask.__valueSet,configurable:!0})):document.__lookupGetter__&&W.__lookupGetter__("value")&&W.inputmask.__valueGet&&(W.__defineGetter__("value",W.inputmask.__valueGet),W.__defineSetter__("value",W.inputmask.__valueSet)),W.inputmask=void 0}return W;case"getmetadata":if(e.isArray(a.metadata)){var re=c(!0,0,!1).join("");return e.each(a.metadata,function(e,t){if(t.mask===re)return re=t,!1}),re}return a.metadata}}var r=navigator.userAgent,o=/mobile/i.test(r),s=/iemobile/i.test(r),l=/iphone/i.test(r)&&!s,u=/android/i.test(r)&&!s;return t.prototype={defaults:{placeholder:"_",optionalmarker:{start:"[",end:"]"},quantifiermarker:{start:"{",end:"}"},groupmarker:{start:"(",end:")"},alternatormarker:"|",escapeChar:"\\",mask:null,oncomplete:e.noop,onincomplete:e.noop,oncleared:e.noop,repeat:0,greedy:!0,autoUnmask:!1,removeMaskOnSubmit:!1,clearMaskOnLostFocus:!0,insertMode:!0,clearIncomplete:!1,aliases:{},alias:null,onKeyDown:e.noop,onBeforeMask:null,onBeforePaste:function(t,i){return e.isFunction(i.onBeforeMask)?i.onBeforeMask(t,i):t},onBeforeWrite:null,onUnMask:null,showMaskOnFocus:!0,showMaskOnHover:!0,onKeyValidation:e.noop,skipOptionalPartCharacter:" ",numericInput:!1,rightAlign:!1,undoOnEscape:!0,radixPoint:"",radixPointDefinitionSymbol:void 0,groupSeparator:"",keepStatic:null,positionCaretOnTab:!0,tabThrough:!1,supportsInputType:["text","tel","password"],definitions:{9:{validator:"[0-9]",cardinality:1,definitionSymbol:"*"},a:{validator:"[A-Za-zА-яЁёÀ-ÿµ]",cardinality:1,definitionSymbol:"*"},"*":{validator:"[0-9A-Za-zА-яЁёÀ-ÿµ]",cardinality:1}},ignorables:[8,9,13,19,27,33,34,35,36,37,38,39,40,45,46,93,112,113,114,115,116,117,118,119,120,121,122,123],isComplete:null,canClearPosition:e.noop,postValidation:null,staticDefinitionSymbol:void 0,jitMasking:!1,nullable:!0,inputEventOnly:!1,noValuePatching:!1,positionCaretOnClick:"lvp",casing:null,inputmode:"verbatim",colorMask:!1,androidHack:!1},masksCache:{},mask:function(r){function o(t,a,n,r){function o(e,i){i=void 0!==i?i:t.getAttribute(r+"-"+e),null!==i&&("string"==typeof i&&(0===e.indexOf("on")?i=window[i]:"false"===i?i=!1:"true"===i&&(i=!0)),n[e]=i)}var s,l,u,c,p=t.getAttribute(r);if(p&&""!==p&&(p=p.replace(new RegExp("'","g"),'"'),l=JSON.parse("{"+p+"}")),l){u=void 0;for(c in l)if("alias"===c.toLowerCase()){u=l[c];break}}o("alias",u),n.alias&&i(n.alias,n,a);for(s in a){if(l){u=void 0;for(c in l)if(c.toLowerCase()===s.toLowerCase()){u=l[c];break}}o(s,u)}return e.extend(!0,a,n),a}var s=this;return"string"==typeof r&&(r=document.getElementById(r)||document.querySelectorAll(r)),r=r.nodeName?[r]:r,e.each(r,function(i,r){var l=e.extend(!0,{},s.opts);o(r,l,e.extend(!0,{},s.userOptions),s.dataAttribute);var u=a(l,s.noMasksCache);void 0!==u&&(void 0!==r.inputmask&&r.inputmask.remove(),r.inputmask=new t,r.inputmask.opts=l,r.inputmask.noMasksCache=s.noMasksCache,r.inputmask.userOptions=e.extend(!0,{},s.userOptions),r.inputmask.el=r,r.inputmask.maskset=u,e.data(r,"_inputmask_opts",l),n.call(r.inputmask,{action:"mask"}))}),r&&r[0]?r[0].inputmask||this:this},option:function(t,i){return"string"==typeof t?this.opts[t]:"object"==typeof t?(e.extend(this.userOptions,t),this.el&&i!==!0&&this.mask(this.el),this):void 0},unmaskedvalue:function(e){return this.maskset=this.maskset||a(this.opts,this.noMasksCache),n.call(this,{action:"unmaskedvalue",value:e})},remove:function(){return n.call(this,{action:"remove"})},getemptymask:function(){return this.maskset=this.maskset||a(this.opts,this.noMasksCache),n.call(this,{action:"getemptymask"})},hasMaskedValue:function(){return!this.opts.autoUnmask},isComplete:function(){return this.maskset=this.maskset||a(this.opts,this.noMasksCache),n.call(this,{action:"isComplete"})},getmetadata:function(){return this.maskset=this.maskset||a(this.opts,this.noMasksCache),n.call(this,{action:"getmetadata"})},isValid:function(e){return this.maskset=this.maskset||a(this.opts,this.noMasksCache),n.call(this,{action:"isValid",value:e})},format:function(e,t){return this.maskset=this.maskset||a(this.opts,this.noMasksCache),n.call(this,{action:"format",value:e,metadata:t})},analyseMask:function(t,i){function a(e,t,i,a){this.matches=[],this.openGroup=e||!1,this.isGroup=e||!1,this.isOptional=t||!1,this.isQuantifier=i||!1,this.isAlternator=a||!1,this.quantifier={min:1,max:1}}function n(t,a,n){var r=i.definitions[a];n=void 0!==n?n:t.matches.length;var o=t.matches[n-1];if(r&&!v){r.placeholder=e.isFunction(r.placeholder)?r.placeholder(i):r.placeholder;
20741for(var s=r.prevalidator,l=s?s.length:0,u=1;u<r.cardinality;u++){var c=l>=u?s[u-1]:[],p=c.validator,d=c.cardinality;t.matches.splice(n++,0,{fn:p?"string"==typeof p?new RegExp(p):new function(){this.test=p}:new RegExp("."),cardinality:d?d:1,optionality:t.isOptional,newBlockMarker:void 0===o||o.def!==(r.definitionSymbol||a),casing:r.casing,def:r.definitionSymbol||a,placeholder:r.placeholder,nativeDef:a}),o=t.matches[n-1]}t.matches.splice(n++,0,{fn:r.validator?"string"==typeof r.validator?new RegExp(r.validator):new function(){this.test=r.validator}:new RegExp("."),cardinality:r.cardinality,optionality:t.isOptional,newBlockMarker:void 0===o||o.def!==(r.definitionSymbol||a),casing:r.casing,def:r.definitionSymbol||a,placeholder:r.placeholder,nativeDef:a})}else t.matches.splice(n++,0,{fn:null,cardinality:0,optionality:t.isOptional,newBlockMarker:void 0===o||o.def!==a,casing:null,def:i.staticDefinitionSymbol||a,placeholder:void 0!==i.staticDefinitionSymbol?a:void 0,nativeDef:a}),v=!1}function r(t){t&&t.matches&&e.each(t.matches,function(e,a){var o=t.matches[e+1];(void 0===o||void 0===o.matches||o.isQuantifier===!1)&&a&&a.isGroup&&(a.isGroup=!1,n(a,i.groupmarker.start,0),a.openGroup!==!0&&n(a,i.groupmarker.end)),r(a)})}function o(){if(y.length>0){if(p=y[y.length-1],n(p,u),p.isAlternator){d=y.pop();for(var e=0;e<d.matches.length;e++)d.matches[e].isGroup=!1;y.length>0?(p=y[y.length-1],p.matches.push(d)):g.matches.push(d)}}else n(g,u)}function s(e){function t(e){return e===i.optionalmarker.start?e=i.optionalmarker.end:e===i.optionalmarker.end?e=i.optionalmarker.start:e===i.groupmarker.start?e=i.groupmarker.end:e===i.groupmarker.end&&(e=i.groupmarker.start),e}e.matches=e.matches.reverse();for(var a in e.matches){var n=parseInt(a);if(e.matches[a].isQuantifier&&e.matches[n+1]&&e.matches[n+1].isGroup){var r=e.matches[a];e.matches.splice(a,1),e.matches.splice(n+1,0,r)}void 0!==e.matches[a].matches?e.matches[a]=s(e.matches[a]):e.matches[a]=t(e.matches[a])}return e}for(var l,u,c,p,d,f,m,h=/(?:[?*+]|\{[0-9\+\*]+(?:,[0-9\+\*]*)?\})|[^.?*+^${[]()|\\]+|./g,v=!1,g=new a,y=[],k=[];l=h.exec(t);)if(u=l[0],v)o();else switch(u.charAt(0)){case i.escapeChar:v=!0;break;case i.optionalmarker.end:case i.groupmarker.end:if(c=y.pop(),c.openGroup=!1,void 0!==c)if(y.length>0){if(p=y[y.length-1],p.matches.push(c),p.isAlternator){d=y.pop();for(var x=0;x<d.matches.length;x++)d.matches[x].isGroup=!1;y.length>0?(p=y[y.length-1],p.matches.push(d)):g.matches.push(d)}}else g.matches.push(c);else o();break;case i.optionalmarker.start:y.push(new a(!1,!0));break;case i.groupmarker.start:y.push(new a(!0));break;case i.quantifiermarker.start:var b=new a(!1,!1,!0);u=u.replace(/[{}]/g,"");var P=u.split(","),w=isNaN(P[0])?P[0]:parseInt(P[0]),S=1===P.length?w:isNaN(P[1])?P[1]:parseInt(P[1]);if("*"!==S&&"+"!==S||(w="*"===S?0:1),b.quantifier={min:w,max:S},y.length>0){var A=y[y.length-1].matches;l=A.pop(),l.isGroup||(m=new a(!0),m.matches.push(l),l=m),A.push(l),A.push(b)}else l=g.matches.pop(),l.isGroup||(m=new a(!0),m.matches.push(l),l=m),g.matches.push(l),g.matches.push(b);break;case i.alternatormarker:y.length>0?(p=y[y.length-1],f=p.matches.pop()):f=g.matches.pop(),f.isAlternator?y.push(f):(d=new a(!1,!1,!1,!0),d.matches.push(f),y.push(d));break;default:o()}for(;y.length>0;)c=y.pop(),g.matches.push(c);return g.matches.length>0&&(r(g),k.push(g)),i.numericInput&&s(k[0]),k}},t.extendDefaults=function(i){e.extend(!0,t.prototype.defaults,i)},t.extendDefinitions=function(i){e.extend(!0,t.prototype.defaults.definitions,i)},t.extendAliases=function(i){e.extend(!0,t.prototype.defaults.aliases,i)},t.format=function(e,i,a){return t(i).format(e,a)},t.unmask=function(e,i){return t(i).unmaskedvalue(e)},t.isValid=function(e,i){return t(i).isValid(e)},t.remove=function(t){e.each(t,function(e,t){t.inputmask&&t.inputmask.remove()})},t.escapeRegex=function(e){var t=["/",".","*","+","?","|","(",")","[","]","{","}","\\","$","^"];return e.replace(new RegExp("(\\"+t.join("|\\")+")","gim"),"\\$1")},t.keyCode={ALT:18,BACKSPACE:8,BACKSPACE_SAFARI:127,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91,X:88},window.Inputmask=t,t}(jQuery),function(e,t){return void 0===e.fn.inputmask&&(e.fn.inputmask=function(i,a){var n,r=this[0];if(void 0===a&&(a={}),"string"==typeof i)switch(i){case"unmaskedvalue":return r&&r.inputmask?r.inputmask.unmaskedvalue():e(r).val();case"remove":return this.each(function(){this.inputmask&&this.inputmask.remove()});case"getemptymask":return r&&r.inputmask?r.inputmask.getemptymask():"";case"hasMaskedValue":return!(!r||!r.inputmask)&&r.inputmask.hasMaskedValue();case"isComplete":return!r||!r.inputmask||r.inputmask.isComplete();case"getmetadata":return r&&r.inputmask?r.inputmask.getmetadata():void 0;case"setvalue":e(r).val(a),r&&void 0===r.inputmask&&e(r).triggerHandler("setvalue");break;case"option":if("string"!=typeof a)return this.each(function(){if(void 0!==this.inputmask)return this.inputmask.option(a)});if(r&&void 0!==r.inputmask)return r.inputmask.option(a);break;default:return a.alias=i,n=new t(a),this.each(function(){n.mask(this)})}else{if("object"==typeof i)return n=new t(i),void 0===i.mask&&void 0===i.alias?this.each(function(){return void 0!==this.inputmask?this.inputmask.option(i):void n.mask(this)}):this.each(function(){n.mask(this)});if(void 0===i)return this.each(function(){n=new t(a),n.mask(this)})}}),e.fn.inputmask}(jQuery,Inputmask),function(e,t){}(jQuery,Inputmask),function(e,t){function i(e){return isNaN(e)||29===new Date(e,2,0).getDate()}return t.extendAliases({"dd/mm/yyyy":{mask:"1/2/y",placeholder:"dd/mm/yyyy",regex:{val1pre:new RegExp("[0-3]"),val1:new RegExp("0[
207411-9]|[12][0-9]|3[01]"),val2pre:function(e){var i=t.escapeRegex.call(this,e);return new RegExp("((0[1-9]|[12][0-9]|3[01])"+i+"[01])")},val2:function(e){var i=t.escapeRegex.call(this,e);return new RegExp("((0[1-9]|[12][0-9])"+i+"(0[1-9]|1[012]))|(30"+i+"(0[13-9]|1[012]))|(31"+i+"(0[13578]|1[02]))")}},leapday:"29/02/",separator:"/",yearrange:{minyear:1900,maxyear:2099},isInYearRange:function(e,t,i){if(isNaN(e))return!1;var a=parseInt(e.concat(t.toString().slice(e.length))),n=parseInt(e.concat(i.toString().slice(e.length)));return!isNaN(a)&&t<=a&&a<=i||!isNaN(n)&&t<=n&&n<=i},determinebaseyear:function(e,t,i){var a=(new Date).getFullYear();if(e>a)return e;if(t<a){for(var n=t.toString().slice(0,2),r=t.toString().slice(2,4);t<n+i;)n--;var o=n+r;return e>o?e:o}if(e<=a&&a<=t){for(var s=a.toString().slice(0,2);t<s+i;)s--;var l=s+i;return l<e?e:l}return a},onKeyDown:function(i,a,n,r){var o=e(this);if(i.ctrlKey&&i.keyCode===t.keyCode.RIGHT){var s=new Date;o.val(s.getDate().toString()+(s.getMonth()+1).toString()+s.getFullYear().toString()),o.trigger("setvalue")}},getFrontValue:function(e,t,i){for(var a=0,n=0,r=0;r<e.length&&"2"!==e.charAt(r);r++){var o=i.definitions[e.charAt(r)];o?(a+=n,n=o.cardinality):n++}return t.join("").substr(a,n)},postValidation:function(e,t,a){var n,r,o=e.join("");return 0===a.mask.indexOf("y")?(r=o.substr(0,4),n=o.substr(4,11)):(r=o.substr(6,11),n=o.substr(0,6)),t&&(n!==a.leapday||i(r))},definitions:{1:{validator:function(e,t,i,a,n){var r=n.regex.val1.test(e);return a||r||e.charAt(1)!==n.separator&&"-./".indexOf(e.charAt(1))===-1||!(r=n.regex.val1.test("0"+e.charAt(0)))?r:(t.buffer[i-1]="0",{refreshFromBuffer:{start:i-1,end:i},pos:i,c:e.charAt(0)})},cardinality:2,prevalidator:[{validator:function(e,t,i,a,n){var r=e;isNaN(t.buffer[i+1])||(r+=t.buffer[i+1]);var o=1===r.length?n.regex.val1pre.test(r):n.regex.val1.test(r);if(!a&&!o){if(o=n.regex.val1.test(e+"0"))return t.buffer[i]=e,t.buffer[++i]="0",{pos:i,c:"0"};if(o=n.regex.val1.test("0"+e))return t.buffer[i]="0",i++,{pos:i}}return o},cardinality:1}]},2:{validator:function(e,t,i,a,n){var r=n.getFrontValue(t.mask,t.buffer,n);r.indexOf(n.placeholder[0])!==-1&&(r="01"+n.separator);var o=n.regex.val2(n.separator).test(r+e);return a||o||e.charAt(1)!==n.separator&&"-./".indexOf(e.charAt(1))===-1||!(o=n.regex.val2(n.separator).test(r+"0"+e.charAt(0)))?o:(t.buffer[i-1]="0",{refreshFromBuffer:{start:i-1,end:i},pos:i,c:e.charAt(0)})},cardinality:2,prevalidator:[{validator:function(e,t,i,a,n){isNaN(t.buffer[i+1])||(e+=t.buffer[i+1]);var r=n.getFrontValue(t.mask,t.buffer,n);r.indexOf(n.placeholder[0])!==-1&&(r="01"+n.separator);var o=1===e.length?n.regex.val2pre(n.separator).test(r+e):n.regex.val2(n.separator).test(r+e);return a||o||!(o=n.regex.val2(n.separator).test(r+"0"+e))?o:(t.buffer[i]="0",i++,{pos:i})},cardinality:1}]},y:{validator:function(e,t,i,a,n){return n.isInYearRange(e,n.yearrange.minyear,n.yearrange.maxyear)},cardinality:4,prevalidator:[{validator:function(e,t,i,a,n){var r=n.isInYearRange(e,n.yearrange.minyear,n.yearrange.maxyear);if(!a&&!r){var o=n.determinebaseyear(n.yearrange.minyear,n.yearrange.maxyear,e+"0").toString().slice(0,1);if(r=n.isInYearRange(o+e,n.yearrange.minyear,n.yearrange.maxyear))return t.buffer[i++]=o.charAt(0),{pos:i};if(o=n.determinebaseyear(n.yearrange.minyear,n.yearrange.maxyear,e+"0").toString().slice(0,2),r=n.isInYearRange(o+e,n.yearrange.minyear,n.yearrange.maxyear))return t.buffer[i++]=o.charAt(0),t.buffer[i++]=o.charAt(1),{pos:i}}return r},cardinality:1},{validator:function(e,t,i,a,n){var r=n.isInYearRange(e,n.yearrange.minyear,n.yearrange.maxyear);if(!a&&!r){var o=n.determinebaseyear(n.yearrange.minyear,n.yearrange.maxyear,e).toString().slice(0,2);if(r=n.isInYearRange(e[0]+o[1]+e[1],n.yearrange.minyear,n.yearrange.maxyear))return t.buffer[i++]=o.charAt(1),{pos:i};if(o=n.determinebaseyear(n.yearrange.minyear,n.yearrange.maxyear,e).toString().slice(0,2),r=n.isInYearRange(o+e,n.yearrange.minyear,n.yearrange.maxyear))return t.buffer[i-1]=o.charAt(0),t.buffer[i++]=o.charAt(1),t.buffer[i++]=e.charAt(0),{refreshFromBuffer:{start:i-3,end:i},pos:i}}return r},cardinality:2},{validator:function(e,t,i,a,n){return n.isInYearRange(e,n.yearrange.minyear,n.yearrange.maxyear)},cardinality:3}]}},insertMode:!1,autoUnmask:!1},"mm/dd/yyyy":{placeholder:"mm/dd/yyyy",alias:"dd/mm/yyyy",regex:{val2pre:function(e){var i=t.escapeRegex.call(this,e);return new RegExp("((0[13-9]|1[012])"+i+"[0-3])|(02"+i+"[0-2])")},val2:function(e){var i=t.escapeRegex.call(this,e);return new RegExp("((0[1-9]|1[012])"+i+"(0[1-9]|[12][0-9]))|((0[13-9]|1[012])"+i+"30)|((0[13578]|1[02])"+i+"31)")}
vendor: 4,298 bytes, line 20741
20741,val1pre:new RegExp("[01]"),val1:new RegExp("0[1-9]|1[012]")},leapday:"02/29/",onKeyDown:function(i,a,n,r){var o=e(this);if(i.ctrlKey&&i.keyCode===t.keyCode.RIGHT){var s=new Date;o.val((s.getMonth()+1).toString()+s.getDate().toString()+s.getFullYear().toString()),o.trigger("setvalue")}}},"yyyy/mm/dd":{mask:"y/1/2",placeholder:"yyyy/mm/dd",alias:"mm/dd/yyyy",leapday:"/02/29",onKeyDown:function(i,a,n,r){var o=e(this);if(i.ctrlKey&&i.keyCode===t.keyCode.RIGHT){var s=new Date;o.val(s.getFullYear().toString()+(s.getMonth()+1).toString()+s.getDate().toString()),o.trigger("setvalue")}}},"dd.mm.yyyy":{mask:"1.2.y",placeholder:"dd.mm.yyyy",leapday:"29.02.",separator:".",alias:"dd/mm/yyyy"},"dd-mm-yyyy":{mask:"1-2-y",placeholder:"dd-mm-yyyy",leapday:"29-02-",separator:"-",alias:"dd/mm/yyyy"},"mm.dd.yyyy":{mask:"1.2.y",placeholder:"mm.dd.yyyy",leapday:"02.29.",separator:".",alias:"mm/dd/yyyy"},"mm-dd-yyyy":{mask:"1-2-y",placeholder:"mm-dd-yyyy",leapday:"02-29-",separator:"-",alias:"mm/dd/yyyy"},"yyyy.mm.dd":{mask:"y.1.2",placeholder:"yyyy.mm.dd",leapday:".02.29",separator:".",alias:"yyyy/mm/dd"},"yyyy-mm-dd":{mask:"y-1-2",placeholder:"yyyy-mm-dd",leapday:"-02-29",separator:"-",alias:"yyyy/mm/dd"},datetime:{mask:"1/2/y h:s",placeholder:"dd/mm/yyyy hh:mm",alias:"dd/mm/yyyy",regex:{hrspre:new RegExp("[012]"),hrs24:new RegExp("2[0-4]|1[3-9]"),hrs:new RegExp("[01][0-9]|2[0-4]"),ampm:new RegExp("^[a|p|A|P][m|M]"),mspre:new RegExp("[0-5]"),ms:new RegExp("[0-5][0-9]")},timeseparator:":",hourFormat:"24",definitions:{h:{validator:function(e,t,i,a,n){if("24"===n.hourFormat&&24===parseInt(e,10))return t.buffer[i-1]="0",t.buffer[i]="0",{refreshFromBuffer:{start:i-1,end:i},c:"0"};var r=n.regex.hrs.test(e);if(!a&&!r&&(e.charAt(1)===n.timeseparator||"-.:".indexOf(e.charAt(1))!==-1)&&(r=n.regex.hrs.test("0"+e.charAt(0))))return t.buffer[i-1]="0",t.buffer[i]=e.charAt(0),i++,{refreshFromBuffer:{start:i-2,end:i},pos:i,c:n.timeseparator};if(r&&"24"!==n.hourFormat&&n.regex.hrs24.test(e)){var o=parseInt(e,10);return 24===o?(t.buffer[i+5]="a",t.buffer[i+6]="m"):(t.buffer[i+5]="p",t.buffer[i+6]="m"),o-=12,o<10?(t.buffer[i]=o.toString(),t.buffer[i-1]="0"):(t.buffer[i]=o.toString().charAt(1),t.buffer[i-1]=o.toString().charAt(0)),{refreshFromBuffer:{start:i-1,end:i+6},c:t.buffer[i]}}return r},cardinality:2,prevalidator:[{validator:function(e,t,i,a,n){var r=n.regex.hrspre.test(e);return a||r||!(r=n.regex.hrs.test("0"+e))?r:(t.buffer[i]="0",i++,{pos:i})},cardinality:1}]},s:{validator:"[0-5][0-9]",cardinality:2,prevalidator:[{validator:function(e,t,i,a,n){var r=n.regex.mspre.test(e);return a||r||!(r=n.regex.ms.test("0"+e))?r:(t.buffer[i]="0",i++,{pos:i})},cardinality:1}]},t:{validator:function(e,t,i,a,n){return n.regex.ampm.test(e+"m")},casing:"lower",cardinality:1}},insertMode:!1,autoUnmask:!1},datetime12:{mask:"1/2/y h:s t\\m",placeholder:"dd/mm/yyyy hh:mm xm",alias:"datetime",hourFormat:"12"},"mm/dd/yyyy hh:mm xm":{mask:"1/2/y h:s t\\m",placeholder:"mm/dd/yyyy hh:mm xm",alias:"datetime12",regex:{val2pre:function(e){var i=t.escapeRegex.call(this,e);return new RegExp("((0[13-9]|1[012])"+i+"[0-3])|(02"+i+"[0-2])")},val2:function(e){var i=t.escapeRegex.call(this,e);return new RegExp("((0[1-9]|1[012])"+i+"(0[1-9]|[12][0-9]))|((0[13-9]|1[012])"+i+"30)|((0[13578]|1[02])"+i+"31)")},val1pre:new RegExp("[01]"),val1:new RegExp("0[1-9]|1[012]")},leapday:"02/29/",onKeyDown:function(i,a,n,r){var o=e(this);if(i.ctrlKey&&i.keyCode===t.keyCode.RIGHT){var s=new Date;o.val((s.getMonth()+1).toString()+s.getDate().toString()+s.getFullYear().toString()),o.trigger("setvalue")}}},"hh:mm t":{mask:"h:s t\\m",placeholder:"hh:mm xm",alias:"datetime",hourFormat:"12"},"h:s t":{mask:"h:s t\\m",placeholder:"hh:mm xm",alias:"datetime",hourFormat:"12"},"hh:mm:ss":{mask:"h:s:s",placeholder:"hh:mm:ss",alias:"datetime",autoUnmask:!1},"hh:mm":{mask:"h:s",placeholder:"hh:mm",alias:"datetime",autoUnmask:!1},date:{alias:"dd/mm/yyyy"},"mm/yyyy":{mask:"1/y",placeholder:"mm/yyyy",leapday:"donotuse",separator:"/",alias:"mm/dd/yyyy"},shamsi:{regex:{val2pre:function(e){var i=t.escapeRegex.call(this,e);return new RegExp("((0[1-9]|1[012])"+i+"[0-3])")},val2:function(e){var i=t.escapeRegex.call(this,e);return new RegExp("((0[1-9]|1[012])"+i+"(0[1-9]|[12][0-9]))|((0[1-9]|1[012])"+i+"30)|((0[1-6])"+i+"31)")}
vendor: 4,950 bytes, line 20741
20741,val1pre:new RegExp("[01]"),val1:new RegExp("0[1-9]|1[012]")},yearrange:{minyear:1300,maxyear:1499},mask:"y/1/2",leapday:"/12/30",placeholder:"yyyy/mm/dd",alias:"mm/dd/yyyy",clearIncomplete:!0}}),t}(jQuery,Inputmask),function(e,t){return t.extendDefinitions({A:{validator:"[A-Za-zА-яЁёÀ-ÿµ]",cardinality:1,casing:"upper"},"&":{validator:"[0-9A-Za-zА-яЁёÀ-ÿµ]",cardinality:1,casing:"upper"},"#":{validator:"[0-9A-Fa-f]",cardinality:1,casing:"upper"}}),t.extendAliases({url:{definitions:{i:{validator:".",cardinality:1}},mask:"(\\http://)|(\\http\\s://)|(ftp://)|(ftp\\s://)i{+}",insertMode:!1,autoUnmask:!1,inputmode:"url"},ip:{mask:"i[i[i]].i[i[i]].i[i[i]].i[i[i]]",definitions:{i:{validator:function(e,t,i,a,n){return i-1>-1&&"."!==t.buffer[i-1]?(e=t.buffer[i-1]+e,e=i-2>-1&&"."!==t.buffer[i-2]?t.buffer[i-2]+e:"0"+e):e="00"+e,new RegExp("25[0-5]|2[0-4][0-9]|[01][0-9][0-9]").test(e)},cardinality:1}},onUnMask:function(e,t,i){return e},inputmode:"numeric"},email:{mask:"*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]",greedy:!1,onBeforePaste:function(e,t){return e=e.toLowerCase(),e.replace("mailto:","")},definitions:{"*":{validator:"[0-9A-Za-z!#$%&'*+/=?^_`{|}~-]",cardinality:1,casing:"lower"},"-":{validator:"[0-9A-Za-z-]",cardinality:1,casing:"lower"}},onUnMask:function(e,t,i){return e},inputmode:"email"},mac:{mask:"##:##:##:##:##:##"},vin:{mask:"V{13}9{4}",definitions:{V:{validator:"[A-HJ-NPR-Za-hj-npr-z\\d]",cardinality:1,casing:"upper"}},clearIncomplete:!0,autoUnmask:!0}}),t}(jQuery,Inputmask),function(e,t){return t.extendAliases({numeric:{mask:function(e){function i(t){for(var i="",a=0;a<t.length;a++)i+=e.definitions[t.charAt(a)]||e.optionalmarker.start===t.charAt(a)||e.optionalmarker.end===t.charAt(a)||e.quantifiermarker.start===t.charAt(a)||e.quantifiermarker.end===t.charAt(a)||e.groupmarker.start===t.charAt(a)||e.groupmarker.end===t.charAt(a)||e.alternatormarker===t.charAt(a)?"\\"+t.charAt(a):t.charAt(a);return i}if(0!==e.repeat&&isNaN(e.integerDigits)&&(e.integerDigits=e.repeat),e.repeat=0,e.groupSeparator===e.radixPoint&&("."===e.radixPoint?e.groupSeparator=",":","===e.radixPoint?e.groupSeparator=".":e.groupSeparator="")," "===e.groupSeparator&&(e.skipOptionalPartCharacter=void 0),e.autoGroup=e.autoGroup&&""!==e.groupSeparator,e.autoGroup&&("string"==typeof e.groupSize&&isFinite(e.groupSize)&&(e.groupSize=parseInt(e.groupSize)),isFinite(e.integerDigits))){var a=Math.floor(e.integerDigits/e.groupSize),n=e.integerDigits%e.groupSize;e.integerDigits=parseInt(e.integerDigits)+(0===n?a-1:a),e.integerDigits<1&&(e.integerDigits="*")}e.placeholder.length>1&&(e.placeholder=e.placeholder.charAt(0)),"radixFocus"===e.positionCaretOnClick&&""===e.placeholder&&e.integerOptional===!1&&(e.positionCaretOnClick="lvp"),e.definitions[";"]=e.definitions["~"],e.definitions[";"].definitionSymbol="~",e.numericInput===!0&&(e.positionCaretOnClick="radixFocus"===e.positionCaretOnClick?"lvp":e.positionCaretOnClick,e.digitsOptional=!1,isNaN(e.digits)&&(e.digits=2),e.decimalProtect=!1);var r="[+]";if(r+=i(e.prefix),r+=e.integerOptional===!0?"~{1,"+e.integerDigits+"}":"~{"+e.integerDigits+"}",void 0!==e.digits){e.decimalProtect&&(e.radixPointDefinitionSymbol=":");var o=e.digits.toString().split(",");isFinite(o[0]&&o[1]&&isFinite(o[1]))?r+=(e.decimalProtect?":":e.radixPoint)+";{"+e.digits+"}":(isNaN(e.digits)||parseInt(e.digits)>0)&&(r+=e.digitsOptional?"["+(e.decimalProtect?":":e.radixPoint)+";{1,"+e.digits+"}]":(e.decimalProtect?":":e.radixPoint)+";{"+e.digits+"}")}return r+=i(e.suffix),r+="[-]",e.greedy=!1,null!==e.min&&(e.min=e.min.toString().replace(new RegExp(t.escapeRegex(e.groupSeparator),"g"),""),","===e.radixPoint&&(e.min=e.min.replace(e.radixPoint,"."))),null!==e.max&&(e.max=e.max.toString().replace(new RegExp(t.escapeRegex(e.groupSeparator),"g"),""),","===e.radixPoint&&(e.max=e.max.replace(e.radixPoint,"."))),r},placeholder:"",greedy:!1,digits:"*",digitsOptional:!0,radixPoint:".",positionCaretOnClick:"radixFocus",groupSize:3,groupSeparator:"",autoGroup:!1,allowPlus:!0,allowMinus:!0,negationSymbol:{front:"-",back:""},integerDigits:"+",integerOptional:!0,prefix:"",suffix:"",rightAlign:!0,decimalProtect:!0,min:null,max:null,step:1,insertMode:!0,autoUnmask:!1,unmaskAsNumber:!1,inputmode:"numeric",postFormat:function(i,a,n){n.numericInput===!0&&(i=i.reverse(),isFinite(a)&&(a=i.join("").length-a-1));var r,o;a=a>=i.length?i.length-1:a<0?0:a;var s=i[a],l=i.slice();s===n.groupSeparator&&(l.splice(a--,1),s=l[a]);var u=l.join("").match(new RegExp("^"+t.escapeRegex(n.negationSymbol.front)));u=null!==u&&1===u.length,a>(u?n.negationSymbol.front.length:0)+n.prefix.length&&a<l.length-n.suffix.length&&(l[a]="!");var c=l.join(""),p=l.join();if(u&&(c=c.replace(new RegExp("^"+t.escapeRegex(n.negationSymbol.front)),""),c=c.replace(new RegExp(t.escapeRegex(n.negationSymbol.back)+"$"),"")),c=c.replace(new RegExp(t.escapeRegex(n.suffix
vendor: 9,024 bytes, lines 20741-20742
20741)+"$"),""),c=c.replace(new RegExp("^"+t.escapeRegex(n.prefix)),""),c.length>0&&n.autoGroup||c.indexOf(n.groupSeparator)!==-1){var d=t.escapeRegex(n.groupSeparator);c=c.replace(new RegExp(d,"g"),"");var f=c.split(s===n.radixPoint?"!":n.radixPoint);if(c=""===n.radixPoint?c:f[0],s!==n.negationSymbol.front&&(c=c.replace("!","?")),c.length>n.groupSize)for(var m=new RegExp("([-+]?[\\d?]+)([\\d?]{"+n.groupSize+"})");m.test(c)&&""!==n.groupSeparator;)c=c.replace(m,"$1"+n.groupSeparator+"$2"),c=c.replace(n.groupSeparator+n.groupSeparator,n.groupSeparator);c=c.replace("?","!"),""!==n.radixPoint&&f.length>1&&(c+=(s===n.radixPoint?"!":n.radixPoint)+f[1])}c=n.prefix+c+n.suffix,u&&(c=n.negationSymbol.front+c+n.negationSymbol.back);var h=p!==c.split("").join(),v=e.inArray("!",c);if(v===-1&&(v=a),h){for(i.length=c.length,r=0,o=c.length;r<o;r++)i[r]=c.charAt(r);i[v]=s}return v=n.numericInput&&isFinite(a)?i.join("").length-v-1:v,n.numericInput&&(i=i.reverse(),e.inArray(n.radixPoint,i)<v&&i.join("").length-n.suffix.length!==v&&(v-=1)),{pos:v,refreshFromBuffer:h,buffer:i,isNegative:u}},onBeforeWrite:function(i,a,n,r){var o;if(i&&("blur"===i.type||"checkval"===i.type||"keydown"===i.type)){var s=r.numericInput?a.slice().reverse().join(""):a.join(""),l=s.replace(r.prefix,"");l=l.replace(r.suffix,""),l=l.replace(new RegExp(t.escapeRegex(r.groupSeparator),"g"),""),","===r.radixPoint&&(l=l.replace(r.radixPoint,"."));var u=l.match(new RegExp("[-"+t.escapeRegex(r.negationSymbol.front)+"]","g"));if(u=null!==u&&1===u.length,l=l.replace(new RegExp("[-"+t.escapeRegex(r.negationSymbol.front)+"]","g"),""),
20742l=l.replace(new RegExp(t.escapeRegex(r.negationSymbol.back)+"$"),""),isNaN(r.placeholder)&&(l=l.replace(new RegExp(t.escapeRegex(r.placeholder),"g"),"")),l=l===r.negationSymbol.front?l+"0":l,""!==l&&isFinite(l)){var c=parseFloat(l),p=u?c*-1:c;if(null!==r.min&&isFinite(r.min)&&p<parseFloat(r.min)?(c=Math.abs(r.min),u=r.min<0,s=void 0):null!==r.max&&isFinite(r.max)&&p>parseFloat(r.max)&&(c=Math.abs(r.max),u=r.max<0,s=void 0),l=c.toString().replace(".",r.radixPoint).split(""),isFinite(r.digits)){var d=e.inArray(r.radixPoint,l),f=e.inArray(r.radixPoint,s);d===-1&&(l.push(r.radixPoint),d=l.length-1);for(var m=1;m<=r.digits;m++)r.digitsOptional||void 0!==l[d+m]&&l[d+m]!==r.placeholder.charAt(0)?f!==-1&&void 0!==s[f+m]&&(l[d+m]=l[d+m]||s[f+m]):l[d+m]="0";l[l.length-1]===r.radixPoint&&delete l[l.length-1]}if(c.toString()!==l&&c.toString()+"."!==l||u)return l=(r.prefix+l.join("")).split(""),!u||0===c&&"blur"===i.type||(l.unshift(r.negationSymbol.front),l.push(r.negationSymbol.back)),r.numericInput&&(l=l.reverse()),o=r.postFormat(l,r.numericInput?n:n-1,r),o.buffer&&(o.refreshFromBuffer=o.buffer.join("")!==a.join("")),o}}if(r.autoGroup)return o=r.postFormat(a,r.numericInput?n:n-1,r),o.caret=n<(o.isNegative?r.negationSymbol.front.length:0)+r.prefix.length||n>o.buffer.length-(o.isNegative?r.negationSymbol.back.length:0)?o.pos:o.pos+1,o},regex:{integerPart:function(e){return new RegExp("["+t.escapeRegex(e.negationSymbol.front)+"+]?\\d+")},integerNPart:function(e){return new RegExp("[\\d"+t.escapeRegex(e.groupSeparator)+t.escapeRegex(e.placeholder.charAt(0))+"]+")}},signHandler:function(e,t,i,a,n){if(!a&&n.allowMinus&&"-"===e||n.allowPlus&&"+"===e){var r=t.buffer.join("").match(n.regex.integerPart(n));if(r&&r[0].length>0)return t.buffer[r.index]===("-"===e?"+":n.negationSymbol.front)?"-"===e?""!==n.negationSymbol.back?{pos:0,c:n.negationSymbol.front,remove:0,caret:i,insert:{pos:t.buffer.length-1,c:n.negationSymbol.back}}:{pos:0,c:n.negationSymbol.front,remove:0,caret:i}:""!==n.negationSymbol.back?{pos:0,c:"+",remove:[0,t.buffer.length-1],caret:i}:{pos:0,c:"+",remove:0,caret:i}:t.buffer[0]===("-"===e?n.negationSymbol.front:"+")?"-"===e&&""!==n.negationSymbol.back?{remove:[0,t.buffer.length-1],caret:i-1}:{remove:0,caret:i-1}:"-"===e?""!==n.negationSymbol.back?{pos:0,c:n.negationSymbol.front,caret:i+1,insert:{pos:t.buffer.length,c:n.negationSymbol.back}}:{pos:0,c:n.negationSymbol.front,caret:i+1}:{pos:0,c:e,caret:i+1}}return!1},radixHandler:function(t,i,a,n,r){if(!n&&r.numericInput!==!0&&t===r.radixPoint&&void 0!==r.digits&&(isNaN(r.digits)||parseInt(r.digits)>0)){var o=e.inArray(r.radixPoint,i.buffer),s=i.buffer.join("").match(r.regex.integerPart(r));if(o!==-1&&i.validPositions[o])return i.validPositions[o-1]?{caret:o+1}:{pos:s.index,c:s[0],caret:o+1};if(!s||"0"===s[0]&&s.index+1!==a)return i.buffer[s?s.index:a]="0",{pos:(s?s.index:a)+1,c:r.radixPoint}}return!1},leadingZeroHandler:function(t,i,a,n,r,o){if(!n){var s=i.buffer.slice("");if(s.splice(0,r.prefix.length),s.splice(s.length-r.suffix.length,r.suffix.length),r.numericInput===!0){var s=s.reverse(),l=s[0];if("0"===l&&void 0===i.validPositions[a-1])return{pos:a,remove:s.length-1}}else{a-=r.prefix.length;var u=e.inArray(r.radixPoint,s),c=s.slice(0,u!==-1?u:void 0).join("").match(r.regex.integerNPart(r));if(c&&(u===-1||a<=u)){var p=u===-1?0:parseInt(s.slice(u+1).join(""));if(0===c[0].indexOf(""!==r.placeholder?r.placeholder.charAt(0):"0")&&(c.index+1===a||o!==!0&&0===p))return i.buffer.splice(c.index+r.prefix.length,1),{pos:c.index+r.prefix.length,remove:c.index+r.prefix.length};if("0"===t&&a<=c.index&&c[0]!==r.groupSeparator)return!1}}}return!0},definitions:{"~":{validator:function(i,a,n,r,o,s){var l=o.signHandler(i,a,n,r,o);if(!l&&(l=o.radixHandler(i,a,n,r,o),!l&&(l=r?new RegExp("[0-9"+t.escapeRegex(o.groupSeparator)+"]").test(i):new RegExp("[0-9]").test(i),l===!0&&(l=o.leadingZeroHandler(i,a,n,r,o,s),l===!0)))){var u=e.inArray(o.radixPoint,a.buffer);l=u!==-1&&(o.digitsOptional===!1||a.validPositions[n])&&o.numericInput!==!0&&n>u&&!r?{pos:n,remove:n}:{pos:n}}return l},cardinality:1},"+":{validator:function(e,t,i,a,n){var r=n.signHandler(e,t,i,a,n);return!r&&(a&&n.allowMinus&&e===n.negationSymbol.front||n.allowMinus&&"-"===e||n.allowPlus&&"+"===e)&&(r=!(!a&&"-"===e)||(""!==n.negationSymbol.back?{pos:i,c:"-"===e?n.negationSymbol.front:"+",caret:i+1,insert:{pos:t.buffer.length,c:n.negationSymbol.back}}:{pos:i,c:"-"===e?n.negationSymbol.front:"+",caret:i+1})),r},cardinality:1,placeholder:""},"-":{validator:function(e,t,i,a,n){var r=n.signHandler(e,t,i,a,n);return!r&&a&&n.allowMinus&&e===n.negationSymbol.back&&(r=!0),r},cardinality:1,placeholder:""},":":{validator:function(e,i,a,n,r){var o=r.signHandler(e,i,a,n,r);if(!o){var s="["+t.escapeRegex(r.radixPoint)+"]";o=new RegExp(s).test(e),o&&i.validPositions[a]&&i.validPositions[a].match.placeholder===r.radixPoint&&(o={caret:a+1})}return o},cardinality:1,placeholder:function(e){return e.radixPoint}}},onUnMask:function(e,i,a){if(""===i&&a.nullable===!0)return i;var n=e.replace(a.prefix,"");return n=n.replace(a.suffix,""),n=n.replace(new RegExp(t.escapeRegex(a.groupSeparator),"g"),""),a.unmaskAsNumber?(""!==a.radixPoint&&n.indexOf(a.radixPoint)!==-1&&(n=n.replace(t.escapeRegex.call(this,a.radixPoint),".")),Number(n)):n},isComplete:function(e,i){var a=e.join(""),n=e.slice();if(i.postFormat(n,0,i),n.join("")!==a)return!1;var r=a.replace(i.prefix,"");return r=r.replace(i.suffix,""),r=r.replace(new RegExp(t.escapeRegex(i.groupSeparator),"g"),""),","===i.radixPoint&&(r=r.replace(t.escapeRegex(i.radixPoint),".")),isFinite(r)},onBeforeMask:function(e,i){if(i.numericInput===!0&&(e=e.split("").reverse().join("")),""!==i.radixPoint&&isFinite(e)){var a=e.split("."),n=""!==i.groupSeparator?parseInt(i.groupSize):0;2===a.length&&(a[0].length>n||a[1].length>n)&&(e=e.toString().replace(".",i.radixPoint))}var r=e.match(/,/g),o=e.match(/\./g);if(o&&r?o.length>r.length?(e=e.replace(/\./g,""),e=e.replace(",",i.radixPoint)):r.length>o.length?(e=e.replace(/,/g,""),e=e.replace(".",i.radixPoint)):e=e.indexOf(".")<e.indexOf(",")?e.replace(/\./g,""):e=e.replace(/,/g,""):e=e.replace(new RegExp(t.escapeRegex(i.groupSeparator),"g"),""),0===i.digits&&(e.indexOf(".")!==-1?e=e.substring(0,e.indexOf(".")):e.indexOf(",")!==-1&&(e=e.substring(0,e.indexOf(",")))),""!==i.radixPoint&&isFinite(i.digits)&&e.indexOf(i.radixPoint)!==-1){var s=e.split(i.radixPoint),l=s[1].match(new RegExp("\\d*"))[0];if(parseInt(i.digits)<l.toString().length){var u=Math.pow(10,parseInt(i.digits));e=e.replace(t.escapeRegex(i.radixPoint),"."),e=Math.round(parseFloat(e)*u)/u,e=e.toString().replace(".",i.radixPoint)}}return i.numericInput===!0&&(e=e.split("").reverse().join("")),e.toString()},canClearPosition:function(e,t,i,a,n){var r=e.validPositions[t].input,o=r!==n.radixPoint||null!==e.validPositions[t].match.fn&&n.decimalProtect===!1||isFinite(r)||t===i||r===n.groupSeparator||r===n.negationSymbol.front||r===n.negationSymbol.back;return o},onKeyDown:function(i,a,n,r){var o=e(this);if(i.ctrlKey)switch(i.keyCode){case t.keyCode.UP:o.val(parseFloat(this.inputmask.unmaskedvalue())+parseInt(r.step)),o.trigger("setvalue");break;case t.keyCode.DOWN:o.val(parseFloat(this.inputmask.unmaskedvalue())-parseInt(r.step)),o.trigger("setvalue")}}},currency:{prefix:"$ ",groupSeparator:",",alias:"numeric",placeholder:"0",autoGroup:!0,digits:2,digitsOptional:!1,clearMaskOnLostFocus:!1}
20742,decimal:{alias:"numeric"},integer:{alias:"numeric",digits:0,radixPoint:""},percentage:{alias:"numeric",digits:2,radixPoint:".",placeholder:"0",autoGroup:!1,min:0,max:100,suffix:" %",allowPlus:!1,allowMinus:!1}}),t}(jQuery,Inputmask),function(e,t){function i(e,t){var i=(e.mask||e).replace(/#/g,"9").replace(/\)/,"9").replace(/[+()#-]/g,""),a=(t.mask||t).replace(/#/g,"9").replace(/\)/,"9").replace(/[+()#-]/g,""),n=(e.mask||e).split("#")[0],r=(t.mask||t).split("#")[0];return 0===r.indexOf(n)?-1:0===n.indexOf(r)?1:i.localeCompare(a)}var a=t.prototype.analyseMask;return t.prototype.analyseMask=function(t,i){function n(e,i,a){i=i||"",a=a||o,""!==i&&(a[i]={});for(var r="",s=a[i]||a,l=e.length-1;l>=0;l--)t=e[l].mask||e[l],r=t.substr(0,1),s[r]=s[r]||[],s[r].unshift(t.substr(1)),e.splice(l,1);for(var u in s)s[u].length>500&&n(s[u].slice(),u,s)}function r(t){var a="",n=[];for(var o in t)e.isArray(t[o])?1===t[o].length?n.push(o+t[o]):n.push(o+i.groupmarker.start+t[o].join(i.groupmarker.end+i.alternatormarker+i.groupmarker.start)+i.groupmarker.end):n.push(o+r(t[o]));return a+=1===n.length?n[0]:i.groupmarker.start+n.join(i.groupmarker.end+i.alternatormarker+i.groupmarker.start)+i.groupmarker.end}var o={};i.phoneCodes&&i.phoneCodes.length>1e3&&(t=t.substr(1,t.length-2),n(t.split(i.groupmarker.end+i.alternatormarker+i.groupmarker.start)),t=r(o));var s=a.call(this,t,i);return s},t.extendAliases({abstractphone:{groupmarker:{start:"<",end:">"},countrycode:"",phoneCodes:[],mask:function(e){return e.definitions={"#":e.definitions[9]},e.phoneCodes.sort(i)},keepStatic:!0,onBeforeMask:function(e,t){var i=e.replace(/^0{1,2}/,"").replace(/[\s]/g,"");return(i.indexOf(t.countrycode)>1||i.indexOf(t.countrycode)===-1)&&(i="+"+t.countrycode+i),i},onUnMask:function(e,t,i){return t},inputmode:"tel"}}),t}(jQuery,Inputmask),function(e,t){return t.extendAliases({Regex:{mask:"r",greedy:!1,repeat:"*",regex:null,regexTokens:null,tokenizer:/\[\^?]?(?:[^\\\]]+|\\[\S\s]?)*]?|\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\S\s]?)|\((?:\?[:=!]?)?|(?:[?*+]|\{[0-9]+(?:,[0-9]*)?\})\??|[^.?*+^${[()|\\]+|./g,quantifierFilter:/[0-9]+[^,]/,isComplete:function(e,t){return new RegExp(t.regex).test(e.join(""))},definitions:{r:{validator:function(t,i,a,n,r){function o(e,t){this.matches=[],this.isGroup=e||!1,this.isQuantifier=t||!1,this.quantifier={min:1,max:1},this.repeaterPart=void 0}function s(){var e,t,i=new o,a=[];for(r.regexTokens=[];e=r.tokenizer.exec(r.regex);)switch(t=e[0],t.charAt(0)){case"(":a.push(new o(!0));break;case")":c=a.pop(),a.length>0?a[a.length-1].matches.push(c):i.matches.push(c);break;case"{":case"+":case"*":var n=new o(!1,!0);t=t.replace(/[{}]/g,"");var s=t.split(","),l=isNaN(s[0])?s[0]:parseInt(s[0]),u=1===s.length?l:isNaN(s[1])?s[1]:parseInt(s[1]);if(n.quantifier={min:l,max:u},a.length>0){var p=a[a.length-1].matches;e=p.pop(),e.isGroup||(c=new o(!0),c.matches.push(e),e=c),p.push(e),p.push(n)}else e=i.matches.pop(),e.isGroup||(c=new o(!0),c.matches.push(e),e=c),i.matches.push(e),i.matches.push(n);break;default:a.length>0?a[a.length-1].matches.push(t):i.matches.push(t)}i.matches.length>0&&r.regexTokens.push(i)}function l(t,i){var a=!1;i&&(d+="(",m++);for(var n=0;n<t.matches.length;n++){var r=t.matches[n];if(r.isGroup===!0)a=l(r,!0);else if(r.isQuantifier===!0){var o=e.inArray(r,t.matches),s=t.matches[o-1],c=d;if(isNaN(r.quantifier.max)){for(;r.repeaterPart&&r.repeaterPart!==d&&r.repeaterPart.length>d.length&&!(a=l(s,!0)););a=a||l(s,!0),a&&(r.repeaterPart=d),d=c+r.quantifier.max}else{for(var p=0,f=r.quantifier.max-1;p<f&&!(a=l(s,!0));p++);d=c+"{"+r.quantifier.min+","+r.quantifier.max+"}"}}else if(void 0!==r.matches)for(var h=0;h<r.length&&!(a=l(r[h],i));h++);else{var v;if("["==r.charAt(0)){v=d,v+=r;for(var g=0;g<m;g++)v+=")";var y=new RegExp("^("+v+")$");a=y.test(u)}else for(var k=0,x=r.length;k<x;k++)if("\\"!==r.charAt(k)){v=d,v+=r.substr(0,k+1),v=v.replace(/\|$/,"");for(var g=0;g<m;g++)v+=")";var y=new RegExp("^("+v+")$");if(a=y.test(u))break}d+=r}if(a)break}return i&&(d+=")",m--),a}var u,c,p=i.buffer.slice(),d="",f=!1,m=0;null===r.regexTokens&&s(),p.splice(a,0,t),u=p.join("");for(var h=0;h<r.regexTokens.length;h++){var v=r.regexTokens[h];if(f=l(v,v.isGroup))break}return f},cardinality:1}}}}),t}(jQuery,Inputmask);
20743//# sourceMappingURL=jquery.inputmask.bundle.min.js.map
20744/*
20745 * File:        jquery.dataTables.min.js
20746 * Version:     1.9.4
20747 * Author:      Allan Jardine (www.sprymedia.co.uk)
20748 * Info:        www.datatables.net
20749 * 
20750 * Copyright 2008-2012 Allan Jardine, all rights reserved.
20751 *
20752 * This source file is free software, under either the GPL v2 license or a
20753 * BSD style license, available at:
20754 *   http://datatables.net/license_gpl2
20755 *   http://datatables.net/license_bsd
20756 * 
20757 * This source file is distributed in the hope that it will be useful, but 
20758 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
20759 * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
20760 */
20761(function(X,l,n){var L=function(h){var j=function(e){function o(a,b){var c=j.defaults.columns,d=a.aoColumns.length,c=h.extend({},j.models.oColumn,c,{sSortingClass:a.oClasses.sSortable,sSortingClassJUI:a.oClasses.sSortJUI,nTh:b?b:l.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.oDefaults:d});a.aoColumns.push(c);if(a.aoPreSearchCols[d]===n||null===a.aoPreSearchCols[d])a.aoPreSearchCols[d]=h.extend({},j.models.oSearch);else if(c=a.aoPreSearchCols[d],
20762c.bRegex===n&&(c.bRegex=!0),c.bSmart===n&&(c.bSmart=!0),c.bCaseInsensitive===n)c.bCaseInsensitive=!0;m(a,d,null)}function m(a,b,c){var d=a.aoColumns[b];c!==n&&null!==c&&(c.mDataProp&&!c.mData&&(c.mData=c.mDataProp),c.sType!==n&&(d.sType=c.sType,d._bAutoType=!1),h.extend(d,c),p(d,c,"sWidth","sWidthOrig"),c.iDataSort!==n&&(d.aDataSort=[c.iDataSort]),p(d,c,"aDataSort"));var i=d.mRender?Q(d.mRender):null,f=Q(d.mData);d.fnGetData=function(a,b){var c=f(a,b);return d.mRender&&b&&""!==b?i(c,b,a):c};d.fnSetData=
20763L(d.mData);a.oFeatures.bSort||(d.bSortable=!1);
20763!d.bSortable||-1==h.inArray("asc",d.asSorting)&&-1==h.inArray("desc",d.asSorting)?(d.sSortingClass=a.oClasses.sSortableNone,d.sSortingClassJUI=""):-1==h.inArray("asc",d.asSorting)&&-1==h.inArray("desc",d.asSorting)?(d.sSortingClass=a.oClasses.sSortable,d.sSortingClassJUI=a.oClasses.sSortJUI):-1!=h.inArray("asc",d.asSorting)&&-1==h.inArray("desc",d.asSorting)?(d.sSortingClass=a.oClasses.sSortableAsc,d.sSortingClassJUI=a.oClasses.sSortJUIAscAllowed):-1==
20764h.inArray("asc",d.asSorting)&&-1!=h.inArray("desc",d.asSorting)&&(d.sSortingClass=a.oClasses.sSortableDesc,d.sSortingClassJUI=a.oClasses.sSortJUIDescAllowed)}function k(a){if(!1===a.oFeatures.bAutoWidth)return!1;da(a);for(var b=0,c=a.aoColumns.length;b<c;b++)a.aoColumns[b].nTh.style.width=a.aoColumns[b].sWidth}function G(a,b){var c=r(a,"bVisible");return"number"===typeof c[b]?c[b]:null}function R(a,b){var c=r(a,"bVisible"),c=h.inArray(b,c);return-1!==c?c:null}function t(a){return r(a,"bVisible").length}
20765function r(a,b){var c=[];h.map(a.aoColumns,function(a,i){a[b]&&c.push(i)});return c}function B(a){for(var b=j.ext.aTypes,c=b.length,d=0;d<c;d++){var i=b[d](a);if(null!==i)return i}return"string"}function u(a,b){for(var c=b.split(","),d=[],i=0,f=a.aoColumns.length;i<f;i++)for(var g=0;g<f;g++)if(a.aoColumns[i].sName==c[g]){d.push(g);break}return d}function M(a){for(var b="",c=0,d=a.aoColumns.length;c<d;c++)b+=a.aoColumns[c].sName+",";return b.length==d?"":b.slice(0,-1)}function ta(a,b,c,d){var i,f,
20766g,e,w;if(b)for(i=b.length-1;0<=i;i--){var j=b[i].aTargets;h.isArray(j)||D(a,1,"aTargets must be an array of targets, not a "+typeof j);f=0;for(g=j.length;f<g;f++)if("number"===typeof j[f]&&0<=j[f]){for(;a.aoColumns.length<=j[f];)o(a);d(j[f],b[i])}else if("number"===typeof j[f]&&0>j[f])d(a.aoColumns.length+j[f],b[i]);else if("string"===typeof j[f]){e=0;for(w=a.aoColumns.length;e<w;e++)("_all"==j[f]||h(a.aoColumns[e].nTh).hasClass(j[f]))&&d(e,b[i])}}if(c){i=0;for(a=c.length;i<a;i++)d(i,c[i])}}function H(a,
20767b){var c;c=h.isArray(b)?b.slice():h.extend(!0,{},b);var d=a.aoData.length,i=h.extend(!0,{},j.models.oRow);i._aData=c;a.aoData.push(i);for(var f,i=0,g=a.aoColumns.length;i<g;i++)c=a.aoColumns[i],"function"===typeof c.fnRender&&c.bUseRendered&&null!==c.mData?F(a,d,i,S(a,d,i)):F(a,d,i,v(a,d,i)),c._bAutoType&&"string"!=c.sType&&(f=v(a,d,i,"type"),null!==f&&""!==f&&(f=B(f),null===c.sType?c.sType=f:c.sType!=f&&"html"!=c.sType&&(c.sType="string")));a.aiDisplayMaster.push(d);a.oFeatures.bDeferRender||ea(a,
20768d);return d}function ua(a){var b,c,d,i,f,g,e;if(a.bDeferLoading||null===a.sAjaxSource)for(b=a.nTBody.firstChild;b;){if("TR"==b.nodeName.toUpperCase()){c=a.aoData.length;b._DT_RowIndex=c;a.aoData.push(h.extend(!0,{},j.models.oRow,{nTr:b}));a.aiDisplayMaster.push(c);f=b.firstChild;for(d=0;f;){g=f.nodeName.toUpperCase();if("TD"==g||"TH"==g)F(a,c,d,h.trim(f.innerHTML)),d++;f=f.nextSibling}}b=b.nextSibling}i=T(a);d=[];b=0;for(c=i.length;b<c;b++)for(f=i[b].firstChild;f;)g=f.nodeName.toUpperCase(),("TD"==
20769g||"TH"==g)&&d.push(f),f=f.nextSibling;c=0;for(i=a.aoColumns.length;c<i;c++){e=a.aoColumns[c];null===e.sTitle&&(e.sTitle=e.nTh.innerHTML);var w=e._bAutoType,o="function"===typeof e.fnRender,k=null!==e.sClass,n=e.bVisible,m,p;if(w||o||k||!n){g=0;for(b=a.aoData.length;g<b;g++)f=a.aoData[g],m=d[g*i+c],w&&"string"!=e.sType&&(p=v(a,g,c,"type"),""!==p&&(p=B(p),null===e.sType?e.sType=p:e.sType!=p&&"html"!=e.sType&&(e.sType="string"))),e.mRender?m.innerHTML=v(a,g,c,"display"):e.mData!==c&&(m.innerHTML=v(a,
20770g,c,"display")),o&&(p=S(a,g,c),m.innerHTML=p,e.bUseRendered&&F(a,g,c,p)),k&&(m.className+=" "+e.sClass),n?f._anHidden[c]=null:(f._anHidden[c]=m,m.parentNode.removeChild(m)),e.fnCreatedCell&&e.fnCreatedCell.call(a.oInstance,m,v(a,g,c,"display"),f._aData,g,c)}}if(0!==a.aoRowCreatedCallback.length){b=0;for(c=a.aoData.length;b<c;b++)f=a.aoData[b],A(a,"aoRowCreatedCallback",null,[f.nTr,f._aData,b])}}function I(a,b){return b._DT_RowIndex!==n?b._DT_RowIndex:null}function fa(a,b,c){for(var b=J(a,b),d=0,a=
20771a.aoColumns.length;d<a;d++)if(b[d]===c)return d;return-1}function Y(a,b,c,d){for(var i=[],f=0,g=d.length;f<g;f++)i.push(v(a,b,d[f],c));return i}function v(a,b,c,d){var i=a.aoColumns[c];if((c=i.fnGetData(a.aoData[b]._aData,d))===n)return a.iDrawError!=a.iDraw&&null===i.sDefaultContent&&(D(a,0,"Requested unknown parameter "+("function"==typeof i.mData?"{mData function}":"'"+i.mData+"'")+" from the data source for row "+b),a.iDrawError=a.iDraw),i.sDefaultContent;if(null===c&&null!==i.sDefaultContent)c=
20772i.sDefaultContent;else if("function"===typeof c)return c();return"display"==d&&null===c?"":c}function F(a,b,c,d){a.aoColumns[c].fnSetData(a.aoData[b]._aData,d)}
20772function Q(a){if(null===a)return function(){return null};if("function"===typeof a)return function(b,d,i){return a(b,d,i)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("["))){var b=function(a,d,i){var f=i.split("."),g;if(""!==i){var e=0;for(g=f.length;e<g;e++){if(i=f[e].match(U)){f[e]=f[e].replace(U,"");""!==f[e]&&(a=a[f[e]]);
20773g=[];f.splice(0,e+1);for(var f=f.join("."),e=0,h=a.length;e<h;e++)g.push(b(a[e],d,f));a=i[0].substring(1,i[0].length-1);a=""===a?g:g.join(a);break}if(null===a||a[f[e]]===n)return n;a=a[f[e]]}}return a};return function(c,d){return b(c,d,a)}}return function(b){return b[a]}}function L(a){if(null===a)return function(){};if("function"===typeof a)return function(b,d){a(b,"set",d)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("["))){var b=function(a,d,i){var i=i.split("."),f,g,e=0;for(g=
20774i.length-1;e<g;e++){if(f=i[e].match(U)){i[e]=i[e].replace(U,"");a[i[e]]=[];f=i.slice();f.splice(0,e+1);g=f.join(".");for(var h=0,j=d.length;h<j;h++)f={},b(f,d[h],g),a[i[e]].push(f);return}if(null===a[i[e]]||a[i[e]]===n)a[i[e]]={};a=a[i[e]]}a[i[i.length-1].replace(U,"")]=d};return function(c,d){return b(c,d,a)}}return function(b,d){b[a]=d}}function Z(a){for(var b=[],c=a.aoData.length,d=0;d<c;d++)b.push(a.aoData[d]._aData);return b}function ga(a){a.aoData.splice(0,a.aoData.length);a.aiDisplayMaster.splice(0,
20775a.aiDisplayMaster.length);a.aiDisplay.splice(0,a.aiDisplay.length);y(a)}function ha(a,b){for(var c=-1,d=0,i=a.length;d<i;d++)a[d]==b?c=d:a[d]>b&&a[d]--; -1!=c&&a.splice(c,1)}function S(a,b,c){var d=a.aoColumns[c];return d.fnRender({iDataRow:b,iDataColumn:c,oSettings:a,aData:a.aoData[b]._aData,mDataProp:d.mData},v(a,b,c,"display"))}function ea(a,b){var c=a.aoData[b],d;if(null===c.nTr){c.nTr=l.createElement("tr");c.nTr._DT_RowIndex=b;c._aData.DT_RowId&&(c.nTr.id=c._aData.DT_RowId);c._aData.DT_RowClass&&
20776(c.nTr.className=c._aData.DT_RowClass);for(var i=0,f=a.aoColumns.length;i<f;i++){var g=a.aoColumns[i];d=l.createElement(g.sCellType);d.innerHTML="function"===typeof g.fnRender&&(!g.bUseRendered||null===g.mData)?S(a,b,i):v(a,b,i,"display");null!==g.sClass&&(d.className=g.sClass);g.bVisible?(c.nTr.appendChild(d),c._anHidden[i]=null):c._anHidden[i]=d;g.fnCreatedCell&&g.fnCreatedCell.call(a.oInstance,d,v(a,b,i,"display"),c._aData,b,i)}A(a,"aoRowCreatedCallback",null,[c.nTr,c._aData,b])}}function va(a){var b,
20777c,d;if(0!==h("th, td",a.nTHead).length){b=0;for(d=a.aoColumns.length;b<d;b++)if(c=a.aoColumns[b].nTh,c.setAttribute("role","columnheader"),a.aoColumns[b].bSortable&&(c.setAttribute("tabindex",a.iTabIndex),c.setAttribute("aria-controls",a.sTableId)),null!==a.aoColumns[b].sClass&&h(c).addClass(a.aoColumns[b].sClass),a.aoColumns[b].sTitle!=c.innerHTML)c.innerHTML=a.aoColumns[b].sTitle}else{var i=l.createElement("tr");b=0;for(d=a.aoColumns.length;b<d;b++)c=a.aoColumns[b].nTh,c.innerHTML=a.aoColumns[b].sTitle,
20778c.setAttribute("tabindex","0"),null!==a.aoColumns[b].sClass&&h(c).addClass(a.aoColumns[b].sClass),i.appendChild(c);h(a.nTHead).html("")[0].appendChild(i);V(a.aoHeader,a.nTHead)}h(a.nTHead).children("tr").attr("role","row");if(a.bJUI){b=0;for(d=a.aoColumns.length;b<d;b++){c=a.aoColumns[b].nTh;i=l.createElement("div");i.className=a.oClasses.sSortJUIWrapper;h(c).contents().appendTo(i);var f=l.createElement("span");f.className=a.oClasses.sSortIcon;i.appendChild(f);c.appendChild(i)}}if(a.oFeatures.bSort)for(b=
207790;b<a.aoColumns.length;b++)!1!==a.aoColumns[b].bSortable?ia(a,a.aoColumns[b].nTh,b):h(a.aoColumns[b].nTh).addClass(a.oClasses.sSortableNone);""!==a.oClasses.sFooterTH&&h(a.nTFoot).children("tr").children("th").addClass(a.oClasses.sFooterTH);if(null!==a.nTFoot){c=N(a,null,a.aoFooter);b=0;for(d=a.aoColumns.length;b<d;b++)c[b]&&(a.aoColumns[b].nTf=c[b],a.aoColumns[b].sClass&&h(c[b]).addClass(a.aoColumns[b].sClass))}}function W(a,b,c){var d,i,f,g=[],e=[],h=a.aoColumns.length,j;c===n&&(c=!1);d=0;for(i=
20780b.length;d<i;d++){g[d]=b[d].slice();g[d].nTr=b[d].nTr;for(f=h-1;0<=f;f--)!a.aoColumns[f].bVisible&&!c&&g[d].splice(f,1);e.push([])}d=0;for(i=g.length;d<i;d++){if(a=g[d].nTr)for(;f=a.firstChild;)a.removeChild(f);f=0;for(b=g[d].length;f<b;f++)if(j=h=1,e[d][f]===n){a.appendChild(g[d][f].cell);for(e[d][f]=1;g[d+h]!==n&&g[d][f].cell==g[d+h][f].cell;)e[d+h][f]=1,h++;for(;g[d][f+j]!==n&&g[d][f].cell==g[d][f+j].cell;){for(c=0;c<h;c++)e[d+c][f+j]=1;j++}g[d][f].cell.rowSpan=h;g[d][f].cell.colSpan=j}}}function x(a){var b=
20781A(a,"aoPreDrawCallback","preDraw",[a]);if(-1!==h.inArray(!1,b))E(a,!1);else{var c,d,b=[],i=0,f=a.asStripeClasses.length;c=a.aoOpenRows.length;a.bDrawing=!0;a.iInitDisplayStart!==n&&-1!=a.iInitDisplayStart&&(a._iDisplayStart=a.oFeatures.bServerSide?a.iInitDisplayStart:a.iInitDisplayStart>=a.fnRecordsDisplay()?0:a.iInitDisplayStart,a.iInitDisplayStart=-1,y(a));
20781if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++;else if(a.oFeatures.bServerSide){if(!a.bDestroying&&!wa(a))return}else a.iDraw++;if(0!==a.aiDisplay.length){var g=
20782a._iDisplayStart;d=a._iDisplayEnd;a.oFeatures.bServerSide&&(g=0,d=a.aoData.length);for(;g<d;g++){var e=a.aoData[a.aiDisplay[g]];null===e.nTr&&ea(a,a.aiDisplay[g]);var j=e.nTr;if(0!==f){var o=a.asStripeClasses[i%f];e._sRowStripe!=o&&(h(j).removeClass(e._sRowStripe).addClass(o),e._sRowStripe=o)}A(a,"aoRowCallback",null,[j,a.aoData[a.aiDisplay[g]]._aData,i,g]);b.push(j);i++;if(0!==c)for(e=0;e<c;e++)if(j==a.aoOpenRows[e].nParent){b.push(a.aoOpenRows[e].nTr);break}}}else b[0]=l.createElement("tr"),a.asStripeClasses[0]&&
20783(b[0].className=a.asStripeClasses[0]),c=a.oLanguage,f=c.sZeroRecords,1==a.iDraw&&null!==a.sAjaxSource&&!a.oFeatures.bServerSide?f=c.sLoadingRecords:c.sEmptyTable&&0===a.fnRecordsTotal()&&(f=c.sEmptyTable),c=l.createElement("td"),c.setAttribute("valign","top"),c.colSpan=t(a),c.className=a.oClasses.sRowEmpty,c.innerHTML=ja(a,f),b[i].appendChild(c);A(a,"aoHeaderCallback","header",[h(a.nTHead).children("tr")[0],Z(a),a._iDisplayStart,a.fnDisplayEnd(),a.aiDisplay]);A(a,"aoFooterCallback","footer",[h(a.nTFoot).children("tr")[0],
20784Z(a),a._iDisplayStart,a.fnDisplayEnd(),a.aiDisplay]);i=l.createDocumentFragment();c=l.createDocumentFragment();if(a.nTBody){f=a.nTBody.parentNode;c.appendChild(a.nTBody);if(!a.oScroll.bInfinite||!a._bInitComplete||a.bSorted||a.bFiltered)for(;c=a.nTBody.firstChild;)a.nTBody.removeChild(c);c=0;for(d=b.length;c<d;c++)i.appendChild(b[c]);a.nTBody.appendChild(i);null!==f&&f.appendChild(a.nTBody)}A(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1;a.oFeatures.bServerSide&&(E(a,!1),
20785a._bInitComplete||$(a))}}function aa(a){a.oFeatures.bSort?O(a,a.oPreviousSearch):a.oFeatures.bFilter?K(a,a.oPreviousSearch):(y(a),x(a))}function xa(a){var b=h("<div></div>")[0];a.nTable.parentNode.insertBefore(b,a.nTable);a.nTableWrapper=h('<div id="'+a.sTableId+'_wrapper" class="'+a.oClasses.sWrapper+'" role="grid"></div>')[0];
20785a.nTableReinsertBefore=a.nTable.nextSibling;for(var c=a.nTableWrapper,d=a.sDom.split(""),i,f,g,e,w,o,k,m=0;m<d.length;m++){f=0;g=d[m];if("<"==g){e=h("<div></div>")[0];w=d[m+
207861];if("'"==w||'"'==w){o="";for(k=2;d[m+k]!=w;)o+=d[m+k],k++;"H"==o?o=a.oClasses.sJUIHeader:"F"==o&&(o=a.oClasses.sJUIFooter);-1!=o.indexOf(".")?(w=o.split("."),e.id=w[0].substr(1,w[0].length-1),e.className=w[1]):"#"==o.charAt(0)?e.id=o.substr(1,o.length-1):e.className=o;m+=k}c.appendChild(e);c=e}else if(">"==g)c=c.parentNode;else if("l"==g&&a.oFeatures.bPaginate&&a.oFeatures.bLengthChange)i=ya(a),f=1;else if("f"==g&&a.oFeatures.bFilter)i=za(a),f=1;else if("r"==g&&a.oFeatures.bProcessing)i=Aa(a),f=
207871;else if("t"==g)i=Ba(a),f=1;else if("i"==g&&a.oFeatures.bInfo)i=Ca(a),f=1;else if("p"==g&&a.oFeatures.bPaginate)i=Da(a),f=1;else if(0!==j.ext.aoFeatures.length){e=j.ext.aoFeatures;k=0;for(w=e.length;k<w;k++)if(g==e[k].cFeature){(i=e[k].fnInit(a))&&(f=1);break}}1==f&&null!==i&&("object"!==typeof a.aanFeatures[g]&&(a.aanFeatures[g]=[]),a.aanFeatures[g].push(i),c.appendChild(i))}b.parentNode.replaceChild(a.nTableWrapper,b)}function V(a,b){var c=h(b).children("tr"),d,i,f,g,e,j,o,k,m,p;a.splice(0,a.length);
20788f=0;for(j=c.length;f<j;f++)a.push([]);f=0;for(j=c.length;f<j;f++){d=c[f];for(i=d.firstChild;i;){if("TD"==i.nodeName.toUpperCase()||"TH"==i.nodeName.toUpperCase()){k=1*i.getAttribute("colspan");m=1*i.getAttribute("rowspan");k=!k||0===k||1===k?1:k;m=!m||0===m||1===m?1:m;g=0;for(e=a[f];e[g];)g++;o=g;p=1===k?!0:!1;for(e=0;e<k;e++)for(g=0;g<m;g++)a[f+g][o+e]={cell:i,unique:p},a[f+g].nTr=d}i=i.nextSibling}}}function N(a,b,c){var d=[];c||(c=a.aoHeader,b&&(c=[],V(c,b)));for(var b=0,i=c.length;b<i;b++)for(var f=
207890,g=c[b].length;f<g;f++)if(c[b][f].unique&&(!d[f]||!a.bSortCellsTop))d[f]=c[b][f].cell;return d}function wa(a){if(a.bAjaxDataGet){a.iDraw++;E(a,!0);var b=Ea(a);ka(a,b);a.fnServerData.call(a.oInstance,a.sAjaxSource,b,function(b){Fa(a,b)},a);return!1}return!0}function Ea(a){var b=a.aoColumns.length,c=[],d,i,f,g;c.push({name:"sEcho",value:a.iDraw});c.push({name:"iColumns",value:b});c.push({name:"sColumns",value:M(a)});c.push({name:"iDisplayStart",value:a._iDisplayStart});c.push({name:"iDisplayLength",
20790value:!1!==a.oFeatures.bPaginate?a._iDisplayLength:-1});for(f=0;f<b;f++)d=a.aoColumns[f].mData,c.push({name:"mDataProp_"+f,value:"function"===typeof d?"function":d});if(!1!==a.oFeatures.bFilter){c.push({name:"sSearch",value:a.oPreviousSearch.sSearch});c.push({name:"bRegex",value:a.oPreviousSearch.bRegex});for(f=0;f<b;f++)c.push({name:"sSearch_"+f,value:a.aoPreSearchCols[f].sSearch}),c.push({name:"bRegex_"+f,value:a.aoPreSearchCols[f].bRegex}),c.push({name:"bSearchable_"+f,value:a.aoColumns[f].bSearchable})}if(!1!==
20791a.oFeatures.bSort){var e=0;d=null!==a.aaSortingFixed?a.aaSortingFixed.concat(a.aaSorting):a.aaSorting.slice();for(f=0;f<d.length;f++){i=a.aoColumns[d[f][0]].aDataSort;for(g=0;g<i.length;g++)c.push({name:"iSortCol_"+e,value:i[g]}),c.push({name:"sSortDir_"+e,value:d[f][1]}),e++}c.push({name:"iSortingCols",value:e});for(f=0;f<b;f++)c.push({name:"bSortable_"+f,value:a.aoColumns[f].bSortable})}return c}function ka(a,b){A(a,"aoServerParams","serverParams",[b])}function Fa(a,b){if(b.sEcho!==n){if(1*b.sEcho<
20792a.iDraw)return;a.iDraw=1*b.sEcho}(!a.oScroll.bInfinite||a.oScroll.bInfinite&&(a.bSorted||a.bFiltered))&&ga(a);a._iRecordsTotal=parseInt(b.iTotalRecords,10);a._iRecordsDisplay=parseInt(b.iTotalDisplayRecords,10);var c=M(a),c=b.sColumns!==n&&""!==c&&b.sColumns!=c,d;c&&(d=u(a,b.sColumns));for(var i=Q(a.sAjaxDataProp)(b),f=0,g=i.length;f<g;f++)if(c){for(var e=[],h=0,j=a.aoColumns.length;h<j;h++)e.push(i[f][d[h]]);H(a,e)}else H(a,i[f]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1;x(a);a.bAjaxDataGet=
20793!0;E(a,!1)}function za(a){var b=a.oPreviousSearch,c=a.oLanguage.sSearch,c=-1!==c.indexOf("_INPUT_")?c.replace("_INPUT_",'<input type="text" />'):""===c?'<input type="text" />':c+' <input type="text" />',d=l.createElement("div");d.className=a.oClasses.sFilter;d.innerHTML="<label>"+c+"</label>";a.aanFeatures.f||(d.id=a.sTableId+"_filter");c=h('input[type="text"]',d);d._DT_Input=c[0];c.val(b.sSearch.replace('"',"&quot;"));c.bind("keyup.DT",function(){for(var c=a.aanFeatures.f,d=this.value===""?"":this.value,
20794g=0,e=c.length;g<e;g++)c[g]!=h(this).parents("div.dataTables_filter")[0]&&h(c[g]._DT_Input).val(d);d!=b.sSearch&&K(a,{sSearch:d,bRegex:b.bRegex,bSmart:b.bSmart,bCaseInsensitive:b.bCaseInsensitive})});c.attr("aria-controls",a.sTableId).bind("keypress.DT",function(a){if
20794(a.keyCode==13)return false});return d}function K(a,b,c){var d=a.oPreviousSearch,i=a.aoPreSearchCols,f=function(a){d.sSearch=a.sSearch;d.bRegex=a.bRegex;d.bSmart=a.bSmart;d.bCaseInsensitive=a.bCaseInsensitive};if(a.oFeatures.bServerSide)f(b);
20795else{Ga(a,b.sSearch,c,b.bRegex,b.bSmart,b.bCaseInsensitive);f(b);for(b=0;b<a.aoPreSearchCols.length;b++)Ha(a,i[b].sSearch,b,i[b].bRegex,i[b].bSmart,i[b].bCaseInsensitive);Ia(a)}a.bFiltered=!0;h(a.oInstance).trigger("filter",a);a._iDisplayStart=0;y(a);x(a);la(a,0)}function Ia(a){for(var b=j.ext.afnFiltering,c=r(a,"bSearchable"),d=0,i=b.length;d<i;d++)for(var f=0,g=0,e=a.aiDisplay.length;g<e;g++){var h=a.aiDisplay[g-f];b[d](a,Y(a,h,"filter",c),h)||(a.aiDisplay.splice(g-f,1),f++)}}function Ha(a,b,c,
20796d,i,f){if(""!==b)for(var g=0,b=ma(b,d,i,f),d=a.aiDisplay.length-1;0<=d;d--)i=Ja(v(a,a.aiDisplay[d],c,"filter"),a.aoColumns[c].sType),b.test(i)||(a.aiDisplay.splice(d,1),g++)}function Ga(a,b,c,d,i,f){d=ma(b,d,i,f);i=a.oPreviousSearch;c||(c=0);0!==j.ext.afnFiltering.length&&(c=1);if(0>=b.length)a.aiDisplay.splice(0,a.aiDisplay.length),a.aiDisplay=a.aiDisplayMaster.slice();else if(a.aiDisplay.length==a.aiDisplayMaster.length||i.sSearch.length>b.length||1==c||0!==b.indexOf(i.sSearch)){a.aiDisplay.splice(0,
20797a.aiDisplay.length);la(a,1);for(b=0;b<a.aiDisplayMaster.length;b++)d.test(a.asDataSearch[b])&&a.aiDisplay.push(a.aiDisplayMaster[b])}else for(b=c=0;b<a.asDataSearch.length;b++)d.test(a.asDataSearch[b])||(a.aiDisplay.splice(b-c,1),c++)}function la(a,b){if(!a.oFeatures.bServerSide){a.asDataSearch=[];for(var c=r(a,"bSearchable"),d=1===b?a.aiDisplayMaster:a.aiDisplay,i=0,f=d.length;i<f;i++)a.asDataSearch[i]=na(a,Y(a,d[i],"filter",c))}}function na(a,b){var c=b.join("  ");-1!==c.indexOf("&")&&(c=h("<div>").html(c).text());
20798return c.replace(/[\n\r]/g," ")}function ma(a,b,c,d){if(c)return a=b?a.split(" "):oa(a).split(" "),a="^(?=.*?"+a.join(")(?=.*?")+").*$",RegExp(a,d?"i":"");a=b?a:oa(a);return RegExp(a,d?"i":"")}function Ja(a,b){return"function"===typeof j.ext.ofnSearch[b]?j.ext.ofnSearch[b](a):null===a?"":"html"==b?a.replace(/[\r\n]/g," ").replace(/<.*?>/g,""):"string"===typeof a?a.replace(/[\r\n]/g," "):a}function oa(a){return a.replace(RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)","g"),
20799"\\$1")}function Ca(a){var b=l.createElement("div");b.className=a.oClasses.sInfo;a.aanFeatures.i||(a.aoDrawCallback.push({fn:Ka,sName:"information"}),b.id=a.sTableId+"_info");a.nTable.setAttribute("aria-describedby",a.sTableId+"_info");return b}function Ka(a){if(a.oFeatures.bInfo&&0!==a.aanFeatures.i.length){var b=a.oLanguage,c=a._iDisplayStart+1,d=a.fnDisplayEnd(),i=a.fnRecordsTotal(),f=a.fnRecordsDisplay(),g;g=0===f?b.sInfoEmpty:b.sInfo;f!=i&&(g+=" "+b.sInfoFiltered);g+=b.sInfoPostFix;g=ja(a,g);
20800null!==b.fnInfoCallback&&(g=b.fnInfoCallback.call(a.oInstance,a,c,d,i,f,g));a=a.aanFeatures.i;b=0;for(c=a.length;b<c;b++)h(a[b]).html(g)}}function ja(a,b){var c=a.fnFormatNumber(a._iDisplayStart+1),d=a.fnDisplayEnd(),d=a.fnFormatNumber(d),i=a.fnRecordsDisplay(),i=a.fnFormatNumber(i),f=a.fnRecordsTotal(),f=a.fnFormatNumber(f);a.oScroll.bInfinite&&(c=a.fnFormatNumber(1));return b.replace(/_START_/g,c).replace(/_END_/g,d).replace(/_TOTAL_/g,i).replace(/_MAX_/g,f)}function ba(a){var b,c,d=a.iInitDisplayStart;
20801if(!1===a.bInitialised)setTimeout(function(){ba(a)},200);else{xa(a);va(a);W(a,a.aoHeader);a.nTFoot&&W(a,a.aoFooter);E(a,!0);a.oFeatures.bAutoWidth&&da(a);b=0;for(c=a.aoColumns.length;b<c;b++)null!==a.aoColumns[b].sWidth&&(a.aoColumns[b].nTh.style.width=q(a.aoColumns[b].sWidth));a.oFeatures.bSort?O(a):a.oFeatures.bFilter?K(a,a.oPreviousSearch):(a.aiDisplay=a.aiDisplayMaster.slice(),y(a),x(a));null!==a.sAjaxSource&&!a.oFeatures.bServerSide?(c=[],ka(a,c),a.fnServerData.call(a.oInstance,a.sAjaxSource,
20802c,function(c){var f=a.sAjaxDataProp!==""?Q(a.sAjaxDataProp)(c):c;for(b=0;b<f.length;b++)H(a,f[b]);a.iInitDisplayStart=d;if(a.oFeatures.bSort)O(a);else{a.aiDisplay=a.aiDisplayMaster.slice();y(a);x(a)}E(a,false);$(a,c)},a)):a.oFeatures.bServerSide||(E(a,!1),$(a))}}function $(a,b){a._bInitComplete=!0;
20802A(a,"aoInitComplete","init",[a,b])}function pa(a){var b=j.defaults.oLanguage;!a.sEmptyTable&&(a.sZeroRecords&&"No data available in table"===b.sEmptyTable)&&p(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&
20803(a.sZeroRecords&&"Loading..."===b.sLoadingRecords)&&p(a,a,"sZeroRecords","sLoadingRecords")}function ya(a){if(a.oScroll.bInfinite)return null;var b='<select size="1" '+('name="'+a.sTableId+'_length"')+">",c,d,i=a.aLengthMenu;if(2==i.length&&"object"===typeof i[0]&&"object"===typeof i[1]){c=0;for(d=i[0].length;c<d;c++)b+='<option value="'+i[0][c]+'">'+i[1][c]+"</option>"}else{c=0;for(d=i.length;c<d;c++)b+='<option value="'+i[c]+'">'+i[c]+"</option>"}b+="</select>";i=l.createElement("div");a.aanFeatures.l||
20804(i.id=a.sTableId+"_length");i.className=a.oClasses.sLength;i.innerHTML="<label>"+a.oLanguage.sLengthMenu.replace("_MENU_",b)+"</label>";h('select option[value="'+a._iDisplayLength+'"]',i).attr("selected",!0);h("select",i).bind("change.DT",function(){var b=h(this).val(),i=a.aanFeatures.l;c=0;for(d=i.length;c<d;c++)i[c]!=this.parentNode&&h("select",i[c]).val(b);a._iDisplayLength=parseInt(b,10);y(a);if(a.fnDisplayEnd()==a.fnRecordsDisplay()){a._iDisplayStart=a.fnDisplayEnd()-a._iDisplayLength;if(a._iDisplayStart<
208050)a._iDisplayStart=0}if(a._iDisplayLength==-1)a._iDisplayStart=0;x(a)});h("select",i).attr("aria-controls",a.sTableId);return i}function y(a){a._iDisplayEnd=!1===a.oFeatures.bPaginate?a.aiDisplay.length:a._iDisplayStart+a._iDisplayLength>a.aiDisplay.length||-1==a._iDisplayLength?a.aiDisplay.length:a._iDisplayStart+a._iDisplayLength}function Da(a){if(a.oScroll.bInfinite)return null;var b=l.createElement("div");b.className=a.oClasses.sPaging+a.sPaginationType;j.ext.oPagination[a.sPaginationType].fnInit(a,
20806b,function(a){y(a);x(a)});a.aanFeatures.p||a.aoDrawCallback.push({fn:function(a){j.ext.oPagination[a.sPaginationType].fnUpdate(a,function(a){y(a);x(a)})},sName:"pagination"});return b}function qa(a,b){var c=a._iDisplayStart;if("number"===typeof b)a._iDisplayStart=b*a._iDisplayLength,a._iDisplayStart>a.fnRecordsDisplay()&&(a._iDisplayStart=0);else if("first"==b)a._iDisplayStart=0;else if("previous"==b)a._iDisplayStart=0<=a._iDisplayLength?a._iDisplayStart-a._iDisplayLength:0,0>a._iDisplayStart&&(a._iDisplayStart=
208070);else if("next"==b)0<=a._iDisplayLength?a._iDisplayStart+a._iDisplayLength<a.fnRecordsDisplay()&&(a._iDisplayStart+=a._iDisplayLength):a._iDisplayStart=0;else if("last"==b)if(0<=a._iDisplayLength){var d=parseInt((a.fnRecordsDisplay()-1)/a._iDisplayLength,10)+1;a._iDisplayStart=(d-1)*a._iDisplayLength}else a._iDisplayStart=0;else D(a,0,"Unknown paging action: "+b);h(a.oInstance).trigger("page",a);return c!=a._iDisplayStart}function Aa(a){var b=l.createElement("div");a.aanFeatures.r||(b.id=a.sTableId+
20808"_processing");b.innerHTML=a.oLanguage.sProcessing;b.className=a.oClasses.sProcessing;a.nTable.parentNode.insertBefore(b,a.nTable);return b}function E(a,b){if(a.oFeatures.bProcessing)for(var c=a.aanFeatures.r,d=0,i=c.length;d<i;d++)c[d].style.visibility=b?"visible":"hidden";h(a.oInstance).trigger("processing",[a,b])}function Ba(a){if(""===a.oScroll.sX&&""===a.oScroll.sY)return a.nTable;var b=l.createElement("div"),c=l.createElement("div"),d=l.createElement("div"),i=l.createElement("div"),f=l.createElement("div"),
20809g=l.createElement("div"),e=a.nTable.cloneNode(!1),j=a.nTable.cloneNode(!1),o=a.nTable.getElementsByTagName("thead")[0],k=0===a.nTable.getElementsByTagName("tfoot").length?null:a.nTable.getElementsByTagName("tfoot")[0],m=a.oClasses;c.appendChild(d);f.appendChild(g);i.appendChild(a.nTable);b.appendChild(c);b.appendChild(i);d.appendChild(e);e.appendChild(o);null!==k&&(b.appendChild(f),g.appendChild(j),j.appendChild(k));b.className=m.sScrollWrapper;c.className=m.sScrollHead;d.className=m.sScrollHeadInner;
20810i.className=m.sScrollBody;f.className=m.sScrollFoot;g.className=m.sScrollFootInner;a.oScroll.bAutoCss&&(c.style.overflow="hidden",c.style.position="relative",f.style.overflow="hidden",i.style.overflow="auto");c.style.border="0";c.style.width="100%";f.style.border="0";d.style.width=""!==a.oScroll.sXInner?a.oScroll.sXInner:"100%";e.removeAttribute("id");e.style.marginLeft="0";a.nTable.style.marginLeft="0";null!==k&&(j.removeAttribute("id"),j.style.marginLeft="0");d=h(a.nTable).children("caption");0<
20811d.length&&(d=d[0],"top"===d._captionSide?e.appendChild(d):"bottom"===d._captionSide&&k&&j.appendChild(d));""!==a.oScroll.sX&&(c.style.width=q(a.oScroll.sX),i.style.width=q(a.oScroll.sX),null!==k&&(f.style.width=q(a.oScroll.sX)),h(i).scroll(function(){c.scrollLeft=this.scrollLeft;if(k!==null)f.scrollLeft=this.scrollLeft}));""!==a.oScroll.sY&&(i.style.height=q(a.oScroll.sY));a.aoDrawCallback.push({fn:La,sName:"scrolling"});a.oScroll.bInfinite&&h(i).scroll(function(){if(!a.bDrawing&&h(this).scrollTop()!==
208120&&h(this).scrollTop()+h(this).height()>h(a.nTable).height()-a.oScroll.iLoadGap&&a.fnDisplayEnd()<a.fnRecordsDisplay()){qa(a,"next");y(a);x(a)}});a.nScrollHead=c;a.nScrollFoot=f;return b}function La(a){var b=a.nScrollHead.getElementsByTagName("div")[0],c=b.getElementsByTagName("table")[0],d=a.nTable.parentNode,i,f,g,e,j,o,k,m,p=[],n=[],l=null!==a.nTFoot?a.nScrollFoot.getElementsByTagName("div")[0]:null,R=null!==a.nTFoot?l.getElementsByTagName("table")[0]:null,r=a.oBrowser.bScrollOversize,s=function(a){k=
20813a.style;k.paddingTop="0";k.paddingBottom="0";k.borderTopWidth="0";k.borderBottomWidth="0";k.height=0};h(a.nTable).children("thead, tfoot").remove();i=h(a.nTHead).clone()[0];a.nTable.insertBefore(i,a.nTable.childNodes[0]);g=a.nTHead.getElementsByTagName("tr");e=i.getElementsByTagName("tr");null!==a.nTFoot&&(j=h(a.nTFoot).clone()[0],a.nTable.insertBefore(j,a.nTable.childNodes[1]),o=a.nTFoot.getElementsByTagName("tr"),j=j.getElementsByTagName("tr"));""===a.oScroll.sX&&(d.style.width="100%",b.parentNode.style.width=
20814"100%");var t=N(a,i);i=0;for(f=t.length;i<f;i++)m=G(a,i),t[i].style.width=a.aoColumns[m].sWidth;null!==a.nTFoot&&C(function(a){a.style.width=""},j);a.oScroll.bCollapse&&""!==a.oScroll.sY&&(d.style.height=d.offsetHeight+a.nTHead.offsetHeight+"px");i=h(a.nTable).outerWidth();if(""===a.oScroll.sX){if(a.nTable.style.width="100%",r&&(h("tbody",d).height()>d.offsetHeight||"scroll"==h(d).css("overflow-y")))a.nTable.style.width=q(h(a.nTable).outerWidth()-a.oScroll.iBarWidth)}else""!==a.oScroll.sXInner?a.nTable.style.width=
20815q(a.oScroll.sXInner):i==h(d).width()&&h(d).height()<h(a.nTable).height()?(a.nTable.style.width=q(i-a.oScroll.iBarWidth),h(a.nTable).outerWidth()>i-a.oScroll.iBarWidth&&(a.nTable.style.width=q(i))):a.nTable.style.width=q(i);i=h(a.nTable).outerWidth();C(s,e);C(function(a){p.push(q(h(a).width()))},e);C(function(a,b){a.style.width=p[b]},g);h(e).height(0);null!==a.nTFoot&&(C(s,j),C(function(a){n.push(q(h(a).width()))},j),C(function(a,b){a.style.width=n[b]},o),h(j).height(0));C(function(a,b){a.innerHTML=
20816"";a.style.width=p[b]},e);null!==a.nTFoot&&C(function(a,b){a.innerHTML="";a.style.width=n[b]},j);if(h(a.nTable).outerWidth()<i){g=d.scrollHeight>d.offsetHeight||"scroll"==h(d).css("overflow-y")?i+a.oScroll.iBarWidth:i;if(r&&(d.scrollHeight>d.offsetHeight||"scroll"==h(d).css("overflow-y")))a.nTable.style.width=q(g-a.oScroll.iBarWidth);d.style.width=q(g);a.nScrollHead.style.width=q(g);null!==a.nTFoot&&(a.nScrollFoot.style.width=q(g));""===a.oScroll.sX?D(a,1,"The table cannot fit into the current element which will cause column misalignment. The table has been drawn at its minimum possible width."):
20817""!==a.oScroll.sXInner&&D(a,1,"The table cannot fit into the current element which will cause column misalignment. Increase the sScrollXInner value or remove it to allow automatic calculation")}else d.style.width=q("100%"),a.nScrollHead.style.width=q("100%"),null!==a.nTFoot&&(a.nScrollFoot.style.width=q("100%"));""===a.oScroll.sY&&r&&(d.style.height=q(a.nTable.offsetHeight+a.oScroll.iBarWidth));""!==a.oScroll.sY&&a.oScroll.bCollapse&&(d.style.height=q(a.oScroll.sY),r=""!==a.oScroll.sX&&a.nTable.offsetWidth>
20818d.offsetWidth?a.oScroll.iBarWidth:0,a.nTable.offsetHeight<d.offsetHeight&&(d.style.height=q(a.nTable.offsetHeight+r)));r=h(a.nTable).outerWidth();c.style.width=q(r);b.style.width=q(r);c=h(a.nTable).height()>d.clientHeight||"scroll"==h(d).css("overflow-y");b.style.paddingRight=c?a.oScroll.iBarWidth+"px":"0px";null!==a.nTFoot&&(R.style.width=q(r),l.style.width=q(r),l.style.paddingRight=c?a.oScroll.iBarWidth+"px":"0px");h(d).scroll();if(a.bSorted||a.bFiltered)d.scrollTop=0}function C(a,b,c){for(var d=
208190,i=0,f=b.length,g,e;i<f;){g=b[i].firstChild;for(e=c?c[i].firstChild:null;g;)1===g.nodeType&&(c?a(g,e,d):a(g,d),d++),g=g.nextSibling,e=c?e.nextSibling:null;i++}}function Ma(a,b){if(!a||null===a||""===a)return 0;b||(b=l.body);var c,d=l.createElement("div");d.style.width=q(a);b.appendChild(d);c=d.offsetWidth;b.removeChild(d);return c}function da(a){var b=0,c,d=0,i=a.aoColumns.length,f,e,j=h("th",a.nTHead),o=a.nTable.getAttribute("width");e=a.nTable.parentNode;for(f=0;f<i;f++)a.aoColumns[f].bVisible&&
20820(d++,null!==a.aoColumns[f].sWidth&&(c=Ma(a.aoColumns[f].sWidthOrig,e),null!==c&&(a.aoColumns[f].sWidth=q(c)),b++));if(i==j.length&&0===b&&d==i&&""===a.oScroll.sX&&""===a.oScroll.sY)for(f=0;f<a.aoColumns.length;f++)c=h(j[f]).width(),null!==c&&(a.aoColumns[f].sWidth=q(c));else{b=a.nTable.cloneNode(!1);f=a.nTHead.cloneNode(!0);d=l.createElement("tbody");c=l.createElement("tr");b.removeAttribute("id");b.appendChild(f);null!==a.nTFoot&&(b.appendChild(a.nTFoot.cloneNode(!0)),C(function(a){a.style.width=
20821""},b.getElementsByTagName("tr")));b.appendChild(d);d.appendChild(c);d=h("thead th",b);0===d.length&&(d=h("tbody tr:eq(0)>td",b));j=N(a,f);for(f=d=0;f<i;f++){var k=a.aoColumns[f];k.bVisible&&null!==k.sWidthOrig&&""!==k.sWidthOrig?j[f-d].style.width=q(k.sWidthOrig):k.bVisible?j[f-d].style.width="":d++}for(f=0;f<i;f++)a.aoColumns[f].bVisible&&(d=Na(a,f),null!==d&&(d=d.cloneNode(!0),""!==a.aoColumns[f].sContentPadding&&(d.innerHTML+=a.aoColumns[f].sContentPadding),c.appendChild(d)));e.appendChild(b);
20822""!==a.oScroll.sX&&""!==a.oScroll.sXInner?b.style.width=q(a.oScroll.sXInner):""!==a.oScroll.sX?(b.style.width="",h(b).width()<e.offsetWidth&&(b.style.width=q(e.offsetWidth))
20822):""!==a.oScroll.sY?b.style.width=q(e.offsetWidth):o&&(b.style.width=q(o));b.style.visibility="hidden";Oa(a,b);i=h("tbody tr:eq(0)",b).children();0===i.length&&(i=N(a,h("thead",b)[0]));if(""!==a.oScroll.sX){for(f=d=e=0;f<a.aoColumns.length;f++)a.aoColumns[f].bVisible&&(e=null===a.aoColumns[f].sWidthOrig?e+h(i[d]).outerWidth():
20823e+(parseInt(a.aoColumns[f].sWidth.replace("px",""),10)+(h(i[d]).outerWidth()-h(i[d]).width())),d++);b.style.width=q(e);a.nTable.style.width=q(e)}for(f=d=0;f<a.aoColumns.length;f++)a.aoColumns[f].bVisible&&(e=h(i[d]).width(),null!==e&&0<e&&(a.aoColumns[f].sWidth=q(e)),d++);i=h(b).css("width");a.nTable.style.width=-1!==i.indexOf("%")?i:q(h(b).outerWidth());b.parentNode.removeChild(b)}o&&(a.nTable.style.width=q(o))}function Oa(a,b){""===a.oScroll.sX&&""!==a.oScroll.sY?(h(b).width(),b.style.width=q(h(b).outerWidth()-
20824a.oScroll.iBarWidth)):""!==a.oScroll.sX&&(b.style.width=q(h(b).outerWidth()))}function Na(a,b){var c=Pa(a,b);if(0>c)return null;if(null===a.aoData[c].nTr){var d=l.createElement("td");d.innerHTML=v(a,c,b,"");return d}return J(a,c)[b]}function Pa(a,b){for(var c=-1,d=-1,i=0;i<a.aoData.length;i++){var e=v(a,i,b,"display")+"",e=e.replace(/<.*?>/g,"");e.length>c&&(c=e.length,d=i)}return d}function q(a){if(null===a)return"0px";if("number"==typeof a)return 0>a?"0px":a+"px";var b=a.charCodeAt(a.length-1);
20825return 48>b||57<b?a:a+"px"}function Qa(){var a=l.createElement("p"),b=a.style;b.width="100%";b.height="200px";b.padding="0px";var c=l.createElement("div"),b=c.style;b.position="absolute";b.top="0px";b.left="0px";b.visibility="hidden";b.width="200px";b.height="150px";b.padding="0px";b.overflow="hidden";c.appendChild(a);l.body.appendChild(c);b=a.offsetWidth;c.style.overflow="scroll";a=a.offsetWidth;b==a&&(a=c.clientWidth);l.body.removeChild(c);return b-a}function O(a,b){var c,d,i,e,g,k,o=[],m=[],p=
20826j.ext.oSort,l=a.aoData,q=a.aoColumns,G=a.oLanguage.oAria;if(!a.oFeatures.bServerSide&&(0!==a.aaSorting.length||null!==a.aaSortingFixed)){o=null!==a.aaSortingFixed?a.aaSortingFixed.concat(a.aaSorting):a.aaSorting.slice();for(c=0;c<o.length;c++)if(d=o[c][0],i=R(a,d),e=a.aoColumns[d].sSortDataType,j.ext.afnSortData[e])if(g=j.ext.afnSortData[e].call(a.oInstance,a,d,i),g.length===l.length){i=0;for(e=l.length;i<e;i++)F(a,i,d,g[i])}else D(a,0,"Returned data sort array (col "+d+") is the wrong length");c=
208270;for(d=a.aiDisplayMaster.length;c<d;c++)m[a.aiDisplayMaster[c]]=c;var r=o.length,s;c=0;for(d=l.length;c<d;c++)for(i=0;i<r;i++){s=q[o[i][0]].aDataSort;g=0;for(k=s.length;g<k;g++)e=q[s[g]].sType,e=p[(e?e:"string")+"-pre"],l[c]._aSortData[s[g]]=e?e(v(a,c,s[g],"sort")):v(a,c,s[g],"sort")}a.aiDisplayMaster.sort(function(a,b){var c,d,e,i,f;for(c=0;c<r;c++){f=q[o[c][0]].aDataSort;d=0;for(e=f.length;d<e;d++)if(i=q[f[d]].sType,i=p[(i?i:"string")+"-"+o[c][1]](l[a]._aSortData[f[d]],l[b]._aSortData[f[d]]),0!==
20828i)return i}return p["numeric-asc"](m[a],m[b])})}(b===n||b)&&!a.oFeatures.bDeferRender&&P(a);c=0;for(d=a.aoColumns.length;c<d;c++)e=q[c].sTitle.replace(/<.*?>/g,""),i=q[c].nTh,i.removeAttribute("aria-sort"),i.removeAttribute("aria-label"),q[c].bSortable?0<o.length&&o[0][0]==c?(i.setAttribute("aria-sort","asc"==o[0][1]?"ascending":"descending"),i.setAttribute("aria-label",e+("asc"==(q[c].asSorting[o[0][2]+1]?q[c].asSorting[o[0][2]+1]:q[c].asSorting[0])?G.sSortAscending:G.sSortDescending))):i.setAttribute("aria-label",
20829e+("asc"==q[c].asSorting[0]?G.sSortAscending:G.sSortDescending)):i.setAttribute("aria-label",e);a.bSorted=!0;h(a.oInstance).trigger("sort",a);a.oFeatures.bFilter?K(a,a.oPreviousSearch,1):(a.aiDisplay=a.aiDisplayMaster.slice(),a._iDisplayStart=0,y(a),x(a))}function ia(a,b,c,d){Ra(b,{},function(b){if(!1!==a.aoColumns[c].bSortable){var e=function(){var d,e;if(b.shiftKey){for(var f=!1,h=0;h<a.aaSorting.length;h++)if(a.aaSorting[h][0]==c){f=!0;d=a.aaSorting[h][0];e=a.aaSorting[h][2]+1;a.aoColumns[d].asSorting[e]?
20830(a.aaSorting[h][1]=a.aoColumns[d].asSorting[e],a.aaSorting[h][2]=e):a.aaSorting.splice(h,1);break}!1===f&&a.aaSorting.push([c,a.aoColumns[c].asSorting[0],0])}else 1==a.aaSorting.length&&a.aaSorting[0][0]==c?(d=a.aaSorting[0][0],e=a.aaSorting[0][2]+1,a.aoColumns[d].asSorting[e]||(e=0),a.aaSorting[0][1]=a.aoColumns[d].asSorting[e],a.aaSorting[0][2]=e):(a.aaSorting.splice(0,a.aaSorting.length),a.aaSorting.push([c,a.aoColumns[c].asSorting[0],0]));O(a)};a.oFeatures.bProcessing?(E(a,!0),setTimeout(function(){e();
20831a.oFeatures.bServerSide||E(a,!1)},0)):e();"function"==typeof d&&d(a)}})}function P(a){var b,c,d,e,f,g=a.aoColumns.length,j=a.oClasses;for(b=0;b<g;b++)a.aoColumns[b].bSortable&&h(a.aoColumns[b].nTh).removeClass(j.sSortAsc+" "+j.sSortDesc+" "+a.aoColumns[b].sSortingClass);c=null!==a.aaSortingFixed?a.aaSortingFixed.concat(a.aaSorting):a.aaSorting.slice();for(b=0;b<a.aoColumns.length;b++)if(a.aoColumns[b].bSortable){f=a.aoColumns[b].sSortingClass;e=-1;for(d=0;d<c.length;d++)if(c[d][0]==b){f="asc"==c[d][1]?
20832j.sSortAsc:j.sSortDesc;e=d;break}h(a.aoColumns[b].nTh).addClass(f);a.bJUI&&(f=h("span."+j.sSortIcon,a.aoColumns[b].nTh),f.removeClass(j.sSortJUIAsc+" "+j.sSortJUIDesc+" "+j.sSortJUI+" "+j.sSortJUIAscAllowed+" "+j.sSortJUIDescAllowed),f.addClass(-1==e?a.aoColumns[b].sSortingClassJUI:"asc"==c[e][1]?j.sSortJUIAsc:j.sSortJUIDesc))}else h(a.aoColumns[b].nTh).addClass(a.aoColumns[b].sSortingClass);f=j.sSortColumn;if(a.oFeatures.bSort&&a.oFeatures.bSortClasses){a=J(a);e=[];for(b=0;b<g;b++)e.push("");b=0;
20833for(d=1;b<c.length;b++)j=parseInt(c[b][0],10),e[j]=f+d,3>d&&d++;f=RegExp(f+"[123]");var o;b=0;for(c=a.length;b<c;b++)j=b%g,d=a[b].className,o=e[j],j=d.replace(f,o),j!=d?a[b].className=h.trim(j):0<o.length&&-1==d.indexOf(o)&&(a[b].className=d+" "+o)}}function ra(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b,c;b=a.oScroll.bInfinite;var d={iCreate:(new Date).getTime(),iStart:b?0:a._iDisplayStart,iEnd:b?a._iDisplayLength:a._iDisplayEnd,iLength:a._iDisplayLength,aaSorting:h.extend(!0,[],a.aaSorting),
20834oSearch:h.extend(!0,{},a.oPreviousSearch),aoSearchCols:h.extend(!0,[],a.aoPreSearchCols),abVisCols:[]};b=0;for(c=a.aoColumns.length;b<c;b++)d.abVisCols.push(a.aoColumns[b].bVisible);A(a,"aoStateSaveParams","stateSaveParams",[a,d]);a.fnStateSave.call(a.oInstance,a,d)}}function Sa(a,b){if(a.oFeatures.bStateSave){var c=a.fnStateLoad.call(a.oInstance,a);if(c){var d=A(a,"aoStateLoadParams","stateLoadParams",[a,c]);if(-1===h.inArray(!1,d)){a.oLoadedState=h.extend(!0,{},c);a._iDisplayStart=c.iStart;a.iInitDisplayStart=
20835c.iStart;a._iDisplayEnd=c.iEnd;a._iDisplayLength=c.iLength;a.aaSorting=c.aaSorting.slice();a.saved_aaSorting=c.aaSorting.slice();h.extend(a.oPreviousSearch,c.oSearch);h.extend(!0,a.aoPreSearchCols,c.aoSearchCols);b.saved_aoColumns=[];for(d=0;d<c.abVisCols.length;d++)b.saved_aoColumns[d]={},b.saved_aoColumns[d].bVisible=c.abVisCols[d];A(a,"aoStateLoaded","stateLoaded",[a,c])}}}}function s(a){for(var b=0;b<j.settings.length;b++)if(j.settings[b].nTable===a)return j.settings[b];return null}function T(a){for(var b=
20836[],a=a.aoData,c=0,d=a.length;c<d;c++)null!==a[c].nTr&&b.push(a[c].nTr);return b}function J(a,b){var c=[],d,e,f,g,h,j;e=0;var o=a.aoData.length;b!==n&&(e=b,o=b+1);for(f=e;f<o;f++)if(j=a.aoData[f],null!==j.nTr){e=[];for(d=j.nTr.firstChild;d;)g=d.nodeName.toLowerCase(),("td"==g||"th"==g)&&e.push(d),d=d.nextSibling;g=d=0;for(h=a.aoColumns.length;g<h;g++)a.aoColumns[g].bVisible?c.push(e[g-d]):(c.push(j._anHidden[g]),d++)}return c}function D(a,b,c){a=null===a?"DataTables warning: "+c:"DataTables warning (table id = '"+
20837a.sTableId+"'): "+c;
20837if(0===b)if("alert"==j.ext.sErrMode)alert(a);else throw Error(a);else X.console&&console.log&&console.log(a)}function p(a,b,c,d){d===n&&(d=c);b[c]!==n&&(a[d]=b[c])}function Ta(a,b){var c,d;for(d in b)b.hasOwnProperty(d)&&(c=b[d],"object"===typeof e[d]&&null!==c&&!1===h.isArray(c)?h.extend(!0,a[d],c):a[d]=c);return a}function Ra(a,b,c){h(a).bind("click.DT",b,function(b){a.blur();c(b)}).bind("keypress.DT",b,function(a){13===a.which&&c(a)}).bind("selectstart.DT",function(){return!1})}
20838function z(a,b,c,d){c&&a[b].push({fn:c,sName:d})}function A(a,b,c,d){for(var b=a[b],e=[],f=b.length-1;0<=f;f--)e.push(b[f].fn.apply(a.oInstance,d));null!==c&&h(a.oInstance).trigger(c,d);return e}function Ua(a){var b=h('<div style="position:absolute; top:0; left:0; height:1px; width:1px; overflow:hidden"><div style="position:absolute; top:1px; left:1px; width:100px; overflow:scroll;"><div id="DT_BrowserTest" style="width:100%; height:10px;"></div></div></div>')[0];l.body.appendChild(b);a.oBrowser.bScrollOversize=
20839100===h("#DT_BrowserTest",b)[0].offsetWidth?!0:!1;l.body.removeChild(b)}function Va(a){return function(){var b=[s(this[j.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return j.ext.oApi[a].apply(this,b)}}var U=/\[.*?\]$/,Wa=X.JSON?JSON.stringify:function(a){var b=typeof a;if("object"!==b||null===a)return"string"===b&&(a='"'+a+'"'),a+"";var c,d,e=[],f=h.isArray(a);for(c in a)d=a[c],b=typeof d,"string"===b?d='"'+d+'"':"object"===b&&null!==d&&(d=Wa(d)),e.push((f?"":'"'+c+'":')+d);return(f?
20840"[":"{")+e+(f?"]":"}")};this.$=function(a,b){var c,d,e=[],f;d=s(this[j.ext.iApiIndex]);var g=d.aoData,o=d.aiDisplay,k=d.aiDisplayMaster;b||(b={});b=h.extend({},{filter:"none",order:"current",page:"all"},b);if("current"==b.page){c=d._iDisplayStart;for(d=d.fnDisplayEnd();c<d;c++)(f=g[o[c]].nTr)&&e.push(f)}else if("current"==b.order&&"none"==b.filter){c=0;for(d=k.length;c<d;c++)(f=g[k[c]].nTr)&&e.push(f)}else if("current"==b.order&&"applied"==b.filter){c=0;for(d=o.length;c<d;c++)(f=g[o[c]].nTr)&&e.push(f)}else if("original"==
20841b.order&&"none"==b.filter){c=0;for(d=g.length;c<d;c++)(f=g[c].nTr)&&e.push(f)}else if("original"==b.order&&"applied"==b.filter){c=0;for(d=g.length;c<d;c++)f=g[c].nTr,-1!==h.inArray(c,o)&&f&&e.push(f)}else D(d,1,"Unknown selection options");e=h(e);c=e.filter(a);e=e.find(a);return h([].concat(h.makeArray(c),h.makeArray(e)))};this._=function(a,b){var c=[],d,e,f=this.$(a,b);d=0;for(e=f.length;d<e;d++)c.push(this.fnGetData(f[d]));return c};this.fnAddData=function(a,b){if(0===a.length)return[];var c=[],
20842d,e=s(this[j.ext.iApiIndex]);if("object"===typeof a[0]&&null!==a[0])for(var f=0;f<a.length;f++){d=H(e,a[f]);if(-1==d)return c;c.push(d)}else{d=H(e,a);if(-1==d)return c;c.push(d)}e.aiDisplay=e.aiDisplayMaster.slice();(b===n||b)&&aa(e);return c};this.fnAdjustColumnSizing=function(a){var b=s(this[j.ext.iApiIndex]);k(b);a===n||a?this.fnDraw(!1):(""!==b.oScroll.sX||""!==b.oScroll.sY)&&this.oApi._fnScrollDraw(b)};this.fnClearTable=function(a){var b=s(this[j.ext.iApiIndex]);ga(b);(a===n||a)&&x(b)};this.fnClose=
20843function(a){for(var b=s(this[j.ext.iApiIndex]),c=0;c<b.aoOpenRows.length;c++)if(b.aoOpenRows[c].nParent==a)return(a=b.aoOpenRows[c].nTr.parentNode)&&a.removeChild(b.aoOpenRows[c].nTr),b.aoOpenRows.splice(c,1),0;return 1};this.fnDeleteRow=function(a,b,c){var d=s(this[j.ext.iApiIndex]),e,f,a="object"===typeof a?I(d,a):a,g=d.aoData.splice(a,1);e=0;for(f=d.aoData.length;e<f;e++)null!==d.aoData[e].nTr&&(d.aoData[e].nTr._DT_RowIndex=e);e=h.inArray(a,d.aiDisplay);d.asDataSearch.splice(e,1);ha(d.aiDisplayMaster,
20844a);ha(d.aiDisplay,a);"function"===typeof b&&b.call(this,d,g);d._iDisplayStart>=d.fnRecordsDisplay()&&(d._iDisplayStart-=d._iDisplayLength,0>d._iDisplayStart&&(d._iDisplayStart=0));if(c===n||c)y(d),x(d);return g};this.fnDestroy=function(a){var b=s(this[j.ext.iApiIndex]),c=b.nTableWrapper.parentNode,d=b.nTBody,i,f,a=a===n?!1:a;b.bDestroying=!0;A(b,"aoDestroyCallback","destroy",[b]);if(!a){i=0;for(f=b.aoColumns.length;i<f;i++)!1===b.aoColumns[i].bVisible&&this.fnSetColumnVis(i,!0)}h(b.nTableWrapper).find("*").andSelf().unbind(".DT");
20845h("tbody>tr>
20845td."+b.oClasses.sRowEmpty,b.nTable).parent().remove();b.nTable!=b.nTHead.parentNode&&(h(b.nTable).children("thead").remove(),b.nTable.appendChild(b.nTHead));b.nTFoot&&b.nTable!=b.nTFoot.parentNode&&(h(b.nTable).children("tfoot").remove(),b.nTable.appendChild(b.nTFoot));b.nTable.parentNode.removeChild(b.nTable);h(b.nTableWrapper).remove();b.aaSorting=[];b.aaSortingFixed=[];P(b);h(T(b)).removeClass(b.asStripeClasses.join(" "));h("th, td",b.nTHead).removeClass([b.oClasses.sSortable,b.oClasses.sSortableAsc,
20846b.oClasses.sSortableDesc,b.oClasses.sSortableNone].join(" "));b.bJUI&&(h("th span."+b.oClasses.sSortIcon+", td span."+b.oClasses.sSortIcon,b.nTHead).remove(),h("th, td",b.nTHead).each(function(){var a=h("div."+b.oClasses.sSortJUIWrapper,this),c=a.contents();h(this).append(c);a.remove()}));!a&&b.nTableReinsertBefore?c.insertBefore(b.nTable,b.nTableReinsertBefore):a||c.appendChild(b.nTable);i=0;for(f=b.aoData.length;i<f;i++)null!==b.aoData[i].nTr&&d.appendChild(b.aoData[i].nTr);!0===b.oFeatures.bAutoWidth&&
20847(b.nTable.style.width=q(b.sDestroyWidth));if(f=b.asDestroyStripes.length){a=h(d).children("tr");for(i=0;i<f;i++)a.filter(":nth-child("+f+"n + "+i+")").addClass(b.asDestroyStripes[i])}i=0;for(f=j.settings.length;i<f;i++)j.settings[i]==b&&j.settings.splice(i,1);e=b=null};this.fnDraw=function(a){var b=s(this[j.ext.iApiIndex]);!1===a?(y(b),x(b)):aa(b)};this.fnFilter=function(a,b,c,d,e,f){var g=s(this[j.ext.iApiIndex]);if(g.oFeatures.bFilter){if(c===n||null===c)c=!1;if(d===n||null===d)d=!0;if(e===n||null===
20848e)e=!0;if(f===n||null===f)f=!0;if(b===n||null===b){if(K(g,{sSearch:a+"",bRegex:c,bSmart:d,bCaseInsensitive:f},1),e&&g.aanFeatures.f){b=g.aanFeatures.f;c=0;for(d=b.length;c<d;c++)try{b[c]._DT_Input!=l.activeElement&&h(b[c]._DT_Input).val(a)}catch(o){h(b[c]._DT_Input).val(a)}}}else h.extend(g.aoPreSearchCols[b],{sSearch:a+"",bRegex:c,bSmart:d,bCaseInsensitive:f}),K(g,g.oPreviousSearch,1)}};this.fnGetData=function(a,b){var c=s(this[j.ext.iApiIndex]);if(a!==n){var d=a;if("object"===typeof a){var e=a.nodeName.toLowerCase();
20849"tr"===e?d=I(c,a):"td"===e&&(d=I(c,a.parentNode),b=fa(c,d,a))}return b!==n?v(c,d,b,""):c.aoData[d]!==n?c.aoData[d]._aData:null}return Z(c)};this.fnGetNodes=function(a){var b=s(this[j.ext.iApiIndex]);return a!==n?b.aoData[a]!==n?b.aoData[a].nTr:null:T(b)};this.fnGetPosition=function(a){var b=s(this[j.ext.iApiIndex]),c=a.nodeName.toUpperCase();return"TR"==c?I(b,a):"TD"==c||"TH"==c?(c=I(b,a.parentNode),a=fa(b,c,a),[c,R(b,a),a]):null};this.fnIsOpen=function(a){for(var b=s(this[j.ext.iApiIndex]),c=0;c<
20850b.aoOpenRows.length;c++)if(b.aoOpenRows[c].nParent==a)return!0;return!1};this.fnOpen=function(a,b,c){var d=s(this[j.ext.iApiIndex]),e=T(d);if(-1!==h.inArray(a,e)){this.fnClose(a);var e=l.createElement("tr"),f=l.createElement("td");e.appendChild(f);f.className=c;f.colSpan=t(d);"string"===typeof b?f.innerHTML=b:h(f).html(b);b=h("tr",d.nTBody);-1!=h.inArray(a,b)&&h(e).insertAfter(a);d.aoOpenRows.push({nTr:e,nParent:a});return e}};this.fnPageChange=function(a,b){var c=s(this[j.ext.iApiIndex]);qa(c,a);
20851y(c);(b===n||b)&&x(c)};this.fnSetColumnVis=function(a,b,c){var d=s(this[j.ext.iApiIndex]),e,f,g=d.aoColumns,h=d.aoData,o,m;if(g[a].bVisible!=b){if(b){for(e=f=0;e<a;e++)g[e].bVisible&&f++;m=f>=t(d);if(!m)for(e=a;e<g.length;e++)if(g[e].bVisible){o=e;break}e=0;for(f=h.length;e<f;e++)null!==h[e].nTr&&(m?h[e].nTr.appendChild(h[e]._anHidden[a]):h[e].nTr.insertBefore(h[e]._anHidden[a],J(d,e)[o]))}else{e=0;for(f=h.length;e<f;e++)null!==h[e].nTr&&(o=J(d,e)[a],h[e]._anHidden[a]=o,o.parentNode.removeChild(o))}g[a].bVisible=
20852b;W(d,d.aoHeader);d.nTFoot&&W(d,d.aoFooter);e=0;for(f=d.aoOpenRows.length;e<f;e++)d.aoOpenRows[e].nTr.colSpan=t(d);if(c===n||c)k(d),x(d);ra(d)}};this.fnSettings=function(){return s(this[j.ext.iApiIndex])};this.fnSort=function(a){var b=s(this[j.ext.iApiIndex]);b.aaSorting=a;O(b)};this.fnSortListener=function(a,b,c){ia(s(this[j.ext.iApiIndex]),a,b,c)};this.fnUpdate=function(a,b,c,d,e){var f=s(this[j.ext.iApiIndex]),b="object"===typeof b?I(f,b):b;if(h.isArray(a)&&c===n){f.aoData[b]._aData=a.slice();
20853for(c=0;c<f.aoColumns.length;c++)this.fnUpdate(v(f,b,c),b,c,!1,!1)}else if(h.isPlainObject(a)&&c===n){f.aoData[b]._aData=h.extend(!0,{},a);for(c=0;c<f.aoColumns.length;c++)this.fnUpdate(v(f,b,c),b,c,!1,!1)}else{F(f,b,c,a);var a=v(f,b,c,"display"),g=f.aoColumns[c];null!==g.fnRender&&(a=S(f,b,c),g.bUseRendered&&F(f,b,c,a));null!==f.aoData[b].nTr&&(J(f,b)[c].innerHTML=a)}c=h.inArray(b,f.aiDisplay);f.asDataSearch[c]=na(f,Y(f,b,"filter",r(f,"bSearchable")));(e===n||e)&&k(f);(d===n||d)&&aa(f);return 0};
20854this.fnVersionCheck=j.ext.fnVersionCheck;this.oApi={_fnExternApiFunc:Va,_fnInitialise:ba,_fnInitComplete:$,_fnLanguageCompat:pa,_fnAddColumn:o,_fnColumnOptions:m,_fnAddData:H,_fnCreateTr:ea,_fnGatherData:ua,_fnBuildHead:va,_fnDrawHead:W,_fnDraw:x,_fnReDraw:aa,_fnAjaxUpdate:wa,_fnAjaxParameters:Ea,_fnAjaxUpdateDraw:Fa,_fnServerParams:ka,_fnAddOptionsHtml:
20854xa,_fnFeatureHtmlTable:Ba,_fnScrollDraw:La,_fnAdjustColumnSizing:k,_fnFeatureHtmlFilter:za,_fnFilterComplete:K,_fnFilterCustom:Ia,_fnFilterColumn:Ha,
20855_fnFilter:Ga,_fnBuildSearchArray:la,_fnBuildSearchRow:na,_fnFilterCreateSearch:ma,_fnDataToSearch:Ja,_fnSort:O,_fnSortAttachListener:ia,_fnSortingClasses:P,_fnFeatureHtmlPaginate:Da,_fnPageChange:qa,_fnFeatureHtmlInfo:Ca,_fnUpdateInfo:Ka,_fnFeatureHtmlLength:ya,_fnFeatureHtmlProcessing:Aa,_fnProcessingDisplay:E,_fnVisibleToColumnIndex:G,_fnColumnIndexToVisible:R,_fnNodeToDataIndex:I,_fnVisbleColumns:t,_fnCalculateEnd:y,_fnConvertToWidth:Ma,_fnCalculateColumnWidths:da,_fnScrollingWidthAdjust:Oa,_fnGetWidestNode:Na,
20856_fnGetMaxLenString:Pa,_fnStringToCss:q,_fnDetectType:B,_fnSettingsFromNode:s,_fnGetDataMaster:Z,_fnGetTrNodes:T,_fnGetTdNodes:J,_fnEscapeRegex:oa,_fnDeleteIndex:ha,_fnReOrderIndex:u,_fnColumnOrdering:M,_fnLog:D,_fnClearTable:ga,_fnSaveState:ra,_fnLoadState:Sa,_fnCreateCookie:function(a,b,c,d,e){var f=new Date;f.setTime(f.getTime()+1E3*c);var c=X.location.pathname.split("/"),a=a+"_"+c.pop().replace(/[\/:]/g,"").toLowerCase(),g;null!==e?(g="function"===typeof h.parseJSON?h.parseJSON(b):eval("("+b+")"),
20857b=e(a,g,f.toGMTString(),c.join("/")+"/")):b=a+"="+encodeURIComponent(b)+"; expires="+f.toGMTString()+"; path="+c.join("/")+"/";a=l.cookie.split(";");e=b.split(";")[0].length;f=[];if(4096<e+l.cookie.length+10){for(var j=0,o=a.length;j<o;j++)if(-1!=a[j].indexOf(d)){var k=a[j].split("=");try{(g=eval("("+decodeURIComponent(k[1])+")"))&&g.iCreate&&f.push({name:k[0],time:g.iCreate})}catch(m){}}for(f.sort(function(a,b){return b.time-a.time});4096<e+l.cookie.length+10;){if(0===f.length)return;d=f.pop();l.cookie=
20858d.name+"=; expires=Thu, 01-Jan-1970 00:00:01 GMT; path="+c.join("/")+"/"}}l.cookie=b},_fnReadCookie:function(a){for(var b=X.location.pathname.split("/"),a=a+"_"+b[b.length-1].replace(/[\/:]/g,"").toLowerCase()+"=",b=l.cookie.split(";"),c=0;c<b.length;c++){for(var d=b[c];" "==d.charAt(0);)d=d.substring(1,d.length);if(0===d.indexOf(a))return decodeURIComponent(d.substring(a.length,d.length))}return null},_fnDetectHeader:V,_fnGetUniqueThs:N,_fnScrollBarWidth:Qa,_fnApplyToChildren:C,_fnMap:p,_fnGetRowData:Y,
20859_fnGetCellData:v,_fnSetCellData:F,_fnGetObjectDataFn:Q,_fnSetObjectDataFn:L,_fnApplyColumnDefs:ta,_fnBindAction:Ra,_fnExtend:Ta,_fnCallbackReg:z,_fnCallbackFire:A,_fnJsonString:Wa,_fnRender:S,_fnNodeToColumnIndex:fa,_fnInfoMacros:ja,_fnBrowserDetect:Ua,_fnGetColumns:r};h.extend(j.ext.oApi,this.oApi);for(var sa in j.ext.oApi)sa&&(this[sa]=Va(sa));var ca=this;this.each(function(){var a=0,b,c,d;c=this.getAttribute("id");var i=!1,f=!1;if("table"!=this.nodeName.toLowerCase())D(null,0,"Attempted to initialise DataTables on a node which is not a table: "+
20860this.nodeName);else{a=0;for(b=j.settings.length;a<b;a++){if(j.settings[a].nTable==this){if(e===n||e.bRetrieve)return j.settings[a].oInstance;if(e.bDestroy){j.settings[a].oInstance.fnDestroy();break}else{D(j.settings[a],0,"Cannot reinitialise DataTable.\n\nTo retrieve the DataTables object for this table, pass no arguments or see the docs for bRetrieve and bDestroy");return}}if(j.settings[a].sTableId==this.id){j.settings.splice(a,1);break}}if(null===c||""===c)this.id=c="DataTables_Table_"+j.ext._oExternConfig.iNextUnique++;
20861var g=h.extend(!0,{},j.models.oSettings,{nTable:this,oApi:ca.oApi,oInit:e,sDestroyWidth:h(this).width(),sInstance:c,sTableId:c});j.settings.push(g);g.oInstance=1===ca.length?ca:h(this).dataTable();e||(e={});e.oLanguage&&pa(e.oLanguage);e=Ta(h.extend(!0,{},j.defaults),e);p(g.oFeatures,e,"bPaginate");p(g.oFeatures,e,"bLengthChange");p(g.oFeatures,e,"bFilter");p(g.oFeatures,e,"bSort");p(g.oFeatures,e,"bInfo");p(g.oFeatures,e,"bProcessing");p(g.oFeatures,e,"bAutoWidth");p(g.oFeatures,e,"bSortClasses");
20862p(g.oFeatures,e,"bServerSide");p(g.oFeatures,e,"bDeferRender");p(g.oScroll,e,"sScrollX","sX");p(g.oScroll,e,"sScrollXInner","sXInner");p(g.oScroll,e,"sScrollY","sY");
20862p(g.oScroll,e,"bScrollCollapse","bCollapse");p(g.oScroll,e,"bScrollInfinite","bInfinite");p(g.oScroll,e,"iScrollLoadGap","iLoadGap");p(g.oScroll,e,"bScrollAutoCss","bAutoCss");p(g,e,"asStripeClasses");p(g,e,"asStripClasses","asStripeClasses");p(g,e,"fnServerData");p(g,e,"fnFormatNumber");p(g,e,"sServerMethod");p(g,e,"aaSorting");p(g,
20863e,"aaSortingFixed");p(g,e,"aLengthMenu");p(g,e,"sPaginationType");p(g,e,"sAjaxSource");p(g,e,"sAjaxDataProp");p(g,e,"iCookieDuration");p(g,e,"sCookiePrefix");p(g,e,"sDom");p(g,e,"bSortCellsTop");p(g,e,"iTabIndex");p(g,e,"oSearch","oPreviousSearch");p(g,e,"aoSearchCols","aoPreSearchCols");p(g,e,"iDisplayLength","_iDisplayLength");p(g,e,"bJQueryUI","bJUI");p(g,e,"fnCookieCallback");p(g,e,"fnStateLoad");p(g,e,"fnStateSave");p(g.oLanguage,e,"fnInfoCallback");z(g,"aoDrawCallback",e.fnDrawCallback,"user");
20864z(g,"aoServerParams",e.fnServerParams,"user");z(g,"aoStateSaveParams",e.fnStateSaveParams,"user");z(g,"aoStateLoadParams",e.fnStateLoadParams,"user");z(g,"aoStateLoaded",e.fnStateLoaded,"user");z(g,"aoRowCallback",e.fnRowCallback,"user");z(g,"aoRowCreatedCallback",e.fnCreatedRow,"user");z(g,"aoHeaderCallback",e.fnHeaderCallback,"user");z(g,"aoFooterCallback",e.fnFooterCallback,"user");z(g,"aoInitComplete",e.fnInitComplete,"user");z(g,"aoPreDrawCallback",e.fnPreDrawCallback,"user");g.oFeatures.bServerSide&&
20865g.oFeatures.bSort&&g.oFeatures.bSortClasses?z(g,"aoDrawCallback",P,"server_side_sort_classes"):g.oFeatures.bDeferRender&&z(g,"aoDrawCallback",P,"defer_sort_classes");e.bJQueryUI?(h.extend(g.oClasses,j.ext.oJUIClasses),e.sDom===j.defaults.sDom&&"lfrtip"===j.defaults.sDom&&(g.sDom='<"H"lfr>t<"F"ip>')):h.extend(g.oClasses,j.ext.oStdClasses);h(this).addClass(g.oClasses.sTable);if(""!==g.oScroll.sX||""!==g.oScroll.sY)g.oScroll.iBarWidth=Qa();g.iInitDisplayStart===n&&(g.iInitDisplayStart=e.iDisplayStart,
20866g._iDisplayStart=e.iDisplayStart);e.bStateSave&&(g.oFeatures.bStateSave=!0,Sa(g,e),z(g,"aoDrawCallback",ra,"state_save"));null!==e.iDeferLoading&&(g.bDeferLoading=!0,a=h.isArray(e.iDeferLoading),g._iRecordsDisplay=a?e.iDeferLoading[0]:e.iDeferLoading,g._iRecordsTotal=a?e.iDeferLoading[1]:e.iDeferLoading);null!==e.aaData&&(f=!0);""!==e.oLanguage.sUrl?(g.oLanguage.sUrl=e.oLanguage.sUrl,h.getJSON(g.oLanguage.sUrl,null,function(a){pa(a);h.extend(true,g.oLanguage,e.oLanguage,a);ba(g)}),i=!0):h.extend(!0,
20867g.oLanguage,e.oLanguage);null===e.asStripeClasses&&(g.asStripeClasses=[g.oClasses.sStripeOdd,g.oClasses.sStripeEven]);b=g.asStripeClasses.length;g.asDestroyStripes=[];if(b){c=!1;d=h(this).children("tbody").children("tr:lt("+b+")");for(a=0;a<b;a++)d.hasClass(g.asStripeClasses[a])&&(c=!0,g.asDestroyStripes.push(g.asStripeClasses[a]));c&&d.removeClass(g.asStripeClasses.join(" "))}c=[];a=this.getElementsByTagName("thead");0!==a.length&&(V(g.aoHeader,a[0]),c=N(g));if(null===e.aoColumns){d=[];a=0;for(b=
20868c.length;a<b;a++)d.push(null)}else d=e.aoColumns;a=0;for(b=d.length;a<b;a++)e.saved_aoColumns!==n&&e.saved_aoColumns.length==b&&(null===d[a]&&(d[a]={}),d[a].bVisible=e.saved_aoColumns[a].bVisible),o(g,c?c[a]:null);ta(g,e.aoColumnDefs,d,function(a,b){m(g,a,b)});a=0;for(b=g.aaSorting.length;a<b;a++){g.aaSorting[a][0]>=g.aoColumns.length&&(g.aaSorting[a][0]=0);var k=g.aoColumns[g.aaSorting[a][0]];g.aaSorting[a][2]===n&&(g.aaSorting[a][2]=0);e.aaSorting===n&&g.saved_aaSorting===n&&(g.aaSorting[a][1]=
20869k.asSorting[0]);c=0;for(d=k.asSorting.length;c<d;c++)if(g.aaSorting[a][1]==k.asSorting[c]){g.aaSorting[a][2]=c;break}}P(g);Ua(g);a=h(this).children("caption").each(function(){this._captionSide=h(this).css("caption-side")});b=h(this).children("thead");0===b.length&&(b=[l.createElement("thead")],this.appendChild(b[0]));g.nTHead=b[0];b=h(this).children("tbody");0===b.length&&(b=[l.createElement("tbody")],this.appendChild(b[0]));g.nTBody=b[0];g.nTBody.setAttribute("role","alert");g.nTBody.setAttribute("aria-live",
20870"polite");g.nTBody.setAttribute("aria-relevant","all");b=h(this).children("tfoot");if(0===b.length&&0<a.length&&(""!==g.oScroll.sX||""!==g.oScroll.sY))b=[l.createElement("tfoot")],this.appendChild(b[0]);0<b.length&&(g.nTFoot=b[0],V(g.aoFooter,g.nTFoot));if(f)for(a=0;a<e.aaData.length;a++)H(g,e.aaData[a]);else ua(g);g.aiDisplay=g.aiDisplayMaster.slice();g.bInitialised=!0;!1===i&&ba(g)}});ca=null;return this};j.fnVersionCheck=function(e){for(var h=function(e,h){for(;e.length<h;)e+="0";return e},m=j.ext.sVersion.split("."),
20871e=e.split("."),k="",n="",l=0,t=e.length;l<t;l++)k+=h(m[l],3),n+=h(e[l],3);return parseInt(k,10)>=parseInt(n,10)};j.fnIsDataTable=function(e){for(var h=j.settings,m=0;m<h.length;m++)if(h[m].nTable===e||h[m].nScrollHead===e||h[m].nScrollFoot===e)return!0;return!1};j.fnTables=function(e){var o=[];jQuery.each(j.settings,function(j,k){(!e||!0===e&&h(k.nTable).is(":visible"))&&o.push(k.nTable)});return o};j.version="1.9.4";j.settings=[];j.models={};j.models.ext={afnFiltering:[],afnSortData:[],aoFeatures:[],
20872aTypes:[],fnVersionCheck:j.fnVersionCheck,iApiIndex:0,ofnSearch:{},oApi:{},oStdClasses:{},oJUIClasses:{},oPagination:{},oSort:{},sVersion:j.version,sErrMode:"alert",_oExternConfig:{iNextUnique:0}};j.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};j.models.oRow={nTr:null,_aData:[],_aSortData:[],_anHidden:[],_sRowStripe:""};j.models.oColumn={aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bUseRendered:null,bVisible:null,_bAutoType:!0,fnCreatedCell:null,fnGetData:null,
20873fnRender:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,
20873sTitle:null,sType:null,sWidth:null,sWidthOrig:null};j.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bJQueryUI:!1,bLengthChange:!0,
20874bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollAutoCss:!0,bScrollCollapse:!1,bScrollInfinite:!1,bServerSide:!1,bSort:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCookieCallback:null,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(e){if(1E3>e)return e;for(var h=e+"",e=h.split(""),j="",h=h.length,k=0;k<h;k++)0===k%3&&0!==k&&(j=this.oLanguage.sInfoThousands+j),j=e[h-k-1]+j;return j},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,
20875fnRowCallback:null,fnServerData:function(e,j,m,k){k.jqXHR=h.ajax({url:e,data:j,success:function(e){e.sError&&k.oApi._fnLog(k,0,e.sError);h(k.oInstance).trigger("xhr",[k,e]);m(e)},dataType:"json",cache:!1,type:k.sServerMethod,error:function(e,h){"parsererror"==h&&k.oApi._fnLog(k,0,"DataTables warning: JSON data from server could not be parsed. This is caused by a JSON formatting error.")}})},fnServerParams:null,fnStateLoad:function(e){var e=this.oApi._fnReadCookie(e.sCookiePrefix+e.sInstance),j;try{j=
20876"function"===typeof h.parseJSON?h.parseJSON(e):eval("("+e+")")}catch(m){j=null}return j},fnStateLoadParams:null,fnStateLoaded:null,fnStateSave:function(e,h){this.oApi._fnCreateCookie(e.sCookiePrefix+e.sInstance,this.oApi._fnJsonString(h),e.iCookieDuration,e.sCookiePrefix,e.fnCookieCallback)},fnStateSaveParams:null,iCookieDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iScrollLoadGap:100,iTabIndex:0,oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},
20877oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sInfoThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sUrl:"",sZeroRecords:"No matching records found"},oSearch:h.extend({},j.models.oSearch),sAjaxDataProp:"aaData",
20878sAjaxSource:null,sCookiePrefix:"SpryMedia_DataTables_",sDom:"lfrtip",sPaginationType:"two_button",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET"};j.defaults.columns={aDataSort:null,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bUseRendered:!0,bVisible:!0,fnCreatedCell:null,fnRender:null,iDataSort:-1,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};j.models.oSettings={oFeatures:{bAutoWidth:null,
20879bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortClasses:null,bStateSave:null},oScroll:{bAutoCss:null,bCollapse:null,bInfinite:null,iBarWidth:0,iLoadGap:null,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1},aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aoColumns:[],aoHeader:[],aoFooter:[],asDataSearch:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:null,
20880asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,sPaginationType:"two_button",iCookieDuration:0,sCookiePrefix:"",fnCookieCallback:null,aoStateSave:[],aoStateLoad:[],
20881oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iDisplayEnd:10,_iRecordsTotal:0,_iRecordsDisplay:0,bJUI:null,oClasse
20881s:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return this.oFeatures.bServerSide?parseInt(this._iRecordsTotal,10):this.aiDisplayMaster.length},
20882fnRecordsDisplay:function(){return this.oFeatures.bServerSide?parseInt(this._iRecordsDisplay,10):this.aiDisplay.length},fnDisplayEnd:function(){return this.oFeatures.bServerSide?!1===this.oFeatures.bPaginate||-1==this._iDisplayLength?this._iDisplayStart+this.aiDisplay.length:Math.min(this._iDisplayStart+this._iDisplayLength,this._iRecordsDisplay):this._iDisplayEnd},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null};j.ext=h.extend(!0,{},j.models.ext);h.extend(j.ext.oStdClasses,
20883{sTable:"dataTable",sPagePrevEnabled:"paginate_enabled_previous",sPagePrevDisabled:"paginate_disabled_previous",sPageNextEnabled:"paginate_enabled_next",sPageNextDisabled:"paginate_disabled_next",sPageJUINext:"",sPageJUIPrev:"",sPageButton:"paginate_button",sPageButtonActive:"paginate_active",sPageButtonStaticDisabled:"paginate_button paginate_button_disabled",sPageFirst:"first",sPagePrevious:"previous",sPageNext:"next",sPageLast:"last",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty",
20884sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",
20885sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sFooterTH:"",sJUIHeader:"",sJUIFooter:""});h.extend(j.ext.oJUIClasses,j.ext.oStdClasses,{sPagePrevEnabled:"fg-button ui-button ui-state-default ui-corner-left",sPagePrevDisabled:"fg-button ui-button ui-state-default ui-corner-left ui-state-disabled",sPageNextEnabled:"fg-button ui-button ui-state-default ui-corner-right",
20886sPageNextDisabled:"fg-button ui-button ui-state-default ui-corner-right ui-state-disabled",sPageJUINext:"ui-icon ui-icon-circle-arrow-e",sPageJUIPrev:"ui-icon ui-icon-circle-arrow-w",sPageButton:"fg-button ui-button ui-state-default",sPageButtonActive:"fg-button ui-button ui-state-default ui-state-disabled",sPageButtonStaticDisabled:"fg-button ui-button ui-state-default ui-state-disabled",sPageFirst:"first ui-corner-tl ui-corner-bl",sPageLast:"last ui-corner-tr ui-corner-br",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",
20887sSortAsc:"ui-state-default",sSortDesc:"ui-state-default",sSortable:"ui-state-default",sSortableAsc:"ui-state-default",sSortableDesc:"ui-state-default",sSortableNone:"ui-state-default",sSortJUIAsc:"css_right ui-icon ui-icon-triangle-1-n",sSortJUIDesc:"css_right ui-icon ui-icon-triangle-1-s",sSortJUI:"css_right ui-icon ui-icon-carat-2-n-s",sSortJUIAscAllowed:"css_right ui-icon ui-icon-carat-1-n",sSortJUIDescAllowed:"css_right ui-icon ui-icon-carat-1-s",sSortJUIWrapper:"DataTables_sort_wrapper",sSortIcon:"DataTables_sort_icon",
20888sScrollHead:"dataTables_scrollHead ui-state-default",sScrollFoot:"dataTables_scrollFoot ui-state-default",sFooterTH:"ui-state-default",sJUIHeader:"fg-toolbar ui-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix",sJUIFooter:"fg-toolbar ui-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix"});h.extend(j.ext.oPagination,{two_button:{fnInit:function(e,j,m){var k=e.oLanguage.oPaginate,n=function(h){e.oApi._fnPageChange(e,h.data.action)&&m(e)},k=!e.bJUI?'<a class="'+
20889e.oClasses.sPagePrevDisabled+'" tabindex="'+e.iTabIndex+'" role="button">'+k.sPrevious+'</a><a class="'+e.oClasses.sPageNextDisabled+'" tabindex="'+e.iTabIndex+'" role="button">'+k.sNext+"</a>
20889":'<a class="'+e.oClasses.sPagePrevDisabled+'" tabindex="'+e.iTabIndex+'" role="button"><span class="'+e.oClasses.sPageJUIPrev+'"></span></a><a class="'+e.oClasses.sPageNextDisabled+'" tabindex="'+e.iTabIndex+'" role="button"><span class="'+e.oClasses.sPageJUINext+'"></span></a>';h(j).append(k);var l=h("a",j),
20890k=l[0],l=l[1];e.oApi._fnBindAction(k,{action:"previous"},n);e.oApi._fnBindAction(l,{action:"next"},n);e.aanFeatures.p||(j.id=e.sTableId+"_paginate",k.id=e.sTableId+"_previous",l.id=e.sTableId+"_next",k.setAttribute("aria-controls",e.sTableId),l.setAttribute("aria-controls",e.sTableId))},fnUpdate:function(e){if(e.aanFeatures.p)for(var h=e.oClasses,j=e.aanFeatures.p,k,l=0,n=j.length;l<n;l++)if(k=j[l].firstChild)k.className=0===e._iDisplayStart?h.sPagePrevDisabled:h.sPagePrevEnabled,k=k.nextSibling,
20891k.className=e.fnDisplayEnd()==e.fnRecordsDisplay()?h.sPageNextDisabled:h.sPageNextEnabled}},iFullNumbersShowPages:5,full_numbers:{fnInit:function(e,j,m){var k=e.oLanguage.oPaginate,l=e.oClasses,n=function(h){e.oApi._fnPageChange(e,h.data.action)&&m(e)};h(j).append('<a  tabindex="'+e.iTabIndex+'" class="'+l.sPageButton+" "+l.sPageFirst+'">'+k.sFirst+'</a><a  tabindex="'+e.iTabIndex+'" class="'+l.sPageButton+" "+l.sPagePrevious+'">'+k.sPrevious+'</a><span></span><a tabindex="'+e.iTabIndex+'" class="'+
20892l.sPageButton+" "+l.sPageNext+'">'+k.sNext+'</a><a tabindex="'+e.iTabIndex+'" class="'+l.sPageButton+" "+l.sPageLast+'">'+k.sLast+"</a>");var t=h("a",j),k=t[0],l=t[1],r=t[2],t=t[3];e.oApi._fnBindAction(k,{action:"first"},n);e.oApi._fnBindAction(l,{action:"previous"},n);e.oApi._fnBindAction(r,{action:"next"},n);e.oApi._fnBindAction(t,{action:"last"},n);e.aanFeatures.p||(j.id=e.sTableId+"_paginate",k.id=e.sTableId+"_first",l.id=e.sTableId+"_previous",r.id=e.sTableId+"_next",t.id=e.sTableId+"_last")},
20893fnUpdate:function(e,o){if(e.aanFeatures.p){var m=j.ext.oPagination.iFullNumbersShowPages,k=Math.floor(m/2),l=Math.ceil(e.fnRecordsDisplay()/e._iDisplayLength),n=Math.ceil(e._iDisplayStart/e._iDisplayLength)+1,t="",r,B=e.oClasses,u,M=e.aanFeatures.p,L=function(h){e.oApi._fnBindAction(this,{page:h+r-1},function(h){e.oApi._fnPageChange(e,h.data.page);o(e);h.preventDefault()})};-1===e._iDisplayLength?n=k=r=1:l<m?(r=1,k=l):n<=k?(r=1,k=m):n>=l-k?(r=l-m+1,k=l):(r=n-Math.ceil(m/2)+1,k=r+m-1);for(m=r;m<=k;m++)t+=
20894n!==m?'<a tabindex="'+e.iTabIndex+'" class="'+B.sPageButton+'">'+e.fnFormatNumber(m)+"</a>":'<a tabindex="'+e.iTabIndex+'" class="'+B.sPageButtonActive+'">'+e.fnFormatNumber(m)+"</a>";m=0;for(k=M.length;m<k;m++)u=M[m],u.hasChildNodes()&&(h("span:eq(0)",u).html(t).children("a").each(L),u=u.getElementsByTagName("a"),u=[u[0],u[1],u[u.length-2],u[u.length-1]],h(u).removeClass(B.sPageButton+" "+B.sPageButtonActive+" "+B.sPageButtonStaticDisabled),h([u[0],u[1]]).addClass(1==n?B.sPageButtonStaticDisabled:
20895B.sPageButton),h([u[2],u[3]]).addClass(0===l||n===l||-1===e._iDisplayLength?B.sPageButtonStaticDisabled:B.sPageButton))}}}});h.extend(j.ext.oSort,{"string-pre":function(e){"string"!=typeof e&&(e=null!==e&&e.toString?e.toString():"");return e.toLowerCase()},"string-asc":function(e,h){return e<h?-1:e>h?1:0},"string-desc":function(e,h){return e<h?1:e>h?-1:0},"html-pre":function(e){return e.replace(/<.*?>/g,"").toLowerCase()},"html-asc":function(e,h){return e<h?-1:e>h?1:0},"html-desc":function(e,h){return e<
20896h?1:e>h?-1:0},"date-pre":function(e){e=Date.parse(e);if(isNaN(e)||""===e)e=Date.parse("01/01/1970 00:00:00");return e},"date-asc":function(e,h){return e-h},"date-desc":function(e,h){return h-e},"numeric-pre":function(e){return"-"==e||""===e?0:1*e},"numeric-asc":function(e,h){return e-h},"numeric-desc":function(e,h){return h-e}});h.extend(j.ext.aTypes,[function(e){if("number"===typeof e)return"numeric";if("string"!==typeof e)return null;var h,j=!1;h=e.charAt(0);if(-1=="0123456789-".indexOf(h))return null;
20897for(var k=1;k<e.length;k++){h=e.charAt(k);if(-1=="0123456789.".indexOf(h))return null;if("."==h){if(j)return null;j=!0}}return"numeric"},function(e){var h=Date.parse(e);return null!==h&&!isNaN(h)||"string"===typeof e&&0===e.length?"date":null},function(e){return"string"===typeof e&&-1!=e.indexOf("<")&&-1!=e.indexOf(">")?"html":null}]);h.fn.DataTable=j;h.fn.dataTable=j;h.fn.dataTableSettings=j.settings;h.fn.dataTableExt=j.ext};"function"===typeof define&&define.amd?define(["jquery"],L):jQuery&&!jQuery.fn.dataTable&&
20898L(jQuery)})(window,document);
20899$(document).ready(function () {
20900    var therapeutic_area,specialty;
20901	function getSpecialityData(account){
20902            if (account && account.data) {
20903                therapeutic_area = account.data.therapeutic_area;
20904                specialty = account.data.specialty;
20905            } else {
20906                var sciencePreferences = $.cookie("m_prefs") ? JSON.parse($.cookie("m_prefs")) : {};
20907                therapeutic_area = sciencePreferences.therapeuticarea;
20908                specialty = sciencePreferences.specialty;
20909            }
20910        }
20911
20912    if(typeof gigya !== 'undefined' && gigya.accounts && typeof(gigya.accounts.getAccountInfo) == "function"){
20913        window.gigya.accounts.getAccountInfo({
20914            callback: getSpecialityData
20915        });
20916    }
20917    $(document).on('click', "#feedback-survey-form .feedback-submit", function (event) {
20918        event.preventDefault();
20919        let radioObj = {};
20920        let checkboxObj = {};
20921        let surveyForm = document.getElementById('feedback-survey-form');
20922        let radio = document.querySelectorAll('.feedback-form-options--radio .feedback-form-options__field--radio:checked');
20923        let radioM = document.querySelectorAll('.feedback-form-options--radio');
20924        let checkbox = document.querySelectorAll('.feedback-form-options--checkbox .feedback-form-options__field--checkbox:checked');
20925        let checkboxM = document.querySelectorAll('.feedback-form-options--checkbox');
20926        let feedBackPage = document.querySelector('input[name=":redirect"]');
20927        let feedBackPageLink;
20928        if (feedBackPage) {
20929            feedBackPageLink = feedBackPage.value;
20930        }
20931        if (checkboxM.length > 0) {
20932            for (let i = 0; i < checkboxM.length; i++) {
20933                let selected = false;
20934                let checkStr = "";
20935                let temp = checkboxM[i].children[1].children[0].getAttribute('name');
20936                checkboxObj[temp] = "";
20937                for (let j = 0; j < checkbox.length; j++) {
20938                    if (temp == checkbox[j].getAttribute('name')) {
20939                        checkStr += checkbox[j].value + ";";
20940                        selected = true;
20941                    }
20942                }
20943                checkStr = checkStr.slice(0, -1);
20944                if (selected) {
20945                    checkboxObj[temp] = checkStr;
20946                }
20947            }
20948        }
20949
20950        if (radioM.length > 0) {
20951            for (let i = 0; i < radioM.length; i++) {
20952                let tempw = radioM[i].children[1].children[0].getAttribute('name');
20953                radioObj[tempw] = "";
20954                for (let j = 0; j < radio.length; j++) {
20955                    if (tempw == radio[j].getAttribute('name')) {
20956                        radioObj[tempw] = radio[j].value;
20957                    }
20958                }
20959            }
20960        }
20961
20962
20963
20964
20965
20966        let radioqna = "";
20967        let checkboxqna = "";
20968        let radioQuestions = "";
20969        let checkboxQuestions = "";
20970        let radioAnswers = "";
20971        let checkboxAnswers = "";
20972        let therapyPage = "";
20973
20974        therapyPage = $('.feedback-btn').attr('data-page');
20975        therapyPage = therapyPage?therapyPage:"empty";
20976
20977        for (let prop in radioObj) {
20978            radioQuestions += prop + "|";
20979            if (radioObj[prop]) {
20980                radioqna += prop + ":" + radioObj[prop] + "|";
20981                radioAnswers += radioObj[prop] + "|";
20982            } else {
20983                radioqna += prop + ":" + "empty" + "|";
20984                radioAnswers += "empty" + "|";
20985            }
20986
20987        }
20988        for (let prop in checkboxObj) {
20989            checkboxQuestions += prop + "|";
20990            if (checkboxObj[prop]) {
20991                checkboxqna += prop + ":" + checkboxObj[prop].replaceAll(';', ',') + "|";
20992
20993                checkboxAnswers += checkboxObj[prop].replaceAll(';', ',') + "|";
20994            } else {
20995                checkboxqna += prop + ":" + "empty" + "|";
20996                checkboxAnswers += "empty" + "|";
20997            }
20998
20999        }
21000
21001        radioQuestions = radioQuestions.slice(0, -1);
21002        checkboxQuestions = checkboxQuestions.slice(0, -1);
21003        radioAnswers = radioAnswers.slice(0, -1);
21004        checkboxAnswers = checkboxAnswers.slice(0, -1);
21005        radioqna = radioqna.slice(0, -1);
21006        checkboxqna = checkboxqna.slice(0, -1);
21007
21008        console.log(radioObj);
21009        console.log(checkboxObj);
21010        console.log(`${checkboxQuestions}`);
21011        console.log(`${radioQuestions}`);
21012        console.log(`${radioAnswers}`);
21013        console.log(`${checkboxAnswers}`);
21014        console.log(`${radioqna}`);
21015        console.log(`${checkboxqna}`);
21016        console.log(`${therapyPage}`);
21017
21018        if(!therapeutic_area) {
21019			getSpecialityData();
21020		}
21021        const isInModal = $(this).closest('.modal-body').length > 0;
21022        
21023        if (typeof _satellite !== 'undefined' && _satellite) {
21024            _satellite.track('ISFeedbackRadio', { qna: radioqna, qnas: checkboxqna});
21025            if(therapeutic_area && specialty){
21026                _satellite.track('feedbackSubmit', {"TA": therapeutic_area, "specialty": specialty}); // this code will pass the TA and Speciality fields
21027            }
21028        }
21029        if($('#buildeasylocalepage').length > 0) {
21030            if (typeof _satellite !== 'undefined' && _satellite) {
21031            _satellite.track('health_ques1', { ques: radioQuestions, ans: radioAnswers, qna: radioqna,therapy:therapyPage });
21032            _satellite.track('health_ques2', { ques: checkboxQuestions, ans: checkboxAnswers, qna: checkboxqna,therapy:therapyPage });
21033            _satellite.track('formSuccess');        	}
21034        	document.querySelectorAll('#genericLightbox').forEach(function(el) {
21035                var modal = bootstrap.Modal.getInstance(el) || new bootstrap.Modal(el);
21036                modal.hide();
21037            });
21038        } else {
21039           
21040            if(isInModal) {                if( $('.feedback-success-btn').length > 0) {
21041                    $('.feedback-success-btn').trigger('click');
21042                    $('body').addClass('feedback-success-msg');
21043                }
21044                document.querySelectorAll('#genericLightbox').forEach(function(el) {
21045                    var modal = bootstrap.Modal.getInstance(el) || new bootstrap.Modal(el);
21046                    modal.hide();
21047                });
21048            } else {
21049                window.close();
21050            }
21051        }
21052        surveyForm.reset();
21053        /*if(feedBackPageLink && surveyForm != null){
21054            surveyForm.reset();
21055            window.location.href = feedBackPageLink;
21056        }
21057        else{
21058            window.location.replace(window.location);
21059        }*/
21060
21061    });    $(document).on('click', "#feedback-survey-form .feedback-cancel", function () {
21062        let surveyForm = document.getElementById('feedback-survey-form');
21063        surveyForm.reset();
21064        document.querySelectorAll('#genericLightbox').forEach(function(el) {
21065            var modal = bootstrap.Modal.getInstance(el) || new bootstrap.Modal(el);
21066            modal.hide();
21067        });
21068    });
21069    $(document).on('click', "#feedback-survey-form .feedback-close", function () {
21070      let surveyForm = document.getElementById('feedback-survey-form');
21071      surveyForm.reset();
21072      document.querySelectorAll('#genericLightbox').forEach(function(el) {
21073          var modal = bootstrap.Modal.getInstance(el) || new bootstrap.Modal(el);
21074          modal.hide();
21075      });
21076  });
21077    $(document).on('change', "#feedback-survey-form .feedback-form-options__field--radio,#feedback-survey-form .feedback-form-options__field--checkbox", function () {
21078        disableSubmitButton();
21079    });
21080    function disableSubmitButton() {
21081        let radioChecked = document.querySelectorAll('.feedback-form-options--radio .feedback-form-options__field--radio:checked');
21082        let checkboxChecked = document.querySelectorAll('.feedback-form-options--checkbox .feedback-form-options__field--checkbox:checked');
21083        if(radioChecked.length > 0 || checkboxChecked.length > 0){
21084
21085            $('#feedback-survey-form .feedback-submit').removeAttr('disabled');
21086        }
21087        else{
21088            $('#feedback-survey-form .feedback-submit').attr('disabled','true');
21089        }
21090
21091    }
21092    $('#genericLightbox').on('show.bs.modal', function (e) {
21093        if($(this).find('#feedback-survey-form')){
21094            disableSubmitButton();
21095        }
21096    });
21097    $(document).on("click", '.feedback-btn', function () {
21098        $('body').addClass('feedback-modal-open');
21099        
21100    });
21101
21102});
21103
21104

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.