PageSourceSearch

https://aeonfoodstyle.com/wp-content/themes/maxvalu1/html/public/js/index.js?ver=1.0.2

js aeonfoodstyle.com collected 2026-10-04 10:44:15 UTC 900,960 bytes, 23,303 lines download raw bytes

1/******/ (function() { // webpackBootstrap
2/******/ 	var __webpack_modules__ = ({
3
vendor: 10,900 bytes, lines 4-270
4/***/ "./node_modules/body-scroll-lock/lib/bodyScrollLock.es6.js":
5/*!*****************************************************************!*\
6  !*** ./node_modules/body-scroll-lock/lib/bodyScrollLock.es6.js ***!
7  \*****************************************************************/
8/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
9
10"use strict";
11__webpack_require__.r(__webpack_exports__);
12/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13/* harmony export */   clearAllBodyScrollLocks: function() { return /* binding */ clearAllBodyScrollLocks; },
14/* harmony export */   disableBodyScroll: function() { return /* binding */ disableBodyScroll; },
15/* harmony export */   enableBodyScroll: function() { return /* binding */ enableBodyScroll; }
16/* harmony export */ });
17function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
18function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
19function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
20function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
21function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
22function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
23// Older browsers don't support event options, feature detect it.
24
25// Adopted and modified solution from Bohdan Didukh (2017)
26// https://stackoverflow.com/questions/41594997/ios-10-safari-prevent-scrolling-behind-a-fixed-overlay-and-maintain-scroll-posi
27
28var hasPassiveEvents = false;
29if (typeof window !== 'undefined') {
30  var passiveTestOptions = {
31    get passive() {
32      hasPassiveEvents = true;
33      return undefined;
34    }
35  };
36  window.addEventListener('testPassive', null, passiveTestOptions);
37  window.removeEventListener('testPassive', null, passiveTestOptions);
38}
39var isIosDevice = typeof window !== 'undefined' && window.navigator && window.navigator.platform && (/iP(ad|hone|od)/.test(window.navigator.platform) || window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1);
40var locks = [];
41var documentListenerAdded = false;
42var initialClientY = -1;
43var previousBodyOverflowSetting;
44var previousBodyPosition;
45var previousBodyPaddingRight;
46
47// returns true if `el` should be allowed to receive touchmove events.
48var allowTouchMove = function allowTouchMove(el) {
49  return locks.some(function (lock) {
50    if (lock.options.allowTouchMove && lock.options.allowTouchMove(el)) {
51      return true;
52    }
53    return false;
54  });
55};
56var preventDefault = function preventDefault(rawEvent) {
57  var e = rawEvent || window.event;
58
59  // For the case whereby consumers adds a touchmove event listener to document.
60  // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })
61  // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then
62  // the touchmove event on document will break.
63  if (allowTouchMove(e.target)) {
64    return true;
65  }
66
67  // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).
68  if (e.touches.length > 1) return true;
69  if (e.preventDefault) e.preventDefault();
70  return false;
71};
72var setOverflowHidden = function setOverflowHidden(options) {
73  // If previousBodyPaddingRight is already set, don't set it again.
74  if (previousBodyPaddingRight === undefined) {
75    var reserveScrollBarGap = !!options && options.reserveScrollBarGap === true;
76    var scrollBarGap = window.innerWidth - document.documentElement.clientWidth;
77    if (reserveScrollBarGap && scrollBarGap > 0) {
78      var computedBodyPaddingRight = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right'), 10);
79      previousBodyPaddingRight = document.body.style.paddingRight;
80      document.body.style.paddingRight = "".concat(computedBodyPaddingRight + scrollBarGap, "px");
81    }
82  }
83
84  // If previousBodyOverflowSetting is already set, don't set it again.
85  if (previousBodyOverflowSetting === undefined) {
86    previousBodyOverflowSetting = document.body.style.overflow;
87    document.body.style.overflow = 'hidden';
88  }
89};
90var restoreOverflowSetting = function restoreOverflowSetting() {
91  if (previousBodyPaddingRight !== undefined) {
92    document.body.style.paddingRight = previousBodyPaddingRight;
93
94    // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it
95    // can be set again.
96    previousBodyPaddingRight = undefined;
97  }
98  if (previousBodyOverflowSetting !== undefined) {
99    document.body.style.overflow = previousBodyOverflowSetting;
100
101    // Restore previousBodyOverflowSetting to undefined
102    // so setOverflowHidden knows it can be set again.
103    previousBodyOverflowSetting = undefined;
104  }
105};
106var setPositionFixed = function setPositionFixed() {
107  return window.requestAnimationFrame(function () {
108    // If previousBodyPosition is already set, don't set it again.
109    if (previousBodyPosition === undefined) {
110      previousBodyPosition = {
111        position: document.body.style.position,
112        top: document.body.style.top,
113        left: document.body.style.left
114      };
115
116      // Update the dom inside an animation frame 
117      var _window = window,
118        scrollY = _window.scrollY,
119        scrollX = _window.scrollX,
120        innerHeight = _window.innerHeight;
121      document.body.style.position = 'fixed';
122      document.body.style.top = -scrollY;
123      document.body.style.left = -scrollX;
124      setTimeout(function () {
125        return window.requestAnimationFrame(function () {
126          // Attempt to check if the bottom bar appeared due to the position change
127          var bottomBarHeight = innerHeight - window.innerHeight;
128          if (bottomBarHeight && scrollY >= innerHeight) {
129            // Move the content further up so that the bottom bar doesn't hide it
130            document.body.style.top = -(scrollY + bottomBarHeight);
131          }
132        });
133      }, 300);
134    }
135  });
136};
137var restorePositionSetting = function restorePositionSetting() {
138  if (previousBodyPosition !== undefined) {
139    // Convert the position from "px" to Int
140    var y = -parseInt(document.body.style.top, 10);
141    var x = -parseInt(document.body.style.left, 10);
142
143    // Restore styles
144    document.body.style.position = previousBodyPosition.position;
145    document.body.style.top = previousBodyPosition.top;
146    document.body.style.left = previousBodyPosition.left;
147
148    // Restore scroll
149    window.scrollTo(x, y);
150    previousBodyPosition = undefined;
151  }
152};
153
154// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions
155var isTargetElementTotallyScrolled = function isTargetElementTotallyScrolled(targetElement) {
156  return targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false;
157};
158var handleScroll = function handleScroll(event, targetElement) {
159  var clientY = event.targetTouches[0].clientY - initialClientY;
160  if (allowTouchMove(event.target)) {
161    return false;
162  }
163  if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {
164    // element is at the top of its scroll.
165    return preventDefault(event);
166  }
167  if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {
168    // element is at the bottom of its scroll.
169    return preventDefault(event);
170  }
171  event.stopPropagation();
172  return true;
173};
174var disableBodyScroll = function disableBodyScroll(targetElement, options) {
175  // targetElement must be provided
176  if (!targetElement) {
177    // eslint-disable-next-line no-console
178    console.error('disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.');
179    return;
180  }
181
182  // disableBodyScroll must not have been called on this targetElement before
183  if (locks.some(function (lock) {
184    return lock.targetElement === targetElement;
185  })) {
186    return;
187  }
188  var lock = {
189    targetElement: targetElement,
190    options: options || {}
191  };
192  locks = [].concat(_toConsumableArray(locks), [lock]);
193  if (isIosDevice) {
194    setPositionFixed();
195  } else {
196    setOverflowHidden(options);
197  }
198  if (isIosDevice) {
199    targetElement.ontouchstart = function (event) {
200      if (event.targetTouches.length === 1) {
201        // detect single touch.
202        initialClientY = event.targetTouches[0].clientY;
203      }
204    };
205    targetElement.ontouchmove = function (event) {
206      if (event.targetTouches.length === 1) {
207        // detect single touch.
208        handleScroll(event, targetElement);
209      }
210    };
211    if (!documentListenerAdded) {
212      document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? {
213        passive: false
214      } : undefined);
215      documentListenerAdded = true;
216    }
217  }
218};
219var clearAllBodyScrollLocks = function clearAllBodyScrollLocks() {
220  if (isIosDevice) {
221    // Clear all locks ontouchstart/ontouchmove handlers, and the references.
222    locks.forEach(function (lock) {
223      lock.targetElement.ontouchstart = null;
224      lock.targetElement.ontouchmove = null;
225    });
226    if (documentListenerAdded) {
227      document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? {
228        passive: false
229      } : undefined);
230      documentListenerAdded = false;
231    }
232
233    // Reset initial clientY.
234    initialClientY = -1;
235  }
236  if (isIosDevice) {
237    restorePositionSetting();
238  } else {
239    restoreOverflowSetting();
240  }
241  locks = [];
242};
243var enableBodyScroll = function enableBodyScroll(targetElement) {
244  if (!targetElement) {
245    // eslint-disable-next-line no-console
246    console.error('enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.');
247    return;
248  }
249  locks = locks.filter(function (lock) {
250    return lock.targetElement !== targetElement;
251  });
252  if (isIosDevice) {
253    targetElement.ontouchstart = null;
254    targetElement.ontouchmove = null;
255    if (documentListenerAdded && locks.length === 0) {
256      document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? {
257        passive: false
258      } : undefined);
259      documentListenerAdded = false;
260    }
261  }
262  if (isIosDevice) {
263    restorePositionSetting();
264  } else {
265    restoreOverflowSetting();
266  }
267};
268
269/***/ }),
270
vendor: 50,817 bytes, lines 271-1707
271/***/ "./node_modules/dom7/dom7.esm.js":
272/*!***************************************!*\
273  !*** ./node_modules/dom7/dom7.esm.js ***!
274  \***************************************/
275/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
276
277"use strict";
278__webpack_require__.r(__webpack_exports__);
279/* harmony export */ __webpack_require__.d(__webpack_exports__, {
280/* harmony export */   $: function() { return /* binding */ $; },
281/* harmony export */   add: function() { return /* binding */ add; },
282/* harmony export */   addClass: function() { return /* binding */ addClass; },
283/* harmony export */   animate: function() { return /* binding */ animate; },
284/* harmony export */   animationEnd: function() { return /* binding */ animationEnd; },
285/* harmony export */   append: function() { return /* binding */ append; },
286/* harmony export */   appendTo: function() { return /* binding */ appendTo; },
287/* harmony export */   attr: function() { return /* binding */ attr; },
288/* harmony export */   blur: function() { return /* binding */ blur; },
289/* harmony export */   change: function() { return /* binding */ change; },
290/* harmony export */   children: function() { return /* binding */ children; },
291/* harmony export */   click: function() { return /* binding */ click; },
292/* harmony export */   closest: function() { return /* binding */ closest; },
293/* harmony export */   css: function() { return /* binding */ css; },
294/* harmony export */   data: function() { return /* binding */ data; },
295/* harmony export */   dataset: function() { return /* binding */ dataset; },
296/* harmony export */   detach: function() { return /* binding */ detach; },
297/* harmony export */   each: function() { return /* binding */ each; },
298/* harmony export */   empty: function() { return /* binding */ empty; },
299/* harmony export */   eq: function() { return /* binding */ eq; },
300/* harmony export */   filter: function() { return /* binding */ filter; },
301/* harmony export */   find: function() { return /* binding */ find; },
302/* harmony export */   focus: function() { return /* binding */ focus; },
303/* harmony export */   focusin: function() { return /* binding */ focusin; },
304/* harmony export */   focusout: function() { return /* binding */ focusout; },
305/* harmony export */   hasClass: function() { return /* binding */ hasClass; },
306/* harmony export */   height: function() { return /* binding */ height; },
307/* harmony export */   hide: function() { return /* binding */ hide; },
308/* harmony export */   html: function() { return /* binding */ html; },
309/* harmony export */   index: function() { return /* binding */ index; },
310/* harmony export */   insertAfter: function() { return /* binding */ insertAfter; },
311/* harmony export */   insertBefore: function() { return /* binding */ insertBefore; },
312/* harmony export */   is: function() { return /* binding */ is; },
313/* harmony export */   keydown: function() { return /* binding */ keydown; },
314/* harmony export */   keypress: function() { return /* binding */ keypress; },
315/* harmony export */   keyup: function() { return /* binding */ keyup; },
316/* harmony export */   mousedown: function() { return /* binding */ mousedown; },
317/* harmony export */   mouseenter: function() { return /* binding */ mouseenter; },
318/* harmony export */   mouseleave: function() { return /* binding */ mouseleave; },
319/* harmony export */   mousemove: function() { return /* binding */ mousemove; },
320/* harmony export */   mouseout: function() { return /* binding */ mouseout; },
321/* harmony export */   mouseover: function() { return /* binding */ mouseover; },
322/* harmony export */   mouseup: function() { return /* binding */ mouseup; },
323/* harmony export */   next: function() { return /* binding */ next; },
324/* harmony export */   nextAll: function() { return /* binding */ nextAll; },
325/* harmony export */   off: function() { return /* binding */ off; },
326/* harmony export */   offset: function() { return /* binding */ offset; },
327/* harmony export */   on: function() { return /* binding */ on; },
328/* harmony export */   once: function() { return /* binding */ once; },
329/* harmony export */   outerHeight: function() { return /* binding */ outerHeight; },
330/* harmony export */   outerWidth: function() { return /* binding */ outerWidth; },
331/* harmony export */   parent: function() { return /* binding */ parent; },
332/* harmony export */   parents: function() { return /* binding */ parents; },
333/* harmony export */   prepend: function() { return /* binding */ prepend; },
334/* harmony export */   prependTo: function() { return /* binding */ prependTo; },
335/* harmony export */   prev: function() { return /* binding */ prev; },
336/* harmony export */   prevAll: function() { return /* binding */ prevAll; },
337/* harmony export */   prop: function() { return /* binding */ prop; },
338/* harmony export */   remove: function() { return /* binding */ remove; },
339/* harmony export */   removeAttr: function() { return /* binding */ removeAttr; },
340/* harmony export */   removeClass: function() { return /* binding */ removeClass; },
341/* harmony export */   removeData: function() { return /* binding */ removeData; },
342/* harmony export */   resize: function() { return /* binding */ resize; },
343/* harmony export */   scroll: function() { return /* binding */ scroll; },
344/* harmony export */   scrollLeft: function() { return /* binding */ scrollLeft; },
345/* harmony export */   scrollTo: function() { return /* binding */ scrollTo; },
346/* harmony export */   scrollTop: function() { return /* binding */ scrollTop; },
347/* harmony export */   show: function() { return /* binding */ show; },
348/* harmony export */   siblings: function() { return /* binding */ siblings; },
349/* harmony export */   stop: function() { return /* binding */ stop; },
350/* harmony export */   styles: function() { return /* binding */ styles; },
351/* harmony export */   submit: function() { return /* binding */ submit; },
352/* harmony export */   text: function() { return /* binding */ text; },
353/* harmony export */   toggleClass: function() { return /* binding */ toggleClass; },
354/* harmony export */   touchend: function() { return /* binding */ touchend; },
355/* harmony export */   touchmove: function() { return /* binding */ touchmove; },
356/* harmony export */   touchstart: function() { return /* binding */ touchstart; },
357/* harmony export */   transform: function() { return /* binding */ transform; },
358/* harmony export */   transition: function() { return /* binding */ transition; },
359/* harmony export */   transitionEnd: function() { return /* binding */ transitionEnd; },
360/* harmony export */   transitionStart: function() { return /* binding */ transitionStart; },
361/* harmony export */   trigger: function() { return /* binding */ trigger; },
362/* harmony export */   val: function() { return /* binding */ val; },
363/* harmony export */   value: function() { return /* binding */ value; },
364/* harmony export */   width: function() { return /* binding */ width; }
365/* harmony export */ });
366/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
367function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
368function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
369function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
370function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
371function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
372function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
373function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
374function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
375function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
376function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
377function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
378function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
379function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
380function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
381function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
382function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
383function _wrapNativeSuper(t) { var r = "function" == typeof Map ? new Map() : void 0; return _wrapNativeSuper = function _wrapNativeSuper(t) { if (null === t || !_isNativeFunction(t)) return t; if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function"); if (void 0 !== r) { if (r.has(t)) return r.get(t); r.set(t, Wrapper); } function Wrapper() { return _construct(t, arguments, _getPrototypeOf(this).constructor); } return Wrapper.prototype = Object.create(t.prototype, { constructor: { value: Wrapper, enumerable: !1, writable: !0, configurable: !0 } }), _setPrototypeOf(Wrapper, t); }, _wrapNativeSuper(t); }
384function _construct(t, e, r) { if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); var o = [null]; o.push.apply(o, e); var p = new (t.bind.apply(t, o))(); return r && _setPrototypeOf(p, r.prototype), p; }
385function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
386function _isNativeFunction(t) { try { return -1 !== Function.toString.call(t).indexOf("[native code]"); } catch (n) { return "function" == typeof t; } }
387function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
388function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
389/**
390 * Dom7 4.0.6
391 * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API
392 * https://framework7.io/docs/dom7.html
393 *
394 * Copyright 2023, Vladimir Kharlampidi
395 *
396 * Licensed under MIT
397 *
398 * Released on: February 2, 2023
399 */
400
401
402/* eslint-disable no-proto */
403function makeReactive(obj) {
404  var proto = obj.__proto__;
405  Object.defineProperty(obj, '__proto__', {
406    get: function get() {
407      return proto;
408    },
409    set: function set(value) {
410      proto.__proto__ = value;
411    }
412  });
413}
414var Dom7 = /*#__PURE__*/function (_Array) {
415  function Dom7(items) {
416    var _this;
417    _classCallCheck(this, Dom7);
418    if (typeof items === 'number') {
419      _this = _callSuper(this, Dom7, [items]);
420    } else {
421      _this = _callSuper(this, Dom7, _toConsumableArray(items || []));
422      makeReactive(_assertThisInitialized(_this));
423    }
424    return _assertThisInitialized(_this);
425  }
426  _inherits(Dom7, _Array);
427  return _createClass(Dom7);
428}(/*#__PURE__*/_wrapNativeSuper(Array));
429function arrayFlat() {
430  var arr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
431  var res = [];
432  arr.forEach(function (el) {
433    if (Array.isArray(el)) {
434      res.push.apply(res, _toConsumableArray(arrayFlat(el)));
435    } else {
436      res.push(el);
437    }
438  });
439  return res;
440}
441function arrayFilter(arr, callback) {
442  return Array.prototype.filter.call(arr, callback);
443}
444function arrayUnique(arr) {
445  var uniqueArray = [];
446  for (var i = 0; i < arr.length; i += 1) {
447    if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);
448  }
449  return uniqueArray;
450}
451function toCamelCase(string) {
452  return string.toLowerCase().replace(/-(.)/g, function (match, group) {
453    return group.toUpperCase();
454  });
455}
456
457// eslint-disable-next-line
458
459function qsa(selector, context) {
460  if (typeof selector !== 'string') {
461    return [selector];
462  }
463  var a = [];
464  var res = context.querySelectorAll(selector);
465  for (var i = 0; i < res.length; i += 1) {
466    a.push(res[i]);
467  }
468  return a;
469}
470function $(selector, context) {
471  var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
472  var document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
473  var arr = [];
474  if (!context && selector instanceof Dom7) {
475    return selector;
476  }
477  if (!selector) {
478    return new Dom7(arr);
479  }
480  if (typeof selector === 'string') {
481    var _html = selector.trim();
482    if (_html.indexOf('<') >= 0 && _html.indexOf('>') >= 0) {
483      var toCreate = 'div';
484      if (_html.indexOf('<li') === 0) toCreate = 'ul';
485      if (_html.indexOf('<tr') === 0) toCreate = 'tbody';
486      if (_html.indexOf('<td') === 0 || _html.indexOf('<th') === 0) toCreate = 'tr';
487      if (_html.indexOf('<tbody') === 0) toCreate = 'table';
488      if (_html.indexOf('<option') === 0) toCreate = 'select';
489      var tempParent = document.createElement(toCreate);
490      tempParent.innerHTML = _html;
491      for (var i = 0; i < tempParent.childNodes.length; i += 1) {
492        arr.push(tempParent.childNodes[i]);
493      }
494    } else {
495      arr = qsa(selector.trim(), context || document);
496    } // arr = qsa(selector, document);
497  } else if (selector.nodeType || selector === window || selector === document) {
498    arr.push(selector);
499  } else if (Array.isArray(selector)) {
500    if (selector instanceof Dom7) return selector;
501    arr = selector;
502  }
503  return new Dom7(arrayUnique(arr));
504}
505$.fn = Dom7.prototype;
506
507// eslint-disable-next-line
508
509function addClass() {
510  for (var _len = arguments.length, classes = new Array(_len), _key = 0; _key < _len; _key++) {
511    classes[_key] = arguments[_key];
512  }
513  var classNames = arrayFlat(classes.map(function (c) {
514    return c.split(' ');
515  }));
516  this.forEach(function (el) {
517    var _el$classList;
518    (_el$classList = el.classList).add.apply(_el$classList, _toConsumableArray(classNames));
519  });
520  return this;
521}
522function removeClass() {
523  for (var _len2 = arguments.length, classes = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
524    classes[_key2] = arguments[_key2];
525  }
526  var classNames = arrayFlat(classes.map(function (c) {
527    return c.split(' ');
528  }));
529  this.forEach(function (el) {
530    var _el$classList2;
531    (_el$classList2 = el.classList).remove.apply(_el$classList2, _toConsumableArray(classNames));
532  });
533  return this;
534}
535function toggleClass() {
536  for (var _len3 = arguments.length, classes = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
537    classes[_key3] = arguments[_key3];
538  }
539  var classNames = arrayFlat(classes.map(function (c) {
540    return c.split(' ');
541  }));
542  this.forEach(function (el) {
543    classNames.forEach(function (className) {
544      el.classList.toggle(className);
545    });
546  });
547}
548function hasClass() {
549  for (var _len4 = arguments.length, classes = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
550    classes[_key4] = arguments[_key4];
551  }
552  var classNames = arrayFlat(classes.map(function (c) {
553    return c.split(' ');
554  }));
555  return arrayFilter(this, function (el) {
556    return classNames.filter(function (className) {
557      return el.classList.contains(className);
558    }).length > 0;
559  }).length > 0;
560}
561function attr(attrs, value) {
562  if (arguments.length === 1 && typeof attrs === 'string') {
563    // Get attr
564    if (this[0]) return this[0].getAttribute(attrs);
565    return undefined;
566  } // Set attrs
567
568  for (var i = 0; i < this.length; i += 1) {
569    if (arguments.length === 2) {
570      // String
571      this[i].setAttribute(attrs, value);
572    } else {
573      // Object
574      for (var attrName in attrs) {
575        this[i][attrName] = attrs[attrName];
576        this[i].setAttribute(attrName, attrs[attrName]);
577      }
578    }
579  }
580  return this;
581}
582function removeAttr(attr) {
583  for (var i = 0; i < this.length; i += 1) {
584    this[i].removeAttribute(attr);
585  }
586  return this;
587}
588function prop(props, value) {
589  if (arguments.length === 1 && typeof props === 'string') {
590    // Get prop
591    if (this[0]) return this[0][props];
592  } else {
593    // Set props
594    for (var i = 0; i < this.length; i += 1) {
595      if (arguments.length === 2) {
596        // String
597        this[i][props] = value;
598      } else {
599        // Object
600        for (var propName in props) {
601          this[i][propName] = props[propName];
602        }
603      }
604    }
605    return this;
606  }
607  return this;
608}
609function data(key, value) {
610  var el;
611  if (typeof value === 'undefined') {
612    el = this[0];
613    if (!el) return undefined; // Get value
614
615    if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {
616      return el.dom7ElementDataStorage[key];
617    }
618    var dataKey = el.getAttribute("data-".concat(key));
619    if (dataKey) {
620      return dataKey;
621    }
622    return undefined;
623  } // Set value
624
625  for (var i = 0; i < this.length; i += 1) {
626    el = this[i];
627    if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};
628    el.dom7ElementDataStorage[key] = value;
629  }
630  return this;
631}
632function removeData(key) {
633  for (var i = 0; i < this.length; i += 1) {
634    var el = this[i];
635    if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {
636      el.dom7ElementDataStorage[key] = null;
637      delete el.dom7ElementDataStorage[key];
638    }
639  }
640}
641function dataset() {
642  var el = this[0];
643  if (!el) return undefined;
644  var dataset = {}; // eslint-disable-line
645
646  if (el.dataset) {
647    for (var dataKey in el.dataset) {
648      dataset[dataKey] = el.dataset[dataKey];
649    }
650  } else {
651    for (var i = 0; i < el.attributes.length; i += 1) {
652      var _attr = el.attributes[i];
653      if (_attr.name.indexOf('data-') >= 0) {
654        dataset[toCamelCase(_attr.name.split('data-')[1])] = _attr.value;
655      }
656    }
657  }
658  for (var key in dataset) {
659    if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;
660  }
661  return dataset;
662}
663function val(value) {
664  if (typeof value === 'undefined') {
665    // get value
666    var el = this[0];
667    if (!el) return undefined;
668    if (el.multiple && el.nodeName.toLowerCase() === 'select') {
669      var values = [];
670      for (var i = 0; i < el.selectedOptions.length; i += 1) {
671        values.push(el.selectedOptions[i].value);
672      }
673      return values;
674    }
675    return el.value;
676  } // set value
677
678  for (var _i = 0; _i < this.length; _i += 1) {
679    var _el = this[_i];
680    if (Array.isArray(value) && _el.multiple && _el.nodeName.toLowerCase() === 'select') {
681      for (var j = 0; j < _el.options.length; j += 1) {
682        _el.options[j].selected = value.indexOf(_el.options[j].value) >= 0;
683      }
684    } else {
685      _el.value = value;
686    }
687  }
688  return this;
689}
690function value(value) {
691  return this.val(value);
692}
693function transform(transform) {
694  for (var i = 0; i < this.length; i += 1) {
695    this[i].style.transform = transform;
696  }
697  return this;
698}
699function transition(duration) {
700  for (var i = 0; i < this.length; i += 1) {
701    this[i].style.transitionDuration = typeof duration !== 'string' ? "".concat(duration, "ms") : duration;
702  }
703  return this;
704}
705function on() {
706  for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
707    args[_key5] = arguments[_key5];
708  }
709  var eventType = args[0],
710    targetSelector = args[1],
711    listener = args[2],
712    capture = args[3];
713  if (typeof args[1] === 'function') {
714    eventType = args[0];
715    listener = args[1];
716    capture = args[2];
717    targetSelector = undefined;
718  }
719  if (!capture) capture = false;
720  function handleLiveEvent(e) {
721    var target = e.target;
722    if (!target) return;
723    var eventData = e.target.dom7EventData || [];
724    if (eventData.indexOf(e) < 0) {
725      eventData.unshift(e);
726    }
727    if ($(target).is(targetSelector)) listener.apply(target, eventData);else {
728      var _parents = $(target).parents(); // eslint-disable-line
729
730      for (var k = 0; k < _parents.length; k += 1) {
731        if ($(_parents[k]).is(targetSelector)) listener.apply(_parents[k], eventData);
732      }
733    }
734  }
735  function handleEvent(e) {
736    var eventData = e && e.target ? e.target.dom7EventData || [] : [];
737    if (eventData.indexOf(e) < 0) {
738      eventData.unshift(e);
739    }
740    listener.apply(this, eventData);
741  }
742  var events = eventType.split(' ');
743  var j;
744  for (var i = 0; i < this.length; i += 1) {
745    var el = this[i];
746    if (!targetSelector) {
747      for (j = 0; j < events.length; j += 1) {
748        var event = events[j];
749        if (!el.dom7Listeners) el.dom7Listeners = {};
750        if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];
751        el.dom7Listeners[event].push({
752          listener: listener,
753          proxyListener: handleEvent
754        });
755        el.addEventListener(event, handleEvent, capture);
756      }
757    } else {
758      // Live events
759      for (j = 0; j < events.length; j += 1) {
760        var _event = events[j];
761        if (!el.dom7LiveListeners) el.dom7LiveListeners = {};
762        if (!el.dom7LiveListeners[_event]) el.dom7LiveListeners[_event] = [];
763        el.dom7LiveListeners[_event].push({
764          listener: listener,
765          proxyListener: handleLiveEvent
766        });
767        el.addEventListener(_event, handleLiveEvent, capture);
768      }
769    }
770  }
771  return this;
772}
773function off() {
774  for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
775    args[_key6] = arguments[_key6];
776  }
777  var eventType = args[0],
778    targetSelector = args[1],
779    listener = args[2],
780    capture = args[3];
781  if (typeof args[1] === 'function') {
782    eventType = args[0];
783    listener = args[1];
784    capture = args[2];
785    targetSelector = undefined;
786  }
787  if (!capture) capture = false;
788  var events = eventType.split(' ');
789  for (var i = 0; i < events.length; i += 1) {
790    var event = events[i];
791    for (var j = 0; j < this.length; j += 1) {
792      var el = this[j];
793      var handlers = void 0;
794      if (!targetSelector && el.dom7Listeners) {
795        handlers = el.dom7Listeners[event];
796      } else if (targetSelector && el.dom7LiveListeners) {
797        handlers = el.dom7LiveListeners[event];
798      }
799      if (handlers && handlers.length) {
800        for (var k = handlers.length - 1; k >= 0; k -= 1) {
801          var handler = handlers[k];
802          if (listener && handler.listener === listener) {
803            el.removeEventListener(event, handler.proxyListener, capture);
804            handlers.splice(k, 1);
805          } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {
806            el.removeEventListener(event, handler.proxyListener, capture);
807            handlers.splice(k, 1);
808          } else if (!listener) {
809            el.removeEventListener(event, handler.proxyListener, capture);
810            handlers.splice(k, 1);
811          }
812        }
813      }
814    }
815  }
816  return this;
817}
818function once() {
819  var dom = this;
820  for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
821    args[_key7] = arguments[_key7];
822  }
823  var eventName = args[0],
824    targetSelector = args[1],
825    listener = args[2],
826    capture = args[3];
827  if (typeof args[1] === 'function') {
828    eventName = args[0];
829    listener = args[1];
830    capture = args[2];
831    targetSelector = undefined;
832  }
833  function onceHandler() {
834    for (var _len8 = arguments.length, eventArgs = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
835      eventArgs[_key8] = arguments[_key8];
836    }
837    listener.apply(this, eventArgs);
838    dom.off(eventName, targetSelector, onceHandler, capture);
839    if (onceHandler.dom7proxy) {
840      delete onceHandler.dom7proxy;
841    }
842  }
843  onceHandler.dom7proxy = listener;
844  return dom.on(eventName, targetSelector, onceHandler, capture);
845}
846function trigger() {
847  var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
848  for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {
849    args[_key9] = arguments[_key9];
850  }
851  var events = args[0].split(' ');
852  var eventData = args[1];
853  for (var i = 0; i < events.length; i += 1) {
854    var event = events[i];
855    for (var j = 0; j < this.length; j += 1) {
856      var el = this[j];
857      if (window.CustomEvent) {
858        var evt = new window.CustomEvent(event, {
859          detail: eventData,
860          bubbles: true,
861          cancelable: true
862        });
863        el.dom7EventData = args.filter(function (data, dataIndex) {
864          return dataIndex > 0;
865        });
866        el.dispatchEvent(evt);
867        el.dom7EventData = [];
868        delete el.dom7EventData;
869      }
870    }
871  }
872  return this;
873}
874function transitionStart(callback) {
875  var dom = this;
876  function fireCallBack(e) {
877    if (e.target !== this) return;
878    callback.call(this, e);
879    dom.off('transitionstart', fireCallBack);
880  }
881  if (callback) {
882    dom.on('transitionstart', fireCallBack);
883  }
884  return this;
885}
886function transitionEnd(callback) {
887  var dom = this;
888  function fireCallBack(e) {
889    if (e.target !== this) return;
890    callback.call(this, e);
891    dom.off('transitionend', fireCallBack);
892  }
893  if (callback) {
894    dom.on('transitionend', fireCallBack);
895  }
896  return this;
897}
898function animationEnd(callback) {
899  var dom = this;
900  function fireCallBack(e) {
901    if (e.target !== this) return;
902    callback.call(this, e);
903    dom.off('animationend', fireCallBack);
904  }
905  if (callback) {
906    dom.on('animationend', fireCallBack);
907  }
908  return this;
909}
910function width() {
911  var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
912  if (this[0] === window) {
913    return window.innerWidth;
914  }
915  if (this.length > 0) {
916    return parseFloat(this.css('width'));
917  }
918  return null;
919}
920function outerWidth(includeMargins) {
921  if (this.length > 0) {
922    if (includeMargins) {
923      var _styles = this.styles();
924      return this[0].offsetWidth + parseFloat(_styles.getPropertyValue('margin-right')) + parseFloat(_styles.getPropertyValue('margin-left'));
925    }
926    return this[0].offsetWidth;
927  }
928  return null;
929}
930function height() {
931  var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
932  if (this[0] === window) {
933    return window.innerHeight;
934  }
935  if (this.length > 0) {
936    return parseFloat(this.css('height'));
937  }
938  return null;
939}
940function outerHeight(includeMargins) {
941  if (this.length > 0) {
942    if (includeMargins) {
943      var _styles2 = this.styles();
944      return this[0].offsetHeight + parseFloat(_styles2.getPropertyValue('margin-top')) + parseFloat(_styles2.getPropertyValue('margin-bottom'));
945    }
946    return this[0].offsetHeight;
947  }
948  return null;
949}
950function offset() {
951  if (this.length > 0) {
952    var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
953    var document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
954    var el = this[0];
955    var box = el.getBoundingClientRect();
956    var body = document.body;
957    var clientTop = el.clientTop || body.clientTop || 0;
958    var clientLeft = el.clientLeft || body.clientLeft || 0;
959    var _scrollTop = el === window ? window.scrollY : el.scrollTop;
960    var _scrollLeft = el === window ? window.scrollX : el.scrollLeft;
961    return {
962      top: box.top + _scrollTop - clientTop,
963      left: box.left + _scrollLeft - clientLeft
964    };
965  }
966  return null;
967}
968function hide() {
969  for (var i = 0; i < this.length; i += 1) {
970    this[i].style.display = 'none';
971  }
972  return this;
973}
974function show() {
975  var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
976  for (var i = 0; i < this.length; i += 1) {
977    var el = this[i];
978    if (el.style.display === 'none') {
979      el.style.display = '';
980    }
981    if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {
982      // Still not visible
983      el.style.display = 'block';
984    }
985  }
986  return this;
987}
988function styles() {
989  var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
990  if (this[0]) return window.getComputedStyle(this[0], null);
991  return {};
992}
993function css(props, value) {
994  var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
995  var i;
996  if (arguments.length === 1) {
997    if (typeof props === 'string') {
998      // .css('width')
999      if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);
1000    } else {
1001      // .css({ width: '100px' })
1002      for (i = 0; i < this.length; i += 1) {
1003        for (var _prop in props) {
1004          this[i].style[_prop] = props[_prop];
1005        }
1006      }
1007      return this;
1008    }
1009  }
1010  if (arguments.length === 2 && typeof props === 'string') {
1011    // .css('width', '100px')
1012    for (i = 0; i < this.length; i += 1) {
1013      this[i].style[props] = value;
1014    }
1015    return this;
1016  }
1017  return this;
1018}
1019function each(callback) {
1020  if (!callback) return this;
1021  this.forEach(function (el, index) {
1022    callback.apply(el, [el, index]);
1023  });
1024  return this;
1025}
1026function filter(callback) {
1027  var result = arrayFilter(this, callback);
1028  return $(result);
1029}
1030function html(html) {
1031  if (typeof html === 'undefined') {
1032    return this[0] ? this[0].innerHTML : null;
1033  }
1034  for (var i = 0; i < this.length; i += 1) {
1035    this[i].innerHTML = html;
1036  }
1037  return this;
1038}
1039function text(text) {
1040  if (typeof text === 'undefined') {
1041    return this[0] ? this[0].textContent.trim() : null;
1042  }
1043  for (var i = 0; i < this.length; i += 1) {
1044    this[i].textContent = text;
1045  }
1046  return this;
1047}
1048function is(selector) {
1049  var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
1050  var document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
1051  var el = this[0];
1052  var compareWith;
1053  var i;
1054  if (!el || typeof selector === 'undefined') return false;
1055  if (typeof selector === 'string') {
1056    if (el.matches) return el.matches(selector);
1057    if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);
1058    if (el.msMatchesSelector) return el.msMatchesSelector(selector);
1059    compareWith = $(selector);
1060    for (i = 0; i < compareWith.length; i += 1) {
1061      if (compareWith[i] === el) return true;
1062    }
1063    return false;
1064  }
1065  if (selector === document) {
1066    return el === document;
1067  }
1068  if (selector === window) {
1069    return el === window;
1070  }
1071  if (selector.nodeType || selector instanceof Dom7) {
1072    compareWith = selector.nodeType ? [selector] : selector;
1073    for (i = 0; i < compareWith.length; i += 1) {
1074      if (compareWith[i] === el) return true;
1075    }
1076    return false;
1077  }
1078  return false;
1079}
1080function index() {
1081  var child = this[0];
1082  var i;
1083  if (child) {
1084    i = 0; // eslint-disable-next-line
1085
1086    while ((child = child.previousSibling) !== null) {
1087      if (child.nodeType === 1) i += 1;
1088    }
1089    return i;
1090  }
1091  return undefined;
1092}
1093function eq(index) {
1094  if (typeof index === 'undefined') return this;
1095  var length = this.length;
1096  if (index > length - 1) {
1097    return $([]);
1098  }
1099  if (index < 0) {
1100    var returnIndex = length + index;
1101    if (returnIndex < 0) return $([]);
1102    return $([this[returnIndex]]);
1103  }
1104  return $([this[index]]);
1105}
1106function append() {
1107  var newChild;
1108  var document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
1109  for (var k = 0; k < arguments.length; k += 1) {
1110    newChild = k < 0 || arguments.length <= k ? undefined : arguments[k];
1111    for (var i = 0; i < this.length; i += 1) {
1112      if (typeof newChild === 'string') {
1113        var tempDiv = document.createElement('div');
1114        tempDiv.innerHTML = newChild;
1115        while (tempDiv.firstChild) {
1116          this[i].appendChild(tempDiv.firstChild);
1117        }
1118      } else if (newChild instanceof Dom7) {
1119        for (var j = 0; j < newChild.length; j += 1) {
1120          this[i].appendChild(newChild[j]);
1121        }
1122      } else {
1123        this[i].appendChild(newChild);
1124      }
1125    }
1126  }
1127  return this;
1128}
1129function appendTo(parent) {
1130  $(parent).append(this);
1131  return this;
1132}
1133function prepend(newChild) {
1134  var document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
1135  var i;
1136  var j;
1137  for (i = 0; i < this.length; i += 1) {
1138    if (typeof newChild === 'string') {
1139      var tempDiv = document.createElement('div');
1140      tempDiv.innerHTML = newChild;
1141      for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {
1142        this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);
1143      }
1144    } else if (newChild instanceof Dom7) {
1145      for (j = 0; j < newChild.length; j += 1) {
1146        this[i].insertBefore(newChild[j], this[i].childNodes[0]);
1147      }
1148    } else {
1149      this[i].insertBefore(newChild, this[i].childNodes[0]);
1150    }
1151  }
1152  return this;
1153}
1154function prependTo(parent) {
1155  $(parent).prepend(this);
1156  return this;
1157}
1158function insertBefore(selector) {
1159  var before = $(selector);
1160  for (var i = 0; i < this.length; i += 1) {
1161    if (before.length === 1) {
1162      before[0].parentNode.insertBefore(this[i], before[0]);
1163    } else if (before.length > 1) {
1164      for (var j = 0; j < before.length; j += 1) {
1165        before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);
1166      }
1167    }
1168  }
1169}
1170function insertAfter(selector) {
1171  var after = $(selector);
1172  for (var i = 0; i < this.length; i += 1) {
1173    if (after.length === 1) {
1174      after[0].parentNode.insertBefore(this[i], after[0].nextSibling);
1175    } else if (after.length > 1) {
1176      for (var j = 0; j < after.length; j += 1) {
1177        after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);
1178      }
1179    }
1180  }
1181}
1182function next(selector) {
1183  if (this.length > 0) {
1184    if (selector) {
1185      if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {
1186        return $([this[0].nextElementSibling]);
1187      }
1188      return $([]);
1189    }
1190    if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);
1191    return $([]);
1192  }
1193  return $([]);
1194}
1195function nextAll(selector) {
1196  var nextEls = [];
1197  var el = this[0];
1198  if (!el) return $([]);
1199  while (el.nextElementSibling) {
1200    var _next = el.nextElementSibling; // eslint-disable-line
1201
1202    if (selector) {
1203      if ($(_next).is(selector)) nextEls.push(_next);
1204    } else nextEls.push(_next);
1205    el = _next;
1206  }
1207  return $(nextEls);
1208}
1209function prev(selector) {
1210  if (this.length > 0) {
1211    var el = this[0];
1212    if (selector) {
1213      if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {
1214        return $([el.previousElementSibling]);
1215      }
1216      return $([]);
1217    }
1218    if (el.previousElementSibling) return $([el.previousElementSibling]);
1219    return $([]);
1220  }
1221  return $([]);
1222}
1223function prevAll(selector) {
1224  var prevEls = [];
1225  var el = this[0];
1226  if (!el) return $([]);
1227  while (el.previousElementSibling) {
1228    var _prev = el.previousElementSibling; // eslint-disable-line
1229
1230    if (selector) {
1231      if ($(_prev).is(selector)) prevEls.push(_prev);
1232    } else prevEls.push(_prev);
1233    el = _prev;
1234  }
1235  return $(prevEls);
1236}
1237function siblings(selector) {
1238  return this.nextAll(selector).add(this.prevAll(selector));
1239}
1240function parent(selector) {
1241  var parents = []; // eslint-disable-line
1242
1243  for (var i = 0; i < this.length; i += 1) {
1244    if (this[i].parentNode !== null) {
1245      if (selector) {
1246        if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);
1247      } else {
1248        parents.push(this[i].parentNode);
1249      }
1250    }
1251  }
1252  return $(parents);
1253}
1254function parents(selector) {
1255  var parents = []; // eslint-disable-line
1256
1257  for (var i = 0; i < this.length; i += 1) {
1258    var _parent = this[i].parentNode; // eslint-disable-line
1259
1260    while (_parent) {
1261      if (selector) {
1262        if ($(_parent).is(selector)) parents.push(_parent);
1263      } else {
1264        parents.push(_parent);
1265      }
1266      _parent = _parent.parentNode;
1267    }
1268  }
1269  return $(parents);
1270}
1271function closest(selector) {
1272  var closest = this; // eslint-disable-line
1273
1274  if (typeof selector === 'undefined') {
1275    return $([]);
1276  }
1277  if (!closest.is(selector)) {
1278    closest = closest.parents(selector).eq(0);
1279  }
1280  return closest;
1281}
1282function find(selector) {
1283  var foundElements = [];
1284  for (var i = 0; i < this.length; i += 1) {
1285    var found = this[i].querySelectorAll(selector);
1286    for (var j = 0; j < found.length; j += 1) {
1287      foundElements.push(found[j]);
1288    }
1289  }
1290  return $(foundElements);
1291}
1292function children(selector) {
1293  var children = []; // eslint-disable-line
1294
1295  for (var i = 0; i < this.length; i += 1) {
1296    var childNodes = this[i].children;
1297    for (var j = 0; j < childNodes.length; j += 1) {
1298      if (!selector || $(childNodes[j]).is(selector)) {
1299        children.push(childNodes[j]);
1300      }
1301    }
1302  }
1303  return $(children);
1304}
1305function remove() {
1306  for (var i = 0; i < this.length; i += 1) {
1307    if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);
1308  }
1309  return this;
1310}
1311function detach() {
1312  return this.remove();
1313}
1314function add() {
1315  var dom = this;
1316  var i;
1317  var j;
1318  for (var _len0 = arguments.length, els = new Array(_len0), _key0 = 0; _key0 < _len0; _key0++) {
1319    els[_key0] = arguments[_key0];
1320  }
1321  for (i = 0; i < els.length; i += 1) {
1322    var toAdd = $(els[i]);
1323    for (j = 0; j < toAdd.length; j += 1) {
1324      dom.push(toAdd[j]);
1325    }
1326  }
1327  return dom;
1328}
1329function empty() {
1330  for (var i = 0; i < this.length; i += 1) {
1331    var el = this[i];
1332    if (el.nodeType === 1) {
1333      for (var j = 0; j < el.childNodes.length; j += 1) {
1334        if (el.childNodes[j].parentNode) {
1335          el.childNodes[j].parentNode.removeChild(el.childNodes[j]);
1336        }
1337      }
1338      el.textContent = '';
1339    }
1340  }
1341  return this;
1342}
1343
1344// eslint-disable-next-line
1345
1346function scrollTo() {
1347  var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
1348  for (var _len1 = arguments.length, args = new Array(_len1), _key1 = 0; _key1 < _len1; _key1++) {
1349    args[_key1] = arguments[_key1];
1350  }
1351  var left = args[0],
1352    top = args[1],
1353    duration = args[2],
1354    easing = args[3],
1355    callback = args[4];
1356  if (args.length === 4 && typeof easing === 'function') {
1357    callback = easing;
1358    left = args[0];
1359    top = args[1];
1360    duration = args[2];
1361    callback = args[3];
1362    easing = args[4];
1363  }
1364  if (typeof easing === 'undefined') easing = 'swing';
1365  return this.each(function animate() {
1366    var el = this;
1367    var currentTop;
1368    var currentLeft;
1369    var maxTop;
1370    var maxLeft;
1371    var newTop;
1372    var newLeft;
1373    var scrollTop; // eslint-disable-line
1374
1375    var scrollLeft; // eslint-disable-line
1376
1377    var animateTop = top > 0 || top === 0;
1378    var animateLeft = left > 0 || left === 0;
1379    if (typeof easing === 'undefined') {
1380      easing = 'swing';
1381    }
1382    if (animateTop) {
1383      currentTop = el.scrollTop;
1384      if (!duration) {
1385        el.scrollTop = top;
1386      }
1387    }
1388    if (animateLeft) {
1389      currentLeft = el.scrollLeft;
1390      if (!duration) {
1391        el.scrollLeft = left;
1392      }
1393    }
1394    if (!duration) return;
1395    if (animateTop) {
1396      maxTop = el.scrollHeight - el.offsetHeight;
1397      newTop = Math.max(Math.min(top, maxTop), 0);
1398    }
1399    if (animateLeft) {
1400      maxLeft = el.scrollWidth - el.offsetWidth;
1401      newLeft = Math.max(Math.min(left, maxLeft), 0);
1402    }
1403    var startTime = null;
1404    if (animateTop && newTop === currentTop) animateTop = false;
1405    if (animateLeft && newLeft === currentLeft) animateLeft = false;
1406    function render() {
1407      var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date().getTime();
1408      if (startTime === null) {
1409        startTime = time;
1410      }
1411      var progress = Math.max(Math.min((time - startTime) / duration, 1), 0);
1412      var easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;
1413      var done;
1414      if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);
1415      if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);
1416      if (animateTop && newTop > currentTop && scrollTop >= newTop) {
1417        el.scrollTop = newTop;
1418        done = true;
1419      }
1420      if (animateTop && newTop < currentTop && scrollTop <= newTop) {
1421        el.scrollTop = newTop;
1422        done = true;
1423      }
1424      if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {
1425        el.scrollLeft = newLeft;
1426        done = true;
1427      }
1428      if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {
1429        el.scrollLeft = newLeft;
1430        done = true;
1431      }
1432      if (done) {
1433        if (callback) callback();
1434        return;
1435      }
1436      if (animateTop) el.scrollTop = scrollTop;
1437      if (animateLeft) el.scrollLeft = scrollLeft;
1438      window.requestAnimationFrame(render);
1439    }
1440    window.requestAnimationFrame(render);
1441  });
1442} // scrollTop(top, duration, easing, callback) {
1443
1444function scrollTop() {
1445  for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {
1446    args[_key10] = arguments[_key10];
1447  }
1448  var top = args[0],
1449    duration = args[1],
1450    easing = args[2],
1451    callback = args[3];
1452  if (args.length === 3 && typeof easing === 'function') {
1453    top = args[0];
1454    duration = args[1];
1455    callback = args[2];
1456    easing = args[3];
1457  }
1458  var dom = this;
1459  if (typeof top === 'undefined') {
1460    if (dom.length > 0) return dom[0].scrollTop;
1461    return null;
1462  }
1463  return dom.scrollTo(undefined, top, duration, easing, callback);
1464}
1465function scrollLeft() {
1466  for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {
1467    args[_key11] = arguments[_key11];
1468  }
1469  var left = args[0],
1470    duration = args[1],
1471    easing = args[2],
1472    callback = args[3];
1473  if (args.length === 3 && typeof easing === 'function') {
1474    left = args[0];
1475    duration = args[1];
1476    callback = args[2];
1477    easing = args[3];
1478  }
1479  var dom = this;
1480  if (typeof left === 'undefined') {
1481    if (dom.length > 0) return dom[0].scrollLeft;
1482    return null;
1483  }
1484  return dom.scrollTo(left, undefined, duration, easing, callback);
1485}
1486
1487// eslint-disable-next-line
1488
1489function animate(initialProps, initialParams) {
1490  var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
1491  var els = this;
1492  var a = {
1493    props: Object.assign({}, initialProps),
1494    params: Object.assign({
1495      duration: 300,
1496      easing: 'swing' // or 'linear'
1497
1498      /* Callbacks
1499      begin(elements)
1500      complete(elements)
1501      progress(elements, complete, remaining, start, tweenValue)
1502      */
1503    }, initialParams),
1504    elements: els,
1505    animating: false,
1506    que: [],
1507    easingProgress: function easingProgress(easing, progress) {
1508      if (easing === 'swing') {
1509        return 0.5 - Math.cos(progress * Math.PI) / 2;
1510      }
1511      if (typeof easing === 'function') {
1512        return easing(progress);
1513      }
1514      return progress;
1515    },
1516    stop: function stop() {
1517      if (a.frameId) {
1518        window.cancelAnimationFrame(a.frameId);
1519      }
1520      a.animating = false;
1521      a.elements.each(function (el) {
1522        var element = el;
1523        delete element.dom7AnimateInstance;
1524      });
1525      a.que = [];
1526    },
1527    done: function done(complete) {
1528      a.animating = false;
1529      a.elements.each(function (el) {
1530        var element = el;
1531        delete element.dom7AnimateInstance;
1532      });
1533      if (complete) complete(els);
1534      if (a.que.length > 0) {
1535        var que = a.que.shift();
1536        a.animate(que[0], que[1]);
1537      }
1538    },
1539    animate: function animate(props, params) {
1540      if (a.animating) {
1541        a.que.push([props, params]);
1542        return a;
1543      }
1544      var elements = []; // Define & Cache Initials & Units
1545
1546      a.elements.each(function (el, index) {
1547        var initialFullValue;
1548        var initialValue;
1549        var unit;
1550        var finalValue;
1551        var finalFullValue;
1552        if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;
1553        elements[index] = {
1554          container: el
1555        };
1556        Object.keys(props).forEach(function (prop) {
1557          initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');
1558          initialValue = parseFloat(initialFullValue);
1559          unit = initialFullValue.replace(initialValue, '');
1560          finalValue = parseFloat(props[prop]);
1561          finalFullValue = props[prop] + unit;
1562          elements[index][prop] = {
1563            initialFullValue: initialFullValue,
1564            initialValue: initialValue,
1565            unit: unit,
1566            finalValue: finalValue,
1567            finalFullValue: finalFullValue,
1568            currentValue: initialValue
1569          };
1570        });
1571      });
1572      var startTime = null;
1573      var time;
1574      var elementsDone = 0;
1575      var propsDone = 0;
1576      var done;
1577      var began = false;
1578      a.animating = true;
1579      function render() {
1580        time = new Date().getTime();
1581        var progress;
1582        var easeProgress; // let el;
1583
1584        if (!began) {
1585          began = true;
1586          if (params.begin) params.begin(els);
1587        }
1588        if (startTime === null) {
1589          startTime = time;
1590        }
1591        if (params.progress) {
1592          // eslint-disable-next-line
1593          params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);
1594        }
1595        elements.forEach(function (element) {
1596          var el = element;
1597          if (done || el.done) return;
1598          Object.keys(props).forEach(function (prop) {
1599            if (done || el.done) return;
1600            progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);
1601            easeProgress = a.easingProgress(params.easing, progress);
1602            var _el$prop = el[prop],
1603              initialValue = _el$prop.initialValue,
1604              finalValue = _el$prop.finalValue,
1605              unit = _el$prop.unit;
1606            el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);
1607            var currentValue = el[prop].currentValue;
1608            if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {
1609              el.container.style[prop] = finalValue + unit;
1610              propsDone += 1;
1611              if (propsDone === Object.keys(props).length) {
1612                el.done = true;
1613                elementsDone += 1;
1614              }
1615              if (elementsDone === elements.length) {
1616                done = true;
1617              }
1618            }
1619            if (done) {
1620              a.done(params.complete);
1621              return;
1622            }
1623            el.container.style[prop] = currentValue + unit;
1624          });
1625        });
1626        if (done) return; // Then call
1627
1628        a.frameId = window.requestAnimationFrame(render);
1629      }
1630      a.frameId = window.requestAnimationFrame(render);
1631      return a;
1632    }
1633  };
1634  if (a.elements.length === 0) {
1635    return els;
1636  }
1637  var animateInstance;
1638  for (var i = 0; i < a.elements.length; i += 1) {
1639    if (a.elements[i].dom7AnimateInstance) {
1640      animateInstance = a.elements[i].dom7AnimateInstance;
1641    } else a.elements[i].dom7AnimateInstance = a;
1642  }
1643  if (!animateInstance) {
1644    animateInstance = a;
1645  }
1646  if (initialProps === 'stop') {
1647    animateInstance.stop();
1648  } else {
1649    animateInstance.animate(a.props, a.params);
1650  }
1651  return els;
1652}
1653function stop() {
1654  var els = this;
1655  for (var i = 0; i < els.length; i += 1) {
1656    if (els[i].dom7AnimateInstance) {
1657      els[i].dom7AnimateInstance.stop();
1658    }
1659  }
1660}
1661var noTrigger = 'resize scroll'.split(' ');
1662function shortcut(name) {
1663  function eventHandler() {
1664    for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {
1665      args[_key12] = arguments[_key12];
1666    }
1667    if (typeof args[0] === 'undefined') {
1668      for (var i = 0; i < this.length; i += 1) {
1669        if (noTrigger.indexOf(name) < 0) {
1670          if (name in this[i]) this[i][name]();else {
1671            $(this[i]).trigger(name);
1672          }
1673        }
1674      }
1675      return this;
1676    }
1677    return this.on.apply(this, [name].concat(args));
1678  }
1679  return eventHandler;
1680}
1681var click = shortcut('click');
1682var blur = shortcut('blur');
1683var focus = shortcut('focus');
1684var focusin = shortcut('focusin');
1685var focusout = shortcut('focusout');
1686var keyup = shortcut('keyup');
1687var keydown = shortcut('keydown');
1688var keypress = shortcut('keypress');
1689var submit = shortcut('submit');
1690var change = shortcut('change');
1691var mousedown = shortcut('mousedown');
1692var mousemove = shortcut('mousemove');
1693var mouseup = shortcut('mouseup');
1694var mouseenter = shortcut('mouseenter');
1695var mouseleave = shortcut('mouseleave');
1696var mouseout = shortcut('mouseout');
1697var mouseover = shortcut('mouseover');
1698var touchstart = shortcut('touchstart');
1699var touchend = shortcut('touchend');
1700var touchmove = shortcut('touchmove');
1701var resize = shortcut('resize');
1702var scroll = shortcut('scroll');
1703/* harmony default export */ __webpack_exports__["default"] = ($);
1704
1705
1706/***/ }),
1707
vendor: 59,929 bytes, lines 1708-3223
1708/***/ "./node_modules/jquery-validation/dist/jquery.validate.js":
1709/*!****************************************************************!*\
1710  !*** ./node_modules/jquery-validation/dist/jquery.validate.js ***!
1711  \****************************************************************/
1712/***/ (function(module, exports, __webpack_require__) {
1713
1714var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
1715/*!
1716 * jQuery Validation Plugin v1.21.0
1717 *
1718 * https://jqueryvalidation.org/
1719 *
1720 * Copyright (c) 2024 Jörn Zaefferer
1721 * Released under the MIT license
1722 */
1723(function (factory) {
1724  if (true) {
1725    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
1726		__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
1727		(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
1728		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1729  } else // removed by dead control flow
1730{}
1731})(function ($) {
1732  $.extend($.fn, {
1733    // https://jqueryvalidation.org/validate/
1734    validate: function validate(options) {
1735      // If nothing is selected, return nothing; can't chain anyway
1736      if (!this.length) {
1737        if (options && options.debug && window.console) {
1738          console.warn("Nothing selected, can't validate, returning nothing.");
1739        }
1740        return;
1741      }
1742
1743      // Check if a validator for this form was already created
1744      var validator = $.data(this[0], "validator");
1745      if (validator) {
1746        return validator;
1747      }
1748
1749      // Add novalidate tag if HTML5.
1750      this.attr("novalidate", "novalidate");
1751      validator = new $.validator(options, this[0]);
1752      $.data(this[0], "validator", validator);
1753      if (validator.settings.onsubmit) {
1754        this.on("click.validate", ":submit", function (event) {
1755          // Track the used submit button to properly handle scripted
1756          // submits later.
1757          validator.submitButton = event.currentTarget;
1758
1759          // Allow suppressing validation by adding a cancel class to the submit button
1760          if ($(this).hasClass("cancel")) {
1761            validator.cancelSubmit = true;
1762          }
1763
1764          // Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button
1765          if ($(this).attr("formnovalidate") !== undefined) {
1766            validator.cancelSubmit = true;
1767          }
1768        });
1769
1770        // Validate the form on submit
1771        this.on("submit.validate", function (event) {
1772          if (validator.settings.debug) {
1773            // Prevent form submit to be able to see console output
1774            event.preventDefault();
1775          }
1776          function handle() {
1777            var hidden, result;
1778
1779            // Insert a hidden input as a replacement for the missing submit button
1780            // The hidden input is inserted in two cases:
1781            //   - A user defined a `submitHandler`
1782            //   - There was a pending request due to `remote` method and `stopRequest()`
1783            //     was called to submit the form in case it's valid
1784            if (validator.submitButton && (validator.settings.submitHandler || validator.formSubmitted)) {
1785              hidden = $("<input type='hidden'/>").attr("name", validator.submitButton.name).val($(validator.submitButton).val()).appendTo(validator.currentForm);
1786            }
1787            if (validator.settings.submitHandler && !validator.settings.debug) {
1788              result = validator.settings.submitHandler.call(validator, validator.currentForm, event);
1789              if (hidden) {
1790                // And clean up afterwards; thanks to no-block-scope, hidden can be referenced
1791                hidden.remove();
1792              }
1793              if (result !== undefined) {
1794                return result;
1795              }
1796              return false;
1797            }
1798            return true;
1799          }
1800
1801          // Prevent submit for invalid forms or custom submit handlers
1802          if (validator.cancelSubmit) {
1803            validator.cancelSubmit = false;
1804            return handle();
1805          }
1806          if (validator.form()) {
1807            if (validator.pendingRequest) {
1808              validator.formSubmitted = true;
1809              return false;
1810            }
1811            return handle();
1812          } else {
1813            validator.focusInvalid();
1814            return false;
1815          }
1816        });
1817      }
1818      return validator;
1819    },
1820    // https://jqueryvalidation.org/valid/
1821    valid: function valid() {
1822      var valid, validator, errorList;
1823      if ($(this[0]).is("form")) {
1824        valid = this.validate().form();
1825      } else {
1826        errorList = [];
1827        valid = true;
1828        validator = $(this[0].form).validate();
1829        this.each(function () {
1830          valid = validator.element(this) && valid;
1831          if (!valid) {
1832            errorList = errorList.concat(validator.errorList);
1833          }
1834        });
1835        validator.errorList = errorList;
1836      }
1837      return valid;
1838    },
1839    // https://jqueryvalidation.org/rules/
1840    rules: function rules(command, argument) {
1841      var element = this[0],
1842        isContentEditable = typeof this.attr("contenteditable") !== "undefined" && this.attr("contenteditable") !== "false",
1843        settings,
1844        staticRules,
1845        existingRules,
1846        data,
1847        param,
1848        filtered;
1849
1850      // If nothing is selected, return empty object; can't chain anyway
1851      if (element == null) {
1852        return;
1853      }
1854      if (!element.form && isContentEditable) {
1855        element.form = this.closest("form")[0];
1856        element.name = this.attr("name");
1857      }
1858      if (element.form == null) {
1859        return;
1860      }
1861      if (command) {
1862        settings = $.data(element.form, "validator").settings;
1863        staticRules = settings.rules;
1864        existingRules = $.validator.staticRules(element);
1865        switch (command) {
1866          case "add":
1867            $.extend(existingRules, $.validator.normalizeRule(argument));
1868
1869            // Remove messages from rules, but allow them to be set separately
1870            delete existingRules.messages;
1871            staticRules[element.name] = existingRules;
1872            if (argument.messages) {
1873              settings.messages[element.name] = $.extend(settings.messages[element.name], argument.messages);
1874            }
1875            break;
1876          case "remove":
1877            if (!argument) {
1878              delete staticRules[element.name];
1879              return existingRules;
1880            }
1881            filtered = {};
1882            $.each(argument.split(/\s/), function (index, method) {
1883              filtered[method] = existingRules[method];
1884              delete existingRules[method];
1885            });
1886            return filtered;
1887        }
1888      }
1889      data = $.validator.normalizeRules($.extend({}, $.validator.classRules(element), $.validator.attributeRules(element), $.validator.dataRules(element), $.validator.staticRules(element)), element);
1890
1891      // Make sure required is at front
1892      if (data.required) {
1893        param = data.required;
1894        delete data.required;
1895        data = $.extend({
1896          required: param
1897        }, data);
1898      }
1899
1900      // Make sure remote is at back
1901      if (data.remote) {
1902        param = data.remote;
1903        delete data.remote;
1904        data = $.extend(data, {
1905          remote: param
1906        });
1907      }
1908      return data;
1909    }
1910  });
1911
1912  // JQuery trim is deprecated, provide a trim method based on String.prototype.trim
1913  var trim = function trim(str) {
1914    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim#Polyfill
1915    return str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "");
1916  };
1917
1918  // Custom selectors
1919  $.extend($.expr.pseudos || $.expr[":"], {
1920    // '|| $.expr[ ":" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support
1921
1922    // https://jqueryvalidation.org/blank-selector/
1923    blank: function blank(a) {
1924      return !trim("" + $(a).val());
1925    },
1926    // https://jqueryvalidation.org/filled-selector/
1927    filled: function filled(a) {
1928      var val = $(a).val();
1929      return val !== null && !!trim("" + val);
1930    },
1931    // https://jqueryvalidation.org/unchecked-selector/
1932    unchecked: function unchecked(a) {
1933      return !$(a).prop("checked");
1934    }
1935  });
1936
1937  // Constructor for validator
1938  $.validator = function (options, form) {
1939    this.settings = $.extend(true, {}, $.validator.defaults, options);
1940    this.currentForm = form;
1941    this.init();
1942  };
1943
1944  // https://jqueryvalidation.org/jQuery.validator.format/
1945  $.validator.format = function (source, params) {
1946    if (arguments.length === 1) {
1947      return function () {
1948        var args = $.makeArray(arguments);
1949        args.unshift(source);
1950        return $.validator.format.apply(this, args);
1951      };
1952    }
1953    if (params === undefined) {
1954      return source;
1955    }
1956    if (arguments.length > 2 && params.constructor !== Array) {
1957      params = $.makeArray(arguments).slice(1);
1958    }
1959    if (params.constructor !== Array) {
1960      params = [params];
1961    }
1962    $.each(params, function (i, n) {
1963      source = source.replace(new RegExp("\\{" + i + "\\}", "g"), function () {
1964        return n;
1965      });
1966    });
1967    return source;
1968  };
1969  $.extend($.validator, {
1970    defaults: {
1971      messages: {},
1972      groups: {},
1973      rules: {},
1974      errorClass: "error",
1975      pendingClass: "pending",
1976      validClass: "valid",
1977      errorElement: "label",
1978      focusCleanup: false,
1979      focusInvalid: true,
1980      errorContainer: $([]),
1981      errorLabelContainer: $([]),
1982      onsubmit: true,
1983      ignore: ":hidden",
1984      ignoreTitle: false,
1985      customElements: [],
1986      onfocusin: function onfocusin(element) {
1987        this.lastActive = element;
1988
1989        // Hide error label and remove error class on focus if enabled
1990        if (this.settings.focusCleanup) {
1991          if (this.settings.unhighlight) {
1992            this.settings.unhighlight.call(this, element, this.settings.errorClass, this.settings.validClass);
1993          }
1994          this.hideThese(this.errorsFor(element));
1995        }
1996      },
1997      onfocusout: function onfocusout(element) {
1998        if (!this.checkable(element) && (element.name in this.submitted || !this.optional(element))) {
1999          this.element(element);
2000        }
2001      },
2002      onkeyup: function onkeyup(element, event) {
2003        // Avoid revalidate the field when pressing one of the following keys
2004        // Shift       => 16
2005        // Ctrl        => 17
2006        // Alt         => 18
2007        // Caps lock   => 20
2008        // End         => 35
2009        // Home        => 36
2010        // Left arrow  => 37
2011        // Up arrow    => 38
2012        // Right arrow => 39
2013        // Down arrow  => 40
2014        // Insert      => 45
2015        // Num lock    => 144
2016        // AltGr key   => 225
2017        var excludedKeys = [16, 17, 18, 20, 35, 36, 37, 38, 39, 40, 45, 144, 225];
2018        if (event.which === 9 && this.elementValue(element) === "" || $.inArray(event.keyCode, excludedKeys) !== -1) {
2019          return;
2020        } else if (element.name in this.submitted || element.name in this.invalid) {
2021          this.element(element);
2022        }
2023      },
2024      onclick: function onclick(element) {
2025        // Click on selects, radiobuttons and checkboxes
2026        if (element.name in this.submitted) {
2027          this.element(element);
2028
2029          // Or option elements, check parent select in that case
2030        } else if (element.parentNode.name in this.submitted) {
2031          this.element(element.parentNode);
2032        }
2033      },
2034      highlight: function highlight(element, errorClass, validClass) {
2035        if (element.type === "radio") {
2036          this.findByName(element.name).addClass(errorClass).removeClass(validClass);
2037        } else {
2038          $(element).addClass(errorClass).removeClass(validClass);
2039        }
2040      },
2041      unhighlight: function unhighlight(element, errorClass, validClass) {
2042        if (element.type === "radio") {
2043          this.findByName(element.name).removeClass(errorClass).addClass(validClass);
2044        } else {
2045          $(element).removeClass(errorClass).addClass(validClass);
2046        }
2047      }
2048    },
2049    // https://jqueryvalidation.org/jQuery.validator.setDefaults/
2050    setDefaults: function setDefaults(settings) {
2051      $.extend($.validator.defaults, settings);
2052    },
2053    messages: {
2054      required: "This field is required.",
2055      remote: "Please fix this field.",
2056      email: "Please enter a valid email address.",
2057      url: "Please enter a valid URL.",
2058      date: "Please enter a valid date.",
2059      dateISO: "Please enter a valid date (ISO).",
2060      number: "Please enter a valid number.",
2061      digits: "Please enter only digits.",
2062      equalTo: "Please enter the same value again.",
2063      maxlength: $.validator.format("Please enter no more than {0} characters."),
2064      minlength: $.validator.format("Please enter at least {0} characters."),
2065      rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),
2066      range: $.validator.format("Please enter a value between {0} and {1}."),
2067      max: $.validator.format("Please enter a value less than or equal to {0}."),
2068      min: $.validator.format("Please enter a value greater than or equal to {0}."),
2069      step: $.validator.format("Please enter a multiple of {0}.")
2070    },
2071    autoCreateRanges: false,
2072    prototype: {
2073      init: function init() {
2074        this.labelContainer = $(this.settings.errorLabelContainer);
2075        this.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm);
2076        this.containers = $(this.settings.errorContainer).add(this.settings.errorLabelContainer);
2077        this.submitted = {};
2078        this.valueCache = {};
2079        this.pendingRequest = 0;
2080        this.pending = {};
2081        this.invalid = {};
2082        this.reset();
2083        var currentForm = this.currentForm,
2084          groups = this.groups = {},
2085          rules;
2086        $.each(this.settings.groups, function (key, value) {
2087          if (typeof value === "string") {
2088            value = value.split(/\s/);
2089          }
2090          $.each(value, function (index, name) {
2091            groups[name] = key;
2092          });
2093        });
2094        rules = this.settings.rules;
2095        $.each(rules, function (key, value) {
2096          rules[key] = $.validator.normalizeRule(value);
2097        });
2098        function delegate(event) {
2099          var isContentEditable = typeof $(this).attr("contenteditable") !== "undefined" && $(this).attr("contenteditable") !== "false";
2100
2101          // Set form expando on contenteditable
2102          if (!this.form && isContentEditable) {
2103            this.form = $(this).closest("form")[0];
2104            this.name = $(this).attr("name");
2105          }
2106
2107          // Ignore the element if it belongs to another form. This will happen mainly
2108          // when setting the `form` attribute of an input to the id of another form.
2109          if (currentForm !== this.form) {
2110            return;
2111          }
2112          var validator = $.data(this.form, "validator"),
2113            eventType = "on" + event.type.replace(/^validate/, ""),
2114            settings = validator.settings;
2115          if (settings[eventType] && !$(this).is(settings.ignore)) {
2116            settings[eventType].call(validator, this, event);
2117          }
2118        }
2119        var focusListeners = [":text", "[type='password']", "[type='file']", "select", "textarea", "[type='number']", "[type='search']", "[type='tel']", "[type='url']", "[type='email']", "[type='datetime']", "[type='date']", "[type='month']", "[type='week']", "[type='time']", "[type='datetime-local']", "[type='range']", "[type='color']", "[type='radio']", "[type='checkbox']", "[contenteditable]", "[type='button']"];
2120        var clickListeners = ["select", "option", "[type='radio']", "[type='checkbox']"];
2121        $(this.currentForm).on("focusin.validate focusout.validate keyup.validate", focusListeners.concat(this.settings.customElements).join(", "), delegate)
2122
2123        // Support: Chrome, oldIE
2124        // "select" is provided as event.target when clicking a option
2125        .on("click.validate", clickListeners.concat(this.settings.customElements).join(", "), delegate);
2126        if (this.settings.invalidHandler) {
2127          $(this.currentForm).on("invalid-form.validate", this.settings.invalidHandler);
2128        }
2129      },
2130      // https://jqueryvalidation.org/Validator.form/
2131      form: function form() {
2132        this.checkForm();
2133        $.extend(this.submitted, this.errorMap);
2134        this.invalid = $.extend({}, this.errorMap);
2135        if (!this.valid()) {
2136          $(this.currentForm).triggerHandler("invalid-form", [this]);
2137        }
2138        this.showErrors();
2139        return this.valid();
2140      },
2141      checkForm: function checkForm() {
2142        this.prepareForm();
2143        for (var i = 0, elements = this.currentElements = this.elements(); elements[i]; i++) {
2144          this.check(elements[i]);
2145        }
2146        return this.valid();
2147      },
2148      // https://jqueryvalidation.org/Validator.element/
2149      element: function element(_element) {
2150        var cleanElement = this.clean(_element),
2151          checkElement = this.validationTargetFor(cleanElement),
2152          v = this,
2153          result = true,
2154          rs,
2155          group;
2156        if (checkElement === undefined) {
2157          delete this.invalid[cleanElement.name];
2158        } else {
2159          this.prepareElement(checkElement);
2160          this.currentElements = $(checkElement);
2161
2162          // If this element is grouped, then validate all group elements already
2163          // containing a value
2164          group = this.groups[checkElement.name];
2165          if (group) {
2166            $.each(this.groups, function (name, testgroup) {
2167              if (testgroup === group && name !== checkElement.name) {
2168                cleanElement = v.validationTargetFor(v.clean(v.findByName(name)));
2169                if (cleanElement && cleanElement.name in v.invalid) {
2170                  v.currentElements.push(cleanElement);
2171                  result = v.check(cleanElement) && result;
2172                }
2173              }
2174            });
2175          }
2176          rs = this.check(checkElement) !== false;
2177          result = result && rs;
2178          if (rs) {
2179            this.invalid[checkElement.name] = false;
2180          } else {
2181            this.invalid[checkElement.name] = true;
2182          }
2183          if (!this.numberOfInvalids()) {
2184            // Hide error containers on last error
2185            this.toHide = this.toHide.add(this.containers);
2186          }
2187          this.showErrors();
2188
2189          // Add aria-invalid status for screen readers
2190          $(_element).attr("aria-invalid", !rs);
2191        }
2192        return result;
2193      },
2194      // https://jqueryvalidation.org/Validator.showErrors/
2195      showErrors: function showErrors(errors) {
2196        if (errors) {
2197          var validator = this;
2198
2199          // Add items to error list and map
2200          $.extend(this.errorMap, errors);
2201          this.errorList = $.map(this.errorMap, function (message, name) {
2202            return {
2203              message: message,
2204              element: validator.findByName(name)[0]
2205            };
2206          });
2207
2208          // Remove items from success list
2209          this.successList = $.grep(this.successList, function (element) {
2210            return !(element.name in errors);
2211          });
2212        }
2213        if (this.settings.showErrors) {
2214          this.settings.showErrors.call(this, this.errorMap, this.errorList);
2215        } else {
2216          this.defaultShowErrors();
2217        }
2218      },
2219      // https://jqueryvalidation.org/Validator.resetForm/
2220      resetForm: function resetForm() {
2221        if ($.fn.resetForm) {
2222          $(this.currentForm).resetForm();
2223        }
2224        this.invalid = {};
2225        this.submitted = {};
2226        this.prepareForm();
2227        this.hideErrors();
2228        var elements = this.elements().removeData("previousValue").removeAttr("aria-invalid");
2229        this.resetElements(elements);
2230      },
2231      resetElements: function resetElements(elements) {
2232        var i;
2233        if (this.settings.unhighlight) {
2234          for (i = 0; elements[i]; i++) {
2235            this.settings.unhighlight.call(this, elements[i], this.settings.errorClass, "");
2236            this.findByName(elements[i].name).removeClass(this.settings.validClass);
2237          }
2238        } else {
2239          elements.removeClass(this.settings.errorClass).removeClass(this.settings.validClass);
2240        }
2241      },
2242      numberOfInvalids: function numberOfInvalids() {
2243        return this.objectLength(this.invalid);
2244      },
2245      objectLength: function objectLength(obj) {
2246        /* jshint unused: false */
2247        var count = 0,
2248          i;
2249        for (i in obj) {
2250          // This check allows counting elements with empty error
2251          // message as invalid elements
2252          if (obj[i] !== undefined && obj[i] !== null && obj[i] !== false) {
2253            count++;
2254          }
2255        }
2256        return count;
2257      },
2258      hideErrors: function hideErrors() {
2259        this.hideThese(this.toHide);
2260      },
2261      hideThese: function hideThese(errors) {
2262        errors.not(this.containers).text("");
2263        this.addWrapper(errors).hide();
2264      },
2265      valid: function valid() {
2266        return this.size() === 0;
2267      },
2268      size: function size() {
2269        return this.errorList.length;
2270      },
2271      focusInvalid: function focusInvalid() {
2272        if (this.settings.focusInvalid) {
2273          try {
2274            $(this.findLastActive() || this.errorList.length && this.errorList[0].element || []).filter(":visible").trigger("focus")
2275
2276            // Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
2277            .trigger("focusin");
2278          } catch (e) {
2279
2280            // Ignore IE throwing errors when focusing hidden elements
2281          }
2282        }
2283      },
2284      findLastActive: function findLastActive() {
2285        var lastActive = this.lastActive;
2286        return lastActive && $.grep(this.errorList, function (n) {
2287          return n.element.name === lastActive.name;
2288        }).length === 1 && lastActive;
2289      },
2290      elements: function elements() {
2291        var validator = this,
2292          rulesCache = {},
2293          selectors = ["input", "select", "textarea", "[contenteditable]"];
2294
2295        // Select all valid inputs inside the form (no submit or reset buttons)
2296        return $(this.currentForm).find(selectors.concat(this.settings.customElements).join(", ")).not(":submit, :reset, :image, :disabled").not(this.settings.ignore).filter(function () {
2297          var name = this.name || $(this).attr("name"); // For contenteditable
2298          var isContentEditable = typeof $(this).attr("contenteditable") !== "undefined" && $(this).attr("contenteditable") !== "false";
2299          if (!name && validator.settings.debug && window.console) {
2300            console.error("%o has no name assigned", this);
2301          }
2302
2303          // Set form expando on contenteditable
2304          if (isContentEditable) {
2305            this.form = $(this).closest("form")[0];
2306            this.name = name;
2307          }
2308
2309          // Ignore elements that belong to other/nested forms
2310          if (this.form !== validator.currentForm) {
2311            return false;
2312          }
2313
2314          // Select only the first element for each name, and only those with rules specified
2315          if (name in rulesCache || !validator.objectLength($(this).rules())) {
2316            return false;
2317          }
2318          rulesCache[name] = true;
2319          return true;
2320        });
2321      },
2322      clean: function clean(selector) {
2323        return $(selector)[0];
2324      },
2325      errors: function errors() {
2326        var errorClass = this.settings.errorClass.split(" ").join(".");
2327        return $(this.settings.errorElement + "." + errorClass, this.errorContext);
2328      },
2329      resetInternals: function resetInternals() {
2330        this.successList = [];
2331        this.errorList = [];
2332        this.errorMap = {};
2333        this.toShow = $([]);
2334        this.toHide = $([]);
2335      },
2336      reset: function reset() {
2337        this.resetInternals();
2338        this.currentElements = $([]);
2339      },
2340      prepareForm: function prepareForm() {
2341        this.reset();
2342        this.toHide = this.errors().add(this.containers);
2343      },
2344      prepareElement: function prepareElement(element) {
2345        this.reset();
2346        this.toHide = this.errorsFor(element);
2347      },
2348      elementValue: function elementValue(element) {
2349        var $element = $(element),
2350          type = element.type,
2351          isContentEditable = typeof $element.attr("contenteditable") !== "undefined" && $element.attr("contenteditable") !== "false",
2352          val,
2353          idx;
2354        if (type === "radio" || type === "checkbox") {
2355          return this.findByName(element.name).filter(":checked").val();
2356        } else if (type === "number" && typeof element.validity !== "undefined") {
2357          return element.validity.badInput ? "NaN" : $element.val();
2358        }
2359        if (isContentEditable) {
2360          val = $element.text();
2361        } else {
2362          val = $element.val();
2363        }
2364        if (type === "file") {
2365          // Modern browser (chrome & safari)
2366          if (val.substr(0, 12) === "C:\\fakepath\\") {
2367            return val.substr(12);
2368          }
2369
2370          // Legacy browsers
2371          // Unix-based path
2372          idx = val.lastIndexOf("/");
2373          if (idx >= 0) {
2374            return val.substr(idx + 1);
2375          }
2376
2377          // Windows-based path
2378          idx = val.lastIndexOf("\\");
2379          if (idx >= 0) {
2380            return val.substr(idx + 1);
2381          }
2382
2383          // Just the file name
2384          return val;
2385        }
2386        if (typeof val === "string") {
2387          return val.replace(/\r/g, "");
2388        }
2389        return val;
2390      },
2391      check: function check(element) {
2392        element = this.validationTargetFor(this.clean(element));
2393        var rules = $(element).rules(),
2394          rulesCount = $.map(rules, function (n, i) {
2395            return i;
2396          }).length,
2397          dependencyMismatch = false,
2398          val = this.elementValue(element),
2399          result,
2400          method,
2401          rule,
2402          normalizer;
2403
2404        // Abort any pending Ajax request from a previous call to this method.
2405        this.abortRequest(element);
2406
2407        // Prioritize the local normalizer defined for this element over the global one
2408        // if the former exists, otherwise user the global one in case it exists.
2409        if (typeof rules.normalizer === "function") {
2410          normalizer = rules.normalizer;
2411        } else if (typeof this.settings.normalizer === "function") {
2412          normalizer = this.settings.normalizer;
2413        }
2414
2415        // If normalizer is defined, then call it to retreive the changed value instead
2416        // of using the real one.
2417        // Note that `this` in the normalizer is `element`.
2418        if (normalizer) {
2419          val = normalizer.call(element, val);
2420
2421          // Delete the normalizer from rules to avoid treating it as a pre-defined method.
2422          delete rules.normalizer;
2423        }
2424        for (method in rules) {
2425          rule = {
2426            method: method,
2427            parameters: rules[method]
2428          };
2429          try {
2430            result = $.validator.methods[method].call(this, val, element, rule.parameters);
2431
2432            // If a method indicates that the field is optional and therefore valid,
2433            // don't mark it as valid when there are no other rules
2434            if (result === "dependency-mismatch" && rulesCount === 1) {
2435              dependencyMismatch = true;
2436              continue;
2437            }
2438            dependencyMismatch = false;
2439            if (result === "pending") {
2440              this.toHide = this.toHide.not(this.errorsFor(element));
2441              return;
2442            }
2443            if (!result) {
2444              this.formatAndAdd(element, rule);
2445              return false;
2446            }
2447          } catch (e) {
2448            if (this.settings.debug && window.console) {
2449              console.log("Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.", e);
2450            }
2451            if (e instanceof TypeError) {
2452              e.message += ".  Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.";
2453            }
2454            throw e;
2455          }
2456        }
2457        if (dependencyMismatch) {
2458          return;
2459        }
2460        if (this.objectLength(rules)) {
2461          this.successList.push(element);
2462        }
2463        return true;
2464      },
2465      // Return the custom message for the given element and validation method
2466      // specified in the element's HTML5 data attribute
2467      // return the generic message if present and no method specific message is present
2468      customDataMessage: function customDataMessage(element, method) {
2469        return $(element).data("msg" + method.charAt(0).toUpperCase() + method.substring(1).toLowerCase()) || $(element).data("msg");
2470      },
2471      // Return the custom message for the given element name and validation method
2472      customMessage: function customMessage(name, method) {
2473        var m = this.settings.messages[name];
2474        return m && (m.constructor === String ? m : m[method]);
2475      },
2476      // Return the first defined argument, allowing empty strings
2477      findDefined: function findDefined() {
2478        for (var i = 0; i < arguments.length; i++) {
2479          if (arguments[i] !== undefined) {
2480            return arguments[i];
2481          }
2482        }
2483        return undefined;
2484      },
2485      // The second parameter 'rule' used to be a string, and extended to an object literal
2486      // of the following form:
2487      // rule = {
2488      //     method: "method name",
2489      //     parameters: "the given method parameters"
2490      // }
2491      //
2492      // The old behavior still supported, kept to maintain backward compatibility with
2493      // old code, and will be removed in the next major release.
2494      defaultMessage: function defaultMessage(element, rule) {
2495        if (typeof rule === "string") {
2496          rule = {
2497            method: rule
2498          };
2499        }
2500        var message = this.findDefined(this.customMessage(element.name, rule.method), this.customDataMessage(element, rule.method),
2501          // 'title' is never undefined, so handle empty string as undefined
2502          !this.settings.ignoreTitle && element.title || undefined, $.validator.messages[rule.method], "<strong>Warning: No message defined for " + element.name + "</strong>"),
2503          theregex = /\$?\{(\d+)\}/g;
2504        if (typeof message === "function") {
2505          message = message.call(this, rule.parameters, element);
2506        } else if (theregex.test(message)) {
2507          message = $.validator.format(message.replace(theregex, "{$1}"), rule.parameters);
2508        }
2509        return message;
2510      },
2511      formatAndAdd: function formatAndAdd(element, rule) {
2512        var message = this.defaultMessage(element, rule);
2513        this.errorList.push({
2514          message: message,
2515          element: element,
2516          method: rule.method
2517        });
2518        this.errorMap[element.name] = message;
2519        this.submitted[element.name] = message;
2520      },
2521      addWrapper: function addWrapper(toToggle) {
2522        if (this.settings.wrapper) {
2523          toToggle = toToggle.add(toToggle.parent(this.settings.wrapper));
2524        }
2525        return toToggle;
2526      },
2527      defaultShowErrors: function defaultShowErrors() {
2528        var i, elements, error;
2529        for (i = 0; this.errorList[i]; i++) {
2530          error = this.errorList[i];
2531          if (this.settings.highlight) {
2532            this.settings.highlight.call(this, error.element, this.settings.errorClass, this.settings.validClass);
2533          }
2534          this.showLabel(error.element, error.message);
2535        }
2536        if (this.errorList.length) {
2537          this.toShow = this.toShow.add(this.containers);
2538        }
2539        if (this.settings.success) {
2540          for (i = 0; this.successList[i]; i++) {
2541            this.showLabel(this.successList[i]);
2542          }
2543        }
2544        if (this.settings.unhighlight) {
2545          for (i = 0, elements = this.validElements(); elements[i]; i++) {
2546            this.settings.unhighlight.call(this, elements[i], this.settings.errorClass, this.settings.validClass);
2547          }
2548        }
2549        this.toHide = this.toHide.not(this.toShow);
2550        this.hideErrors();
2551        this.addWrapper(this.toShow).show();
2552      },
2553      validElements: function validElements() {
2554        return this.currentElements.not(this.invalidElements());
2555      },
2556      invalidElements: function invalidElements() {
2557        return $(this.errorList).map(function () {
2558          return this.element;
2559        });
2560      },
2561      showLabel: function showLabel(element, message) {
2562        var place,
2563          group,
2564          errorID,
2565          v,
2566          error = this.errorsFor(element),
2567          elementID = this.idOrName(element),
2568          describedBy = $(element).attr("aria-describedby");
2569        if (error.length) {
2570          // Refresh error/success class
2571          error.removeClass(this.settings.validClass).addClass(this.settings.errorClass);
2572
2573          // Replace message on existing label
2574          if (this.settings && this.settings.escapeHtml) {
2575            error.text(message || "");
2576          } else {
2577            error.html(message || "");
2578          }
2579        } else {
2580          // Create error element
2581          error = $("<" + this.settings.errorElement + ">").attr("id", elementID + "-error").addClass(this.settings.errorClass);
2582          if (this.settings && this.settings.escapeHtml) {
2583            error.text(message || "");
2584          } else {
2585            error.html(message || "");
2586          }
2587
2588          // Maintain reference to the element to be placed into the DOM
2589          place = error;
2590          if (this.settings.wrapper) {
2591            // Make sure the element is visible, even in IE
2592            // actually showing the wrapped element is handled elsewhere
2593            place = error.hide().show().wrap("<" + this.settings.wrapper + "/>").parent();
2594          }
2595          if (this.labelContainer.length) {
2596            this.labelContainer.append(place);
2597          } else if (this.settings.errorPlacement) {
2598            this.settings.errorPlacement.call(this, place, $(element));
2599          } else {
2600            place.insertAfter(element);
2601          }
2602
2603          // Link error back to the element
2604          if (error.is("label")) {
2605            // If the error is a label, then associate using 'for'
2606            error.attr("for", elementID);
2607
2608            // If the element is not a child of an associated label, then it's necessary
2609            // to explicitly apply aria-describedby
2610          } else if (error.parents("label[for='" + this.escapeCssMeta(elementID) + "']").length === 0) {
2611            errorID = error.attr("id");
2612
2613            // Respect existing non-error aria-describedby
2614            if (!describedBy) {
2615              describedBy = errorID;
2616            } else if (!describedBy.match(new RegExp("\\b" + this.escapeCssMeta(errorID) + "\\b"))) {
2617              // Add to end of list if not already present
2618              describedBy += " " + errorID;
2619            }
2620            $(element).attr("aria-describedby", describedBy);
2621
2622            // If this element is grouped, then assign to all elements in the same group
2623            group = this.groups[element.name];
2624            if (group) {
2625              v = this;
2626              $.each(v.groups, function (name, testgroup) {
2627                if (testgroup === group) {
2628                  $("[name='" + v.escapeCssMeta(name) + "']", v.currentForm).attr("aria-describedby", error.attr("id"));
2629                }
2630              });
2631            }
2632          }
2633        }
2634        if (!message && this.settings.success) {
2635          error.text("");
2636          if (typeof this.settings.success === "string") {
2637            error.addClass(this.settings.success);
2638          } else {
2639            this.settings.success(error, element);
2640          }
2641        }
2642        this.toShow = this.toShow.add(error);
2643      },
2644      errorsFor: function errorsFor(element) {
2645        var name = this.escapeCssMeta(this.idOrName(element)),
2646          describer = $(element).attr("aria-describedby"),
2647          selector = "label[for='" + name + "'], label[for='" + name + "'] *";
2648
2649        // 'aria-describedby' should directly reference the error element
2650        if (describer) {
2651          selector = selector + ", #" + this.escapeCssMeta(describer).replace(/\s+/g, ", #");
2652        }
2653        return this.errors().filter(selector);
2654      },
2655      // See https://api.jquery.com/category/selectors/, for CSS
2656      // meta-characters that should be escaped in order to be used with JQuery
2657      // as a literal part of a name/id or any selector.
2658      escapeCssMeta: function escapeCssMeta(string) {
2659        if (string === undefined) {
2660          return "";
2661        }
2662        return string.replace(/([\\!"#$%&'()*+,./:;<=>?@\[\]^`{|}~])/g, "\\$1");
2663      },
2664      idOrName: function idOrName(element) {
2665        return this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name);
2666      },
2667      validationTargetFor: function validationTargetFor(element) {
2668        // If radio/checkbox, validate first element in group instead
2669        if (this.checkable(element)) {
2670          element = this.findByName(element.name);
2671        }
2672
2673        // Always apply ignore filter
2674        return $(element).not(this.settings.ignore)[0];
2675      },
2676      checkable: function checkable(element) {
2677        return /radio|checkbox/i.test(element.type);
2678      },
2679      findByName: function findByName(name) {
2680        return $(this.currentForm).find("[name='" + this.escapeCssMeta(name) + "']");
2681      },
2682      getLength: function getLength(value, element) {
2683        switch (element.nodeName.toLowerCase()) {
2684          case "select":
2685            return $("option:selected", element).length;
2686          case "input":
2687            if (this.checkable(element)) {
2688              return this.findByName(element.name).filter(":checked").length;
2689            }
2690        }
2691        return value.length;
2692      },
2693      depend: function depend(param, element) {
2694        return this.dependTypes[_typeof(param)] ? this.dependTypes[_typeof(param)](param, element) : true;
2695      },
2696      dependTypes: {
2697        "boolean": function boolean(param) {
2698          return param;
2699        },
2700        "string": function string(param, element) {
2701          return !!$(param, element.form).length;
2702        },
2703        "function": function _function(param, element) {
2704          return param(element);
2705        }
2706      },
2707      optional: function optional(element) {
2708        var val = this.elementValue(element);
2709        return !$.validator.methods.required.call(this, val, element) && "dependency-mismatch";
2710      },
2711      elementAjaxPort: function elementAjaxPort(element) {
2712        return "validate" + element.name;
2713      },
2714      startRequest: function startRequest(element) {
2715        if (!this.pending[element.name]) {
2716          this.pendingRequest++;
2717          $(element).addClass(this.settings.pendingClass);
2718          this.pending[element.name] = true;
2719        }
2720      },
2721      stopRequest: function stopRequest(element, valid) {
2722        this.pendingRequest--;
2723
2724        // Sometimes synchronization fails, make sure pendingRequest is never < 0
2725        if (this.pendingRequest < 0) {
2726          this.pendingRequest = 0;
2727        }
2728        delete this.pending[element.name];
2729        $(element).removeClass(this.settings.pendingClass);
2730        if (valid && this.pendingRequest === 0 && this.formSubmitted && this.form() && this.pendingRequest === 0) {
2731          $(this.currentForm).trigger("submit");
2732
2733          // Remove the hidden input that was used as a replacement for the
2734          // missing submit button. The hidden input is added by `handle()`
2735          // to ensure that the value of the used submit button is passed on
2736          // for scripted submits triggered by this method
2737          if (this.submitButton) {
2738            $("input:hidden[name='" + this.submitButton.name + "']", this.currentForm).remove();
2739          }
2740          this.formSubmitted = false;
2741        } else if (!valid && this.pendingRequest === 0 && this.formSubmitted) {
2742          $(this.currentForm).triggerHandler("invalid-form", [this]);
2743          this.formSubmitted = false;
2744        }
2745      },
2746      abortRequest: function abortRequest(element) {
2747        var port;
2748        if (this.pending[element.name]) {
2749          port = this.elementAjaxPort(element);
2750          $.ajaxAbort(port);
2751          this.pendingRequest--;
2752
2753          // Sometimes synchronization fails, make sure pendingRequest is never < 0
2754          if (this.pendingRequest < 0) {
2755            this.pendingRequest = 0;
2756          }
2757          delete this.pending[element.name];
2758          $(element).removeClass(this.settings.pendingClass);
2759        }
2760      },
2761      previousValue: function previousValue(element, method) {
2762        method = typeof method === "string" && method || "remote";
2763        return $.data(element, "previousValue") || $.data(element, "previousValue", {
2764          old: null,
2765          valid: true,
2766          message: this.defaultMessage(element, {
2767            method: method
2768          })
2769        });
2770      },
2771      // Cleans up all forms and elements, removes validator-specific events
2772      destroy: function destroy() {
2773        this.resetForm();
2774        $(this.currentForm).off(".validate").removeData("validator").find(".validate-equalTo-blur").off(".validate-equalTo").removeClass("validate-equalTo-blur").find(".validate-lessThan-blur").off(".validate-lessThan").removeClass("validate-lessThan-blur").find(".validate-lessThanEqual-blur").off(".validate-lessThanEqual").removeClass("validate-lessThanEqual-blur").find(".validate-greaterThanEqual-blur").off(".validate-greaterThanEqual").removeClass("validate-greaterThanEqual-blur").find(".validate-greaterThan-blur").off(".validate-greaterThan").removeClass("validate-greaterThan-blur");
2775      }
2776    },
2777    classRuleSettings: {
2778      required: {
2779        required: true
2780      },
2781      email: {
2782        email: true
2783      },
2784      url: {
2785        url: true
2786      },
2787      date: {
2788        date: true
2789      },
2790      dateISO: {
2791        dateISO: true
2792      },
2793      number: {
2794        number: true
2795      },
2796      digits: {
2797        digits: true
2798      },
2799      creditcard: {
2800        creditcard: true
2801      }
2802    },
2803    addClassRules: function addClassRules(className, rules) {
2804      if (className.constructor === String) {
2805        this.classRuleSettings[className] = rules;
2806      } else {
2807        $.extend(this.classRuleSettings, className);
2808      }
2809    },
2810    classRules: function classRules(element) {
2811      var rules = {},
2812        classes = $(element).attr("class");
2813      if (classes) {
2814        $.each(classes.split(" "), function () {
2815          if (this in $.validator.classRuleSettings) {
2816            $.extend(rules, $.validator.classRuleSettings[this]);
2817          }
2818        });
2819      }
2820      return rules;
2821    },
2822    normalizeAttributeRule: function normalizeAttributeRule(rules, type, method, value) {
2823      // Convert the value to a number for number inputs, and for text for backwards compability
2824      // allows type="date" and others to be compared as strings
2825      if (/min|max|step/.test(method) && (type === null || /number|range|text/.test(type))) {
2826        value = Number(value);
2827
2828        // Support Opera Mini, which returns NaN for undefined minlength
2829        if (isNaN(value)) {
2830          value = undefined;
2831        }
2832      }
2833      if (value || value === 0) {
2834        rules[method] = value;
2835      } else if (type === method && type !== "range") {
2836        // Exception: the jquery validate 'range' method
2837        // does not test for the html5 'range' type
2838        rules[type === "date" ? "dateISO" : method] = true;
2839      }
2840    },
2841    attributeRules: function attributeRules(element) {
2842      var rules = {},
2843        $element = $(element),
2844        type = element.getAttribute("type"),
2845        method,
2846        value;
2847      for (method in $.validator.methods) {
2848        // Support for <input required> in both html5 and older browsers
2849        if (method === "required") {
2850          value = element.getAttribute(method);
2851
2852          // Some browsers return an empty string for the required attribute
2853          // and non-HTML5 browsers might have required="" markup
2854          if (value === "") {
2855            value = true;
2856          }
2857
2858          // Force non-HTML5 browsers to return bool
2859          value = !!value;
2860        } else {
2861          value = $element.attr(method);
2862        }
2863        this.normalizeAttributeRule(rules, type, method, value);
2864      }
2865
2866      // 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs
2867      if (rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength)) {
2868        delete rules.maxlength;
2869      }
2870      return rules;
2871    },
2872    dataRules: function dataRules(element) {
2873      var rules = {},
2874        $element = $(element),
2875        type = element.getAttribute("type"),
2876        method,
2877        value;
2878      for (method in $.validator.methods) {
2879        value = $element.data("rule" + method.charAt(0).toUpperCase() + method.substring(1).toLowerCase());
2880
2881        // Cast empty attributes like `data-rule-required` to `true`
2882        if (value === "") {
2883          value = true;
2884        }
2885        this.normalizeAttributeRule(rules, type, method, value);
2886      }
2887      return rules;
2888    },
2889    staticRules: function staticRules(element) {
2890      var rules = {},
2891        validator = $.data(element.form, "validator");
2892      if (validator.settings.rules) {
2893        rules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {};
2894      }
2895      return rules;
2896    },
2897    normalizeRules: function normalizeRules(rules, element) {
2898      // Handle dependency check
2899      $.each(rules, function (prop, val) {
2900        // Ignore rule when param is explicitly false, eg. required:false
2901        if (val === false) {
2902          delete rules[prop];
2903          return;
2904        }
2905        if (val.param || val.depends) {
2906          var keepRule = true;
2907          switch (_typeof(val.depends)) {
2908            case "string":
2909              keepRule = !!$(val.depends, element.form).length;
2910              break;
2911            case "function":
2912              keepRule = val.depends.call(element, element);
2913              break;
2914          }
2915          if (keepRule) {
2916            rules[prop] = val.param !== undefined ? val.param : true;
2917          } else {
2918            $.data(element.form, "validator").resetElements($(element));
2919            delete rules[prop];
2920          }
2921        }
2922      });
2923
2924      // Evaluate parameters
2925      $.each(rules, function (rule, parameter) {
2926        rules[rule] = typeof parameter === "function" && rule !== "normalizer" ? parameter(element) : parameter;
2927      });
2928
2929      // Clean number parameters
2930      $.each(["minlength", "maxlength"], function () {
2931        if (rules[this]) {
2932          rules[this] = Number(rules[this]);
2933        }
2934      });
2935      $.each(["rangelength", "range"], function () {
2936        var parts;
2937        if (rules[this]) {
2938          if (Array.isArray(rules[this])) {
2939            rules[this] = [Number(rules[this][0]), Number(rules[this][1])];
2940          } else if (typeof rules[this] === "string") {
2941            parts = rules[this].replace(/[\[\]]/g, "").split(/[\s,]+/);
2942            rules[this] = [Number(parts[0]), Number(parts[1])];
2943          }
2944        }
2945      });
2946      if ($.validator.autoCreateRanges) {
2947        // Auto-create ranges
2948        if (rules.min != null && rules.max != null) {
2949          rules.range = [rules.min, rules.max];
2950          delete rules.min;
2951          delete rules.max;
2952        }
2953        if (rules.minlength != null && rules.maxlength != null) {
2954          rules.rangelength = [rules.minlength, rules.maxlength];
2955          delete rules.minlength;
2956          delete rules.maxlength;
2957        }
2958      }
2959      return rules;
2960    },
2961    // Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}
2962    normalizeRule: function normalizeRule(data) {
2963      if (typeof data === "string") {
2964        var transformed = {};
2965        $.each(data.split(/\s/), function () {
2966          transformed[this] = true;
2967        });
2968        data = transformed;
2969      }
2970      return data;
2971    },
2972    // https://jqueryvalidation.org/jQuery.validator.addMethod/
2973    addMethod: function addMethod(name, method, message) {
2974      $.validator.methods[name] = method;
2975      $.validator.messages[name] = message !== undefined ? message : $.validator.messages[name];
2976      if (method.length < 3) {
2977        $.validator.addClassRules(name, $.validator.normalizeRule(name));
2978      }
2979    },
2980    // https://jqueryvalidation.org/jQuery.validator.methods/
2981    methods: {
2982      // https://jqueryvalidation.org/required-method/
2983      required: function required(value, element, param) {
2984        // Check if dependency is met
2985        if (!this.depend(param, element)) {
2986          return "dependency-mismatch";
2987        }
2988        if (element.nodeName.toLowerCase() === "select") {
2989          // Could be an array for select-multiple or a string, both are fine this way
2990          var val = $(element).val();
2991          return val && val.length > 0;
2992        }
2993        if (this.checkable(element)) {
2994          return this.getLength(value, element) > 0;
2995        }
2996        return value !== undefined && value !== null && value.length > 0;
2997      },
2998      // https://jqueryvalidation.org/email-method/
2999      email: function email(value, element) {
3000        // From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address
3001        // Retrieved 2014-01-14
3002        // If you have a problem with this implementation, report a bug against the above spec
3003        // Or use custom methods to implement your own email validation
3004        return this.optional(element) || /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(value);
3005      },
3006      // https://jqueryvalidation.org/url-method/
3007      url: function url(value, element) {
3008        // Copyright (c) 2010-2013 Diego Perini, MIT licensed
3009        // https://gist.github.com/dperini/729294
3010        // see also https://mathiasbynens.be/demo/url-regex
3011        // modified to allow protocol-relative URLs
3012        return this.optional(element) || /^(?:(?:(?:https?|ftp):)?\/\/)(?:(?:[^\]\[?\/<~#`!@$^&*()+=}|:";',>{ ]|%[0-9A-Fa-f]{2})+(?::(?:[^\]\[?\/<~#`!@$^&*()+=}|:";',>{ ]|%[0-9A-Fa-f]{2})*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i.test(value);
3013      },
3014      // https://jqueryvalidation.org/date-method/
3015      date: function () {
3016        var called = false;
3017        return function (value, element) {
3018          if (!called) {
3019            called = true;
3020            if (this.settings.debug && window.console) {
3021              console.warn("The `date` method is deprecated and will be removed in version '2.0.0'.\n" + "Please don't use it, since it relies on the Date constructor, which\n" + "behaves very differently across browsers and locales. Use `dateISO`\n" + "instead or one of the locale specific methods in `localizations/`\n" + "and `additional-methods.js`.");
3022            }
3023          }
3024          return this.optional(element) || !/Invalid|NaN/.test(new Date(value).toString());
3025        };
3026      }(),
3027      // https://jqueryvalidation.org/dateISO-method/
3028      dateISO: function dateISO(value, element) {
3029        return this.optional(element) || /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(value);
3030      },
3031      // https://jqueryvalidation.org/number-method/
3032      number: function number(value, element) {
3033        return this.optional(element) || /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:-?\.\d+)?$/.test(value);
3034      },
3035      // https://jqueryvalidation.org/digits-method/
3036      digits: function digits(value, element) {
3037        return this.optional(element) || /^\d+$/.test(value);
3038      },
3039      // https://jqueryvalidation.org/minlength-method/
3040      minlength: function minlength(value, element, param) {
3041        var length = Array.isArray(value) ? value.length : this.getLength(value, element);
3042        return this.optional(element) || length >= param;
3043      },
3044      // https://jqueryvalidation.org/maxlength-method/
3045      maxlength: function maxlength(value, element, param) {
3046        var length = Array.isArray(value) ? value.length : this.getLength(value, element);
3047        return this.optional(element) || length <= param;
3048      },
3049      // https://jqueryvalidation.org/rangelength-method/
3050      rangelength: function rangelength(value, element, param) {
3051        var length = Array.isArray(value) ? value.length : this.getLength(value, element);
3052        return this.optional(element) || length >= param[0] && length <= param[1];
3053      },
3054      // https://jqueryvalidation.org/min-method/
3055      min: function min(value, element, param) {
3056        return this.optional(element) || value >= param;
3057      },
3058      // https://jqueryvalidation.org/max-method/
3059      max: function max(value, element, param) {
3060        return this.optional(element) || value <= param;
3061      },
3062      // https://jqueryvalidation.org/range-method/
3063      range: function range(value, element, param) {
3064        return this.optional(element) || value >= param[0] && value <= param[1];
3065      },
3066      // https://jqueryvalidation.org/step-method/
3067      step: function step(value, element, param) {
3068        var type = $(element).attr("type"),
3069          errorMessage = "Step attribute on input type " + type + " is not supported.",
3070          supportedTypes = ["text", "number", "range"],
3071          re = new RegExp("\\b" + type + "\\b"),
3072          notSupported = type && !re.test(supportedTypes.join()),
3073          decimalPlaces = function decimalPlaces(num) {
3074            var match = ("" + num).match(/(?:\.(\d+))?$/);
3075            if (!match) {
3076              return 0;
3077            }
3078
3079            // Number of digits right of decimal point.
3080            return match[1] ? match[1].length : 0;
3081          },
3082          toInt = function toInt(num) {
3083            return Math.round(num * Math.pow(10, decimals));
3084          },
3085          valid = true,
3086          decimals;
3087
3088        // Works only for text, number and range input types
3089        // TODO find a way to support input types date, datetime, datetime-local, month, time and week
3090        if (notSupported) {
3091          throw new Error(errorMessage);
3092        }
3093        decimals = decimalPlaces(param);
3094
3095        // Value can't have too many decimals
3096        if (decimalPlaces(value) > decimals || toInt(value) % toInt(param) !== 0) {
3097          valid = false;
3098        }
3099        return this.optional(element) || valid;
3100      },
3101      // https://jqueryvalidation.org/equalTo-method/
3102      equalTo: function equalTo(value, element, param) {
3103        // Bind to the blur event of the target in order to revalidate whenever the target field is updated
3104        var target = $(param);
3105        if (this.settings.onfocusout && target.not(".validate-equalTo-blur").length) {
3106          target.addClass("validate-equalTo-blur").on("blur.validate-equalTo", function () {
3107            $(element).valid();
3108          });
3109        }
3110        return value === target.val();
3111      },
3112      // https://jqueryvalidation.org/remote-method/
3113      remote: function remote(value, element, param, method) {
3114        if (this.optional(element)) {
3115          return "dependency-mismatch";
3116        }
3117        method = typeof method === "string" && method || "remote";
3118        var previous = this.previousValue(element, method),
3119          validator,
3120          data,
3121          optionDataString;
3122        if (!this.settings.messages[element.name]) {
3123          this.settings.messages[element.name] = {};
3124        }
3125        previous.originalMessage = previous.originalMessage || this.settings.messages[element.name][method];
3126        this.settings.messages[element.name][method] = previous.message;
3127        param = typeof param === "string" && {
3128          url: param
3129        } || param;
3130        optionDataString = $.param($.extend({
3131          data: value
3132        }, param.data));
3133        if (previous.valid !== null && previous.old === optionDataString) {
3134          return previous.valid;
3135        }
3136        previous.old = optionDataString;
3137        previous.valid = null;
3138        validator = this;
3139        this.startRequest(element);
3140        data = {};
3141        data[element.name] = value;
3142        $.ajax($.extend(true, {
3143          mode: "abort",
3144          port: this.elementAjaxPort(element),
3145          dataType: "json",
3146          data: data,
3147          context: validator.currentForm,
3148          success: function success(response) {
3149            var valid = response === true || response === "true",
3150              errors,
3151              message,
3152              submitted;
3153            validator.settings.messages[element.name][method] = previous.originalMessage;
3154            if (valid) {
3155              submitted = validator.formSubmitted;
3156              validator.toHide = validator.errorsFor(element);
3157              validator.formSubmitted = submitted;
3158              validator.successList.push(element);
3159              validator.invalid[element.name] = false;
3160              validator.showErrors();
3161            } else {
3162              errors = {};
3163              message = response || validator.defaultMessage(element, {
3164                method: method,
3165                parameters: value
3166              });
3167              errors[element.name] = previous.message = message;
3168              validator.invalid[element.name] = true;
3169              validator.showErrors(errors);
3170            }
3171            previous.valid = valid;
3172            validator.stopRequest(element, valid);
3173          }
3174        }, param));
3175        return "pending";
3176      }
3177    }
3178  });
3179
3180  // Ajax mode: abort
3181  // usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
3182  //        $.ajaxAbort( port );
3183  // if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
3184
3185  var pendingRequests = {},
3186    ajax;
3187
3188  // Use a prefilter if available (1.5+)
3189  if ($.ajaxPrefilter) {
3190    $.ajaxPrefilter(function (settings, _, xhr) {
3191      var port = settings.port;
3192      if (settings.mode === "abort") {
3193        $.ajaxAbort(port);
3194        pendingRequests[port] = xhr;
3195      }
3196    });
3197  } else {
3198    // Proxy ajax
3199    ajax = $.ajax;
3200    $.ajax = function (settings) {
3201      var mode = ("mode" in settings ? settings : $.ajaxSettings).mode,
3202        port = ("port" in settings ? settings : $.ajaxSettings).port;
3203      if (mode === "abort") {
3204        $.ajaxAbort(port);
3205        pendingRequests[port] = ajax.apply(this, arguments);
3206        return pendingRequests[port];
3207      }
3208      return ajax.apply(this, arguments);
3209    };
3210  }
3211
3212  // Abort the previous request without sending a new one
3213  $.ajaxAbort = function (port) {
3214    if (pendingRequests[port]) {
3215      pendingRequests[port].abort();
3216      delete pendingRequests[port];
3217    }
3218  };
3219  return $;
3220});
3221
3222/***/ }),
3223
vendor: 319,032 bytes, lines 3224-12234
3224/***/ "./node_modules/jquery/dist/jquery.js":
3225/*!********************************************!*\
3226  !*** ./node_modules/jquery/dist/jquery.js ***!
3227  \********************************************/
3228/***/ (function(module, exports, __webpack_require__) {
3229
3230/* module decorator */ module = __webpack_require__.nmd(module);
3231var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
3232/*!
3233 * jQuery JavaScript Library v3.7.1
3234 * https://jquery.com/
3235 *
3236 * Copyright OpenJS Foundation and other contributors
3237 * Released under the MIT license
3238 * https://jquery.org/license
3239 *
3240 * Date: 2023-08-28T13:37Z
3241 */
3242(function (global, factory) {
3243  "use strict";
3244
3245  if (( false ? 0 : _typeof(module)) === "object" && _typeof(module.exports) === "object") {
3246    // For CommonJS and CommonJS-like environments where a proper `window`
3247    // is present, execute the factory and get jQuery.
3248    // For environments that do not have a `window` with a `document`
3249    // (such as Node.js), expose a factory as module.exports.
3250    // This accentuates the need for the creation of a real `window`.
3251    // e.g. var jQuery = require("jquery")(window);
3252    // See ticket trac-14549 for more info.
3253    module.exports = global.document ? factory(global, true) : function (w) {
3254      if (!w.document) {
3255        throw new Error("jQuery requires a window with a document");
3256      }
3257      return factory(w);
3258    };
3259  } else {
3260    factory(global);
3261  }
3262
3263  // Pass this if window is not defined yet
3264})(typeof window !== "undefined" ? window : this, function (window, noGlobal) {
3265  // Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
3266  // throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
3267  // arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
3268  // enough that all such attempts are guarded in a try block.
3269  "use strict";
3270
3271  var arr = [];
3272  var getProto = Object.getPrototypeOf;
3273  var _slice = arr.slice;
3274  var flat = arr.flat ? function (array) {
3275    return arr.flat.call(array);
3276  } : function (array) {
3277    return arr.concat.apply([], array);
3278  };
3279  var push = arr.push;
3280  var indexOf = arr.indexOf;
3281  var class2type = {};
3282  var toString = class2type.toString;
3283  var hasOwn = class2type.hasOwnProperty;
3284  var fnToString = hasOwn.toString;
3285  var ObjectFunctionString = fnToString.call(Object);
3286  var support = {};
3287  var isFunction = function isFunction(obj) {
3288    // Support: Chrome <=57, Firefox <=52
3289    // In some browsers, typeof returns "function" for HTML <object> elements
3290    // (i.e., `typeof document.createElement( "object" ) === "function"`).
3291    // We don't want to classify *any* DOM node as a function.
3292    // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5
3293    // Plus for old WebKit, typeof returns "function" for HTML collections
3294    // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756)
3295    return typeof obj === "function" && typeof obj.nodeType !== "number" && typeof obj.item !== "function";
3296  };
3297  var isWindow = function isWindow(obj) {
3298    return obj != null && obj === obj.window;
3299  };
3300  var document = window.document;
3301  var preservedScriptAttributes = {
3302    type: true,
3303    src: true,
3304    nonce: true,
3305    noModule: true
3306  };
3307  function DOMEval(code, node, doc) {
3308    doc = doc || document;
3309    var i,
3310      val,
3311      script = doc.createElement("script");
3312    script.text = code;
3313    if (node) {
3314      for (i in preservedScriptAttributes) {
3315        // Support: Firefox 64+, Edge 18+
3316        // Some browsers don't support the "nonce" property on scripts.
3317        // On the other hand, just using `getAttribute` is not enough as
3318        // the `nonce` attribute is reset to an empty string whenever it
3319        // becomes browsing-context connected.
3320        // See https://github.com/whatwg/html/issues/2369
3321        // See https://html.spec.whatwg.org/#nonce-attributes
3322        // The `node.getAttribute` check was added for the sake of
3323        // `jQuery.globalEval` so that it can fake a nonce-containing node
3324        // via an object.
3325        val = node[i] || node.getAttribute && node.getAttribute(i);
3326        if (val) {
3327          script.setAttribute(i, val);
3328        }
3329      }
3330    }
3331    doc.head.appendChild(script).parentNode.removeChild(script);
3332  }
3333  function toType(obj) {
3334    if (obj == null) {
3335      return obj + "";
3336    }
3337
3338    // Support: Android <=2.3 only (functionish RegExp)
3339    return _typeof(obj) === "object" || typeof obj === "function" ? class2type[toString.call(obj)] || "object" : _typeof(obj);
3340  }
3341  /* global Symbol */
3342  // Defining this global in .eslintrc.json would create a danger of using the global
3343  // unguarded in another place, it seems safer to define global only for this module
3344
3345  var version = "3.7.1",
3346    rhtmlSuffix = /HTML$/i,
3347    // Define a local copy of jQuery
3348    _jQuery2 = function jQuery(selector, context) {
3349      // The jQuery object is actually just the init constructor 'enhanced'
3350      // Need init if jQuery is called (just allow error to be thrown if not included)
3351      return new _jQuery2.fn.init(selector, context);
3352    };
3353  _jQuery2.fn = _jQuery2.prototype = {
3354    // The current version of jQuery being used
3355    jquery: version,
3356    constructor: _jQuery2,
3357    // The default length of a jQuery object is 0
3358    length: 0,
3359    toArray: function toArray() {
3360      return _slice.call(this);
3361    },
3362    // Get the Nth element in the matched element set OR
3363    // Get the whole matched element set as a clean array
3364    get: function get(num) {
3365      // Return all the elements in a clean array
3366      if (num == null) {
3367        return _slice.call(this);
3368      }
3369
3370      // Return just the one element from the set
3371      return num < 0 ? this[num + this.length] : this[num];
3372    },
3373    // Take an array of elements and push it onto the stack
3374    // (returning the new matched element set)
3375    pushStack: function pushStack(elems) {
3376      // Build a new jQuery matched element set
3377      var ret = _jQuery2.merge(this.constructor(), elems);
3378
3379      // Add the old object onto the stack (as a reference)
3380      ret.prevObject = this;
3381
3382      // Return the newly-formed element set
3383      return ret;
3384    },
3385    // Execute a callback for every element in the matched set.
3386    each: function each(callback) {
3387      return _jQuery2.each(this, callback);
3388    },
3389    map: function map(callback) {
3390      return this.pushStack(_jQuery2.map(this, function (elem, i) {
3391        return callback.call(elem, i, elem);
3392      }));
3393    },
3394    slice: function slice() {
3395      return this.pushStack(_slice.apply(this, arguments));
3396    },
3397    first: function first() {
3398      return this.eq(0);
3399    },
3400    last: function last() {
3401      return this.eq(-1);
3402    },
3403    even: function even() {
3404      return this.pushStack(_jQuery2.grep(this, function (_elem, i) {
3405        return (i + 1) % 2;
3406      }));
3407    },
3408    odd: function odd() {
3409      return this.pushStack(_jQuery2.grep(this, function (_elem, i) {
3410        return i % 2;
3411      }));
3412    },
3413    eq: function eq(i) {
3414      var len = this.length,
3415        j = +i + (i < 0 ? len : 0);
3416      return this.pushStack(j >= 0 && j < len ? [this[j]] : []);
3417    },
3418    end: function end() {
3419      return this.prevObject || this.constructor();
3420    },
3421    // For internal use only.
3422    // Behaves like an Array's method, not like a jQuery method.
3423    push: push,
3424    sort: arr.sort,
3425    splice: arr.splice
3426  };
3427  _jQuery2.extend = _jQuery2.fn.extend = function () {
3428    var options,
3429      name,
3430      src,
3431      copy,
3432      copyIsArray,
3433      clone,
3434      target = arguments[0] || {},
3435      i = 1,
3436      length = arguments.length,
3437      deep = false;
3438
3439    // Handle a deep copy situation
3440    if (typeof target === "boolean") {
3441      deep = target;
3442
3443      // Skip the boolean and the target
3444      target = arguments[i] || {};
3445      i++;
3446    }
3447
3448    // Handle case when target is a string or something (possible in deep copy)
3449    if (_typeof(target) !== "object" && !isFunction(target)) {
3450      target = {};
3451    }
3452
3453    // Extend jQuery itself if only one argument is passed
3454    if (i === length) {
3455      target = this;
3456      i--;
3457    }
3458    for (; i < length; i++) {
3459      // Only deal with non-null/undefined values
3460      if ((options = arguments[i]) != null) {
3461        // Extend the base object
3462        for (name in options) {
3463          copy = options[name];
3464
3465          // Prevent Object.prototype pollution
3466          // Prevent never-ending loop
3467          if (name === "__proto__" || target === copy) {
3468            continue;
3469          }
3470
3471          // Recurse if we're merging plain objects or arrays
3472          if (deep && copy && (_jQuery2.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {
3473            src = target[name];
3474
3475            // Ensure proper type for the source value
3476            if (copyIsArray && !Array.isArray(src)) {
3477              clone = [];
3478            } else if (!copyIsArray && !_jQuery2.isPlainObject(src)) {
3479              clone = {};
3480            } else {
3481              clone = src;
3482            }
3483            copyIsArray = false;
3484
3485            // Never move original objects, clone them
3486            target[name] = _jQuery2.extend(deep, clone, copy);
3487
3488            // Don't bring in undefined values
3489          } else if (copy !== undefined) {
3490            target[name] = copy;
3491          }
3492        }
3493      }
3494    }
3495
3496    // Return the modified object
3497    return target;
3498  };
3499  _jQuery2.extend({
3500    // Unique for each copy of jQuery on the page
3501    expando: "jQuery" + (version + Math.random()).replace(/\D/g, ""),
3502    // Assume jQuery is ready without the ready module
3503    isReady: true,
3504    error: function error(msg) {
3505      throw new Error(msg);
3506    },
3507    noop: function noop() {},
3508    isPlainObject: function isPlainObject(obj) {
3509      var proto, Ctor;
3510
3511      // Detect obvious negatives
3512      // Use toString instead of jQuery.type to catch host objects
3513      if (!obj || toString.call(obj) !== "[object Object]") {
3514        return false;
3515      }
3516      proto = getProto(obj);
3517
3518      // Objects with no prototype (e.g., `Object.create( null )`) are plain
3519      if (!proto) {
3520        return true;
3521      }
3522
3523      // Objects with prototype are plain iff they were constructed by a global Object function
3524      Ctor = hasOwn.call(proto, "constructor") && proto.constructor;
3525      return typeof Ctor === "function" && fnToString.call(Ctor) === ObjectFunctionString;
3526    },
3527    isEmptyObject: function isEmptyObject(obj) {
3528      var name;
3529      for (name in obj) {
3530        return false;
3531      }
3532      return true;
3533    },
3534    // Evaluates a script in a provided context; falls back to the global one
3535    // if not specified.
3536    globalEval: function globalEval(code, options, doc) {
3537      DOMEval(code, {
3538        nonce: options && options.nonce
3539      }, doc);
3540    },
3541    each: function each(obj, callback) {
3542      var length,
3543        i = 0;
3544      if (isArrayLike(obj)) {
3545        length = obj.length;
3546        for (; i < length; i++) {
3547          if (callback.call(obj[i], i, obj[i]) === false) {
3548            break;
3549          }
3550        }
3551      } else {
3552        for (i in obj) {
3553          if (callback.call(obj[i], i, obj[i]) === false) {
3554            break;
3555          }
3556        }
3557      }
3558      return obj;
3559    },
3560    // Retrieve the text value of an array of DOM nodes
3561    text: function text(elem) {
3562      var node,
3563        ret = "",
3564        i = 0,
3565        nodeType = elem.nodeType;
3566      if (!nodeType) {
3567        // If no nodeType, this is expected to be an array
3568        while (node = elem[i++]) {
3569          // Do not traverse comment nodes
3570          ret += _jQuery2.text(node);
3571        }
3572      }
3573      if (nodeType === 1 || nodeType === 11) {
3574        return elem.textContent;
3575      }
3576      if (nodeType === 9) {
3577        return elem.documentElement.textContent;
3578      }
3579      if (nodeType === 3 || nodeType === 4) {
3580        return elem.nodeValue;
3581      }
3582
3583      // Do not include comment or processing instruction nodes
3584
3585      return ret;
3586    },
3587    // results is for internal usage only
3588    makeArray: function makeArray(arr, results) {
3589      var ret = results || [];
3590      if (arr != null) {
3591        if (isArrayLike(Object(arr))) {
3592          _jQuery2.merge(ret, typeof arr === "string" ? [arr] : arr);
3593        } else {
3594          push.call(ret, arr);
3595        }
3596      }
3597      return ret;
3598    },
3599    inArray: function inArray(elem, arr, i) {
3600      return arr == null ? -1 : indexOf.call(arr, elem, i);
3601    },
3602    isXMLDoc: function isXMLDoc(elem) {
3603      var namespace = elem && elem.namespaceURI,
3604        docElem = elem && (elem.ownerDocument || elem).documentElement;
3605
3606      // Assume HTML when documentElement doesn't yet exist, such as inside
3607      // document fragments.
3608      return !rhtmlSuffix.test(namespace || docElem && docElem.nodeName || "HTML");
3609    },
3610    // Support: Android <=4.0 only, PhantomJS 1 only
3611    // push.apply(_, arraylike) throws on ancient WebKit
3612    merge: function merge(first, second) {
3613      var len = +second.length,
3614        j = 0,
3615        i = first.length;
3616      for (; j < len; j++) {
3617        first[i++] = second[j];
3618      }
3619      first.length = i;
3620      return first;
3621    },
3622    grep: function grep(elems, callback, invert) {
3623      var callbackInverse,
3624        matches = [],
3625        i = 0,
3626        length = elems.length,
3627        callbackExpect = !invert;
3628
3629      // Go through the array, only saving the items
3630      // that pass the validator function
3631      for (; i < length; i++) {
3632        callbackInverse = !callback(elems[i], i);
3633        if (callbackInverse !== callbackExpect) {
3634          matches.push(elems[i]);
3635        }
3636      }
3637      return matches;
3638    },
3639    // arg is for internal usage only
3640    map: function map(elems, callback, arg) {
3641      var length,
3642        value,
3643        i = 0,
3644        ret = [];
3645
3646      // Go through the array, translating each of the items to their new values
3647      if (isArrayLike(elems)) {
3648        length = elems.length;
3649        for (; i < length; i++) {
3650          value = callback(elems[i], i, arg);
3651          if (value != null) {
3652            ret.push(value);
3653          }
3654        }
3655
3656        // Go through every key on the object,
3657      } else {
3658        for (i in elems) {
3659          value = callback(elems[i], i, arg);
3660          if (value != null) {
3661            ret.push(value);
3662          }
3663        }
3664      }
3665
3666      // Flatten any nested arrays
3667      return flat(ret);
3668    },
3669    // A global GUID counter for objects
3670    guid: 1,
3671    // jQuery.support is not used in Core but other projects attach their
3672    // properties to it so it needs to exist.
3673    support: support
3674  });
3675  if (typeof Symbol === "function") {
3676    _jQuery2.fn[Symbol.iterator] = arr[Symbol.iterator];
3677  }
3678
3679  // Populate the class2type map
3680  _jQuery2.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function (_i, name) {
3681    class2type["[object " + name + "]"] = name.toLowerCase();
3682  });
3683  function isArrayLike(obj) {
3684    // Support: real iOS 8.2 only (not reproducible in simulator)
3685    // `in` check used to prevent JIT error (gh-2145)
3686    // hasOwn isn't used here due to false negatives
3687    // regarding Nodelist length in IE
3688    var length = !!obj && "length" in obj && obj.length,
3689      type = toType(obj);
3690    if (isFunction(obj) || isWindow(obj)) {
3691      return false;
3692    }
3693    return type === "array" || length === 0 || typeof length === "number" && length > 0 && length - 1 in obj;
3694  }
3695  function nodeName(elem, name) {
3696    return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
3697  }
3698  var pop = arr.pop;
3699  var sort = arr.sort;
3700  var splice = arr.splice;
3701  var whitespace = "[\\x20\\t\\r\\n\\f]";
3702  var rtrimCSS = new RegExp("^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g");
3703
3704  // Note: an element does not contain itself
3705  _jQuery2.contains = function (a, b) {
3706    var bup = b && b.parentNode;
3707    return a === bup || !!(bup && bup.nodeType === 1 && (
3708    // Support: IE 9 - 11+
3709    // IE doesn't have `contains` on SVG.
3710    a.contains ? a.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16));
3711  };
3712
3713  // CSS string/identifier serialization
3714  // https://drafts.csswg.org/cssom/#common-serializing-idioms
3715  var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;
3716  function fcssescape(ch, asCodePoint) {
3717    if (asCodePoint) {
3718      // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
3719      if (ch === "\0") {
3720        return "\uFFFD";
3721      }
3722
3723      // Control characters and (dependent upon position) numbers get escaped as code points
3724      return ch.slice(0, -1) + "\\" + ch.charCodeAt(ch.length - 1).toString(16) + " ";
3725    }
3726
3727    // Other potentially-special ASCII characters get backslash-escaped
3728    return "\\" + ch;
3729  }
3730  _jQuery2.escapeSelector = function (sel) {
3731    return (sel + "").replace(rcssescape, fcssescape);
3732  };
3733  var preferredDoc = document,
3734    pushNative = push;
3735  (function () {
3736    var i,
3737      Expr,
3738      outermostContext,
3739      sortInput,
3740      hasDuplicate,
3741      push = pushNative,
3742      // Local document vars
3743      document,
3744      documentElement,
3745      documentIsHTML,
3746      rbuggyQSA,
3747      matches,
3748      // Instance-specific data
3749      expando = _jQuery2.expando,
3750      dirruns = 0,
3751      done = 0,
3752      classCache = createCache(),
3753      tokenCache = createCache(),
3754      compilerCache = createCache(),
3755      nonnativeSelectorCache = createCache(),
3756      sortOrder = function sortOrder(a, b) {
3757        if (a === b) {
3758          hasDuplicate = true;
3759        }
3760        return 0;
3761      },
3762      booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|" + "loop|multiple|open|readonly|required|scoped",
3763      // Regular expressions
3764
3765      // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram
3766      identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",
3767      // Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors
3768      attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
3769      // Operator (capture 2)
3770      "*([*^$|!~]?=)" + whitespace +
3771      // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
3772      "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + "*\\]",
3773      pseudos = ":(" + identifier + ")(?:\\((" +
3774      // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
3775      // 1. quoted (capture 3; capture 4 or capture 5)
3776      "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
3777      // 2. simple (capture 6)
3778      "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
3779      // 3. anything else (capture 2)
3780      ".*" + ")\\)|)",
3781      // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
3782      rwhitespace = new RegExp(whitespace + "+", "g"),
3783      rcomma = new RegExp("^" + whitespace + "*," + whitespace + "*"),
3784      rleadingCombinator = new RegExp("^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*"),
3785      rdescend = new RegExp(whitespace + "|>"),
3786      rpseudo = new RegExp(pseudos),
3787      ridentifier = new RegExp("^" + identifier + "$"),
3788      matchExpr = {
3789        ID: new RegExp("^#(" + identifier + ")"),
3790        CLASS: new RegExp("^\\.(" + identifier + ")"),
3791        TAG: new RegExp("^(" + identifier + "|[*])"),
3792        ATTR: new RegExp("^" + attributes),
3793        PSEUDO: new RegExp("^" + pseudos),
3794        CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i"),
3795        bool: new RegExp("^(?:" + booleans + ")$", "i"),
3796        // For use in libraries implementing .is()
3797        // We use this for POS matching in `select`
3798        needsContext: new RegExp("^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i")
3799      },
3800      rinputs = /^(?:input|select|textarea|button)$/i,
3801      rheader = /^h\d$/i,
3802      // Easily-parseable/retrievable ID or TAG or CLASS selectors
3803      rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
3804      rsibling = /[+~]/,
3805      // CSS escapes
3806      // https://www.w3.org/TR/CSS21/syndata.html#escaped-characters
3807      runescape = new RegExp("\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g"),
3808      funescape = function funescape(escape, nonHex) {
3809        var high = "0x" + escape.slice(1) - 0x10000;
3810        if (nonHex) {
3811          // Strip the backslash prefix from a non-hex escape sequence
3812          return nonHex;
3813        }
3814
3815        // Replace a hexadecimal escape sequence with the encoded Unicode code point
3816        // Support: IE <=11+
3817        // For values outside the Basic Multilingual Plane (BMP), manually construct a
3818        // surrogate pair
3819        return high < 0 ? String.fromCharCode(high + 0x10000) : String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00);
3820      },
3821      // Used for iframes; see `setDocument`.
3822      // Support: IE 9 - 11+, Edge 12 - 18+
3823      // Removing the function wrapper causes a "Permission Denied"
3824      // error in IE/Edge.
3825      unloadHandler = function unloadHandler() {
3826        setDocument();
3827      },
3828      inDisabledFieldset = addCombinator(function (elem) {
3829        return elem.disabled === true && nodeName(elem, "fieldset");
3830      }, {
3831        dir: "parentNode",
3832        next: "legend"
3833      });
3834
3835    // Support: IE <=9 only
3836    // Accessing document.activeElement can throw unexpectedly
3837    // https://bugs.jquery.com/ticket/13393
3838    function safeActiveElement() {
3839      try {
3840        return document.activeElement;
3841      } catch (err) {}
3842    }
3843
3844    // Optimize for push.apply( _, NodeList )
3845    try {
3846      push.apply(arr = _slice.call(preferredDoc.childNodes), preferredDoc.childNodes);
3847
3848      // Support: Android <=4.0
3849      // Detect silently failing push.apply
3850      // eslint-disable-next-line no-unused-expressions
3851      arr[preferredDoc.childNodes.length].nodeType;
3852    } catch (e) {
3853      push = {
3854        apply: function apply(target, els) {
3855          pushNative.apply(target, _slice.call(els));
3856        },
3857        call: function call(target) {
3858          pushNative.apply(target, _slice.call(arguments, 1));
3859        }
3860      };
3861    }
3862    function find(selector, context, results, seed) {
3863      var m,
3864        i,
3865        elem,
3866        nid,
3867        match,
3868        groups,
3869        newSelector,
3870        newContext = context && context.ownerDocument,
3871        // nodeType defaults to 9, since context defaults to document
3872        nodeType = context ? context.nodeType : 9;
3873      results = results || [];
3874
3875      // Return early from calls with invalid selector or context
3876      if (typeof selector !== "string" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) {
3877        return results;
3878      }
3879
3880      // Try to shortcut find operations (as opposed to filters) in HTML documents
3881      if (!seed) {
3882        setDocument(context);
3883        context = context || document;
3884        if (documentIsHTML) {
3885          // If the selector is sufficiently simple, try using a "get*By*" DOM method
3886          // (excepting DocumentFragment context, where the methods don't exist)
3887          if (nodeType !== 11 && (match = rquickExpr.exec(selector))) {
3888            // ID selector
3889            if (m = match[1]) {
3890              // Document context
3891              if (nodeType === 9) {
3892                if (elem = context.getElementById(m)) {
3893                  // Support: IE 9 only
3894                  // getElementById can match elements by name instead of ID
3895                  if (elem.id === m) {
3896                    push.call(results, elem);
3897                    return results;
3898                  }
3899                } else {
3900                  return results;
3901                }
3902
3903                // Element context
3904              } else {
3905                // Support: IE 9 only
3906                // getElementById can match elements by name instead of ID
3907                if (newContext && (elem = newContext.getElementById(m)) && find.contains(context, elem) && elem.id === m) {
3908                  push.call(results, elem);
3909                  return results;
3910                }
3911              }
3912
3913              // Type selector
3914            } else if (match[2]) {
3915              push.apply(results, context.getElementsByTagName(selector));
3916              return results;
3917
3918              // Class selector
3919            } else if ((m = match[3]) && context.getElementsByClassName) {
3920              push.apply(results, context.getElementsByClassName(m));
3921              return results;
3922            }
3923          }
3924
3925          // Take advantage of querySelectorAll
3926          if (!nonnativeSelectorCache[selector + " "] && (!rbuggyQSA || !rbuggyQSA.test(selector))) {
3927            newSelector = selector;
3928            newContext = context;
3929
3930            // qSA considers elements outside a scoping root when evaluating child or
3931            // descendant combinators, which is not what we want.
3932            // In such cases, we work around the behavior by prefixing every selector in the
3933            // list with an ID selector referencing the scope context.
3934            // The technique has to be used as well when a leading combinator is used
3935            // as such selectors are not recognized by querySelectorAll.
3936            // Thanks to Andrew Dupont for this technique.
3937            if (nodeType === 1 && (rdescend.test(selector) || rleadingCombinator.test(selector))) {
3938              // Expand context for sibling selectors
3939              newContext = rsibling.test(selector) && testContext(context.parentNode) || context;
3940
3941              // We can use :scope instead of the ID hack if the browser
3942              // supports it & if we're not changing the context.
3943              // Support: IE 11+, Edge 17 - 18+
3944              // IE/Edge sometimes throw a "Permission denied" error when
3945              // strict-comparing two documents; shallow comparisons work.
3946              // eslint-disable-next-line eqeqeq
3947              if (newContext != context || !support.scope) {
3948                // Capture the context ID, setting it first if necessary
3949                if (nid = context.getAttribute("id")) {
3950                  nid = _jQuery2.escapeSelector(nid);
3951                } else {
3952                  context.setAttribute("id", nid = expando);
3953                }
3954              }
3955
3956              // Prefix every selector in the list
3957              groups = tokenize(selector);
3958              i = groups.length;
3959              while (i--) {
3960                groups[i] = (nid ? "#" + nid : ":scope") + " " + toSelector(groups[i]);
3961              }
3962              newSelector = groups.join(",");
3963            }
3964            try {
3965              push.apply(results, newContext.querySelectorAll(newSelector));
3966              return results;
3967            } catch (qsaError) {
3968              nonnativeSelectorCache(selector, true);
3969            } finally {
3970              if (nid === expando) {
3971                context.removeAttribute("id");
3972              }
3973            }
3974          }
3975        }
3976      }
3977
3978      // All others
3979      return select(selector.replace(rtrimCSS, "$1"), context, results, seed);
3980    }
3981
3982    /**
3983     * Create key-value caches of limited size
3984     * @returns {function(string, object)} Returns the Object data after storing it on itself with
3985     *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
3986     *	deleting the oldest entry
3987     */
3988    function createCache() {
3989      var keys = [];
3990      function cache(key, value) {
3991        // Use (key + " ") to avoid collision with native prototype properties
3992        // (see https://github.com/jquery/sizzle/issues/157)
3993        if (keys.push(key + " ") > Expr.cacheLength) {
3994          // Only keep the most recent entries
3995          delete cache[keys.shift()];
3996        }
3997        return cache[key + " "] = value;
3998      }
3999      return cache;
4000    }
4001
4002    /**
4003     * Mark a function for special use by jQuery selector module
4004     * @param {Function} fn The function to mark
4005     */
4006    function markFunction(fn) {
4007      fn[expando] = true;
4008      return fn;
4009    }
4010
4011    /**
4012     * Support testing using an element
4013     * @param {Function} fn Passed the created element and returns a boolean result
4014     */
4015    function assert(fn) {
4016      var el = document.createElement("fieldset");
4017      try {
4018        return !!fn(el);
4019      } catch (e) {
4020        return false;
4021      } finally {
4022        // Remove from its parent by default
4023        if (el.parentNode) {
4024          el.parentNode.removeChild(el);
4025        }
4026
4027        // release memory in IE
4028        el = null;
4029      }
4030    }
4031
4032    /**
4033     * Returns a function to use in pseudos for input types
4034     * @param {String} type
4035     */
4036    function createInputPseudo(type) {
4037      return function (elem) {
4038        return nodeName(elem, "input") && elem.type === type;
4039      };
4040    }
4041
4042    /**
4043     * Returns a function to use in pseudos for buttons
4044     * @param {String} type
4045     */
4046    function createButtonPseudo(type) {
4047      return function (elem) {
4048        return (nodeName(elem, "input") || nodeName(elem, "button")) && elem.type === type;
4049      };
4050    }
4051
4052    /**
4053     * Returns a function to use in pseudos for :enabled/:disabled
4054     * @param {Boolean} disabled true for :disabled; false for :enabled
4055     */
4056    function createDisabledPseudo(disabled) {
4057      // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
4058      return function (elem) {
4059        // Only certain elements can match :enabled or :disabled
4060        // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
4061        // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
4062        if ("form" in elem) {
4063          // Check for inherited disabledness on relevant non-disabled elements:
4064          // * listed form-associated elements in a disabled fieldset
4065          //   https://html.spec.whatwg.org/multipage/forms.html#category-listed
4066          //   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
4067          // * option elements in a disabled optgroup
4068          //   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
4069          // All such elements have a "form" property.
4070          if (elem.parentNode && elem.disabled === false) {
4071            // Option elements defer to a parent optgroup if present
4072            if ("label" in elem) {
4073              if ("label" in elem.parentNode) {
4074                return elem.parentNode.disabled === disabled;
4075              } else {
4076                return elem.disabled === disabled;
4077              }
4078            }
4079
4080            // Support: IE 6 - 11+
4081            // Use the isDisabled shortcut property to check for disabled fieldset ancestors
4082            return elem.isDisabled === disabled ||
4083            // Where there is no isDisabled, check manually
4084            elem.isDisabled !== !disabled && inDisabledFieldset(elem) === disabled;
4085          }
4086          return elem.disabled === disabled;
4087
4088          // Try to winnow out elements that can't be disabled before trusting the disabled property.
4089          // Some victims get caught in our net (label, legend, menu, track), but it shouldn't
4090          // even exist on them, let alone have a boolean value.
4091        } else if ("label" in elem) {
4092          return elem.disabled === disabled;
4093        }
4094
4095        // Remaining elements are neither :enabled nor :disabled
4096        return false;
4097      };
4098    }
4099
4100    /**
4101     * Returns a function to use in pseudos for positionals
4102     * @param {Function} fn
4103     */
4104    function createPositionalPseudo(fn) {
4105      return markFunction(function (argument) {
4106        argument = +argument;
4107        return markFunction(function (seed, matches) {
4108          var j,
4109            matchIndexes = fn([], seed.length, argument),
4110            i = matchIndexes.length;
4111
4112          // Match elements found at the specified indexes
4113          while (i--) {
4114            if (seed[j = matchIndexes[i]]) {
4115              seed[j] = !(matches[j] = seed[j]);
4116            }
4117          }
4118        });
4119      });
4120    }
4121
4122    /**
4123     * Checks a node for validity as a jQuery selector context
4124     * @param {Element|Object=} context
4125     * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
4126     */
4127    function testContext(context) {
4128      return context && typeof context.getElementsByTagName !== "undefined" && context;
4129    }
4130
4131    /**
4132     * Sets document-related variables once based on the current document
4133     * @param {Element|Object} [node] An element or document object to use to set the document
4134     * @returns {Object} Returns the current document
4135     */
4136    function setDocument(node) {
4137      var subWindow,
4138        doc = node ? node.ownerDocument || node : preferredDoc;
4139
4140      // Return early if doc is invalid or already selected
4141      // Support: IE 11+, Edge 17 - 18+
4142      // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
4143      // two documents; shallow comparisons work.
4144      // eslint-disable-next-line eqeqeq
4145      if (doc == document || doc.nodeType !== 9 || !doc.documentElement) {
4146        return document;
4147      }
4148
4149      // Update global variables
4150      document = doc;
4151      documentElement = document.documentElement;
4152      documentIsHTML = !_jQuery2.isXMLDoc(document);
4153
4154      // Support: iOS 7 only, IE 9 - 11+
4155      // Older browsers didn't support unprefixed `matches`.
4156      matches = documentElement.matches || documentElement.webkitMatchesSelector || documentElement.msMatchesSelector;
4157
4158      // Support: IE 9 - 11+, Edge 12 - 18+
4159      // Accessing iframe documents after unload throws "permission denied" errors
4160      // (see trac-13936).
4161      // Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,
4162      // all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.
4163      if (documentElement.msMatchesSelector &&
4164      // Support: IE 11+, Edge 17 - 18+
4165      // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
4166      // two documents; shallow comparisons work.
4167      // eslint-disable-next-line eqeqeq
4168      preferredDoc != document && (subWindow = document.defaultView) && subWindow.top !== subWindow) {
4169        // Support: IE 9 - 11+, Edge 12 - 18+
4170        subWindow.addEventListener("unload", unloadHandler);
4171      }
4172
4173      // Support: IE <10
4174      // Check if getElementById returns elements by name
4175      // The broken getElementById methods don't pick up programmatically-set names,
4176      // so use a roundabout getElementsByName test
4177      support.getById = assert(function (el) {
4178        documentElement.appendChild(el).id = _jQuery2.expando;
4179        return !document.getElementsByName || !document.getElementsByName(_jQuery2.expando).length;
4180      });
4181
4182      // Support: IE 9 only
4183      // Check to see if it's possible to do matchesSelector
4184      // on a disconnected node.
4185      support.disconnectedMatch = assert(function (el) {
4186        return matches.call(el, "*");
4187      });
4188
4189      // Support: IE 9 - 11+, Edge 12 - 18+
4190      // IE/Edge don't support the :scope pseudo-class.
4191      support.scope = assert(function () {
4192        return document.querySelectorAll(":scope");
4193      });
4194
4195      // Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only
4196      // Make sure the `:has()` argument is parsed unforgivingly.
4197      // We include `*` in the test to detect buggy implementations that are
4198      // _selectively_ forgiving (specifically when the list includes at least
4199      // one valid selector).
4200      // Note that we treat complete lack of support for `:has()` as if it were
4201      // spec-compliant support, which is fine because use of `:has()` in such
4202      // environments will fail in the qSA path and fall back to jQuery traversal
4203      // anyway.
4204      support.cssHas = assert(function () {
4205        try {
4206          document.querySelector(":has(*,:jqfake)");
4207          return false;
4208        } catch (e) {
4209          return true;
4210        }
4211      });
4212
4213      // ID filter and find
4214      if (support.getById) {
4215        Expr.filter.ID = function (id) {
4216          var attrId = id.replace(runescape, funescape);
4217          return function (elem) {
4218            return elem.getAttribute("id") === attrId;
4219          };
4220        };
4221        Expr.find.ID = function (id, context) {
4222          if (typeof context.getElementById !== "undefined" && documentIsHTML) {
4223            var elem = context.getElementById(id);
4224            return elem ? [elem] : [];
4225          }
4226        };
4227      } else {
4228        Expr.filter.ID = function (id) {
4229          var attrId = id.replace(runescape, funescape);
4230          return function (elem) {
4231            var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
4232            return node && node.value === attrId;
4233          };
4234        };
4235
4236        // Support: IE 6 - 7 only
4237        // getElementById is not reliable as a find shortcut
4238        Expr.find.ID = function (id, context) {
4239          if (typeof context.getElementById !== "undefined" && documentIsHTML) {
4240            var node,
4241              i,
4242              elems,
4243              elem = context.getElementById(id);
4244            if (elem) {
4245              // Verify the id attribute
4246              node = elem.getAttributeNode("id");
4247              if (node && node.value === id) {
4248                return [elem];
4249              }
4250
4251              // Fall back on getElementsByName
4252              elems = context.getElementsByName(id);
4253              i = 0;
4254              while (elem = elems[i++]) {
4255                node = elem.getAttributeNode("id");
4256                if (node && node.value === id) {
4257                  return [elem];
4258                }
4259              }
4260            }
4261            return [];
4262          }
4263        };
4264      }
4265
4266      // Tag
4267      Expr.find.TAG = function (tag, context) {
4268        if (typeof context.getElementsByTagName !== "undefined") {
4269          return context.getElementsByTagName(tag);
4270
4271          // DocumentFragment nodes don't have gEBTN
4272        } else {
4273          return context.querySelectorAll(tag);
4274        }
4275      };
4276
4277      // Class
4278      Expr.find.CLASS = function (className, context) {
4279        if (typeof context.getElementsByClassName !== "undefined" && documentIsHTML) {
4280          return context.getElementsByClassName(className);
4281        }
4282      };
4283
4284      /* QSA/matchesSelector
4285      ---------------------------------------------------------------------- */
4286
4287      // QSA and matchesSelector support
4288
4289      rbuggyQSA = [];
4290
4291      // Build QSA regex
4292      // Regex strategy adopted from Diego Perini
4293      assert(function (el) {
4294        var input;
4295        documentElement.appendChild(el).innerHTML = "<a id='" + expando + "' href='' disabled='disabled'></a>" + "<select id='" + expando + "-\r\\' disabled='disabled'>" + "<option selected=''></option></select>";
4296
4297        // Support: iOS <=7 - 8 only
4298        // Boolean attributes and "value" are not treated correctly in some XML documents
4299        if (!el.querySelectorAll("[selected]").length) {
4300          rbuggyQSA.push("\\[" + whitespace + "*(?:value|" + booleans + ")");
4301        }
4302
4303        // Support: iOS <=7 - 8 only
4304        if (!el.querySelectorAll("[id~=" + expando + "-]").length) {
4305          rbuggyQSA.push("~=");
4306        }
4307
4308        // Support: iOS 8 only
4309        // https://bugs.webkit.org/show_bug.cgi?id=136851
4310        // In-page `selector#id sibling-combinator selector` fails
4311        if (!el.querySelectorAll("a#" + expando + "+*").length) {
4312          rbuggyQSA.push(".#.+[+~]");
4313        }
4314
4315        // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+
4316        // In some of the document kinds, these selectors wouldn't work natively.
4317        // This is probably OK but for backwards compatibility we want to maintain
4318        // handling them through jQuery traversal in jQuery 3.x.
4319        if (!el.querySelectorAll(":checked").length) {
4320          rbuggyQSA.push(":checked");
4321        }
4322
4323        // Support: Windows 8 Native Apps
4324        // The type and name attributes are restricted during .innerHTML assignment
4325        input = document.createElement("input");
4326        input.setAttribute("type", "hidden");
4327        el.appendChild(input).setAttribute("name", "D");
4328
4329        // Support: IE 9 - 11+
4330        // IE's :disabled selector does not pick up the children of disabled fieldsets
4331        // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+
4332        // In some of the document kinds, these selectors wouldn't work natively.
4333        // This is probably OK but for backwards compatibility we want to maintain
4334        // handling them through jQuery traversal in jQuery 3.x.
4335        documentElement.appendChild(el).disabled = true;
4336        if (el.querySelectorAll(":disabled").length !== 2) {
4337          rbuggyQSA.push(":enabled", ":disabled");
4338        }
4339
4340        // Support: IE 11+, Edge 15 - 18+
4341        // IE 11/Edge don't find elements on a `[name='']` query in some cases.
4342        // Adding a temporary attribute to the document before the selection works
4343        // around the issue.
4344        // Interestingly, IE 10 & older don't seem to have the issue.
4345        input = document.createElement("input");
4346        input.setAttribute("name", "");
4347        el.appendChild(input);
4348        if (!el.querySelectorAll("[name='']").length) {
4349          rbuggyQSA.push("\\[" + whitespace + "*name" + whitespace + "*=" + whitespace + "*(?:''|\"\")");
4350        }
4351      });
4352      if (!support.cssHas) {
4353        // Support: Chrome 105 - 110+, Safari 15.4 - 16.3+
4354        // Our regular `try-catch` mechanism fails to detect natively-unsupported
4355        // pseudo-classes inside `:has()` (such as `:has(:contains("Foo"))`)
4356        // in browsers that parse the `:has()` argument as a forgiving selector list.
4357        // https://drafts.csswg.org/selectors/#relational now requires the argument
4358        // to be parsed unforgivingly, but browsers have not yet fully adjusted.
4359        rbuggyQSA.push(":has");
4360      }
4361      rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join("|"));
4362
4363      /* Sorting
4364      ---------------------------------------------------------------------- */
4365
4366      // Document order sorting
4367      sortOrder = function sortOrder(a, b) {
4368        // Flag for duplicate removal
4369        if (a === b) {
4370          hasDuplicate = true;
4371          return 0;
4372        }
4373
4374        // Sort on method existence if only one input has compareDocumentPosition
4375        var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
4376        if (compare) {
4377          return compare;
4378        }
4379
4380        // Calculate position if both inputs belong to the same document
4381        // Support: IE 11+, Edge 17 - 18+
4382        // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
4383        // two documents; shallow comparisons work.
4384        // eslint-disable-next-line eqeqeq
4385        compare = (a.ownerDocument || a) == (b.ownerDocument || b) ? a.compareDocumentPosition(b) :
4386        // Otherwise we know they are disconnected
4387        1;
4388
4389        // Disconnected nodes
4390        if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) {
4391          // Choose the first element that is related to our preferred document
4392          // Support: IE 11+, Edge 17 - 18+
4393          // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
4394          // two documents; shallow comparisons work.
4395          // eslint-disable-next-line eqeqeq
4396          if (a === document || a.ownerDocument == preferredDoc && find.contains(preferredDoc, a)) {
4397            return -1;
4398          }
4399
4400          // Support: IE 11+, Edge 17 - 18+
4401          // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
4402          // two documents; shallow comparisons work.
4403          // eslint-disable-next-line eqeqeq
4404          if (b === document || b.ownerDocument == preferredDoc && find.contains(preferredDoc, b)) {
4405            return 1;
4406          }
4407
4408          // Maintain original order
4409          return sortInput ? indexOf.call(sortInput, a) - indexOf.call(sortInput, b) : 0;
4410        }
4411        return compare & 4 ? -1 : 1;
4412      };
4413      return document;
4414    }
4415    find.matches = function (expr, elements) {
4416      return find(expr, null, null, elements);
4417    };
4418    find.matchesSelector = function (elem, expr) {
4419      setDocument(elem);
4420      if (documentIsHTML && !nonnativeSelectorCache[expr + " "] && (!rbuggyQSA || !rbuggyQSA.test(expr))) {
4421        try {
4422          var ret = matches.call(elem, expr);
4423
4424          // IE 9's matchesSelector returns false on disconnected nodes
4425          if (ret || support.disconnectedMatch ||
4426          // As well, disconnected nodes are said to be in a document
4427          // fragment in IE 9
4428          elem.document && elem.document.nodeType !== 11) {
4429            return ret;
4430          }
4431        } catch (e) {
4432          nonnativeSelectorCache(expr, true);
4433        }
4434      }
4435      return find(expr, document, null, [elem]).length > 0;
4436    };
4437    find.contains = function (context, elem) {
4438      // Set document vars if needed
4439      // Support: IE 11+, Edge 17 - 18+
4440      // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
4441      // two documents; shallow comparisons work.
4442      // eslint-disable-next-line eqeqeq
4443      if ((context.ownerDocument || context) != document) {
4444        setDocument(context);
4445      }
4446      return _jQuery2.contains(context, elem);
4447    };
4448    find.attr = function (elem, name) {
4449      // Set document vars if needed
4450      // Support: IE 11+, Edge 17 - 18+
4451      // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
4452      // two documents; shallow comparisons work.
4453      // eslint-disable-next-line eqeqeq
4454      if ((elem.ownerDocument || elem) != document) {
4455        setDocument(elem);
4456      }
4457      var fn = Expr.attrHandle[name.toLowerCase()],
4458        // Don't get fooled by Object.prototype properties (see trac-13807)
4459        val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : undefined;
4460      if (val !== undefined) {
4461        return val;
4462      }
4463      return elem.getAttribute(name);
4464    };
4465    find.error = function (msg) {
4466      throw new Error("Syntax error, unrecognized expression: " + msg);
4467    };
4468
4469    /**
4470     * Document sorting and removing duplicates
4471     * @param {ArrayLike} results
4472     */
4473    _jQuery2.uniqueSort = function (results) {
4474      var elem,
4475        duplicates = [],
4476        j = 0,
4477        i = 0;
4478
4479      // Unless we *know* we can detect duplicates, assume their presence
4480      //
4481      // Support: Android <=4.0+
4482      // Testing for detecting duplicates is unpredictable so instead assume we can't
4483      // depend on duplicate detection in all browsers without a stable sort.
4484      hasDuplicate = !support.sortStable;
4485      sortInput = !support.sortStable && _slice.call(results, 0);
4486      sort.call(results, sortOrder);
4487      if (hasDuplicate) {
4488        while (elem = results[i++]) {
4489          if (elem === results[i]) {
4490            j = duplicates.push(i);
4491          }
4492        }
4493        while (j--) {
4494          splice.call(results, duplicates[j], 1);
4495        }
4496      }
4497
4498      // Clear input after sorting to release objects
4499      // See https://github.com/jquery/sizzle/pull/225
4500      sortInput = null;
4501      return results;
4502    };
4503    _jQuery2.fn.uniqueSort = function () {
4504      return this.pushStack(_jQuery2.uniqueSort(_slice.apply(this)));
4505    };
4506    Expr = _jQuery2.expr = {
4507      // Can be adjusted by the user
4508      cacheLength: 50,
4509      createPseudo: markFunction,
4510      match: matchExpr,
4511      attrHandle: {},
4512      find: {},
4513      relative: {
4514        ">": {
4515          dir: "parentNode",
4516          first: true
4517        },
4518        " ": {
4519          dir: "parentNode"
4520        },
4521        "+": {
4522          dir: "previousSibling",
4523          first: true
4524        },
4525        "~": {
4526          dir: "previousSibling"
4527        }
4528      },
4529      preFilter: {
4530        ATTR: function ATTR(match) {
4531          match[1] = match[1].replace(runescape, funescape);
4532
4533          // Move the given value to match[3] whether quoted or unquoted
4534          match[3] = (match[3] || match[4] || match[5] || "").replace(runescape, funescape);
4535          if (match[2] === "~=") {
4536            match[3] = " " + match[3] + " ";
4537          }
4538          return match.slice(0, 4);
4539        },
4540        CHILD: function CHILD(match) {
4541          /* matches from matchExpr["CHILD"]
4542          	1 type (only|nth|...)
4543          	2 what (child|of-type)
4544          	3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
4545          	4 xn-component of xn+y argument ([+-]?\d*n|)
4546          	5 sign of xn-component
4547          	6 x of xn-component
4548          	7 sign of y-component
4549          	8 y of y-component
4550          */
4551          match[1] = match[1].toLowerCase();
4552          if (match[1].slice(0, 3) === "nth") {
4553            // nth-* requires argument
4554            if (!match[3]) {
4555              find.error(match[0]);
4556            }
4557
4558            // numeric x and y parameters for Expr.filter.CHILD
4559            // remember that false/true cast respectively to 0/1
4560            match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === "even" || match[3] === "odd"));
4561            match[5] = +(match[7] + match[8] || match[3] === "odd");
4562
4563            // other types prohibit arguments
4564          } else if (match[3]) {
4565            find.error(match[0]);
4566          }
4567          return match;
4568        },
4569        PSEUDO: function PSEUDO(match) {
4570          var excess,
4571            unquoted = !match[6] && match[2];
4572          if (matchExpr.CHILD.test(match[0])) {
4573            return null;
4574          }
4575
4576          // Accept quoted arguments as-is
4577          if (match[3]) {
4578            match[2] = match[4] || match[5] || "";
4579
4580            // Strip excess characters from unquoted arguments
4581          } else if (unquoted && rpseudo.test(unquoted) && (
4582          // Get excess from tokenize (recursively)
4583          excess = tokenize(unquoted, true)) && (
4584          // advance to the next closing parenthesis
4585          excess = unquoted.indexOf(")", unquoted.length - excess) - unquoted.length)) {
4586            // excess is a negative index
4587            match[0] = match[0].slice(0, excess);
4588            match[2] = unquoted.slice(0, excess);
4589          }
4590
4591          // Return only captures needed by the pseudo filter method (type and argument)
4592          return match.slice(0, 3);
4593        }
4594      },
4595      filter: {
4596        TAG: function TAG(nodeNameSelector) {
4597          var expectedNodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();
4598          return nodeNameSelector === "*" ? function () {
4599            return true;
4600          } : function (elem) {
4601            return nodeName(elem, expectedNodeName);
4602          };
4603        },
4604        CLASS: function CLASS(className) {
4605          var pattern = classCache[className + " "];
4606          return pattern || (pattern = new RegExp("(^|" + whitespace + ")" + className + "(" + whitespace + "|$)")) && classCache(className, function (elem) {
4607            return pattern.test(typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "");
4608          });
4609        },
4610        ATTR: function ATTR(name, operator, check) {
4611          return function (elem) {
4612            var result = find.attr(elem, name);
4613            if (result == null) {
4614              return operator === "!=";
4615            }
4616            if (!operator) {
4617              return true;
4618            }
4619            result += "";
4620            if (operator === "=") {
4621              return result === check;
4622            }
4623            if (operator === "!=") {
4624              return result !== check;
4625            }
4626            if (operator === "^=") {
4627              return check && result.indexOf(check) === 0;
4628            }
4629            if (operator === "*=") {
4630              return check && result.indexOf(check) > -1;
4631            }
4632            if (operator === "$=") {
4633              return check && result.slice(-check.length) === check;
4634            }
4635            if (operator === "~=") {
4636              return (" " + result.replace(rwhitespace, " ") + " ").indexOf(check) > -1;
4637            }
4638            if (operator === "|=") {
4639              return result === check || result.slice(0, check.length + 1) === check + "-";
4640            }
4641            return false;
4642          };
4643        },
4644        CHILD: function CHILD(type, what, _argument, first, last) {
4645          var simple = type.slice(0, 3) !== "nth",
4646            forward = type.slice(-4) !== "last",
4647            ofType = what === "of-type";
4648          return first === 1 && last === 0 ?
4649          // Shortcut for :nth-*(n)
4650          function (elem) {
4651            return !!elem.parentNode;
4652          } : function (elem, _context, xml) {
4653            var cache,
4654              outerCache,
4655              node,
4656              nodeIndex,
4657              start,
4658              dir = simple !== forward ? "nextSibling" : "previousSibling",
4659              parent = elem.parentNode,
4660              name = ofType && elem.nodeName.toLowerCase(),
4661              useCache = !xml && !ofType,
4662              diff = false;
4663            if (parent) {
4664              // :(first|last|only)-(child|of-type)
4665              if (simple) {
4666                while (dir) {
4667                  node = elem;
4668                  while (node = node[dir]) {
4669                    if (ofType ? nodeName(node, name) : node.nodeType === 1) {
4670                      return false;
4671                    }
4672                  }
4673
4674                  // Reverse direction for :only-* (if we haven't yet done so)
4675                  start = dir = type === "only" && !start && "nextSibling";
4676                }
4677                return true;
4678              }
4679              start = [forward ? parent.firstChild : parent.lastChild];
4680
4681              // non-xml :nth-child(...) stores cache data on `parent`
4682              if (forward && useCache) {
4683                // Seek `elem` from a previously-cached index
4684                outerCache = parent[expando] || (parent[expando] = {});
4685                cache = outerCache[type] || [];
4686                nodeIndex = cache[0] === dirruns && cache[1];
4687                diff = nodeIndex && cache[2];
4688                node = nodeIndex && parent.childNodes[nodeIndex];
4689                while (node = ++nodeIndex && node && node[dir] || (
4690                // Fallback to seeking `elem` from the start
4691                diff = nodeIndex = 0) || start.pop()) {
4692                  // When found, cache indexes on `parent` and break
4693                  if (node.nodeType === 1 && ++diff && node === elem) {
4694                    outerCache[type] = [dirruns, nodeIndex, diff];
4695                    break;
4696                  }
4697                }
4698              } else {
4699                // Use previously-cached element index if available
4700                if (useCache) {
4701                  outerCache = elem[expando] || (elem[expando] = {});
4702                  cache = outerCache[type] || [];
4703                  nodeIndex = cache[0] === dirruns && cache[1];
4704                  diff = nodeIndex;
4705                }
4706
4707                // xml :nth-child(...)
4708                // or :nth-last-child(...) or :nth(-last)?-of-type(...)
4709                if (diff === false) {
4710                  // Use the same loop as above to seek `elem` from the start
4711                  while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {
4712                    if ((ofType ? nodeName(node, name) : node.nodeType === 1) && ++diff) {
4713                      // Cache the index of each encountered element
4714                      if (useCache) {
4715                        outerCache = node[expando] || (node[expando] = {});
4716                        outerCache[type] = [dirruns, diff];
4717                      }
4718                      if (node === elem) {
4719                        break;
4720                      }
4721                    }
4722                  }
4723                }
4724              }
4725
4726              // Incorporate the offset, then check against cycle size
4727              diff -= last;
4728              return diff === first || diff % first === 0 && diff / first >= 0;
4729            }
4730          };
4731        },
4732        PSEUDO: function PSEUDO(pseudo, argument) {
4733          // pseudo-class names are case-insensitive
4734          // https://www.w3.org/TR/selectors/#pseudo-classes
4735          // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
4736          // Remember that setFilters inherits from pseudos
4737          var args,
4738            fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || find.error("unsupported pseudo: " + pseudo);
4739
4740          // The user may use createPseudo to indicate that
4741          // arguments are needed to create the filter function
4742          // just as jQuery does
4743          if (fn[expando]) {
4744            return fn(argument);
4745          }
4746
4747          // But maintain support for old signatures
4748          if (fn.length > 1) {
4749            args = [pseudo, pseudo, "", argument];
4750            return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) {
4751              var idx,
4752                matched = fn(seed, argument),
4753                i = matched.length;
4754              while (i--) {
4755                idx = indexOf.call(seed, matched[i]);
4756                seed[idx] = !(matches[idx] = matched[i]);
4757              }
4758            }) : function (elem) {
4759              return fn(elem, 0, args);
4760            };
4761          }
4762          return fn;
4763        }
4764      },
4765      pseudos: {
4766        // Potentially complex pseudos
4767        not: markFunction(function (selector) {
4768          // Trim the selector passed to compile
4769          // to avoid treating leading and trailing
4770          // spaces as combinators
4771          var input = [],
4772            results = [],
4773            matcher = compile(selector.replace(rtrimCSS, "$1"));
4774          return matcher[expando] ? markFunction(function (seed, matches, _context, xml) {
4775            var elem,
4776              unmatched = matcher(seed, null, xml, []),
4777              i = seed.length;
4778
4779            // Match elements unmatched by `matcher`
4780            while (i--) {
4781              if (elem = unmatched[i]) {
4782                seed[i] = !(matches[i] = elem);
4783              }
4784            }
4785          }) : function (elem, _context, xml) {
4786            input[0] = elem;
4787            matcher(input, null, xml, results);
4788
4789            // Don't keep the element
4790            // (see https://github.com/jquery/sizzle/issues/299)
4791            input[0] = null;
4792            return !results.pop();
4793          };
4794        }),
4795        has: markFunction(function (selector) {
4796          return function (elem) {
4797            return find(selector, elem).length > 0;
4798          };
4799        }),
4800        contains: markFunction(function (text) {
4801          text = text.replace(runescape, funescape);
4802          return function (elem) {
4803            return (elem.textContent || _jQuery2.text(elem)).indexOf(text) > -1;
4804          };
4805        }),
4806        // "Whether an element is represented by a :lang() selector
4807        // is based solely on the element's language value
4808        // being equal to the identifier C,
4809        // or beginning with the identifier C immediately followed by "-".
4810        // The matching of C against the element's language value is performed case-insensitively.
4811        // The identifier C does not have to be a valid language name."
4812        // https://www.w3.org/TR/selectors/#lang-pseudo
4813        lang: markFunction(function (lang) {
4814          // lang value must be a valid identifier
4815          if (!ridentifier.test(lang || "")) {
4816            find.error("unsupported lang: " + lang);
4817          }
4818          lang = lang.replace(runescape, funescape).toLowerCase();
4819          return function (elem) {
4820            var elemLang;
4821            do {
4822              if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute("xml:lang") || elem.getAttribute("lang")) {
4823                elemLang = elemLang.toLowerCase();
4824                return elemLang === lang || elemLang.indexOf(lang + "-") === 0;
4825              }
4826            } while ((elem = elem.parentNode) && elem.nodeType === 1);
4827            return false;
4828          };
4829        }),
4830        // Miscellaneous
4831        target: function target(elem) {
4832          var hash = window.location && window.location.hash;
4833          return hash && hash.slice(1) === elem.id;
4834        },
4835        root: function root(elem) {
4836          return elem === documentElement;
4837        },
4838        focus: function focus(elem) {
4839          return elem === safeActiveElement() && document.hasFocus() && !!(elem.type || elem.href || ~elem.tabIndex);
4840        },
4841        // Boolean properties
4842        enabled: createDisabledPseudo(false),
4843        disabled: createDisabledPseudo(true),
4844        checked: function checked(elem) {
4845          // In CSS3, :checked should return both checked and selected elements
4846          // https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
4847          return nodeName(elem, "input") && !!elem.checked || nodeName(elem, "option") && !!elem.selected;
4848        },
4849        selected: function selected(elem) {
4850          // Support: IE <=11+
4851          // Accessing the selectedIndex property
4852          // forces the browser to treat the default option as
4853          // selected when in an optgroup.
4854          if (elem.parentNode) {
4855            // eslint-disable-next-line no-unused-expressions
4856            elem.parentNode.selectedIndex;
4857          }
4858          return elem.selected === true;
4859        },
4860        // Contents
4861        empty: function empty(elem) {
4862          // https://www.w3.org/TR/selectors/#empty-pseudo
4863          // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
4864          //   but not by others (comment: 8; processing instruction: 7; etc.)
4865          // nodeType < 6 works because attributes (2) do not appear as children
4866          for (elem = elem.firstChild; elem; elem = elem.nextSibling) {
4867            if (elem.nodeType < 6) {
4868              return false;
4869            }
4870          }
4871          return true;
4872        },
4873        parent: function parent(elem) {
4874          return !Expr.pseudos.empty(elem);
4875        },
4876        // Element/input types
4877        header: function header(elem) {
4878          return rheader.test(elem.nodeName);
4879        },
4880        input: function input(elem) {
4881          return rinputs.test(elem.nodeName);
4882        },
4883        button: function button(elem) {
4884          return nodeName(elem, "input") && elem.type === "button" || nodeName(elem, "button");
4885        },
4886        text: function text(elem) {
4887          var attr;
4888          return nodeName(elem, "input") && elem.type === "text" && (
4889          // Support: IE <10 only
4890          // New HTML5 attribute values (e.g., "search") appear
4891          // with elem.type === "text"
4892          (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text");
4893        },
4894        // Position-in-collection
4895        first: createPositionalPseudo(function () {
4896          return [0];
4897        }),
4898        last: createPositionalPseudo(function (_matchIndexes, length) {
4899          return [length - 1];
4900        }),
4901        eq: createPositionalPseudo(function (_matchIndexes, length, argument) {
4902          return [argument < 0 ? argument + length : argument];
4903        }),
4904        even: createPositionalPseudo(function (matchIndexes, length) {
4905          var i = 0;
4906          for (; i < length; i += 2) {
4907            matchIndexes.push(i);
4908          }
4909          return matchIndexes;
4910        }),
4911        odd: createPositionalPseudo(function (matchIndexes, length) {
4912          var i = 1;
4913          for (; i < length; i += 2) {
4914            matchIndexes.push(i);
4915          }
4916          return matchIndexes;
4917        }),
4918        lt: createPositionalPseudo(function (matchIndexes, length, argument) {
4919          var i;
4920          if (argument < 0) {
4921            i = argument + length;
4922          } else if (argument > length) {
4923            i = length;
4924          } else {
4925            i = argument;
4926          }
4927          for (; --i >= 0;) {
4928            matchIndexes.push(i);
4929          }
4930          return matchIndexes;
4931        }),
4932        gt: createPositionalPseudo(function (matchIndexes, length, argument) {
4933          var i = argument < 0 ? argument + length : argument;
4934          for (; ++i < length;) {
4935            matchIndexes.push(i);
4936          }
4937          return matchIndexes;
4938        })
4939      }
4940    };
4941    Expr.pseudos.nth = Expr.pseudos.eq;
4942
4943    // Add button/input type pseudos
4944    for (i in {
4945      radio: true,
4946      checkbox: true,
4947      file: true,
4948      password: true,
4949      image: true
4950    }) {
4951      Expr.pseudos[i] = createInputPseudo(i);
4952    }
4953    for (i in {
4954      submit: true,
4955      reset: true
4956    }) {
4957      Expr.pseudos[i] = createButtonPseudo(i);
4958    }
4959
4960    // Easy API for creating new setFilters
4961    function setFilters() {}
4962    setFilters.prototype = Expr.filters = Expr.pseudos;
4963    Expr.setFilters = new setFilters();
4964    function tokenize(selector, parseOnly) {
4965      var matched,
4966        match,
4967        tokens,
4968        type,
4969        soFar,
4970        groups,
4971        preFilters,
4972        cached = tokenCache[selector + " "];
4973      if (cached) {
4974        return parseOnly ? 0 : cached.slice(0);
4975      }
4976      soFar = selector;
4977      groups = [];
4978      preFilters = Expr.preFilter;
4979      while (soFar) {
4980        // Comma and first run
4981        if (!matched || (match = rcomma.exec(soFar))) {
4982          if (match) {
4983            // Don't consume trailing commas as valid
4984            soFar = soFar.slice(match[0].length) || soFar;
4985          }
4986          groups.push(tokens = []);
4987        }
4988        matched = false;
4989
4990        // Combinators
4991        if (match = rleadingCombinator.exec(soFar)) {
4992          matched = match.shift();
4993          tokens.push({
4994            value: matched,
4995            // Cast descendant combinators to space
4996            type: match[0].replace(rtrimCSS, " ")
4997          });
4998          soFar = soFar.slice(matched.length);
4999        }
5000
5001        // Filters
5002        for (type in Expr.filter) {
5003          if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) {
5004            matched = match.shift();
5005            tokens.push({
5006              value: matched,
5007              type: type,
5008              matches: match
5009            });
5010            soFar = soFar.slice(matched.length);
5011          }
5012        }
5013        if (!matched) {
5014          break;
5015        }
5016      }
5017
5018      // Return the length of the invalid excess
5019      // if we're just parsing
5020      // Otherwise, throw an error or return tokens
5021      if (parseOnly) {
5022        return soFar.length;
5023      }
5024      return soFar ? find.error(selector) :
5025      // Cache the tokens
5026      tokenCache(selector, groups).slice(0);
5027    }
5028    function toSelector(tokens) {
5029      var i = 0,
5030        len = tokens.length,
5031        selector = "";
5032      for (; i < len; i++) {
5033        selector += tokens[i].value;
5034      }
5035      return selector;
5036    }
5037    function addCombinator(matcher, combinator, base) {
5038      var dir = combinator.dir,
5039        skip = combinator.next,
5040        key = skip || dir,
5041        checkNonElements = base && key === "parentNode",
5042        doneName = done++;
5043      return combinator.first ?
5044      // Check against closest ancestor/preceding element
5045      function (elem, context, xml) {
5046        while (elem = elem[dir]) {
5047          if (elem.nodeType === 1 || checkNonElements) {
5048            return matcher(elem, context, xml);
5049          }
5050        }
5051        return false;
5052      } :
5053      // Check against all ancestor/preceding elements
5054      function (elem, context, xml) {
5055        var oldCache,
5056          outerCache,
5057          newCache = [dirruns, doneName];
5058
5059        // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
5060        if (xml) {
5061          while (elem = elem[dir]) {
5062            if (elem.nodeType === 1 || checkNonElements) {
5063              if (matcher(elem, context, xml)) {
5064                return true;
5065              }
5066            }
5067          }
5068        } else {
5069          while (elem = elem[dir]) {
5070            if (elem.nodeType === 1 || checkNonElements) {
5071              outerCache = elem[expando] || (elem[expando] = {});
5072              if (skip && nodeName(elem, skip)) {
5073                elem = elem[dir] || elem;
5074              } else if ((oldCache = outerCache[key]) && oldCache[0] === dirruns && oldCache[1] === doneName) {
5075                // Assign to newCache so results back-propagate to previous elements
5076                return newCache[2] = oldCache[2];
5077              } else {
5078                // Reuse newcache so results back-propagate to previous elements
5079                outerCache[key] = newCache;
5080
5081                // A match means we're done; a fail means we have to keep checking
5082                if (newCache[2] = matcher(elem, context, xml)) {
5083                  return true;
5084                }
5085              }
5086            }
5087          }
5088        }
5089        return false;
5090      };
5091    }
5092    function elementMatcher(matchers) {
5093      return matchers.length > 1 ? function (elem, context, xml) {
5094        var i = matchers.length;
5095        while (i--) {
5096          if (!matchers[i](elem, context, xml)) {
5097            return false;
5098          }
5099        }
5100        return true;
5101      } : matchers[0];
5102    }
5103    function multipleContexts(selector, contexts, results) {
5104      var i = 0,
5105        len = contexts.length;
5106      for (; i < len; i++) {
5107        find(selector, contexts[i], results);
5108      }
5109      return results;
5110    }
5111    function condense(unmatched, map, filter, context, xml) {
5112      var elem,
5113        newUnmatched = [],
5114        i = 0,
5115        len = unmatched.length,
5116        mapped = map != null;
5117      for (; i < len; i++) {
5118        if (elem = unmatched[i]) {
5119          if (!filter || filter(elem, context, xml)) {
5120            newUnmatched.push(elem);
5121            if (mapped) {
5122              map.push(i);
5123            }
5124          }
5125        }
5126      }
5127      return newUnmatched;
5128    }
5129    function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {
5130      if (postFilter && !postFilter[expando]) {
5131        postFilter = setMatcher(postFilter);
5132      }
5133      if (postFinder && !postFinder[expando]) {
5134        postFinder = setMatcher(postFinder, postSelector);
5135      }
5136      return markFunction(function (seed, results, context, xml) {
5137        var temp,
5138          i,
5139          elem,
5140          matcherOut,
5141          preMap = [],
5142          postMap = [],
5143          preexisting = results.length,
5144          // Get initial elements from seed or context
5145          elems = seed || multipleContexts(selector || "*", context.nodeType ? [context] : context, []),
5146          // Prefilter to get matcher input, preserving a map for seed-results synchronization
5147          matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems;
5148        if (matcher) {
5149          // If we have a postFinder, or filtered seed, or non-seed postFilter
5150          // or preexisting results,
5151          matcherOut = postFinder || (seed ? preFilter : preexisting || postFilter) ?
5152          // ...intermediate processing is necessary
5153          [] :
5154          // ...otherwise use results directly
5155          results;
5156
5157          // Find primary matches
5158          matcher(matcherIn, matcherOut, context, xml);
5159        } else {
5160          matcherOut = matcherIn;
5161        }
5162
5163        // Apply postFilter
5164        if (postFilter) {
5165          temp = condense(matcherOut, postMap);
5166          postFilter(temp, [], context, xml);
5167
5168          // Un-match failing elements by moving them back to matcherIn
5169          i = temp.length;
5170          while (i--) {
5171            if (elem = temp[i]) {
5172              matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem);
5173            }
5174          }
5175        }
5176        if (seed) {
5177          if (postFinder || preFilter) {
5178            if (postFinder) {
5179              // Get the final matcherOut by condensing this intermediate into postFinder contexts
5180              temp = [];
5181              i = matcherOut.length;
5182              while (i--) {
5183                if (elem = matcherOut[i]) {
5184                  // Restore matcherIn since elem is not yet a final match
5185                  temp.push(matcherIn[i] = elem);
5186                }
5187              }
5188              postFinder(null, matcherOut = [], temp, xml);
5189            }
5190
5191            // Move matched elements from seed to results to keep them synchronized
5192            i = matcherOut.length;
5193            while (i--) {
5194              if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf.call(seed, elem) : preMap[i]) > -1) {
5195                seed[temp] = !(results[temp] = elem);
5196              }
5197            }
5198          }
5199
5200          // Add elements to results, through postFinder if defined
5201        } else {
5202          matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut);
5203          if (postFinder) {
5204            postFinder(null, results, matcherOut, xml);
5205          } else {
5206            push.apply(results, matcherOut);
5207          }
5208        }
5209      });
5210    }
5211    function matcherFromTokens(tokens) {
5212      var checkContext,
5213        matcher,
5214        j,
5215        len = tokens.length,
5216        leadingRelative = Expr.relative[tokens[0].type],
5217        implicitRelative = leadingRelative || Expr.relative[" "],
5218        i = leadingRelative ? 1 : 0,
5219        // The foundational matcher ensures that elements are reachable from top-level context(s)
5220        matchContext = addCombinator(function (elem) {
5221          return elem === checkContext;
5222        }, implicitRelative, true),
5223        matchAnyContext = addCombinator(function (elem) {
5224          return indexOf.call(checkContext, elem) > -1;
5225        }, implicitRelative, true),
5226        matchers = [function (elem, context, xml) {
5227          // Support: IE 11+, Edge 17 - 18+
5228          // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
5229          // two documents; shallow comparisons work.
5230          // eslint-disable-next-line eqeqeq
5231          var ret = !leadingRelative && (xml || context != outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml));
5232
5233          // Avoid hanging onto element
5234          // (see https://github.com/jquery/sizzle/issues/299)
5235          checkContext = null;
5236          return ret;
5237        }];
5238      for (; i < len; i++) {
5239        if (matcher = Expr.relative[tokens[i].type]) {
5240          matchers = [addCombinator(elementMatcher(matchers), matcher)];
5241        } else {
5242          matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches);
5243
5244          // Return special upon seeing a positional matcher
5245          if (matcher[expando]) {
5246            // Find the next relative operator (if any) for proper handling
5247            j = ++i;
5248            for (; j < len; j++) {
5249              if (Expr.relative[tokens[j].type]) {
5250                break;
5251              }
5252            }
5253            return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector(
5254            // If the preceding token was a descendant combinator, insert an implicit any-element `*`
5255            tokens.slice(0, i - 1).concat({
5256              value: tokens[i - 2].type === " " ? "*" : ""
5257            })).replace(rtrimCSS, "$1"), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens));
5258          }
5259          matchers.push(matcher);
5260        }
5261      }
5262      return elementMatcher(matchers);
5263    }
5264    function matcherFromGroupMatchers(elementMatchers, setMatchers) {
5265      var bySet = setMatchers.length > 0,
5266        byElement = elementMatchers.length > 0,
5267        superMatcher = function superMatcher(seed, context, xml, results, outermost) {
5268          var elem,
5269            j,
5270            matcher,
5271            matchedCount = 0,
5272            i = "0",
5273            unmatched = seed && [],
5274            setMatched = [],
5275            contextBackup = outermostContext,
5276            // We must always have either seed elements or outermost context
5277            elems = seed || byElement && Expr.find.TAG("*", outermost),
5278            // Use integer dirruns iff this is the outermost matcher
5279            dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1,
5280            len = elems.length;
5281          if (outermost) {
5282            // Support: IE 11+, Edge 17 - 18+
5283            // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
5284            // two documents; shallow comparisons work.
5285            // eslint-disable-next-line eqeqeq
5286            outermostContext = context == document || context || outermost;
5287          }
5288
5289          // Add elements passing elementMatchers directly to results
5290          // Support: iOS <=7 - 9 only
5291          // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching
5292          // elements by id. (see trac-14142)
5293          for (; i !== len && (elem = elems[i]) != null; i++) {
5294            if (byElement && elem) {
5295              j = 0;
5296
5297              // Support: IE 11+, Edge 17 - 18+
5298              // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
5299              // two documents; shallow comparisons work.
5300              // eslint-disable-next-line eqeqeq
5301              if (!context && elem.ownerDocument != document) {
5302                setDocument(elem);
5303                xml = !documentIsHTML;
5304              }
5305              while (matcher = elementMatchers[j++]) {
5306                if (matcher(elem, context || document, xml)) {
5307                  push.call(results, elem);
5308                  break;
5309                }
5310              }
5311              if (outermost) {
5312                dirruns = dirrunsUnique;
5313              }
5314            }
5315
5316            // Track unmatched elements for set filters
5317            if (bySet) {
5318              // They will have gone through all possible matchers
5319              if (elem = !matcher && elem) {
5320                matchedCount--;
5321              }
5322
5323              // Lengthen the array for every element, matched or not
5324              if (seed) {
5325                unmatched.push(elem);
5326              }
5327            }
5328          }
5329
5330          // `i` is now the count of elements visited above, and adding it to `matchedCount`
5331          // makes the latter nonnegative.
5332          matchedCount += i;
5333
5334          // Apply set filters to unmatched elements
5335          // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
5336          // equals `i`), unless we didn't visit _any_ elements in the above loop because we have
5337          // no element matchers and no seed.
5338          // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
5339          // case, which will result in a "00" `matchedCount` that differs from `i` but is also
5340          // numerically zero.
5341          if (bySet && i !== matchedCount) {
5342            j = 0;
5343            while (matcher = setMatchers[j++]) {
5344              matcher(unmatched, setMatched, context, xml);
5345            }
5346            if (seed) {
5347              // Reintegrate element matches to eliminate the need for sorting
5348              if (matchedCount > 0) {
5349                while (i--) {
5350                  if (!(unmatched[i] || setMatched[i])) {
5351                    setMatched[i] = pop.call(results);
5352                  }
5353                }
5354              }
5355
5356              // Discard index placeholder values to get only actual matches
5357              setMatched = condense(setMatched);
5358            }
5359
5360            // Add matches to results
5361            push.apply(results, setMatched);
5362
5363            // Seedless set matches succeeding multiple successful matchers stipulate sorting
5364            if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {
5365              _jQuery2.uniqueSort(results);
5366            }
5367          }
5368
5369          // Override manipulation of globals by nested matchers
5370          if (outermost) {
5371            dirruns = dirrunsUnique;
5372            outermostContext = contextBackup;
5373          }
5374          return unmatched;
5375        };
5376      return bySet ? markFunction(superMatcher) : superMatcher;
5377    }
5378    function compile(selector, match /* Internal Use Only */) {
5379      var i,
5380        setMatchers = [],
5381        elementMatchers = [],
5382        cached = compilerCache[selector + " "];
5383      if (!cached) {
5384        // Generate a function of recursive functions that can be used to check each element
5385        if (!match) {
5386          match = tokenize(selector);
5387        }
5388        i = match.length;
5389        while (i--) {
5390          cached = matcherFromTokens(match[i]);
5391          if (cached[expando]) {
5392            setMatchers.push(cached);
5393          } else {
5394            elementMatchers.push(cached);
5395          }
5396        }
5397
5398        // Cache the compiled function
5399        cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers));
5400
5401        // Save selector and tokenization
5402        cached.selector = selector;
5403      }
5404      return cached;
5405    }
5406
5407    /**
5408     * A low-level selection function that works with jQuery's compiled
5409     *  selector functions
5410     * @param {String|Function} selector A selector or a pre-compiled
5411     *  selector function built with jQuery selector compile
5412     * @param {Element} context
5413     * @param {Array} [results]
5414     * @param {Array} [seed] A set of elements to match against
5415     */
5416    function select(selector, context, results, seed) {
5417      var i,
5418        tokens,
5419        token,
5420        type,
5421        find,
5422        compiled = typeof selector === "function" && selector,
5423        match = !seed && tokenize(selector = compiled.selector || selector);
5424      results = results || [];
5425
5426      // Try to minimize operations if there is only one selector in the list and no seed
5427      // (the latter of which guarantees us context)
5428      if (match.length === 1) {
5429        // Reduce context if the leading compound selector is an ID
5430        tokens = match[0] = match[0].slice(0);
5431        if (tokens.length > 2 && (token = tokens[0]).type === "ID" && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {
5432          context = (Expr.find.ID(token.matches[0].replace(runescape, funescape), context) || [])[0];
5433          if (!context) {
5434            return results;
5435
5436            // Precompiled matchers will still verify ancestry, so step up a level
5437          } else if (compiled) {
5438            context = context.parentNode;
5439          }
5440          selector = selector.slice(tokens.shift().value.length);
5441        }
5442
5443        // Fetch a seed set for right-to-left matching
5444        i = matchExpr.needsContext.test(selector) ? 0 : tokens.length;
5445        while (i--) {
5446          token = tokens[i];
5447
5448          // Abort if we hit a combinator
5449          if (Expr.relative[type = token.type]) {
5450            break;
5451          }
5452          if (find = Expr.find[type]) {
5453            // Search, expanding context for leading sibling combinators
5454            if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) {
5455              // If seed is empty or no tokens remain, we can return early
5456              tokens.splice(i, 1);
5457              selector = seed.length && toSelector(tokens);
5458              if (!selector) {
5459                push.apply(results, seed);
5460                return results;
5461              }
5462              break;
5463            }
5464          }
5465        }
5466      }
5467
5468      // Compile and execute a filtering function if one is not provided
5469      // Provide `match` to avoid retokenization if we modified the selector above
5470      (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, !context || rsibling.test(selector) && testContext(context.parentNode) || context);
5471      return results;
5472    }
5473
5474    // One-time assignments
5475
5476    // Support: Android <=4.0 - 4.1+
5477    // Sort stability
5478    support.sortStable = expando.split("").sort(sortOrder).join("") === expando;
5479
5480    // Initialize against the default document
5481    setDocument();
5482
5483    // Support: Android <=4.0 - 4.1+
5484    // Detached nodes confoundingly follow *each other*
5485    support.sortDetached = assert(function (el) {
5486      // Should return 1, but returns 4 (following)
5487      return el.compareDocumentPosition(document.createElement("fieldset")) & 1;
5488    });
5489    _jQuery2.find = find;
5490
5491    // Deprecated
5492    _jQuery2.expr[":"] = _jQuery2.expr.pseudos;
5493    _jQuery2.unique = _jQuery2.uniqueSort;
5494
5495    // These have always been private, but they used to be documented as part of
5496    // Sizzle so let's maintain them for now for backwards compatibility purposes.
5497    find.compile = compile;
5498    find.select = select;
5499    find.setDocument = setDocument;
5500    find.tokenize = tokenize;
5501    find.escape = _jQuery2.escapeSelector;
5502    find.getText = _jQuery2.text;
5503    find.isXML = _jQuery2.isXMLDoc;
5504    find.selectors = _jQuery2.expr;
5505    find.support = _jQuery2.support;
5506    find.uniqueSort = _jQuery2.uniqueSort;
5507
5508    /* eslint-enable */
5509  })();
5510  var dir = function dir(elem, _dir, until) {
5511    var matched = [],
5512      truncate = until !== undefined;
5513    while ((elem = elem[_dir]) && elem.nodeType !== 9) {
5514      if (elem.nodeType === 1) {
5515        if (truncate && _jQuery2(elem).is(until)) {
5516          break;
5517        }
5518        matched.push(elem);
5519      }
5520    }
5521    return matched;
5522  };
5523  var _siblings = function siblings(n, elem) {
5524    var matched = [];
5525    for (; n; n = n.nextSibling) {
5526      if (n.nodeType === 1 && n !== elem) {
5527        matched.push(n);
5528      }
5529    }
5530    return matched;
5531  };
5532  var rneedsContext = _jQuery2.expr.match.needsContext;
5533  var rsingleTag = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;
5534
5535  // Implement the identical functionality for filter and not
5536  function winnow(elements, qualifier, not) {
5537    if (isFunction(qualifier)) {
5538      return _jQuery2.grep(elements, function (elem, i) {
5539        return !!qualifier.call(elem, i, elem) !== not;
5540      });
5541    }
5542
5543    // Single element
5544    if (qualifier.nodeType) {
5545      return _jQuery2.grep(elements, function (elem) {
5546        return elem === qualifier !== not;
5547      });
5548    }
5549
5550    // Arraylike of elements (jQuery, arguments, Array)
5551    if (typeof qualifier !== "string") {
5552      return _jQuery2.grep(elements, function (elem) {
5553        return indexOf.call(qualifier, elem) > -1 !== not;
5554      });
5555    }
5556
5557    // Filtered directly for both simple and complex selectors
5558    return _jQuery2.filter(qualifier, elements, not);
5559  }
5560  _jQuery2.filter = function (expr, elems, not) {
5561    var elem = elems[0];
5562    if (not) {
5563      expr = ":not(" + expr + ")";
5564    }
5565    if (elems.length === 1 && elem.nodeType === 1) {
5566      return _jQuery2.find.matchesSelector(elem, expr) ? [elem] : [];
5567    }
5568    return _jQuery2.find.matches(expr, _jQuery2.grep(elems, function (elem) {
5569      return elem.nodeType === 1;
5570    }));
5571  };
5572  _jQuery2.fn.extend({
5573    find: function find(selector) {
5574      var i,
5575        ret,
5576        len = this.length,
5577        self = this;
5578      if (typeof selector !== "string") {
5579        return this.pushStack(_jQuery2(selector).filter(function () {
5580          for (i = 0; i < len; i++) {
5581            if (_jQuery2.contains(self[i], this)) {
5582              return true;
5583            }
5584          }
5585        }));
5586      }
5587      ret = this.pushStack([]);
5588      for (i = 0; i < len; i++) {
5589        _jQuery2.find(selector, self[i], ret);
5590      }
5591      return len > 1 ? _jQuery2.uniqueSort(ret) : ret;
5592    },
5593    filter: function filter(selector) {
5594      return this.pushStack(winnow(this, selector || [], false));
5595    },
5596    not: function not(selector) {
5597      return this.pushStack(winnow(this, selector || [], true));
5598    },
5599    is: function is(selector) {
5600      return !!winnow(this,
5601      // If this is a positional/relative selector, check membership in the returned set
5602      // so $("p:first").is("p:last") won't return true for a doc with two "p".
5603      typeof selector === "string" && rneedsContext.test(selector) ? _jQuery2(selector) : selector || [], false).length;
5604    }
5605  });
5606
5607  // Initialize a jQuery object
5608
5609  // A central reference to the root jQuery(document)
5610  var rootjQuery,
5611    // A simple way to check for HTML strings
5612    // Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)
5613    // Strict HTML recognition (trac-11290: must start with <)
5614    // Shortcut simple #id case for speed
5615    rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
5616    init = _jQuery2.fn.init = function (selector, context, root) {
5617      var match, elem;
5618
5619      // HANDLE: $(""), $(null), $(undefined), $(false)
5620      if (!selector) {
5621        return this;
5622      }
5623
5624      // Method init() accepts an alternate rootjQuery
5625      // so migrate can support jQuery.sub (gh-2101)
5626      root = root || rootjQuery;
5627
5628      // Handle HTML strings
5629      if (typeof selector === "string") {
5630        if (selector[0] === "<" && selector[selector.length - 1] === ">" && selector.length >= 3) {
5631          // Assume that strings that start and end with <> are HTML and skip the regex check
5632          match = [null, selector, null];
5633        } else {
5634          match = rquickExpr.exec(selector);
5635        }
5636
5637        // Match html or make sure no context is specified for #id
5638        if (match && (match[1] || !context)) {
5639          // HANDLE: $(html) -> $(array)
5640          if (match[1]) {
5641            context = context instanceof _jQuery2 ? context[0] : context;
5642
5643            // Option to run scripts is true for back-compat
5644            // Intentionally let the error be thrown if parseHTML is not present
5645            _jQuery2.merge(this, _jQuery2.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document, true));
5646
5647            // HANDLE: $(html, props)
5648            if (rsingleTag.test(match[1]) && _jQuery2.isPlainObject(context)) {
5649              for (match in context) {
5650                // Properties of context are called as methods if possible
5651                if (isFunction(this[match])) {
5652                  this[match](context[match]);
5653
5654                  // ...and otherwise set as attributes
5655                } else {
5656                  this.attr(match, context[match]);
5657                }
5658              }
5659            }
5660            return this;
5661
5662            // HANDLE: $(#id)
5663          } else {
5664            elem = document.getElementById(match[2]);
5665            if (elem) {
5666              // Inject the element directly into the jQuery object
5667              this[0] = elem;
5668              this.length = 1;
5669            }
5670            return this;
5671          }
5672
5673          // HANDLE: $(expr, $(...))
5674        } else if (!context || context.jquery) {
5675          return (context || root).find(selector);
5676
5677          // HANDLE: $(expr, context)
5678          // (which is just equivalent to: $(context).find(expr)
5679        } else {
5680          return this.constructor(context).find(selector);
5681        }
5682
5683        // HANDLE: $(DOMElement)
5684      } else if (selector.nodeType) {
5685        this[0] = selector;
5686        this.length = 1;
5687        return this;
5688
5689        // HANDLE: $(function)
5690        // Shortcut for document ready
5691      } else if (isFunction(selector)) {
5692        return root.ready !== undefined ? root.ready(selector) :
5693        // Execute immediately if ready is not present
5694        selector(_jQuery2);
5695      }
5696      return _jQuery2.makeArray(selector, this);
5697    };
5698
5699  // Give the init function the jQuery prototype for later instantiation
5700  init.prototype = _jQuery2.fn;
5701
5702  // Initialize central reference
5703  rootjQuery = _jQuery2(document);
5704  var rparentsprev = /^(?:parents|prev(?:Until|All))/,
5705    // Methods guaranteed to produce a unique set when starting from a unique set
5706    guaranteedUnique = {
5707      children: true,
5708      contents: true,
5709      next: true,
5710      prev: true
5711    };
5712  _jQuery2.fn.extend({
5713    has: function has(target) {
5714      var targets = _jQuery2(target, this),
5715        l = targets.length;
5716      return this.filter(function () {
5717        var i = 0;
5718        for (; i < l; i++) {
5719          if (_jQuery2.contains(this, targets[i])) {
5720            return true;
5721          }
5722        }
5723      });
5724    },
5725    closest: function closest(selectors, context) {
5726      var cur,
5727        i = 0,
5728        l = this.length,
5729        matched = [],
5730        targets = typeof selectors !== "string" && _jQuery2(selectors);
5731
5732      // Positional selectors never match, since there's no _selection_ context
5733      if (!rneedsContext.test(selectors)) {
5734        for (; i < l; i++) {
5735          for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) {
5736            // Always skip document fragments
5737            if (cur.nodeType < 11 && (targets ? targets.index(cur) > -1 :
5738            // Don't pass non-elements to jQuery#find
5739            cur.nodeType === 1 && _jQuery2.find.matchesSelector(cur, selectors))) {
5740              matched.push(cur);
5741              break;
5742            }
5743          }
5744        }
5745      }
5746      return this.pushStack(matched.length > 1 ? _jQuery2.uniqueSort(matched) : matched);
5747    },
5748    // Determine the position of an element within the set
5749    index: function index(elem) {
5750      // No argument, return index in parent
5751      if (!elem) {
5752        return this[0] && this[0].parentNode ? this.first().prevAll().length : -1;
5753      }
5754
5755      // Index in selector
5756      if (typeof elem === "string") {
5757        return indexOf.call(_jQuery2(elem), this[0]);
5758      }
5759
5760      // Locate the position of the desired element
5761      return indexOf.call(this,
5762      // If it receives a jQuery object, the first element is used
5763      elem.jquery ? elem[0] : elem);
5764    },
5765    add: function add(selector, context) {
5766      return this.pushStack(_jQuery2.uniqueSort(_jQuery2.merge(this.get(), _jQuery2(selector, context))));
5767    },
5768    addBack: function addBack(selector) {
5769      return this.add(selector == null ? this.prevObject : this.prevObject.filter(selector));
5770    }
5771  });
5772  function sibling(cur, dir) {
5773    while ((cur = cur[dir]) && cur.nodeType !== 1) {}
5774    return cur;
5775  }
5776  _jQuery2.each({
5777    parent: function parent(elem) {
5778      var parent = elem.parentNode;
5779      return parent && parent.nodeType !== 11 ? parent : null;
5780    },
5781    parents: function parents(elem) {
5782      return dir(elem, "parentNode");
5783    },
5784    parentsUntil: function parentsUntil(elem, _i, until) {
5785      return dir(elem, "parentNode", until);
5786    },
5787    next: function next(elem) {
5788      return sibling(elem, "nextSibling");
5789    },
5790    prev: function prev(elem) {
5791      return sibling(elem, "previousSibling");
5792    },
5793    nextAll: function nextAll(elem) {
5794      return dir(elem, "nextSibling");
5795    },
5796    prevAll: function prevAll(elem) {
5797      return dir(elem, "previousSibling");
5798    },
5799    nextUntil: function nextUntil(elem, _i, until) {
5800      return dir(elem, "nextSibling", until);
5801    },
5802    prevUntil: function prevUntil(elem, _i, until) {
5803      return dir(elem, "previousSibling", until);
5804    },
5805    siblings: function siblings(elem) {
5806      return _siblings((elem.parentNode || {}).firstChild, elem);
5807    },
5808    children: function children(elem) {
5809      return _siblings(elem.firstChild);
5810    },
5811    contents: function contents(elem) {
5812      if (elem.contentDocument != null &&
5813      // Support: IE 11+
5814      // <object> elements with no `data` attribute has an object
5815      // `contentDocument` with a `null` prototype.
5816      getProto(elem.contentDocument)) {
5817        return elem.contentDocument;
5818      }
5819
5820      // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
5821      // Treat the template element as a regular one in browsers that
5822      // don't support it.
5823      if (nodeName(elem, "template")) {
5824        elem = elem.content || elem;
5825      }
5826      return _jQuery2.merge([], elem.childNodes);
5827    }
5828  }, function (name, fn) {
5829    _jQuery2.fn[name] = function (until, selector) {
5830      var matched = _jQuery2.map(this, fn, until);
5831      if (name.slice(-5) !== "Until") {
5832        selector = until;
5833      }
5834      if (selector && typeof selector === "string") {
5835        matched = _jQuery2.filter(selector, matched);
5836      }
5837      if (this.length > 1) {
5838        // Remove duplicates
5839        if (!guaranteedUnique[name]) {
5840          _jQuery2.uniqueSort(matched);
5841        }
5842
5843        // Reverse order for parents* and prev-derivatives
5844        if (rparentsprev.test(name)) {
5845          matched.reverse();
5846        }
5847      }
5848      return this.pushStack(matched);
5849    };
5850  });
5851  var rnothtmlwhite = /[^\x20\t\r\n\f]+/g;
5852
5853  // Convert String-formatted options into Object-formatted ones
5854  function createOptions(options) {
5855    var object = {};
5856    _jQuery2.each(options.match(rnothtmlwhite) || [], function (_, flag) {
5857      object[flag] = true;
5858    });
5859    return object;
5860  }
5861
5862  /*
5863   * Create a callback list using the following parameters:
5864   *
5865   *	options: an optional list of space-separated options that will change how
5866   *			the callback list behaves or a more traditional option object
5867   *
5868   * By default a callback list will act like an event callback list and can be
5869   * "fired" multiple times.
5870   *
5871   * Possible options:
5872   *
5873   *	once:			will ensure the callback list can only be fired once (like a Deferred)
5874   *
5875   *	memory:			will keep track of previous values and will call any callback added
5876   *					after the list has been fired right away with the latest "memorized"
5877   *					values (like a Deferred)
5878   *
5879   *	unique:			will ensure a callback can only be added once (no duplicate in the list)
5880   *
5881   *	stopOnFalse:	interrupt callings when a callback returns false
5882   *
5883   */
5884  _jQuery2.Callbacks = function (options) {
5885    // Convert options from String-formatted to Object-formatted if needed
5886    // (we check in cache first)
5887    options = typeof options === "string" ? createOptions(options) : _jQuery2.extend({}, options);
5888    var
5889      // Flag to know if list is currently firing
5890      firing,
5891      // Last fire value for non-forgettable lists
5892      memory,
5893      // Flag to know if list was already fired
5894      _fired,
5895      // Flag to prevent firing
5896      _locked,
5897      // Actual callback list
5898      list = [],
5899      // Queue of execution data for repeatable lists
5900      queue = [],
5901      // Index of currently firing callback (modified by add/remove as needed)
5902      firingIndex = -1,
5903      // Fire callbacks
5904      fire = function fire() {
5905        // Enforce single-firing
5906        _locked = _locked || options.once;
5907
5908        // Execute callbacks for all pending executions,
5909        // respecting firingIndex overrides and runtime changes
5910        _fired = firing = true;
5911        for (; queue.length; firingIndex = -1) {
5912          memory = queue.shift();
5913          while (++firingIndex < list.length) {
5914            // Run callback and check for early termination
5915            if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) {
5916              // Jump to end and forget the data so .add doesn't re-fire
5917              firingIndex = list.length;
5918              memory = false;
5919            }
5920          }
5921        }
5922
5923        // Forget the data if we're done with it
5924        if (!options.memory) {
5925          memory = false;
5926        }
5927        firing = false;
5928
5929        // Clean up if we're done firing for good
5930        if (_locked) {
5931          // Keep an empty list if we have data for future add calls
5932          if (memory) {
5933            list = [];
5934
5935            // Otherwise, this object is spent
5936          } else {
5937            list = "";
5938          }
5939        }
5940      },
5941      // Actual Callbacks object
5942      self = {
5943        // Add a callback or a collection of callbacks to the list
5944        add: function add() {
5945          if (list) {
5946            // If we have memory from a past run, we should fire after adding
5947            if (memory && !firing) {
5948              firingIndex = list.length - 1;
5949              queue.push(memory);
5950            }
5951            (function add(args) {
5952              _jQuery2.each(args, function (_, arg) {
5953                if (isFunction(arg)) {
5954                  if (!options.unique || !self.has(arg)) {
5955                    list.push(arg);
5956                  }
5957                } else if (arg && arg.length && toType(arg) !== "string") {
5958                  // Inspect recursively
5959                  add(arg);
5960                }
5961              });
5962            })(arguments);
5963            if (memory && !firing) {
5964              fire();
5965            }
5966          }
5967          return this;
5968        },
5969        // Remove a callback from the list
5970        remove: function remove() {
5971          _jQuery2.each(arguments, function (_, arg) {
5972            var index;
5973            while ((index = _jQuery2.inArray(arg, list, index)) > -1) {
5974              list.splice(index, 1);
5975
5976              // Handle firing indexes
5977              if (index <= firingIndex) {
5978                firingIndex--;
5979              }
5980            }
5981          });
5982          return this;
5983        },
5984        // Check if a given callback is in the list.
5985        // If no argument is given, return whether or not list has callbacks attached.
5986        has: function has(fn) {
5987          return fn ? _jQuery2.inArray(fn, list) > -1 : list.length > 0;
5988        },
5989        // Remove all callbacks from the list
5990        empty: function empty() {
5991          if (list) {
5992            list = [];
5993          }
5994          return this;
5995        },
5996        // Disable .fire and .add
5997        // Abort any current/pending executions
5998        // Clear all callbacks and values
5999        disable: function disable() {
6000          _locked = queue = [];
6001          list = memory = "";
6002          return this;
6003        },
6004        disabled: function disabled() {
6005          return !list;
6006        },
6007        // Disable .fire
6008        // Also disable .add unless we have memory (since it would have no effect)
6009        // Abort any pending executions
6010        lock: function lock() {
6011          _locked = queue = [];
6012          if (!memory && !firing) {
6013            list = memory = "";
6014          }
6015          return this;
6016        },
6017        locked: function locked() {
6018          return !!_locked;
6019        },
6020        // Call all callbacks with the given context and arguments
6021        fireWith: function fireWith(context, args) {
6022          if (!_locked) {
6023            args = args || [];
6024            args = [context, args.slice ? args.slice() : args];
6025            queue.push(args);
6026            if (!firing) {
6027              fire();
6028            }
6029          }
6030          return this;
6031        },
6032        // Call all the callbacks with the given arguments
6033        fire: function fire() {
6034          self.fireWith(this, arguments);
6035          return this;
6036        },
6037        // To know if the callbacks have already been called at least once
6038        fired: function fired() {
6039          return !!_fired;
6040        }
6041      };
6042    return self;
6043  };
6044  function Identity(v) {
6045    return v;
6046  }
6047  function Thrower(ex) {
6048    throw ex;
6049  }
6050  function adoptValue(value, resolve, reject, noValue) {
6051    var method;
6052    try {
6053      // Check for promise aspect first to privilege synchronous behavior
6054      if (value && isFunction(method = value.promise)) {
6055        method.call(value).done(resolve).fail(reject);
6056
6057        // Other thenables
6058      } else if (value && isFunction(method = value.then)) {
6059        method.call(value, resolve, reject);
6060
6061        // Other non-thenables
6062      } else {
6063        // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
6064        // * false: [ value ].slice( 0 ) => resolve( value )
6065        // * true: [ value ].slice( 1 ) => resolve()
6066        resolve.apply(undefined, [value].slice(noValue));
6067      }
6068
6069      // For Promises/A+, convert exceptions into rejections
6070      // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
6071      // Deferred#then to conditionally suppress rejection.
6072    } catch (value) {
6073      // Support: Android 4.0 only
6074      // Strict mode functions invoked without .call/.apply get global-object context
6075      reject.apply(undefined, [value]);
6076    }
6077  }
6078  _jQuery2.extend({
6079    Deferred: function Deferred(func) {
6080      var tuples = [
6081        // action, add listener, callbacks,
6082        // ... .then handlers, argument index, [final state]
6083        ["notify", "progress", _jQuery2.Callbacks("memory"), _jQuery2.Callbacks("memory"), 2], ["resolve", "done", _jQuery2.Callbacks("once memory"), _jQuery2.Callbacks("once memory"), 0, "resolved"], ["reject", "fail", _jQuery2.Callbacks("once memory"), _jQuery2.Callbacks("once memory"), 1, "rejected"]],
6084        _state = "pending",
6085        _promise = {
6086          state: function state() {
6087            return _state;
6088          },
6089          always: function always() {
6090            deferred.done(arguments).fail(arguments);
6091            return this;
6092          },
6093          "catch": function _catch(fn) {
6094            return _promise.then(null, fn);
6095          },
6096          // Keep pipe for back-compat
6097          pipe: function pipe(/* fnDone, fnFail, fnProgress */
6098          ) {
6099            var fns = arguments;
6100            return _jQuery2.Deferred(function (newDefer) {
6101              _jQuery2.each(tuples, function (_i, tuple) {
6102                // Map tuples (progress, done, fail) to arguments (done, fail, progress)
6103                var fn = isFunction(fns[tuple[4]]) && fns[tuple[4]];
6104
6105                // deferred.progress(function() { bind to newDefer or newDefer.notify })
6106                // deferred.done(function() { bind to newDefer or newDefer.resolve })
6107                // deferred.fail(function() { bind to newDefer or newDefer.reject })
6108                deferred[tuple[1]](function () {
6109                  var returned = fn && fn.apply(this, arguments);
6110                  if (returned && isFunction(returned.promise)) {
6111                    returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject);
6112                  } else {
6113                    newDefer[tuple[0] + "With"](this, fn ? [returned] : arguments);
6114                  }
6115                });
6116              });
6117              fns = null;
6118            }).promise();
6119          },
6120          then: function then(onFulfilled, onRejected, onProgress) {
6121            var maxDepth = 0;
6122            function resolve(depth, deferred, handler, special) {
6123              return function () {
6124                var that = this,
6125                  args = arguments,
6126                  mightThrow = function mightThrow() {
6127                    var returned, then;
6128
6129                    // Support: Promises/A+ section 2.3.3.3.3
6130                    // https://promisesaplus.com/#point-59
6131                    // Ignore double-resolution attempts
6132                    if (depth < maxDepth) {
6133                      return;
6134                    }
6135                    returned = handler.apply(that, args);
6136
6137                    // Support: Promises/A+ section 2.3.1
6138                    // https://promisesaplus.com/#point-48
6139                    if (returned === deferred.promise()) {
6140                      throw new TypeError("Thenable self-resolution");
6141                    }
6142
6143                    // Support: Promises/A+ sections 2.3.3.1, 3.5
6144                    // https://promisesaplus.com/#point-54
6145                    // https://promisesaplus.com/#point-75
6146                    // Retrieve `then` only once
6147                    then = returned && (
6148                    // Support: Promises/A+ section 2.3.4
6149                    // https://promisesaplus.com/#point-64
6150                    // Only check objects and functions for thenability
6151                    _typeof(returned) === "object" || typeof returned === "function") && returned.then;
6152
6153                    // Handle a returned thenable
6154                    if (isFunction(then)) {
6155                      // Special processors (notify) just wait for resolution
6156                      if (special) {
6157                        then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special));
6158
6159                        // Normal processors (resolve) also hook into progress
6160                      } else {
6161                        // ...and disregard older resolution values
6162                        maxDepth++;
6163                        then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special), resolve(maxDepth, deferred, Identity, deferred.notifyWith));
6164                      }
6165
6166                      // Handle all other returned values
6167                    } else {
6168                      // Only substitute handlers pass on context
6169                      // and multiple values (non-spec behavior)
6170                      if (handler !== Identity) {
6171                        that = undefined;
6172                        args = [returned];
6173                      }
6174
6175                      // Process the value(s)
6176                      // Default process is resolve
6177                      (special || deferred.resolveWith)(that, args);
6178                    }
6179                  },
6180                  // Only normal processors (resolve) catch and reject exceptions
6181                  process = special ? mightThrow : function () {
6182                    try {
6183                      mightThrow();
6184                    } catch (e) {
6185                      if (_jQuery2.Deferred.exceptionHook) {
6186                        _jQuery2.Deferred.exceptionHook(e, process.error);
6187                      }
6188
6189                      // Support: Promises/A+ section 2.3.3.3.4.1
6190                      // https://promisesaplus.com/#point-61
6191                      // Ignore post-resolution exceptions
6192                      if (depth + 1 >= maxDepth) {
6193                        // Only substitute handlers pass on context
6194                        // and multiple values (non-spec behavior)
6195                        if (handler !== Thrower) {
6196                          that = undefined;
6197                          args = [e];
6198                        }
6199                        deferred.rejectWith(that, args);
6200                      }
6201                    }
6202                  };
6203
6204                // Support: Promises/A+ section 2.3.3.3.1
6205                // https://promisesaplus.com/#point-57
6206                // Re-resolve promises immediately to dodge false rejection from
6207                // subsequent errors
6208                if (depth) {
6209                  process();
6210                } else {
6211                  // Call an optional hook to record the error, in case of exception
6212                  // since it's otherwise lost when execution goes async
6213                  if (_jQuery2.Deferred.getErrorHook) {
6214                    process.error = _jQuery2.Deferred.getErrorHook();
6215
6216                    // The deprecated alias of the above. While the name suggests
6217                    // returning the stack, not an error instance, jQuery just passes
6218                    // it directly to `console.warn` so both will work; an instance
6219                    // just better cooperates with source maps.
6220                  } else if (_jQuery2.Deferred.getStackHook) {
6221                    process.error = _jQuery2.Deferred.getStackHook();
6222                  }
6223                  window.setTimeout(process);
6224                }
6225              };
6226            }
6227            return _jQuery2.Deferred(function (newDefer) {
6228              // progress_handlers.add( ... )
6229              tuples[0][3].add(resolve(0, newDefer, isFunction(onProgress) ? onProgress : Identity, newDefer.notifyWith));
6230
6231              // fulfilled_handlers.add( ... )
6232              tuples[1][3].add(resolve(0, newDefer, isFunction(onFulfilled) ? onFulfilled : Identity));
6233
6234              // rejected_handlers.add( ... )
6235              tuples[2][3].add(resolve(0, newDefer, isFunction(onRejected) ? onRejected : Thrower));
6236            }).promise();
6237          },
6238          // Get a promise for this deferred
6239          // If obj is provided, the promise aspect is added to the object
6240          promise: function promise(obj) {
6241            return obj != null ? _jQuery2.extend(obj, _promise) : _promise;
6242          }
6243        },
6244        deferred = {};
6245
6246      // Add list-specific methods
6247      _jQuery2.each(tuples, function (i, tuple) {
6248        var list = tuple[2],
6249          stateString = tuple[5];
6250
6251        // promise.progress = list.add
6252        // promise.done = list.add
6253        // promise.fail = list.add
6254        _promise[tuple[1]] = list.add;
6255
6256        // Handle state
6257        if (stateString) {
6258          list.add(function () {
6259            // state = "resolved" (i.e., fulfilled)
6260            // state = "rejected"
6261            _state = stateString;
6262          },
6263          // rejected_callbacks.disable
6264          // fulfilled_callbacks.disable
6265          tuples[3 - i][2].disable,
6266          // rejected_handlers.disable
6267          // fulfilled_handlers.disable
6268          tuples[3 - i][3].disable,
6269          // progress_callbacks.lock
6270          tuples[0][2].lock,
6271          // progress_handlers.lock
6272          tuples[0][3].lock);
6273        }
6274
6275        // progress_handlers.fire
6276        // fulfilled_handlers.fire
6277        // rejected_handlers.fire
6278        list.add(tuple[3].fire);
6279
6280        // deferred.notify = function() { deferred.notifyWith(...) }
6281        // deferred.resolve = function() { deferred.resolveWith(...) }
6282        // deferred.reject = function() { deferred.rejectWith(...) }
6283        deferred[tuple[0]] = function () {
6284          deferred[tuple[0] + "With"](this === deferred ? undefined : this, arguments);
6285          return this;
6286        };
6287
6288        // deferred.notifyWith = list.fireWith
6289        // deferred.resolveWith = list.fireWith
6290        // deferred.rejectWith = list.fireWith
6291        deferred[tuple[0] + "With"] = list.fireWith;
6292      });
6293
6294      // Make the deferred a promise
6295      _promise.promise(deferred);
6296
6297      // Call given func if any
6298      if (func) {
6299        func.call(deferred, deferred);
6300      }
6301
6302      // All done!
6303      return deferred;
6304    },
6305    // Deferred helper
6306    when: function when(singleValue) {
6307      var
6308        // count of uncompleted subordinates
6309        remaining = arguments.length,
6310        // count of unprocessed arguments
6311        i = remaining,
6312        // subordinate fulfillment data
6313        resolveContexts = Array(i),
6314        resolveValues = _slice.call(arguments),
6315        // the primary Deferred
6316        primary = _jQuery2.Deferred(),
6317        // subordinate callback factory
6318        updateFunc = function updateFunc(i) {
6319          return function (value) {
6320            resolveContexts[i] = this;
6321            resolveValues[i] = arguments.length > 1 ? _slice.call(arguments) : value;
6322            if (! --remaining) {
6323              primary.resolveWith(resolveContexts, resolveValues);
6324            }
6325          };
6326        };
6327
6328      // Single- and empty arguments are adopted like Promise.resolve
6329      if (remaining <= 1) {
6330        adoptValue(singleValue, primary.done(updateFunc(i)).resolve, primary.reject, !remaining);
6331
6332        // Use .then() to unwrap secondary thenables (cf. gh-3000)
6333        if (primary.state() === "pending" || isFunction(resolveValues[i] && resolveValues[i].then)) {
6334          return primary.then();
6335        }
6336      }
6337
6338      // Multiple arguments are aggregated like Promise.all array elements
6339      while (i--) {
6340        adoptValue(resolveValues[i], updateFunc(i), primary.reject);
6341      }
6342      return primary.promise();
6343    }
6344  });
6345
6346  // These usually indicate a programmer mistake during development,
6347  // warn about them ASAP rather than swallowing them by default.
6348  var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
6349
6350  // If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error
6351  // captured before the async barrier to get the original error cause
6352  // which may otherwise be hidden.
6353  _jQuery2.Deferred.exceptionHook = function (error, asyncError) {
6354    // Support: IE 8 - 9 only
6355    // Console exists when dev tools are open, which can happen at any time
6356    if (window.console && window.console.warn && error && rerrorNames.test(error.name)) {
6357      window.console.warn("jQuery.Deferred exception: " + error.message, error.stack, asyncError);
6358    }
6359  };
6360  _jQuery2.readyException = function (error) {
6361    window.setTimeout(function () {
6362      throw error;
6363    });
6364  };
6365
6366  // The deferred used on DOM ready
6367  var readyList = _jQuery2.Deferred();
6368  _jQuery2.fn.ready = function (fn) {
6369    readyList.then(fn)
6370
6371    // Wrap jQuery.readyException in a function so that the lookup
6372    // happens at the time of error handling instead of callback
6373    // registration.
6374    .catch(function (error) {
6375      _jQuery2.readyException(error);
6376    });
6377    return this;
6378  };
6379  _jQuery2.extend({
6380    // Is the DOM ready to be used? Set to true once it occurs.
6381    isReady: false,
6382    // A counter to track how many items to wait for before
6383    // the ready event fires. See trac-6781
6384    readyWait: 1,
6385    // Handle when the DOM is ready
6386    ready: function ready(wait) {
6387      // Abort if there are pending holds or we're already ready
6388      if (wait === true ? --_jQuery2.readyWait : _jQuery2.isReady) {
6389        return;
6390      }
6391
6392      // Remember that the DOM is ready
6393      _jQuery2.isReady = true;
6394
6395      // If a normal DOM Ready event fired, decrement, and wait if need be
6396      if (wait !== true && --_jQuery2.readyWait > 0) {
6397        return;
6398      }
6399
6400      // If there are functions bound, to execute
6401      readyList.resolveWith(document, [_jQuery2]);
6402    }
6403  });
6404  _jQuery2.ready.then = readyList.then;
6405
6406  // The ready event handler and self cleanup method
6407  function completed() {
6408    document.removeEventListener("DOMContentLoaded", completed);
6409    window.removeEventListener("load", completed);
6410    _jQuery2.ready();
6411  }
6412
6413  // Catch cases where $(document).ready() is called
6414  // after the browser event has already occurred.
6415  // Support: IE <=9 - 10 only
6416  // Older IE sometimes signals "interactive" too soon
6417  if (document.readyState === "complete" || document.readyState !== "loading" && !document.documentElement.doScroll) {
6418    // Handle it asynchronously to allow scripts the opportunity to delay ready
6419    window.setTimeout(_jQuery2.ready);
6420  } else {
6421    // Use the handy event callback
6422    document.addEventListener("DOMContentLoaded", completed);
6423
6424    // A fallback to window.onload, that will always work
6425    window.addEventListener("load", completed);
6426  }
6427
6428  // Multifunctional method to get and set values of a collection
6429  // The value/s can optionally be executed if it's a function
6430  var _access = function access(elems, fn, key, value, chainable, emptyGet, raw) {
6431    var i = 0,
6432      len = elems.length,
6433      bulk = key == null;
6434
6435    // Sets many values
6436    if (toType(key) === "object") {
6437      chainable = true;
6438      for (i in key) {
6439        _access(elems, fn, i, key[i], true, emptyGet, raw);
6440      }
6441
6442      // Sets one value
6443    } else if (value !== undefined) {
6444      chainable = true;
6445      if (!isFunction(value)) {
6446        raw = true;
6447      }
6448      if (bulk) {
6449        // Bulk operations run against the entire set
6450        if (raw) {
6451          fn.call(elems, value);
6452          fn = null;
6453
6454          // ...except when executing function values
6455        } else {
6456          bulk = fn;
6457          fn = function fn(elem, _key, value) {
6458            return bulk.call(_jQuery2(elem), value);
6459          };
6460        }
6461      }
6462      if (fn) {
6463        for (; i < len; i++) {
6464          fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key)));
6465        }
6466      }
6467    }
6468    if (chainable) {
6469      return elems;
6470    }
6471
6472    // Gets
6473    if (bulk) {
6474      return fn.call(elems);
6475    }
6476    return len ? fn(elems[0], key) : emptyGet;
6477  };
6478
6479  // Matches dashed string for camelizing
6480  var rmsPrefix = /^-ms-/,
6481    rdashAlpha = /-([a-z])/g;
6482
6483  // Used by camelCase as callback to replace()
6484  function fcamelCase(_all, letter) {
6485    return letter.toUpperCase();
6486  }
6487
6488  // Convert dashed to camelCase; used by the css and data modules
6489  // Support: IE <=9 - 11, Edge 12 - 15
6490  // Microsoft forgot to hump their vendor prefix (trac-9572)
6491  function camelCase(string) {
6492    return string.replace(rmsPrefix, "ms-").replace(rdashAlpha, fcamelCase);
6493  }
6494  var acceptData = function acceptData(owner) {
6495    // Accepts only:
6496    //  - Node
6497    //    - Node.ELEMENT_NODE
6498    //    - Node.DOCUMENT_NODE
6499    //  - Object
6500    //    - Any
6501    return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType;
6502  };
6503  function Data() {
6504    this.expando = _jQuery2.expando + Data.uid++;
6505  }
6506  Data.uid = 1;
6507  Data.prototype = {
6508    cache: function cache(owner) {
6509      // Check if the owner object already has a cache
6510      var value = owner[this.expando];
6511
6512      // If not, create one
6513      if (!value) {
6514        value = {};
6515
6516        // We can accept data for non-element nodes in modern browsers,
6517        // but we should not, see trac-8335.
6518        // Always return an empty object.
6519        if (acceptData(owner)) {
6520          // If it is a node unlikely to be stringify-ed or looped over
6521          // use plain assignment
6522          if (owner.nodeType) {
6523            owner[this.expando] = value;
6524
6525            // Otherwise secure it in a non-enumerable property
6526            // configurable must be true to allow the property to be
6527            // deleted when data is removed
6528          } else {
6529            Object.defineProperty(owner, this.expando, {
6530              value: value,
6531              configurable: true
6532            });
6533          }
6534        }
6535      }
6536      return value;
6537    },
6538    set: function set(owner, data, value) {
6539      var prop,
6540        cache = this.cache(owner);
6541
6542      // Handle: [ owner, key, value ] args
6543      // Always use camelCase key (gh-2257)
6544      if (typeof data === "string") {
6545        cache[camelCase(data)] = value;
6546
6547        // Handle: [ owner, { properties } ] args
6548      } else {
6549        // Copy the properties one-by-one to the cache object
6550        for (prop in data) {
6551          cache[camelCase(prop)] = data[prop];
6552        }
6553      }
6554      return cache;
6555    },
6556    get: function get(owner, key) {
6557      return key === undefined ? this.cache(owner) :
6558      // Always use camelCase key (gh-2257)
6559      owner[this.expando] && owner[this.expando][camelCase(key)];
6560    },
6561    access: function access(owner, key, value) {
6562      // In cases where either:
6563      //
6564      //   1. No key was specified
6565      //   2. A string key was specified, but no value provided
6566      //
6567      // Take the "read" path and allow the get method to determine
6568      // which value to return, respectively either:
6569      //
6570      //   1. The entire cache object
6571      //   2. The data stored at the key
6572      //
6573      if (key === undefined || key && typeof key === "string" && value === undefined) {
6574        return this.get(owner, key);
6575      }
6576
6577      // When the key is not a string, or both a key and value
6578      // are specified, set or extend (existing objects) with either:
6579      //
6580      //   1. An object of properties
6581      //   2. A key and value
6582      //
6583      this.set(owner, key, value);
6584
6585      // Since the "set" path can have two possible entry points
6586      // return the expected data based on which path was taken[*]
6587      return value !== undefined ? value : key;
6588    },
6589    remove: function remove(owner, key) {
6590      var i,
6591        cache = owner[this.expando];
6592      if (cache === undefined) {
6593        return;
6594      }
6595      if (key !== undefined) {
6596        // Support array or space separated string of keys
6597        if (Array.isArray(key)) {
6598          // If key is an array of keys...
6599          // We always set camelCase keys, so remove that.
6600          key = key.map(camelCase);
6601        } else {
6602          key = camelCase(key);
6603
6604          // If a key with the spaces exists, use it.
6605          // Otherwise, create an array by matching non-whitespace
6606          key = key in cache ? [key] : key.match(rnothtmlwhite) || [];
6607        }
6608        i = key.length;
6609        while (i--) {
6610          delete cache[key[i]];
6611        }
6612      }
6613
6614      // Remove the expando if there's no more data
6615      if (key === undefined || _jQuery2.isEmptyObject(cache)) {
6616        // Support: Chrome <=35 - 45
6617        // Webkit & Blink performance suffers when deleting properties
6618        // from DOM nodes, so set to undefined instead
6619        // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
6620        if (owner.nodeType) {
6621          owner[this.expando] = undefined;
6622        } else {
6623          delete owner[this.expando];
6624        }
6625      }
6626    },
6627    hasData: function hasData(owner) {
6628      var cache = owner[this.expando];
6629      return cache !== undefined && !_jQuery2.isEmptyObject(cache);
6630    }
6631  };
6632  var dataPriv = new Data();
6633  var dataUser = new Data();
6634
6635  //	Implementation Summary
6636  //
6637  //	1. Enforce API surface and semantic compatibility with 1.9.x branch
6638  //	2. Improve the module's maintainability by reducing the storage
6639  //		paths to a single mechanism.
6640  //	3. Use the same single mechanism to support "private" and "user" data.
6641  //	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
6642  //	5. Avoid exposing implementation details on user objects (eg. expando properties)
6643  //	6. Provide a clear path for implementation upgrade to WeakMap in 2014
6644
6645  var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
6646    rmultiDash = /[A-Z]/g;
6647  function getData(data) {
6648    if (data === "true") {
6649      return true;
6650    }
6651    if (data === "false") {
6652      return false;
6653    }
6654    if (data === "null") {
6655      return null;
6656    }
6657
6658    // Only convert to a number if it doesn't change the string
6659    if (data === +data + "") {
6660      return +data;
6661    }
6662    if (rbrace.test(data)) {
6663      return JSON.parse(data);
6664    }
6665    return data;
6666  }
6667  function dataAttr(elem, key, data) {
6668    var name;
6669
6670    // If nothing was found internally, try to fetch any
6671    // data from the HTML5 data-* attribute
6672    if (data === undefined && elem.nodeType === 1) {
6673      name = "data-" + key.replace(rmultiDash, "-$&").toLowerCase();
6674      data = elem.getAttribute(name);
6675      if (typeof data === "string") {
6676        try {
6677          data = getData(data);
6678        } catch (e) {}
6679
6680        // Make sure we set the data so it isn't changed later
6681        dataUser.set(elem, key, data);
6682      } else {
6683        data = undefined;
6684      }
6685    }
6686    return data;
6687  }
6688  _jQuery2.extend({
6689    hasData: function hasData(elem) {
6690      return dataUser.hasData(elem) || dataPriv.hasData(elem);
6691    },
6692    data: function data(elem, name, _data) {
6693      return dataUser.access(elem, name, _data);
6694    },
6695    removeData: function removeData(elem, name) {
6696      dataUser.remove(elem, name);
6697    },
6698    // TODO: Now that all calls to _data and _removeData have been replaced
6699    // with direct calls to dataPriv methods, these can be deprecated.
6700    _data: function _data(elem, name, data) {
6701      return dataPriv.access(elem, name, data);
6702    },
6703    _removeData: function _removeData(elem, name) {
6704      dataPriv.remove(elem, name);
6705    }
6706  });
6707  _jQuery2.fn.extend({
6708    data: function data(key, value) {
6709      var i,
6710        name,
6711        data,
6712        elem = this[0],
6713        attrs = elem && elem.attributes;
6714
6715      // Gets all values
6716      if (key === undefined) {
6717        if (this.length) {
6718          data = dataUser.get(elem);
6719          if (elem.nodeType === 1 && !dataPriv.get(elem, "hasDataAttrs")) {
6720            i = attrs.length;
6721            while (i--) {
6722              // Support: IE 11 only
6723              // The attrs elements can be null (trac-14894)
6724              if (attrs[i]) {
6725                name = attrs[i].name;
6726                if (name.indexOf("data-") === 0) {
6727                  name = camelCase(name.slice(5));
6728                  dataAttr(elem, name, data[name]);
6729                }
6730              }
6731            }
6732            dataPriv.set(elem, "hasDataAttrs", true);
6733          }
6734        }
6735        return data;
6736      }
6737
6738      // Sets multiple values
6739      if (_typeof(key) === "object") {
6740        return this.each(function () {
6741          dataUser.set(this, key);
6742        });
6743      }
6744      return _access(this, function (value) {
6745        var data;
6746
6747        // The calling jQuery object (element matches) is not empty
6748        // (and therefore has an element appears at this[ 0 ]) and the
6749        // `value` parameter was not undefined. An empty jQuery object
6750        // will result in `undefined` for elem = this[ 0 ] which will
6751        // throw an exception if an attempt to read a data cache is made.
6752        if (elem && value === undefined) {
6753          // Attempt to get data from the cache
6754          // The key will always be camelCased in Data
6755          data = dataUser.get(elem, key);
6756          if (data !== undefined) {
6757            return data;
6758          }
6759
6760          // Attempt to "discover" the data in
6761          // HTML5 custom data-* attrs
6762          data = dataAttr(elem, key);
6763          if (data !== undefined) {
6764            return data;
6765          }
6766
6767          // We tried really hard, but the data doesn't exist.
6768          return;
6769        }
6770
6771        // Set the data...
6772        this.each(function () {
6773          // We always store the camelCased key
6774          dataUser.set(this, key, value);
6775        });
6776      }, null, value, arguments.length > 1, null, true);
6777    },
6778    removeData: function removeData(key) {
6779      return this.each(function () {
6780        dataUser.remove(this, key);
6781      });
6782    }
6783  });
6784  _jQuery2.extend({
6785    queue: function queue(elem, type, data) {
6786      var queue;
6787      if (elem) {
6788        type = (type || "fx") + "queue";
6789        queue = dataPriv.get(elem, type);
6790
6791        // Speed up dequeue by getting out quickly if this is just a lookup
6792        if (data) {
6793          if (!queue || Array.isArray(data)) {
6794            queue = dataPriv.access(elem, type, _jQuery2.makeArray(data));
6795          } else {
6796            queue.push(data);
6797          }
6798        }
6799        return queue || [];
6800      }
6801    },
6802    dequeue: function dequeue(elem, type) {
6803      type = type || "fx";
6804      var queue = _jQuery2.queue(elem, type),
6805        startLength = queue.length,
6806        fn = queue.shift(),
6807        hooks = _jQuery2._queueHooks(elem, type),
6808        next = function next() {
6809          _jQuery2.dequeue(elem, type);
6810        };
6811
6812      // If the fx queue is dequeued, always remove the progress sentinel
6813      if (fn === "inprogress") {
6814        fn = queue.shift();
6815        startLength--;
6816      }
6817      if (fn) {
6818        // Add a progress sentinel to prevent the fx queue from being
6819        // automatically dequeued
6820        if (type === "fx") {
6821          queue.unshift("inprogress");
6822        }
6823
6824        // Clear up the last queue stop function
6825        delete hooks.stop;
6826        fn.call(elem, next, hooks);
6827      }
6828      if (!startLength && hooks) {
6829        hooks.empty.fire();
6830      }
6831    },
6832    // Not public - generate a queueHooks object, or return the current one
6833    _queueHooks: function _queueHooks(elem, type) {
6834      var key = type + "queueHooks";
6835      return dataPriv.get(elem, key) || dataPriv.access(elem, key, {
6836        empty: _jQuery2.Callbacks("once memory").add(function () {
6837          dataPriv.remove(elem, [type + "queue", key]);
6838        })
6839      });
6840    }
6841  });
6842  _jQuery2.fn.extend({
6843    queue: function queue(type, data) {
6844      var setter = 2;
6845      if (typeof type !== "string") {
6846        data = type;
6847        type = "fx";
6848        setter--;
6849      }
6850      if (arguments.length < setter) {
6851        return _jQuery2.queue(this[0], type);
6852      }
6853      return data === undefined ? this : this.each(function () {
6854        var queue = _jQuery2.queue(this, type, data);
6855
6856        // Ensure a hooks for this queue
6857        _jQuery2._queueHooks(this, type);
6858        if (type === "fx" && queue[0] !== "inprogress") {
6859          _jQuery2.dequeue(this, type);
6860        }
6861      });
6862    },
6863    dequeue: function dequeue(type) {
6864      return this.each(function () {
6865        _jQuery2.dequeue(this, type);
6866      });
6867    },
6868    clearQueue: function clearQueue(type) {
6869      return this.queue(type || "fx", []);
6870    },
6871    // Get a promise resolved when queues of a certain type
6872    // are emptied (fx is the type by default)
6873    promise: function promise(type, obj) {
6874      var tmp,
6875        count = 1,
6876        defer = _jQuery2.Deferred(),
6877        elements = this,
6878        i = this.length,
6879        resolve = function resolve() {
6880          if (! --count) {
6881            defer.resolveWith(elements, [elements]);
6882          }
6883        };
6884      if (typeof type !== "string") {
6885        obj = type;
6886        type = undefined;
6887      }
6888      type = type || "fx";
6889      while (i--) {
6890        tmp = dataPriv.get(elements[i], type + "queueHooks");
6891        if (tmp && tmp.empty) {
6892          count++;
6893          tmp.empty.add(resolve);
6894        }
6895      }
6896      resolve();
6897      return defer.promise(obj);
6898    }
6899  });
6900  var pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source;
6901  var rcssNum = new RegExp("^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i");
6902  var cssExpand = ["Top", "Right", "Bottom", "Left"];
6903  var documentElement = document.documentElement;
6904  var isAttached = function isAttached(elem) {
6905      return _jQuery2.contains(elem.ownerDocument, elem);
6906    },
6907    composed = {
6908      composed: true
6909    };
6910
6911  // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
6912  // Check attachment across shadow DOM boundaries when possible (gh-3504)
6913  // Support: iOS 10.0-10.2 only
6914  // Early iOS 10 versions support `attachShadow` but not `getRootNode`,
6915  // leading to errors. We need to check for `getRootNode`.
6916  if (documentElement.getRootNode) {
6917    isAttached = function isAttached(elem) {
6918      return _jQuery2.contains(elem.ownerDocument, elem) || elem.getRootNode(composed) === elem.ownerDocument;
6919    };
6920  }
6921  var isHiddenWithinTree = function isHiddenWithinTree(elem, el) {
6922    // isHiddenWithinTree might be called from jQuery#filter function;
6923    // in that case, element will be second argument
6924    elem = el || elem;
6925
6926    // Inline style trumps all
6927    return elem.style.display === "none" || elem.style.display === "" &&
6928    // Otherwise, check computed style
6929    // Support: Firefox <=43 - 45
6930    // Disconnected elements can have computed display: none, so first confirm that elem is
6931    // in the document.
6932    isAttached(elem) && _jQuery2.css(elem, "display") === "none";
6933  };
6934  function adjustCSS(elem, prop, valueParts, tween) {
6935    var adjusted,
6936      scale,
6937      maxIterations = 20,
6938      currentValue = tween ? function () {
6939        return tween.cur();
6940      } : function () {
6941        return _jQuery2.css(elem, prop, "");
6942      },
6943      initial = currentValue(),
6944      unit = valueParts && valueParts[3] || (_jQuery2.cssNumber[prop] ? "" : "px"),
6945      // Starting value computation is required for potential unit mismatches
6946      initialInUnit = elem.nodeType && (_jQuery2.cssNumber[prop] || unit !== "px" && +initial) && rcssNum.exec(_jQuery2.css(elem, prop));
6947    if (initialInUnit && initialInUnit[3] !== unit) {
6948      // Support: Firefox <=54
6949      // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)
6950      initial = initial / 2;
6951
6952      // Trust units reported by jQuery.css
6953      unit = unit || initialInUnit[3];
6954
6955      // Iteratively approximate from a nonzero starting point
6956      initialInUnit = +initial || 1;
6957      while (maxIterations--) {
6958        // Evaluate and update our best guess (doubling guesses that zero out).
6959        // Finish if the scale equals or crosses 1 (making the old*new product non-positive).
6960        _jQuery2.style(elem, prop, initialInUnit + unit);
6961        if ((1 - scale) * (1 - (scale = currentValue() / initial || 0.5)) <= 0) {
6962          maxIterations = 0;
6963        }
6964        initialInUnit = initialInUnit / scale;
6965      }
6966      initialInUnit = initialInUnit * 2;
6967      _jQuery2.style(elem, prop, initialInUnit + unit);
6968
6969      // Make sure we update the tween properties later on
6970      valueParts = valueParts || [];
6971    }
6972    if (valueParts) {
6973      initialInUnit = +initialInUnit || +initial || 0;
6974
6975      // Apply relative offset (+=/-=) if specified
6976      adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2];
6977      if (tween) {
6978        tween.unit = unit;
6979        tween.start = initialInUnit;
6980        tween.end = adjusted;
6981      }
6982    }
6983    return adjusted;
6984  }
6985  var defaultDisplayMap = {};
6986  function getDefaultDisplay(elem) {
6987    var temp,
6988      doc = elem.ownerDocument,
6989      nodeName = elem.nodeName,
6990      display = defaultDisplayMap[nodeName];
6991    if (display) {
6992      return display;
6993    }
6994    temp = doc.body.appendChild(doc.createElement(nodeName));
6995    display = _jQuery2.css(temp, "display");
6996    temp.parentNode.removeChild(temp);
6997    if (display === "none") {
6998      display = "block";
6999    }
7000    defaultDisplayMap[nodeName] = display;
7001    return display;
7002  }
7003  function showHide(elements, show) {
7004    var display,
7005      elem,
7006      values = [],
7007      index = 0,
7008      length = elements.length;
7009
7010    // Determine new display value for elements that need to change
7011    for (; index < length; index++) {
7012      elem = elements[index];
7013      if (!elem.style) {
7014        continue;
7015      }
7016      display = elem.style.display;
7017      if (show) {
7018        // Since we force visibility upon cascade-hidden elements, an immediate (and slow)
7019        // check is required in this first loop unless we have a nonempty display value (either
7020        // inline or about-to-be-restored)
7021        if (display === "none") {
7022          values[index] = dataPriv.get(elem, "display") || null;
7023          if (!values[index]) {
7024            elem.style.display = "";
7025          }
7026        }
7027        if (elem.style.display === "" && isHiddenWithinTree(elem)) {
7028          values[index] = getDefaultDisplay(elem);
7029        }
7030      } else {
7031        if (display !== "none") {
7032          values[index] = "none";
7033
7034          // Remember what we're overwriting
7035          dataPriv.set(elem, "display", display);
7036        }
7037      }
7038    }
7039
7040    // Set the display of the elements in a second loop to avoid constant reflow
7041    for (index = 0; index < length; index++) {
7042      if (values[index] != null) {
7043        elements[index].style.display = values[index];
7044      }
7045    }
7046    return elements;
7047  }
7048  _jQuery2.fn.extend({
7049    show: function show() {
7050      return showHide(this, true);
7051    },
7052    hide: function hide() {
7053      return showHide(this);
7054    },
7055    toggle: function toggle(state) {
7056      if (typeof state === "boolean") {
7057        return state ? this.show() : this.hide();
7058      }
7059      return this.each(function () {
7060        if (isHiddenWithinTree(this)) {
7061          _jQuery2(this).show();
7062        } else {
7063          _jQuery2(this).hide();
7064        }
7065      });
7066    }
7067  });
7068  var rcheckableType = /^(?:checkbox|radio)$/i;
7069  var rtagName = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i;
7070  var rscriptType = /^$|^module$|\/(?:java|ecma)script/i;
7071  (function () {
7072    var fragment = document.createDocumentFragment(),
7073      div = fragment.appendChild(document.createElement("div")),
7074      input = document.createElement("input");
7075
7076    // Support: Android 4.0 - 4.3 only
7077    // Check state lost if the name is set (trac-11217)
7078    // Support: Windows Web Apps (WWA)
7079    // `name` and `type` must use .setAttribute for WWA (trac-14901)
7080    input.setAttribute("type", "radio");
7081    input.setAttribute("checked", "checked");
7082    input.setAttribute("name", "t");
7083    div.appendChild(input);
7084
7085    // Support: Android <=4.1 only
7086    // Older WebKit doesn't clone checked state correctly in fragments
7087    support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked;
7088
7089    // Support: IE <=11 only
7090    // Make sure textarea (and checkbox) defaultValue is properly cloned
7091    div.innerHTML = "<textarea>x</textarea>";
7092    support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue;
7093
7094    // Support: IE <=9 only
7095    // IE <=9 replaces <option> tags with their contents when inserted outside of
7096    // the select element.
7097    div.innerHTML = "<option></option>";
7098    support.option = !!div.lastChild;
7099  })();
7100
7101  // We have to close these tags to support XHTML (trac-13200)
7102  var wrapMap = {
7103    // XHTML parsers do not magically insert elements in the
7104    // same way that tag soup parsers do. So we cannot shorten
7105    // this by omitting <tbody> or other required elements.
7106    thead: [1, "<table>", "</table>"],
7107    col: [2, "<table><colgroup>", "</colgroup></table>"],
7108    tr: [2, "<table><tbody>", "</tbody></table>"],
7109    td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
7110    _default: [0, "", ""]
7111  };
7112  wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
7113  wrapMap.th = wrapMap.td;
7114
7115  // Support: IE <=9 only
7116  if (!support.option) {
7117    wrapMap.optgroup = wrapMap.option = [1, "<select multiple='multiple'>", "</select>"];
7118  }
7119  function getAll(context, tag) {
7120    // Support: IE <=9 - 11 only
7121    // Use typeof to avoid zero-argument method invocation on host objects (trac-15151)
7122    var ret;
7123    if (typeof context.getElementsByTagName !== "undefined") {
7124      ret = context.getElementsByTagName(tag || "*");
7125    } else if (typeof context.querySelectorAll !== "undefined") {
7126      ret = context.querySelectorAll(tag || "*");
7127    } else {
7128      ret = [];
7129    }
7130    if (tag === undefined || tag && nodeName(context, tag)) {
7131      return _jQuery2.merge([context], ret);
7132    }
7133    return ret;
7134  }
7135
7136  // Mark scripts as having already been evaluated
7137  function setGlobalEval(elems, refElements) {
7138    var i = 0,
7139      l = elems.length;
7140    for (; i < l; i++) {
7141      dataPriv.set(elems[i], "globalEval", !refElements || dataPriv.get(refElements[i], "globalEval"));
7142    }
7143  }
7144  var rhtml = /<|&#?\w+;/;
7145  function buildFragment(elems, context, scripts, selection, ignored) {
7146    var elem,
7147      tmp,
7148      tag,
7149      wrap,
7150      attached,
7151      j,
7152      fragment = context.createDocumentFragment(),
7153      nodes = [],
7154      i = 0,
7155      l = elems.length;
7156    for (; i < l; i++) {
7157      elem = elems[i];
7158      if (elem || elem === 0) {
7159        // Add nodes directly
7160        if (toType(elem) === "object") {
7161          // Support: Android <=4.0 only, PhantomJS 1 only
7162          // push.apply(_, arraylike) throws on ancient WebKit
7163          _jQuery2.merge(nodes, elem.nodeType ? [elem] : elem);
7164
7165          // Convert non-html into a text node
7166        } else if (!rhtml.test(elem)) {
7167          nodes.push(context.createTextNode(elem));
7168
7169          // Convert html into DOM nodes
7170        } else {
7171          tmp = tmp || fragment.appendChild(context.createElement("div"));
7172
7173          // Deserialize a standard representation
7174          tag = (rtagName.exec(elem) || ["", ""])[1].toLowerCase();
7175          wrap = wrapMap[tag] || wrapMap._default;
7176          tmp.innerHTML = wrap[1] + _jQuery2.htmlPrefilter(elem) + wrap[2];
7177
7178          // Descend through wrappers to the right content
7179          j = wrap[0];
7180          while (j--) {
7181            tmp = tmp.lastChild;
7182          }
7183
7184          // Support: Android <=4.0 only, PhantomJS 1 only
7185          // push.apply(_, arraylike) throws on ancient WebKit
7186          _jQuery2.merge(nodes, tmp.childNodes);
7187
7188          // Remember the top-level container
7189          tmp = fragment.firstChild;
7190
7191          // Ensure the created nodes are orphaned (trac-12392)
7192          tmp.textContent = "";
7193        }
7194      }
7195    }
7196
7197    // Remove wrapper from fragment
7198    fragment.textContent = "";
7199    i = 0;
7200    while (elem = nodes[i++]) {
7201      // Skip elements already in the context collection (trac-4087)
7202      if (selection && _jQuery2.inArray(elem, selection) > -1) {
7203        if (ignored) {
7204          ignored.push(elem);
7205        }
7206        continue;
7207      }
7208      attached = isAttached(elem);
7209
7210      // Append to fragment
7211      tmp = getAll(fragment.appendChild(elem), "script");
7212
7213      // Preserve script evaluation history
7214      if (attached) {
7215        setGlobalEval(tmp);
7216      }
7217
7218      // Capture executables
7219      if (scripts) {
7220        j = 0;
7221        while (elem = tmp[j++]) {
7222          if (rscriptType.test(elem.type || "")) {
7223            scripts.push(elem);
7224          }
7225        }
7226      }
7227    }
7228    return fragment;
7229  }
7230  var rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
7231  function returnTrue() {
7232    return true;
7233  }
7234  function returnFalse() {
7235    return false;
7236  }
7237  function _on(elem, types, selector, data, fn, one) {
7238    var origFn, type;
7239
7240    // Types can be a map of types/handlers
7241    if (_typeof(types) === "object") {
7242      // ( types-Object, selector, data )
7243      if (typeof selector !== "string") {
7244        // ( types-Object, data )
7245        data = data || selector;
7246        selector = undefined;
7247      }
7248      for (type in types) {
7249        _on(elem, type, selector, data, types[type], one);
7250      }
7251      return elem;
7252    }
7253    if (data == null && fn == null) {
7254      // ( types, fn )
7255      fn = selector;
7256      data = selector = undefined;
7257    } else if (fn == null) {
7258      if (typeof selector === "string") {
7259        // ( types, selector, fn )
7260        fn = data;
7261        data = undefined;
7262      } else {
7263        // ( types, data, fn )
7264        fn = data;
7265        data = selector;
7266        selector = undefined;
7267      }
7268    }
7269    if (fn === false) {
7270      fn = returnFalse;
7271    } else if (!fn) {
7272      return elem;
7273    }
7274    if (one === 1) {
7275      origFn = fn;
7276      fn = function fn(event) {
7277        // Can use an empty set, since event contains the info
7278        _jQuery2().off(event);
7279        return origFn.apply(this, arguments);
7280      };
7281
7282      // Use same guid so caller can remove using origFn
7283      fn.guid = origFn.guid || (origFn.guid = _jQuery2.guid++);
7284    }
7285    return elem.each(function () {
7286      _jQuery2.event.add(this, types, fn, data, selector);
7287    });
7288  }
7289
7290  /*
7291   * Helper functions for managing events -- not part of the public interface.
7292   * Props to Dean Edwards' addEvent library for many of the ideas.
7293   */
7294  _jQuery2.event = {
7295    global: {},
7296    add: function add(elem, types, handler, data, selector) {
7297      var handleObjIn,
7298        eventHandle,
7299        tmp,
7300        events,
7301        t,
7302        handleObj,
7303        special,
7304        handlers,
7305        type,
7306        namespaces,
7307        origType,
7308        elemData = dataPriv.get(elem);
7309
7310      // Only attach events to objects that accept data
7311      if (!acceptData(elem)) {
7312        return;
7313      }
7314
7315      // Caller can pass in an object of custom data in lieu of the handler
7316      if (handler.handler) {
7317        handleObjIn = handler;
7318        handler = handleObjIn.handler;
7319        selector = handleObjIn.selector;
7320      }
7321
7322      // Ensure that invalid selectors throw exceptions at attach time
7323      // Evaluate against documentElement in case elem is a non-element node (e.g., document)
7324      if (selector) {
7325        _jQuery2.find.matchesSelector(documentElement, selector);
7326      }
7327
7328      // Make sure that the handler has a unique ID, used to find/remove it later
7329      if (!handler.guid) {
7330        handler.guid = _jQuery2.guid++;
7331      }
7332
7333      // Init the element's event structure and main handler, if this is the first
7334      if (!(events = elemData.events)) {
7335        events = elemData.events = Object.create(null);
7336      }
7337      if (!(eventHandle = elemData.handle)) {
7338        eventHandle = elemData.handle = function (e) {
7339          // Discard the second event of a jQuery.event.trigger() and
7340          // when an event is called after a page has unloaded
7341          return typeof _jQuery2 !== "undefined" && _jQuery2.event.triggered !== e.type ? _jQuery2.event.dispatch.apply(elem, arguments) : undefined;
7342        };
7343      }
7344
7345      // Handle multiple events separated by a space
7346      types = (types || "").match(rnothtmlwhite) || [""];
7347      t = types.length;
7348      while (t--) {
7349        tmp = rtypenamespace.exec(types[t]) || [];
7350        type = origType = tmp[1];
7351        namespaces = (tmp[2] || "").split(".").sort();
7352
7353        // There *must* be a type, no attaching namespace-only handlers
7354        if (!type) {
7355          continue;
7356        }
7357
7358        // If event changes its type, use the special event handlers for the changed type
7359        special = _jQuery2.event.special[type] || {};
7360
7361        // If selector defined, determine special event api type, otherwise given type
7362        type = (selector ? special.delegateType : special.bindType) || type;
7363
7364        // Update special based on newly reset type
7365        special = _jQuery2.event.special[type] || {};
7366
7367        // handleObj is passed to all event handlers
7368        handleObj = _jQuery2.extend({
7369          type: type,
7370          origType: origType,
7371          data: data,
7372          handler: handler,
7373          guid: handler.guid,
7374          selector: selector,
7375          needsContext: selector && _jQuery2.expr.match.needsContext.test(selector),
7376          namespace: namespaces.join(".")
7377        }, handleObjIn);
7378
7379        // Init the event handler queue if we're the first
7380        if (!(handlers = events[type])) {
7381          handlers = events[type] = [];
7382          handlers.delegateCount = 0;
7383
7384          // Only use addEventListener if the special events handler returns false
7385          if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) {
7386            if (elem.addEventListener) {
7387              elem.addEventListener(type, eventHandle);
7388            }
7389          }
7390        }
7391        if (special.add) {
7392          special.add.call(elem, handleObj);
7393          if (!handleObj.handler.guid) {
7394            handleObj.handler.guid = handler.guid;
7395          }
7396        }
7397
7398        // Add to the element's handler list, delegates in front
7399        if (selector) {
7400          handlers.splice(handlers.delegateCount++, 0, handleObj);
7401        } else {
7402          handlers.push(handleObj);
7403        }
7404
7405        // Keep track of which events have ever been used, for event optimization
7406        _jQuery2.event.global[type] = true;
7407      }
7408    },
7409    // Detach an event or set of events from an element
7410    remove: function remove(elem, types, handler, selector, mappedTypes) {
7411      var j,
7412        origCount,
7413        tmp,
7414        events,
7415        t,
7416        handleObj,
7417        special,
7418        handlers,
7419        type,
7420        namespaces,
7421        origType,
7422        elemData = dataPriv.hasData(elem) && dataPriv.get(elem);
7423      if (!elemData || !(events = elemData.events)) {
7424        return;
7425      }
7426
7427      // Once for each type.namespace in types; type may be omitted
7428      types = (types || "").match(rnothtmlwhite) || [""];
7429      t = types.length;
7430      while (t--) {
7431        tmp = rtypenamespace.exec(types[t]) || [];
7432        type = origType = tmp[1];
7433        namespaces = (tmp[2] || "").split(".").sort();
7434
7435        // Unbind all events (on this namespace, if provided) for the element
7436        if (!type) {
7437          for (type in events) {
7438            _jQuery2.event.remove(elem, type + types[t], handler, selector, true);
7439          }
7440          continue;
7441        }
7442        special = _jQuery2.event.special[type] || {};
7443        type = (selector ? special.delegateType : special.bindType) || type;
7444        handlers = events[type] || [];
7445        tmp = tmp[2] && new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)");
7446
7447        // Remove matching events
7448        origCount = j = handlers.length;
7449        while (j--) {
7450          handleObj = handlers[j];
7451          if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === "**" && handleObj.selector)) {
7452            handlers.splice(j, 1);
7453            if (handleObj.selector) {
7454              handlers.delegateCount--;
7455            }
7456            if (special.remove) {
7457              special.remove.call(elem, handleObj);
7458            }
7459          }
7460        }
7461
7462        // Remove generic event handler if we removed something and no more handlers exist
7463        // (avoids potential for endless recursion during removal of special event handlers)
7464        if (origCount && !handlers.length) {
7465          if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) {
7466            _jQuery2.removeEvent(elem, type, elemData.handle);
7467          }
7468          delete events[type];
7469        }
7470      }
7471
7472      // Remove data and the expando if it's no longer used
7473      if (_jQuery2.isEmptyObject(events)) {
7474        dataPriv.remove(elem, "handle events");
7475      }
7476    },
7477    dispatch: function dispatch(nativeEvent) {
7478      var i,
7479        j,
7480        ret,
7481        matched,
7482        handleObj,
7483        handlerQueue,
7484        args = new Array(arguments.length),
7485        // Make a writable jQuery.Event from the native event object
7486        event = _jQuery2.event.fix(nativeEvent),
7487        handlers = (dataPriv.get(this, "events") || Object.create(null))[event.type] || [],
7488        special = _jQuery2.event.special[event.type] || {};
7489
7490      // Use the fix-ed jQuery.Event rather than the (read-only) native event
7491      args[0] = event;
7492      for (i = 1; i < arguments.length; i++) {
7493        args[i] = arguments[i];
7494      }
7495      event.delegateTarget = this;
7496
7497      // Call the preDispatch hook for the mapped type, and let it bail if desired
7498      if (special.preDispatch && special.preDispatch.call(this, event) === false) {
7499        return;
7500      }
7501
7502      // Determine handlers
7503      handlerQueue = _jQuery2.event.handlers.call(this, event, handlers);
7504
7505      // Run delegates first; they may want to stop propagation beneath us
7506      i = 0;
7507      while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) {
7508        event.currentTarget = matched.elem;
7509        j = 0;
7510        while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) {
7511          // If the event is namespaced, then each handler is only invoked if it is
7512          // specially universal or its namespaces are a superset of the event's.
7513          if (!event.rnamespace || handleObj.namespace === false || event.rnamespace.test(handleObj.namespace)) {
7514            event.handleObj = handleObj;
7515            event.data = handleObj.data;
7516            ret = ((_jQuery2.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args);
7517            if (ret !== undefined) {
7518              if ((event.result = ret) === false) {
7519                event.preventDefault();
7520                event.stopPropagation();
7521              }
7522            }
7523          }
7524        }
7525      }
7526
7527      // Call the postDispatch hook for the mapped type
7528      if (special.postDispatch) {
7529        special.postDispatch.call(this, event);
7530      }
7531      return event.result;
7532    },
7533    handlers: function handlers(event, _handlers) {
7534      var i,
7535        handleObj,
7536        sel,
7537        matchedHandlers,
7538        matchedSelectors,
7539        handlerQueue = [],
7540        delegateCount = _handlers.delegateCount,
7541        cur = event.target;
7542
7543      // Find delegate handlers
7544      if (delegateCount &&
7545      // Support: IE <=9
7546      // Black-hole SVG <use> instance trees (trac-13180)
7547      cur.nodeType &&
7548      // Support: Firefox <=42
7549      // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
7550      // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
7551      // Support: IE 11 only
7552      // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
7553      !(event.type === "click" && event.button >= 1)) {
7554        for (; cur !== this; cur = cur.parentNode || this) {
7555          // Don't check non-elements (trac-13208)
7556          // Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)
7557          if (cur.nodeType === 1 && !(event.type === "click" && cur.disabled === true)) {
7558            matchedHandlers = [];
7559            matchedSelectors = {};
7560            for (i = 0; i < delegateCount; i++) {
7561              handleObj = _handlers[i];
7562
7563              // Don't conflict with Object.prototype properties (trac-13203)
7564              sel = handleObj.selector + " ";
7565              if (matchedSelectors[sel] === undefined) {
7566                matchedSelectors[sel] = handleObj.needsContext ? _jQuery2(sel, this).index(cur) > -1 : _jQuery2.find(sel, this, null, [cur]).length;
7567              }
7568              if (matchedSelectors[sel]) {
7569                matchedHandlers.push(handleObj);
7570              }
7571            }
7572            if (matchedHandlers.length) {
7573              handlerQueue.push({
7574                elem: cur,
7575                handlers: matchedHandlers
7576              });
7577            }
7578          }
7579        }
7580      }
7581
7582      // Add the remaining (directly-bound) handlers
7583      cur = this;
7584      if (delegateCount < _handlers.length) {
7585        handlerQueue.push({
7586          elem: cur,
7587          handlers: _handlers.slice(delegateCount)
7588        });
7589      }
7590      return handlerQueue;
7591    },
7592    addProp: function addProp(name, hook) {
7593      Object.defineProperty(_jQuery2.Event.prototype, name, {
7594        enumerable: true,
7595        configurable: true,
7596        get: isFunction(hook) ? function () {
7597          if (this.originalEvent) {
7598            return hook(this.originalEvent);
7599          }
7600        } : function () {
7601          if (this.originalEvent) {
7602            return this.originalEvent[name];
7603          }
7604        },
7605        set: function set(value) {
7606          Object.defineProperty(this, name, {
7607            enumerable: true,
7608            configurable: true,
7609            writable: true,
7610            value: value
7611          });
7612        }
7613      });
7614    },
7615    fix: function fix(originalEvent) {
7616      return originalEvent[_jQuery2.expando] ? originalEvent : new _jQuery2.Event(originalEvent);
7617    },
7618    special: {
7619      load: {
7620        // Prevent triggered image.load events from bubbling to window.load
7621        noBubble: true
7622      },
7623      click: {
7624        // Utilize native event to ensure correct state for checkable inputs
7625        setup: function setup(data) {
7626          // For mutual compressibility with _default, replace `this` access with a local var.
7627          // `|| data` is dead code meant only to preserve the variable through minification.
7628          var el = this || data;
7629
7630          // Claim the first handler
7631          if (rcheckableType.test(el.type) && el.click && nodeName(el, "input")) {
7632            // dataPriv.set( el, "click", ... )
7633            leverageNative(el, "click", true);
7634          }
7635
7636          // Return false to allow normal processing in the caller
7637          return false;
7638        },
7639        trigger: function trigger(data) {
7640          // For mutual compressibility with _default, replace `this` access with a local var.
7641          // `|| data` is dead code meant only to preserve the variable through minification.
7642          var el = this || data;
7643
7644          // Force setup before triggering a click
7645          if (rcheckableType.test(el.type) && el.click && nodeName(el, "input")) {
7646            leverageNative(el, "click");
7647          }
7648
7649          // Return non-false to allow normal event-path propagation
7650          return true;
7651        },
7652        // For cross-browser consistency, suppress native .click() on links
7653        // Also prevent it if we're currently inside a leveraged native-event stack
7654        _default: function _default(event) {
7655          var target = event.target;
7656          return rcheckableType.test(target.type) && target.click && nodeName(target, "input") && dataPriv.get(target, "click") || nodeName(target, "a");
7657        }
7658      },
7659      beforeunload: {
7660        postDispatch: function postDispatch(event) {
7661          // Support: Firefox 20+
7662          // Firefox doesn't alert if the returnValue field is not set.
7663          if (event.result !== undefined && event.originalEvent) {
7664            event.originalEvent.returnValue = event.result;
7665          }
7666        }
7667      }
7668    }
7669  };
7670
7671  // Ensure the presence of an event listener that handles manually-triggered
7672  // synthetic events by interrupting progress until reinvoked in response to
7673  // *native* events that it fires directly, ensuring that state changes have
7674  // already occurred before other listeners are invoked.
7675  function leverageNative(el, type, isSetup) {
7676    // Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add
7677    if (!isSetup) {
7678      if (dataPriv.get(el, type) === undefined) {
7679        _jQuery2.event.add(el, type, returnTrue);
7680      }
7681      return;
7682    }
7683
7684    // Register the controller as a special universal handler for all event namespaces
7685    dataPriv.set(el, type, false);
7686    _jQuery2.event.add(el, type, {
7687      namespace: false,
7688      handler: function handler(event) {
7689        var result,
7690          saved = dataPriv.get(this, type);
7691        if (event.isTrigger & 1 && this[type]) {
7692          // Interrupt processing of the outer synthetic .trigger()ed event
7693          if (!saved) {
7694            // Store arguments for use when handling the inner native event
7695            // There will always be at least one argument (an event object), so this array
7696            // will not be confused with a leftover capture object.
7697            saved = _slice.call(arguments);
7698            dataPriv.set(this, type, saved);
7699
7700            // Trigger the native event and capture its result
7701            this[type]();
7702            result = dataPriv.get(this, type);
7703            dataPriv.set(this, type, false);
7704            if (saved !== result) {
7705              // Cancel the outer synthetic event
7706              event.stopImmediatePropagation();
7707              event.preventDefault();
7708              return result;
7709            }
7710
7711            // If this is an inner synthetic event for an event with a bubbling surrogate
7712            // (focus or blur), assume that the surrogate already propagated from triggering
7713            // the native event and prevent that from happening again here.
7714            // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the
7715            // bubbling surrogate propagates *after* the non-bubbling base), but that seems
7716            // less bad than duplication.
7717          } else if ((_jQuery2.event.special[type] || {}).delegateType) {
7718            event.stopPropagation();
7719          }
7720
7721          // If this is a native event triggered above, everything is now in order
7722          // Fire an inner synthetic event with the original arguments
7723        } else if (saved) {
7724          // ...and capture the result
7725          dataPriv.set(this, type, _jQuery2.event.trigger(saved[0], saved.slice(1), this));
7726
7727          // Abort handling of the native event by all jQuery handlers while allowing
7728          // native handlers on the same element to run. On target, this is achieved
7729          // by stopping immediate propagation just on the jQuery event. However,
7730          // the native event is re-wrapped by a jQuery one on each level of the
7731          // propagation so the only way to stop it for jQuery is to stop it for
7732          // everyone via native `stopPropagation()`. This is not a problem for
7733          // focus/blur which don't bubble, but it does also stop click on checkboxes
7734          // and radios. We accept this limitation.
7735          event.stopPropagation();
7736          event.isImmediatePropagationStopped = returnTrue;
7737        }
7738      }
7739    });
7740  }
7741  _jQuery2.removeEvent = function (elem, type, handle) {
7742    // This "if" is needed for plain objects
7743    if (elem.removeEventListener) {
7744      elem.removeEventListener(type, handle);
7745    }
7746  };
7747  _jQuery2.Event = function (src, props) {
7748    // Allow instantiation without the 'new' keyword
7749    if (!(this instanceof _jQuery2.Event)) {
7750      return new _jQuery2.Event(src, props);
7751    }
7752
7753    // Event object
7754    if (src && src.type) {
7755      this.originalEvent = src;
7756      this.type = src.type;
7757
7758      // Events bubbling up the document may have been marked as prevented
7759      // by a handler lower down the tree; reflect the correct value.
7760      this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined &&
7761      // Support: Android <=2.3 only
7762      src.returnValue === false ? returnTrue : returnFalse;
7763
7764      // Create target properties
7765      // Support: Safari <=6 - 7 only
7766      // Target should not be a text node (trac-504, trac-13143)
7767      this.target = src.target && src.target.nodeType === 3 ? src.target.parentNode : src.target;
7768      this.currentTarget = src.currentTarget;
7769      this.relatedTarget = src.relatedTarget;
7770
7771      // Event type
7772    } else {
7773      this.type = src;
7774    }
7775
7776    // Put explicitly provided properties onto the event object
7777    if (props) {
7778      _jQuery2.extend(this, props);
7779    }
7780
7781    // Create a timestamp if incoming event doesn't have one
7782    this.timeStamp = src && src.timeStamp || Date.now();
7783
7784    // Mark it as fixed
7785    this[_jQuery2.expando] = true;
7786  };
7787
7788  // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
7789  // https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
7790  _jQuery2.Event.prototype = {
7791    constructor: _jQuery2.Event,
7792    isDefaultPrevented: returnFalse,
7793    isPropagationStopped: returnFalse,
7794    isImmediatePropagationStopped: returnFalse,
7795    isSimulated: false,
7796    preventDefault: function preventDefault() {
7797      var e = this.originalEvent;
7798      this.isDefaultPrevented = returnTrue;
7799      if (e && !this.isSimulated) {
7800        e.preventDefault();
7801      }
7802    },
7803    stopPropagation: function stopPropagation() {
7804      var e = this.originalEvent;
7805      this.isPropagationStopped = returnTrue;
7806      if (e && !this.isSimulated) {
7807        e.stopPropagation();
7808      }
7809    },
7810    stopImmediatePropagation: function stopImmediatePropagation() {
7811      var e = this.originalEvent;
7812      this.isImmediatePropagationStopped = returnTrue;
7813      if (e && !this.isSimulated) {
7814        e.stopImmediatePropagation();
7815      }
7816      this.stopPropagation();
7817    }
7818  };
7819
7820  // Includes all common event props including KeyEvent and MouseEvent specific props
7821  _jQuery2.each({
7822    altKey: true,
7823    bubbles: true,
7824    cancelable: true,
7825    changedTouches: true,
7826    ctrlKey: true,
7827    detail: true,
7828    eventPhase: true,
7829    metaKey: true,
7830    pageX: true,
7831    pageY: true,
7832    shiftKey: true,
7833    view: true,
7834    "char": true,
7835    code: true,
7836    charCode: true,
7837    key: true,
7838    keyCode: true,
7839    button: true,
7840    buttons: true,
7841    clientX: true,
7842    clientY: true,
7843    offsetX: true,
7844    offsetY: true,
7845    pointerId: true,
7846    pointerType: true,
7847    screenX: true,
7848    screenY: true,
7849    targetTouches: true,
7850    toElement: true,
7851    touches: true,
7852    which: true
7853  }, _jQuery2.event.addProp);
7854  _jQuery2.each({
7855    focus: "focusin",
7856    blur: "focusout"
7857  }, function (type, delegateType) {
7858    function focusMappedHandler(nativeEvent) {
7859      if (document.documentMode) {
7860        // Support: IE 11+
7861        // Attach a single focusin/focusout handler on the document while someone wants
7862        // focus/blur. This is because the former are synchronous in IE while the latter
7863        // are async. In other browsers, all those handlers are invoked synchronously.
7864
7865        // `handle` from private data would already wrap the event, but we need
7866        // to change the `type` here.
7867        var handle = dataPriv.get(this, "handle"),
7868          event = _jQuery2.event.fix(nativeEvent);
7869        event.type = nativeEvent.type === "focusin" ? "focus" : "blur";
7870        event.isSimulated = true;
7871
7872        // First, handle focusin/focusout
7873        handle(nativeEvent);
7874
7875        // ...then, handle focus/blur
7876        //
7877        // focus/blur don't bubble while focusin/focusout do; simulate the former by only
7878        // invoking the handler at the lower level.
7879        if (event.target === event.currentTarget) {
7880          // The setup part calls `leverageNative`, which, in turn, calls
7881          // `jQuery.event.add`, so event handle will already have been set
7882          // by this point.
7883          handle(event);
7884        }
7885      } else {
7886        // For non-IE browsers, attach a single capturing handler on the document
7887        // while someone wants focusin/focusout.
7888        _jQuery2.event.simulate(delegateType, nativeEvent.target, _jQuery2.event.fix(nativeEvent));
7889      }
7890    }
7891    _jQuery2.event.special[type] = {
7892      // Utilize native event if possible so blur/focus sequence is correct
7893      setup: function setup() {
7894        var attaches;
7895
7896        // Claim the first handler
7897        // dataPriv.set( this, "focus", ... )
7898        // dataPriv.set( this, "blur", ... )
7899        leverageNative(this, type, true);
7900        if (document.documentMode) {
7901          // Support: IE 9 - 11+
7902          // We use the same native handler for focusin & focus (and focusout & blur)
7903          // so we need to coordinate setup & teardown parts between those events.
7904          // Use `delegateType` as the key as `type` is already used by `leverageNative`.
7905          attaches = dataPriv.get(this, delegateType);
7906          if (!attaches) {
7907            this.addEventListener(delegateType, focusMappedHandler);
7908          }
7909          dataPriv.set(this, delegateType, (attaches || 0) + 1);
7910        } else {
7911          // Return false to allow normal processing in the caller
7912          return false;
7913        }
7914      },
7915      trigger: function trigger() {
7916        // Force setup before trigger
7917        leverageNative(this, type);
7918
7919        // Return non-false to allow normal event-path propagation
7920        return true;
7921      },
7922      teardown: function teardown() {
7923        var attaches;
7924        if (document.documentMode) {
7925          attaches = dataPriv.get(this, delegateType) - 1;
7926          if (!attaches) {
7927            this.removeEventListener(delegateType, focusMappedHandler);
7928            dataPriv.remove(this, delegateType);
7929          } else {
7930            dataPriv.set(this, delegateType, attaches);
7931          }
7932        } else {
7933          // Return false to indicate standard teardown should be applied
7934          return false;
7935        }
7936      },
7937      // Suppress native focus or blur if we're currently inside
7938      // a leveraged native-event stack
7939      _default: function _default(event) {
7940        return dataPriv.get(event.target, type);
7941      },
7942      delegateType: delegateType
7943    };
7944
7945    // Support: Firefox <=44
7946    // Firefox doesn't have focus(in | out) events
7947    // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
7948    //
7949    // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
7950    // focus(in | out) events fire after focus & blur events,
7951    // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
7952    // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
7953    //
7954    // Support: IE 9 - 11+
7955    // To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,
7956    // attach a single handler for both events in IE.
7957    _jQuery2.event.special[delegateType] = {
7958      setup: function setup() {
7959        // Handle: regular nodes (via `this.ownerDocument`), window
7960        // (via `this.document`) & document (via `this`).
7961        var doc = this.ownerDocument || this.document || this,
7962          dataHolder = document.documentMode ? this : doc,
7963          attaches = dataPriv.get(dataHolder, delegateType);
7964
7965        // Support: IE 9 - 11+
7966        // We use the same native handler for focusin & focus (and focusout & blur)
7967        // so we need to coordinate setup & teardown parts between those events.
7968        // Use `delegateType` as the key as `type` is already used by `leverageNative`.
7969        if (!attaches) {
7970          if (document.documentMode) {
7971            this.addEventListener(delegateType, focusMappedHandler);
7972          } else {
7973            doc.addEventListener(type, focusMappedHandler, true);
7974          }
7975        }
7976        dataPriv.set(dataHolder, delegateType, (attaches || 0) + 1);
7977      },
7978      teardown: function teardown() {
7979        var doc = this.ownerDocument || this.document || this,
7980          dataHolder = document.documentMode ? this : doc,
7981          attaches = dataPriv.get(dataHolder, delegateType) - 1;
7982        if (!attaches) {
7983          if (document.documentMode) {
7984            this.removeEventListener(delegateType, focusMappedHandler);
7985          } else {
7986            doc.removeEventListener(type, focusMappedHandler, true);
7987          }
7988          dataPriv.remove(dataHolder, delegateType);
7989        } else {
7990          dataPriv.set(dataHolder, delegateType, attaches);
7991        }
7992      }
7993    };
7994  });
7995
7996  // Create mouseenter/leave events using mouseover/out and event-time checks
7997  // so that event delegation works in jQuery.
7998  // Do the same for pointerenter/pointerleave and pointerover/pointerout
7999  //
8000  // Support: Safari 7 only
8001  // Safari sends mouseenter too often; see:
8002  // https://bugs.chromium.org/p/chromium/issues/detail?id=470258
8003  // for the description of the bug (it existed in older Chrome versions as well).
8004  _jQuery2.each({
8005    mouseenter: "mouseover",
8006    mouseleave: "mouseout",
8007    pointerenter: "pointerover",
8008    pointerleave: "pointerout"
8009  }, function (orig, fix) {
8010    _jQuery2.event.special[orig] = {
8011      delegateType: fix,
8012      bindType: fix,
8013      handle: function handle(event) {
8014        var ret,
8015          target = this,
8016          related = event.relatedTarget,
8017          handleObj = event.handleObj;
8018
8019        // For mouseenter/leave call the handler if related is outside the target.
8020        // NB: No relatedTarget if the mouse left/entered the browser window
8021        if (!related || related !== target && !_jQuery2.contains(target, related)) {
8022          event.type = handleObj.origType;
8023          ret = handleObj.handler.apply(this, arguments);
8024          event.type = fix;
8025        }
8026        return ret;
8027      }
8028    };
8029  });
8030  _jQuery2.fn.extend({
8031    on: function on(types, selector, data, fn) {
8032      return _on(this, types, selector, data, fn);
8033    },
8034    one: function one(types, selector, data, fn) {
8035      return _on(this, types, selector, data, fn, 1);
8036    },
8037    off: function off(types, selector, fn) {
8038      var handleObj, type;
8039      if (types && types.preventDefault && types.handleObj) {
8040        // ( event )  dispatched jQuery.Event
8041        handleObj = types.handleObj;
8042        _jQuery2(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler);
8043        return this;
8044      }
8045      if (_typeof(types) === "object") {
8046        // ( types-object [, selector] )
8047        for (type in types) {
8048          this.off(type, selector, types[type]);
8049        }
8050        return this;
8051      }
8052      if (selector === false || typeof selector === "function") {
8053        // ( types [, fn] )
8054        fn = selector;
8055        selector = undefined;
8056      }
8057      if (fn === false) {
8058        fn = returnFalse;
8059      }
8060      return this.each(function () {
8061        _jQuery2.event.remove(this, types, fn, selector);
8062      });
8063    }
8064  });
8065  var
8066    // Support: IE <=10 - 11, Edge 12 - 13 only
8067    // In IE/Edge using regex groups here causes severe slowdowns.
8068    // See https://connect.microsoft.com/IE/feedback/details/1736512/
8069    rnoInnerhtml = /<script|<style|<link/i,
8070    // checked="checked" or checked
8071    rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
8072    rcleanScript = /^\s*<!\[CDATA\[|\]\]>\s*$/g;
8073
8074  // Prefer a tbody over its parent table for containing new rows
8075  function manipulationTarget(elem, content) {
8076    if (nodeName(elem, "table") && nodeName(content.nodeType !== 11 ? content : content.firstChild, "tr")) {
8077      return _jQuery2(elem).children("tbody")[0] || elem;
8078    }
8079    return elem;
8080  }
8081
8082  // Replace/restore the type attribute of script elements for safe DOM manipulation
8083  function disableScript(elem) {
8084    elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type;
8085    return elem;
8086  }
8087  function restoreScript(elem) {
8088    if ((elem.type || "").slice(0, 5) === "true/") {
8089      elem.type = elem.type.slice(5);
8090    } else {
8091      elem.removeAttribute("type");
8092    }
8093    return elem;
8094  }
8095  function cloneCopyEvent(src, dest) {
8096    var i, l, type, pdataOld, udataOld, udataCur, events;
8097    if (dest.nodeType !== 1) {
8098      return;
8099    }
8100
8101    // 1. Copy private data: events, handlers, etc.
8102    if (dataPriv.hasData(src)) {
8103      pdataOld = dataPriv.get(src);
8104      events = pdataOld.events;
8105      if (events) {
8106        dataPriv.remove(dest, "handle events");
8107        for (type in events) {
8108          for (i = 0, l = events[type].length; i < l; i++) {
8109            _jQuery2.event.add(dest, type, events[type][i]);
8110          }
8111        }
8112      }
8113    }
8114
8115    // 2. Copy user data
8116    if (dataUser.hasData(src)) {
8117      udataOld = dataUser.access(src);
8118      udataCur = _jQuery2.extend({}, udataOld);
8119      dataUser.set(dest, udataCur);
8120    }
8121  }
8122
8123  // Fix IE bugs, see support tests
8124  function fixInput(src, dest) {
8125    var nodeName = dest.nodeName.toLowerCase();
8126
8127    // Fails to persist the checked state of a cloned checkbox or radio button.
8128    if (nodeName === "input" && rcheckableType.test(src.type)) {
8129      dest.checked = src.checked;
8130
8131      // Fails to return the selected option to the default selected state when cloning options
8132    } else if (nodeName === "input" || nodeName === "textarea") {
8133      dest.defaultValue = src.defaultValue;
8134    }
8135  }
8136  function domManip(collection, args, callback, ignored) {
8137    // Flatten any nested arrays
8138    args = flat(args);
8139    var fragment,
8140      first,
8141      scripts,
8142      hasScripts,
8143      node,
8144      doc,
8145      i = 0,
8146      l = collection.length,
8147      iNoClone = l - 1,
8148      value = args[0],
8149      valueIsFunction = isFunction(value);
8150
8151    // We can't cloneNode fragments that contain checked, in WebKit
8152    if (valueIsFunction || l > 1 && typeof value === "string" && !support.checkClone && rchecked.test(value)) {
8153      return collection.each(function (index) {
8154        var self = collection.eq(index);
8155        if (valueIsFunction) {
8156          args[0] = value.call(this, index, self.html());
8157        }
8158        domManip(self, args, callback, ignored);
8159      });
8160    }
8161    if (l) {
8162      fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored);
8163      first = fragment.firstChild;
8164      if (fragment.childNodes.length === 1) {
8165        fragment = first;
8166      }
8167
8168      // Require either new content or an interest in ignored elements to invoke the callback
8169      if (first || ignored) {
8170        scripts = _jQuery2.map(getAll(fragment, "script"), disableScript);
8171        hasScripts = scripts.length;
8172
8173        // Use the original fragment for the last item
8174        // instead of the first because it can end up
8175        // being emptied incorrectly in certain situations (trac-8070).
8176        for (; i < l; i++) {
8177          node = fragment;
8178          if (i !== iNoClone) {
8179            node = _jQuery2.clone(node, true, true);
8180
8181            // Keep references to cloned scripts for later restoration
8182            if (hasScripts) {
8183              // Support: Android <=4.0 only, PhantomJS 1 only
8184              // push.apply(_, arraylike) throws on ancient WebKit
8185              _jQuery2.merge(scripts, getAll(node, "script"));
8186            }
8187          }
8188          callback.call(collection[i], node, i);
8189        }
8190        if (hasScripts) {
8191          doc = scripts[scripts.length - 1].ownerDocument;
8192
8193          // Re-enable scripts
8194          _jQuery2.map(scripts, restoreScript);
8195
8196          // Evaluate executable scripts on first document insertion
8197          for (i = 0; i < hasScripts; i++) {
8198            node = scripts[i];
8199            if (rscriptType.test(node.type || "") && !dataPriv.access(node, "globalEval") && _jQuery2.contains(doc, node)) {
8200              if (node.src && (node.type || "").toLowerCase() !== "module") {
8201                // Optional AJAX dependency, but won't run scripts if not present
8202                if (_jQuery2._evalUrl && !node.noModule) {
8203                  _jQuery2._evalUrl(node.src, {
8204                    nonce: node.nonce || node.getAttribute("nonce")
8205                  }, doc);
8206                }
8207              } else {
8208                // Unwrap a CDATA section containing script contents. This shouldn't be
8209                // needed as in XML documents they're already not visible when
8210                // inspecting element contents and in HTML documents they have no
8211                // meaning but we're preserving that logic for backwards compatibility.
8212                // This will be removed completely in 4.0. See gh-4904.
8213                DOMEval(node.textContent.replace(rcleanScript, ""), node, doc);
8214              }
8215            }
8216          }
8217        }
8218      }
8219    }
8220    return collection;
8221  }
8222  function _remove(elem, selector, keepData) {
8223    var node,
8224      nodes = selector ? _jQuery2.filter(selector, elem) : elem,
8225      i = 0;
8226    for (; (node = nodes[i]) != null; i++) {
8227      if (!keepData && node.nodeType === 1) {
8228        _jQuery2.cleanData(getAll(node));
8229      }
8230      if (node.parentNode) {
8231        if (keepData && isAttached(node)) {
8232          setGlobalEval(getAll(node, "script"));
8233        }
8234        node.parentNode.removeChild(node);
8235      }
8236    }
8237    return elem;
8238  }
8239  _jQuery2.extend({
8240    htmlPrefilter: function htmlPrefilter(html) {
8241      return html;
8242    },
8243    clone: function clone(elem, dataAndEvents, deepDataAndEvents) {
8244      var i,
8245        l,
8246        srcElements,
8247        destElements,
8248        clone = elem.cloneNode(true),
8249        inPage = isAttached(elem);
8250
8251      // Fix IE cloning issues
8252      if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !_jQuery2.isXMLDoc(elem)) {
8253        // We eschew jQuery#find here for performance reasons:
8254        // https://jsperf.com/getall-vs-sizzle/2
8255        destElements = getAll(clone);
8256        srcElements = getAll(elem);
8257        for (i = 0, l = srcElements.length; i < l; i++) {
8258          fixInput(srcElements[i], destElements[i]);
8259        }
8260      }
8261
8262      // Copy the events from the original to the clone
8263      if (dataAndEvents) {
8264        if (deepDataAndEvents) {
8265          srcElements = srcElements || getAll(elem);
8266          destElements = destElements || getAll(clone);
8267          for (i = 0, l = srcElements.length; i < l; i++) {
8268            cloneCopyEvent(srcElements[i], destElements[i]);
8269          }
8270        } else {
8271          cloneCopyEvent(elem, clone);
8272        }
8273      }
8274
8275      // Preserve script evaluation history
8276      destElements = getAll(clone, "script");
8277      if (destElements.length > 0) {
8278        setGlobalEval(destElements, !inPage && getAll(elem, "script"));
8279      }
8280
8281      // Return the cloned set
8282      return clone;
8283    },
8284    cleanData: function cleanData(elems) {
8285      var data,
8286        elem,
8287        type,
8288        special = _jQuery2.event.special,
8289        i = 0;
8290      for (; (elem = elems[i]) !== undefined; i++) {
8291        if (acceptData(elem)) {
8292          if (data = elem[dataPriv.expando]) {
8293            if (data.events) {
8294              for (type in data.events) {
8295                if (special[type]) {
8296                  _jQuery2.event.remove(elem, type);
8297
8298                  // This is a shortcut to avoid jQuery.event.remove's overhead
8299                } else {
8300                  _jQuery2.removeEvent(elem, type, data.handle);
8301                }
8302              }
8303            }
8304
8305            // Support: Chrome <=35 - 45+
8306            // Assign undefined instead of using delete, see Data#remove
8307            elem[dataPriv.expando] = undefined;
8308          }
8309          if (elem[dataUser.expando]) {
8310            // Support: Chrome <=35 - 45+
8311            // Assign undefined instead of using delete, see Data#remove
8312            elem[dataUser.expando] = undefined;
8313          }
8314        }
8315      }
8316    }
8317  });
8318  _jQuery2.fn.extend({
8319    detach: function detach(selector) {
8320      return _remove(this, selector, true);
8321    },
8322    remove: function remove(selector) {
8323      return _remove(this, selector);
8324    },
8325    text: function text(value) {
8326      return _access(this, function (value) {
8327        return value === undefined ? _jQuery2.text(this) : this.empty().each(function () {
8328          if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
8329            this.textContent = value;
8330          }
8331        });
8332      }, null, value, arguments.length);
8333    },
8334    append: function append() {
8335      return domManip(this, arguments, function (elem) {
8336        if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
8337          var target = manipulationTarget(this, elem);
8338          target.appendChild(elem);
8339        }
8340      });
8341    },
8342    prepend: function prepend() {
8343      return domManip(this, arguments, function (elem) {
8344        if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
8345          var target = manipulationTarget(this, elem);
8346          target.insertBefore(elem, target.firstChild);
8347        }
8348      });
8349    },
8350    before: function before() {
8351      return domManip(this, arguments, function (elem) {
8352        if (this.parentNode) {
8353          this.parentNode.insertBefore(elem, this);
8354        }
8355      });
8356    },
8357    after: function after() {
8358      return domManip(this, arguments, function (elem) {
8359        if (this.parentNode) {
8360          this.parentNode.insertBefore(elem, this.nextSibling);
8361        }
8362      });
8363    },
8364    empty: function empty() {
8365      var elem,
8366        i = 0;
8367      for (; (elem = this[i]) != null; i++) {
8368        if (elem.nodeType === 1) {
8369          // Prevent memory leaks
8370          _jQuery2.cleanData(getAll(elem, false));
8371
8372          // Remove any remaining nodes
8373          elem.textContent = "";
8374        }
8375      }
8376      return this;
8377    },
8378    clone: function clone(dataAndEvents, deepDataAndEvents) {
8379      dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
8380      deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
8381      return this.map(function () {
8382        return _jQuery2.clone(this, dataAndEvents, deepDataAndEvents);
8383      });
8384    },
8385    html: function html(value) {
8386      return _access(this, function (value) {
8387        var elem = this[0] || {},
8388          i = 0,
8389          l = this.length;
8390        if (value === undefined && elem.nodeType === 1) {
8391          return elem.innerHTML;
8392        }
8393
8394        // See if we can take a shortcut and just use innerHTML
8395        if (typeof value === "string" && !rnoInnerhtml.test(value) && !wrapMap[(rtagName.exec(value) || ["", ""])[1].toLowerCase()]) {
8396          value = _jQuery2.htmlPrefilter(value);
8397          try {
8398            for (; i < l; i++) {
8399              elem = this[i] || {};
8400
8401              // Remove element nodes and prevent memory leaks
8402              if (elem.nodeType === 1) {
8403                _jQuery2.cleanData(getAll(elem, false));
8404                elem.innerHTML = value;
8405              }
8406            }
8407            elem = 0;
8408
8409            // If using innerHTML throws an exception, use the fallback method
8410          } catch (e) {}
8411        }
8412        if (elem) {
8413          this.empty().append(value);
8414        }
8415      }, null, value, arguments.length);
8416    },
8417    replaceWith: function replaceWith() {
8418      var ignored = [];
8419
8420      // Make the changes, replacing each non-ignored context element with the new content
8421      return domManip(this, arguments, function (elem) {
8422        var parent = this.parentNode;
8423        if (_jQuery2.inArray(this, ignored) < 0) {
8424          _jQuery2.cleanData(getAll(this));
8425          if (parent) {
8426            parent.replaceChild(elem, this);
8427          }
8428        }
8429
8430        // Force callback invocation
8431      }, ignored);
8432    }
8433  });
8434  _jQuery2.each({
8435    appendTo: "append",
8436    prependTo: "prepend",
8437    insertBefore: "before",
8438    insertAfter: "after",
8439    replaceAll: "replaceWith"
8440  }, function (name, original) {
8441    _jQuery2.fn[name] = function (selector) {
8442      var elems,
8443        ret = [],
8444        insert = _jQuery2(selector),
8445        last = insert.length - 1,
8446        i = 0;
8447      for (; i <= last; i++) {
8448        elems = i === last ? this : this.clone(true);
8449        _jQuery2(insert[i])[original](elems);
8450
8451        // Support: Android <=4.0 only, PhantomJS 1 only
8452        // .get() because push.apply(_, arraylike) throws on ancient WebKit
8453        push.apply(ret, elems.get());
8454      }
8455      return this.pushStack(ret);
8456    };
8457  });
8458  var rnumnonpx = new RegExp("^(" + pnum + ")(?!px)[a-z%]+$", "i");
8459  var rcustomProp = /^--/;
8460  var getStyles = function getStyles(elem) {
8461    // Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)
8462    // IE throws on elements created in popups
8463    // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
8464    var view = elem.ownerDocument.defaultView;
8465    if (!view || !view.opener) {
8466      view = window;
8467    }
8468    return view.getComputedStyle(elem);
8469  };
8470  var swap = function swap(elem, options, callback) {
8471    var ret,
8472      name,
8473      old = {};
8474
8475    // Remember the old values, and insert the new ones
8476    for (name in options) {
8477      old[name] = elem.style[name];
8478      elem.style[name] = options[name];
8479    }
8480    ret = callback.call(elem);
8481
8482    // Revert the old values
8483    for (name in options) {
8484      elem.style[name] = old[name];
8485    }
8486    return ret;
8487  };
8488  var rboxStyle = new RegExp(cssExpand.join("|"), "i");
8489  (function () {
8490    // Executing both pixelPosition & boxSizingReliable tests require only one layout
8491    // so they're executed at the same time to save the second computation.
8492    function computeStyleTests() {
8493      // This is a singleton, we need to execute it only once
8494      if (!div) {
8495        return;
8496      }
8497      container.style.cssText = "position:absolute;left:-11111px;width:60px;" + "margin-top:1px;padding:0;border:0";
8498      div.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + "margin:auto;border:1px;padding:1px;" + "width:60%;top:1%";
8499      documentElement.appendChild(container).appendChild(div);
8500      var divStyle = window.getComputedStyle(div);
8501      pixelPositionVal = divStyle.top !== "1%";
8502
8503      // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
8504      reliableMarginLeftVal = roundPixelMeasures(divStyle.marginLeft) === 12;
8505
8506      // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3
8507      // Some styles come back with percentage values, even though they shouldn't
8508      div.style.right = "60%";
8509      pixelBoxStylesVal = roundPixelMeasures(divStyle.right) === 36;
8510
8511      // Support: IE 9 - 11 only
8512      // Detect misreporting of content dimensions for box-sizing:border-box elements
8513      boxSizingReliableVal = roundPixelMeasures(divStyle.width) === 36;
8514
8515      // Support: IE 9 only
8516      // Detect overflow:scroll screwiness (gh-3699)
8517      // Support: Chrome <=64
8518      // Don't get tricked when zoom affects offsetWidth (gh-4029)
8519      div.style.position = "absolute";
8520      scrollboxSizeVal = roundPixelMeasures(div.offsetWidth / 3) === 12;
8521      documentElement.removeChild(container);
8522
8523      // Nullify the div so it wouldn't be stored in the memory and
8524      // it will also be a sign that checks already performed
8525      div = null;
8526    }
8527    function roundPixelMeasures(measure) {
8528      return Math.round(parseFloat(measure));
8529    }
8530    var pixelPositionVal,
8531      boxSizingReliableVal,
8532      scrollboxSizeVal,
8533      pixelBoxStylesVal,
8534      reliableTrDimensionsVal,
8535      reliableMarginLeftVal,
8536      container = document.createElement("div"),
8537      div = document.createElement("div");
8538
8539    // Finish early in limited (non-browser) environments
8540    if (!div.style) {
8541      return;
8542    }
8543
8544    // Support: IE <=9 - 11 only
8545    // Style of cloned element affects source element cloned (trac-8908)
8546    div.style.backgroundClip = "content-box";
8547    div.cloneNode(true).style.backgroundClip = "";
8548    support.clearCloneStyle = div.style.backgroundClip === "content-box";
8549    _jQuery2.extend(support, {
8550      boxSizingReliable: function boxSizingReliable() {
8551        computeStyleTests();
8552        return boxSizingReliableVal;
8553      },
8554      pixelBoxStyles: function pixelBoxStyles() {
8555        computeStyleTests();
8556        return pixelBoxStylesVal;
8557      },
8558      pixelPosition: function pixelPosition() {
8559        computeStyleTests();
8560        return pixelPositionVal;
8561      },
8562      reliableMarginLeft: function reliableMarginLeft() {
8563        computeStyleTests();
8564        return reliableMarginLeftVal;
8565      },
8566      scrollboxSize: function scrollboxSize() {
8567        computeStyleTests();
8568        return scrollboxSizeVal;
8569      },
8570      // Support: IE 9 - 11+, Edge 15 - 18+
8571      // IE/Edge misreport `getComputedStyle` of table rows with width/height
8572      // set in CSS while `offset*` properties report correct values.
8573      // Behavior in IE 9 is more subtle than in newer versions & it passes
8574      // some versions of this test; make sure not to make it pass there!
8575      //
8576      // Support: Firefox 70+
8577      // Only Firefox includes border widths
8578      // in computed dimensions. (gh-4529)
8579      reliableTrDimensions: function reliableTrDimensions() {
8580        var table, tr, trChild, trStyle;
8581        if (reliableTrDimensionsVal == null) {
8582          table = document.createElement("table");
8583          tr = document.createElement("tr");
8584          trChild = document.createElement("div");
8585          table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate";
8586          tr.style.cssText = "box-sizing:content-box;border:1px solid";
8587
8588          // Support: Chrome 86+
8589          // Height set through cssText does not get applied.
8590          // Computed height then comes back as 0.
8591          tr.style.height = "1px";
8592          trChild.style.height = "9px";
8593
8594          // Support: Android 8 Chrome 86+
8595          // In our bodyBackground.html iframe,
8596          // display for all div elements is set to "inline",
8597          // which causes a problem only in Android 8 Chrome 86.
8598          // Ensuring the div is `display: block`
8599          // gets around this issue.
8600          trChild.style.display = "block";
8601          documentElement.appendChild(table).appendChild(tr).appendChild(trChild);
8602          trStyle = window.getComputedStyle(tr);
8603          reliableTrDimensionsVal = parseInt(trStyle.height, 10) + parseInt(trStyle.borderTopWidth, 10) + parseInt(trStyle.borderBottomWidth, 10) === tr.offsetHeight;
8604          documentElement.removeChild(table);
8605        }
8606        return reliableTrDimensionsVal;
8607      }
8608    });
8609  })();
8610  function curCSS(elem, name, computed) {
8611    var width,
8612      minWidth,
8613      maxWidth,
8614      ret,
8615      isCustomProp = rcustomProp.test(name),
8616      // Support: Firefox 51+
8617      // Retrieving style before computed somehow
8618      // fixes an issue with getting wrong values
8619      // on detached elements
8620      style = elem.style;
8621    computed = computed || getStyles(elem);
8622
8623    // getPropertyValue is needed for:
8624    //   .css('filter') (IE 9 only, trac-12537)
8625    //   .css('--customProperty) (gh-3144)
8626    if (computed) {
8627      // Support: IE <=9 - 11+
8628      // IE only supports `"float"` in `getPropertyValue`; in computed styles
8629      // it's only available as `"cssFloat"`. We no longer modify properties
8630      // sent to `.css()` apart from camelCasing, so we need to check both.
8631      // Normally, this would create difference in behavior: if
8632      // `getPropertyValue` returns an empty string, the value returned
8633      // by `.css()` would be `undefined`. This is usually the case for
8634      // disconnected elements. However, in IE even disconnected elements
8635      // with no styles return `"none"` for `getPropertyValue( "float" )`
8636      ret = computed.getPropertyValue(name) || computed[name];
8637      if (isCustomProp && ret) {
8638        // Support: Firefox 105+, Chrome <=105+
8639        // Spec requires trimming whitespace for custom properties (gh-4926).
8640        // Firefox only trims leading whitespace. Chrome just collapses
8641        // both leading & trailing whitespace to a single space.
8642        //
8643        // Fall back to `undefined` if empty string returned.
8644        // This collapses a missing definition with property defined
8645        // and set to an empty string but there's no standard API
8646        // allowing us to differentiate them without a performance penalty
8647        // and returning `undefined` aligns with older jQuery.
8648        //
8649        // rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED
8650        // as whitespace while CSS does not, but this is not a problem
8651        // because CSS preprocessing replaces them with U+000A LINE FEED
8652        // (which *is* CSS whitespace)
8653        // https://www.w3.org/TR/css-syntax-3/#input-preprocessing
8654        ret = ret.replace(rtrimCSS, "$1") || undefined;
8655      }
8656      if (ret === "" && !isAttached(elem)) {
8657        ret = _jQuery2.style(elem, name);
8658      }
8659
8660      // A tribute to the "awesome hack by Dean Edwards"
8661      // Android Browser returns percentage for some values,
8662      // but width seems to be reliably pixels.
8663      // This is against the CSSOM draft spec:
8664      // https://drafts.csswg.org/cssom/#resolved-values
8665      if (!support.pixelBoxStyles() && rnumnonpx.test(ret) && rboxStyle.test(name)) {
8666        // Remember the original values
8667        width = style.width;
8668        minWidth = style.minWidth;
8669        maxWidth = style.maxWidth;
8670
8671        // Put in the new values to get a computed value out
8672        style.minWidth = style.maxWidth = style.width = ret;
8673        ret = computed.width;
8674
8675        // Revert the changed values
8676        style.width = width;
8677        style.minWidth = minWidth;
8678        style.maxWidth = maxWidth;
8679      }
8680    }
8681    return ret !== undefined ?
8682    // Support: IE <=9 - 11 only
8683    // IE returns zIndex value as an integer.
8684    ret + "" : ret;
8685  }
8686  function addGetHookIf(conditionFn, hookFn) {
8687    // Define the hook, we'll check on the first run if it's really needed.
8688    return {
8689      get: function get() {
8690        if (conditionFn()) {
8691          // Hook not needed (or it's not possible to use it due
8692          // to missing dependency), remove it.
8693          delete this.get;
8694          return;
8695        }
8696
8697        // Hook needed; redefine it so that the support test is not executed again.
8698        return (this.get = hookFn).apply(this, arguments);
8699      }
8700    };
8701  }
8702  var cssPrefixes = ["Webkit", "Moz", "ms"],
8703    emptyStyle = document.createElement("div").style,
8704    vendorProps = {};
8705
8706  // Return a vendor-prefixed property or undefined
8707  function vendorPropName(name) {
8708    // Check for vendor prefixed names
8709    var capName = name[0].toUpperCase() + name.slice(1),
8710      i = cssPrefixes.length;
8711    while (i--) {
8712      name = cssPrefixes[i] + capName;
8713      if (name in emptyStyle) {
8714        return name;
8715      }
8716    }
8717  }
8718
8719  // Return a potentially-mapped jQuery.cssProps or vendor prefixed property
8720  function finalPropName(name) {
8721    var final = _jQuery2.cssProps[name] || vendorProps[name];
8722    if (final) {
8723      return final;
8724    }
8725    if (name in emptyStyle) {
8726      return name;
8727    }
8728    return vendorProps[name] = vendorPropName(name) || name;
8729  }
8730  var
8731    // Swappable if display is none or starts with table
8732    // except "table", "table-cell", or "table-caption"
8733    // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
8734    rdisplayswap = /^(none|table(?!-c[ea]).+)/,
8735    cssShow = {
8736      position: "absolute",
8737      visibility: "hidden",
8738      display: "block"
8739    },
8740    cssNormalTransform = {
8741      letterSpacing: "0",
8742      fontWeight: "400"
8743    };
8744  function setPositiveNumber(_elem, value, subtract) {
8745    // Any relative (+/-) values have already been
8746    // normalized at this point
8747    var matches = rcssNum.exec(value);
8748    return matches ?
8749    // Guard against undefined "subtract", e.g., when used as in cssHooks
8750    Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || "px") : value;
8751  }
8752  function boxModelAdjustment(elem, dimension, box, isBorderBox, styles, computedVal) {
8753    var i = dimension === "width" ? 1 : 0,
8754      extra = 0,
8755      delta = 0,
8756      marginDelta = 0;
8757
8758    // Adjustment may not be necessary
8759    if (box === (isBorderBox ? "border" : "content")) {
8760      return 0;
8761    }
8762    for (; i < 4; i += 2) {
8763      // Both box models exclude margin
8764      // Count margin delta separately to only add it after scroll gutter adjustment.
8765      // This is needed to make negative margins work with `outerHeight( true )` (gh-3982).
8766      if (box === "margin") {
8767        marginDelta += _jQuery2.css(elem, box + cssExpand[i], true, styles);
8768      }
8769
8770      // If we get here with a content-box, we're seeking "padding" or "border" or "margin"
8771      if (!isBorderBox) {
8772        // Add padding
8773        delta += _jQuery2.css(elem, "padding" + cssExpand[i], true, styles);
8774
8775        // For "border" or "margin", add border
8776        if (box !== "padding") {
8777          delta += _jQuery2.css(elem, "border" + cssExpand[i] + "Width", true, styles);
8778
8779          // But still keep track of it otherwise
8780        } else {
8781          extra += _jQuery2.css(elem, "border" + cssExpand[i] + "Width", true, styles);
8782        }
8783
8784        // If we get here with a border-box (content + padding + border), we're seeking "content" or
8785        // "padding" or "margin"
8786      } else {
8787        // For "content", subtract padding
8788        if (box === "content") {
8789          delta -= _jQuery2.css(elem, "padding" + cssExpand[i], true, styles);
8790        }
8791
8792        // For "content" or "padding", subtract border
8793        if (box !== "margin") {
8794          delta -= _jQuery2.css(elem, "border" + cssExpand[i] + "Width", true, styles);
8795        }
8796      }
8797    }
8798
8799    // Account for positive content-box scroll gutter when requested by providing computedVal
8800    if (!isBorderBox && computedVal >= 0) {
8801      // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border
8802      // Assuming integer scroll gutter, subtract the rest and round down
8803      delta += Math.max(0, Math.ceil(elem["offset" + dimension[0].toUpperCase() + dimension.slice(1)] - computedVal - delta - extra - 0.5
8804
8805      // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter
8806      // Use an explicit zero to avoid NaN (gh-3964)
8807      )) || 0;
8808    }
8809    return delta + marginDelta;
8810  }
8811  function getWidthOrHeight(elem, dimension, extra) {
8812    // Start with computed style
8813    var styles = getStyles(elem),
8814      // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).
8815      // Fake content-box until we know it's needed to know the true value.
8816      boxSizingNeeded = !support.boxSizingReliable() || extra,
8817      isBorderBox = boxSizingNeeded && _jQuery2.css(elem, "boxSizing", false, styles) === "border-box",
8818      valueIsBorderBox = isBorderBox,
8819      val = curCSS(elem, dimension, styles),
8820      offsetProp = "offset" + dimension[0].toUpperCase() + dimension.slice(1);
8821
8822    // Support: Firefox <=54
8823    // Return a confounding non-pixel value or feign ignorance, as appropriate.
8824    if (rnumnonpx.test(val)) {
8825      if (!extra) {
8826        return val;
8827      }
8828      val = "auto";
8829    }
8830
8831    // Support: IE 9 - 11 only
8832    // Use offsetWidth/offsetHeight for when box sizing is unreliable.
8833    // In those cases, the computed value can be trusted to be border-box.
8834    if ((!support.boxSizingReliable() && isBorderBox ||
8835    // Support: IE 10 - 11+, Edge 15 - 18+
8836    // IE/Edge misreport `getComputedStyle` of table rows with width/height
8837    // set in CSS while `offset*` properties report correct values.
8838    // Interestingly, in some cases IE 9 doesn't suffer from this issue.
8839    !support.reliableTrDimensions() && nodeName(elem, "tr") ||
8840    // Fall back to offsetWidth/offsetHeight when value is "auto"
8841    // This happens for inline elements with no explicit setting (gh-3571)
8842    val === "auto" ||
8843    // Support: Android <=4.1 - 4.3 only
8844    // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
8845    !parseFloat(val) && _jQuery2.css(elem, "display", false, styles) === "inline") &&
8846    // Make sure the element is visible & connected
8847    elem.getClientRects().length) {
8848      isBorderBox = _jQuery2.css(elem, "boxSizing", false, styles) === "border-box";
8849
8850      // Where available, offsetWidth/offsetHeight approximate border box dimensions.
8851      // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the
8852      // retrieved value as a content box dimension.
8853      valueIsBorderBox = offsetProp in elem;
8854      if (valueIsBorderBox) {
8855        val = elem[offsetProp];
8856      }
8857    }
8858
8859    // Normalize "" and auto
8860    val = parseFloat(val) || 0;
8861
8862    // Adjust for the element's box model
8863    return val + boxModelAdjustment(elem, dimension, extra || (isBorderBox ? "border" : "content"), valueIsBorderBox, styles,
8864    // Provide the current computed size to request scroll gutter calculation (gh-3589)
8865    val) + "px";
8866  }
8867  _jQuery2.extend({
8868    // Add in style property hooks for overriding the default
8869    // behavior of getting and setting a style property
8870    cssHooks: {
8871      opacity: {
8872        get: function get(elem, computed) {
8873          if (computed) {
8874            // We should always get a number back from opacity
8875            var ret = curCSS(elem, "opacity");
8876            return ret === "" ? "1" : ret;
8877          }
8878        }
8879      }
8880    },
8881    // Don't automatically add "px" to these possibly-unitless properties
8882    cssNumber: {
8883      animationIterationCount: true,
8884      aspectRatio: true,
8885      borderImageSlice: true,
8886      columnCount: true,
8887      flexGrow: true,
8888      flexShrink: true,
8889      fontWeight: true,
8890      gridArea: true,
8891      gridColumn: true,
8892      gridColumnEnd: true,
8893      gridColumnStart: true,
8894      gridRow: true,
8895      gridRowEnd: true,
8896      gridRowStart: true,
8897      lineHeight: true,
8898      opacity: true,
8899      order: true,
8900      orphans: true,
8901      scale: true,
8902      widows: true,
8903      zIndex: true,
8904      zoom: true,
8905      // SVG-related
8906      fillOpacity: true,
8907      floodOpacity: true,
8908      stopOpacity: true,
8909      strokeMiterlimit: true,
8910      strokeOpacity: true
8911    },
8912    // Add in properties whose names you wish to fix before
8913    // setting or getting the value
8914    cssProps: {},
8915    // Get and set the style property on a DOM Node
8916    style: function style(elem, name, value, extra) {
8917      // Don't set styles on text and comment nodes
8918      if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) {
8919        return;
8920      }
8921
8922      // Make sure that we're working with the right name
8923      var ret,
8924        type,
8925        hooks,
8926        origName = camelCase(name),
8927        isCustomProp = rcustomProp.test(name),
8928        style = elem.style;
8929
8930      // Make sure that we're working with the right name. We don't
8931      // want to query the value if it is a CSS custom property
8932      // since they are user-defined.
8933      if (!isCustomProp) {
8934        name = finalPropName(origName);
8935      }
8936
8937      // Gets hook for the prefixed version, then unprefixed version
8938      hooks = _jQuery2.cssHooks[name] || _jQuery2.cssHooks[origName];
8939
8940      // Check if we're setting a value
8941      if (value !== undefined) {
8942        type = _typeof(value);
8943
8944        // Convert "+=" or "-=" to relative numbers (trac-7345)
8945        if (type === "string" && (ret = rcssNum.exec(value)) && ret[1]) {
8946          value = adjustCSS(elem, name, ret);
8947
8948          // Fixes bug trac-9237
8949          type = "number";
8950        }
8951
8952        // Make sure that null and NaN values aren't set (trac-7116)
8953        if (value == null || value !== value) {
8954          return;
8955        }
8956
8957        // If a number was passed in, add the unit (except for certain CSS properties)
8958        // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append
8959        // "px" to a few hardcoded values.
8960        if (type === "number" && !isCustomProp) {
8961          value += ret && ret[3] || (_jQuery2.cssNumber[origName] ? "" : "px");
8962        }
8963
8964        // background-* props affect original clone's values
8965        if (!support.clearCloneStyle && value === "" && name.indexOf("background") === 0) {
8966          style[name] = "inherit";
8967        }
8968
8969        // If a hook was provided, use that value, otherwise just set the specified value
8970        if (!hooks || !("set" in hooks) || (value = hooks.set(elem, value, extra)) !== undefined) {
8971          if (isCustomProp) {
8972            style.setProperty(name, value);
8973          } else {
8974            style[name] = value;
8975          }
8976        }
8977      } else {
8978        // If a hook was provided get the non-computed value from there
8979        if (hooks && "get" in hooks && (ret = hooks.get(elem, false, extra)) !== undefined) {
8980          return ret;
8981        }
8982
8983        // Otherwise just get the value from the style object
8984        return style[name];
8985      }
8986    },
8987    css: function css(elem, name, extra, styles) {
8988      var val,
8989        num,
8990        hooks,
8991        origName = camelCase(name),
8992        isCustomProp = rcustomProp.test(name);
8993
8994      // Make sure that we're working with the right name. We don't
8995      // want to modify the value if it is a CSS custom property
8996      // since they are user-defined.
8997      if (!isCustomProp) {
8998        name = finalPropName(origName);
8999      }
9000
9001      // Try prefixed name followed by the unprefixed name
9002      hooks = _jQuery2.cssHooks[name] || _jQuery2.cssHooks[origName];
9003
9004      // If a hook was provided get the computed value from there
9005      if (hooks && "get" in hooks) {
9006        val = hooks.get(elem, true, extra);
9007      }
9008
9009      // Otherwise, if a way to get the computed value exists, use that
9010      if (val === undefined) {
9011        val = curCSS(elem, name, styles);
9012      }
9013
9014      // Convert "normal" to computed value
9015      if (val === "normal" && name in cssNormalTransform) {
9016        val = cssNormalTransform[name];
9017      }
9018
9019      // Make numeric if forced or a qualifier was provided and val looks numeric
9020      if (extra === "" || extra) {
9021        num = parseFloat(val);
9022        return extra === true || isFinite(num) ? num || 0 : val;
9023      }
9024      return val;
9025    }
9026  });
9027  _jQuery2.each(["height", "width"], function (_i, dimension) {
9028    _jQuery2.cssHooks[dimension] = {
9029      get: function get(elem, computed, extra) {
9030        if (computed) {
9031          // Certain elements can have dimension info if we invisibly show them
9032          // but it must have a current display style that would benefit
9033          return rdisplayswap.test(_jQuery2.css(elem, "display")) && (
9034          // Support: Safari 8+
9035          // Table columns in Safari have non-zero offsetWidth & zero
9036          // getBoundingClientRect().width unless display is changed.
9037          // Support: IE <=11 only
9038          // Running getBoundingClientRect on a disconnected node
9039          // in IE throws an error.
9040          !elem.getClientRects().length || !elem.getBoundingClientRect().width) ? swap(elem, cssShow, function () {
9041            return getWidthOrHeight(elem, dimension, extra);
9042          }) : getWidthOrHeight(elem, dimension, extra);
9043        }
9044      },
9045      set: function set(elem, value, extra) {
9046        var matches,
9047          styles = getStyles(elem),
9048          // Only read styles.position if the test has a chance to fail
9049          // to avoid forcing a reflow.
9050          scrollboxSizeBuggy = !support.scrollboxSize() && styles.position === "absolute",
9051          // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)
9052          boxSizingNeeded = scrollboxSizeBuggy || extra,
9053          isBorderBox = boxSizingNeeded && _jQuery2.css(elem, "boxSizing", false, styles) === "border-box",
9054          subtract = extra ? boxModelAdjustment(elem, dimension, extra, isBorderBox, styles) : 0;
9055
9056        // Account for unreliable border-box dimensions by comparing offset* to computed and
9057        // faking a content-box to get border and padding (gh-3699)
9058        if (isBorderBox && scrollboxSizeBuggy) {
9059          subtract -= Math.ceil(elem["offset" + dimension[0].toUpperCase() + dimension.slice(1)] - parseFloat(styles[dimension]) - boxModelAdjustment(elem, dimension, "border", false, styles) - 0.5);
9060        }
9061
9062        // Convert to pixels if value adjustment is needed
9063        if (subtract && (matches = rcssNum.exec(value)) && (matches[3] || "px") !== "px") {
9064          elem.style[dimension] = value;
9065          value = _jQuery2.css(elem, dimension);
9066        }
9067        return setPositiveNumber(elem, value, subtract);
9068      }
9069    };
9070  });
9071  _jQuery2.cssHooks.marginLeft = addGetHookIf(support.reliableMarginLeft, function (elem, computed) {
9072    if (computed) {
9073      return (parseFloat(curCSS(elem, "marginLeft")) || elem.getBoundingClientRect().left - swap(elem, {
9074        marginLeft: 0
9075      }, function () {
9076        return elem.getBoundingClientRect().left;
9077      })) + "px";
9078    }
9079  });
9080
9081  // These hooks are used by animate to expand properties
9082  _jQuery2.each({
9083    margin: "",
9084    padding: "",
9085    border: "Width"
9086  }, function (prefix, suffix) {
9087    _jQuery2.cssHooks[prefix + suffix] = {
9088      expand: function expand(value) {
9089        var i = 0,
9090          expanded = {},
9091          // Assumes a single number if not a string
9092          parts = typeof value === "string" ? value.split(" ") : [value];
9093        for (; i < 4; i++) {
9094          expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0];
9095        }
9096        return expanded;
9097      }
9098    };
9099    if (prefix !== "margin") {
9100      _jQuery2.cssHooks[prefix + suffix].set = setPositiveNumber;
9101    }
9102  });
9103  _jQuery2.fn.extend({
9104    css: function css(name, value) {
9105      return _access(this, function (elem, name, value) {
9106        var styles,
9107          len,
9108          map = {},
9109          i = 0;
9110        if (Array.isArray(name)) {
9111          styles = getStyles(elem);
9112          len = name.length;
9113          for (; i < len; i++) {
9114            map[name[i]] = _jQuery2.css(elem, name[i], false, styles);
9115          }
9116          return map;
9117        }
9118        return value !== undefined ? _jQuery2.style(elem, name, value) : _jQuery2.css(elem, name);
9119      }, name, value, arguments.length > 1);
9120    }
9121  });
9122  function Tween(elem, options, prop, end, easing) {
9123    return new Tween.prototype.init(elem, options, prop, end, easing);
9124  }
9125  _jQuery2.Tween = Tween;
9126  Tween.prototype = {
9127    constructor: Tween,
9128    init: function init(elem, options, prop, end, easing, unit) {
9129      this.elem = elem;
9130      this.prop = prop;
9131      this.easing = easing || _jQuery2.easing._default;
9132      this.options = options;
9133      this.start = this.now = this.cur();
9134      this.end = end;
9135      this.unit = unit || (_jQuery2.cssNumber[prop] ? "" : "px");
9136    },
9137    cur: function cur() {
9138      var hooks = Tween.propHooks[this.prop];
9139      return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this);
9140    },
9141    run: function run(percent) {
9142      var eased,
9143        hooks = Tween.propHooks[this.prop];
9144      if (this.options.duration) {
9145        this.pos = eased = _jQuery2.easing[this.easing](percent, this.options.duration * percent, 0, 1, this.options.duration);
9146      } else {
9147        this.pos = eased = percent;
9148      }
9149      this.now = (this.end - this.start) * eased + this.start;
9150      if (this.options.step) {
9151        this.options.step.call(this.elem, this.now, this);
9152      }
9153      if (hooks && hooks.set) {
9154        hooks.set(this);
9155      } else {
9156        Tween.propHooks._default.set(this);
9157      }
9158      return this;
9159    }
9160  };
9161  Tween.prototype.init.prototype = Tween.prototype;
9162  Tween.propHooks = {
9163    _default: {
9164      get: function get(tween) {
9165        var result;
9166
9167        // Use a property on the element directly when it is not a DOM element,
9168        // or when there is no matching style property that exists.
9169        if (tween.elem.nodeType !== 1 || tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) {
9170          return tween.elem[tween.prop];
9171        }
9172
9173        // Passing an empty string as a 3rd parameter to .css will automatically
9174        // attempt a parseFloat and fallback to a string if the parse fails.
9175        // Simple values such as "10px" are parsed to Float;
9176        // complex values such as "rotate(1rad)" are returned as-is.
9177        result = _jQuery2.css(tween.elem, tween.prop, "");
9178
9179        // Empty strings, null, undefined and "auto" are converted to 0.
9180        return !result || result === "auto" ? 0 : result;
9181      },
9182      set: function set(tween) {
9183        // Use step hook for back compat.
9184        // Use cssHook if its there.
9185        // Use .style if available and use plain properties where available.
9186        if (_jQuery2.fx.step[tween.prop]) {
9187          _jQuery2.fx.step[tween.prop](tween);
9188        } else if (tween.elem.nodeType === 1 && (_jQuery2.cssHooks[tween.prop] || tween.elem.style[finalPropName(tween.prop)] != null)) {
9189          _jQuery2.style(tween.elem, tween.prop, tween.now + tween.unit);
9190        } else {
9191          tween.elem[tween.prop] = tween.now;
9192        }
9193      }
9194    }
9195  };
9196
9197  // Support: IE <=9 only
9198  // Panic based approach to setting things on disconnected nodes
9199  Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
9200    set: function set(tween) {
9201      if (tween.elem.nodeType && tween.elem.parentNode) {
9202        tween.elem[tween.prop] = tween.now;
9203      }
9204    }
9205  };
9206  _jQuery2.easing = {
9207    linear: function linear(p) {
9208      return p;
9209    },
9210    swing: function swing(p) {
9211      return 0.5 - Math.cos(p * Math.PI) / 2;
9212    },
9213    _default: "swing"
9214  };
9215  _jQuery2.fx = Tween.prototype.init;
9216
9217  // Back compat <1.8 extension point
9218  _jQuery2.fx.step = {};
9219  var fxNow,
9220    inProgress,
9221    rfxtypes = /^(?:toggle|show|hide)$/,
9222    rrun = /queueHooks$/;
9223  function schedule() {
9224    if (inProgress) {
9225      if (document.hidden === false && window.requestAnimationFrame) {
9226        window.requestAnimationFrame(schedule);
9227      } else {
9228        window.setTimeout(schedule, _jQuery2.fx.interval);
9229      }
9230      _jQuery2.fx.tick();
9231    }
9232  }
9233
9234  // Animations created synchronously will run synchronously
9235  function createFxNow() {
9236    window.setTimeout(function () {
9237      fxNow = undefined;
9238    });
9239    return fxNow = Date.now();
9240  }
9241
9242  // Generate parameters to create a standard animation
9243  function genFx(type, includeWidth) {
9244    var which,
9245      i = 0,
9246      attrs = {
9247        height: type
9248      };
9249
9250    // If we include width, step value is 1 to do all cssExpand values,
9251    // otherwise step value is 2 to skip over Left and Right
9252    includeWidth = includeWidth ? 1 : 0;
9253    for (; i < 4; i += 2 - includeWidth) {
9254      which = cssExpand[i];
9255      attrs["margin" + which] = attrs["padding" + which] = type;
9256    }
9257    if (includeWidth) {
9258      attrs.opacity = attrs.width = type;
9259    }
9260    return attrs;
9261  }
9262  function createTween(value, prop, animation) {
9263    var tween,
9264      collection = (Animation.tweeners[prop] || []).concat(Animation.tweeners["*"]),
9265      index = 0,
9266      length = collection.length;
9267    for (; index < length; index++) {
9268      if (tween = collection[index].call(animation, prop, value)) {
9269        // We're done with this property
9270        return tween;
9271      }
9272    }
9273  }
9274  function defaultPrefilter(elem, props, opts) {
9275    var prop,
9276      value,
9277      toggle,
9278      hooks,
9279      oldfire,
9280      propTween,
9281      restoreDisplay,
9282      display,
9283      isBox = "width" in props || "height" in props,
9284      anim = this,
9285      orig = {},
9286      style = elem.style,
9287      hidden = elem.nodeType && isHiddenWithinTree(elem),
9288      dataShow = dataPriv.get(elem, "fxshow");
9289
9290    // Queue-skipping animations hijack the fx hooks
9291    if (!opts.queue) {
9292      hooks = _jQuery2._queueHooks(elem, "fx");
9293      if (hooks.unqueued == null) {
9294        hooks.unqueued = 0;
9295        oldfire = hooks.empty.fire;
9296        hooks.empty.fire = function () {
9297          if (!hooks.unqueued) {
9298            oldfire();
9299          }
9300        };
9301      }
9302      hooks.unqueued++;
9303      anim.always(function () {
9304        // Ensure the complete handler is called before this completes
9305        anim.always(function () {
9306          hooks.unqueued--;
9307          if (!_jQuery2.queue(elem, "fx").length) {
9308            hooks.empty.fire();
9309          }
9310        });
9311      });
9312    }
9313
9314    // Detect show/hide animations
9315    for (prop in props) {
9316      value = props[prop];
9317      if (rfxtypes.test(value)) {
9318        delete props[prop];
9319        toggle = toggle || value === "toggle";
9320        if (value === (hidden ? "hide" : "show")) {
9321          // Pretend to be hidden if this is a "show" and
9322          // there is still data from a stopped show/hide
9323          if (value === "show" && dataShow && dataShow[prop] !== undefined) {
9324            hidden = true;
9325
9326            // Ignore all other no-op show/hide data
9327          } else {
9328            continue;
9329          }
9330        }
9331        orig[prop] = dataShow && dataShow[prop] || _jQuery2.style(elem, prop);
9332      }
9333    }
9334
9335    // Bail out if this is a no-op like .hide().hide()
9336    propTween = !_jQuery2.isEmptyObject(props);
9337    if (!propTween && _jQuery2.isEmptyObject(orig)) {
9338      return;
9339    }
9340
9341    // Restrict "overflow" and "display" styles during box animations
9342    if (isBox && elem.nodeType === 1) {
9343      // Support: IE <=9 - 11, Edge 12 - 15
9344      // Record all 3 overflow attributes because IE does not infer the shorthand
9345      // from identically-valued overflowX and overflowY and Edge just mirrors
9346      // the overflowX value there.
9347      opts.overflow = [style.overflow, style.overflowX, style.overflowY];
9348
9349      // Identify a display type, preferring old show/hide data over the CSS cascade
9350      restoreDisplay = dataShow && dataShow.display;
9351      if (restoreDisplay == null) {
9352        restoreDisplay = dataPriv.get(elem, "display");
9353      }
9354      display = _jQuery2.css(elem, "display");
9355      if (display === "none") {
9356        if (restoreDisplay) {
9357          display = restoreDisplay;
9358        } else {
9359          // Get nonempty value(s) by temporarily forcing visibility
9360          showHide([elem], true);
9361          restoreDisplay = elem.style.display || restoreDisplay;
9362          display = _jQuery2.css(elem, "display");
9363          showHide([elem]);
9364        }
9365      }
9366
9367      // Animate inline elements as inline-block
9368      if (display === "inline" || display === "inline-block" && restoreDisplay != null) {
9369        if (_jQuery2.css(elem, "float") === "none") {
9370          // Restore the original display value at the end of pure show/hide animations
9371          if (!propTween) {
9372            anim.done(function () {
9373              style.display = restoreDisplay;
9374            });
9375            if (restoreDisplay == null) {
9376              display = style.display;
9377              restoreDisplay = display === "none" ? "" : display;
9378            }
9379          }
9380          style.display = "inline-block";
9381        }
9382      }
9383    }
9384    if (opts.overflow) {
9385      style.overflow = "hidden";
9386      anim.always(function () {
9387        style.overflow = opts.overflow[0];
9388        style.overflowX = opts.overflow[1];
9389        style.overflowY = opts.overflow[2];
9390      });
9391    }
9392
9393    // Implement show/hide animations
9394    propTween = false;
9395    for (prop in orig) {
9396      // General show/hide setup for this element animation
9397      if (!propTween) {
9398        if (dataShow) {
9399          if ("hidden" in dataShow) {
9400            hidden = dataShow.hidden;
9401          }
9402        } else {
9403          dataShow = dataPriv.access(elem, "fxshow", {
9404            display: restoreDisplay
9405          });
9406        }
9407
9408        // Store hidden/visible for toggle so `.stop().toggle()` "reverses"
9409        if (toggle) {
9410          dataShow.hidden = !hidden;
9411        }
9412
9413        // Show elements before animating them
9414        if (hidden) {
9415          showHide([elem], true);
9416        }
9417
9418        /* eslint-disable no-loop-func */
9419
9420        anim.done(function () {
9421          /* eslint-enable no-loop-func */
9422
9423          // The final step of a "hide" animation is actually hiding the element
9424          if (!hidden) {
9425            showHide([elem]);
9426          }
9427          dataPriv.remove(elem, "fxshow");
9428          for (prop in orig) {
9429            _jQuery2.style(elem, prop, orig[prop]);
9430          }
9431        });
9432      }
9433
9434      // Per-property setup
9435      propTween = createTween(hidden ? dataShow[prop] : 0, prop, anim);
9436      if (!(prop in dataShow)) {
9437        dataShow[prop] = propTween.start;
9438        if (hidden) {
9439          propTween.end = propTween.start;
9440          propTween.start = 0;
9441        }
9442      }
9443    }
9444  }
9445  function propFilter(props, specialEasing) {
9446    var index, name, easing, value, hooks;
9447
9448    // camelCase, specialEasing and expand cssHook pass
9449    for (index in props) {
9450      name = camelCase(index);
9451      easing = specialEasing[name];
9452      value = props[index];
9453      if (Array.isArray(value)) {
9454        easing = value[1];
9455        value = props[index] = value[0];
9456      }
9457      if (index !== name) {
9458        props[name] = value;
9459        delete props[index];
9460      }
9461      hooks = _jQuery2.cssHooks[name];
9462      if (hooks && "expand" in hooks) {
9463        value = hooks.expand(value);
9464        delete props[name];
9465
9466        // Not quite $.extend, this won't overwrite existing keys.
9467        // Reusing 'index' because we have the correct "name"
9468        for (index in value) {
9469          if (!(index in props)) {
9470            props[index] = value[index];
9471            specialEasing[index] = easing;
9472          }
9473        }
9474      } else {
9475        specialEasing[name] = easing;
9476      }
9477    }
9478  }
9479  function Animation(elem, properties, options) {
9480    var result,
9481      stopped,
9482      index = 0,
9483      length = Animation.prefilters.length,
9484      deferred = _jQuery2.Deferred().always(function () {
9485        // Don't match elem in the :animated selector
9486        delete tick.elem;
9487      }),
9488      tick = function tick() {
9489        if (stopped) {
9490          return false;
9491        }
9492        var currentTime = fxNow || createFxNow(),
9493          remaining = Math.max(0, animation.startTime + animation.duration - currentTime),
9494          // Support: Android 2.3 only
9495          // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)
9496          temp = remaining / animation.duration || 0,
9497          percent = 1 - temp,
9498          index = 0,
9499          length = animation.tweens.length;
9500        for (; index < length; index++) {
9501          animation.tweens[index].run(percent);
9502        }
9503        deferred.notifyWith(elem, [animation, percent, remaining]);
9504
9505        // If there's more to do, yield
9506        if (percent < 1 && length) {
9507          return remaining;
9508        }
9509
9510        // If this was an empty animation, synthesize a final progress notification
9511        if (!length) {
9512          deferred.notifyWith(elem, [animation, 1, 0]);
9513        }
9514
9515        // Resolve the animation and report its conclusion
9516        deferred.resolveWith(elem, [animation]);
9517        return false;
9518      },
9519      animation = deferred.promise({
9520        elem: elem,
9521        props: _jQuery2.extend({}, properties),
9522        opts: _jQuery2.extend(true, {
9523          specialEasing: {},
9524          easing: _jQuery2.easing._default
9525        }, options),
9526        originalProperties: properties,
9527        originalOptions: options,
9528        startTime: fxNow || createFxNow(),
9529        duration: options.duration,
9530        tweens: [],
9531        createTween: function createTween(prop, end) {
9532          var tween = _jQuery2.Tween(elem, animation.opts, prop, end, animation.opts.specialEasing[prop] || animation.opts.easing);
9533          animation.tweens.push(tween);
9534          return tween;
9535        },
9536        stop: function stop(gotoEnd) {
9537          var index = 0,
9538            // If we are going to the end, we want to run all the tweens
9539            // otherwise we skip this part
9540            length = gotoEnd ? animation.tweens.length : 0;
9541          if (stopped) {
9542            return this;
9543          }
9544          stopped = true;
9545          for (; index < length; index++) {
9546            animation.tweens[index].run(1);
9547          }
9548
9549          // Resolve when we played the last frame; otherwise, reject
9550          if (gotoEnd) {
9551            deferred.notifyWith(elem, [animation, 1, 0]);
9552            deferred.resolveWith(elem, [animation, gotoEnd]);
9553          } else {
9554            deferred.rejectWith(elem, [animation, gotoEnd]);
9555          }
9556          return this;
9557        }
9558      }),
9559      props = animation.props;
9560    propFilter(props, animation.opts.specialEasing);
9561    for (; index < length; index++) {
9562      result = Animation.prefilters[index].call(animation, elem, props, animation.opts);
9563      if (result) {
9564        if (isFunction(result.stop)) {
9565          _jQuery2._queueHooks(animation.elem, animation.opts.queue).stop = result.stop.bind(result);
9566        }
9567        return result;
9568      }
9569    }
9570    _jQuery2.map(props, createTween, animation);
9571    if (isFunction(animation.opts.start)) {
9572      animation.opts.start.call(elem, animation);
9573    }
9574
9575    // Attach callbacks from options
9576    animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);
9577    _jQuery2.fx.timer(_jQuery2.extend(tick, {
9578      elem: elem,
9579      anim: animation,
9580      queue: animation.opts.queue
9581    }));
9582    return animation;
9583  }
9584  _jQuery2.Animation = _jQuery2.extend(Animation, {
9585    tweeners: {
9586      "*": [function (prop, value) {
9587        var tween = this.createTween(prop, value);
9588        adjustCSS(tween.elem, prop, rcssNum.exec(value), tween);
9589        return tween;
9590      }]
9591    },
9592    tweener: function tweener(props, callback) {
9593      if (isFunction(props)) {
9594        callback = props;
9595        props = ["*"];
9596      } else {
9597        props = props.match(rnothtmlwhite);
9598      }
9599      var prop,
9600        index = 0,
9601        length = props.length;
9602      for (; index < length; index++) {
9603        prop = props[index];
9604        Animation.tweeners[prop] = Animation.tweeners[prop] || [];
9605        Animation.tweeners[prop].unshift(callback);
9606      }
9607    },
9608    prefilters: [defaultPrefilter],
9609    prefilter: function prefilter(callback, prepend) {
9610      if (prepend) {
9611        Animation.prefilters.unshift(callback);
9612      } else {
9613        Animation.prefilters.push(callback);
9614      }
9615    }
9616  });
9617  _jQuery2.speed = function (speed, easing, fn) {
9618    var opt = speed && _typeof(speed) === "object" ? _jQuery2.extend({}, speed) : {
9619      complete: fn || !fn && easing || isFunction(speed) && speed,
9620      duration: speed,
9621      easing: fn && easing || easing && !isFunction(easing) && easing
9622    };
9623
9624    // Go to the end state if fx are off
9625    if (_jQuery2.fx.off) {
9626      opt.duration = 0;
9627    } else {
9628      if (typeof opt.duration !== "number") {
9629        if (opt.duration in _jQuery2.fx.speeds) {
9630          opt.duration = _jQuery2.fx.speeds[opt.duration];
9631        } else {
9632          opt.duration = _jQuery2.fx.speeds._default;
9633        }
9634      }
9635    }
9636
9637    // Normalize opt.queue - true/undefined/null -> "fx"
9638    if (opt.queue == null || opt.queue === true) {
9639      opt.queue = "fx";
9640    }
9641
9642    // Queueing
9643    opt.old = opt.complete;
9644    opt.complete = function () {
9645      if (isFunction(opt.old)) {
9646        opt.old.call(this);
9647      }
9648      if (opt.queue) {
9649        _jQuery2.dequeue(this, opt.queue);
9650      }
9651    };
9652    return opt;
9653  };
9654  _jQuery2.fn.extend({
9655    fadeTo: function fadeTo(speed, to, easing, callback) {
9656      // Show any hidden elements after setting opacity to 0
9657      return this.filter(isHiddenWithinTree).css("opacity", 0).show()
9658
9659      // Animate to the value specified
9660      .end().animate({
9661        opacity: to
9662      }, speed, easing, callback);
9663    },
9664    animate: function animate(prop, speed, easing, callback) {
9665      var empty = _jQuery2.isEmptyObject(prop),
9666        optall = _jQuery2.speed(speed, easing, callback),
9667        doAnimation = function doAnimation() {
9668          // Operate on a copy of prop so per-property easing won't be lost
9669          var anim = Animation(this, _jQuery2.extend({}, prop), optall);
9670
9671          // Empty animations, or finishing resolves immediately
9672          if (empty || dataPriv.get(this, "finish")) {
9673            anim.stop(true);
9674          }
9675        };
9676      doAnimation.finish = doAnimation;
9677      return empty || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation);
9678    },
9679    stop: function stop(type, clearQueue, gotoEnd) {
9680      var stopQueue = function stopQueue(hooks) {
9681        var stop = hooks.stop;
9682        delete hooks.stop;
9683        stop(gotoEnd);
9684      };
9685      if (typeof type !== "string") {
9686        gotoEnd = clearQueue;
9687        clearQueue = type;
9688        type = undefined;
9689      }
9690      if (clearQueue) {
9691        this.queue(type || "fx", []);
9692      }
9693      return this.each(function () {
9694        var dequeue = true,
9695          index = type != null && type + "queueHooks",
9696          timers = _jQuery2.timers,
9697          data = dataPriv.get(this);
9698        if (index) {
9699          if (data[index] && data[index].stop) {
9700            stopQueue(data[index]);
9701          }
9702        } else {
9703          for (index in data) {
9704            if (data[index] && data[index].stop && rrun.test(index)) {
9705              stopQueue(data[index]);
9706            }
9707          }
9708        }
9709        for (index = timers.length; index--;) {
9710          if (timers[index].elem === this && (type == null || timers[index].queue === type)) {
9711            timers[index].anim.stop(gotoEnd);
9712            dequeue = false;
9713            timers.splice(index, 1);
9714          }
9715        }
9716
9717        // Start the next in the queue if the last step wasn't forced.
9718        // Timers currently will call their complete callbacks, which
9719        // will dequeue but only if they were gotoEnd.
9720        if (dequeue || !gotoEnd) {
9721          _jQuery2.dequeue(this, type);
9722        }
9723      });
9724    },
9725    finish: function finish(type) {
9726      if (type !== false) {
9727        type = type || "fx";
9728      }
9729      return this.each(function () {
9730        var index,
9731          data = dataPriv.get(this),
9732          queue = data[type + "queue"],
9733          hooks = data[type + "queueHooks"],
9734          timers = _jQuery2.timers,
9735          length = queue ? queue.length : 0;
9736
9737        // Enable finishing flag on private data
9738        data.finish = true;
9739
9740        // Empty the queue first
9741        _jQuery2.queue(this, type, []);
9742        if (hooks && hooks.stop) {
9743          hooks.stop.call(this, true);
9744        }
9745
9746        // Look for any active animations, and finish them
9747        for (index = timers.length; index--;) {
9748          if (timers[index].elem === this && timers[index].queue === type) {
9749            timers[index].anim.stop(true);
9750            timers.splice(index, 1);
9751          }
9752        }
9753
9754        // Look for any animations in the old queue and finish them
9755        for (index = 0; index < length; index++) {
9756          if (queue[index] && queue[index].finish) {
9757            queue[index].finish.call(this);
9758          }
9759        }
9760
9761        // Turn off finishing flag
9762        delete data.finish;
9763      });
9764    }
9765  });
9766  _jQuery2.each(["toggle", "show", "hide"], function (_i, name) {
9767    var cssFn = _jQuery2.fn[name];
9768    _jQuery2.fn[name] = function (speed, easing, callback) {
9769      return speed == null || typeof speed === "boolean" ? cssFn.apply(this, arguments) : this.animate(genFx(name, true), speed, easing, callback);
9770    };
9771  });
9772
9773  // Generate shortcuts for custom animations
9774  _jQuery2.each({
9775    slideDown: genFx("show"),
9776    slideUp: genFx("hide"),
9777    slideToggle: genFx("toggle"),
9778    fadeIn: {
9779      opacity: "show"
9780    },
9781    fadeOut: {
9782      opacity: "hide"
9783    },
9784    fadeToggle: {
9785      opacity: "toggle"
9786    }
9787  }, function (name, props) {
9788    _jQuery2.fn[name] = function (speed, easing, callback) {
9789      return this.animate(props, speed, easing, callback);
9790    };
9791  });
9792  _jQuery2.timers = [];
9793  _jQuery2.fx.tick = function () {
9794    var timer,
9795      i = 0,
9796      timers = _jQuery2.timers;
9797    fxNow = Date.now();
9798    for (; i < timers.length; i++) {
9799      timer = timers[i];
9800
9801      // Run the timer and safely remove it when done (allowing for external removal)
9802      if (!timer() && timers[i] === timer) {
9803        timers.splice(i--, 1);
9804      }
9805    }
9806    if (!timers.length) {
9807      _jQuery2.fx.stop();
9808    }
9809    fxNow = undefined;
9810  };
9811  _jQuery2.fx.timer = function (timer) {
9812    _jQuery2.timers.push(timer);
9813    _jQuery2.fx.start();
9814  };
9815  _jQuery2.fx.interval = 13;
9816  _jQuery2.fx.start = function () {
9817    if (inProgress) {
9818      return;
9819    }
9820    inProgress = true;
9821    schedule();
9822  };
9823  _jQuery2.fx.stop = function () {
9824    inProgress = null;
9825  };
9826  _jQuery2.fx.speeds = {
9827    slow: 600,
9828    fast: 200,
9829    // Default speed
9830    _default: 400
9831  };
9832
9833  // Based off of the plugin by Clint Helfers, with permission.
9834  _jQuery2.fn.delay = function (time, type) {
9835    time = _jQuery2.fx ? _jQuery2.fx.speeds[time] || time : time;
9836    type = type || "fx";
9837    return this.queue(type, function (next, hooks) {
9838      var timeout = window.setTimeout(next, time);
9839      hooks.stop = function () {
9840        window.clearTimeout(timeout);
9841      };
9842    });
9843  };
9844  (function () {
9845    var input = document.createElement("input"),
9846      select = document.createElement("select"),
9847      opt = select.appendChild(document.createElement("option"));
9848    input.type = "checkbox";
9849
9850    // Support: Android <=4.3 only
9851    // Default value for a checkbox should be "on"
9852    support.checkOn = input.value !== "";
9853
9854    // Support: IE <=11 only
9855    // Must access selectedIndex to make default options select
9856    support.optSelected = opt.selected;
9857
9858    // Support: IE <=11 only
9859    // An input loses its value after becoming a radio
9860    input = document.createElement("input");
9861    input.value = "t";
9862    input.type = "radio";
9863    support.radioValue = input.value === "t";
9864  })();
9865  var boolHook,
9866    attrHandle = _jQuery2.expr.attrHandle;
9867  _jQuery2.fn.extend({
9868    attr: function attr(name, value) {
9869      return _access(this, _jQuery2.attr, name, value, arguments.length > 1);
9870    },
9871    removeAttr: function removeAttr(name) {
9872      return this.each(function () {
9873        _jQuery2.removeAttr(this, name);
9874      });
9875    }
9876  });
9877  _jQuery2.extend({
9878    attr: function attr(elem, name, value) {
9879      var ret,
9880        hooks,
9881        nType = elem.nodeType;
9882
9883      // Don't get/set attributes on text, comment and attribute nodes
9884      if (nType === 3 || nType === 8 || nType === 2) {
9885        return;
9886      }
9887
9888      // Fallback to prop when attributes are not supported
9889      if (typeof elem.getAttribute === "undefined") {
9890        return _jQuery2.prop(elem, name, value);
9891      }
9892
9893      // Attribute hooks are determined by the lowercase version
9894      // Grab necessary hook if one is defined
9895      if (nType !== 1 || !_jQuery2.isXMLDoc(elem)) {
9896        hooks = _jQuery2.attrHooks[name.toLowerCase()] || (_jQuery2.expr.match.bool.test(name) ? boolHook : undefined);
9897      }
9898      if (value !== undefined) {
9899        if (value === null) {
9900          _jQuery2.removeAttr(elem, name);
9901          return;
9902        }
9903        if (hooks && "set" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {
9904          return ret;
9905        }
9906        elem.setAttribute(name, value + "");
9907        return value;
9908      }
9909      if (hooks && "get" in hooks && (ret = hooks.get(elem, name)) !== null) {
9910        return ret;
9911      }
9912      ret = _jQuery2.find.attr(elem, name);
9913
9914      // Non-existent attributes return null, we normalize to undefined
9915      return ret == null ? undefined : ret;
9916    },
9917    attrHooks: {
9918      type: {
9919        set: function set(elem, value) {
9920          if (!support.radioValue && value === "radio" && nodeName(elem, "input")) {
9921            var val = elem.value;
9922            elem.setAttribute("type", value);
9923            if (val) {
9924              elem.value = val;
9925            }
9926            return value;
9927          }
9928        }
9929      }
9930    },
9931    removeAttr: function removeAttr(elem, value) {
9932      var name,
9933        i = 0,
9934        // Attribute names can contain non-HTML whitespace characters
9935        // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
9936        attrNames = value && value.match(rnothtmlwhite);
9937      if (attrNames && elem.nodeType === 1) {
9938        while (name = attrNames[i++]) {
9939          elem.removeAttribute(name);
9940        }
9941      }
9942    }
9943  });
9944
9945  // Hooks for boolean attributes
9946  boolHook = {
9947    set: function set(elem, value, name) {
9948      if (value === false) {
9949        // Remove boolean attributes when set to false
9950        _jQuery2.removeAttr(elem, name);
9951      } else {
9952        elem.setAttribute(name, name);
9953      }
9954      return name;
9955    }
9956  };
9957  _jQuery2.each(_jQuery2.expr.match.bool.source.match(/\w+/g), function (_i, name) {
9958    var getter = attrHandle[name] || _jQuery2.find.attr;
9959    attrHandle[name] = function (elem, name, isXML) {
9960      var ret,
9961        handle,
9962        lowercaseName = name.toLowerCase();
9963      if (!isXML) {
9964        // Avoid an infinite loop by temporarily removing this function from the getter
9965        handle = attrHandle[lowercaseName];
9966        attrHandle[lowercaseName] = ret;
9967        ret = getter(elem, name, isXML) != null ? lowercaseName : null;
9968        attrHandle[lowercaseName] = handle;
9969      }
9970      return ret;
9971    };
9972  });
9973  var rfocusable = /^(?:input|select|textarea|button)$/i,
9974    rclickable = /^(?:a|area)$/i;
9975  _jQuery2.fn.extend({
9976    prop: function prop(name, value) {
9977      return _access(this, _jQuery2.prop, name, value, arguments.length > 1);
9978    },
9979    removeProp: function removeProp(name) {
9980      return this.each(function () {
9981        delete this[_jQuery2.propFix[name] || name];
9982      });
9983    }
9984  });
9985  _jQuery2.extend({
9986    prop: function prop(elem, name, value) {
9987      var ret,
9988        hooks,
9989        nType = elem.nodeType;
9990
9991      // Don't get/set properties on text, comment and attribute nodes
9992      if (nType === 3 || nType === 8 || nType === 2) {
9993        return;
9994      }
9995      if (nType !== 1 || !_jQuery2.isXMLDoc(elem)) {
9996        // Fix name and attach hooks
9997        name = _jQuery2.propFix[name] || name;
9998        hooks = _jQuery2.propHooks[name];
9999      }
10000      if (value !== undefined) {
10001        if (hooks && "set" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {
10002          return ret;
10003        }
10004        return elem[name] = value;
10005      }
10006      if (hooks && "get" in hooks && (ret = hooks.get(elem, name)) !== null) {
10007        return ret;
10008      }
10009      return elem[name];
10010    },
10011    propHooks: {
10012      tabIndex: {
10013        get: function get(elem) {
10014          // Support: IE <=9 - 11 only
10015          // elem.tabIndex doesn't always return the
10016          // correct value when it hasn't been explicitly set
10017          // Use proper attribute retrieval (trac-12072)
10018          var tabindex = _jQuery2.find.attr(elem, "tabindex");
10019          if (tabindex) {
10020            return parseInt(tabindex, 10);
10021          }
10022          if (rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href) {
10023            return 0;
10024          }
10025          return -1;
10026        }
10027      }
10028    },
10029    propFix: {
10030      "for": "htmlFor",
10031      "class": "className"
10032    }
10033  });
10034
10035  // Support: IE <=11 only
10036  // Accessing the selectedIndex property
10037  // forces the browser to respect setting selected
10038  // on the option
10039  // The getter ensures a default option is selected
10040  // when in an optgroup
10041  // eslint rule "no-unused-expressions" is disabled for this code
10042  // since it considers such accessions noop
10043  if (!support.optSelected) {
10044    _jQuery2.propHooks.selected = {
10045      get: function get(elem) {
10046        /* eslint no-unused-expressions: "off" */
10047
10048        var parent = elem.parentNode;
10049        if (parent && parent.parentNode) {
10050          parent.parentNode.selectedIndex;
10051        }
10052        return null;
10053      },
10054      set: function set(elem) {
10055        /* eslint no-unused-expressions: "off" */
10056
10057        var parent = elem.parentNode;
10058        if (parent) {
10059          parent.selectedIndex;
10060          if (parent.parentNode) {
10061            parent.parentNode.selectedIndex;
10062          }
10063        }
10064      }
10065    };
10066  }
10067  _jQuery2.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function () {
10068    _jQuery2.propFix[this.toLowerCase()] = this;
10069  });
10070
10071  // Strip and collapse whitespace according to HTML spec
10072  // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace
10073  function stripAndCollapse(value) {
10074    var tokens = value.match(rnothtmlwhite) || [];
10075    return tokens.join(" ");
10076  }
10077  function getClass(elem) {
10078    return elem.getAttribute && elem.getAttribute("class") || "";
10079  }
10080  function classesToArray(value) {
10081    if (Array.isArray(value)) {
10082      return value;
10083    }
10084    if (typeof value === "string") {
10085      return value.match(rnothtmlwhite) || [];
10086    }
10087    return [];
10088  }
10089  _jQuery2.fn.extend({
10090    addClass: function addClass(value) {
10091      var classNames, cur, curValue, className, i, finalValue;
10092      if (isFunction(value)) {
10093        return this.each(function (j) {
10094          _jQuery2(this).addClass(value.call(this, j, getClass(this)));
10095        });
10096      }
10097      classNames = classesToArray(value);
10098      if (classNames.length) {
10099        return this.each(function () {
10100          curValue = getClass(this);
10101          cur = this.nodeType === 1 && " " + stripAndCollapse(curValue) + " ";
10102          if (cur) {
10103            for (i = 0; i < classNames.length; i++) {
10104              className = classNames[i];
10105              if (cur.indexOf(" " + className + " ") < 0) {
10106                cur += className + " ";
10107              }
10108            }
10109
10110            // Only assign if different to avoid unneeded rendering.
10111            finalValue = stripAndCollapse(cur);
10112            if (curValue !== finalValue) {
10113              this.setAttribute("class", finalValue);
10114            }
10115          }
10116        });
10117      }
10118      return this;
10119    },
10120    removeClass: function removeClass(value) {
10121      var classNames, cur, curValue, className, i, finalValue;
10122      if (isFunction(value)) {
10123        return this.each(function (j) {
10124          _jQuery2(this).removeClass(value.call(this, j, getClass(this)));
10125        });
10126      }
10127      if (!arguments.length) {
10128        return this.attr("class", "");
10129      }
10130      classNames = classesToArray(value);
10131      if (classNames.length) {
10132        return this.each(function () {
10133          curValue = getClass(this);
10134
10135          // This expression is here for better compressibility (see addClass)
10136          cur = this.nodeType === 1 && " " + stripAndCollapse(curValue) + " ";
10137          if (cur) {
10138            for (i = 0; i < classNames.length; i++) {
10139              className = classNames[i];
10140
10141              // Remove *all* instances
10142              while (cur.indexOf(" " + className + " ") > -1) {
10143                cur = cur.replace(" " + className + " ", " ");
10144              }
10145            }
10146
10147            // Only assign if different to avoid unneeded rendering.
10148            finalValue = stripAndCollapse(cur);
10149            if (curValue !== finalValue) {
10150              this.setAttribute("class", finalValue);
10151            }
10152          }
10153        });
10154      }
10155      return this;
10156    },
10157    toggleClass: function toggleClass(value, stateVal) {
10158      var classNames,
10159        className,
10160        i,
10161        self,
10162        type = _typeof(value),
10163        isValidValue = type === "string" || Array.isArray(value);
10164      if (isFunction(value)) {
10165        return this.each(function (i) {
10166          _jQuery2(this).toggleClass(value.call(this, i, getClass(this), stateVal), stateVal);
10167        });
10168      }
10169      if (typeof stateVal === "boolean" && isValidValue) {
10170        return stateVal ? this.addClass(value) : this.removeClass(value);
10171      }
10172      classNames = classesToArray(value);
10173      return this.each(function () {
10174        if (isValidValue) {
10175          // Toggle individual class names
10176          self = _jQuery2(this);
10177          for (i = 0; i < classNames.length; i++) {
10178            className = classNames[i];
10179
10180            // Check each className given, space separated list
10181            if (self.hasClass(className)) {
10182              self.removeClass(className);
10183            } else {
10184              self.addClass(className);
10185            }
10186          }
10187
10188          // Toggle whole class name
10189        } else if (value === undefined || type === "boolean") {
10190          className = getClass(this);
10191          if (className) {
10192            // Store className if set
10193            dataPriv.set(this, "__className__", className);
10194          }
10195
10196          // If the element has a class name or if we're passed `false`,
10197          // then remove the whole classname (if there was one, the above saved it).
10198          // Otherwise bring back whatever was previously saved (if anything),
10199          // falling back to the empty string if nothing was stored.
10200          if (this.setAttribute) {
10201            this.setAttribute("class", className || value === false ? "" : dataPriv.get(this, "__className__") || "");
10202          }
10203        }
10204      });
10205    },
10206    hasClass: function hasClass(selector) {
10207      var className,
10208        elem,
10209        i = 0;
10210      className = " " + selector + " ";
10211      while (elem = this[i++]) {
10212        if (elem.nodeType === 1 && (" " + stripAndCollapse(getClass(elem)) + " ").indexOf(className) > -1) {
10213          return true;
10214        }
10215      }
10216      return false;
10217    }
10218  });
10219  var rreturn = /\r/g;
10220  _jQuery2.fn.extend({
10221    val: function val(value) {
10222      var hooks,
10223        ret,
10224        valueIsFunction,
10225        elem = this[0];
10226      if (!arguments.length) {
10227        if (elem) {
10228          hooks = _jQuery2.valHooks[elem.type] || _jQuery2.valHooks[elem.nodeName.toLowerCase()];
10229          if (hooks && "get" in hooks && (ret = hooks.get(elem, "value")) !== undefined) {
10230            return ret;
10231          }
10232          ret = elem.value;
10233
10234          // Handle most common string cases
10235          if (typeof ret === "string") {
10236            return ret.replace(rreturn, "");
10237          }
10238
10239          // Handle cases where value is null/undef or number
10240          return ret == null ? "" : ret;
10241        }
10242        return;
10243      }
10244      valueIsFunction = isFunction(value);
10245      return this.each(function (i) {
10246        var val;
10247        if (this.nodeType !== 1) {
10248          return;
10249        }
10250        if (valueIsFunction) {
10251          val = value.call(this, i, _jQuery2(this).val());
10252        } else {
10253          val = value;
10254        }
10255
10256        // Treat null/undefined as ""; convert numbers to string
10257        if (val == null) {
10258          val = "";
10259        } else if (typeof val === "number") {
10260          val += "";
10261        } else if (Array.isArray(val)) {
10262          val = _jQuery2.map(val, function (value) {
10263            return value == null ? "" : value + "";
10264          });
10265        }
10266        hooks = _jQuery2.valHooks[this.type] || _jQuery2.valHooks[this.nodeName.toLowerCase()];
10267
10268        // If set returns undefined, fall back to normal setting
10269        if (!hooks || !("set" in hooks) || hooks.set(this, val, "value") === undefined) {
10270          this.value = val;
10271        }
10272      });
10273    }
10274  });
10275  _jQuery2.extend({
10276    valHooks: {
10277      option: {
10278        get: function get(elem) {
10279          var val = _jQuery2.find.attr(elem, "value");
10280          return val != null ? val :
10281          // Support: IE <=10 - 11 only
10282          // option.text throws exceptions (trac-14686, trac-14858)
10283          // Strip and collapse whitespace
10284          // https://html.spec.whatwg.org/#strip-and-collapse-whitespace
10285          stripAndCollapse(_jQuery2.text(elem));
10286        }
10287      },
10288      select: {
10289        get: function get(elem) {
10290          var value,
10291            option,
10292            i,
10293            options = elem.options,
10294            index = elem.selectedIndex,
10295            one = elem.type === "select-one",
10296            values = one ? null : [],
10297            max = one ? index + 1 : options.length;
10298          if (index < 0) {
10299            i = max;
10300          } else {
10301            i = one ? index : 0;
10302          }
10303
10304          // Loop through all the selected options
10305          for (; i < max; i++) {
10306            option = options[i];
10307
10308            // Support: IE <=9 only
10309            // IE8-9 doesn't update selected after form reset (trac-2551)
10310            if ((option.selected || i === index) &&
10311            // Don't return options that are disabled or in a disabled optgroup
10312            !option.disabled && (!option.parentNode.disabled || !nodeName(option.parentNode, "optgroup"))) {
10313              // Get the specific value for the option
10314              value = _jQuery2(option).val();
10315
10316              // We don't need an array for one selects
10317              if (one) {
10318                return value;
10319              }
10320
10321              // Multi-Selects return an array
10322              values.push(value);
10323            }
10324          }
10325          return values;
10326        },
10327        set: function set(elem, value) {
10328          var optionSet,
10329            option,
10330            options = elem.options,
10331            values = _jQuery2.makeArray(value),
10332            i = options.length;
10333          while (i--) {
10334            option = options[i];
10335
10336            /* eslint-disable no-cond-assign */
10337
10338            if (option.selected = _jQuery2.inArray(_jQuery2.valHooks.option.get(option), values) > -1) {
10339              optionSet = true;
10340            }
10341
10342            /* eslint-enable no-cond-assign */
10343          }
10344
10345          // Force browsers to behave consistently when non-matching value is set
10346          if (!optionSet) {
10347            elem.selectedIndex = -1;
10348          }
10349          return values;
10350        }
10351      }
10352    }
10353  });
10354
10355  // Radios and checkboxes getter/setter
10356  _jQuery2.each(["radio", "checkbox"], function () {
10357    _jQuery2.valHooks[this] = {
10358      set: function set(elem, value) {
10359        if (Array.isArray(value)) {
10360          return elem.checked = _jQuery2.inArray(_jQuery2(elem).val(), value) > -1;
10361        }
10362      }
10363    };
10364    if (!support.checkOn) {
10365      _jQuery2.valHooks[this].get = function (elem) {
10366        return elem.getAttribute("value") === null ? "on" : elem.value;
10367      };
10368    }
10369  });
10370
10371  // Return jQuery for attributes-only inclusion
10372  var location = window.location;
10373  var nonce = {
10374    guid: Date.now()
10375  };
10376  var rquery = /\?/;
10377
10378  // Cross-browser xml parsing
10379  _jQuery2.parseXML = function (data) {
10380    var xml, parserErrorElem;
10381    if (!data || typeof data !== "string") {
10382      return null;
10383    }
10384
10385    // Support: IE 9 - 11 only
10386    // IE throws on parseFromString with invalid input.
10387    try {
10388      xml = new window.DOMParser().parseFromString(data, "text/xml");
10389    } catch (e) {}
10390    parserErrorElem = xml && xml.getElementsByTagName("parsererror")[0];
10391    if (!xml || parserErrorElem) {
10392      _jQuery2.error("Invalid XML: " + (parserErrorElem ? _jQuery2.map(parserErrorElem.childNodes, function (el) {
10393        return el.textContent;
10394      }).join("\n") : data));
10395    }
10396    return xml;
10397  };
10398  var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
10399    stopPropagationCallback = function stopPropagationCallback(e) {
10400      e.stopPropagation();
10401    };
10402  _jQuery2.extend(_jQuery2.event, {
10403    trigger: function trigger(event, data, elem, onlyHandlers) {
10404      var i,
10405        cur,
10406        tmp,
10407        bubbleType,
10408        ontype,
10409        handle,
10410        special,
10411        lastElement,
10412        eventPath = [elem || document],
10413        type = hasOwn.call(event, "type") ? event.type : event,
10414        namespaces = hasOwn.call(event, "namespace") ? event.namespace.split(".") : [];
10415      cur = lastElement = tmp = elem = elem || document;
10416
10417      // Don't do events on text and comment nodes
10418      if (elem.nodeType === 3 || elem.nodeType === 8) {
10419        return;
10420      }
10421
10422      // focus/blur morphs to focusin/out; ensure we're not firing them right now
10423      if (rfocusMorph.test(type + _jQuery2.event.triggered)) {
10424        return;
10425      }
10426      if (type.indexOf(".") > -1) {
10427        // Namespaced trigger; create a regexp to match event type in handle()
10428        namespaces = type.split(".");
10429        type = namespaces.shift();
10430        namespaces.sort();
10431      }
10432      ontype = type.indexOf(":") < 0 && "on" + type;
10433
10434      // Caller can pass in a jQuery.Event object, Object, or just an event type string
10435      event = event[_jQuery2.expando] ? event : new _jQuery2.Event(type, _typeof(event) === "object" && event);
10436
10437      // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
10438      event.isTrigger = onlyHandlers ? 2 : 3;
10439      event.namespace = namespaces.join(".");
10440      event.rnamespace = event.namespace ? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null;
10441
10442      // Clean up the event in case it is being reused
10443      event.result = undefined;
10444      if (!event.target) {
10445        event.target = elem;
10446      }
10447
10448      // Clone any incoming data and prepend the event, creating the handler arg list
10449      data = data == null ? [event] : _jQuery2.makeArray(data, [event]);
10450
10451      // Allow special events to draw outside the lines
10452      special = _jQuery2.event.special[type] || {};
10453      if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) {
10454        return;
10455      }
10456
10457      // Determine event propagation path in advance, per W3C events spec (trac-9951)
10458      // Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)
10459      if (!onlyHandlers && !special.noBubble && !isWindow(elem)) {
10460        bubbleType = special.delegateType || type;
10461        if (!rfocusMorph.test(bubbleType + type)) {
10462          cur = cur.parentNode;
10463        }
10464        for (; cur; cur = cur.parentNode) {
10465          eventPath.push(cur);
10466          tmp = cur;
10467        }
10468
10469        // Only add window if we got to document (e.g., not plain obj or detached DOM)
10470        if (tmp === (elem.ownerDocument || document)) {
10471          eventPath.push(tmp.defaultView || tmp.parentWindow || window);
10472        }
10473      }
10474
10475      // Fire handlers on the event path
10476      i = 0;
10477      while ((cur = eventPath[i++]) && !event.isPropagationStopped()) {
10478        lastElement = cur;
10479        event.type = i > 1 ? bubbleType : special.bindType || type;
10480
10481        // jQuery handler
10482        handle = (dataPriv.get(cur, "events") || Object.create(null))[event.type] && dataPriv.get(cur, "handle");
10483        if (handle) {
10484          handle.apply(cur, data);
10485        }
10486
10487        // Native handler
10488        handle = ontype && cur[ontype];
10489        if (handle && handle.apply && acceptData(cur)) {
10490          event.result = handle.apply(cur, data);
10491          if (event.result === false) {
10492            event.preventDefault();
10493          }
10494        }
10495      }
10496      event.type = type;
10497
10498      // If nobody prevented the default action, do it now
10499      if (!onlyHandlers && !event.isDefaultPrevented()) {
10500        if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) {
10501          // Call a native DOM method on the target with the same name as the event.
10502          // Don't do default actions on window, that's where global variables be (trac-6170)
10503          if (ontype && isFunction(elem[type]) && !isWindow(elem)) {
10504            // Don't re-trigger an onFOO event when we call its FOO() method
10505            tmp = elem[ontype];
10506            if (tmp) {
10507              elem[ontype] = null;
10508            }
10509
10510            // Prevent re-triggering of the same event, since we already bubbled it above
10511            _jQuery2.event.triggered = type;
10512            if (event.isPropagationStopped()) {
10513              lastElement.addEventListener(type, stopPropagationCallback);
10514            }
10515            elem[type]();
10516            if (event.isPropagationStopped()) {
10517              lastElement.removeEventListener(type, stopPropagationCallback);
10518            }
10519            _jQuery2.event.triggered = undefined;
10520            if (tmp) {
10521              elem[ontype] = tmp;
10522            }
10523          }
10524        }
10525      }
10526      return event.result;
10527    },
10528    // Piggyback on a donor event to simulate a different one
10529    // Used only for `focus(in | out)` events
10530    simulate: function simulate(type, elem, event) {
10531      var e = _jQuery2.extend(new _jQuery2.Event(), event, {
10532        type: type,
10533        isSimulated: true
10534      });
10535      _jQuery2.event.trigger(e, null, elem);
10536    }
10537  });
10538  _jQuery2.fn.extend({
10539    trigger: function trigger(type, data) {
10540      return this.each(function () {
10541        _jQuery2.event.trigger(type, data, this);
10542      });
10543    },
10544    triggerHandler: function triggerHandler(type, data) {
10545      var elem = this[0];
10546      if (elem) {
10547        return _jQuery2.event.trigger(type, data, elem, true);
10548      }
10549    }
10550  });
10551  var rbracket = /\[\]$/,
10552    rCRLF = /\r?\n/g,
10553    rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
10554    rsubmittable = /^(?:input|select|textarea|keygen)/i;
10555  function buildParams(prefix, obj, traditional, add) {
10556    var name;
10557    if (Array.isArray(obj)) {
10558      // Serialize array item.
10559      _jQuery2.each(obj, function (i, v) {
10560        if (traditional || rbracket.test(prefix)) {
10561          // Treat each array item as a scalar.
10562          add(prefix, v);
10563        } else {
10564          // Item is non-scalar (array or object), encode its numeric index.
10565          buildParams(prefix + "[" + (_typeof(v) === "object" && v != null ? i : "") + "]", v, traditional, add);
10566        }
10567      });
10568    } else if (!traditional && toType(obj) === "object") {
10569      // Serialize object item.
10570      for (name in obj) {
10571        buildParams(prefix + "[" + name + "]", obj[name], traditional, add);
10572      }
10573    } else {
10574      // Serialize scalar item.
10575      add(prefix, obj);
10576    }
10577  }
10578
10579  // Serialize an array of form elements or a set of
10580  // key/values into a query string
10581  _jQuery2.param = function (a, traditional) {
10582    var prefix,
10583      s = [],
10584      add = function add(key, valueOrFunction) {
10585        // If value is a function, invoke it and use its return value
10586        var value = isFunction(valueOrFunction) ? valueOrFunction() : valueOrFunction;
10587        s[s.length] = encodeURIComponent(key) + "=" + encodeURIComponent(value == null ? "" : value);
10588      };
10589    if (a == null) {
10590      return "";
10591    }
10592
10593    // If an array was passed in, assume that it is an array of form elements.
10594    if (Array.isArray(a) || a.jquery && !_jQuery2.isPlainObject(a)) {
10595      // Serialize the form elements
10596      _jQuery2.each(a, function () {
10597        add(this.name, this.value);
10598      });
10599    } else {
10600      // If traditional, encode the "old" way (the way 1.3.2 or older
10601      // did it), otherwise encode params recursively.
10602      for (prefix in a) {
10603        buildParams(prefix, a[prefix], traditional, add);
10604      }
10605    }
10606
10607    // Return the resulting serialization
10608    return s.join("&");
10609  };
10610  _jQuery2.fn.extend({
10611    serialize: function serialize() {
10612      return _jQuery2.param(this.serializeArray());
10613    },
10614    serializeArray: function serializeArray() {
10615      return this.map(function () {
10616        // Can add propHook for "elements" to filter or add form elements
10617        var elements = _jQuery2.prop(this, "elements");
10618        return elements ? _jQuery2.makeArray(elements) : this;
10619      }).filter(function () {
10620        var type = this.type;
10621
10622        // Use .is( ":disabled" ) so that fieldset[disabled] works
10623        return this.name && !_jQuery2(this).is(":disabled") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type));
10624      }).map(function (_i, elem) {
10625        var val = _jQuery2(this).val();
10626        if (val == null) {
10627          return null;
10628        }
10629        if (Array.isArray(val)) {
10630          return _jQuery2.map(val, function (val) {
10631            return {
10632              name: elem.name,
10633              value: val.replace(rCRLF, "\r\n")
10634            };
10635          });
10636        }
10637        return {
10638          name: elem.name,
10639          value: val.replace(rCRLF, "\r\n")
10640        };
10641      }).get();
10642    }
10643  });
10644  var r20 = /%20/g,
10645    rhash = /#.*$/,
10646    rantiCache = /([?&])_=[^&]*/,
10647    rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
10648    // trac-7653, trac-8125, trac-8152: local protocol detection
10649    rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
10650    rnoContent = /^(?:GET|HEAD)$/,
10651    rprotocol = /^\/\//,
10652    /* Prefilters
10653     * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
10654     * 2) These are called:
10655     *    - BEFORE asking for a transport
10656     *    - AFTER param serialization (s.data is a string if s.processData is true)
10657     * 3) key is the dataType
10658     * 4) the catchall symbol "*" can be used
10659     * 5) execution will start with transport dataType and THEN continue down to "*" if needed
10660     */
10661    prefilters = {},
10662    /* Transports bindings
10663     * 1) key is the dataType
10664     * 2) the catchall symbol "*" can be used
10665     * 3) selection will start with transport dataType and THEN go to "*" if needed
10666     */
10667    transports = {},
10668    // Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression
10669    allTypes = "*/".concat("*"),
10670    // Anchor tag for parsing the document origin
10671    originAnchor = document.createElement("a");
10672  originAnchor.href = location.href;
10673
10674  // Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
10675  function addToPrefiltersOrTransports(structure) {
10676    // dataTypeExpression is optional and defaults to "*"
10677    return function (dataTypeExpression, func) {
10678      if (typeof dataTypeExpression !== "string") {
10679        func = dataTypeExpression;
10680        dataTypeExpression = "*";
10681      }
10682      var dataType,
10683        i = 0,
10684        dataTypes = dataTypeExpression.toLowerCase().match(rnothtmlwhite) || [];
10685      if (isFunction(func)) {
10686        // For each dataType in the dataTypeExpression
10687        while (dataType = dataTypes[i++]) {
10688          // Prepend if requested
10689          if (dataType[0] === "+") {
10690            dataType = dataType.slice(1) || "*";
10691            (structure[dataType] = structure[dataType] || []).unshift(func);
10692
10693            // Otherwise append
10694          } else {
10695            (structure[dataType] = structure[dataType] || []).push(func);
10696          }
10697        }
10698      }
10699    };
10700  }
10701
10702  // Base inspection function for prefilters and transports
10703  function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {
10704    var inspected = {},
10705      seekingTransport = structure === transports;
10706    function inspect(dataType) {
10707      var selected;
10708      inspected[dataType] = true;
10709      _jQuery2.each(structure[dataType] || [], function (_, prefilterOrFactory) {
10710        var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR);
10711        if (typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[dataTypeOrTransport]) {
10712          options.dataTypes.unshift(dataTypeOrTransport);
10713          inspect(dataTypeOrTransport);
10714          return false;
10715        } else if (seekingTransport) {
10716          return !(selected = dataTypeOrTransport);
10717        }
10718      });
10719      return selected;
10720    }
10721    return inspect(options.dataTypes[0]) || !inspected["*"] && inspect("*");
10722  }
10723
10724  // A special extend for ajax options
10725  // that takes "flat" options (not to be deep extended)
10726  // Fixes trac-9887
10727  function ajaxExtend(target, src) {
10728    var key,
10729      deep,
10730      flatOptions = _jQuery2.ajaxSettings.flatOptions || {};
10731    for (key in src) {
10732      if (src[key] !== undefined) {
10733        (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key];
10734      }
10735    }
10736    if (deep) {
10737      _jQuery2.extend(true, target, deep);
10738    }
10739    return target;
10740  }
10741
10742  /* Handles responses to an ajax request:
10743   * - finds the right dataType (mediates between content-type and expected dataType)
10744   * - returns the corresponding response
10745   */
10746  function ajaxHandleResponses(s, jqXHR, responses) {
10747    var ct,
10748      type,
10749      finalDataType,
10750      firstDataType,
10751      contents = s.contents,
10752      dataTypes = s.dataTypes;
10753
10754    // Remove auto dataType and get content-type in the process
10755    while (dataTypes[0] === "*") {
10756      dataTypes.shift();
10757      if (ct === undefined) {
10758        ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
10759      }
10760    }
10761
10762    // Check if we're dealing with a known content-type
10763    if (ct) {
10764      for (type in contents) {
10765        if (contents[type] && contents[type].test(ct)) {
10766          dataTypes.unshift(type);
10767          break;
10768        }
10769      }
10770    }
10771
10772    // Check to see if we have a response for the expected dataType
10773    if (dataTypes[0] in responses) {
10774      finalDataType = dataTypes[0];
10775    } else {
10776      // Try convertible dataTypes
10777      for (type in responses) {
10778        if (!dataTypes[0] || s.converters[type + " " + dataTypes[0]]) {
10779          finalDataType = type;
10780          break;
10781        }
10782        if (!firstDataType) {
10783          firstDataType = type;
10784        }
10785      }
10786
10787      // Or just use first one
10788      finalDataType = finalDataType || firstDataType;
10789    }
10790
10791    // If we found a dataType
10792    // We add the dataType to the list if needed
10793    // and return the corresponding response
10794    if (finalDataType) {
10795      if (finalDataType !== dataTypes[0]) {
10796        dataTypes.unshift(finalDataType);
10797      }
10798      return responses[finalDataType];
10799    }
10800  }
10801
10802  /* Chain conversions given the request and the original response
10803   * Also sets the responseXXX fields on the jqXHR instance
10804   */
10805  function ajaxConvert(s, response, jqXHR, isSuccess) {
10806    var conv2,
10807      current,
10808      conv,
10809      tmp,
10810      prev,
10811      converters = {},
10812      // Work with a copy of dataTypes in case we need to modify it for conversion
10813      dataTypes = s.dataTypes.slice();
10814
10815    // Create converters map with lowercased keys
10816    if (dataTypes[1]) {
10817      for (conv in s.converters) {
10818        converters[conv.toLowerCase()] = s.converters[conv];
10819      }
10820    }
10821    current = dataTypes.shift();
10822
10823    // Convert to each sequential dataType
10824    while (current) {
10825      if (s.responseFields[current]) {
10826        jqXHR[s.responseFields[current]] = response;
10827      }
10828
10829      // Apply the dataFilter if provided
10830      if (!prev && isSuccess && s.dataFilter) {
10831        response = s.dataFilter(response, s.dataType);
10832      }
10833      prev = current;
10834      current = dataTypes.shift();
10835      if (current) {
10836        // There's only work to do if current dataType is non-auto
10837        if (current === "*") {
10838          current = prev;
10839
10840          // Convert response if prev dataType is non-auto and differs from current
10841        } else if (prev !== "*" && prev !== current) {
10842          // Seek a direct converter
10843          conv = converters[prev + " " + current] || converters["* " + current];
10844
10845          // If none found, seek a pair
10846          if (!conv) {
10847            for (conv2 in converters) {
10848              // If conv2 outputs current
10849              tmp = conv2.split(" ");
10850              if (tmp[1] === current) {
10851                // If prev can be converted to accepted input
10852                conv = converters[prev + " " + tmp[0]] || converters["* " + tmp[0]];
10853                if (conv) {
10854                  // Condense equivalence converters
10855                  if (conv === true) {
10856                    conv = converters[conv2];
10857
10858                    // Otherwise, insert the intermediate dataType
10859                  } else if (converters[conv2] !== true) {
10860                    current = tmp[0];
10861                    dataTypes.unshift(tmp[1]);
10862                  }
10863                  break;
10864                }
10865              }
10866            }
10867          }
10868
10869          // Apply converter (if not an equivalence)
10870          if (conv !== true) {
10871            // Unless errors are allowed to bubble, catch and return them
10872            if (conv && s.throws) {
10873              response = conv(response);
10874            } else {
10875              try {
10876                response = conv(response);
10877              } catch (e) {
10878                return {
10879                  state: "parsererror",
10880                  error: conv ? e : "No conversion from " + prev + " to " + current
10881                };
10882              }
10883            }
10884          }
10885        }
10886      }
10887    }
10888    return {
10889      state: "success",
10890      data: response
10891    };
10892  }
10893  _jQuery2.extend({
10894    // Counter for holding the number of active queries
10895    active: 0,
10896    // Last-Modified header cache for next request
10897    lastModified: {},
10898    etag: {},
10899    ajaxSettings: {
10900      url: location.href,
10901      type: "GET",
10902      isLocal: rlocalProtocol.test(location.protocol),
10903      global: true,
10904      processData: true,
10905      async: true,
10906      contentType: "application/x-www-form-urlencoded; charset=UTF-8",
10907      /*
10908      timeout: 0,
10909      data: null,
10910      dataType: null,
10911      username: null,
10912      password: null,
10913      cache: null,
10914      throws: false,
10915      traditional: false,
10916      headers: {},
10917      */
10918
10919      accepts: {
10920        "*": allTypes,
10921        text: "text/plain",
10922        html: "text/html",
10923        xml: "application/xml, text/xml",
10924        json: "application/json, text/javascript"
10925      },
10926      contents: {
10927        xml: /\bxml\b/,
10928        html: /\bhtml/,
10929        json: /\bjson\b/
10930      },
10931      responseFields: {
10932        xml: "responseXML",
10933        text: "responseText",
10934        json: "responseJSON"
10935      },
10936      // Data converters
10937      // Keys separate source (or catchall "*") and destination types with a single space
10938      converters: {
10939        // Convert anything to text
10940        "* text": String,
10941        // Text to html (true = no transformation)
10942        "text html": true,
10943        // Evaluate text as a json expression
10944        "text json": JSON.parse,
10945        // Parse text as xml
10946        "text xml": _jQuery2.parseXML
10947      },
10948      // For options that shouldn't be deep extended:
10949      // you can add your own custom options here if
10950      // and when you create one that shouldn't be
10951      // deep extended (see ajaxExtend)
10952      flatOptions: {
10953        url: true,
10954        context: true
10955      }
10956    },
10957    // Creates a full fledged settings object into target
10958    // with both ajaxSettings and settings fields.
10959    // If target is omitted, writes into ajaxSettings.
10960    ajaxSetup: function ajaxSetup(target, settings) {
10961      return settings ?
10962      // Building a settings object
10963      ajaxExtend(ajaxExtend(target, _jQuery2.ajaxSettings), settings) :
10964      // Extending ajaxSettings
10965      ajaxExtend(_jQuery2.ajaxSettings, target);
10966    },
10967    ajaxPrefilter: addToPrefiltersOrTransports(prefilters),
10968    ajaxTransport: addToPrefiltersOrTransports(transports),
10969    // Main method
10970    ajax: function ajax(url, options) {
10971      // If url is an object, simulate pre-1.5 signature
10972      if (_typeof(url) === "object") {
10973        options = url;
10974        url = undefined;
10975      }
10976
10977      // Force options to be an object
10978      options = options || {};
10979      var transport,
10980        // URL without anti-cache param
10981        cacheURL,
10982        // Response headers
10983        responseHeadersString,
10984        responseHeaders,
10985        // timeout handle
10986        timeoutTimer,
10987        // Url cleanup var
10988        urlAnchor,
10989        // Request state (becomes false upon send and true upon completion)
10990        completed,
10991        // To know if global events are to be dispatched
10992        fireGlobals,
10993        // Loop variable
10994        i,
10995        // uncached part of the url
10996        uncached,
10997        // Create the final options object
10998        s = _jQuery2.ajaxSetup({}, options),
10999        // Callbacks context
11000        callbackContext = s.context || s,
11001        // Context for global events is callbackContext if it is a DOM node or jQuery collection
11002        globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? _jQuery2(callbackContext) : _jQuery2.event,
11003        // Deferreds
11004        deferred = _jQuery2.Deferred(),
11005        completeDeferred = _jQuery2.Callbacks("once memory"),
11006        // Status-dependent callbacks
11007        _statusCode = s.statusCode || {},
11008        // Headers (they are sent all at once)
11009        requestHeaders = {},
11010        requestHeadersNames = {},
11011        // Default abort message
11012        strAbort = "canceled",
11013        // Fake xhr
11014        jqXHR = {
11015          readyState: 0,
11016          // Builds headers hashtable if needed
11017          getResponseHeader: function getResponseHeader(key) {
11018            var match;
11019            if (completed) {
11020              if (!responseHeaders) {
11021                responseHeaders = {};
11022                while (match = rheaders.exec(responseHeadersString)) {
11023                  responseHeaders[match[1].toLowerCase() + " "] = (responseHeaders[match[1].toLowerCase() + " "] || []).concat(match[2]);
11024                }
11025              }
11026              match = responseHeaders[key.toLowerCase() + " "];
11027            }
11028            return match == null ? null : match.join(", ");
11029          },
11030          // Raw string
11031          getAllResponseHeaders: function getAllResponseHeaders() {
11032            return completed ? responseHeadersString : null;
11033          },
11034          // Caches the header
11035          setRequestHeader: function setRequestHeader(name, value) {
11036            if (completed == null) {
11037              name = requestHeadersNames[name.toLowerCase()] = requestHeadersNames[name.toLowerCase()] || name;
11038              requestHeaders[name] = value;
11039            }
11040            return this;
11041          },
11042          // Overrides response content-type header
11043          overrideMimeType: function overrideMimeType(type) {
11044            if (completed == null) {
11045              s.mimeType = type;
11046            }
11047            return this;
11048          },
11049          // Status-dependent callbacks
11050          statusCode: function statusCode(map) {
11051            var code;
11052            if (map) {
11053              if (completed) {
11054                // Execute the appropriate callbacks
11055                jqXHR.always(map[jqXHR.status]);
11056              } else {
11057                // Lazy-add the new callbacks in a way that preserves old ones
11058                for (code in map) {
11059                  _statusCode[code] = [_statusCode[code], map[code]];
11060                }
11061              }
11062            }
11063            return this;
11064          },
11065          // Cancel the request
11066          abort: function abort(statusText) {
11067            var finalText = statusText || strAbort;
11068            if (transport) {
11069              transport.abort(finalText);
11070            }
11071            done(0, finalText);
11072            return this;
11073          }
11074        };
11075
11076      // Attach deferreds
11077      deferred.promise(jqXHR);
11078
11079      // Add protocol if not provided (prefilters might expect it)
11080      // Handle falsy url in the settings object (trac-10093: consistency with old signature)
11081      // We also use the url parameter if available
11082      s.url = ((url || s.url || location.href) + "").replace(rprotocol, location.protocol + "//");
11083
11084      // Alias method option to type as per ticket trac-12004
11085      s.type = options.method || options.type || s.method || s.type;
11086
11087      // Extract dataTypes list
11088      s.dataTypes = (s.dataType || "*").toLowerCase().match(rnothtmlwhite) || [""];
11089
11090      // A cross-domain request is in order when the origin doesn't match the current origin.
11091      if (s.crossDomain == null) {
11092        urlAnchor = document.createElement("a");
11093
11094        // Support: IE <=8 - 11, Edge 12 - 15
11095        // IE throws exception on accessing the href property if url is malformed,
11096        // e.g. http://example.com:80x/
11097        try {
11098          urlAnchor.href = s.url;
11099
11100          // Support: IE <=8 - 11 only
11101          // Anchor's host property isn't correctly set when s.url is relative
11102          urlAnchor.href = urlAnchor.href;
11103          s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== urlAnchor.protocol + "//" + urlAnchor.host;
11104        } catch (e) {
11105          // If there is an error parsing the URL, assume it is crossDomain,
11106          // it can be rejected by the transport if it is invalid
11107          s.crossDomain = true;
11108        }
11109      }
11110
11111      // Convert data if not already a string
11112      if (s.data && s.processData && typeof s.data !== "string") {
11113        s.data = _jQuery2.param(s.data, s.traditional);
11114      }
11115
11116      // Apply prefilters
11117      inspectPrefiltersOrTransports(prefilters, s, options, jqXHR);
11118
11119      // If request was aborted inside a prefilter, stop there
11120      if (completed) {
11121        return jqXHR;
11122      }
11123
11124      // We can fire global events as of now if asked to
11125      // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)
11126      fireGlobals = _jQuery2.event && s.global;
11127
11128      // Watch for a new set of requests
11129      if (fireGlobals && _jQuery2.active++ === 0) {
11130        _jQuery2.event.trigger("ajaxStart");
11131      }
11132
11133      // Uppercase the type
11134      s.type = s.type.toUpperCase();
11135
11136      // Determine if request has content
11137      s.hasContent = !rnoContent.test(s.type);
11138
11139      // Save the URL in case we're toying with the If-Modified-Since
11140      // and/or If-None-Match header later on
11141      // Remove hash to simplify url manipulation
11142      cacheURL = s.url.replace(rhash, "");
11143
11144      // More options handling for requests with no content
11145      if (!s.hasContent) {
11146        // Remember the hash so we can put it back
11147        uncached = s.url.slice(cacheURL.length);
11148
11149        // If data is available and should be processed, append data to url
11150        if (s.data && (s.processData || typeof s.data === "string")) {
11151          cacheURL += (rquery.test(cacheURL) ? "&" : "?") + s.data;
11152
11153          // trac-9682: remove data so that it's not used in an eventual retry
11154          delete s.data;
11155        }
11156
11157        // Add or update anti-cache param if needed
11158        if (s.cache === false) {
11159          cacheURL = cacheURL.replace(rantiCache, "$1");
11160          uncached = (rquery.test(cacheURL) ? "&" : "?") + "_=" + nonce.guid++ + uncached;
11161        }
11162
11163        // Put hash and anti-cache on the URL that will be requested (gh-1732)
11164        s.url = cacheURL + uncached;
11165
11166        // Change '%20' to '+' if this is encoded form body content (gh-2658)
11167      } else if (s.data && s.processData && (s.contentType || "").indexOf("application/x-www-form-urlencoded") === 0) {
11168        s.data = s.data.replace(r20, "+");
11169      }
11170
11171      // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
11172      if (s.ifModified) {
11173        if (_jQuery2.lastModified[cacheURL]) {
11174          jqXHR.setRequestHeader("If-Modified-Since", _jQuery2.lastModified[cacheURL]);
11175        }
11176        if (_jQuery2.etag[cacheURL]) {
11177          jqXHR.setRequestHeader("If-None-Match", _jQuery2.etag[cacheURL]);
11178        }
11179      }
11180
11181      // Set the correct header, if data is being sent
11182      if (s.data && s.hasContent && s.contentType !== false || options.contentType) {
11183        jqXHR.setRequestHeader("Content-Type", s.contentType);
11184      }
11185
11186      // Set the Accepts header for the server, depending on the dataType
11187      jqXHR.setRequestHeader("Accept", s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== "*" ? ", " + allTypes + "; q=0.01" : "") : s.accepts["*"]);
11188
11189      // Check for headers option
11190      for (i in s.headers) {
11191        jqXHR.setRequestHeader(i, s.headers[i]);
11192      }
11193
11194      // Allow custom headers/mimetypes and early abort
11195      if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || completed)) {
11196        // Abort if not done already and return
11197        return jqXHR.abort();
11198      }
11199
11200      // Aborting is no longer a cancellation
11201      strAbort = "abort";
11202
11203      // Install callbacks on deferreds
11204      completeDeferred.add(s.complete);
11205      jqXHR.done(s.success);
11206      jqXHR.fail(s.error);
11207
11208      // Get transport
11209      transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR);
11210
11211      // If no transport, we auto-abort
11212      if (!transport) {
11213        done(-1, "No Transport");
11214      } else {
11215        jqXHR.readyState = 1;
11216
11217        // Send global event
11218        if (fireGlobals) {
11219          globalEventContext.trigger("ajaxSend", [jqXHR, s]);
11220        }
11221
11222        // If request was aborted inside ajaxSend, stop there
11223        if (completed) {
11224          return jqXHR;
11225        }
11226
11227        // Timeout
11228        if (s.async && s.timeout > 0) {
11229          timeoutTimer = window.setTimeout(function () {
11230            jqXHR.abort("timeout");
11231          }, s.timeout);
11232        }
11233        try {
11234          completed = false;
11235          transport.send(requestHeaders, done);
11236        } catch (e) {
11237          // Rethrow post-completion exceptions
11238          if (completed) {
11239            throw e;
11240          }
11241
11242          // Propagate others as results
11243          done(-1, e);
11244        }
11245      }
11246
11247      // Callback for when everything is done
11248      function done(status, nativeStatusText, responses, headers) {
11249        var isSuccess,
11250          success,
11251          error,
11252          response,
11253          modified,
11254          statusText = nativeStatusText;
11255
11256        // Ignore repeat invocations
11257        if (completed) {
11258          return;
11259        }
11260        completed = true;
11261
11262        // Clear timeout if it exists
11263        if (timeoutTimer) {
11264          window.clearTimeout(timeoutTimer);
11265        }
11266
11267        // Dereference transport for early garbage collection
11268        // (no matter how long the jqXHR object will be used)
11269        transport = undefined;
11270
11271        // Cache response headers
11272        responseHeadersString = headers || "";
11273
11274        // Set readyState
11275        jqXHR.readyState = status > 0 ? 4 : 0;
11276
11277        // Determine if successful
11278        isSuccess = status >= 200 && status < 300 || status === 304;
11279
11280        // Get response data
11281        if (responses) {
11282          response = ajaxHandleResponses(s, jqXHR, responses);
11283        }
11284
11285        // Use a noop converter for missing script but not if jsonp
11286        if (!isSuccess && _jQuery2.inArray("script", s.dataTypes) > -1 && _jQuery2.inArray("json", s.dataTypes) < 0) {
11287          s.converters["text script"] = function () {};
11288        }
11289
11290        // Convert no matter what (that way responseXXX fields are always set)
11291        response = ajaxConvert(s, response, jqXHR, isSuccess);
11292
11293        // If successful, handle type chaining
11294        if (isSuccess) {
11295          // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
11296          if (s.ifModified) {
11297            modified = jqXHR.getResponseHeader("Last-Modified");
11298            if (modified) {
11299              _jQuery2.lastModified[cacheURL] = modified;
11300            }
11301            modified = jqXHR.getResponseHeader("etag");
11302            if (modified) {
11303              _jQuery2.etag[cacheURL] = modified;
11304            }
11305          }
11306
11307          // if no content
11308          if (status === 204 || s.type === "HEAD") {
11309            statusText = "nocontent";
11310
11311            // if not modified
11312          } else if (status === 304) {
11313            statusText = "notmodified";
11314
11315            // If we have data, let's convert it
11316          } else {
11317            statusText = response.state;
11318            success = response.data;
11319            error = response.error;
11320            isSuccess = !error;
11321          }
11322        } else {
11323          // Extract error from statusText and normalize for non-aborts
11324          error = statusText;
11325          if (status || !statusText) {
11326            statusText = "error";
11327            if (status < 0) {
11328              status = 0;
11329            }
11330          }
11331        }
11332
11333        // Set data for the fake xhr object
11334        jqXHR.status = status;
11335        jqXHR.statusText = (nativeStatusText || statusText) + "";
11336
11337        // Success/Error
11338        if (isSuccess) {
11339          deferred.resolveWith(callbackContext, [success, statusText, jqXHR]);
11340        } else {
11341          deferred.rejectWith(callbackContext, [jqXHR, statusText, error]);
11342        }
11343
11344        // Status-dependent callbacks
11345        jqXHR.statusCode(_statusCode);
11346        _statusCode = undefined;
11347        if (fireGlobals) {
11348          globalEventContext.trigger(isSuccess ? "ajaxSuccess" : "ajaxError", [jqXHR, s, isSuccess ? success : error]);
11349        }
11350
11351        // Complete
11352        completeDeferred.fireWith(callbackContext, [jqXHR, statusText]);
11353        if (fireGlobals) {
11354          globalEventContext.trigger("ajaxComplete", [jqXHR, s]);
11355
11356          // Handle the global AJAX counter
11357          if (! --_jQuery2.active) {
11358            _jQuery2.event.trigger("ajaxStop");
11359          }
11360        }
11361      }
11362      return jqXHR;
11363    },
11364    getJSON: function getJSON(url, data, callback) {
11365      return _jQuery2.get(url, data, callback, "json");
11366    },
11367    getScript: function getScript(url, callback) {
11368      return _jQuery2.get(url, undefined, callback, "script");
11369    }
11370  });
11371  _jQuery2.each(["get", "post"], function (_i, method) {
11372    _jQuery2[method] = function (url, data, callback, type) {
11373      // Shift arguments if data argument was omitted
11374      if (isFunction(data)) {
11375        type = type || callback;
11376        callback = data;
11377        data = undefined;
11378      }
11379
11380      // The url can be an options object (which then must have .url)
11381      return _jQuery2.ajax(_jQuery2.extend({
11382        url: url,
11383        type: method,
11384        dataType: type,
11385        data: data,
11386        success: callback
11387      }, _jQuery2.isPlainObject(url) && url));
11388    };
11389  });
11390  _jQuery2.ajaxPrefilter(function (s) {
11391    var i;
11392    for (i in s.headers) {
11393      if (i.toLowerCase() === "content-type") {
11394        s.contentType = s.headers[i] || "";
11395      }
11396    }
11397  });
11398  _jQuery2._evalUrl = function (url, options, doc) {
11399    return _jQuery2.ajax({
11400      url: url,
11401      // Make this explicit, since user can override this through ajaxSetup (trac-11264)
11402      type: "GET",
11403      dataType: "script",
11404      cache: true,
11405      async: false,
11406      global: false,
11407      // Only evaluate the response if it is successful (gh-4126)
11408      // dataFilter is not invoked for failure responses, so using it instead
11409      // of the default converter is kludgy but it works.
11410      converters: {
11411        "text script": function text_script() {}
11412      },
11413      dataFilter: function dataFilter(response) {
11414        _jQuery2.globalEval(response, options, doc);
11415      }
11416    });
11417  };
11418  _jQuery2.fn.extend({
11419    wrapAll: function wrapAll(html) {
11420      var wrap;
11421      if (this[0]) {
11422        if (isFunction(html)) {
11423          html = html.call(this[0]);
11424        }
11425
11426        // The elements to wrap the target around
11427        wrap = _jQuery2(html, this[0].ownerDocument).eq(0).clone(true);
11428        if (this[0].parentNode) {
11429          wrap.insertBefore(this[0]);
11430        }
11431        wrap.map(function () {
11432          var elem = this;
11433          while (elem.firstElementChild) {
11434            elem = elem.firstElementChild;
11435          }
11436          return elem;
11437        }).append(this);
11438      }
11439      return this;
11440    },
11441    wrapInner: function wrapInner(html) {
11442      if (isFunction(html)) {
11443        return this.each(function (i) {
11444          _jQuery2(this).wrapInner(html.call(this, i));
11445        });
11446      }
11447      return this.each(function () {
11448        var self = _jQuery2(this),
11449          contents = self.contents();
11450        if (contents.length) {
11451          contents.wrapAll(html);
11452        } else {
11453          self.append(html);
11454        }
11455      });
11456    },
11457    wrap: function wrap(html) {
11458      var htmlIsFunction = isFunction(html);
11459      return this.each(function (i) {
11460        _jQuery2(this).wrapAll(htmlIsFunction ? html.call(this, i) : html);
11461      });
11462    },
11463    unwrap: function unwrap(selector) {
11464      this.parent(selector).not("body").each(function () {
11465        _jQuery2(this).replaceWith(this.childNodes);
11466      });
11467      return this;
11468    }
11469  });
11470  _jQuery2.expr.pseudos.hidden = function (elem) {
11471    return !_jQuery2.expr.pseudos.visible(elem);
11472  };
11473  _jQuery2.expr.pseudos.visible = function (elem) {
11474    return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);
11475  };
11476  _jQuery2.ajaxSettings.xhr = function () {
11477    try {
11478      return new window.XMLHttpRequest();
11479    } catch (e) {}
11480  };
11481  var xhrSuccessStatus = {
11482      // File protocol always yields status code 0, assume 200
11483      0: 200,
11484      // Support: IE <=9 only
11485      // trac-1450: sometimes IE returns 1223 when it should be 204
11486      1223: 204
11487    },
11488    xhrSupported = _jQuery2.ajaxSettings.xhr();
11489  support.cors = !!xhrSupported && "withCredentials" in xhrSupported;
11490  support.ajax = xhrSupported = !!xhrSupported;
11491  _jQuery2.ajaxTransport(function (options) {
11492    var _callback, errorCallback;
11493
11494    // Cross domain only allowed if supported through XMLHttpRequest
11495    if (support.cors || xhrSupported && !options.crossDomain) {
11496      return {
11497        send: function send(headers, complete) {
11498          var i,
11499            xhr = options.xhr();
11500          xhr.open(options.type, options.url, options.async, options.username, options.password);
11501
11502          // Apply custom fields if provided
11503          if (options.xhrFields) {
11504            for (i in options.xhrFields) {
11505              xhr[i] = options.xhrFields[i];
11506            }
11507          }
11508
11509          // Override mime type if needed
11510          if (options.mimeType && xhr.overrideMimeType) {
11511            xhr.overrideMimeType(options.mimeType);
11512          }
11513
11514          // X-Requested-With header
11515          // For cross-domain requests, seeing as conditions for a preflight are
11516          // akin to a jigsaw puzzle, we simply never set it to be sure.
11517          // (it can always be set on a per-request basis or even using ajaxSetup)
11518          // For same-domain requests, won't change header if already provided.
11519          if (!options.crossDomain && !headers["X-Requested-With"]) {
11520            headers["X-Requested-With"] = "XMLHttpRequest";
11521          }
11522
11523          // Set headers
11524          for (i in headers) {
11525            xhr.setRequestHeader(i, headers[i]);
11526          }
11527
11528          // Callback
11529          _callback = function callback(type) {
11530            return function () {
11531              if (_callback) {
11532                _callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = xhr.onreadystatechange = null;
11533                if (type === "abort") {
11534                  xhr.abort();
11535                } else if (type === "error") {
11536                  // Support: IE <=9 only
11537                  // On a manual native abort, IE9 throws
11538                  // errors on any property access that is not readyState
11539                  if (typeof xhr.status !== "number") {
11540                    complete(0, "error");
11541                  } else {
11542                    complete(
11543                    // File: protocol always yields status 0; see trac-8605, trac-14207
11544                    xhr.status, xhr.statusText);
11545                  }
11546                } else {
11547                  complete(xhrSuccessStatus[xhr.status] || xhr.status, xhr.statusText,
11548                  // Support: IE <=9 only
11549                  // IE9 has no XHR2 but throws on binary (trac-11426)
11550                  // For XHR2 non-text, let the caller handle it (gh-2498)
11551                  (xhr.responseType || "text") !== "text" || typeof xhr.responseText !== "string" ? {
11552                    binary: xhr.response
11553                  } : {
11554                    text: xhr.responseText
11555                  }, xhr.getAllResponseHeaders());
11556                }
11557              }
11558            };
11559          };
11560
11561          // Listen to events
11562          xhr.onload = _callback();
11563          errorCallback = xhr.onerror = xhr.ontimeout = _callback("error");
11564
11565          // Support: IE 9 only
11566          // Use onreadystatechange to replace onabort
11567          // to handle uncaught aborts
11568          if (xhr.onabort !== undefined) {
11569            xhr.onabort = errorCallback;
11570          } else {
11571            xhr.onreadystatechange = function () {
11572              // Check readyState before timeout as it changes
11573              if (xhr.readyState === 4) {
11574                // Allow onerror to be called first,
11575                // but that will not handle a native abort
11576                // Also, save errorCallback to a variable
11577                // as xhr.onerror cannot be accessed
11578                window.setTimeout(function () {
11579                  if (_callback) {
11580                    errorCallback();
11581                  }
11582                });
11583              }
11584            };
11585          }
11586
11587          // Create the abort callback
11588          _callback = _callback("abort");
11589          try {
11590            // Do send the request (this may raise an exception)
11591            xhr.send(options.hasContent && options.data || null);
11592          } catch (e) {
11593            // trac-14683: Only rethrow if this hasn't been notified as an error yet
11594            if (_callback) {
11595              throw e;
11596            }
11597          }
11598        },
11599        abort: function abort() {
11600          if (_callback) {
11601            _callback();
11602          }
11603        }
11604      };
11605    }
11606  });
11607
11608  // Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
11609  _jQuery2.ajaxPrefilter(function (s) {
11610    if (s.crossDomain) {
11611      s.contents.script = false;
11612    }
11613  });
11614
11615  // Install script dataType
11616  _jQuery2.ajaxSetup({
11617    accepts: {
11618      script: "text/javascript, application/javascript, " + "application/ecmascript, application/x-ecmascript"
11619    },
11620    contents: {
11621      script: /\b(?:java|ecma)script\b/
11622    },
11623    converters: {
11624      "text script": function text_script(text) {
11625        _jQuery2.globalEval(text);
11626        return text;
11627      }
11628    }
11629  });
11630
11631  // Handle cache's special case and crossDomain
11632  _jQuery2.ajaxPrefilter("script", function (s) {
11633    if (s.cache === undefined) {
11634      s.cache = false;
11635    }
11636    if (s.crossDomain) {
11637      s.type = "GET";
11638    }
11639  });
11640
11641  // Bind script tag hack transport
11642  _jQuery2.ajaxTransport("script", function (s) {
11643    // This transport only deals with cross domain or forced-by-attrs requests
11644    if (s.crossDomain || s.scriptAttrs) {
11645      var script, _callback2;
11646      return {
11647        send: function send(_, complete) {
11648          script = _jQuery2("<script>").attr(s.scriptAttrs || {}).prop({
11649            charset: s.scriptCharset,
11650            src: s.url
11651          }).on("load error", _callback2 = function callback(evt) {
11652            script.remove();
11653            _callback2 = null;
11654            if (evt) {
11655              complete(evt.type === "error" ? 404 : 200, evt.type);
11656            }
11657          });
11658
11659          // Use native DOM manipulation to avoid our domManip AJAX trickery
11660          document.head.appendChild(script[0]);
11661        },
11662        abort: function abort() {
11663          if (_callback2) {
11664            _callback2();
11665          }
11666        }
11667      };
11668    }
11669  });
11670  var oldCallbacks = [],
11671    rjsonp = /(=)\?(?=&|$)|\?\?/;
11672
11673  // Default jsonp settings
11674  _jQuery2.ajaxSetup({
11675    jsonp: "callback",
11676    jsonpCallback: function jsonpCallback() {
11677      var callback = oldCallbacks.pop() || _jQuery2.expando + "_" + nonce.guid++;
11678      this[callback] = true;
11679      return callback;
11680    }
11681  });
11682
11683  // Detect, normalize options and install callbacks for jsonp requests
11684  _jQuery2.ajaxPrefilter("json jsonp", function (s, originalSettings, jqXHR) {
11685    var callbackName,
11686      overwritten,
11687      responseContainer,
11688      jsonProp = s.jsonp !== false && (rjsonp.test(s.url) ? "url" : typeof s.data === "string" && (s.contentType || "").indexOf("application/x-www-form-urlencoded") === 0 && rjsonp.test(s.data) && "data");
11689
11690    // Handle iff the expected data type is "jsonp" or we have a parameter to set
11691    if (jsonProp || s.dataTypes[0] === "jsonp") {
11692      // Get callback name, remembering preexisting value associated with it
11693      callbackName = s.jsonpCallback = isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback;
11694
11695      // Insert callback into url or form data
11696      if (jsonProp) {
11697        s[jsonProp] = s[jsonProp].replace(rjsonp, "$1" + callbackName);
11698      } else if (s.jsonp !== false) {
11699        s.url += (rquery.test(s.url) ? "&" : "?") + s.jsonp + "=" + callbackName;
11700      }
11701
11702      // Use data converter to retrieve json after script execution
11703      s.converters["script json"] = function () {
11704        if (!responseContainer) {
11705          _jQuery2.error(callbackName + " was not called");
11706        }
11707        return responseContainer[0];
11708      };
11709
11710      // Force json dataType
11711      s.dataTypes[0] = "json";
11712
11713      // Install callback
11714      overwritten = window[callbackName];
11715      window[callbackName] = function () {
11716        responseContainer = arguments;
11717      };
11718
11719      // Clean-up function (fires after converters)
11720      jqXHR.always(function () {
11721        // If previous value didn't exist - remove it
11722        if (overwritten === undefined) {
11723          _jQuery2(window).removeProp(callbackName);
11724
11725          // Otherwise restore preexisting value
11726        } else {
11727          window[callbackName] = overwritten;
11728        }
11729
11730        // Save back as free
11731        if (s[callbackName]) {
11732          // Make sure that re-using the options doesn't screw things around
11733          s.jsonpCallback = originalSettings.jsonpCallback;
11734
11735          // Save the callback name for future use
11736          oldCallbacks.push(callbackName);
11737        }
11738
11739        // Call if it was a function and we have a response
11740        if (responseContainer && isFunction(overwritten)) {
11741          overwritten(responseContainer[0]);
11742        }
11743        responseContainer = overwritten = undefined;
11744      });
11745
11746      // Delegate to script
11747      return "script";
11748    }
11749  });
11750
11751  // Support: Safari 8 only
11752  // In Safari 8 documents created via document.implementation.createHTMLDocument
11753  // collapse sibling forms: the second one becomes a child of the first one.
11754  // Because of that, this security measure has to be disabled in Safari 8.
11755  // https://bugs.webkit.org/show_bug.cgi?id=137337
11756  support.createHTMLDocument = function () {
11757    var body = document.implementation.createHTMLDocument("").body;
11758    body.innerHTML = "<form></form><form></form>";
11759    return body.childNodes.length === 2;
11760  }();
11761
11762  // Argument "data" should be string of html
11763  // context (optional): If specified, the fragment will be created in this context,
11764  // defaults to document
11765  // keepScripts (optional): If true, will include scripts passed in the html string
11766  _jQuery2.parseHTML = function (data, context, keepScripts) {
11767    if (typeof data !== "string") {
11768      return [];
11769    }
11770    if (typeof context === "boolean") {
11771      keepScripts = context;
11772      context = false;
11773    }
11774    var base, parsed, scripts;
11775    if (!context) {
11776      // Stop scripts or inline event handlers from being executed immediately
11777      // by using document.implementation
11778      if (support.createHTMLDocument) {
11779        context = document.implementation.createHTMLDocument("");
11780
11781        // Set the base href for the created document
11782        // so any parsed elements with URLs
11783        // are based on the document's URL (gh-2965)
11784        base = context.createElement("base");
11785        base.href = document.location.href;
11786        context.head.appendChild(base);
11787      } else {
11788        context = document;
11789      }
11790    }
11791    parsed = rsingleTag.exec(data);
11792    scripts = !keepScripts && [];
11793
11794    // Single tag
11795    if (parsed) {
11796      return [context.createElement(parsed[1])];
11797    }
11798    parsed = buildFragment([data], context, scripts);
11799    if (scripts && scripts.length) {
11800      _jQuery2(scripts).remove();
11801    }
11802    return _jQuery2.merge([], parsed.childNodes);
11803  };
11804
11805  /**
11806   * Load a url into a page
11807   */
11808  _jQuery2.fn.load = function (url, params, callback) {
11809    var selector,
11810      type,
11811      response,
11812      self = this,
11813      off = url.indexOf(" ");
11814    if (off > -1) {
11815      selector = stripAndCollapse(url.slice(off));
11816      url = url.slice(0, off);
11817    }
11818
11819    // If it's a function
11820    if (isFunction(params)) {
11821      // We assume that it's the callback
11822      callback = params;
11823      params = undefined;
11824
11825      // Otherwise, build a param string
11826    } else if (params && _typeof(params) === "object") {
11827      type = "POST";
11828    }
11829
11830    // If we have elements to modify, make the request
11831    if (self.length > 0) {
11832      _jQuery2.ajax({
11833        url: url,
11834        // If "type" variable is undefined, then "GET" method will be used.
11835        // Make value of this field explicit since
11836        // user can override it through ajaxSetup method
11837        type: type || "GET",
11838        dataType: "html",
11839        data: params
11840      }).done(function (responseText) {
11841        // Save response for use in complete callback
11842        response = arguments;
11843        self.html(selector ?
11844        // If a selector was specified, locate the right elements in a dummy div
11845        // Exclude scripts to avoid IE 'Permission Denied' errors
11846        _jQuery2("<div>").append(_jQuery2.parseHTML(responseText)).find(selector) :
11847        // Otherwise use the full result
11848        responseText);
11849
11850        // If the request succeeds, this function gets "data", "status", "jqXHR"
11851        // but they are ignored because response was set above.
11852        // If it fails, this function gets "jqXHR", "status", "error"
11853      }).always(callback && function (jqXHR, status) {
11854        self.each(function () {
11855          callback.apply(this, response || [jqXHR.responseText, status, jqXHR]);
11856        });
11857      });
11858    }
11859    return this;
11860  };
11861  _jQuery2.expr.pseudos.animated = function (elem) {
11862    return _jQuery2.grep(_jQuery2.timers, function (fn) {
11863      return elem === fn.elem;
11864    }).length;
11865  };
11866  _jQuery2.offset = {
11867    setOffset: function setOffset(elem, options, i) {
11868      var curPosition,
11869        curLeft,
11870        curCSSTop,
11871        curTop,
11872        curOffset,
11873        curCSSLeft,
11874        calculatePosition,
11875        position = _jQuery2.css(elem, "position"),
11876        curElem = _jQuery2(elem),
11877        props = {};
11878
11879      // Set position first, in-case top/left are set even on static elem
11880      if (position === "static") {
11881        elem.style.position = "relative";
11882      }
11883      curOffset = curElem.offset();
11884      curCSSTop = _jQuery2.css(elem, "top");
11885      curCSSLeft = _jQuery2.css(elem, "left");
11886      calculatePosition = (position === "absolute" || position === "fixed") && (curCSSTop + curCSSLeft).indexOf("auto") > -1;
11887
11888      // Need to be able to calculate position if either
11889      // top or left is auto and position is either absolute or fixed
11890      if (calculatePosition) {
11891        curPosition = curElem.position();
11892        curTop = curPosition.top;
11893        curLeft = curPosition.left;
11894      } else {
11895        curTop = parseFloat(curCSSTop) || 0;
11896        curLeft = parseFloat(curCSSLeft) || 0;
11897      }
11898      if (isFunction(options)) {
11899        // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
11900        options = options.call(elem, i, _jQuery2.extend({}, curOffset));
11901      }
11902      if (options.top != null) {
11903        props.top = options.top - curOffset.top + curTop;
11904      }
11905      if (options.left != null) {
11906        props.left = options.left - curOffset.left + curLeft;
11907      }
11908      if ("using" in options) {
11909        options.using.call(elem, props);
11910      } else {
11911        curElem.css(props);
11912      }
11913    }
11914  };
11915  _jQuery2.fn.extend({
11916    // offset() relates an element's border box to the document origin
11917    offset: function offset(options) {
11918      // Preserve chaining for setter
11919      if (arguments.length) {
11920        return options === undefined ? this : this.each(function (i) {
11921          _jQuery2.offset.setOffset(this, options, i);
11922        });
11923      }
11924      var rect,
11925        win,
11926        elem = this[0];
11927      if (!elem) {
11928        return;
11929      }
11930
11931      // Return zeros for disconnected and hidden (display: none) elements (gh-2310)
11932      // Support: IE <=11 only
11933      // Running getBoundingClientRect on a
11934      // disconnected node in IE throws an error
11935      if (!elem.getClientRects().length) {
11936        return {
11937          top: 0,
11938          left: 0
11939        };
11940      }
11941
11942      // Get document-relative position by adding viewport scroll to viewport-relative gBCR
11943      rect = elem.getBoundingClientRect();
11944      win = elem.ownerDocument.defaultView;
11945      return {
11946        top: rect.top + win.pageYOffset,
11947        left: rect.left + win.pageXOffset
11948      };
11949    },
11950    // position() relates an element's margin box to its offset parent's padding box
11951    // This corresponds to the behavior of CSS absolute positioning
11952    position: function position() {
11953      if (!this[0]) {
11954        return;
11955      }
11956      var offsetParent,
11957        offset,
11958        doc,
11959        elem = this[0],
11960        parentOffset = {
11961          top: 0,
11962          left: 0
11963        };
11964
11965      // position:fixed elements are offset from the viewport, which itself always has zero offset
11966      if (_jQuery2.css(elem, "position") === "fixed") {
11967        // Assume position:fixed implies availability of getBoundingClientRect
11968        offset = elem.getBoundingClientRect();
11969      } else {
11970        offset = this.offset();
11971
11972        // Account for the *real* offset parent, which can be the document or its root element
11973        // when a statically positioned element is identified
11974        doc = elem.ownerDocument;
11975        offsetParent = elem.offsetParent || doc.documentElement;
11976        while (offsetParent && (offsetParent === doc.body || offsetParent === doc.documentElement) && _jQuery2.css(offsetParent, "position") === "static") {
11977          offsetParent = offsetParent.parentNode;
11978        }
11979        if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {
11980          // Incorporate borders into its offset, since they are outside its content origin
11981          parentOffset = _jQuery2(offsetParent).offset();
11982          parentOffset.top += _jQuery2.css(offsetParent, "borderTopWidth", true);
11983          parentOffset.left += _jQuery2.css(offsetParent, "borderLeftWidth", true);
11984        }
11985      }
11986
11987      // Subtract parent offsets and element margins
11988      return {
11989        top: offset.top - parentOffset.top - _jQuery2.css(elem, "marginTop", true),
11990        left: offset.left - parentOffset.left - _jQuery2.css(elem, "marginLeft", true)
11991      };
11992    },
11993    // This method will return documentElement in the following cases:
11994    // 1) For the element inside the iframe without offsetParent, this method will return
11995    //    documentElement of the parent window
11996    // 2) For the hidden or detached element
11997    // 3) For body or html element, i.e. in case of the html node - it will return itself
11998    //
11999    // but those exceptions were never presented as a real life use-cases
12000    // and might be considered as more preferable results.
12001    //
12002    // This logic, however, is not guaranteed and can change at any point in the future
12003    offsetParent: function offsetParent() {
12004      return this.map(function () {
12005        var offsetParent = this.offsetParent;
12006        while (offsetParent && _jQuery2.css(offsetParent, "position") === "static") {
12007          offsetParent = offsetParent.offsetParent;
12008        }
12009        return offsetParent || documentElement;
12010      });
12011    }
12012  });
12013
12014  // Create scrollLeft and scrollTop methods
12015  _jQuery2.each({
12016    scrollLeft: "pageXOffset",
12017    scrollTop: "pageYOffset"
12018  }, function (method, prop) {
12019    var top = "pageYOffset" === prop;
12020    _jQuery2.fn[method] = function (val) {
12021      return _access(this, function (elem, method, val) {
12022        // Coalesce documents and windows
12023        var win;
12024        if (isWindow(elem)) {
12025          win = elem;
12026        } else if (elem.nodeType === 9) {
12027          win = elem.defaultView;
12028        }
12029        if (val === undefined) {
12030          return win ? win[prop] : elem[method];
12031        }
12032        if (win) {
12033          win.scrollTo(!top ? val : win.pageXOffset, top ? val : win.pageYOffset);
12034        } else {
12035          elem[method] = val;
12036        }
12037      }, method, val, arguments.length);
12038    };
12039  });
12040
12041  // Support: Safari <=7 - 9.1, Chrome <=37 - 49
12042  // Add the top/left cssHooks using jQuery.fn.position
12043  // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
12044  // Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
12045  // getComputedStyle returns percent when specified for top/left/bottom/right;
12046  // rather than make the css module depend on the offset module, just check for it here
12047  _jQuery2.each(["top", "left"], function (_i, prop) {
12048    _jQuery2.cssHooks[prop] = addGetHookIf(support.pixelPosition, function (elem, computed) {
12049      if (computed) {
12050        computed = curCSS(elem, prop);
12051
12052        // If curCSS returns percentage, fallback to offset
12053        return rnumnonpx.test(computed) ? _jQuery2(elem).position()[prop] + "px" : computed;
12054      }
12055    });
12056  });
12057
12058  // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
12059  _jQuery2.each({
12060    Height: "height",
12061    Width: "width"
12062  }, function (name, type) {
12063    _jQuery2.each({
12064      padding: "inner" + name,
12065      content: type,
12066      "": "outer" + name
12067    }, function (defaultExtra, funcName) {
12068      // Margin is only for outerHeight, outerWidth
12069      _jQuery2.fn[funcName] = function (margin, value) {
12070        var chainable = arguments.length && (defaultExtra || typeof margin !== "boolean"),
12071          extra = defaultExtra || (margin === true || value === true ? "margin" : "border");
12072        return _access(this, function (elem, type, value) {
12073          var doc;
12074          if (isWindow(elem)) {
12075            // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
12076            return funcName.indexOf("outer") === 0 ? elem["inner" + name] : elem.document.documentElement["client" + name];
12077          }
12078
12079          // Get document width or height
12080          if (elem.nodeType === 9) {
12081            doc = elem.documentElement;
12082
12083            // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
12084            // whichever is greatest
12085            return Math.max(elem.body["scroll" + name], doc["scroll" + name], elem.body["offset" + name], doc["offset" + name], doc["client" + name]);
12086          }
12087          return value === undefined ?
12088          // Get width or height on the element, requesting but not forcing parseFloat
12089          _jQuery2.css(elem, type, extra) :
12090          // Set width or height on the element
12091          _jQuery2.style(elem, type, value, extra);
12092        }, type, chainable ? margin : undefined, chainable);
12093      };
12094    });
12095  });
12096  _jQuery2.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function (_i, type) {
12097    _jQuery2.fn[type] = function (fn) {
12098      return this.on(type, fn);
12099    };
12100  });
12101  _jQuery2.fn.extend({
12102    bind: function bind(types, data, fn) {
12103      return this.on(types, null, data, fn);
12104    },
12105    unbind: function unbind(types, fn) {
12106      return this.off(types, null, fn);
12107    },
12108    delegate: function delegate(selector, types, data, fn) {
12109      return this.on(types, selector, data, fn);
12110    },
12111    undelegate: function undelegate(selector, types, fn) {
12112      // ( namespace ) or ( selector, types [, fn] )
12113      return arguments.length === 1 ? this.off(selector, "**") : this.off(types, selector || "**", fn);
12114    },
12115    hover: function hover(fnOver, fnOut) {
12116      return this.on("mouseenter", fnOver).on("mouseleave", fnOut || fnOver);
12117    }
12118  });
12119  _jQuery2.each(("blur focus focusin focusout resize scroll click dblclick " + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + "change select submit keydown keypress keyup contextmenu").split(" "), function (_i, name) {
12120    // Handle event binding
12121    _jQuery2.fn[name] = function (data, fn) {
12122      return arguments.length > 0 ? this.on(name, null, data, fn) : this.trigger(name);
12123    };
12124  });
12125
12126  // Support: Android <=4.0 only
12127  // Make sure we trim BOM and NBSP
12128  // Require that the "whitespace run" starts from a non-whitespace
12129  // to avoid O(N^2) behavior when the engine would try matching "\s+$" at each space position.
12130  var rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;
12131
12132  // Bind a function to a context, optionally partially applying any
12133  // arguments.
12134  // jQuery.proxy is deprecated to promote standards (specifically Function#bind)
12135  // However, it is not slated for removal any time soon
12136  _jQuery2.proxy = function (fn, context) {
12137    var tmp, args, proxy;
12138    if (typeof context === "string") {
12139      tmp = fn[context];
12140      context = fn;
12141      fn = tmp;
12142    }
12143
12144    // Quick check to determine if target is callable, in the spec
12145    // this throws a TypeError, but we will just return undefined.
12146    if (!isFunction(fn)) {
12147      return undefined;
12148    }
12149
12150    // Simulated bind
12151    args = _slice.call(arguments, 2);
12152    proxy = function proxy() {
12153      return fn.apply(context || this, args.concat(_slice.call(arguments)));
12154    };
12155
12156    // Set the guid of unique handler to the same of original handler, so it can be removed
12157    proxy.guid = fn.guid = fn.guid || _jQuery2.guid++;
12158    return proxy;
12159  };
12160  _jQuery2.holdReady = function (hold) {
12161    if (hold) {
12162      _jQuery2.readyWait++;
12163    } else {
12164      _jQuery2.ready(true);
12165    }
12166  };
12167  _jQuery2.isArray = Array.isArray;
12168  _jQuery2.parseJSON = JSON.parse;
12169  _jQuery2.nodeName = nodeName;
12170  _jQuery2.isFunction = isFunction;
12171  _jQuery2.isWindow = isWindow;
12172  _jQuery2.camelCase = camelCase;
12173  _jQuery2.type = toType;
12174  _jQuery2.now = Date.now;
12175  _jQuery2.isNumeric = function (obj) {
12176    // As of jQuery 3.0, isNumeric is limited to
12177    // strings and numbers (primitives or objects)
12178    // that can be coerced to finite numbers (gh-2662)
12179    var type = _jQuery2.type(obj);
12180    return (type === "number" || type === "string") &&
12181    // parseFloat NaNs numeric-cast false positives ("")
12182    // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
12183    // subtraction forces infinities to NaN
12184    !isNaN(obj - parseFloat(obj));
12185  };
12186  _jQuery2.trim = function (text) {
12187    return text == null ? "" : (text + "").replace(rtrim, "$1");
12188  };
12189
12190  // Register as a named AMD module, since jQuery can be concatenated with other
12191  // files that may use define, but not via a proper concatenation script that
12192  // understands anonymous AMD modules. A named AMD is safest and most robust
12193  // way to register. Lowercase jquery is used because AMD module names are
12194  // derived from file names, and jQuery is normally delivered in a lowercase
12195  // file name. Do this after creating the global so that if an AMD module wants
12196  // to call noConflict to hide this version of jQuery, it will work.
12197
12198  // Note that for maximum portability, libraries that are not jQuery should
12199  // declare themselves as anonymous modules, and avoid setting a global if an
12200  // AMD loader is present. jQuery is a special case. For more information, see
12201  // https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
12202
12203  if (true) {
12204    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {
12205      return _jQuery2;
12206    }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
12207		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
12208  }
12209  var
12210    // Map over jQuery in case of overwrite
12211    _jQuery = window.jQuery,
12212    // Map over the $ in case of overwrite
12213    _$ = window.$;
12214  _jQuery2.noConflict = function (deep) {
12215    if (window.$ === _jQuery2) {
12216      window.$ = _$;
12217    }
12218    if (deep && window.jQuery === _jQuery2) {
12219      window.jQuery = _jQuery;
12220    }
12221    return _jQuery2;
12222  };
12223
12224  // Expose jQuery and $ identifiers, even in AMD
12225  // (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)
12226  // and CommonJS for browser emulators (trac-13566)
12227  if (typeof noGlobal === "undefined") {
12228    window.jQuery = window.$ = _jQuery2;
12229  }
12230  return _jQuery2;
12231});
12232
12233/***/ }),
12234
vendor: 4,944 bytes, lines 12235-12329
12235/***/ "./node_modules/lozad/dist/lozad.min.js":
12236/*!**********************************************!*\
12237  !*** ./node_modules/lozad/dist/lozad.min.js ***!
12238  \**********************************************/
12239/***/ (function(module, exports, __webpack_require__) {
12240
12241var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
12242/*! lozad.js - v1.16.0 - 2020-09-06
12243* https://github.com/ApoorvSaxena/lozad.js
12244* Copyright (c) 2020 Apoorv Saxena; Licensed MIT */
12245!function (t, e) {
12246  "object" == ( false ? 0 : _typeof(exports)) && "undefined" != "object" ? module.exports = e() :  true ? !(__WEBPACK_AMD_DEFINE_FACTORY__ = (e),
12247		__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
12248		(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :
12249		__WEBPACK_AMD_DEFINE_FACTORY__),
12250		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : 0;
12251}(this, function () {
12252  "use strict";
12253
12254  /**
12255     * Detect IE browser
12256     * @const {boolean}
12257     * @private
12258     */
12259  var g = "undefined" != typeof document && document.documentMode,
12260    f = {
12261      rootMargin: "0px",
12262      threshold: 0,
12263      load: function load(t) {
12264        if ("picture" === t.nodeName.toLowerCase()) {
12265          var e = t.querySelector("img"),
12266            r = !1;
12267          null === e && (e = document.createElement("img"), r = !0), g && t.getAttribute("data-iesrc") && (e.src = t.getAttribute("data-iesrc")), t.getAttribute("data-alt") && (e.alt = t.getAttribute("data-alt")), r && t.append(e);
12268        }
12269        if ("video" === t.nodeName.toLowerCase() && !t.getAttribute("data-src") && t.children) {
12270          for (var a = t.children, o = void 0, i = 0; i <= a.length - 1; i++) (o = a[i].getAttribute("data-src")) && (a[i].src = o);
12271          t.load();
12272        }
12273        t.getAttribute("data-poster") && (t.poster = t.getAttribute("data-poster")), t.getAttribute("data-src") && (t.src = t.getAttribute("data-src")), t.getAttribute("data-srcset") && t.setAttribute("srcset", t.getAttribute("data-srcset"));
12274        var n = ",";
12275        if (t.getAttribute("data-background-delimiter") && (n = t.getAttribute("data-background-delimiter")), t.getAttribute("data-background-image")) t.style.backgroundImage = "url('" + t.getAttribute("data-background-image").split(n).join("'),url('") + "')";else if (t.getAttribute("data-background-image-set")) {
12276          var d = t.getAttribute("data-background-image-set").split(n),
12277            u = d[0].substr(0, d[0].indexOf(" ")) || d[0]; // Substring before ... 1x
12278          u = -1 === u.indexOf("url(") ? "url(" + u + ")" : u, 1 === d.length ? t.style.backgroundImage = u : t.setAttribute("style", (t.getAttribute("style") || "") + "background-image: " + u + "; background-image: -webkit-image-set(" + d + "); background-image: image-set(" + d + ")");
12279        }
12280        t.getAttribute("data-toggle-class") && t.classList.toggle(t.getAttribute("data-toggle-class"));
12281      },
12282      loaded: function loaded() {}
12283    };
12284  function A(t) {
12285    t.setAttribute("data-loaded", !0);
12286  }
12287  var m = function m(t) {
12288      return "true" === t.getAttribute("data-loaded");
12289    },
12290    v = function v(t) {
12291      var e = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : document;
12292      return t instanceof Element ? [t] : t instanceof NodeList ? t : e.querySelectorAll(t);
12293    };
12294  return function () {
12295    var r,
12296      a,
12297      o = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : ".lozad",
12298      t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {},
12299      e = Object.assign({}, f, t),
12300      i = e.root,
12301      n = e.rootMargin,
12302      d = e.threshold,
12303      u = e.load,
12304      g = e.loaded,
12305      s = void 0;
12306    "undefined" != typeof window && window.IntersectionObserver && (s = new IntersectionObserver((r = u, a = g, function (t, e) {
12307      t.forEach(function (t) {
12308        (0 < t.intersectionRatio || t.isIntersecting) && (e.unobserve(t.target), m(t.target) || (r(t.target), A(t.target), a(t.target)));
12309      });
12310    }), {
12311      root: i,
12312      rootMargin: n,
12313      threshold: d
12314    }));
12315    for (var c, l = v(o, i), b = 0; b < l.length; b++) (c = l[b]).getAttribute("data-placeholder-background") && (c.style.background = c.getAttribute("data-placeholder-background"));
12316    return {
12317      observe: function observe() {
12318        for (var t = v(o, i), e = 0; e < t.length; e++) m(t[e]) || (s ? s.observe(t[e]) : (u(t[e]), A(t[e]), g(t[e])));
12319      },
12320      triggerLoad: function triggerLoad(t) {
12321        m(t) || (u(t), A(t), g(t));
12322      },
12323      observer: s
12324    };
12325  };
12326});
12327
12328/***/ }),
12329
vendor: 4,660 bytes, lines 12330-12488
12330/***/ "./node_modules/ssr-window/ssr-window.esm.js":
12331/*!***************************************************!*\
12332  !*** ./node_modules/ssr-window/ssr-window.esm.js ***!
12333  \***************************************************/
12334/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
12335
12336"use strict";
12337__webpack_require__.r(__webpack_exports__);
12338/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12339/* harmony export */   extend: function() { return /* binding */ extend; },
12340/* harmony export */   getDocument: function() { return /* binding */ getDocument; },
12341/* harmony export */   getWindow: function() { return /* binding */ getWindow; },
12342/* harmony export */   ssrDocument: function() { return /* binding */ ssrDocument; },
12343/* harmony export */   ssrWindow: function() { return /* binding */ ssrWindow; }
12344/* harmony export */ });
12345function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
12346/**
12347 * SSR Window 4.0.2
12348 * Better handling for window object in SSR environment
12349 * https://github.com/nolimits4web/ssr-window
12350 *
12351 * Copyright 2021, Vladimir Kharlampidi
12352 *
12353 * Licensed under MIT
12354 *
12355 * Released on: December 13, 2021
12356 */
12357/* eslint-disable no-param-reassign */
12358function isObject(obj) {
12359  return obj !== null && _typeof(obj) === 'object' && 'constructor' in obj && obj.constructor === Object;
12360}
12361function extend() {
12362  var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
12363  var src = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
12364  Object.keys(src).forEach(function (key) {
12365    if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {
12366      extend(target[key], src[key]);
12367    }
12368  });
12369}
12370var ssrDocument = {
12371  body: {},
12372  addEventListener: function addEventListener() {},
12373  removeEventListener: function removeEventListener() {},
12374  activeElement: {
12375    blur: function blur() {},
12376    nodeName: ''
12377  },
12378  querySelector: function querySelector() {
12379    return null;
12380  },
12381  querySelectorAll: function querySelectorAll() {
12382    return [];
12383  },
12384  getElementById: function getElementById() {
12385    return null;
12386  },
12387  createEvent: function createEvent() {
12388    return {
12389      initEvent: function initEvent() {}
12390    };
12391  },
12392  createElement: function createElement() {
12393    return {
12394      children: [],
12395      childNodes: [],
12396      style: {},
12397      setAttribute: function setAttribute() {},
12398      getElementsByTagName: function getElementsByTagName() {
12399        return [];
12400      }
12401    };
12402  },
12403  createElementNS: function createElementNS() {
12404    return {};
12405  },
12406  importNode: function importNode() {
12407    return null;
12408  },
12409  location: {
12410    hash: '',
12411    host: '',
12412    hostname: '',
12413    href: '',
12414    origin: '',
12415    pathname: '',
12416    protocol: '',
12417    search: ''
12418  }
12419};
12420function getDocument() {
12421  var doc = typeof document !== 'undefined' ? document : {};
12422  extend(doc, ssrDocument);
12423  return doc;
12424}
12425var ssrWindow = {
12426  document: ssrDocument,
12427  navigator: {
12428    userAgent: ''
12429  },
12430  location: {
12431    hash: '',
12432    host: '',
12433    hostname: '',
12434    href: '',
12435    origin: '',
12436    pathname: '',
12437    protocol: '',
12438    search: ''
12439  },
12440  history: {
12441    replaceState: function replaceState() {},
12442    pushState: function pushState() {},
12443    go: function go() {},
12444    back: function back() {}
12445  },
12446  CustomEvent: function CustomEvent() {
12447    return this;
12448  },
12449  addEventListener: function addEventListener() {},
12450  removeEventListener: function removeEventListener() {},
12451  getComputedStyle: function getComputedStyle() {
12452    return {
12453      getPropertyValue: function getPropertyValue() {
12454        return '';
12455      }
12456    };
12457  },
12458  Image: function Image() {},
12459  Date: function Date() {},
12460  screen: {},
12461  setTimeout: function setTimeout() {},
12462  clearTimeout: function clearTimeout() {},
12463  matchMedia: function matchMedia() {
12464    return {};
12465  },
12466  requestAnimationFrame: function requestAnimationFrame(callback) {
12467    if (typeof setTimeout === 'undefined') {
12468      callback();
12469      return null;
12470    }
12471    return setTimeout(callback, 0);
12472  },
12473  cancelAnimationFrame: function cancelAnimationFrame(id) {
12474    if (typeof setTimeout === 'undefined') {
12475      return;
12476    }
12477    clearTimeout(id);
12478  }
12479};
12480function getWindow() {
12481  var win = typeof window !== 'undefined' ? window : {};
12482  extend(win, ssrWindow);
12483  return win;
12484}
12485
12486
12487/***/ }),
12488
vendor: 2,088 bytes, lines 12489-12542
12489/***/ "./node_modules/swiper/core/breakpoints/getBreakpoint.js":
12490/*!***************************************************************!*\
12491  !*** ./node_modules/swiper/core/breakpoints/getBreakpoint.js ***!
12492  \***************************************************************/
12493/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
12494
12495"use strict";
12496__webpack_require__.r(__webpack_exports__);
12497/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12498/* harmony export */   "default": function() { return /* binding */ getBreakpoint; }
12499/* harmony export */ });
12500/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
12501
12502function getBreakpoint(breakpoints) {
12503  var base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'window';
12504  var containerEl = arguments.length > 2 ? arguments[2] : undefined;
12505  if (!breakpoints || base === 'container' && !containerEl) return undefined;
12506  var breakpoint = false;
12507  var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
12508  var currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;
12509  var points = Object.keys(breakpoints).map(function (point) {
12510    if (typeof point === 'string' && point.indexOf('@') === 0) {
12511      var minRatio = parseFloat(point.substr(1));
12512      var value = currentHeight * minRatio;
12513      return {
12514        value: value,
12515        point: point
12516      };
12517    }
12518    return {
12519      value: point,
12520      point: point
12521    };
12522  });
12523  points.sort(function (a, b) {
12524    return parseInt(a.value, 10) - parseInt(b.value, 10);
12525  });
12526  for (var i = 0; i < points.length; i += 1) {
12527    var _points$i = points[i],
12528      point = _points$i.point,
12529      value = _points$i.value;
12530    if (base === 'window') {
12531      if (window.matchMedia("(min-width: ".concat(value, "px)")).matches) {
12532        breakpoint = point;
12533      }
12534    } else if (value <= containerEl.clientWidth) {
12535      breakpoint = point;
12536    }
12537  }
12538  return breakpoint || 'max';
12539}
12540
12541/***/ }),
12542
vendor: 989 bytes, lines 12543-12561
12543/***/ "./node_modules/swiper/core/breakpoints/index.js":
12544/*!*******************************************************!*\
12545  !*** ./node_modules/swiper/core/breakpoints/index.js ***!
12546  \*******************************************************/
12547/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
12548
12549"use strict";
12550__webpack_require__.r(__webpack_exports__);
12551/* harmony import */ var _setBreakpoint_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setBreakpoint.js */ "./node_modules/swiper/core/breakpoints/setBreakpoint.js");
12552/* harmony import */ var _getBreakpoint_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getBreakpoint.js */ "./node_modules/swiper/core/breakpoints/getBreakpoint.js");
12553
12554
12555/* harmony default export */ __webpack_exports__["default"] = ({
12556  setBreakpoint: _setBreakpoint_js__WEBPACK_IMPORTED_MODULE_0__["default"],
12557  getBreakpoint: _getBreakpoint_js__WEBPACK_IMPORTED_MODULE_1__["default"]
12558});
12559
12560/***/ }),
12561
vendor: 3,951 bytes, lines 12562-12646
12562/***/ "./node_modules/swiper/core/breakpoints/setBreakpoint.js":
12563/*!***************************************************************!*\
12564  !*** ./node_modules/swiper/core/breakpoints/setBreakpoint.js ***!
12565  \***************************************************************/
12566/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
12567
12568"use strict";
12569__webpack_require__.r(__webpack_exports__);
12570/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12571/* harmony export */   "default": function() { return /* binding */ setBreakpoint; }
12572/* harmony export */ });
12573/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
12574
12575var isGridEnabled = function isGridEnabled(swiper, params) {
12576  return swiper.grid && params.grid && params.grid.rows > 1;
12577};
12578function setBreakpoint() {
12579  var swiper = this;
12580  var activeIndex = swiper.activeIndex,
12581    initialized = swiper.initialized,
12582    _swiper$loopedSlides = swiper.loopedSlides,
12583    loopedSlides = _swiper$loopedSlides === void 0 ? 0 : _swiper$loopedSlides,
12584    params = swiper.params,
12585    $el = swiper.$el;
12586  var breakpoints = params.breakpoints;
12587  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters
12588
12589  var breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);
12590  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;
12591  var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
12592  var breakpointParams = breakpointOnlyParams || swiper.originalParams;
12593  var wasMultiRow = isGridEnabled(swiper, params);
12594  var isMultiRow = isGridEnabled(swiper, breakpointParams);
12595  var wasEnabled = params.enabled;
12596  if (wasMultiRow && !isMultiRow) {
12597    $el.removeClass("".concat(params.containerModifierClass, "grid ").concat(params.containerModifierClass, "grid-column"));
12598    swiper.emitContainerClasses();
12599  } else if (!wasMultiRow && isMultiRow) {
12600    $el.addClass("".concat(params.containerModifierClass, "grid"));
12601    if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {
12602      $el.addClass("".concat(params.containerModifierClass, "grid-column"));
12603    }
12604    swiper.emitContainerClasses();
12605  } // Toggle navigation, pagination, scrollbar
12606
12607  ['navigation', 'pagination', 'scrollbar'].forEach(function (prop) {
12608    var wasModuleEnabled = params[prop] && params[prop].enabled;
12609    var isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;
12610    if (wasModuleEnabled && !isModuleEnabled) {
12611      swiper[prop].disable();
12612    }
12613    if (!wasModuleEnabled && isModuleEnabled) {
12614      swiper[prop].enable();
12615    }
12616  });
12617  var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
12618  var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
12619  if (directionChanged && initialized) {
12620    swiper.changeDirection();
12621  }
12622  (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.extend)(swiper.params, breakpointParams);
12623  var isEnabled = swiper.params.enabled;
12624  Object.assign(swiper, {
12625    allowTouchMove: swiper.params.allowTouchMove,
12626    allowSlideNext: swiper.params.allowSlideNext,
12627    allowSlidePrev: swiper.params.allowSlidePrev
12628  });
12629  if (wasEnabled && !isEnabled) {
12630    swiper.disable();
12631  } else if (!wasEnabled && isEnabled) {
12632    swiper.enable();
12633  }
12634  swiper.currentBreakpoint = breakpoint;
12635  swiper.emit('_beforeBreakpoint', breakpointParams);
12636  if (needsReLoop && initialized) {
12637    swiper.loopDestroy();
12638    swiper.loopCreate();
12639    swiper.updateSlides();
12640    swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);
12641  }
12642  swiper.emit('breakpoint', breakpointParams);
12643}
12644
12645/***/ }),
12646
vendor: 1,377 bytes, lines 12647-12685
12647/***/ "./node_modules/swiper/core/check-overflow/index.js":
12648/*!**********************************************************!*\
12649  !*** ./node_modules/swiper/core/check-overflow/index.js ***!
12650  \**********************************************************/
12651/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
12652
12653"use strict";
12654__webpack_require__.r(__webpack_exports__);
12655function checkOverflow() {
12656  var swiper = this;
12657  var wasLocked = swiper.isLocked,
12658    params = swiper.params;
12659  var slidesOffsetBefore = params.slidesOffsetBefore;
12660  if (slidesOffsetBefore) {
12661    var lastSlideIndex = swiper.slides.length - 1;
12662    var lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;
12663    swiper.isLocked = swiper.size > lastSlideRightEdge;
12664  } else {
12665    swiper.isLocked = swiper.snapGrid.length === 1;
12666  }
12667  if (params.allowSlideNext === true) {
12668    swiper.allowSlideNext = !swiper.isLocked;
12669  }
12670  if (params.allowSlidePrev === true) {
12671    swiper.allowSlidePrev = !swiper.isLocked;
12672  }
12673  if (wasLocked && wasLocked !== swiper.isLocked) {
12674    swiper.isEnd = false;
12675  }
12676  if (wasLocked !== swiper.isLocked) {
12677    swiper.emit(swiper.isLocked ? 'lock' : 'unlock');
12678  }
12679}
12680/* harmony default export */ __webpack_exports__["default"] = ({
12681  checkOverflow: checkOverflow
12682});
12683
12684/***/ }),
12685
vendor: 3,472 bytes, lines 12686-12757
12686/***/ "./node_modules/swiper/core/classes/addClasses.js":
12687/*!********************************************************!*\
12688  !*** ./node_modules/swiper/core/classes/addClasses.js ***!
12689  \********************************************************/
12690/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
12691
12692"use strict";
12693__webpack_require__.r(__webpack_exports__);
12694/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12695/* harmony export */   "default": function() { return /* binding */ addClasses; }
12696/* harmony export */ });
12697function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
12698function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
12699function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
12700function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
12701function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
12702function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
12703function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
12704function prepareClasses(entries, prefix) {
12705  var resultClasses = [];
12706  entries.forEach(function (item) {
12707    if (_typeof(item) === 'object') {
12708      Object.keys(item).forEach(function (classNames) {
12709        if (item[classNames]) {
12710          resultClasses.push(prefix + classNames);
12711        }
12712      });
12713    } else if (typeof item === 'string') {
12714      resultClasses.push(prefix + item);
12715    }
12716  });
12717  return resultClasses;
12718}
12719function addClasses() {
12720  var swiper = this;
12721  var classNames = swiper.classNames,
12722    params = swiper.params,
12723    rtl = swiper.rtl,
12724    $el = swiper.$el,
12725    device = swiper.device,
12726    support = swiper.support; // prettier-ignore
12727
12728  var suffixes = prepareClasses(['initialized', params.direction, {
12729    'pointer-events': !support.touch
12730  }, {
12731    'free-mode': swiper.params.freeMode && params.freeMode.enabled
12732  }, {
12733    'autoheight': params.autoHeight
12734  }, {
12735    'rtl': rtl
12736  }, {
12737    'grid': params.grid && params.grid.rows > 1
12738  }, {
12739    'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'
12740  }, {
12741    'android': device.android
12742  }, {
12743    'ios': device.ios
12744  }, {
12745    'css-mode': params.cssMode
12746  }, {
12747    'centered': params.cssMode && params.centeredSlides
12748  }, {
12749    'watch-progress': params.watchSlidesProgress
12750  }], params.containerModifierClass);
12751  classNames.push.apply(classNames, _toConsumableArray(suffixes));
12752  $el.addClass(_toConsumableArray(classNames).join(' '));
12753  swiper.emitContainerClasses();
12754}
12755
12756/***/ }),
12757
vendor: 950 bytes, lines 12758-12776
12758/***/ "./node_modules/swiper/core/classes/index.js":
12759/*!***************************************************!*\
12760  !*** ./node_modules/swiper/core/classes/index.js ***!
12761  \***************************************************/
12762/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
12763
12764"use strict";
12765__webpack_require__.r(__webpack_exports__);
12766/* harmony import */ var _addClasses_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./addClasses.js */ "./node_modules/swiper/core/classes/addClasses.js");
12767/* harmony import */ var _removeClasses_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./removeClasses.js */ "./node_modules/swiper/core/classes/removeClasses.js");
12768
12769
12770/* harmony default export */ __webpack_exports__["default"] = ({
12771  addClasses: _addClasses_js__WEBPACK_IMPORTED_MODULE_0__["default"],
12772  removeClasses: _removeClasses_js__WEBPACK_IMPORTED_MODULE_1__["default"]
12773});
12774
12775/***/ }),
12776
vendor: 783 bytes, lines 12777-12797
12777/***/ "./node_modules/swiper/core/classes/removeClasses.js":
12778/*!***********************************************************!*\
12779  !*** ./node_modules/swiper/core/classes/removeClasses.js ***!
12780  \***********************************************************/
12781/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
12782
12783"use strict";
12784__webpack_require__.r(__webpack_exports__);
12785/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12786/* harmony export */   "default": function() { return /* binding */ removeClasses; }
12787/* harmony export */ });
12788function removeClasses() {
12789  var swiper = this;
12790  var $el = swiper.$el,
12791    classNames = swiper.classNames;
12792  $el.removeClass(classNames.join(' '));
12793  swiper.emitContainerClasses();
12794}
12795
12796/***/ }),
12797
vendor: 27,391 bytes, lines 12798-13440
12798/***/ "./node_modules/swiper/core/core.js":
12799/*!******************************************!*\
12800  !*** ./node_modules/swiper/core/core.js ***!
12801  \******************************************/
12802/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
12803
12804"use strict";
12805__webpack_require__.r(__webpack_exports__);
12806/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
12807/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
12808/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
12809/* harmony import */ var _shared_get_support_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/get-support.js */ "./node_modules/swiper/shared/get-support.js");
12810/* harmony import */ var _shared_get_device_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/get-device.js */ "./node_modules/swiper/shared/get-device.js");
12811/* harmony import */ var _shared_get_browser_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../shared/get-browser.js */ "./node_modules/swiper/shared/get-browser.js");
12812/* harmony import */ var _modules_resize_resize_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modules/resize/resize.js */ "./node_modules/swiper/core/modules/resize/resize.js");
12813/* harmony import */ var _modules_observer_observer_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modules/observer/observer.js */ "./node_modules/swiper/core/modules/observer/observer.js");
12814/* harmony import */ var _events_emitter_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./events-emitter.js */ "./node_modules/swiper/core/events-emitter.js");
12815/* harmony import */ var _update_index_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./update/index.js */ "./node_modules/swiper/core/update/index.js");
12816/* harmony import */ var _translate_index_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./translate/index.js */ "./node_modules/swiper/core/translate/index.js");
12817/* harmony import */ var _transition_index_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./transition/index.js */ "./node_modules/swiper/core/transition/index.js");
12818/* harmony import */ var _slide_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./slide/index.js */ "./node_modules/swiper/core/slide/index.js");
12819/* harmony import */ var _loop_index_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./loop/index.js */ "./node_modules/swiper/core/loop/index.js");
12820/* harmony import */ var _grab_cursor_index_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./grab-cursor/index.js */ "./node_modules/swiper/core/grab-cursor/index.js");
12821/* harmony import */ var _events_index_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./events/index.js */ "./node_modules/swiper/core/events/index.js");
12822/* harmony import */ var _breakpoints_index_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./breakpoints/index.js */ "./node_modules/swiper/core/breakpoints/index.js");
12823/* harmony import */ var _classes_index_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./classes/index.js */ "./node_modules/swiper/core/classes/index.js");
12824/* harmony import */ var _images_index_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./images/index.js */ "./node_modules/swiper/core/images/index.js");
12825/* harmony import */ var _check_overflow_index_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./check-overflow/index.js */ "./node_modules/swiper/core/check-overflow/index.js");
12826/* harmony import */ var _defaults_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./defaults.js */ "./node_modules/swiper/core/defaults.js");
12827/* harmony import */ var _moduleExtendParams_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./moduleExtendParams.js */ "./node_modules/swiper/core/moduleExtendParams.js");
12828function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
12829function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
12830function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
12831function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
12832function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
12833function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
12834function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
12835function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
12836function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
12837function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
12838function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
12839function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
12840/* eslint no-param-reassign: "off" */
12841
12842
12843
12844
12845
12846
12847
12848
12849
12850
12851
12852
12853
12854
12855
12856
12857
12858
12859
12860
12861
12862
12863var prototypes = {
12864  eventsEmitter: _events_emitter_js__WEBPACK_IMPORTED_MODULE_8__["default"],
12865  update: _update_index_js__WEBPACK_IMPORTED_MODULE_9__["default"],
12866  translate: _translate_index_js__WEBPACK_IMPORTED_MODULE_10__["default"],
12867  transition: _transition_index_js__WEBPACK_IMPORTED_MODULE_11__["default"],
12868  slide: _slide_index_js__WEBPACK_IMPORTED_MODULE_12__["default"],
12869  loop: _loop_index_js__WEBPACK_IMPORTED_MODULE_13__["default"],
12870  grabCursor: _grab_cursor_index_js__WEBPACK_IMPORTED_MODULE_14__["default"],
12871  events: _events_index_js__WEBPACK_IMPORTED_MODULE_15__["default"],
12872  breakpoints: _breakpoints_index_js__WEBPACK_IMPORTED_MODULE_16__["default"],
12873  checkOverflow: _check_overflow_index_js__WEBPACK_IMPORTED_MODULE_19__["default"],
12874  classes: _classes_index_js__WEBPACK_IMPORTED_MODULE_17__["default"],
12875  images: _images_index_js__WEBPACK_IMPORTED_MODULE_18__["default"]
12876};
12877var extendedDefaults = {};
12878var Swiper = /*#__PURE__*/function () {
12879  function Swiper() {
12880    _classCallCheck(this, Swiper);
12881    var el;
12882    var params;
12883    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
12884      args[_key] = arguments[_key];
12885    }
12886    if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {
12887      params = args[0];
12888    } else {
12889      el = args[0];
12890      params = args[1];
12891    }
12892    if (!params) params = {};
12893    params = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.extend)({}, params);
12894    if (el && !params.el) params.el = el;
12895    if (params.el && (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.el).length > 1) {
12896      var swipers = [];
12897      (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.el).each(function (containerEl) {
12898        var newParams = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.extend)({}, params, {
12899          el: containerEl
12900        });
12901        swipers.push(new Swiper(newParams));
12902      }); // eslint-disable-next-line no-constructor-return
12903
12904      return swipers;
12905    } // Swiper Instance
12906
12907    var swiper = this;
12908    swiper.__swiper__ = true;
12909    swiper.support = (0,_shared_get_support_js__WEBPACK_IMPORTED_MODULE_3__.getSupport)();
12910    swiper.device = (0,_shared_get_device_js__WEBPACK_IMPORTED_MODULE_4__.getDevice)({
12911      userAgent: params.userAgent
12912    });
12913    swiper.browser = (0,_shared_get_browser_js__WEBPACK_IMPORTED_MODULE_5__.getBrowser)();
12914    swiper.eventsListeners = {};
12915    swiper.eventsAnyListeners = [];
12916    swiper.modules = _toConsumableArray(swiper.__modules__);
12917    if (params.modules && Array.isArray(params.modules)) {
12918      var _swiper$modules;
12919      (_swiper$modules = swiper.modules).push.apply(_swiper$modules, _toConsumableArray(params.modules));
12920    }
12921    var allModulesParams = {};
12922    swiper.modules.forEach(function (mod) {
12923      mod({
12924        swiper: swiper,
12925        extendParams: (0,_moduleExtendParams_js__WEBPACK_IMPORTED_MODULE_21__["default"])(params, allModulesParams),
12926        on: swiper.on.bind(swiper),
12927        once: swiper.once.bind(swiper),
12928        off: swiper.off.bind(swiper),
12929        emit: swiper.emit.bind(swiper)
12930      });
12931    }); // Extend defaults with modules params
12932
12933    var swiperParams = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.extend)({}, _defaults_js__WEBPACK_IMPORTED_MODULE_20__["default"], allModulesParams); // Extend defaults with passed params
12934
12935    swiper.params = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.extend)({}, swiperParams, extendedDefaults, params);
12936    swiper.originalParams = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.extend)({}, swiper.params);
12937    swiper.passedParams = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.extend)({}, params); // add event listeners
12938
12939    if (swiper.params && swiper.params.on) {
12940      Object.keys(swiper.params.on).forEach(function (eventName) {
12941        swiper.on(eventName, swiper.params.on[eventName]);
12942      });
12943    }
12944    if (swiper.params && swiper.params.onAny) {
12945      swiper.onAny(swiper.params.onAny);
12946    } // Save Dom lib
12947
12948    swiper.$ = _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"]; // Extend Swiper
12949
12950    Object.assign(swiper, {
12951      enabled: swiper.params.enabled,
12952      el: el,
12953      // Classes
12954      classNames: [],
12955      // Slides
12956      slides: (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(),
12957      slidesGrid: [],
12958      snapGrid: [],
12959      slidesSizesGrid: [],
12960      // isDirection
12961      isHorizontal: function isHorizontal() {
12962        return swiper.params.direction === 'horizontal';
12963      },
12964      isVertical: function isVertical() {
12965        return swiper.params.direction === 'vertical';
12966      },
12967      // Indexes
12968      activeIndex: 0,
12969      realIndex: 0,
12970      //
12971      isBeginning: true,
12972      isEnd: false,
12973      // Props
12974      translate: 0,
12975      previousTranslate: 0,
12976      progress: 0,
12977      velocity: 0,
12978      animating: false,
12979      // Locks
12980      allowSlideNext: swiper.params.allowSlideNext,
12981      allowSlidePrev: swiper.params.allowSlidePrev,
12982      // Touch Events
12983      touchEvents: function touchEvents() {
12984        var touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];
12985        var desktop = ['pointerdown', 'pointermove', 'pointerup'];
12986        swiper.touchEventsTouch = {
12987          start: touch[0],
12988          move: touch[1],
12989          end: touch[2],
12990          cancel: touch[3]
12991        };
12992        swiper.touchEventsDesktop = {
12993          start: desktop[0],
12994          move: desktop[1],
12995          end: desktop[2]
12996        };
12997        return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;
12998      }(),
12999      touchEventsData: {
13000        isTouched: undefined,
13001        isMoved: undefined,
13002        allowTouchCallbacks: undefined,
13003        touchStartTime: undefined,
13004        isScrolling: undefined,
13005        currentTranslate: undefined,
13006        startTranslate: undefined,
13007        allowThresholdMove: undefined,
13008        // Form elements to match
13009        focusableElements: swiper.params.focusableElements,
13010        // Last click time
13011        lastClickTime: (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.now)(),
13012        clickTimeout: undefined,
13013        // Velocities
13014        velocities: [],
13015        allowMomentumBounce: undefined,
13016        isTouchEvent: undefined,
13017        startMoving: undefined
13018      },
13019      // Clicks
13020      allowClick: true,
13021      // Touches
13022      allowTouchMove: swiper.params.allowTouchMove,
13023      touches: {
13024        startX: 0,
13025        startY: 0,
13026        currentX: 0,
13027        currentY: 0,
13028        diff: 0
13029      },
13030      // Images
13031      imagesToLoad: [],
13032      imagesLoaded: 0
13033    });
13034    swiper.emit('_swiper'); // Init
13035
13036    if (swiper.params.init) {
13037      swiper.init();
13038    } // Return app instance
13039    // eslint-disable-next-line no-constructor-return
13040
13041    return swiper;
13042  }
13043  return _createClass(Swiper, [{
13044    key: "enable",
13045    value: function enable() {
13046      var swiper = this;
13047      if (swiper.enabled) return;
13048      swiper.enabled = true;
13049      if (swiper.params.grabCursor) {
13050        swiper.setGrabCursor();
13051      }
13052      swiper.emit('enable');
13053    }
13054  }, {
13055    key: "disable",
13056    value: function disable() {
13057      var swiper = this;
13058      if (!swiper.enabled) return;
13059      swiper.enabled = false;
13060      if (swiper.params.grabCursor) {
13061        swiper.unsetGrabCursor();
13062      }
13063      swiper.emit('disable');
13064    }
13065  }, {
13066    key: "setProgress",
13067    value: function setProgress(progress, speed) {
13068      var swiper = this;
13069      progress = Math.min(Math.max(progress, 0), 1);
13070      var min = swiper.minTranslate();
13071      var max = swiper.maxTranslate();
13072      var current = (max - min) * progress + min;
13073      swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);
13074      swiper.updateActiveIndex();
13075      swiper.updateSlidesClasses();
13076    }
13077  }, {
13078    key: "emitContainerClasses",
13079    value: function emitContainerClasses() {
13080      var swiper = this;
13081      if (!swiper.params._emitClasses || !swiper.el) return;
13082      var cls = swiper.el.className.split(' ').filter(function (className) {
13083        return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;
13084      });
13085      swiper.emit('_containerClasses', cls.join(' '));
13086    }
13087  }, {
13088    key: "getSlideClasses",
13089    value: function getSlideClasses(slideEl) {
13090      var swiper = this;
13091      if (swiper.destroyed) return '';
13092      return slideEl.className.split(' ').filter(function (className) {
13093        return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;
13094      }).join(' ');
13095    }
13096  }, {
13097    key: "emitSlidesClasses",
13098    value: function emitSlidesClasses() {
13099      var swiper = this;
13100      if (!swiper.params._emitClasses || !swiper.el) return;
13101      var updates = [];
13102      swiper.slides.each(function (slideEl) {
13103        var classNames = swiper.getSlideClasses(slideEl);
13104        updates.push({
13105          slideEl: slideEl,
13106          classNames: classNames
13107        });
13108        swiper.emit('_slideClass', slideEl, classNames);
13109      });
13110      swiper.emit('_slideClasses', updates);
13111    }
13112  }, {
13113    key: "slidesPerViewDynamic",
13114    value: function slidesPerViewDynamic() {
13115      var view = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'current';
13116      var exact = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
13117      var swiper = this;
13118      var params = swiper.params,
13119        slides = swiper.slides,
13120        slidesGrid = swiper.slidesGrid,
13121        slidesSizesGrid = swiper.slidesSizesGrid,
13122        swiperSize = swiper.size,
13123        activeIndex = swiper.activeIndex;
13124      var spv = 1;
13125      if (params.centeredSlides) {
13126        var slideSize = slides[activeIndex].swiperSlideSize;
13127        var breakLoop;
13128        for (var i = activeIndex + 1; i < slides.length; i += 1) {
13129          if (slides[i] && !breakLoop) {
13130            slideSize += slides[i].swiperSlideSize;
13131            spv += 1;
13132            if (slideSize > swiperSize) breakLoop = true;
13133          }
13134        }
13135        for (var _i = activeIndex - 1; _i >= 0; _i -= 1) {
13136          if (slides[_i] && !breakLoop) {
13137            slideSize += slides[_i].swiperSlideSize;
13138            spv += 1;
13139            if (slideSize > swiperSize) breakLoop = true;
13140          }
13141        }
13142      } else {
13143        // eslint-disable-next-line
13144        if (view === 'current') {
13145          for (var _i2 = activeIndex + 1; _i2 < slides.length; _i2 += 1) {
13146            var slideInView = exact ? slidesGrid[_i2] + slidesSizesGrid[_i2] - slidesGrid[activeIndex] < swiperSize : slidesGrid[_i2] - slidesGrid[activeIndex] < swiperSize;
13147            if (slideInView) {
13148              spv += 1;
13149            }
13150          }
13151        } else {
13152          // previous
13153          for (var _i3 = activeIndex - 1; _i3 >= 0; _i3 -= 1) {
13154            var _slideInView = slidesGrid[activeIndex] - slidesGrid[_i3] < swiperSize;
13155            if (_slideInView) {
13156              spv += 1;
13157            }
13158          }
13159        }
13160      }
13161      return spv;
13162    }
13163  }, {
13164    key: "update",
13165    value: function update() {
13166      var swiper = this;
13167      if (!swiper || swiper.destroyed) return;
13168      var snapGrid = swiper.snapGrid,
13169        params = swiper.params; // Breakpoints
13170
13171      if (params.breakpoints) {
13172        swiper.setBreakpoint();
13173      }
13174      swiper.updateSize();
13175      swiper.updateSlides();
13176      swiper.updateProgress();
13177      swiper.updateSlidesClasses();
13178      function setTranslate() {
13179        var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
13180        var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
13181        swiper.setTranslate(newTranslate);
13182        swiper.updateActiveIndex();
13183        swiper.updateSlidesClasses();
13184      }
13185      var translated;
13186      if (swiper.params.freeMode && swiper.params.freeMode.enabled) {
13187        setTranslate();
13188        if (swiper.params.autoHeight) {
13189          swiper.updateAutoHeight();
13190        }
13191      } else {
13192        if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
13193          translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);
13194        } else {
13195          translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
13196        }
13197        if (!translated) {
13198          setTranslate();
13199        }
13200      }
13201      if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
13202        swiper.checkOverflow();
13203      }
13204      swiper.emit('update');
13205    }
13206  }, {
13207    key: "changeDirection",
13208    value: function changeDirection(newDirection) {
13209      var needUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
13210      var swiper = this;
13211      var currentDirection = swiper.params.direction;
13212      if (!newDirection) {
13213        // eslint-disable-next-line
13214        newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
13215      }
13216      if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {
13217        return swiper;
13218      }
13219      swiper.$el.removeClass("".concat(swiper.params.containerModifierClass).concat(currentDirection)).addClass("".concat(swiper.params.containerModifierClass).concat(newDirection));
13220      swiper.emitContainerClasses();
13221      swiper.params.direction = newDirection;
13222      swiper.slides.each(function (slideEl) {
13223        if (newDirection === 'vertical') {
13224          slideEl.style.width = '';
13225        } else {
13226          slideEl.style.height = '';
13227        }
13228      });
13229      swiper.emit('changeDirection');
13230      if (needUpdate) swiper.update();
13231      return swiper;
13232    }
13233  }, {
13234    key: "changeLanguageDirection",
13235    value: function changeLanguageDirection(direction) {
13236      var swiper = this;
13237      if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;
13238      swiper.rtl = direction === 'rtl';
13239      swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;
13240      if (swiper.rtl) {
13241        swiper.$el.addClass("".concat(swiper.params.containerModifierClass, "rtl"));
13242        swiper.el.dir = 'rtl';
13243      } else {
13244        swiper.$el.removeClass("".concat(swiper.params.containerModifierClass, "rtl"));
13245        swiper.el.dir = 'ltr';
13246      }
13247      swiper.update();
13248    }
13249  }, {
13250    key: "mount",
13251    value: function mount(el) {
13252      var swiper = this;
13253      if (swiper.mounted) return true; // Find el
13254
13255      var $el = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(el || swiper.params.el);
13256      el = $el[0];
13257      if (!el) {
13258        return false;
13259      }
13260      el.swiper = swiper;
13261      var getWrapperSelector = function getWrapperSelector() {
13262        return ".".concat((swiper.params.wrapperClass || '').trim().split(' ').join('.'));
13263      };
13264      var getWrapper = function getWrapper() {
13265        if (el && el.shadowRoot && el.shadowRoot.querySelector) {
13266          var res = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items
13267
13268          res.children = function (options) {
13269            return $el.children(options);
13270          };
13271          return res;
13272        }
13273        if (!$el.children) {
13274          return (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])($el).children(getWrapperSelector());
13275        }
13276        return $el.children(getWrapperSelector());
13277      }; // Find Wrapper
13278
13279      var $wrapperEl = getWrapper();
13280      if ($wrapperEl.length === 0 && swiper.params.createElements) {
13281        var document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
13282        var wrapper = document.createElement('div');
13283        $wrapperEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(wrapper);
13284        wrapper.className = swiper.params.wrapperClass;
13285        $el.append(wrapper);
13286        $el.children(".".concat(swiper.params.slideClass)).each(function (slideEl) {
13287          $wrapperEl.append(slideEl);
13288        });
13289      }
13290      Object.assign(swiper, {
13291        $el: $el,
13292        el: el,
13293        $wrapperEl: $wrapperEl,
13294        wrapperEl: $wrapperEl[0],
13295        mounted: true,
13296        // RTL
13297        rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',
13298        rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
13299        wrongRTL: $wrapperEl.css('display') === '-webkit-box'
13300      });
13301      return true;
13302    }
13303  }, {
13304    key: "init",
13305    value: function init(el) {
13306      var swiper = this;
13307      if (swiper.initialized) return swiper;
13308      var mounted = swiper.mount(el);
13309      if (mounted === false) return swiper;
13310      swiper.emit('beforeInit'); // Set breakpoint
13311
13312      if (swiper.params.breakpoints) {
13313        swiper.setBreakpoint();
13314      } // Add Classes
13315
13316      swiper.addClasses(); // Create loop
13317
13318      if (swiper.params.loop) {
13319        swiper.loopCreate();
13320      } // Update size
13321
13322      swiper.updateSize(); // Update slides
13323
13324      swiper.updateSlides();
13325      if (swiper.params.watchOverflow) {
13326        swiper.checkOverflow();
13327      } // Set Grab Cursor
13328
13329      if (swiper.params.grabCursor && swiper.enabled) {
13330        swiper.setGrabCursor();
13331      }
13332      if (swiper.params.preloadImages) {
13333        swiper.preloadImages();
13334      } // Slide To Initial Slide
13335
13336      if (swiper.params.loop) {
13337        swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);
13338      } else {
13339        swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);
13340      } // Attach events
13341
13342      swiper.attachEvents(); // Init Flag
13343
13344      swiper.initialized = true; // Emit
13345
13346      swiper.emit('init');
13347      swiper.emit('afterInit');
13348      return swiper;
13349    }
13350  }, {
13351    key: "destroy",
13352    value: function destroy() {
13353      var deleteInstance = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
13354      var cleanStyles = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
13355      var swiper = this;
13356      var params = swiper.params,
13357        $el = swiper.$el,
13358        $wrapperEl = swiper.$wrapperEl,
13359        slides = swiper.slides;
13360      if (typeof swiper.params === 'undefined' || swiper.destroyed) {
13361        return null;
13362      }
13363      swiper.emit('beforeDestroy'); // Init Flag
13364
13365      swiper.initialized = false; // Detach events
13366
13367      swiper.detachEvents(); // Destroy loop
13368
13369      if (params.loop) {
13370        swiper.loopDestroy();
13371      } // Cleanup styles
13372
13373      if (cleanStyles) {
13374        swiper.removeClasses();
13375        $el.removeAttr('style');
13376        $wrapperEl.removeAttr('style');
13377        if (slides && slides.length) {
13378          slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');
13379        }
13380      }
13381      swiper.emit('destroy'); // Detach emitter events
13382
13383      Object.keys(swiper.eventsListeners).forEach(function (eventName) {
13384        swiper.off(eventName);
13385      });
13386      if (deleteInstance !== false) {
13387        swiper.$el[0].swiper = null;
13388        (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.deleteProps)(swiper);
13389      }
13390      swiper.destroyed = true;
13391      return null;
13392    }
13393  }], [{
13394    key: "extendDefaults",
13395    value: function extendDefaults(newDefaults) {
13396      (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.extend)(extendedDefaults, newDefaults);
13397    }
13398  }, {
13399    key: "extendedDefaults",
13400    get: function get() {
13401      return extendedDefaults;
13402    }
13403  }, {
13404    key: "defaults",
13405    get: function get() {
13406      return _defaults_js__WEBPACK_IMPORTED_MODULE_20__["default"];
13407    }
13408  }, {
13409    key: "installModule",
13410    value: function installModule(mod) {
13411      if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];
13412      var modules = Swiper.prototype.__modules__;
13413      if (typeof mod === 'function' && modules.indexOf(mod) < 0) {
13414        modules.push(mod);
13415      }
13416    }
13417  }, {
13418    key: "use",
13419    value: function use(module) {
13420      if (Array.isArray(module)) {
13421        module.forEach(function (m) {
13422          return Swiper.installModule(m);
13423        });
13424        return Swiper;
13425      }
13426      Swiper.installModule(module);
13427      return Swiper;
13428    }
13429  }]);
13430}();
13431Object.keys(prototypes).forEach(function (prototypeGroup) {
13432  Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {
13433    Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
13434  });
13435});
13436Swiper.use([_modules_resize_resize_js__WEBPACK_IMPORTED_MODULE_6__["default"], _modules_observer_observer_js__WEBPACK_IMPORTED_MODULE_7__["default"]]);
13437/* harmony default export */ __webpack_exports__["default"] = (Swiper);
13438
13439/***/ }),
13440
vendor: 3,599 bytes, lines 13441-13575
13441/***/ "./node_modules/swiper/core/defaults.js":
13442/*!**********************************************!*\
13443  !*** ./node_modules/swiper/core/defaults.js ***!
13444  \**********************************************/
13445/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
13446
13447"use strict";
13448__webpack_require__.r(__webpack_exports__);
13449/* harmony default export */ __webpack_exports__["default"] = ({
13450  init: true,
13451  direction: 'horizontal',
13452  touchEventsTarget: 'wrapper',
13453  initialSlide: 0,
13454  speed: 300,
13455  cssMode: false,
13456  updateOnWindowResize: true,
13457  resizeObserver: true,
13458  nested: false,
13459  createElements: false,
13460  enabled: true,
13461  focusableElements: 'input, select, option, textarea, button, video, label',
13462  // Overrides
13463  width: null,
13464  height: null,
13465  //
13466  preventInteractionOnTransition: false,
13467  // ssr
13468  userAgent: null,
13469  url: null,
13470  // To support iOS's swipe-to-go-back gesture (when being used in-app).
13471  edgeSwipeDetection: false,
13472  edgeSwipeThreshold: 20,
13473  // Autoheight
13474  autoHeight: false,
13475  // Set wrapper width
13476  setWrapperSize: false,
13477  // Virtual Translate
13478  virtualTranslate: false,
13479  // Effects
13480  effect: 'slide',
13481  // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
13482  // Breakpoints
13483  breakpoints: undefined,
13484  breakpointsBase: 'window',
13485  // Slides grid
13486  spaceBetween: 0,
13487  slidesPerView: 1,
13488  slidesPerGroup: 1,
13489  slidesPerGroupSkip: 0,
13490  slidesPerGroupAuto: false,
13491  centeredSlides: false,
13492  centeredSlidesBounds: false,
13493  slidesOffsetBefore: 0,
13494  // in px
13495  slidesOffsetAfter: 0,
13496  // in px
13497  normalizeSlideIndex: true,
13498  centerInsufficientSlides: false,
13499  // Disable swiper and hide navigation when container not overflow
13500  watchOverflow: true,
13501  // Round length
13502  roundLengths: false,
13503  // Touches
13504  touchRatio: 1,
13505  touchAngle: 45,
13506  simulateTouch: true,
13507  shortSwipes: true,
13508  longSwipes: true,
13509  longSwipesRatio: 0.5,
13510  longSwipesMs: 300,
13511  followFinger: true,
13512  allowTouchMove: true,
13513  threshold: 0,
13514  touchMoveStopPropagation: false,
13515  touchStartPreventDefault: true,
13516  touchStartForcePreventDefault: false,
13517  touchReleaseOnEdges: false,
13518  // Unique Navigation Elements
13519  uniqueNavElements: true,
13520  // Resistance
13521  resistance: true,
13522  resistanceRatio: 0.85,
13523  // Progress
13524  watchSlidesProgress: false,
13525  // Cursor
13526  grabCursor: false,
13527  // Clicks
13528  preventClicks: true,
13529  preventClicksPropagation: true,
13530  slideToClickedSlide: false,
13531  // Images
13532  preloadImages: true,
13533  updateOnImagesReady: true,
13534  // loop
13535  loop: false,
13536  loopAdditionalSlides: 0,
13537  loopedSlides: null,
13538  loopedSlidesLimit: true,
13539  loopFillGroupWithBlank: false,
13540  loopPreventsSlide: true,
13541  // rewind
13542  rewind: false,
13543  // Swiping/no swiping
13544  allowSlidePrev: true,
13545  allowSlideNext: true,
13546  swipeHandler: null,
13547  // '.swipe-handler',
13548  noSwiping: true,
13549  noSwipingClass: 'swiper-no-swiping',
13550  noSwipingSelector: null,
13551  // Passive Listeners
13552  passiveListeners: true,
13553  maxBackfaceHiddenSlides: 10,
13554  // NS
13555  containerModifierClass: 'swiper-',
13556  // NEW
13557  slideClass: 'swiper-slide',
13558  slideBlankClass: 'swiper-slide-invisible-blank',
13559  slideActiveClass: 'swiper-slide-active',
13560  slideDuplicateActiveClass: 'swiper-slide-duplicate-active',
13561  slideVisibleClass: 'swiper-slide-visible',
13562  slideDuplicateClass: 'swiper-slide-duplicate',
13563  slideNextClass: 'swiper-slide-next',
13564  slideDuplicateNextClass: 'swiper-slide-duplicate-next',
13565  slidePrevClass: 'swiper-slide-prev',
13566  slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',
13567  wrapperClass: 'swiper-wrapper',
13568  // Callbacks
13569  runCallbacksOnInit: true,
13570  // Internals
13571  _emitClasses: false
13572});
13573
13574/***/ }),
13575
vendor: 5,232 bytes, lines 13576-13695
13576/***/ "./node_modules/swiper/core/events-emitter.js":
13577/*!****************************************************!*\
13578  !*** ./node_modules/swiper/core/events-emitter.js ***!
13579  \****************************************************/
13580/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
13581
13582"use strict";
13583__webpack_require__.r(__webpack_exports__);
13584function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
13585function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
13586function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
13587function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
13588function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
13589function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
13590/* eslint-disable no-underscore-dangle */
13591/* harmony default export */ __webpack_exports__["default"] = ({
13592  on: function on(events, handler, priority) {
13593    var self = this;
13594    if (!self.eventsListeners || self.destroyed) return self;
13595    if (typeof handler !== 'function') return self;
13596    var method = priority ? 'unshift' : 'push';
13597    events.split(' ').forEach(function (event) {
13598      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];
13599      self.eventsListeners[event][method](handler);
13600    });
13601    return self;
13602  },
13603  once: function once(events, handler, priority) {
13604    var self = this;
13605    if (!self.eventsListeners || self.destroyed) return self;
13606    if (typeof handler !== 'function') return self;
13607    function onceHandler() {
13608      self.off(events, onceHandler);
13609      if (onceHandler.__emitterProxy) {
13610        delete onceHandler.__emitterProxy;
13611      }
13612      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
13613        args[_key] = arguments[_key];
13614      }
13615      handler.apply(self, args);
13616    }
13617    onceHandler.__emitterProxy = handler;
13618    return self.on(events, onceHandler, priority);
13619  },
13620  onAny: function onAny(handler, priority) {
13621    var self = this;
13622    if (!self.eventsListeners || self.destroyed) return self;
13623    if (typeof handler !== 'function') return self;
13624    var method = priority ? 'unshift' : 'push';
13625    if (self.eventsAnyListeners.indexOf(handler) < 0) {
13626      self.eventsAnyListeners[method](handler);
13627    }
13628    return self;
13629  },
13630  offAny: function offAny(handler) {
13631    var self = this;
13632    if (!self.eventsListeners || self.destroyed) return self;
13633    if (!self.eventsAnyListeners) return self;
13634    var index = self.eventsAnyListeners.indexOf(handler);
13635    if (index >= 0) {
13636      self.eventsAnyListeners.splice(index, 1);
13637    }
13638    return self;
13639  },
13640  off: function off(events, handler) {
13641    var self = this;
13642    if (!self.eventsListeners || self.destroyed) return self;
13643    if (!self.eventsListeners) return self;
13644    events.split(' ').forEach(function (event) {
13645      if (typeof handler === 'undefined') {
13646        self.eventsListeners[event] = [];
13647      } else if (self.eventsListeners[event]) {
13648        self.eventsListeners[event].forEach(function (eventHandler, index) {
13649          if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {
13650            self.eventsListeners[event].splice(index, 1);
13651          }
13652        });
13653      }
13654    });
13655    return self;
13656  },
13657  emit: function emit() {
13658    var self = this;
13659    if (!self.eventsListeners || self.destroyed) return self;
13660    if (!self.eventsListeners) return self;
13661    var events;
13662    var data;
13663    var context;
13664    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
13665      args[_key2] = arguments[_key2];
13666    }
13667    if (typeof args[0] === 'string' || Array.isArray(args[0])) {
13668      events = args[0];
13669      data = args.slice(1, args.length);
13670      context = self;
13671    } else {
13672      events = args[0].events;
13673      data = args[0].data;
13674      context = args[0].context || self;
13675    }
13676    data.unshift(context);
13677    var eventsArray = Array.isArray(events) ? events : events.split(' ');
13678    eventsArray.forEach(function (event) {
13679      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {
13680        self.eventsAnyListeners.forEach(function (eventHandler) {
13681          eventHandler.apply(context, [event].concat(_toConsumableArray(data)));
13682        });
13683      }
13684      if (self.eventsListeners && self.eventsListeners[event]) {
13685        self.eventsListeners[event].forEach(function (eventHandler) {
13686          eventHandler.apply(context, data);
13687        });
13688      }
13689    });
13690    return self;
13691  }
13692});
13693
13694/***/ }),
13695
vendor: 4,514 bytes, lines 13696-13793
13696/***/ "./node_modules/swiper/core/events/index.js":
13697/*!**************************************************!*\
13698  !*** ./node_modules/swiper/core/events/index.js ***!
13699  \**************************************************/
13700/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
13701
13702"use strict";
13703__webpack_require__.r(__webpack_exports__);
13704/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
13705/* harmony import */ var _onTouchStart_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./onTouchStart.js */ "./node_modules/swiper/core/events/onTouchStart.js");
13706/* harmony import */ var _onTouchMove_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./onTouchMove.js */ "./node_modules/swiper/core/events/onTouchMove.js");
13707/* harmony import */ var _onTouchEnd_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./onTouchEnd.js */ "./node_modules/swiper/core/events/onTouchEnd.js");
13708/* harmony import */ var _onResize_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./onResize.js */ "./node_modules/swiper/core/events/onResize.js");
13709/* harmony import */ var _onClick_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./onClick.js */ "./node_modules/swiper/core/events/onClick.js");
13710/* harmony import */ var _onScroll_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./onScroll.js */ "./node_modules/swiper/core/events/onScroll.js");
13711
13712
13713
13714
13715
13716
13717
13718var dummyEventAttached = false;
13719function dummyEventListener() {}
13720var events = function events(swiper, method) {
13721  var document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
13722  var params = swiper.params,
13723    touchEvents = swiper.touchEvents,
13724    el = swiper.el,
13725    wrapperEl = swiper.wrapperEl,
13726    device = swiper.device,
13727    support = swiper.support;
13728  var capture = !!params.nested;
13729  var domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';
13730  var swiperMethod = method; // Touch Events
13731
13732  if (!support.touch) {
13733    el[domMethod](touchEvents.start, swiper.onTouchStart, false);
13734    document[domMethod](touchEvents.move, swiper.onTouchMove, capture);
13735    document[domMethod](touchEvents.end, swiper.onTouchEnd, false);
13736  } else {
13737    var passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {
13738      passive: true,
13739      capture: false
13740    } : false;
13741    el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);
13742    el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {
13743      passive: false,
13744      capture: capture
13745    } : capture);
13746    el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);
13747    if (touchEvents.cancel) {
13748      el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);
13749    }
13750  } // Prevent Links Clicks
13751
13752  if (params.preventClicks || params.preventClicksPropagation) {
13753    el[domMethod]('click', swiper.onClick, true);
13754  }
13755  if (params.cssMode) {
13756    wrapperEl[domMethod]('scroll', swiper.onScroll);
13757  } // Resize handler
13758
13759  if (params.updateOnWindowResize) {
13760    swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', _onResize_js__WEBPACK_IMPORTED_MODULE_4__["default"], true);
13761  } else {
13762    swiper[swiperMethod]('observerUpdate', _onResize_js__WEBPACK_IMPORTED_MODULE_4__["default"], true);
13763  }
13764};
13765function attachEvents() {
13766  var swiper = this;
13767  var document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
13768  var params = swiper.params,
13769    support = swiper.support;
13770  swiper.onTouchStart = _onTouchStart_js__WEBPACK_IMPORTED_MODULE_1__["default"].bind(swiper);
13771  swiper.onTouchMove = _onTouchMove_js__WEBPACK_IMPORTED_MODULE_2__["default"].bind(swiper);
13772  swiper.onTouchEnd = _onTouchEnd_js__WEBPACK_IMPORTED_MODULE_3__["default"].bind(swiper);
13773  if (params.cssMode) {
13774    swiper.onScroll = _onScroll_js__WEBPACK_IMPORTED_MODULE_6__["default"].bind(swiper);
13775  }
13776  swiper.onClick = _onClick_js__WEBPACK_IMPORTED_MODULE_5__["default"].bind(swiper);
13777  if (support.touch && !dummyEventAttached) {
13778    document.addEventListener('touchstart', dummyEventListener);
13779    dummyEventAttached = true;
13780  }
13781  events(swiper, 'on');
13782}
13783function detachEvents() {
13784  var swiper = this;
13785  events(swiper, 'off');
13786}
13787/* harmony default export */ __webpack_exports__["default"] = ({
13788  attachEvents: attachEvents,
13789  detachEvents: detachEvents
13790});
13791
13792/***/ }),
13793
vendor: 869 bytes, lines 13794-13818
13794/***/ "./node_modules/swiper/core/events/onClick.js":
13795/*!****************************************************!*\
13796  !*** ./node_modules/swiper/core/events/onClick.js ***!
13797  \****************************************************/
13798/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
13799
13800"use strict";
13801__webpack_require__.r(__webpack_exports__);
13802/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13803/* harmony export */   "default": function() { return /* binding */ onClick; }
13804/* harmony export */ });
13805function onClick(e) {
13806  var swiper = this;
13807  if (!swiper.enabled) return;
13808  if (!swiper.allowClick) {
13809    if (swiper.params.preventClicks) e.preventDefault();
13810    if (swiper.params.preventClicksPropagation && swiper.animating) {
13811      e.stopPropagation();
13812      e.stopImmediatePropagation();
13813    }
13814  }
13815}
13816
13817/***/ }),
13818
vendor: 1,692 bytes, lines 13819-13866
13819/***/ "./node_modules/swiper/core/events/onResize.js":
13820/*!*****************************************************!*\
13821  !*** ./node_modules/swiper/core/events/onResize.js ***!
13822  \*****************************************************/
13823/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
13824
13825"use strict";
13826__webpack_require__.r(__webpack_exports__);
13827/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13828/* harmony export */   "default": function() { return /* binding */ onResize; }
13829/* harmony export */ });
13830function onResize() {
13831  var swiper = this;
13832  var params = swiper.params,
13833    el = swiper.el;
13834  if (el && el.offsetWidth === 0) return; // Breakpoints
13835
13836  if (params.breakpoints) {
13837    swiper.setBreakpoint();
13838  } // Save locks
13839
13840  var allowSlideNext = swiper.allowSlideNext,
13841    allowSlidePrev = swiper.allowSlidePrev,
13842    snapGrid = swiper.snapGrid; // Disable locks on resize
13843
13844  swiper.allowSlideNext = true;
13845  swiper.allowSlidePrev = true;
13846  swiper.updateSize();
13847  swiper.updateSlides();
13848  swiper.updateSlidesClasses();
13849  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {
13850    swiper.slideTo(swiper.slides.length - 1, 0, false, true);
13851  } else {
13852    swiper.slideTo(swiper.activeIndex, 0, false, true);
13853  }
13854  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
13855    swiper.autoplay.run();
13856  } // Return locks after resize
13857
13858  swiper.allowSlidePrev = allowSlidePrev;
13859  swiper.allowSlideNext = allowSlideNext;
13860  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
13861    swiper.checkOverflow();
13862  }
13863}
13864
13865/***/ }),
13866
vendor: 1,487 bytes, lines 13867-13908
13867/***/ "./node_modules/swiper/core/events/onScroll.js":
13868/*!*****************************************************!*\
13869  !*** ./node_modules/swiper/core/events/onScroll.js ***!
13870  \*****************************************************/
13871/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
13872
13873"use strict";
13874__webpack_require__.r(__webpack_exports__);
13875/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13876/* harmony export */   "default": function() { return /* binding */ onScroll; }
13877/* harmony export */ });
13878function onScroll() {
13879  var swiper = this;
13880  var wrapperEl = swiper.wrapperEl,
13881    rtlTranslate = swiper.rtlTranslate,
13882    enabled = swiper.enabled;
13883  if (!enabled) return;
13884  swiper.previousTranslate = swiper.translate;
13885  if (swiper.isHorizontal()) {
13886    swiper.translate = -wrapperEl.scrollLeft;
13887  } else {
13888    swiper.translate = -wrapperEl.scrollTop;
13889  } // eslint-disable-next-line
13890
13891  if (swiper.translate === 0) swiper.translate = 0;
13892  swiper.updateActiveIndex();
13893  swiper.updateSlidesClasses();
13894  var newProgress;
13895  var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
13896  if (translatesDiff === 0) {
13897    newProgress = 0;
13898  } else {
13899    newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;
13900  }
13901  if (newProgress !== swiper.progress) {
13902    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);
13903  }
13904  swiper.emit('setTranslate', swiper.translate, false);
13905}
13906
13907/***/ }),
13908
vendor: 5,572 bytes, lines 13909-14057
13909/***/ "./node_modules/swiper/core/events/onTouchEnd.js":
13910/*!*******************************************************!*\
13911  !*** ./node_modules/swiper/core/events/onTouchEnd.js ***!
13912  \*******************************************************/
13913/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
13914
13915"use strict";
13916__webpack_require__.r(__webpack_exports__);
13917/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13918/* harmony export */   "default": function() { return /* binding */ onTouchEnd; }
13919/* harmony export */ });
13920/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
13921
13922function onTouchEnd(event) {
13923  var swiper = this;
13924  var data = swiper.touchEventsData;
13925  var params = swiper.params,
13926    touches = swiper.touches,
13927    rtl = swiper.rtlTranslate,
13928    slidesGrid = swiper.slidesGrid,
13929    enabled = swiper.enabled;
13930  if (!enabled) return;
13931  var e = event;
13932  if (e.originalEvent) e = e.originalEvent;
13933  if (data.allowTouchCallbacks) {
13934    swiper.emit('touchEnd', e);
13935  }
13936  data.allowTouchCallbacks = false;
13937  if (!data.isTouched) {
13938    if (data.isMoved && params.grabCursor) {
13939      swiper.setGrabCursor(false);
13940    }
13941    data.isMoved = false;
13942    data.startMoving = false;
13943    return;
13944  } // Return Grab Cursor
13945
13946  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
13947    swiper.setGrabCursor(false);
13948  } // Time diff
13949
13950  var touchEndTime = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.now)();
13951  var timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click
13952
13953  if (swiper.allowClick) {
13954    var pathTree = e.path || e.composedPath && e.composedPath();
13955    swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);
13956    swiper.emit('tap click', e);
13957    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {
13958      swiper.emit('doubleTap doubleClick', e);
13959    }
13960  }
13961  data.lastClickTime = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.now)();
13962  (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.nextTick)(function () {
13963    if (!swiper.destroyed) swiper.allowClick = true;
13964  });
13965  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {
13966    data.isTouched = false;
13967    data.isMoved = false;
13968    data.startMoving = false;
13969    return;
13970  }
13971  data.isTouched = false;
13972  data.isMoved = false;
13973  data.startMoving = false;
13974  var currentPos;
13975  if (params.followFinger) {
13976    currentPos = rtl ? swiper.translate : -swiper.translate;
13977  } else {
13978    currentPos = -data.currentTranslate;
13979  }
13980  if (params.cssMode) {
13981    return;
13982  }
13983  if (swiper.params.freeMode && params.freeMode.enabled) {
13984    swiper.freeMode.onTouchEnd({
13985      currentPos: currentPos
13986    });
13987    return;
13988  } // Find current slide
13989
13990  var stopIndex = 0;
13991  var groupSize = swiper.slidesSizesGrid[0];
13992  for (var i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {
13993    var _increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
13994    if (typeof slidesGrid[i + _increment] !== 'undefined') {
13995      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + _increment]) {
13996        stopIndex = i;
13997        groupSize = slidesGrid[i + _increment] - slidesGrid[i];
13998      }
13999    } else if (currentPos >= slidesGrid[i]) {
14000      stopIndex = i;
14001      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
14002    }
14003  }
14004  var rewindFirstIndex = null;
14005  var rewindLastIndex = null;
14006  if (params.rewind) {
14007    if (swiper.isBeginning) {
14008      rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;
14009    } else if (swiper.isEnd) {
14010      rewindFirstIndex = 0;
14011    }
14012  } // Find current slide size
14013
14014  var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
14015  var increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
14016  if (timeDiff > params.longSwipesMs) {
14017    // Long touches
14018    if (!params.longSwipes) {
14019      swiper.slideTo(swiper.activeIndex);
14020      return;
14021    }
14022    if (swiper.swipeDirection === 'next') {
14023      if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);
14024    }
14025    if (swiper.swipeDirection === 'prev') {
14026      if (ratio > 1 - params.longSwipesRatio) {
14027        swiper.slideTo(stopIndex + increment);
14028      } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {
14029        swiper.slideTo(rewindLastIndex);
14030      } else {
14031        swiper.slideTo(stopIndex);
14032      }
14033    }
14034  } else {
14035    // Short swipes
14036    if (!params.shortSwipes) {
14037      swiper.slideTo(swiper.activeIndex);
14038      return;
14039    }
14040    var isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);
14041    if (!isNavButtonTarget) {
14042      if (swiper.swipeDirection === 'next') {
14043        swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);
14044      }
14045      if (swiper.swipeDirection === 'prev') {
14046        swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);
14047      }
14048    } else if (e.target === swiper.navigation.nextEl) {
14049      swiper.slideTo(stopIndex + increment);
14050    } else {
14051      swiper.slideTo(stopIndex);
14052    }
14053  }
14054}
14055
14056/***/ }),
14057
vendor: 7,857 bytes, lines 14058-14259
14058/***/ "./node_modules/swiper/core/events/onTouchMove.js":
14059/*!********************************************************!*\
14060  !*** ./node_modules/swiper/core/events/onTouchMove.js ***!
14061  \********************************************************/
14062/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14063
14064"use strict";
14065__webpack_require__.r(__webpack_exports__);
14066/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14067/* harmony export */   "default": function() { return /* binding */ onTouchMove; }
14068/* harmony export */ });
14069/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
14070/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
14071/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
14072
14073
14074
14075function onTouchMove(event) {
14076  var document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
14077  var swiper = this;
14078  var data = swiper.touchEventsData;
14079  var params = swiper.params,
14080    touches = swiper.touches,
14081    rtl = swiper.rtlTranslate,
14082    enabled = swiper.enabled;
14083  if (!enabled) return;
14084  var e = event;
14085  if (e.originalEvent) e = e.originalEvent;
14086  if (!data.isTouched) {
14087    if (data.startMoving && data.isScrolling) {
14088      swiper.emit('touchMoveOpposite', e);
14089    }
14090    return;
14091  }
14092  if (data.isTouchEvent && e.type !== 'touchmove') return;
14093  var targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);
14094  var pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;
14095  var pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;
14096  if (e.preventedByNestedSwiper) {
14097    touches.startX = pageX;
14098    touches.startY = pageY;
14099    return;
14100  }
14101  if (!swiper.allowTouchMove) {
14102    if (!(0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target).is(data.focusableElements)) {
14103      swiper.allowClick = false;
14104    }
14105    if (data.isTouched) {
14106      Object.assign(touches, {
14107        startX: pageX,
14108        startY: pageY,
14109        currentX: pageX,
14110        currentY: pageY
14111      });
14112      data.touchStartTime = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.now)();
14113    }
14114    return;
14115  }
14116  if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {
14117    if (swiper.isVertical()) {
14118      // Vertical
14119      if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {
14120        data.isTouched = false;
14121        data.isMoved = false;
14122        return;
14123      }
14124    } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {
14125      return;
14126    }
14127  }
14128  if (data.isTouchEvent && document.activeElement) {
14129    if (e.target === document.activeElement && (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target).is(data.focusableElements)) {
14130      data.isMoved = true;
14131      swiper.allowClick = false;
14132      return;
14133    }
14134  }
14135  if (data.allowTouchCallbacks) {
14136    swiper.emit('touchMove', e);
14137  }
14138  if (e.targetTouches && e.targetTouches.length > 1) return;
14139  touches.currentX = pageX;
14140  touches.currentY = pageY;
14141  var diffX = touches.currentX - touches.startX;
14142  var diffY = touches.currentY - touches.startY;
14143  if (swiper.params.threshold && Math.sqrt(Math.pow(diffX, 2) + Math.pow(diffY, 2)) < swiper.params.threshold) return;
14144  if (typeof data.isScrolling === 'undefined') {
14145    var touchAngle;
14146    if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {
14147      data.isScrolling = false;
14148    } else {
14149      // eslint-disable-next-line
14150      if (diffX * diffX + diffY * diffY >= 25) {
14151        touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;
14152        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;
14153      }
14154    }
14155  }
14156  if (data.isScrolling) {
14157    swiper.emit('touchMoveOpposite', e);
14158  }
14159  if (typeof data.startMoving === 'undefined') {
14160    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
14161      data.startMoving = true;
14162    }
14163  }
14164  if (data.isScrolling) {
14165    data.isTouched = false;
14166    return;
14167  }
14168  if (!data.startMoving) {
14169    return;
14170  }
14171  swiper.allowClick = false;
14172  if (!params.cssMode && e.cancelable) {
14173    e.preventDefault();
14174  }
14175  if (params.touchMoveStopPropagation && !params.nested) {
14176    e.stopPropagation();
14177  }
14178  if (!data.isMoved) {
14179    if (params.loop && !params.cssMode) {
14180      swiper.loopFix();
14181    }
14182    data.startTranslate = swiper.getTranslate();
14183    swiper.setTransition(0);
14184    if (swiper.animating) {
14185      swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');
14186    }
14187    data.allowMomentumBounce = false; // Grab Cursor
14188
14189    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
14190      swiper.setGrabCursor(true);
14191    }
14192    swiper.emit('sliderFirstMove', e);
14193  }
14194  swiper.emit('sliderMove', e);
14195  data.isMoved = true;
14196  var diff = swiper.isHorizontal() ? diffX : diffY;
14197  touches.diff = diff;
14198  diff *= params.touchRatio;
14199  if (rtl) diff = -diff;
14200  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
14201  data.currentTranslate = diff + data.startTranslate;
14202  var disableParentSwiper = true;
14203  var resistanceRatio = params.resistanceRatio;
14204  if (params.touchReleaseOnEdges) {
14205    resistanceRatio = 0;
14206  }
14207  if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {
14208    disableParentSwiper = false;
14209    if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + Math.pow(-swiper.minTranslate() + data.startTranslate + diff, resistanceRatio);
14210  } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {
14211    disableParentSwiper = false;
14212    if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - Math.pow(swiper.maxTranslate() - data.startTranslate - diff, resistanceRatio);
14213  }
14214  if (disableParentSwiper) {
14215    e.preventedByNestedSwiper = true;
14216  } // Directions locks
14217
14218  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {
14219    data.currentTranslate = data.startTranslate;
14220  }
14221  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {
14222    data.currentTranslate = data.startTranslate;
14223  }
14224  if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {
14225    data.currentTranslate = data.startTranslate;
14226  } // Threshold
14227
14228  if (params.threshold > 0) {
14229    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
14230      if (!data.allowThresholdMove) {
14231        data.allowThresholdMove = true;
14232        touches.startX = touches.currentX;
14233        touches.startY = touches.currentY;
14234        data.currentTranslate = data.startTranslate;
14235        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
14236        return;
14237      }
14238    } else {
14239      data.currentTranslate = data.startTranslate;
14240      return;
14241    }
14242  }
14243  if (!params.followFinger || params.cssMode) return; // Update active index in free mode
14244
14245  if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {
14246    swiper.updateActiveIndex();
14247    swiper.updateSlidesClasses();
14248  }
14249  if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {
14250    swiper.freeMode.onTouchMove();
14251  } // Update progress
14252
14253  swiper.updateProgress(data.currentTranslate); // Update translate
14254
14255  swiper.setTranslate(data.currentTranslate);
14256}
14257
14258/***/ }),
14259
vendor: 5,823 bytes, lines 14260-14384
14260/***/ "./node_modules/swiper/core/events/onTouchStart.js":
14261/*!*********************************************************!*\
14262  !*** ./node_modules/swiper/core/events/onTouchStart.js ***!
14263  \*********************************************************/
14264/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14265
14266"use strict";
14267__webpack_require__.r(__webpack_exports__);
14268/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14269/* harmony export */   "default": function() { return /* binding */ onTouchStart; }
14270/* harmony export */ });
14271/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
14272/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
14273/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
14274
14275
14276 // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd
14277
14278function closestElement(selector) {
14279  var base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this;
14280  function __closestFrom(el) {
14281    if (!el || el === (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)() || el === (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)()) return null;
14282    if (el.assignedSlot) el = el.assignedSlot;
14283    var found = el.closest(selector);
14284    if (!found && !el.getRootNode) {
14285      return null;
14286    }
14287    return found || __closestFrom(el.getRootNode().host);
14288  }
14289  return __closestFrom(base);
14290}
14291function onTouchStart(event) {
14292  var swiper = this;
14293  var document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
14294  var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
14295  var data = swiper.touchEventsData;
14296  var params = swiper.params,
14297    touches = swiper.touches,
14298    enabled = swiper.enabled;
14299  if (!enabled) return;
14300  if (swiper.animating && params.preventInteractionOnTransition) {
14301    return;
14302  }
14303  if (!swiper.animating && params.cssMode && params.loop) {
14304    swiper.loopFix();
14305  }
14306  var e = event;
14307  if (e.originalEvent) e = e.originalEvent;
14308  var $targetEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target);
14309  if (params.touchEventsTarget === 'wrapper') {
14310    if (!$targetEl.closest(swiper.wrapperEl).length) return;
14311  }
14312  data.isTouchEvent = e.type === 'touchstart';
14313  if (!data.isTouchEvent && 'which' in e && e.which === 3) return;
14314  if (!data.isTouchEvent && 'button' in e && e.button > 0) return;
14315  if (data.isTouched && data.isMoved) return; // change target el for shadow root component
14316
14317  var swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; // eslint-disable-next-line
14318
14319  var eventPath = event.composedPath ? event.composedPath() : event.path;
14320  if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {
14321    $targetEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(eventPath[0]);
14322  }
14323  var noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : ".".concat(params.noSwipingClass);
14324  var isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element
14325
14326  if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) {
14327    swiper.allowClick = true;
14328    return;
14329  }
14330  if (params.swipeHandler) {
14331    if (!$targetEl.closest(params.swipeHandler)[0]) return;
14332  }
14333  touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
14334  touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
14335  var startX = touches.currentX;
14336  var startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore
14337
14338  var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
14339  var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
14340  if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {
14341    if (edgeSwipeDetection === 'prevent') {
14342      event.preventDefault();
14343    } else {
14344      return;
14345    }
14346  }
14347  Object.assign(data, {
14348    isTouched: true,
14349    isMoved: false,
14350    allowTouchCallbacks: true,
14351    isScrolling: undefined,
14352    startMoving: undefined
14353  });
14354  touches.startX = startX;
14355  touches.startY = startY;
14356  data.touchStartTime = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.now)();
14357  swiper.allowClick = true;
14358  swiper.updateSize();
14359  swiper.swipeDirection = undefined;
14360  if (params.threshold > 0) data.allowThresholdMove = false;
14361  if (e.type !== 'touchstart') {
14362    var preventDefault = true;
14363    if ($targetEl.is(data.focusableElements)) {
14364      preventDefault = false;
14365      if ($targetEl[0].nodeName === 'SELECT') {
14366        data.isTouched = false;
14367      }
14368    }
14369    if (document.activeElement && (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {
14370      document.activeElement.blur();
14371    }
14372    var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
14373    if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {
14374      e.preventDefault();
14375    }
14376  }
14377  if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {
14378    swiper.freeMode.onTouchStart();
14379  }
14380  swiper.emit('touchStart', e);
14381}
14382
14383/***/ }),
14384
vendor: 999 bytes, lines 14385-14403
14385/***/ "./node_modules/swiper/core/grab-cursor/index.js":
14386/*!*******************************************************!*\
14387  !*** ./node_modules/swiper/core/grab-cursor/index.js ***!
14388  \*******************************************************/
14389/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14390
14391"use strict";
14392__webpack_require__.r(__webpack_exports__);
14393/* harmony import */ var _setGrabCursor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setGrabCursor.js */ "./node_modules/swiper/core/grab-cursor/setGrabCursor.js");
14394/* harmony import */ var _unsetGrabCursor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./unsetGrabCursor.js */ "./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js");
14395
14396
14397/* harmony default export */ __webpack_exports__["default"] = ({
14398  setGrabCursor: _setGrabCursor_js__WEBPACK_IMPORTED_MODULE_0__["default"],
14399  unsetGrabCursor: _unsetGrabCursor_js__WEBPACK_IMPORTED_MODULE_1__["default"]
14400});
14401
14402/***/ }),
14403
vendor: 983 bytes, lines 14404-14424
14404/***/ "./node_modules/swiper/core/grab-cursor/setGrabCursor.js":
14405/*!***************************************************************!*\
14406  !*** ./node_modules/swiper/core/grab-cursor/setGrabCursor.js ***!
14407  \***************************************************************/
14408/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14409
14410"use strict";
14411__webpack_require__.r(__webpack_exports__);
14412/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14413/* harmony export */   "default": function() { return /* binding */ setGrabCursor; }
14414/* harmony export */ });
14415function setGrabCursor(moving) {
14416  var swiper = this;
14417  if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;
14418  var el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;
14419  el.style.cursor = 'move';
14420  el.style.cursor = moving ? 'grabbing' : 'grab';
14421}
14422
14423/***/ }),
14424
vendor: 896 bytes, lines 14425-14445
14425/***/ "./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js":
14426/*!*****************************************************************!*\
14427  !*** ./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js ***!
14428  \*****************************************************************/
14429/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14430
14431"use strict";
14432__webpack_require__.r(__webpack_exports__);
14433/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14434/* harmony export */   "default": function() { return /* binding */ unsetGrabCursor; }
14435/* harmony export */ });
14436function unsetGrabCursor() {
14437  var swiper = this;
14438  if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {
14439    return;
14440  }
14441  swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';
14442}
14443
14444/***/ }),
14445
vendor: 939 bytes, lines 14446-14464
14446/***/ "./node_modules/swiper/core/images/index.js":
14447/*!**************************************************!*\
14448  !*** ./node_modules/swiper/core/images/index.js ***!
14449  \**************************************************/
14450/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14451
14452"use strict";
14453__webpack_require__.r(__webpack_exports__);
14454/* harmony import */ var _loadImage_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loadImage.js */ "./node_modules/swiper/core/images/loadImage.js");
14455/* harmony import */ var _preloadImages_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./preloadImages.js */ "./node_modules/swiper/core/images/preloadImages.js");
14456
14457
14458/* harmony default export */ __webpack_exports__["default"] = ({
14459  loadImage: _loadImage_js__WEBPACK_IMPORTED_MODULE_0__["default"],
14460  preloadImages: _preloadImages_js__WEBPACK_IMPORTED_MODULE_1__["default"]
14461});
14462
14463/***/ }),
14464
vendor: 1,654 bytes, lines 14465-14511
14465/***/ "./node_modules/swiper/core/images/loadImage.js":
14466/*!******************************************************!*\
14467  !*** ./node_modules/swiper/core/images/loadImage.js ***!
14468  \******************************************************/
14469/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14470
14471"use strict";
14472__webpack_require__.r(__webpack_exports__);
14473/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14474/* harmony export */   "default": function() { return /* binding */ loadImage; }
14475/* harmony export */ });
14476/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
14477/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
14478
14479
14480function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {
14481  var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
14482  var image;
14483  function onReady() {
14484    if (callback) callback();
14485  }
14486  var isPicture = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(imageEl).parent('picture')[0];
14487  if (!isPicture && (!imageEl.complete || !checkForComplete)) {
14488    if (src) {
14489      image = new window.Image();
14490      image.onload = onReady;
14491      image.onerror = onReady;
14492      if (sizes) {
14493        image.sizes = sizes;
14494      }
14495      if (srcset) {
14496        image.srcset = srcset;
14497      }
14498      if (src) {
14499        image.src = src;
14500      }
14501    } else {
14502      onReady();
14503    }
14504  } else {
14505    // image already loaded...
14506    onReady();
14507  }
14508}
14509
14510/***/ }),
14511
vendor: 1,351 bytes, lines 14512-14541
14512/***/ "./node_modules/swiper/core/images/preloadImages.js":
14513/*!**********************************************************!*\
14514  !*** ./node_modules/swiper/core/images/preloadImages.js ***!
14515  \**********************************************************/
14516/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14517
14518"use strict";
14519__webpack_require__.r(__webpack_exports__);
14520/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14521/* harmony export */   "default": function() { return /* binding */ preloadImages; }
14522/* harmony export */ });
14523function preloadImages() {
14524  var swiper = this;
14525  swiper.imagesToLoad = swiper.$el.find('img');
14526  function onReady() {
14527    if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;
14528    if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;
14529    if (swiper.imagesLoaded === swiper.imagesToLoad.length) {
14530      if (swiper.params.updateOnImagesReady) swiper.update();
14531      swiper.emit('imagesReady');
14532    }
14533  }
14534  for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {
14535    var imageEl = swiper.imagesToLoad[i];
14536    swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);
14537  }
14538}
14539
14540/***/ }),
14541
vendor: 1,142 bytes, lines 14542-14563
14542/***/ "./node_modules/swiper/core/loop/index.js":
14543/*!************************************************!*\
14544  !*** ./node_modules/swiper/core/loop/index.js ***!
14545  \************************************************/
14546/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14547
14548"use strict";
14549__webpack_require__.r(__webpack_exports__);
14550/* harmony import */ var _loopCreate_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loopCreate.js */ "./node_modules/swiper/core/loop/loopCreate.js");
14551/* harmony import */ var _loopFix_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loopFix.js */ "./node_modules/swiper/core/loop/loopFix.js");
14552/* harmony import */ var _loopDestroy_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./loopDestroy.js */ "./node_modules/swiper/core/loop/loopDestroy.js");
14553
14554
14555
14556/* harmony default export */ __webpack_exports__["default"] = ({
14557  loopCreate: _loopCreate_js__WEBPACK_IMPORTED_MODULE_0__["default"],
14558  loopFix: _loopFix_js__WEBPACK_IMPORTED_MODULE_1__["default"],
14559  loopDestroy: _loopDestroy_js__WEBPACK_IMPORTED_MODULE_2__["default"]
14560});
14561
14562/***/ }),
14563
vendor: 3,258 bytes, lines 14564-14624
14564/***/ "./node_modules/swiper/core/loop/loopCreate.js":
14565/*!*****************************************************!*\
14566  !*** ./node_modules/swiper/core/loop/loopCreate.js ***!
14567  \*****************************************************/
14568/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14569
14570"use strict";
14571__webpack_require__.r(__webpack_exports__);
14572/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14573/* harmony export */   "default": function() { return /* binding */ loopCreate; }
14574/* harmony export */ });
14575/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
14576/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
14577
14578
14579function loopCreate() {
14580  var swiper = this;
14581  var document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
14582  var params = swiper.params,
14583    $wrapperEl = swiper.$wrapperEl; // Remove duplicated slides
14584
14585  var $selector = $wrapperEl.children().length > 0 ? (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])($wrapperEl.children()[0].parentNode) : $wrapperEl;
14586  $selector.children(".".concat(params.slideClass, ".").concat(params.slideDuplicateClass)).remove();
14587  var slides = $selector.children(".".concat(params.slideClass));
14588  if (params.loopFillGroupWithBlank) {
14589    var blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;
14590    if (blankSlidesNum !== params.slidesPerGroup) {
14591      for (var i = 0; i < blankSlidesNum; i += 1) {
14592        var blankNode = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(document.createElement('div')).addClass("".concat(params.slideClass, " ").concat(params.slideBlankClass));
14593        $selector.append(blankNode);
14594      }
14595      slides = $selector.children(".".concat(params.slideClass));
14596    }
14597  }
14598  if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;
14599  swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));
14600  swiper.loopedSlides += params.loopAdditionalSlides;
14601  if (swiper.loopedSlides > slides.length && swiper.params.loopedSlidesLimit) {
14602    swiper.loopedSlides = slides.length;
14603  }
14604  var prependSlides = [];
14605  var appendSlides = [];
14606  slides.each(function (el, index) {
14607    var slide = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(el);
14608    slide.attr('data-swiper-slide-index', index);
14609  });
14610  for (var _i = 0; _i < swiper.loopedSlides; _i += 1) {
14611    var index = _i - Math.floor(_i / slides.length) * slides.length;
14612    appendSlides.push(slides.eq(index)[0]);
14613    prependSlides.unshift(slides.eq(slides.length - index - 1)[0]);
14614  }
14615  for (var _i2 = 0; _i2 < appendSlides.length; _i2 += 1) {
14616    $selector.append((0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(appendSlides[_i2].cloneNode(true)).addClass(params.slideDuplicateClass));
14617  }
14618  for (var _i3 = prependSlides.length - 1; _i3 >= 0; _i3 -= 1) {
14619    $selector.prepend((0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(prependSlides[_i3].cloneNode(true)).addClass(params.slideDuplicateClass));
14620  }
14621}
14622
14623/***/ }),
14624
vendor: 938 bytes, lines 14625-14646
14625/***/ "./node_modules/swiper/core/loop/loopDestroy.js":
14626/*!******************************************************!*\
14627  !*** ./node_modules/swiper/core/loop/loopDestroy.js ***!
14628  \******************************************************/
14629/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14630
14631"use strict";
14632__webpack_require__.r(__webpack_exports__);
14633/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14634/* harmony export */   "default": function() { return /* binding */ loopDestroy; }
14635/* harmony export */ });
14636function loopDestroy() {
14637  var swiper = this;
14638  var $wrapperEl = swiper.$wrapperEl,
14639    params = swiper.params,
14640    slides = swiper.slides;
14641  $wrapperEl.children(".".concat(params.slideClass, ".").concat(params.slideDuplicateClass, ",.").concat(params.slideClass, ".").concat(params.slideBlankClass)).remove();
14642  slides.removeAttr('data-swiper-slide-index');
14643}
14644
14645/***/ }),
14646
vendor: 1,912 bytes, lines 14647-14696
14647/***/ "./node_modules/swiper/core/loop/loopFix.js":
14648/*!**************************************************!*\
14649  !*** ./node_modules/swiper/core/loop/loopFix.js ***!
14650  \**************************************************/
14651/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14652
14653"use strict";
14654__webpack_require__.r(__webpack_exports__);
14655/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14656/* harmony export */   "default": function() { return /* binding */ loopFix; }
14657/* harmony export */ });
14658function loopFix() {
14659  var swiper = this;
14660  swiper.emit('beforeLoopFix');
14661  var activeIndex = swiper.activeIndex,
14662    slides = swiper.slides,
14663    loopedSlides = swiper.loopedSlides,
14664    allowSlidePrev = swiper.allowSlidePrev,
14665    allowSlideNext = swiper.allowSlideNext,
14666    snapGrid = swiper.snapGrid,
14667    rtl = swiper.rtlTranslate;
14668  var newIndex;
14669  swiper.allowSlidePrev = true;
14670  swiper.allowSlideNext = true;
14671  var snapTranslate = -snapGrid[activeIndex];
14672  var diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding
14673
14674  if (activeIndex < loopedSlides) {
14675    newIndex = slides.length - loopedSlides * 3 + activeIndex;
14676    newIndex += loopedSlides;
14677    var slideChanged = swiper.slideTo(newIndex, 0, false, true);
14678    if (slideChanged && diff !== 0) {
14679      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
14680    }
14681  } else if (activeIndex >= slides.length - loopedSlides) {
14682    // Fix For Positive Oversliding
14683    newIndex = -slides.length + activeIndex + loopedSlides;
14684    newIndex += loopedSlides;
14685    var _slideChanged = swiper.slideTo(newIndex, 0, false, true);
14686    if (_slideChanged && diff !== 0) {
14687      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
14688    }
14689  }
14690  swiper.allowSlidePrev = allowSlidePrev;
14691  swiper.allowSlideNext = allowSlideNext;
14692  swiper.emit('loopFix');
14693}
14694
14695/***/ }),
14696
vendor: 2,332 bytes, lines 14697-14745
14697/***/ "./node_modules/swiper/core/moduleExtendParams.js":
14698/*!********************************************************!*\
14699  !*** ./node_modules/swiper/core/moduleExtendParams.js ***!
14700  \********************************************************/
14701/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14702
14703"use strict";
14704__webpack_require__.r(__webpack_exports__);
14705/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14706/* harmony export */   "default": function() { return /* binding */ moduleExtendParams; }
14707/* harmony export */ });
14708/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
14709function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
14710
14711function moduleExtendParams(params, allModulesParams) {
14712  return function extendParams() {
14713    var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
14714    var moduleParamName = Object.keys(obj)[0];
14715    var moduleParams = obj[moduleParamName];
14716    if (_typeof(moduleParams) !== 'object' || moduleParams === null) {
14717      (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.extend)(allModulesParams, obj);
14718      return;
14719    }
14720    if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {
14721      params[moduleParamName] = {
14722        auto: true
14723      };
14724    }
14725    if (!(moduleParamName in params && 'enabled' in moduleParams)) {
14726      (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.extend)(allModulesParams, obj);
14727      return;
14728    }
14729    if (params[moduleParamName] === true) {
14730      params[moduleParamName] = {
14731        enabled: true
14732      };
14733    }
14734    if (_typeof(params[moduleParamName]) === 'object' && !('enabled' in params[moduleParamName])) {
14735      params[moduleParamName].enabled = true;
14736    }
14737    if (!params[moduleParamName]) params[moduleParamName] = {
14738      enabled: false
14739    };
14740    (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.extend)(allModulesParams, obj);
14741  };
14742}
14743
14744/***/ }),
14745
vendor: 2,960 bytes, lines 14746-14826
14746/***/ "./node_modules/swiper/core/modules/observer/observer.js":
14747/*!***************************************************************!*\
14748  !*** ./node_modules/swiper/core/modules/observer/observer.js ***!
14749  \***************************************************************/
14750/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14751
14752"use strict";
14753__webpack_require__.r(__webpack_exports__);
14754/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14755/* harmony export */   "default": function() { return /* binding */ Observer; }
14756/* harmony export */ });
14757/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
14758
14759function Observer(_ref) {
14760  var swiper = _ref.swiper,
14761    extendParams = _ref.extendParams,
14762    on = _ref.on,
14763    emit = _ref.emit;
14764  var observers = [];
14765  var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
14766  var attach = function attach(target) {
14767    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
14768    var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;
14769    var observer = new ObserverFunc(function (mutations) {
14770      // The observerUpdate event should only be triggered
14771      // once despite the number of mutations.  Additional
14772      // triggers are redundant and are very costly
14773      if (mutations.length === 1) {
14774        emit('observerUpdate', mutations[0]);
14775        return;
14776      }
14777      var observerUpdate = function observerUpdate() {
14778        emit('observerUpdate', mutations[0]);
14779      };
14780      if (window.requestAnimationFrame) {
14781        window.requestAnimationFrame(observerUpdate);
14782      } else {
14783        window.setTimeout(observerUpdate, 0);
14784      }
14785    });
14786    observer.observe(target, {
14787      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
14788      childList: typeof options.childList === 'undefined' ? true : options.childList,
14789      characterData: typeof options.characterData === 'undefined' ? true : options.characterData
14790    });
14791    observers.push(observer);
14792  };
14793  var init = function init() {
14794    if (!swiper.params.observer) return;
14795    if (swiper.params.observeParents) {
14796      var containerParents = swiper.$el.parents();
14797      for (var i = 0; i < containerParents.length; i += 1) {
14798        attach(containerParents[i]);
14799      }
14800    } // Observe container
14801
14802    attach(swiper.$el[0], {
14803      childList: swiper.params.observeSlideChildren
14804    }); // Observe wrapper
14805
14806    attach(swiper.$wrapperEl[0], {
14807      attributes: false
14808    });
14809  };
14810  var destroy = function destroy() {
14811    observers.forEach(function (observer) {
14812      observer.disconnect();
14813    });
14814    observers.splice(0, observers.length);
14815  };
14816  extendParams({
14817    observer: false,
14818    observeParents: false,
14819    observeSlideChildren: false
14820  });
14821  on('init', init);
14822  on('destroy', destroy);
14823}
14824
14825/***/ }),
14826
vendor: 3,030 bytes, lines 14827-14904
14827/***/ "./node_modules/swiper/core/modules/resize/resize.js":
14828/*!***********************************************************!*\
14829  !*** ./node_modules/swiper/core/modules/resize/resize.js ***!
14830  \***********************************************************/
14831/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14832
14833"use strict";
14834__webpack_require__.r(__webpack_exports__);
14835/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14836/* harmony export */   "default": function() { return /* binding */ Resize; }
14837/* harmony export */ });
14838/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
14839
14840function Resize(_ref) {
14841  var swiper = _ref.swiper,
14842    on = _ref.on,
14843    emit = _ref.emit;
14844  var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
14845  var observer = null;
14846  var animationFrame = null;
14847  var resizeHandler = function resizeHandler() {
14848    if (!swiper || swiper.destroyed || !swiper.initialized) return;
14849    emit('beforeResize');
14850    emit('resize');
14851  };
14852  var createObserver = function createObserver() {
14853    if (!swiper || swiper.destroyed || !swiper.initialized) return;
14854    observer = new ResizeObserver(function (entries) {
14855      animationFrame = window.requestAnimationFrame(function () {
14856        var width = swiper.width,
14857          height = swiper.height;
14858        var newWidth = width;
14859        var newHeight = height;
14860        entries.forEach(function (_ref2) {
14861          var contentBoxSize = _ref2.contentBoxSize,
14862            contentRect = _ref2.contentRect,
14863            target = _ref2.target;
14864          if (target && target !== swiper.el) return;
14865          newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;
14866          newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;
14867        });
14868        if (newWidth !== width || newHeight !== height) {
14869          resizeHandler();
14870        }
14871      });
14872    });
14873    observer.observe(swiper.el);
14874  };
14875  var removeObserver = function removeObserver() {
14876    if (animationFrame) {
14877      window.cancelAnimationFrame(animationFrame);
14878    }
14879    if (observer && observer.unobserve && swiper.el) {
14880      observer.unobserve(swiper.el);
14881      observer = null;
14882    }
14883  };
14884  var orientationChangeHandler = function orientationChangeHandler() {
14885    if (!swiper || swiper.destroyed || !swiper.initialized) return;
14886    emit('orientationchange');
14887  };
14888  on('init', function () {
14889    if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {
14890      createObserver();
14891      return;
14892    }
14893    window.addEventListener('resize', resizeHandler);
14894    window.addEventListener('orientationchange', orientationChangeHandler);
14895  });
14896  on('destroy', function () {
14897    removeObserver();
14898    window.removeEventListener('resize', resizeHandler);
14899    window.removeEventListener('orientationchange', orientationChangeHandler);
14900  });
14901}
14902
14903/***/ }),
14904
vendor: 2,148 bytes, lines 14905-14938
14905/***/ "./node_modules/swiper/core/slide/index.js":
14906/*!*************************************************!*\
14907  !*** ./node_modules/swiper/core/slide/index.js ***!
14908  \*************************************************/
14909/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14910
14911"use strict";
14912__webpack_require__.r(__webpack_exports__);
14913/* harmony import */ var _slideTo_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./slideTo.js */ "./node_modules/swiper/core/slide/slideTo.js");
14914/* harmony import */ var _slideToLoop_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./slideToLoop.js */ "./node_modules/swiper/core/slide/slideToLoop.js");
14915/* harmony import */ var _slideNext_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./slideNext.js */ "./node_modules/swiper/core/slide/slideNext.js");
14916/* harmony import */ var _slidePrev_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./slidePrev.js */ "./node_modules/swiper/core/slide/slidePrev.js");
14917/* harmony import */ var _slideReset_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./slideReset.js */ "./node_modules/swiper/core/slide/slideReset.js");
14918/* harmony import */ var _slideToClosest_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./slideToClosest.js */ "./node_modules/swiper/core/slide/slideToClosest.js");
14919/* harmony import */ var _slideToClickedSlide_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./slideToClickedSlide.js */ "./node_modules/swiper/core/slide/slideToClickedSlide.js");
14920
14921
14922
14923
14924
14925
14926
14927/* harmony default export */ __webpack_exports__["default"] = ({
14928  slideTo: _slideTo_js__WEBPACK_IMPORTED_MODULE_0__["default"],
14929  slideToLoop: _slideToLoop_js__WEBPACK_IMPORTED_MODULE_1__["default"],
14930  slideNext: _slideNext_js__WEBPACK_IMPORTED_MODULE_2__["default"],
14931  slidePrev: _slidePrev_js__WEBPACK_IMPORTED_MODULE_3__["default"],
14932  slideReset: _slideReset_js__WEBPACK_IMPORTED_MODULE_4__["default"],
14933  slideToClosest: _slideToClosest_js__WEBPACK_IMPORTED_MODULE_5__["default"],
14934  slideToClickedSlide: _slideToClickedSlide_js__WEBPACK_IMPORTED_MODULE_6__["default"]
14935});
14936
14937/***/ }),
14938
vendor: 1,726 bytes, lines 14939-14978
14939/***/ "./node_modules/swiper/core/slide/slideNext.js":
14940/*!*****************************************************!*\
14941  !*** ./node_modules/swiper/core/slide/slideNext.js ***!
14942  \*****************************************************/
14943/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14944
14945"use strict";
14946__webpack_require__.r(__webpack_exports__);
14947/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14948/* harmony export */   "default": function() { return /* binding */ slideNext; }
14949/* harmony export */ });
14950/* eslint no-unused-vars: "off" */
14951function slideNext() {
14952  var speed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.params.speed;
14953  var runCallbacks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
14954  var internal = arguments.length > 2 ? arguments[2] : undefined;
14955  var swiper = this;
14956  var animating = swiper.animating,
14957    enabled = swiper.enabled,
14958    params = swiper.params;
14959  if (!enabled) return swiper;
14960  var perGroup = params.slidesPerGroup;
14961  if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {
14962    perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);
14963  }
14964  var increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;
14965  if (params.loop) {
14966    if (animating && params.loopPreventsSlide) return false;
14967    swiper.loopFix(); // eslint-disable-next-line
14968
14969    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
14970  }
14971  if (params.rewind && swiper.isEnd) {
14972    return swiper.slideTo(0, speed, runCallbacks, internal);
14973  }
14974  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
14975}
14976
14977/***/ }),
14978
vendor: 2,881 bytes, lines 14979-15048
14979/***/ "./node_modules/swiper/core/slide/slidePrev.js":
14980/*!*****************************************************!*\
14981  !*** ./node_modules/swiper/core/slide/slidePrev.js ***!
14982  \*****************************************************/
14983/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
14984
14985"use strict";
14986__webpack_require__.r(__webpack_exports__);
14987/* harmony export */ __webpack_require__.d(__webpack_exports__, {
14988/* harmony export */   "default": function() { return /* binding */ slidePrev; }
14989/* harmony export */ });
14990/* eslint no-unused-vars: "off" */
14991function slidePrev() {
14992  var speed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.params.speed;
14993  var runCallbacks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
14994  var internal = arguments.length > 2 ? arguments[2] : undefined;
14995  var swiper = this;
14996  var params = swiper.params,
14997    animating = swiper.animating,
14998    snapGrid = swiper.snapGrid,
14999    slidesGrid = swiper.slidesGrid,
15000    rtlTranslate = swiper.rtlTranslate,
15001    enabled = swiper.enabled;
15002  if (!enabled) return swiper;
15003  if (params.loop) {
15004    if (animating && params.loopPreventsSlide) return false;
15005    swiper.loopFix(); // eslint-disable-next-line
15006
15007    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
15008  }
15009  var translate = rtlTranslate ? swiper.translate : -swiper.translate;
15010  function normalize(val) {
15011    if (val < 0) return -Math.floor(Math.abs(val));
15012    return Math.floor(val);
15013  }
15014  var normalizedTranslate = normalize(translate);
15015  var normalizedSnapGrid = snapGrid.map(function (val) {
15016    return normalize(val);
15017  });
15018  var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
15019  if (typeof prevSnap === 'undefined' && params.cssMode) {
15020    var prevSnapIndex;
15021    snapGrid.forEach(function (snap, snapIndex) {
15022      if (normalizedTranslate >= snap) {
15023        // prevSnap = snap;
15024        prevSnapIndex = snapIndex;
15025      }
15026    });
15027    if (typeof prevSnapIndex !== 'undefined') {
15028      prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];
15029    }
15030  }
15031  var prevIndex = 0;
15032  if (typeof prevSnap !== 'undefined') {
15033    prevIndex = slidesGrid.indexOf(prevSnap);
15034    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;
15035    if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {
15036      prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;
15037      prevIndex = Math.max(prevIndex, 0);
15038    }
15039  }
15040  if (params.rewind && swiper.isBeginning) {
15041    var lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;
15042    return swiper.slideTo(lastIndex, speed, runCallbacks, internal);
15043  }
15044  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
15045}
15046
15047/***/ }),
15048
vendor: 996 bytes, lines 15049-15070
15049/***/ "./node_modules/swiper/core/slide/slideReset.js":
15050/*!******************************************************!*\
15051  !*** ./node_modules/swiper/core/slide/slideReset.js ***!
15052  \******************************************************/
15053/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15054
15055"use strict";
15056__webpack_require__.r(__webpack_exports__);
15057/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15058/* harmony export */   "default": function() { return /* binding */ slideReset; }
15059/* harmony export */ });
15060/* eslint no-unused-vars: "off" */
15061function slideReset() {
15062  var speed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.params.speed;
15063  var runCallbacks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
15064  var internal = arguments.length > 2 ? arguments[2] : undefined;
15065  var swiper = this;
15066  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
15067}
15068
15069/***/ }),
15070
vendor: 7,885 bytes, lines 15071-15242
15071/***/ "./node_modules/swiper/core/slide/slideTo.js":
15072/*!***************************************************!*\
15073  !*** ./node_modules/swiper/core/slide/slideTo.js ***!
15074  \***************************************************/
15075/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15076
15077"use strict";
15078__webpack_require__.r(__webpack_exports__);
15079/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15080/* harmony export */   "default": function() { return /* binding */ slideTo; }
15081/* harmony export */ });
15082/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
15083function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
15084function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
15085function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
15086function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
15087
15088function slideTo() {
15089  var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
15090  var speed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.params.speed;
15091  var runCallbacks = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
15092  var internal = arguments.length > 3 ? arguments[3] : undefined;
15093  var initial = arguments.length > 4 ? arguments[4] : undefined;
15094  if (typeof index !== 'number' && typeof index !== 'string') {
15095    throw new Error("The 'index' argument cannot have type other than 'number' or 'string'. [".concat(_typeof(index), "] given."));
15096  }
15097  if (typeof index === 'string') {
15098    /**
15099     * The `index` argument converted from `string` to `number`.
15100     * @type {number}
15101     */
15102    var indexAsNumber = parseInt(index, 10);
15103    /**
15104     * Determines whether the `index` argument is a valid `number`
15105     * after being converted from the `string` type.
15106     * @type {boolean}
15107     */
15108
15109    var isValidNumber = isFinite(indexAsNumber);
15110    if (!isValidNumber) {
15111      throw new Error("The passed-in 'index' (string) couldn't be converted to 'number'. [".concat(index, "] given."));
15112    } // Knowing that the converted `index` is a valid number,
15113    // we can update the original argument's value.
15114
15115    index = indexAsNumber;
15116  }
15117  var swiper = this;
15118  var slideIndex = index;
15119  if (slideIndex < 0) slideIndex = 0;
15120  var params = swiper.params,
15121    snapGrid = swiper.snapGrid,
15122    slidesGrid = swiper.slidesGrid,
15123    previousIndex = swiper.previousIndex,
15124    activeIndex = swiper.activeIndex,
15125    rtl = swiper.rtlTranslate,
15126    wrapperEl = swiper.wrapperEl,
15127    enabled = swiper.enabled;
15128  if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {
15129    return false;
15130  }
15131  var skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);
15132  var snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);
15133  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
15134  var translate = -snapGrid[snapIndex]; // Normalize slideIndex
15135
15136  if (params.normalizeSlideIndex) {
15137    for (var i = 0; i < slidesGrid.length; i += 1) {
15138      var normalizedTranslate = -Math.floor(translate * 100);
15139      var normalizedGrid = Math.floor(slidesGrid[i] * 100);
15140      var normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);
15141      if (typeof slidesGrid[i + 1] !== 'undefined') {
15142        if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {
15143          slideIndex = i;
15144        } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {
15145          slideIndex = i + 1;
15146        }
15147      } else if (normalizedTranslate >= normalizedGrid) {
15148        slideIndex = i;
15149      }
15150    }
15151  } // Directions locks
15152
15153  if (swiper.initialized && slideIndex !== activeIndex) {
15154    if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {
15155      return false;
15156    }
15157    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {
15158      if ((activeIndex || 0) !== slideIndex) return false;
15159    }
15160  }
15161  if (slideIndex !== (previousIndex || 0) && runCallbacks) {
15162    swiper.emit('beforeSlideChangeStart');
15163  } // Update progress
15164
15165  swiper.updateProgress(translate);
15166  var direction;
15167  if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index
15168
15169  if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {
15170    swiper.updateActiveIndex(slideIndex); // Update Height
15171
15172    if (params.autoHeight) {
15173      swiper.updateAutoHeight();
15174    }
15175    swiper.updateSlidesClasses();
15176    if (params.effect !== 'slide') {
15177      swiper.setTranslate(translate);
15178    }
15179    if (direction !== 'reset') {
15180      swiper.transitionStart(runCallbacks, direction);
15181      swiper.transitionEnd(runCallbacks, direction);
15182    }
15183    return false;
15184  }
15185  if (params.cssMode) {
15186    var isH = swiper.isHorizontal();
15187    var t = rtl ? translate : -translate;
15188    if (speed === 0) {
15189      var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
15190      if (isVirtual) {
15191        swiper.wrapperEl.style.scrollSnapType = 'none';
15192        swiper._immediateVirtual = true;
15193      }
15194      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
15195      if (isVirtual) {
15196        requestAnimationFrame(function () {
15197          swiper.wrapperEl.style.scrollSnapType = '';
15198          swiper._swiperImmediateVirtual = false;
15199        });
15200      }
15201    } else {
15202      if (!swiper.support.smoothScroll) {
15203        (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.animateCSSModeScroll)({
15204          swiper: swiper,
15205          targetPosition: t,
15206          side: isH ? 'left' : 'top'
15207        });
15208        return true;
15209      }
15210      wrapperEl.scrollTo(_defineProperty(_defineProperty({}, isH ? 'left' : 'top', t), "behavior", 'smooth'));
15211    }
15212    return true;
15213  }
15214  swiper.setTransition(speed);
15215  swiper.setTranslate(translate);
15216  swiper.updateActiveIndex(slideIndex);
15217  swiper.updateSlidesClasses();
15218  swiper.emit('beforeTransitionStart', speed, internal);
15219  swiper.transitionStart(runCallbacks, direction);
15220  if (speed === 0) {
15221    swiper.transitionEnd(runCallbacks, direction);
15222  } else if (!swiper.animating) {
15223    swiper.animating = true;
15224    if (!swiper.onSlideToWrapperTransitionEnd) {
15225      swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {
15226        if (!swiper || swiper.destroyed) return;
15227        if (e.target !== this) return;
15228        swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
15229        swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
15230        swiper.onSlideToWrapperTransitionEnd = null;
15231        delete swiper.onSlideToWrapperTransitionEnd;
15232        swiper.transitionEnd(runCallbacks, direction);
15233      };
15234    }
15235    swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
15236    swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
15237  }
15238  return true;
15239}
15240
15241/***/ }),
15242
vendor: 2,541 bytes, lines 15243-15293
15243/***/ "./node_modules/swiper/core/slide/slideToClickedSlide.js":
15244/*!***************************************************************!*\
15245  !*** ./node_modules/swiper/core/slide/slideToClickedSlide.js ***!
15246  \***************************************************************/
15247/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15248
15249"use strict";
15250__webpack_require__.r(__webpack_exports__);
15251/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15252/* harmony export */   "default": function() { return /* binding */ slideToClickedSlide; }
15253/* harmony export */ });
15254/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
15255/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
15256
15257
15258function slideToClickedSlide() {
15259  var swiper = this;
15260  var params = swiper.params,
15261    $wrapperEl = swiper.$wrapperEl;
15262  var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
15263  var slideToIndex = swiper.clickedIndex;
15264  var realIndex;
15265  if (params.loop) {
15266    if (swiper.animating) return;
15267    realIndex = parseInt((0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);
15268    if (params.centeredSlides) {
15269      if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {
15270        swiper.loopFix();
15271        slideToIndex = $wrapperEl.children(".".concat(params.slideClass, "[data-swiper-slide-index=\"").concat(realIndex, "\"]:not(.").concat(params.slideDuplicateClass, ")")).eq(0).index();
15272        (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.nextTick)(function () {
15273          swiper.slideTo(slideToIndex);
15274        });
15275      } else {
15276        swiper.slideTo(slideToIndex);
15277      }
15278    } else if (slideToIndex > swiper.slides.length - slidesPerView) {
15279      swiper.loopFix();
15280      slideToIndex = $wrapperEl.children(".".concat(params.slideClass, "[data-swiper-slide-index=\"").concat(realIndex, "\"]:not(.").concat(params.slideDuplicateClass, ")")).eq(0).index();
15281      (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.nextTick)(function () {
15282        swiper.slideTo(slideToIndex);
15283      });
15284    } else {
15285      swiper.slideTo(slideToIndex);
15286    }
15287  } else {
15288    swiper.slideTo(slideToIndex);
15289  }
15290}
15291
15292/***/ }),
15293
vendor: 2,237 bytes, lines 15294-15339
15294/***/ "./node_modules/swiper/core/slide/slideToClosest.js":
15295/*!**********************************************************!*\
15296  !*** ./node_modules/swiper/core/slide/slideToClosest.js ***!
15297  \**********************************************************/
15298/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15299
15300"use strict";
15301__webpack_require__.r(__webpack_exports__);
15302/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15303/* harmony export */   "default": function() { return /* binding */ slideToClosest; }
15304/* harmony export */ });
15305/* eslint no-unused-vars: "off" */
15306function slideToClosest() {
15307  var speed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.params.speed;
15308  var runCallbacks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
15309  var internal = arguments.length > 2 ? arguments[2] : undefined;
15310  var threshold = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0.5;
15311  var swiper = this;
15312  var index = swiper.activeIndex;
15313  var skip = Math.min(swiper.params.slidesPerGroupSkip, index);
15314  var snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);
15315  var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
15316  if (translate >= swiper.snapGrid[snapIndex]) {
15317    // The current translate is on or after the current snap index, so the choice
15318    // is between the current index and the one after it.
15319    var currentSnap = swiper.snapGrid[snapIndex];
15320    var nextSnap = swiper.snapGrid[snapIndex + 1];
15321    if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {
15322      index += swiper.params.slidesPerGroup;
15323    }
15324  } else {
15325    // The current translate is before the current snap index, so the choice
15326    // is between the current index and the one before it.
15327    var prevSnap = swiper.snapGrid[snapIndex - 1];
15328    var _currentSnap = swiper.snapGrid[snapIndex];
15329    if (translate - prevSnap <= (_currentSnap - prevSnap) * threshold) {
15330      index -= swiper.params.slidesPerGroup;
15331    }
15332  }
15333  index = Math.max(index, 0);
15334  index = Math.min(index, swiper.slidesGrid.length - 1);
15335  return swiper.slideTo(index, speed, runCallbacks, internal);
15336}
15337
15338/***/ }),
15339
vendor: 1,820 bytes, lines 15340-15385
15340/***/ "./node_modules/swiper/core/slide/slideToLoop.js":
15341/*!*******************************************************!*\
15342  !*** ./node_modules/swiper/core/slide/slideToLoop.js ***!
15343  \*******************************************************/
15344/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15345
15346"use strict";
15347__webpack_require__.r(__webpack_exports__);
15348/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15349/* harmony export */   "default": function() { return /* binding */ slideToLoop; }
15350/* harmony export */ });
15351function slideToLoop() {
15352  var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
15353  var speed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.params.speed;
15354  var runCallbacks = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
15355  var internal = arguments.length > 3 ? arguments[3] : undefined;
15356  if (typeof index === 'string') {
15357    /**
15358     * The `index` argument converted from `string` to `number`.
15359     * @type {number}
15360     */
15361    var indexAsNumber = parseInt(index, 10);
15362    /**
15363     * Determines whether the `index` argument is a valid `number`
15364     * after being converted from the `string` type.
15365     * @type {boolean}
15366     */
15367
15368    var isValidNumber = isFinite(indexAsNumber);
15369    if (!isValidNumber) {
15370      throw new Error("The passed-in 'index' (string) couldn't be converted to 'number'. [".concat(index, "] given."));
15371    } // Knowing that the converted `index` is a valid number,
15372    // we can update the original argument's value.
15373
15374    index = indexAsNumber;
15375  }
15376  var swiper = this;
15377  var newIndex = index;
15378  if (swiper.params.loop) {
15379    newIndex += swiper.loopedSlides;
15380  }
15381  return swiper.slideTo(newIndex, speed, runCallbacks, internal);
15382}
15383
15384/***/ }),
15385
vendor: 1,249 bytes, lines 15386-15407
15386/***/ "./node_modules/swiper/core/transition/index.js":
15387/*!******************************************************!*\
15388  !*** ./node_modules/swiper/core/transition/index.js ***!
15389  \******************************************************/
15390/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15391
15392"use strict";
15393__webpack_require__.r(__webpack_exports__);
15394/* harmony import */ var _setTransition_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setTransition.js */ "./node_modules/swiper/core/transition/setTransition.js");
15395/* harmony import */ var _transitionStart_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./transitionStart.js */ "./node_modules/swiper/core/transition/transitionStart.js");
15396/* harmony import */ var _transitionEnd_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./transitionEnd.js */ "./node_modules/swiper/core/transition/transitionEnd.js");
15397
15398
15399
15400/* harmony default export */ __webpack_exports__["default"] = ({
15401  setTransition: _setTransition_js__WEBPACK_IMPORTED_MODULE_0__["default"],
15402  transitionStart: _transitionStart_js__WEBPACK_IMPORTED_MODULE_1__["default"],
15403  transitionEnd: _transitionEnd_js__WEBPACK_IMPORTED_MODULE_2__["default"]
15404});
15405
15406/***/ }),
15407
vendor: 819 bytes, lines 15408-15428
15408/***/ "./node_modules/swiper/core/transition/setTransition.js":
15409/*!**************************************************************!*\
15410  !*** ./node_modules/swiper/core/transition/setTransition.js ***!
15411  \**************************************************************/
15412/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15413
15414"use strict";
15415__webpack_require__.r(__webpack_exports__);
15416/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15417/* harmony export */   "default": function() { return /* binding */ setTransition; }
15418/* harmony export */ });
15419function setTransition(duration, byController) {
15420  var swiper = this;
15421  if (!swiper.params.cssMode) {
15422    swiper.$wrapperEl.transition(duration);
15423  }
15424  swiper.emit('setTransition', duration, byController);
15425}
15426
15427/***/ }),
15428
vendor: 1,428 bytes, lines 15429-15467
15429/***/ "./node_modules/swiper/core/transition/transitionEmit.js":
15430/*!***************************************************************!*\
15431  !*** ./node_modules/swiper/core/transition/transitionEmit.js ***!
15432  \***************************************************************/
15433/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15434
15435"use strict";
15436__webpack_require__.r(__webpack_exports__);
15437/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15438/* harmony export */   "default": function() { return /* binding */ transitionEmit; }
15439/* harmony export */ });
15440function transitionEmit(_ref) {
15441  var swiper = _ref.swiper,
15442    runCallbacks = _ref.runCallbacks,
15443    direction = _ref.direction,
15444    step = _ref.step;
15445  var activeIndex = swiper.activeIndex,
15446    previousIndex = swiper.previousIndex;
15447  var dir = direction;
15448  if (!dir) {
15449    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
15450  }
15451  swiper.emit("transition".concat(step));
15452  if (runCallbacks && activeIndex !== previousIndex) {
15453    if (dir === 'reset') {
15454      swiper.emit("slideResetTransition".concat(step));
15455      return;
15456    }
15457    swiper.emit("slideChangeTransition".concat(step));
15458    if (dir === 'next') {
15459      swiper.emit("slideNextTransition".concat(step));
15460    } else {
15461      swiper.emit("slidePrevTransition".concat(step));
15462    }
15463  }
15464}
15465
15466/***/ }),
15467
vendor: 1,288 bytes, lines 15468-15498
15468/***/ "./node_modules/swiper/core/transition/transitionEnd.js":
15469/*!**************************************************************!*\
15470  !*** ./node_modules/swiper/core/transition/transitionEnd.js ***!
15471  \**************************************************************/
15472/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15473
15474"use strict";
15475__webpack_require__.r(__webpack_exports__);
15476/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15477/* harmony export */   "default": function() { return /* binding */ transitionEnd; }
15478/* harmony export */ });
15479/* harmony import */ var _transitionEmit_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transitionEmit.js */ "./node_modules/swiper/core/transition/transitionEmit.js");
15480
15481function transitionEnd() {
15482  var runCallbacks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
15483  var direction = arguments.length > 1 ? arguments[1] : undefined;
15484  var swiper = this;
15485  var params = swiper.params;
15486  swiper.animating = false;
15487  if (params.cssMode) return;
15488  swiper.setTransition(0);
15489  (0,_transitionEmit_js__WEBPACK_IMPORTED_MODULE_0__["default"])({
15490    swiper: swiper,
15491    runCallbacks: runCallbacks,
15492    direction: direction,
15493    step: 'End'
15494  });
15495}
15496
15497/***/ }),
15498
vendor: 1,309 bytes, lines 15499-15530
15499/***/ "./node_modules/swiper/core/transition/transitionStart.js":
15500/*!****************************************************************!*\
15501  !*** ./node_modules/swiper/core/transition/transitionStart.js ***!
15502  \****************************************************************/
15503/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15504
15505"use strict";
15506__webpack_require__.r(__webpack_exports__);
15507/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15508/* harmony export */   "default": function() { return /* binding */ transitionStart; }
15509/* harmony export */ });
15510/* harmony import */ var _transitionEmit_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transitionEmit.js */ "./node_modules/swiper/core/transition/transitionEmit.js");
15511
15512function transitionStart() {
15513  var runCallbacks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
15514  var direction = arguments.length > 1 ? arguments[1] : undefined;
15515  var swiper = this;
15516  var params = swiper.params;
15517  if (params.cssMode) return;
15518  if (params.autoHeight) {
15519    swiper.updateAutoHeight();
15520  }
15521  (0,_transitionEmit_js__WEBPACK_IMPORTED_MODULE_0__["default"])({
15522    swiper: swiper,
15523    runCallbacks: runCallbacks,
15524    direction: direction,
15525    step: 'Start'
15526  });
15527}
15528
15529/***/ }),
15530
vendor: 1,392 bytes, lines 15531-15563
15531/***/ "./node_modules/swiper/core/translate/getTranslate.js":
15532/*!************************************************************!*\
15533  !*** ./node_modules/swiper/core/translate/getTranslate.js ***!
15534  \************************************************************/
15535/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15536
15537"use strict";
15538__webpack_require__.r(__webpack_exports__);
15539/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15540/* harmony export */   "default": function() { return /* binding */ getSwiperTranslate; }
15541/* harmony export */ });
15542/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
15543
15544function getSwiperTranslate() {
15545  var axis = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.isHorizontal() ? 'x' : 'y';
15546  var swiper = this;
15547  var params = swiper.params,
15548    rtl = swiper.rtlTranslate,
15549    translate = swiper.translate,
15550    $wrapperEl = swiper.$wrapperEl;
15551  if (params.virtualTranslate) {
15552    return rtl ? -translate : translate;
15553  }
15554  if (params.cssMode) {
15555    return translate;
15556  }
15557  var currentTranslate = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.getTranslate)($wrapperEl[0], axis);
15558  if (rtl) currentTranslate = -currentTranslate;
15559  return currentTranslate || 0;
15560}
15561
15562/***/ }),
15563
vendor: 1,712 bytes, lines 15564-15591
15564/***/ "./node_modules/swiper/core/translate/index.js":
15565/*!*****************************************************!*\
15566  !*** ./node_modules/swiper/core/translate/index.js ***!
15567  \*****************************************************/
15568/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15569
15570"use strict";
15571__webpack_require__.r(__webpack_exports__);
15572/* harmony import */ var _getTranslate_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getTranslate.js */ "./node_modules/swiper/core/translate/getTranslate.js");
15573/* harmony import */ var _setTranslate_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setTranslate.js */ "./node_modules/swiper/core/translate/setTranslate.js");
15574/* harmony import */ var _minTranslate_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./minTranslate.js */ "./node_modules/swiper/core/translate/minTranslate.js");
15575/* harmony import */ var _maxTranslate_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./maxTranslate.js */ "./node_modules/swiper/core/translate/maxTranslate.js");
15576/* harmony import */ var _translateTo_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./translateTo.js */ "./node_modules/swiper/core/translate/translateTo.js");
15577
15578
15579
15580
15581
15582/* harmony default export */ __webpack_exports__["default"] = ({
15583  getTranslate: _getTranslate_js__WEBPACK_IMPORTED_MODULE_0__["default"],
15584  setTranslate: _setTranslate_js__WEBPACK_IMPORTED_MODULE_1__["default"],
15585  minTranslate: _minTranslate_js__WEBPACK_IMPORTED_MODULE_2__["default"],
15586  maxTranslate: _maxTranslate_js__WEBPACK_IMPORTED_MODULE_3__["default"],
15587  translateTo: _translateTo_js__WEBPACK_IMPORTED_MODULE_4__["default"]
15588});
15589
15590/***/ }),
15591
vendor: 681 bytes, lines 15592-15608
15592/***/ "./node_modules/swiper/core/translate/maxTranslate.js":
15593/*!************************************************************!*\
15594  !*** ./node_modules/swiper/core/translate/maxTranslate.js ***!
15595  \************************************************************/
15596/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15597
15598"use strict";
15599__webpack_require__.r(__webpack_exports__);
15600/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15601/* harmony export */   "default": function() { return /* binding */ maxTranslate; }
15602/* harmony export */ });
15603function maxTranslate() {
15604  return -this.snapGrid[this.snapGrid.length - 1];
15605}
15606
15607/***/ }),
15608
vendor: 658 bytes, lines 15609-15625
15609/***/ "./node_modules/swiper/core/translate/minTranslate.js":
15610/*!************************************************************!*\
15611  !*** ./node_modules/swiper/core/translate/minTranslate.js ***!
15612  \************************************************************/
15613/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15614
15615"use strict";
15616__webpack_require__.r(__webpack_exports__);
15617/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15618/* harmony export */   "default": function() { return /* binding */ minTranslate; }
15619/* harmony export */ });
15620function minTranslate() {
15621  return -this.snapGrid[0];
15622}
15623
15624/***/ }),
15625
vendor: 1,828 bytes, lines 15626-15678
15626/***/ "./node_modules/swiper/core/translate/setTranslate.js":
15627/*!************************************************************!*\
15628  !*** ./node_modules/swiper/core/translate/setTranslate.js ***!
15629  \************************************************************/
15630/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15631
15632"use strict";
15633__webpack_require__.r(__webpack_exports__);
15634/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15635/* harmony export */   "default": function() { return /* binding */ setTranslate; }
15636/* harmony export */ });
15637function setTranslate(translate, byController) {
15638  var swiper = this;
15639  var rtl = swiper.rtlTranslate,
15640    params = swiper.params,
15641    $wrapperEl = swiper.$wrapperEl,
15642    wrapperEl = swiper.wrapperEl,
15643    progress = swiper.progress;
15644  var x = 0;
15645  var y = 0;
15646  var z = 0;
15647  if (swiper.isHorizontal()) {
15648    x = rtl ? -translate : translate;
15649  } else {
15650    y = translate;
15651  }
15652  if (params.roundLengths) {
15653    x = Math.floor(x);
15654    y = Math.floor(y);
15655  }
15656  if (params.cssMode) {
15657    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;
15658  } else if (!params.virtualTranslate) {
15659    $wrapperEl.transform("translate3d(".concat(x, "px, ").concat(y, "px, ").concat(z, "px)"));
15660  }
15661  swiper.previousTranslate = swiper.translate;
15662  swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress
15663
15664  var newProgress;
15665  var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
15666  if (translatesDiff === 0) {
15667    newProgress = 0;
15668  } else {
15669    newProgress = (translate - swiper.minTranslate()) / translatesDiff;
15670  }
15671  if (newProgress !== progress) {
15672    swiper.updateProgress(translate);
15673  }
15674  swiper.emit('setTranslate', swiper.translate, byController);
15675}
15676
15677/***/ }),
15678
vendor: 4,682 bytes, lines 15679-15768
15679/***/ "./node_modules/swiper/core/translate/translateTo.js":
15680/*!***********************************************************!*\
15681  !*** ./node_modules/swiper/core/translate/translateTo.js ***!
15682  \***********************************************************/
15683/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15684
15685"use strict";
15686__webpack_require__.r(__webpack_exports__);
15687/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15688/* harmony export */   "default": function() { return /* binding */ translateTo; }
15689/* harmony export */ });
15690/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
15691function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
15692function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
15693function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
15694function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
15695
15696function translateTo() {
15697  var translate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
15698  var speed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.params.speed;
15699  var runCallbacks = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
15700  var translateBounds = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
15701  var internal = arguments.length > 4 ? arguments[4] : undefined;
15702  var swiper = this;
15703  var params = swiper.params,
15704    wrapperEl = swiper.wrapperEl;
15705  if (swiper.animating && params.preventInteractionOnTransition) {
15706    return false;
15707  }
15708  var minTranslate = swiper.minTranslate();
15709  var maxTranslate = swiper.maxTranslate();
15710  var newTranslate;
15711  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress
15712
15713  swiper.updateProgress(newTranslate);
15714  if (params.cssMode) {
15715    var isH = swiper.isHorizontal();
15716    if (speed === 0) {
15717      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
15718    } else {
15719      if (!swiper.support.smoothScroll) {
15720        (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.animateCSSModeScroll)({
15721          swiper: swiper,
15722          targetPosition: -newTranslate,
15723          side: isH ? 'left' : 'top'
15724        });
15725        return true;
15726      }
15727      wrapperEl.scrollTo(_defineProperty(_defineProperty({}, isH ? 'left' : 'top', -newTranslate), "behavior", 'smooth'));
15728    }
15729    return true;
15730  }
15731  if (speed === 0) {
15732    swiper.setTransition(0);
15733    swiper.setTranslate(newTranslate);
15734    if (runCallbacks) {
15735      swiper.emit('beforeTransitionStart', speed, internal);
15736      swiper.emit('transitionEnd');
15737    }
15738  } else {
15739    swiper.setTransition(speed);
15740    swiper.setTranslate(newTranslate);
15741    if (runCallbacks) {
15742      swiper.emit('beforeTransitionStart', speed, internal);
15743      swiper.emit('transitionStart');
15744    }
15745    if (!swiper.animating) {
15746      swiper.animating = true;
15747      if (!swiper.onTranslateToWrapperTransitionEnd) {
15748        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {
15749          if (!swiper || swiper.destroyed) return;
15750          if (e.target !== this) return;
15751          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
15752          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
15753          swiper.onTranslateToWrapperTransitionEnd = null;
15754          delete swiper.onTranslateToWrapperTransitionEnd;
15755          if (runCallbacks) {
15756            swiper.emit('transitionEnd');
15757          }
15758        };
15759      }
15760      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
15761      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
15762    }
15763  }
15764  return true;
15765}
15766
15767/***/ }),
15768
vendor: 2,858 bytes, lines 15769-15808
15769/***/ "./node_modules/swiper/core/update/index.js":
15770/*!**************************************************!*\
15771  !*** ./node_modules/swiper/core/update/index.js ***!
15772  \**************************************************/
15773/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15774
15775"use strict";
15776__webpack_require__.r(__webpack_exports__);
15777/* harmony import */ var _updateSize_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./updateSize.js */ "./node_modules/swiper/core/update/updateSize.js");
15778/* harmony import */ var _updateSlides_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./updateSlides.js */ "./node_modules/swiper/core/update/updateSlides.js");
15779/* harmony import */ var _updateAutoHeight_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateAutoHeight.js */ "./node_modules/swiper/core/update/updateAutoHeight.js");
15780/* harmony import */ var _updateSlidesOffset_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./updateSlidesOffset.js */ "./node_modules/swiper/core/update/updateSlidesOffset.js");
15781/* harmony import */ var _updateSlidesProgress_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./updateSlidesProgress.js */ "./node_modules/swiper/core/update/updateSlidesProgress.js");
15782/* harmony import */ var _updateProgress_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./updateProgress.js */ "./node_modules/swiper/core/update/updateProgress.js");
15783/* harmony import */ var _updateSlidesClasses_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./updateSlidesClasses.js */ "./node_modules/swiper/core/update/updateSlidesClasses.js");
15784/* harmony import */ var _updateActiveIndex_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./updateActiveIndex.js */ "./node_modules/swiper/core/update/updateActiveIndex.js");
15785/* harmony import */ var _updateClickedSlide_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./updateClickedSlide.js */ "./node_modules/swiper/core/update/updateClickedSlide.js");
15786
15787
15788
15789
15790
15791
15792
15793
15794
15795/* harmony default export */ __webpack_exports__["default"] = ({
15796  updateSize: _updateSize_js__WEBPACK_IMPORTED_MODULE_0__["default"],
15797  updateSlides: _updateSlides_js__WEBPACK_IMPORTED_MODULE_1__["default"],
15798  updateAutoHeight: _updateAutoHeight_js__WEBPACK_IMPORTED_MODULE_2__["default"],
15799  updateSlidesOffset: _updateSlidesOffset_js__WEBPACK_IMPORTED_MODULE_3__["default"],
15800  updateSlidesProgress: _updateSlidesProgress_js__WEBPACK_IMPORTED_MODULE_4__["default"],
15801  updateProgress: _updateProgress_js__WEBPACK_IMPORTED_MODULE_5__["default"],
15802  updateSlidesClasses: _updateSlidesClasses_js__WEBPACK_IMPORTED_MODULE_6__["default"],
15803  updateActiveIndex: _updateActiveIndex_js__WEBPACK_IMPORTED_MODULE_7__["default"],
15804  updateClickedSlide: _updateClickedSlide_js__WEBPACK_IMPORTED_MODULE_8__["default"]
15805});
15806
15807/***/ }),
15808
vendor: 2,717 bytes, lines 15809-15881
15809/***/ "./node_modules/swiper/core/update/updateActiveIndex.js":
15810/*!**************************************************************!*\
15811  !*** ./node_modules/swiper/core/update/updateActiveIndex.js ***!
15812  \**************************************************************/
15813/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15814
15815"use strict";
15816__webpack_require__.r(__webpack_exports__);
15817/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15818/* harmony export */   "default": function() { return /* binding */ updateActiveIndex; }
15819/* harmony export */ });
15820function updateActiveIndex(newActiveIndex) {
15821  var swiper = this;
15822  var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
15823  var slidesGrid = swiper.slidesGrid,
15824    snapGrid = swiper.snapGrid,
15825    params = swiper.params,
15826    previousIndex = swiper.activeIndex,
15827    previousRealIndex = swiper.realIndex,
15828    previousSnapIndex = swiper.snapIndex;
15829  var activeIndex = newActiveIndex;
15830  var snapIndex;
15831  if (typeof activeIndex === 'undefined') {
15832    for (var i = 0; i < slidesGrid.length; i += 1) {
15833      if (typeof slidesGrid[i + 1] !== 'undefined') {
15834        if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {
15835          activeIndex = i;
15836        } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
15837          activeIndex = i + 1;
15838        }
15839      } else if (translate >= slidesGrid[i]) {
15840        activeIndex = i;
15841      }
15842    } // Normalize slideIndex
15843
15844    if (params.normalizeSlideIndex) {
15845      if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;
15846    }
15847  }
15848  if (snapGrid.indexOf(translate) >= 0) {
15849    snapIndex = snapGrid.indexOf(translate);
15850  } else {
15851    var skip = Math.min(params.slidesPerGroupSkip, activeIndex);
15852    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
15853  }
15854  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
15855  if (activeIndex === previousIndex) {
15856    if (snapIndex !== previousSnapIndex) {
15857      swiper.snapIndex = snapIndex;
15858      swiper.emit('snapIndexChange');
15859    }
15860    return;
15861  } // Get real index
15862
15863  var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);
15864  Object.assign(swiper, {
15865    snapIndex: snapIndex,
15866    realIndex: realIndex,
15867    previousIndex: previousIndex,
15868    activeIndex: activeIndex
15869  });
15870  swiper.emit('activeIndexChange');
15871  swiper.emit('snapIndexChange');
15872  if (previousRealIndex !== realIndex) {
15873    swiper.emit('realIndexChange');
15874  }
15875  if (swiper.initialized || swiper.params.runCallbacksOnInit) {
15876    swiper.emit('slideChange');
15877  }
15878}
15879
15880/***/ }),
15881
vendor: 2,405 bytes, lines 15882-15942
15882/***/ "./node_modules/swiper/core/update/updateAutoHeight.js":
15883/*!*************************************************************!*\
15884  !*** ./node_modules/swiper/core/update/updateAutoHeight.js ***!
15885  \*************************************************************/
15886/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15887
15888"use strict";
15889__webpack_require__.r(__webpack_exports__);
15890/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15891/* harmony export */   "default": function() { return /* binding */ updateAutoHeight; }
15892/* harmony export */ });
15893/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
15894
15895function updateAutoHeight(speed) {
15896  var swiper = this;
15897  var activeSlides = [];
15898  var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
15899  var newHeight = 0;
15900  var i;
15901  if (typeof speed === 'number') {
15902    swiper.setTransition(speed);
15903  } else if (speed === true) {
15904    swiper.setTransition(swiper.params.speed);
15905  }
15906  var getSlideByIndex = function getSlideByIndex(index) {
15907    if (isVirtual) {
15908      return swiper.slides.filter(function (el) {
15909        return parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index;
15910      })[0];
15911    }
15912    return swiper.slides.eq(index)[0];
15913  }; // Find slides currently in view
15914
15915  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
15916    if (swiper.params.centeredSlides) {
15917      (swiper.visibleSlides || (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])([])).each(function (slide) {
15918        activeSlides.push(slide);
15919      });
15920    } else {
15921      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
15922        var index = swiper.activeIndex + i;
15923        if (index > swiper.slides.length && !isVirtual) break;
15924        activeSlides.push(getSlideByIndex(index));
15925      }
15926    }
15927  } else {
15928    activeSlides.push(getSlideByIndex(swiper.activeIndex));
15929  } // Find new height from highest slide in view
15930
15931  for (i = 0; i < activeSlides.length; i += 1) {
15932    if (typeof activeSlides[i] !== 'undefined') {
15933      var height = activeSlides[i].offsetHeight;
15934      newHeight = height > newHeight ? height : newHeight;
15935    }
15936  } // Update Height
15937
15938  if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', "".concat(newHeight, "px"));
15939}
15940
15941/***/ }),
15942
vendor: 1,802 bytes, lines 15943-15989
15943/***/ "./node_modules/swiper/core/update/updateClickedSlide.js":
15944/*!***************************************************************!*\
15945  !*** ./node_modules/swiper/core/update/updateClickedSlide.js ***!
15946  \***************************************************************/
15947/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15948
15949"use strict";
15950__webpack_require__.r(__webpack_exports__);
15951/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15952/* harmony export */   "default": function() { return /* binding */ updateClickedSlide; }
15953/* harmony export */ });
15954/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
15955
15956function updateClickedSlide(e) {
15957  var swiper = this;
15958  var params = swiper.params;
15959  var slide = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(e).closest(".".concat(params.slideClass))[0];
15960  var slideFound = false;
15961  var slideIndex;
15962  if (slide) {
15963    for (var i = 0; i < swiper.slides.length; i += 1) {
15964      if (swiper.slides[i] === slide) {
15965        slideFound = true;
15966        slideIndex = i;
15967        break;
15968      }
15969    }
15970  }
15971  if (slide && slideFound) {
15972    swiper.clickedSlide = slide;
15973    if (swiper.virtual && swiper.params.virtual.enabled) {
15974      swiper.clickedIndex = parseInt((0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(slide).attr('data-swiper-slide-index'), 10);
15975    } else {
15976      swiper.clickedIndex = slideIndex;
15977    }
15978  } else {
15979    swiper.clickedSlide = undefined;
15980    swiper.clickedIndex = undefined;
15981    return;
15982  }
15983  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {
15984    swiper.slideToClickedSlide();
15985  }
15986}
15987
15988/***/ }),
15989
vendor: 1,857 bytes, lines 15990-16043
15990/***/ "./node_modules/swiper/core/update/updateProgress.js":
15991/*!***********************************************************!*\
15992  !*** ./node_modules/swiper/core/update/updateProgress.js ***!
15993  \***********************************************************/
15994/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
15995
15996"use strict";
15997__webpack_require__.r(__webpack_exports__);
15998/* harmony export */ __webpack_require__.d(__webpack_exports__, {
15999/* harmony export */   "default": function() { return /* binding */ updateProgress; }
16000/* harmony export */ });
16001function updateProgress(translate) {
16002  var swiper = this;
16003  if (typeof translate === 'undefined') {
16004    var multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line
16005
16006    translate = swiper && swiper.translate && swiper.translate * multiplier || 0;
16007  }
16008  var params = swiper.params;
16009  var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
16010  var progress = swiper.progress,
16011    isBeginning = swiper.isBeginning,
16012    isEnd = swiper.isEnd;
16013  var wasBeginning = isBeginning;
16014  var wasEnd = isEnd;
16015  if (translatesDiff === 0) {
16016    progress = 0;
16017    isBeginning = true;
16018    isEnd = true;
16019  } else {
16020    progress = (translate - swiper.minTranslate()) / translatesDiff;
16021    isBeginning = progress <= 0;
16022    isEnd = progress >= 1;
16023  }
16024  Object.assign(swiper, {
16025    progress: progress,
16026    isBeginning: isBeginning,
16027    isEnd: isEnd
16028  });
16029  if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);
16030  if (isBeginning && !wasBeginning) {
16031    swiper.emit('reachBeginning toEdge');
16032  }
16033  if (isEnd && !wasEnd) {
16034    swiper.emit('reachEnd toEdge');
16035  }
16036  if (wasBeginning && !isBeginning || wasEnd && !isEnd) {
16037    swiper.emit('fromEdge');
16038  }
16039  swiper.emit('progress', progress);
16040}
16041
16042/***/ }),
16043
vendor: 1,550 bytes, lines 16044-16086
16044/***/ "./node_modules/swiper/core/update/updateSize.js":
16045/*!*******************************************************!*\
16046  !*** ./node_modules/swiper/core/update/updateSize.js ***!
16047  \*******************************************************/
16048/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
16049
16050"use strict";
16051__webpack_require__.r(__webpack_exports__);
16052/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16053/* harmony export */   "default": function() { return /* binding */ updateSize; }
16054/* harmony export */ });
16055function updateSize() {
16056  var swiper = this;
16057  var width;
16058  var height;
16059  var $el = swiper.$el;
16060  if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {
16061    width = swiper.params.width;
16062  } else {
16063    width = $el[0].clientWidth;
16064  }
16065  if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {
16066    height = swiper.params.height;
16067  } else {
16068    height = $el[0].clientHeight;
16069  }
16070  if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {
16071    return;
16072  } // Subtract paddings
16073
16074  width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);
16075  height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);
16076  if (Number.isNaN(width)) width = 0;
16077  if (Number.isNaN(height)) height = 0;
16078  Object.assign(swiper, {
16079    width: width,
16080    height: height,
16081    size: swiper.isHorizontal() ? width : height
16082  });
16083}
16084
16085/***/ }),
16086
vendor: 12,535 bytes, lines 16087-16368
16087/***/ "./node_modules/swiper/core/update/updateSlides.js":
16088/*!*********************************************************!*\
16089  !*** ./node_modules/swiper/core/update/updateSlides.js ***!
16090  \*********************************************************/
16091/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
16092
16093"use strict";
16094__webpack_require__.r(__webpack_exports__);
16095/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16096/* harmony export */   "default": function() { return /* binding */ updateSlides; }
16097/* harmony export */ });
16098/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
16099function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
16100function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
16101function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
16102function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
16103
16104function updateSlides() {
16105  var swiper = this;
16106  function getDirectionLabel(property) {
16107    if (swiper.isHorizontal()) {
16108      return property;
16109    } // prettier-ignore
16110
16111    return {
16112      'width': 'height',
16113      'margin-top': 'margin-left',
16114      'margin-bottom ': 'margin-right',
16115      'margin-left': 'margin-top',
16116      'margin-right': 'margin-bottom',
16117      'padding-left': 'padding-top',
16118      'padding-right': 'padding-bottom',
16119      'marginRight': 'marginBottom'
16120    }[property];
16121  }
16122  function getDirectionPropertyValue(node, label) {
16123    return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);
16124  }
16125  var params = swiper.params;
16126  var $wrapperEl = swiper.$wrapperEl,
16127    swiperSize = swiper.size,
16128    rtl = swiper.rtlTranslate,
16129    wrongRTL = swiper.wrongRTL;
16130  var isVirtual = swiper.virtual && params.virtual.enabled;
16131  var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
16132  var slides = $wrapperEl.children(".".concat(swiper.params.slideClass));
16133  var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
16134  var snapGrid = [];
16135  var slidesGrid = [];
16136  var slidesSizesGrid = [];
16137  var offsetBefore = params.slidesOffsetBefore;
16138  if (typeof offsetBefore === 'function') {
16139    offsetBefore = params.slidesOffsetBefore.call(swiper);
16140  }
16141  var offsetAfter = params.slidesOffsetAfter;
16142  if (typeof offsetAfter === 'function') {
16143    offsetAfter = params.slidesOffsetAfter.call(swiper);
16144  }
16145  var previousSnapGridLength = swiper.snapGrid.length;
16146  var previousSlidesGridLength = swiper.slidesGrid.length;
16147  var spaceBetween = params.spaceBetween;
16148  var slidePosition = -offsetBefore;
16149  var prevSlideSize = 0;
16150  var index = 0;
16151  if (typeof swiperSize === 'undefined') {
16152    return;
16153  }
16154  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
16155    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;
16156  }
16157  swiper.virtualSize = -spaceBetween; // reset margins
16158
16159  if (rtl) slides.css({
16160    marginLeft: '',
16161    marginBottom: '',
16162    marginTop: ''
16163  });else slides.css({
16164    marginRight: '',
16165    marginBottom: '',
16166    marginTop: ''
16167  }); // reset cssMode offsets
16168
16169  if (params.centeredSlides && params.cssMode) {
16170    (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.setCSSProperty)(swiper.wrapperEl, '--swiper-centered-offset-before', '');
16171    (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.setCSSProperty)(swiper.wrapperEl, '--swiper-centered-offset-after', '');
16172  }
16173  var gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;
16174  if (gridEnabled) {
16175    swiper.grid.initSlides(slidesLength);
16176  } // Calc slides
16177
16178  var slideSize;
16179  var shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(function (key) {
16180    return typeof params.breakpoints[key].slidesPerView !== 'undefined';
16181  }).length > 0;
16182  for (var i = 0; i < slidesLength; i += 1) {
16183    slideSize = 0;
16184    var slide = slides.eq(i);
16185    if (gridEnabled) {
16186      swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);
16187    }
16188    if (slide.css('display') === 'none') continue; // eslint-disable-line
16189
16190    if (params.slidesPerView === 'auto') {
16191      if (shouldResetSlideSize) {
16192        slides[i].style[getDirectionLabel('width')] = "";
16193      }
16194      var slideStyles = getComputedStyle(slide[0]);
16195      var currentTransform = slide[0].style.transform;
16196      var currentWebKitTransform = slide[0].style.webkitTransform;
16197      if (currentTransform) {
16198        slide[0].style.transform = 'none';
16199      }
16200      if (currentWebKitTransform) {
16201        slide[0].style.webkitTransform = 'none';
16202      }
16203      if (params.roundLengths) {
16204        slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);
16205      } else {
16206        // eslint-disable-next-line
16207        var width = getDirectionPropertyValue(slideStyles, 'width');
16208        var paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');
16209        var paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');
16210        var marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');
16211        var marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');
16212        var boxSizing = slideStyles.getPropertyValue('box-sizing');
16213        if (boxSizing && boxSizing === 'border-box') {
16214          slideSize = width + marginLeft + marginRight;
16215        } else {
16216          var _slide$ = slide[0],
16217            clientWidth = _slide$.clientWidth,
16218            offsetWidth = _slide$.offsetWidth;
16219          slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);
16220        }
16221      }
16222      if (currentTransform) {
16223        slide[0].style.transform = currentTransform;
16224      }
16225      if (currentWebKitTransform) {
16226        slide[0].style.webkitTransform = currentWebKitTransform;
16227      }
16228      if (params.roundLengths) slideSize = Math.floor(slideSize);
16229    } else {
16230      slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;
16231      if (params.roundLengths) slideSize = Math.floor(slideSize);
16232      if (slides[i]) {
16233        slides[i].style[getDirectionLabel('width')] = "".concat(slideSize, "px");
16234      }
16235    }
16236    if (slides[i]) {
16237      slides[i].swiperSlideSize = slideSize;
16238    }
16239    slidesSizesGrid.push(slideSize);
16240    if (params.centeredSlides) {
16241      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;
16242      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
16243      if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
16244      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;
16245      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
16246      if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);
16247      slidesGrid.push(slidePosition);
16248    } else {
16249      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
16250      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);
16251      slidesGrid.push(slidePosition);
16252      slidePosition = slidePosition + slideSize + spaceBetween;
16253    }
16254    swiper.virtualSize += slideSize + spaceBetween;
16255    prevSlideSize = slideSize;
16256    index += 1;
16257  }
16258  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
16259  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
16260    $wrapperEl.css({
16261      width: "".concat(swiper.virtualSize + params.spaceBetween, "px")
16262    });
16263  }
16264  if (params.setWrapperSize) {
16265    $wrapperEl.css(_defineProperty({}, getDirectionLabel('width'), "".concat(swiper.virtualSize + params.spaceBetween, "px")));
16266  }
16267  if (gridEnabled) {
16268    swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);
16269  } // Remove last grid elements depending on width
16270
16271  if (!params.centeredSlides) {
16272    var newSlidesGrid = [];
16273    for (var _i = 0; _i < snapGrid.length; _i += 1) {
16274      var slidesGridItem = snapGrid[_i];
16275      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
16276      if (snapGrid[_i] <= swiper.virtualSize - swiperSize) {
16277        newSlidesGrid.push(slidesGridItem);
16278      }
16279    }
16280    snapGrid = newSlidesGrid;
16281    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
16282      snapGrid.push(swiper.virtualSize - swiperSize);
16283    }
16284  }
16285  if (snapGrid.length === 0) snapGrid = [0];
16286  if (params.spaceBetween !== 0) {
16287    var key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');
16288    slides.filter(function (_, slideIndex) {
16289      if (!params.cssMode) return true;
16290      if (slideIndex === slides.length - 1) {
16291        return false;
16292      }
16293      return true;
16294    }).css(_defineProperty({}, key, "".concat(spaceBetween, "px")));
16295  }
16296  if (params.centeredSlides && params.centeredSlidesBounds) {
16297    var allSlidesSize = 0;
16298    slidesSizesGrid.forEach(function (slideSizeValue) {
16299      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
16300    });
16301    allSlidesSize -= params.spaceBetween;
16302    var maxSnap = allSlidesSize - swiperSize;
16303    snapGrid = snapGrid.map(function (snap) {
16304      if (snap < 0) return -offsetBefore;
16305      if (snap > maxSnap) return maxSnap + offsetAfter;
16306      return snap;
16307    });
16308  }
16309  if (params.centerInsufficientSlides) {
16310    var _allSlidesSize = 0;
16311    slidesSizesGrid.forEach(function (slideSizeValue) {
16312      _allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
16313    });
16314    _allSlidesSize -= params.spaceBetween;
16315    if (_allSlidesSize < swiperSize) {
16316      var allSlidesOffset = (swiperSize - _allSlidesSize) / 2;
16317      snapGrid.forEach(function (snap, snapIndex) {
16318        snapGrid[snapIndex] = snap - allSlidesOffset;
16319      });
16320      slidesGrid.forEach(function (snap, snapIndex) {
16321        slidesGrid[snapIndex] = snap + allSlidesOffset;
16322      });
16323    }
16324  }
16325  Object.assign(swiper, {
16326    slides: slides,
16327    snapGrid: snapGrid,
16328    slidesGrid: slidesGrid,
16329    slidesSizesGrid: slidesSizesGrid
16330  });
16331  if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {
16332    (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.setCSSProperty)(swiper.wrapperEl, '--swiper-centered-offset-before', "".concat(-snapGrid[0], "px"));
16333    (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.setCSSProperty)(swiper.wrapperEl, '--swiper-centered-offset-after', "".concat(swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2, "px"));
16334    var addToSnapGrid = -swiper.snapGrid[0];
16335    var addToSlidesGrid = -swiper.slidesGrid[0];
16336    swiper.snapGrid = swiper.snapGrid.map(function (v) {
16337      return v + addToSnapGrid;
16338    });
16339    swiper.slidesGrid = swiper.slidesGrid.map(function (v) {
16340      return v + addToSlidesGrid;
16341    });
16342  }
16343  if (slidesLength !== previousSlidesLength) {
16344    swiper.emit('slidesLengthChange');
16345  }
16346  if (snapGrid.length !== previousSnapGridLength) {
16347    if (swiper.params.watchOverflow) swiper.checkOverflow();
16348    swiper.emit('snapGridLengthChange');
16349  }
16350  if (slidesGrid.length !== previousSlidesGridLength) {
16351    swiper.emit('slidesGridLengthChange');
16352  }
16353  if (params.watchSlidesProgress) {
16354    swiper.updateSlidesOffset();
16355  }
16356  if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {
16357    var backFaceHiddenClass = "".concat(params.containerModifierClass, "backface-hidden");
16358    var hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);
16359    if (slidesLength <= params.maxBackfaceHiddenSlides) {
16360      if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);
16361    } else if (hasClassBackfaceClassAdded) {
16362      swiper.$el.removeClass(backFaceHiddenClass);
16363    }
16364  }
16365}
16366
16367/***/ }),
16368
vendor: 3,675 bytes, lines 16369-16434
16369/***/ "./node_modules/swiper/core/update/updateSlidesClasses.js":
16370/*!****************************************************************!*\
16371  !*** ./node_modules/swiper/core/update/updateSlidesClasses.js ***!
16372  \****************************************************************/
16373/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
16374
16375"use strict";
16376__webpack_require__.r(__webpack_exports__);
16377/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16378/* harmony export */   "default": function() { return /* binding */ updateSlidesClasses; }
16379/* harmony export */ });
16380function updateSlidesClasses() {
16381  var swiper = this;
16382  var slides = swiper.slides,
16383    params = swiper.params,
16384    $wrapperEl = swiper.$wrapperEl,
16385    activeIndex = swiper.activeIndex,
16386    realIndex = swiper.realIndex;
16387  var isVirtual = swiper.virtual && params.virtual.enabled;
16388  slides.removeClass("".concat(params.slideActiveClass, " ").concat(params.slideNextClass, " ").concat(params.slidePrevClass, " ").concat(params.slideDuplicateActiveClass, " ").concat(params.slideDuplicateNextClass, " ").concat(params.slideDuplicatePrevClass));
16389  var activeSlide;
16390  if (isVirtual) {
16391    activeSlide = swiper.$wrapperEl.find(".".concat(params.slideClass, "[data-swiper-slide-index=\"").concat(activeIndex, "\"]"));
16392  } else {
16393    activeSlide = slides.eq(activeIndex);
16394  } // Active classes
16395
16396  activeSlide.addClass(params.slideActiveClass);
16397  if (params.loop) {
16398    // Duplicate to all looped slides
16399    if (activeSlide.hasClass(params.slideDuplicateClass)) {
16400      $wrapperEl.children(".".concat(params.slideClass, ":not(.").concat(params.slideDuplicateClass, ")[data-swiper-slide-index=\"").concat(realIndex, "\"]")).addClass(params.slideDuplicateActiveClass);
16401    } else {
16402      $wrapperEl.children(".".concat(params.slideClass, ".").concat(params.slideDuplicateClass, "[data-swiper-slide-index=\"").concat(realIndex, "\"]")).addClass(params.slideDuplicateActiveClass);
16403    }
16404  } // Next Slide
16405
16406  var nextSlide = activeSlide.nextAll(".".concat(params.slideClass)).eq(0).addClass(params.slideNextClass);
16407  if (params.loop && nextSlide.length === 0) {
16408    nextSlide = slides.eq(0);
16409    nextSlide.addClass(params.slideNextClass);
16410  } // Prev Slide
16411
16412  var prevSlide = activeSlide.prevAll(".".concat(params.slideClass)).eq(0).addClass(params.slidePrevClass);
16413  if (params.loop && prevSlide.length === 0) {
16414    prevSlide = slides.eq(-1);
16415    prevSlide.addClass(params.slidePrevClass);
16416  }
16417  if (params.loop) {
16418    // Duplicate to all looped slides
16419    if (nextSlide.hasClass(params.slideDuplicateClass)) {
16420      $wrapperEl.children(".".concat(params.slideClass, ":not(.").concat(params.slideDuplicateClass, ")[data-swiper-slide-index=\"").concat(nextSlide.attr('data-swiper-slide-index'), "\"]")).addClass(params.slideDuplicateNextClass);
16421    } else {
16422      $wrapperEl.children(".".concat(params.slideClass, ".").concat(params.slideDuplicateClass, "[data-swiper-slide-index=\"").concat(nextSlide.attr('data-swiper-slide-index'), "\"]")).addClass(params.slideDuplicateNextClass);
16423    }
16424    if (prevSlide.hasClass(params.slideDuplicateClass)) {
16425      $wrapperEl.children(".".concat(params.slideClass, ":not(.").concat(params.slideDuplicateClass, ")[data-swiper-slide-index=\"").concat(prevSlide.attr('data-swiper-slide-index'), "\"]")).addClass(params.slideDuplicatePrevClass);
16426    } else {
16427      $wrapperEl.children(".".concat(params.slideClass, ".").concat(params.slideDuplicateClass, "[data-swiper-slide-index=\"").concat(prevSlide.attr('data-swiper-slide-index'), "\"]")).addClass(params.slideDuplicatePrevClass);
16428    }
16429  }
16430  swiper.emitSlidesClasses();
16431}
16432
16433/***/ }),
16434
vendor: 858 bytes, lines 16435-16455
16435/***/ "./node_modules/swiper/core/update/updateSlidesOffset.js":
16436/*!***************************************************************!*\
16437  !*** ./node_modules/swiper/core/update/updateSlidesOffset.js ***!
16438  \***************************************************************/
16439/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
16440
16441"use strict";
16442__webpack_require__.r(__webpack_exports__);
16443/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16444/* harmony export */   "default": function() { return /* binding */ updateSlidesOffset; }
16445/* harmony export */ });
16446function updateSlidesOffset() {
16447  var swiper = this;
16448  var slides = swiper.slides;
16449  for (var i = 0; i < slides.length; i += 1) {
16450    slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;
16451  }
16452}
16453
16454/***/ }),
16455
vendor: 2,670 bytes, lines 16456-16507
16456/***/ "./node_modules/swiper/core/update/updateSlidesProgress.js":
16457/*!*****************************************************************!*\
16458  !*** ./node_modules/swiper/core/update/updateSlidesProgress.js ***!
16459  \*****************************************************************/
16460/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
16461
16462"use strict";
16463__webpack_require__.r(__webpack_exports__);
16464/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16465/* harmony export */   "default": function() { return /* binding */ updateSlidesProgress; }
16466/* harmony export */ });
16467/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
16468
16469function updateSlidesProgress() {
16470  var translate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this && this.translate || 0;
16471  var swiper = this;
16472  var params = swiper.params;
16473  var slides = swiper.slides,
16474    rtl = swiper.rtlTranslate,
16475    snapGrid = swiper.snapGrid;
16476  if (slides.length === 0) return;
16477  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();
16478  var offsetCenter = -translate;
16479  if (rtl) offsetCenter = translate; // Visible Slides
16480
16481  slides.removeClass(params.slideVisibleClass);
16482  swiper.visibleSlidesIndexes = [];
16483  swiper.visibleSlides = [];
16484  for (var i = 0; i < slides.length; i += 1) {
16485    var slide = slides[i];
16486    var slideOffset = slide.swiperSlideOffset;
16487    if (params.cssMode && params.centeredSlides) {
16488      slideOffset -= slides[0].swiperSlideOffset;
16489    }
16490    var slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);
16491    var originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);
16492    var slideBefore = -(offsetCenter - slideOffset);
16493    var slideAfter = slideBefore + swiper.slidesSizesGrid[i];
16494    var isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;
16495    if (isVisible) {
16496      swiper.visibleSlides.push(slide);
16497      swiper.visibleSlidesIndexes.push(i);
16498      slides.eq(i).addClass(params.slideVisibleClass);
16499    }
16500    slide.progress = rtl ? -slideProgress : slideProgress;
16501    slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;
16502  }
16503  swiper.visibleSlides = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.visibleSlides);
16504}
16505
16506/***/ }),
16507
vendor: 11,431 bytes, lines 16508-16818
16508/***/ "./node_modules/swiper/modules/a11y/a11y.js":
16509/*!**************************************************!*\
16510  !*** ./node_modules/swiper/modules/a11y/a11y.js ***!
16511  \**************************************************/
16512/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
16513
16514"use strict";
16515__webpack_require__.r(__webpack_exports__);
16516/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16517/* harmony export */   "default": function() { return /* binding */ A11y; }
16518/* harmony export */ });
16519/* harmony import */ var _shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/classes-to-selector.js */ "./node_modules/swiper/shared/classes-to-selector.js");
16520/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
16521
16522
16523function A11y(_ref) {
16524  var swiper = _ref.swiper,
16525    extendParams = _ref.extendParams,
16526    on = _ref.on;
16527  extendParams({
16528    a11y: {
16529      enabled: true,
16530      notificationClass: 'swiper-notification',
16531      prevSlideMessage: 'Previous slide',
16532      nextSlideMessage: 'Next slide',
16533      firstSlideMessage: 'This is the first slide',
16534      lastSlideMessage: 'This is the last slide',
16535      paginationBulletMessage: 'Go to slide {{index}}',
16536      slideLabelMessage: '{{index}} / {{slidesLength}}',
16537      containerMessage: null,
16538      containerRoleDescriptionMessage: null,
16539      itemRoleDescriptionMessage: null,
16540      slideRole: 'group',
16541      id: null
16542    }
16543  });
16544  swiper.a11y = {
16545    clicked: false
16546  };
16547  var liveRegion = null;
16548  function notify(message) {
16549    var notification = liveRegion;
16550    if (notification.length === 0) return;
16551    notification.html('');
16552    notification.html(message);
16553  }
16554  function getRandomNumber() {
16555    var size = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 16;
16556    var randomChar = function randomChar() {
16557      return Math.round(16 * Math.random()).toString(16);
16558    };
16559    return 'x'.repeat(size).replace(/x/g, randomChar);
16560  }
16561  function makeElFocusable($el) {
16562    $el.attr('tabIndex', '0');
16563  }
16564  function makeElNotFocusable($el) {
16565    $el.attr('tabIndex', '-1');
16566  }
16567  function addElRole($el, role) {
16568    $el.attr('role', role);
16569  }
16570  function addElRoleDescription($el, description) {
16571    $el.attr('aria-roledescription', description);
16572  }
16573  function addElControls($el, controls) {
16574    $el.attr('aria-controls', controls);
16575  }
16576  function addElLabel($el, label) {
16577    $el.attr('aria-label', label);
16578  }
16579  function addElId($el, id) {
16580    $el.attr('id', id);
16581  }
16582  function addElLive($el, live) {
16583    $el.attr('aria-live', live);
16584  }
16585  function disableEl($el) {
16586    $el.attr('aria-disabled', true);
16587  }
16588  function enableEl($el) {
16589    $el.attr('aria-disabled', false);
16590  }
16591  function onEnterOrSpaceKey(e) {
16592    if (e.keyCode !== 13 && e.keyCode !== 32) return;
16593    var params = swiper.params.a11y;
16594    var $targetEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target);
16595    if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {
16596      if (!(swiper.isEnd && !swiper.params.loop)) {
16597        swiper.slideNext();
16598      }
16599      if (swiper.isEnd) {
16600        notify(params.lastSlideMessage);
16601      } else {
16602        notify(params.nextSlideMessage);
16603      }
16604    }
16605    if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {
16606      if (!(swiper.isBeginning && !swiper.params.loop)) {
16607        swiper.slidePrev();
16608      }
16609      if (swiper.isBeginning) {
16610        notify(params.firstSlideMessage);
16611      } else {
16612        notify(params.prevSlideMessage);
16613      }
16614    }
16615    if (swiper.pagination && $targetEl.is((0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.params.pagination.bulletClass))) {
16616      $targetEl[0].click();
16617    }
16618  }
16619  function updateNavigation() {
16620    if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;
16621    var _swiper$navigation = swiper.navigation,
16622      $nextEl = _swiper$navigation.$nextEl,
16623      $prevEl = _swiper$navigation.$prevEl;
16624    if ($prevEl && $prevEl.length > 0) {
16625      if (swiper.isBeginning) {
16626        disableEl($prevEl);
16627        makeElNotFocusable($prevEl);
16628      } else {
16629        enableEl($prevEl);
16630        makeElFocusable($prevEl);
16631      }
16632    }
16633    if ($nextEl && $nextEl.length > 0) {
16634      if (swiper.isEnd) {
16635        disableEl($nextEl);
16636        makeElNotFocusable($nextEl);
16637      } else {
16638        enableEl($nextEl);
16639        makeElFocusable($nextEl);
16640      }
16641    }
16642  }
16643  function hasPagination() {
16644    return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;
16645  }
16646  function hasClickablePagination() {
16647    return hasPagination() && swiper.params.pagination.clickable;
16648  }
16649  function updatePagination() {
16650    var params = swiper.params.a11y;
16651    if (!hasPagination()) return;
16652    swiper.pagination.bullets.each(function (bulletEl) {
16653      var $bulletEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(bulletEl);
16654      if (swiper.params.pagination.clickable) {
16655        makeElFocusable($bulletEl);
16656        if (!swiper.params.pagination.renderBullet) {
16657          addElRole($bulletEl, 'button');
16658          addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1));
16659        }
16660      }
16661      if ($bulletEl.is(".".concat(swiper.params.pagination.bulletActiveClass))) {
16662        $bulletEl.attr('aria-current', 'true');
16663      } else {
16664        $bulletEl.removeAttr('aria-current');
16665      }
16666    });
16667  }
16668  var initNavEl = function initNavEl($el, wrapperId, message) {
16669    makeElFocusable($el);
16670    if ($el[0].tagName !== 'BUTTON') {
16671      addElRole($el, 'button');
16672      $el.on('keydown', onEnterOrSpaceKey);
16673    }
16674    addElLabel($el, message);
16675    addElControls($el, wrapperId);
16676  };
16677  var handlePointerDown = function handlePointerDown() {
16678    swiper.a11y.clicked = true;
16679  };
16680  var handlePointerUp = function handlePointerUp() {
16681    requestAnimationFrame(function () {
16682      requestAnimationFrame(function () {
16683        if (!swiper.destroyed) {
16684          swiper.a11y.clicked = false;
16685        }
16686      });
16687    });
16688  };
16689  var handleFocus = function handleFocus(e) {
16690    if (swiper.a11y.clicked) return;
16691    var slideEl = e.target.closest(".".concat(swiper.params.slideClass));
16692    if (!slideEl || !swiper.slides.includes(slideEl)) return;
16693    var isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;
16694    var isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);
16695    if (isActive || isVisible) return;
16696    if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;
16697    if (swiper.isHorizontal()) {
16698      swiper.el.scrollLeft = 0;
16699    } else {
16700      swiper.el.scrollTop = 0;
16701    }
16702    swiper.slideTo(swiper.slides.indexOf(slideEl), 0);
16703  };
16704  var initSlides = function initSlides() {
16705    var params = swiper.params.a11y;
16706    if (params.itemRoleDescriptionMessage) {
16707      addElRoleDescription((0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(swiper.slides), params.itemRoleDescriptionMessage);
16708    }
16709    if (params.slideRole) {
16710      addElRole((0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(swiper.slides), params.slideRole);
16711    }
16712    var slidesLength = swiper.params.loop ? swiper.slides.filter(function (el) {
16713      return !el.classList.contains(swiper.params.slideDuplicateClass);
16714    }).length : swiper.slides.length;
16715    if (params.slideLabelMessage) {
16716      swiper.slides.each(function (slideEl, index) {
16717        var $slideEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(slideEl);
16718        var slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index;
16719        var ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength);
16720        addElLabel($slideEl, ariaLabelMessage);
16721      });
16722    }
16723  };
16724  var init = function init() {
16725    var params = swiper.params.a11y;
16726    swiper.$el.append(liveRegion); // Container
16727
16728    var $containerEl = swiper.$el;
16729    if (params.containerRoleDescriptionMessage) {
16730      addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);
16731    }
16732    if (params.containerMessage) {
16733      addElLabel($containerEl, params.containerMessage);
16734    } // Wrapper
16735
16736    var $wrapperEl = swiper.$wrapperEl;
16737    var wrapperId = params.id || $wrapperEl.attr('id') || "swiper-wrapper-".concat(getRandomNumber(16));
16738    var live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';
16739    addElId($wrapperEl, wrapperId);
16740    addElLive($wrapperEl, live); // Slide
16741
16742    initSlides(); // Navigation
16743
16744    var $nextEl;
16745    var $prevEl;
16746    if (swiper.navigation && swiper.navigation.$nextEl) {
16747      $nextEl = swiper.navigation.$nextEl;
16748    }
16749    if (swiper.navigation && swiper.navigation.$prevEl) {
16750      $prevEl = swiper.navigation.$prevEl;
16751    }
16752    if ($nextEl && $nextEl.length) {
16753      initNavEl($nextEl, wrapperId, params.nextSlideMessage);
16754    }
16755    if ($prevEl && $prevEl.length) {
16756      initNavEl($prevEl, wrapperId, params.prevSlideMessage);
16757    } // Pagination
16758
16759    if (hasClickablePagination()) {
16760      swiper.pagination.$el.on('keydown', (0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);
16761    } // Tab focus
16762
16763    swiper.$el.on('focus', handleFocus, true);
16764    swiper.$el.on('pointerdown', handlePointerDown, true);
16765    swiper.$el.on('pointerup', handlePointerUp, true);
16766  };
16767  function destroy() {
16768    if (liveRegion && liveRegion.length > 0) liveRegion.remove();
16769    var $nextEl;
16770    var $prevEl;
16771    if (swiper.navigation && swiper.navigation.$nextEl) {
16772      $nextEl = swiper.navigation.$nextEl;
16773    }
16774    if (swiper.navigation && swiper.navigation.$prevEl) {
16775      $prevEl = swiper.navigation.$prevEl;
16776    }
16777    if ($nextEl) {
16778      $nextEl.off('keydown', onEnterOrSpaceKey);
16779    }
16780    if ($prevEl) {
16781      $prevEl.off('keydown', onEnterOrSpaceKey);
16782    } // Pagination
16783
16784    if (hasClickablePagination()) {
16785      swiper.pagination.$el.off('keydown', (0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);
16786    } // Tab focus
16787
16788    swiper.$el.off('focus', handleFocus, true);
16789    swiper.$el.off('pointerdown', handlePointerDown, true);
16790    swiper.$el.off('pointerup', handlePointerUp, true);
16791  }
16792  on('beforeInit', function () {
16793    liveRegion = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])("<span class=\"".concat(swiper.params.a11y.notificationClass, "\" aria-live=\"assertive\" aria-atomic=\"true\"></span>"));
16794  });
16795  on('afterInit', function () {
16796    if (!swiper.params.a11y.enabled) return;
16797    init();
16798  });
16799  on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', function () {
16800    if (!swiper.params.a11y.enabled) return;
16801    initSlides();
16802  });
16803  on('fromEdge toEdge afterInit lock unlock', function () {
16804    if (!swiper.params.a11y.enabled) return;
16805    updateNavigation();
16806  });
16807  on('paginationUpdate', function () {
16808    if (!swiper.params.a11y.enabled) return;
16809    updatePagination();
16810  });
16811  on('destroy', function () {
16812    if (!swiper.params.a11y.enabled) return;
16813    destroy();
16814  });
16815}
16816
16817/***/ }),
16818
vendor: 7,092 bytes, lines 16819-17037
16819/***/ "./node_modules/swiper/modules/autoplay/autoplay.js":
16820/*!**********************************************************!*\
16821  !*** ./node_modules/swiper/modules/autoplay/autoplay.js ***!
16822  \**********************************************************/
16823/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
16824
16825"use strict";
16826__webpack_require__.r(__webpack_exports__);
16827/* harmony export */ __webpack_require__.d(__webpack_exports__, {
16828/* harmony export */   "default": function() { return /* binding */ Autoplay; }
16829/* harmony export */ });
16830/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
16831/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
16832/* eslint no-underscore-dangle: "off" */
16833
16834/* eslint no-use-before-define: "off" */
16835
16836
16837function Autoplay(_ref) {
16838  var swiper = _ref.swiper,
16839    extendParams = _ref.extendParams,
16840    on = _ref.on,
16841    emit = _ref.emit;
16842  var timeout;
16843  swiper.autoplay = {
16844    running: false,
16845    paused: false
16846  };
16847  extendParams({
16848    autoplay: {
16849      enabled: false,
16850      delay: 3000,
16851      waitForTransition: true,
16852      disableOnInteraction: true,
16853      stopOnLastSlide: false,
16854      reverseDirection: false,
16855      pauseOnMouseEnter: false
16856    }
16857  });
16858  function run() {
16859    if (!swiper.size) {
16860      swiper.autoplay.running = false;
16861      swiper.autoplay.paused = false;
16862      return;
16863    }
16864    var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);
16865    var delay = swiper.params.autoplay.delay;
16866    if ($activeSlideEl.attr('data-swiper-autoplay')) {
16867      delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;
16868    }
16869    clearTimeout(timeout);
16870    timeout = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.nextTick)(function () {
16871      var autoplayResult;
16872      if (swiper.params.autoplay.reverseDirection) {
16873        if (swiper.params.loop) {
16874          swiper.loopFix();
16875          autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);
16876          emit('autoplay');
16877        } else if (!swiper.isBeginning) {
16878          autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);
16879          emit('autoplay');
16880        } else if (!swiper.params.autoplay.stopOnLastSlide) {
16881          autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);
16882          emit('autoplay');
16883        } else {
16884          stop();
16885        }
16886      } else if (swiper.params.loop) {
16887        swiper.loopFix();
16888        autoplayResult = swiper.slideNext(swiper.params.speed, true, true);
16889        emit('autoplay');
16890      } else if (!swiper.isEnd) {
16891        autoplayResult = swiper.slideNext(swiper.params.speed, true, true);
16892        emit('autoplay');
16893      } else if (!swiper.params.autoplay.stopOnLastSlide) {
16894        autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);
16895        emit('autoplay');
16896      } else {
16897        stop();
16898      }
16899      if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) {
16900        run();
16901      }
16902    }, delay);
16903  }
16904  function start() {
16905    if (typeof timeout !== 'undefined') return false;
16906    if (swiper.autoplay.running) return false;
16907    swiper.autoplay.running = true;
16908    emit('autoplayStart');
16909    run();
16910    return true;
16911  }
16912  function stop() {
16913    if (!swiper.autoplay.running) return false;
16914    if (typeof timeout === 'undefined') return false;
16915    if (timeout) {
16916      clearTimeout(timeout);
16917      timeout = undefined;
16918    }
16919    swiper.autoplay.running = false;
16920    emit('autoplayStop');
16921    return true;
16922  }
16923  function pause(speed) {
16924    if (!swiper.autoplay.running) return;
16925    if (swiper.autoplay.paused) return;
16926    if (timeout) clearTimeout(timeout);
16927    swiper.autoplay.paused = true;
16928    if (speed === 0 || !swiper.params.autoplay.waitForTransition) {
16929      swiper.autoplay.paused = false;
16930      run();
16931    } else {
16932      ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {
16933        swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);
16934      });
16935    }
16936  }
16937  function onVisibilityChange() {
16938    var document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
16939    if (document.visibilityState === 'hidden' && swiper.autoplay.running) {
16940      pause();
16941    }
16942    if (document.visibilityState === 'visible' && swiper.autoplay.paused) {
16943      run();
16944      swiper.autoplay.paused = false;
16945    }
16946  }
16947  function onTransitionEnd(e) {
16948    if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;
16949    if (e.target !== swiper.$wrapperEl[0]) return;
16950    ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {
16951      swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);
16952    });
16953    swiper.autoplay.paused = false;
16954    if (!swiper.autoplay.running) {
16955      stop();
16956    } else {
16957      run();
16958    }
16959  }
16960  function onMouseEnter() {
16961    if (swiper.params.autoplay.disableOnInteraction) {
16962      stop();
16963    } else {
16964      emit('autoplayPause');
16965      pause();
16966    }
16967    ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {
16968      swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);
16969    });
16970  }
16971  function onMouseLeave() {
16972    if (swiper.params.autoplay.disableOnInteraction) {
16973      return;
16974    }
16975    swiper.autoplay.paused = false;
16976    emit('autoplayResume');
16977    run();
16978  }
16979  function attachMouseEvents() {
16980    if (swiper.params.autoplay.pauseOnMouseEnter) {
16981      swiper.$el.on('mouseenter', onMouseEnter);
16982      swiper.$el.on('mouseleave', onMouseLeave);
16983    }
16984  }
16985  function detachMouseEvents() {
16986    swiper.$el.off('mouseenter', onMouseEnter);
16987    swiper.$el.off('mouseleave', onMouseLeave);
16988  }
16989  on('init', function () {
16990    if (swiper.params.autoplay.enabled) {
16991      start();
16992      var document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
16993      document.addEventListener('visibilitychange', onVisibilityChange);
16994      attachMouseEvents();
16995    }
16996  });
16997  on('beforeTransitionStart', function (_s, speed, internal) {
16998    if (swiper.autoplay.running) {
16999      if (internal || !swiper.params.autoplay.disableOnInteraction) {
17000        swiper.autoplay.pause(speed);
17001      } else {
17002        stop();
17003      }
17004    }
17005  });
17006  on('sliderFirstMove', function () {
17007    if (swiper.autoplay.running) {
17008      if (swiper.params.autoplay.disableOnInteraction) {
17009        stop();
17010      } else {
17011        pause();
17012      }
17013    }
17014  });
17015  on('touchEnd', function () {
17016    if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {
17017      run();
17018    }
17019  });
17020  on('destroy', function () {
17021    detachMouseEvents();
17022    if (swiper.autoplay.running) {
17023      stop();
17024    }
17025    var document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
17026    document.removeEventListener('visibilitychange', onVisibilityChange);
17027  });
17028  Object.assign(swiper.autoplay, {
17029    pause: pause,
17030    run: run,
17031    start: start,
17032    stop: stop
17033  });
17034}
17035
17036/***/ }),
17037
vendor: 6,520 bytes, lines 17038-17215
17038/***/ "./node_modules/swiper/modules/controller/controller.js":
17039/*!**************************************************************!*\
17040  !*** ./node_modules/swiper/modules/controller/controller.js ***!
17041  \**************************************************************/
17042/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
17043
17044"use strict";
17045__webpack_require__.r(__webpack_exports__);
17046/* harmony export */ __webpack_require__.d(__webpack_exports__, {
17047/* harmony export */   "default": function() { return /* binding */ Controller; }
17048/* harmony export */ });
17049/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
17050/* eslint no-bitwise: ["error", { "allow": [">>"] }] */
17051
17052function Controller(_ref) {
17053  var swiper = _ref.swiper,
17054    extendParams = _ref.extendParams,
17055    on = _ref.on;
17056  extendParams({
17057    controller: {
17058      control: undefined,
17059      inverse: false,
17060      by: 'slide' // or 'container'
17061    }
17062  });
17063  swiper.controller = {
17064    control: undefined
17065  };
17066  function LinearSpline(x, y) {
17067    var binarySearch = function search() {
17068      var maxIndex;
17069      var minIndex;
17070      var guess;
17071      return function (array, val) {
17072        minIndex = -1;
17073        maxIndex = array.length;
17074        while (maxIndex - minIndex > 1) {
17075          guess = maxIndex + minIndex >> 1;
17076          if (array[guess] <= val) {
17077            minIndex = guess;
17078          } else {
17079            maxIndex = guess;
17080          }
17081        }
17082        return maxIndex;
17083      };
17084    }();
17085    this.x = x;
17086    this.y = y;
17087    this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:
17088    // (x1,y1) is the known point before given value,
17089    // (x3,y3) is the known point after given value.
17090
17091    var i1;
17092    var i3;
17093    this.interpolate = function interpolate(x2) {
17094      if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):
17095
17096      i3 = binarySearch(this.x, x2);
17097      i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:
17098      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1
17099
17100      return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];
17101    };
17102    return this;
17103  } // xxx: for now i will just save one spline function to to
17104
17105  function getInterpolateFunction(c) {
17106    if (!swiper.controller.spline) {
17107      swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);
17108    }
17109  }
17110  function setTranslate(_t, byController) {
17111    var controlled = swiper.controller.control;
17112    var multiplier;
17113    var controlledTranslate;
17114    var Swiper = swiper.constructor;
17115    function setControlledTranslate(c) {
17116      // this will create an Interpolate function based on the snapGrids
17117      // x is the Grid of the scrolled scroller and y will be the controlled scroller
17118      // it makes sense to create this only once and recall it for the interpolation
17119      // the function does a lot of value caching for performance
17120      var translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;
17121      if (swiper.params.controller.by === 'slide') {
17122        getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid
17123        // but it did not work out
17124
17125        controlledTranslate = -swiper.controller.spline.interpolate(-translate);
17126      }
17127      if (!controlledTranslate || swiper.params.controller.by === 'container') {
17128        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
17129        controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();
17130      }
17131      if (swiper.params.controller.inverse) {
17132        controlledTranslate = c.maxTranslate() - controlledTranslate;
17133      }
17134      c.updateProgress(controlledTranslate);
17135      c.setTranslate(controlledTranslate, swiper);
17136      c.updateActiveIndex();
17137      c.updateSlidesClasses();
17138    }
17139    if (Array.isArray(controlled)) {
17140      for (var i = 0; i < controlled.length; i += 1) {
17141        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
17142          setControlledTranslate(controlled[i]);
17143        }
17144      }
17145    } else if (controlled instanceof Swiper && byController !== controlled) {
17146      setControlledTranslate(controlled);
17147    }
17148  }
17149  function setTransition(duration, byController) {
17150    var Swiper = swiper.constructor;
17151    var controlled = swiper.controller.control;
17152    var i;
17153    function setControlledTransition(c) {
17154      c.setTransition(duration, swiper);
17155      if (duration !== 0) {
17156        c.transitionStart();
17157        if (c.params.autoHeight) {
17158          (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.nextTick)(function () {
17159            c.updateAutoHeight();
17160          });
17161        }
17162        c.$wrapperEl.transitionEnd(function () {
17163          if (!controlled) return;
17164          if (c.params.loop && swiper.params.controller.by === 'slide') {
17165            c.loopFix();
17166          }
17167          c.transitionEnd();
17168        });
17169      }
17170    }
17171    if (Array.isArray(controlled)) {
17172      for (i = 0; i < controlled.length; i += 1) {
17173        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
17174          setControlledTransition(controlled[i]);
17175        }
17176      }
17177    } else if (controlled instanceof Swiper && byController !== controlled) {
17178      setControlledTransition(controlled);
17179    }
17180  }
17181  function removeSpline() {
17182    if (!swiper.controller.control) return;
17183    if (swiper.controller.spline) {
17184      swiper.controller.spline = undefined;
17185      delete swiper.controller.spline;
17186    }
17187  }
17188  on('beforeInit', function () {
17189    swiper.controller.control = swiper.params.controller.control;
17190  });
17191  on('update', function () {
17192    removeSpline();
17193  });
17194  on('resize', function () {
17195    removeSpline();
17196  });
17197  on('observerUpdate', function () {
17198    removeSpline();
17199  });
17200  on('setTranslate', function (_s, translate, byController) {
17201    if (!swiper.controller.control) return;
17202    swiper.controller.setTranslate(translate, byController);
17203  });
17204  on('setTransition', function (_s, duration, byController) {
17205    if (!swiper.controller.control) return;
17206    swiper.controller.setTransition(duration, byController);
17207  });
17208  Object.assign(swiper.controller, {
17209    setTranslate: setTranslate,
17210    setTransition: setTransition
17211  });
17212}
17213
17214/***/ }),
17215
vendor: 6,046 bytes, lines 17216-17341
17216/***/ "./node_modules/swiper/modules/effect-cards/effect-cards.js":
17217/*!******************************************************************!*\
17218  !*** ./node_modules/swiper/modules/effect-cards/effect-cards.js ***!
17219  \******************************************************************/
17220/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
17221
17222"use strict";
17223__webpack_require__.r(__webpack_exports__);
17224/* harmony export */ __webpack_require__.d(__webpack_exports__, {
17225/* harmony export */   "default": function() { return /* binding */ EffectCards; }
17226/* harmony export */ });
17227/* harmony import */ var _shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/create-shadow.js */ "./node_modules/swiper/shared/create-shadow.js");
17228/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
17229/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js");
17230/* harmony import */ var _shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../shared/effect-virtual-transition-end.js */ "./node_modules/swiper/shared/effect-virtual-transition-end.js");
17231
17232
17233
17234
17235function EffectCards(_ref) {
17236  var swiper = _ref.swiper,
17237    extendParams = _ref.extendParams,
17238    on = _ref.on;
17239  extendParams({
17240    cardsEffect: {
17241      slideShadows: true,
17242      transformEl: null,
17243      rotate: true,
17244      perSlideRotate: 2,
17245      perSlideOffset: 8
17246    }
17247  });
17248  var setTranslate = function setTranslate() {
17249    var slides = swiper.slides,
17250      activeIndex = swiper.activeIndex;
17251    var params = swiper.params.cardsEffect;
17252    var _swiper$touchEventsDa = swiper.touchEventsData,
17253      startTranslate = _swiper$touchEventsDa.startTranslate,
17254      isTouched = _swiper$touchEventsDa.isTouched;
17255    var currentTranslate = swiper.translate;
17256    for (var i = 0; i < slides.length; i += 1) {
17257      var $slideEl = slides.eq(i);
17258      var slideProgress = $slideEl[0].progress;
17259      var progress = Math.min(Math.max(slideProgress, -4), 4);
17260      var offset = $slideEl[0].swiperSlideOffset;
17261      if (swiper.params.centeredSlides && !swiper.params.cssMode) {
17262        swiper.$wrapperEl.transform("translateX(".concat(swiper.minTranslate(), "px)"));
17263      }
17264      if (swiper.params.centeredSlides && swiper.params.cssMode) {
17265        offset -= slides[0].swiperSlideOffset;
17266      }
17267      var tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;
17268      var tY = 0;
17269      var tZ = -100 * Math.abs(progress);
17270      var scale = 1;
17271      var rotate = -params.perSlideRotate * progress;
17272      var tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;
17273      var slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;
17274      var isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;
17275      var isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;
17276      if (isSwipeToNext || isSwipeToPrev) {
17277        var subProgress = Math.pow(1 - Math.abs((Math.abs(progress) - 0.5) / 0.5), 0.5);
17278        rotate += -28 * progress * subProgress;
17279        scale += -0.5 * subProgress;
17280        tXAdd += 96 * subProgress;
17281        tY = "".concat(-25 * subProgress * Math.abs(progress), "%");
17282      }
17283      if (progress < 0) {
17284        // next
17285        tX = "calc(".concat(tX, "px + (").concat(tXAdd * Math.abs(progress), "%))");
17286      } else if (progress > 0) {
17287        // prev
17288        tX = "calc(".concat(tX, "px + (-").concat(tXAdd * Math.abs(progress), "%))");
17289      } else {
17290        tX = "".concat(tX, "px");
17291      }
17292      if (!swiper.isHorizontal()) {
17293        var prevY = tY;
17294        tY = tX;
17295        tX = prevY;
17296      }
17297      var scaleString = progress < 0 ? "".concat(1 + (1 - scale) * progress) : "".concat(1 - (1 - scale) * progress);
17298      var transform = "\n        translate3d(".concat(tX, ", ").concat(tY, ", ").concat(tZ, "px)\n        rotateZ(").concat(params.rotate ? rotate : 0, "deg)\n        scale(").concat(scaleString, ")\n      ");
17299      if (params.slideShadows) {
17300        // Set shadows
17301        var $shadowEl = $slideEl.find('.swiper-slide-shadow');
17302        if ($shadowEl.length === 0) {
17303          $shadowEl = (0,_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params, $slideEl);
17304        }
17305        if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);
17306      }
17307      $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;
17308      var $targetEl = (0,_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__["default"])(params, $slideEl);
17309      $targetEl.transform(transform);
17310    }
17311  };
17312  var setTransition = function setTransition(duration) {
17313    var transformEl = swiper.params.cardsEffect.transformEl;
17314    var $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;
17315    $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);
17316    (0,_shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_3__["default"])({
17317      swiper: swiper,
17318      duration: duration,
17319      transformEl: transformEl
17320    });
17321  };
17322  (0,_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__["default"])({
17323    effect: 'cards',
17324    swiper: swiper,
17325    on: on,
17326    setTranslate: setTranslate,
17327    setTransition: setTransition,
17328    perspective: function perspective() {
17329      return true;
17330    },
17331    overwriteParams: function overwriteParams() {
17332      return {
17333        watchSlidesProgress: true,
17334        virtualTranslate: !swiper.params.cssMode
17335      };
17336    }
17337  });
17338}
17339
17340/***/ }),
17341
vendor: 5,729 bytes, lines 17342-17453
17342/***/ "./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js":
17343/*!**************************************************************************!*\
17344  !*** ./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js ***!
17345  \**************************************************************************/
17346/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
17347
17348"use strict";
17349__webpack_require__.r(__webpack_exports__);
17350/* harmony export */ __webpack_require__.d(__webpack_exports__, {
17351/* harmony export */   "default": function() { return /* binding */ EffectCoverflow; }
17352/* harmony export */ });
17353/* harmony import */ var _shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/create-shadow.js */ "./node_modules/swiper/shared/create-shadow.js");
17354/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
17355/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js");
17356
17357
17358
17359function EffectCoverflow(_ref) {
17360  var swiper = _ref.swiper,
17361    extendParams = _ref.extendParams,
17362    on = _ref.on;
17363  extendParams({
17364    coverflowEffect: {
17365      rotate: 50,
17366      stretch: 0,
17367      depth: 100,
17368      scale: 1,
17369      modifier: 1,
17370      slideShadows: true,
17371      transformEl: null
17372    }
17373  });
17374  var setTranslate = function setTranslate() {
17375    var swiperWidth = swiper.width,
17376      swiperHeight = swiper.height,
17377      slides = swiper.slides,
17378      slidesSizesGrid = swiper.slidesSizesGrid;
17379    var params = swiper.params.coverflowEffect;
17380    var isHorizontal = swiper.isHorizontal();
17381    var transform = swiper.translate;
17382    var center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;
17383    var rotate = isHorizontal ? params.rotate : -params.rotate;
17384    var translate = params.depth; // Each slide offset from center
17385
17386    for (var i = 0, length = slides.length; i < length; i += 1) {
17387      var $slideEl = slides.eq(i);
17388      var slideSize = slidesSizesGrid[i];
17389      var slideOffset = $slideEl[0].swiperSlideOffset;
17390      var centerOffset = (center - slideOffset - slideSize / 2) / slideSize;
17391      var offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;
17392      var rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
17393      var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0
17394
17395      var translateZ = -translate * Math.abs(offsetMultiplier);
17396      var stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders
17397
17398      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {
17399        stretch = parseFloat(params.stretch) / 100 * slideSize;
17400      }
17401      var translateY = isHorizontal ? 0 : stretch * offsetMultiplier;
17402      var translateX = isHorizontal ? stretch * offsetMultiplier : 0;
17403      var scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values
17404
17405      if (Math.abs(translateX) < 0.001) translateX = 0;
17406      if (Math.abs(translateY) < 0.001) translateY = 0;
17407      if (Math.abs(translateZ) < 0.001) translateZ = 0;
17408      if (Math.abs(rotateY) < 0.001) rotateY = 0;
17409      if (Math.abs(rotateX) < 0.001) rotateX = 0;
17410      if (Math.abs(scale) < 0.001) scale = 0;
17411      var slideTransform = "translate3d(".concat(translateX, "px,").concat(translateY, "px,").concat(translateZ, "px)  rotateX(").concat(rotateX, "deg) rotateY(").concat(rotateY, "deg) scale(").concat(scale, ")");
17412      var $targetEl = (0,_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__["default"])(params, $slideEl);
17413      $targetEl.transform(slideTransform);
17414      $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
17415      if (params.slideShadows) {
17416        // Set shadows
17417        var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
17418        var $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
17419        if ($shadowBeforeEl.length === 0) {
17420          $shadowBeforeEl = (0,_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params, $slideEl, isHorizontal ? 'left' : 'top');
17421        }
17422        if ($shadowAfterEl.length === 0) {
17423          $shadowAfterEl = (0,_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params, $slideEl, isHorizontal ? 'right' : 'bottom');
17424        }
17425        if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;
17426        if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;
17427      }
17428    }
17429  };
17430  var setTransition = function setTransition(duration) {
17431    var transformEl = swiper.params.coverflowEffect.transformEl;
17432    var $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;
17433    $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
17434  };
17435  (0,_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__["default"])({
17436    effect: 'coverflow',
17437    swiper: swiper,
17438    on: on,
17439    setTranslate: setTranslate,
17440    setTransition: setTransition,
17441    perspective: function perspective() {
17442      return true;
17443    },
17444    overwriteParams: function overwriteParams() {
17445      return {
17446        watchSlidesProgress: true
17447      };
17448    }
17449  });
17450}
17451
17452/***/ }),
17453
vendor: 6,619 bytes, lines 17454-17609
17454/***/ "./node_modules/swiper/modules/effect-creative/effect-creative.js":
17455/*!************************************************************************!*\
17456  !*** ./node_modules/swiper/modules/effect-creative/effect-creative.js ***!
17457  \************************************************************************/
17458/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
17459
17460"use strict";
17461__webpack_require__.r(__webpack_exports__);
17462/* harmony export */ __webpack_require__.d(__webpack_exports__, {
17463/* harmony export */   "default": function() { return /* binding */ EffectCreative; }
17464/* harmony export */ });
17465/* harmony import */ var _shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/create-shadow.js */ "./node_modules/swiper/shared/create-shadow.js");
17466/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
17467/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js");
17468/* harmony import */ var _shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../shared/effect-virtual-transition-end.js */ "./node_modules/swiper/shared/effect-virtual-transition-end.js");
17469
17470
17471
17472
17473function EffectCreative(_ref) {
17474  var swiper = _ref.swiper,
17475    extendParams = _ref.extendParams,
17476    on = _ref.on;
17477  extendParams({
17478    creativeEffect: {
17479      transformEl: null,
17480      limitProgress: 1,
17481      shadowPerProgress: false,
17482      progressMultiplier: 1,
17483      perspective: true,
17484      prev: {
17485        translate: [0, 0, 0],
17486        rotate: [0, 0, 0],
17487        opacity: 1,
17488        scale: 1
17489      },
17490      next: {
17491        translate: [0, 0, 0],
17492        rotate: [0, 0, 0],
17493        opacity: 1,
17494        scale: 1
17495      }
17496    }
17497  });
17498  var getTranslateValue = function getTranslateValue(value) {
17499    if (typeof value === 'string') return value;
17500    return "".concat(value, "px");
17501  };
17502  var setTranslate = function setTranslate() {
17503    var slides = swiper.slides,
17504      $wrapperEl = swiper.$wrapperEl,
17505      slidesSizesGrid = swiper.slidesSizesGrid;
17506    var params = swiper.params.creativeEffect;
17507    var multiplier = params.progressMultiplier;
17508    var isCenteredSlides = swiper.params.centeredSlides;
17509    if (isCenteredSlides) {
17510      var margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;
17511      $wrapperEl.transform("translateX(calc(50% - ".concat(margin, "px))"));
17512    }
17513    var _loop = function _loop() {
17514      var $slideEl = slides.eq(i);
17515      var slideProgress = $slideEl[0].progress;
17516      var progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress);
17517      var originalProgress = progress;
17518      if (!isCenteredSlides) {
17519        originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress);
17520      }
17521      var offset = $slideEl[0].swiperSlideOffset;
17522      var t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];
17523      var r = [0, 0, 0];
17524      var custom = false;
17525      if (!swiper.isHorizontal()) {
17526        t[1] = t[0];
17527        t[0] = 0;
17528      }
17529      var data = {
17530        translate: [0, 0, 0],
17531        rotate: [0, 0, 0],
17532        scale: 1,
17533        opacity: 1
17534      };
17535      if (progress < 0) {
17536        data = params.next;
17537        custom = true;
17538      } else if (progress > 0) {
17539        data = params.prev;
17540        custom = true;
17541      } // set translate
17542
17543      t.forEach(function (value, index) {
17544        t[index] = "calc(".concat(value, "px + (").concat(getTranslateValue(data.translate[index]), " * ").concat(Math.abs(progress * multiplier), "))");
17545      }); // set rotates
17546
17547      r.forEach(function (value, index) {
17548        r[index] = data.rotate[index] * Math.abs(progress * multiplier);
17549      });
17550      $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;
17551      var translateString = t.join(', ');
17552      var rotateString = "rotateX(".concat(r[0], "deg) rotateY(").concat(r[1], "deg) rotateZ(").concat(r[2], "deg)");
17553      var scaleString = originalProgress < 0 ? "scale(".concat(1 + (1 - data.scale) * originalProgress * multiplier, ")") : "scale(".concat(1 - (1 - data.scale) * originalProgress * multiplier, ")");
17554      var opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;
17555      var transform = "translate3d(".concat(translateString, ") ").concat(rotateString, " ").concat(scaleString); // Set shadows
17556
17557      if (custom && data.shadow || !custom) {
17558        var $shadowEl = $slideEl.children('.swiper-slide-shadow');
17559        if ($shadowEl.length === 0 && data.shadow) {
17560          $shadowEl = (0,_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params, $slideEl);
17561        }
17562        if ($shadowEl.length) {
17563          var shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;
17564          $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);
17565        }
17566      }
17567      var $targetEl = (0,_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__["default"])(params, $slideEl);
17568      $targetEl.transform(transform).css({
17569        opacity: opacityString
17570      });
17571      if (data.origin) {
17572        $targetEl.css('transform-origin', data.origin);
17573      }
17574    };
17575    for (var i = 0; i < slides.length; i += 1) {
17576      _loop();
17577    }
17578  };
17579  var setTransition = function setTransition(duration) {
17580    var transformEl = swiper.params.creativeEffect.transformEl;
17581    var $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;
17582    $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);
17583    (0,_shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_3__["default"])({
17584      swiper: swiper,
17585      duration: duration,
17586      transformEl: transformEl,
17587      allSlides: true
17588    });
17589  };
17590  (0,_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__["default"])({
17591    effect: 'creative',
17592    swiper: swiper,
17593    on: on,
17594    setTranslate: setTranslate,
17595    setTransition: setTransition,
17596    perspective: function perspective() {
17597      return swiper.params.creativeEffect.perspective;
17598    },
17599    overwriteParams: function overwriteParams() {
17600      return {
17601        watchSlidesProgress: true,
17602        virtualTranslate: !swiper.params.cssMode
17603      };
17604    }
17605  });
17606}
17607
17608/***/ }),
17609
vendor: 7,976 bytes, lines 17610-17793
17610/***/ "./node_modules/swiper/modules/effect-cube/effect-cube.js":
17611/*!****************************************************************!*\
17612  !*** ./node_modules/swiper/modules/effect-cube/effect-cube.js ***!
17613  \****************************************************************/
17614/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
17615
17616"use strict";
17617__webpack_require__.r(__webpack_exports__);
17618/* harmony export */ __webpack_require__.d(__webpack_exports__, {
17619/* harmony export */   "default": function() { return /* binding */ EffectCube; }
17620/* harmony export */ });
17621/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
17622/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
17623
17624
17625function EffectCube(_ref) {
17626  var swiper = _ref.swiper,
17627    extendParams = _ref.extendParams,
17628    on = _ref.on;
17629  extendParams({
17630    cubeEffect: {
17631      slideShadows: true,
17632      shadow: true,
17633      shadowOffset: 20,
17634      shadowScale: 0.94
17635    }
17636  });
17637  var createSlideShadows = function createSlideShadows($slideEl, progress, isHorizontal) {
17638    var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
17639    var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
17640    if (shadowBefore.length === 0) {
17641      shadowBefore = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])("<div class=\"swiper-slide-shadow-".concat(isHorizontal ? 'left' : 'top', "\"></div>"));
17642      $slideEl.append(shadowBefore);
17643    }
17644    if (shadowAfter.length === 0) {
17645      shadowAfter = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])("<div class=\"swiper-slide-shadow-".concat(isHorizontal ? 'right' : 'bottom', "\"></div>"));
17646      $slideEl.append(shadowAfter);
17647    }
17648    if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
17649    if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
17650  };
17651  var recreateShadows = function recreateShadows() {
17652    // create new ones
17653    var isHorizontal = swiper.isHorizontal();
17654    swiper.slides.each(function (slideEl) {
17655      var progress = Math.max(Math.min(slideEl.progress, 1), -1);
17656      createSlideShadows((0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(slideEl), progress, isHorizontal);
17657    });
17658  };
17659  var setTranslate = function setTranslate() {
17660    var $el = swiper.$el,
17661      $wrapperEl = swiper.$wrapperEl,
17662      slides = swiper.slides,
17663      swiperWidth = swiper.width,
17664      swiperHeight = swiper.height,
17665      rtl = swiper.rtlTranslate,
17666      swiperSize = swiper.size,
17667      browser = swiper.browser;
17668    var params = swiper.params.cubeEffect;
17669    var isHorizontal = swiper.isHorizontal();
17670    var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
17671    var wrapperRotate = 0;
17672    var $cubeShadowEl;
17673    if (params.shadow) {
17674      if (isHorizontal) {
17675        $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');
17676        if ($cubeShadowEl.length === 0) {
17677          $cubeShadowEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])('<div class="swiper-cube-shadow"></div>');
17678          $wrapperEl.append($cubeShadowEl);
17679        }
17680        $cubeShadowEl.css({
17681          height: "".concat(swiperWidth, "px")
17682        });
17683      } else {
17684        $cubeShadowEl = $el.find('.swiper-cube-shadow');
17685        if ($cubeShadowEl.length === 0) {
17686          $cubeShadowEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])('<div class="swiper-cube-shadow"></div>');
17687          $el.append($cubeShadowEl);
17688        }
17689      }
17690    }
17691    for (var i = 0; i < slides.length; i += 1) {
17692      var $slideEl = slides.eq(i);
17693      var slideIndex = i;
17694      if (isVirtual) {
17695        slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);
17696      }
17697      var slideAngle = slideIndex * 90;
17698      var round = Math.floor(slideAngle / 360);
17699      if (rtl) {
17700        slideAngle = -slideAngle;
17701        round = Math.floor(-slideAngle / 360);
17702      }
17703      var progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
17704      var tx = 0;
17705      var ty = 0;
17706      var tz = 0;
17707      if (slideIndex % 4 === 0) {
17708        tx = -round * 4 * swiperSize;
17709        tz = 0;
17710      } else if ((slideIndex - 1) % 4 === 0) {
17711        tx = 0;
17712        tz = -round * 4 * swiperSize;
17713      } else if ((slideIndex - 2) % 4 === 0) {
17714        tx = swiperSize + round * 4 * swiperSize;
17715        tz = swiperSize;
17716      } else if ((slideIndex - 3) % 4 === 0) {
17717        tx = -swiperSize;
17718        tz = 3 * swiperSize + swiperSize * 4 * round;
17719      }
17720      if (rtl) {
17721        tx = -tx;
17722      }
17723      if (!isHorizontal) {
17724        ty = tx;
17725        tx = 0;
17726      }
17727      var transform = "rotateX(".concat(isHorizontal ? 0 : -slideAngle, "deg) rotateY(").concat(isHorizontal ? slideAngle : 0, "deg) translate3d(").concat(tx, "px, ").concat(ty, "px, ").concat(tz, "px)");
17728      if (progress <= 1 && progress > -1) {
17729        wrapperRotate = slideIndex * 90 + progress * 90;
17730        if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;
17731      }
17732      $slideEl.transform(transform);
17733      if (params.slideShadows) {
17734        createSlideShadows($slideEl, progress, isHorizontal);
17735      }
17736    }
17737    $wrapperEl.css({
17738      '-webkit-transform-origin': "50% 50% -".concat(swiperSize / 2, "px"),
17739      'transform-origin': "50% 50% -".concat(swiperSize / 2, "px")
17740    });
17741    if (params.shadow) {
17742      if (isHorizontal) {
17743        $cubeShadowEl.transform("translate3d(0px, ".concat(swiperWidth / 2 + params.shadowOffset, "px, ").concat(-swiperWidth / 2, "px) rotateX(90deg) rotateZ(0deg) scale(").concat(params.shadowScale, ")"));
17744      } else {
17745        var shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;
17746        var multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);
17747        var scale1 = params.shadowScale;
17748        var scale2 = params.shadowScale / multiplier;
17749        var offset = params.shadowOffset;
17750        $cubeShadowEl.transform("scale3d(".concat(scale1, ", 1, ").concat(scale2, ") translate3d(0px, ").concat(swiperHeight / 2 + offset, "px, ").concat(-swiperHeight / 2 / scale2, "px) rotateX(-90deg)"));
17751      }
17752    }
17753    var zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;
17754    $wrapperEl.transform("translate3d(0px,0,".concat(zFactor, "px) rotateX(").concat(swiper.isHorizontal() ? 0 : wrapperRotate, "deg) rotateY(").concat(swiper.isHorizontal() ? -wrapperRotate : 0, "deg)"));
17755    $wrapperEl[0].style.setProperty('--swiper-cube-translate-z', "".concat(zFactor, "px"));
17756  };
17757  var setTransition = function setTransition(duration) {
17758    var $el = swiper.$el,
17759      slides = swiper.slides;
17760    slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
17761    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {
17762      $el.find('.swiper-cube-shadow').transition(duration);
17763    }
17764  };
17765  (0,_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__["default"])({
17766    effect: 'cube',
17767    swiper: swiper,
17768    on: on,
17769    setTranslate: setTranslate,
17770    setTransition: setTransition,
17771    recreateShadows: recreateShadows,
17772    getEffectParams: function getEffectParams() {
17773      return swiper.params.cubeEffect;
17774    },
17775    perspective: function perspective() {
17776      return true;
17777    },
17778    overwriteParams: function overwriteParams() {
17779      return {
17780        slidesPerView: 1,
17781        slidesPerGroup: 1,
17782        watchSlidesProgress: true,
17783        resistanceRatio: 0,
17784        spaceBetween: 0,
17785        centeredSlides: false,
17786        virtualTranslate: true
17787      };
17788    }
17789  });
17790}
17791
17792/***/ }),
17793
vendor: 3,198 bytes, lines 17794-17871
17794/***/ "./node_modules/swiper/modules/effect-fade/effect-fade.js":
17795/*!****************************************************************!*\
17796  !*** ./node_modules/swiper/modules/effect-fade/effect-fade.js ***!
17797  \****************************************************************/
17798/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
17799
17800"use strict";
17801__webpack_require__.r(__webpack_exports__);
17802/* harmony export */ __webpack_require__.d(__webpack_exports__, {
17803/* harmony export */   "default": function() { return /* binding */ EffectFade; }
17804/* harmony export */ });
17805/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
17806/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js");
17807/* harmony import */ var _shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-virtual-transition-end.js */ "./node_modules/swiper/shared/effect-virtual-transition-end.js");
17808
17809
17810
17811function EffectFade(_ref) {
17812  var swiper = _ref.swiper,
17813    extendParams = _ref.extendParams,
17814    on = _ref.on;
17815  extendParams({
17816    fadeEffect: {
17817      crossFade: false,
17818      transformEl: null
17819    }
17820  });
17821  var setTranslate = function setTranslate() {
17822    var slides = swiper.slides;
17823    var params = swiper.params.fadeEffect;
17824    for (var i = 0; i < slides.length; i += 1) {
17825      var $slideEl = swiper.slides.eq(i);
17826      var offset = $slideEl[0].swiperSlideOffset;
17827      var tx = -offset;
17828      if (!swiper.params.virtualTranslate) tx -= swiper.translate;
17829      var ty = 0;
17830      if (!swiper.isHorizontal()) {
17831        ty = tx;
17832        tx = 0;
17833      }
17834      var slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);
17835      var $targetEl = (0,_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params, $slideEl);
17836      $targetEl.css({
17837        opacity: slideOpacity
17838      }).transform("translate3d(".concat(tx, "px, ").concat(ty, "px, 0px)"));
17839    }
17840  };
17841  var setTransition = function setTransition(duration) {
17842    var transformEl = swiper.params.fadeEffect.transformEl;
17843    var $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;
17844    $transitionElements.transition(duration);
17845    (0,_shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_2__["default"])({
17846      swiper: swiper,
17847      duration: duration,
17848      transformEl: transformEl,
17849      allSlides: true
17850    });
17851  };
17852  (0,_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_0__["default"])({
17853    effect: 'fade',
17854    swiper: swiper,
17855    on: on,
17856    setTranslate: setTranslate,
17857    setTransition: setTransition,
17858    overwriteParams: function overwriteParams() {
17859      return {
17860        slidesPerView: 1,
17861        slidesPerGroup: 1,
17862        watchSlidesProgress: true,
17863        spaceBetween: 0,
17864        virtualTranslate: !swiper.params.cssMode
17865      };
17866    }
17867  });
17868}
17869
17870/***/ }),
17871
vendor: 5,730 bytes, lines 17872-17997
17872/***/ "./node_modules/swiper/modules/effect-flip/effect-flip.js":
17873/*!****************************************************************!*\
17874  !*** ./node_modules/swiper/modules/effect-flip/effect-flip.js ***!
17875  \****************************************************************/
17876/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
17877
17878"use strict";
17879__webpack_require__.r(__webpack_exports__);
17880/* harmony export */ __webpack_require__.d(__webpack_exports__, {
17881/* harmony export */   "default": function() { return /* binding */ EffectFlip; }
17882/* harmony export */ });
17883/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
17884/* harmony import */ var _shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/create-shadow.js */ "./node_modules/swiper/shared/create-shadow.js");
17885/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
17886/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js");
17887/* harmony import */ var _shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../shared/effect-virtual-transition-end.js */ "./node_modules/swiper/shared/effect-virtual-transition-end.js");
17888
17889
17890
17891
17892
17893function EffectFlip(_ref) {
17894  var swiper = _ref.swiper,
17895    extendParams = _ref.extendParams,
17896    on = _ref.on;
17897  extendParams({
17898    flipEffect: {
17899      slideShadows: true,
17900      limitRotation: true,
17901      transformEl: null
17902    }
17903  });
17904  var createSlideShadows = function createSlideShadows($slideEl, progress, params) {
17905    var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
17906    var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
17907    if (shadowBefore.length === 0) {
17908      shadowBefore = (0,_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');
17909    }
17910    if (shadowAfter.length === 0) {
17911      shadowAfter = (0,_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');
17912    }
17913    if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
17914    if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
17915  };
17916  var recreateShadows = function recreateShadows() {
17917    // Set shadows
17918    var params = swiper.params.flipEffect;
17919    swiper.slides.each(function (slideEl) {
17920      var $slideEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(slideEl);
17921      var progress = $slideEl[0].progress;
17922      if (swiper.params.flipEffect.limitRotation) {
17923        progress = Math.max(Math.min(slideEl.progress, 1), -1);
17924      }
17925      createSlideShadows($slideEl, progress, params);
17926    });
17927  };
17928  var setTranslate = function setTranslate() {
17929    var slides = swiper.slides,
17930      rtl = swiper.rtlTranslate;
17931    var params = swiper.params.flipEffect;
17932    for (var i = 0; i < slides.length; i += 1) {
17933      var $slideEl = slides.eq(i);
17934      var progress = $slideEl[0].progress;
17935      if (swiper.params.flipEffect.limitRotation) {
17936        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
17937      }
17938      var offset = $slideEl[0].swiperSlideOffset;
17939      var rotate = -180 * progress;
17940      var rotateY = rotate;
17941      var rotateX = 0;
17942      var tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;
17943      var ty = 0;
17944      if (!swiper.isHorizontal()) {
17945        ty = tx;
17946        tx = 0;
17947        rotateX = -rotateY;
17948        rotateY = 0;
17949      } else if (rtl) {
17950        rotateY = -rotateY;
17951      }
17952      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
17953      if (params.slideShadows) {
17954        createSlideShadows($slideEl, progress, params);
17955      }
17956      var transform = "translate3d(".concat(tx, "px, ").concat(ty, "px, 0px) rotateX(").concat(rotateX, "deg) rotateY(").concat(rotateY, "deg)");
17957      var $targetEl = (0,_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_3__["default"])(params, $slideEl);
17958      $targetEl.transform(transform);
17959    }
17960  };
17961  var setTransition = function setTransition(duration) {
17962    var transformEl = swiper.params.flipEffect.transformEl;
17963    var $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;
17964    $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
17965    (0,_shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_4__["default"])({
17966      swiper: swiper,
17967      duration: duration,
17968      transformEl: transformEl
17969    });
17970  };
17971  (0,_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_2__["default"])({
17972    effect: 'flip',
17973    swiper: swiper,
17974    on: on,
17975    setTranslate: setTranslate,
17976    setTransition: setTransition,
17977    recreateShadows: recreateShadows,
17978    getEffectParams: function getEffectParams() {
17979      return swiper.params.flipEffect;
17980    },
17981    perspective: function perspective() {
17982      return true;
17983    },
17984    overwriteParams: function overwriteParams() {
17985      return {
17986        slidesPerView: 1,
17987        slidesPerGroup: 1,
17988        watchSlidesProgress: true,
17989        spaceBetween: 0,
17990        virtualTranslate: !swiper.params.cssMode
17991      };
17992    }
17993  });
17994}
17995
17996/***/ }),
17997
vendor: 9,137 bytes, lines 17998-18234
17998/***/ "./node_modules/swiper/modules/free-mode/free-mode.js":
17999/*!************************************************************!*\
18000  !*** ./node_modules/swiper/modules/free-mode/free-mode.js ***!
18001  \************************************************************/
18002/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
18003
18004"use strict";
18005__webpack_require__.r(__webpack_exports__);
18006/* harmony export */ __webpack_require__.d(__webpack_exports__, {
18007/* harmony export */   "default": function() { return /* binding */ freeMode; }
18008/* harmony export */ });
18009/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
18010
18011function freeMode(_ref) {
18012  var swiper = _ref.swiper,
18013    extendParams = _ref.extendParams,
18014    emit = _ref.emit,
18015    once = _ref.once;
18016  extendParams({
18017    freeMode: {
18018      enabled: false,
18019      momentum: true,
18020      momentumRatio: 1,
18021      momentumBounce: true,
18022      momentumBounceRatio: 1,
18023      momentumVelocityRatio: 1,
18024      sticky: false,
18025      minimumVelocity: 0.02
18026    }
18027  });
18028  function onTouchStart() {
18029    var translate = swiper.getTranslate();
18030    swiper.setTranslate(translate);
18031    swiper.setTransition(0);
18032    swiper.touchEventsData.velocities.length = 0;
18033    swiper.freeMode.onTouchEnd({
18034      currentPos: swiper.rtl ? swiper.translate : -swiper.translate
18035    });
18036  }
18037  function onTouchMove() {
18038    var data = swiper.touchEventsData,
18039      touches = swiper.touches; // Velocity
18040
18041    if (data.velocities.length === 0) {
18042      data.velocities.push({
18043        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],
18044        time: data.touchStartTime
18045      });
18046    }
18047    data.velocities.push({
18048      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],
18049      time: (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.now)()
18050    });
18051  }
18052  function onTouchEnd(_ref2) {
18053    var currentPos = _ref2.currentPos;
18054    var params = swiper.params,
18055      $wrapperEl = swiper.$wrapperEl,
18056      rtl = swiper.rtlTranslate,
18057      snapGrid = swiper.snapGrid,
18058      data = swiper.touchEventsData; // Time diff
18059
18060    var touchEndTime = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.now)();
18061    var timeDiff = touchEndTime - data.touchStartTime;
18062    if (currentPos < -swiper.minTranslate()) {
18063      swiper.slideTo(swiper.activeIndex);
18064      return;
18065    }
18066    if (currentPos > -swiper.maxTranslate()) {
18067      if (swiper.slides.length < snapGrid.length) {
18068        swiper.slideTo(snapGrid.length - 1);
18069      } else {
18070        swiper.slideTo(swiper.slides.length - 1);
18071      }
18072      return;
18073    }
18074    if (params.freeMode.momentum) {
18075      if (data.velocities.length > 1) {
18076        var lastMoveEvent = data.velocities.pop();
18077        var velocityEvent = data.velocities.pop();
18078        var distance = lastMoveEvent.position - velocityEvent.position;
18079        var time = lastMoveEvent.time - velocityEvent.time;
18080        swiper.velocity = distance / time;
18081        swiper.velocity /= 2;
18082        if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {
18083          swiper.velocity = 0;
18084        } // this implies that the user stopped moving a finger then released.
18085        // There would be no events with distance zero, so the last event is stale.
18086
18087        if (time > 150 || (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.now)() - lastMoveEvent.time > 300) {
18088          swiper.velocity = 0;
18089        }
18090      } else {
18091        swiper.velocity = 0;
18092      }
18093      swiper.velocity *= params.freeMode.momentumVelocityRatio;
18094      data.velocities.length = 0;
18095      var momentumDuration = 1000 * params.freeMode.momentumRatio;
18096      var momentumDistance = swiper.velocity * momentumDuration;
18097      var newPosition = swiper.translate + momentumDistance;
18098      if (rtl) newPosition = -newPosition;
18099      var doBounce = false;
18100      var afterBouncePosition;
18101      var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;
18102      var needsLoopFix;
18103      if (newPosition < swiper.maxTranslate()) {
18104        if (params.freeMode.momentumBounce) {
18105          if (newPosition + swiper.maxTranslate() < -bounceAmount) {
18106            newPosition = swiper.maxTranslate() - bounceAmount;
18107          }
18108          afterBouncePosition = swiper.maxTranslate();
18109          doBounce = true;
18110          data.allowMomentumBounce = true;
18111        } else {
18112          newPosition = swiper.maxTranslate();
18113        }
18114        if (params.loop && params.centeredSlides) needsLoopFix = true;
18115      } else if (newPosition > swiper.minTranslate()) {
18116        if (params.freeMode.momentumBounce) {
18117          if (newPosition - swiper.minTranslate() > bounceAmount) {
18118            newPosition = swiper.minTranslate() + bounceAmount;
18119          }
18120          afterBouncePosition = swiper.minTranslate();
18121          doBounce = true;
18122          data.allowMomentumBounce = true;
18123        } else {
18124          newPosition = swiper.minTranslate();
18125        }
18126        if (params.loop && params.centeredSlides) needsLoopFix = true;
18127      } else if (params.freeMode.sticky) {
18128        var nextSlide;
18129        for (var j = 0; j < snapGrid.length; j += 1) {
18130          if (snapGrid[j] > -newPosition) {
18131            nextSlide = j;
18132            break;
18133          }
18134        }
18135        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {
18136          newPosition = snapGrid[nextSlide];
18137        } else {
18138          newPosition = snapGrid[nextSlide - 1];
18139        }
18140        newPosition = -newPosition;
18141      }
18142      if (needsLoopFix) {
18143        once('transitionEnd', function () {
18144          swiper.loopFix();
18145        });
18146      } // Fix duration
18147
18148      if (swiper.velocity !== 0) {
18149        if (rtl) {
18150          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
18151        } else {
18152          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
18153        }
18154        if (params.freeMode.sticky) {
18155          // If freeMode.sticky is active and the user ends a swipe with a slow-velocity
18156          // event, then durations can be 20+ seconds to slide one (or zero!) slides.
18157          // It's easy to see this when simulating touch with mouse events. To fix this,
18158          // limit single-slide swipes to the default slide duration. This also has the
18159          // nice side effect of matching slide speed if the user stopped moving before
18160          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.
18161          // For faster swipes, also apply limits (albeit higher ones).
18162          var moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);
18163          var currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];
18164          if (moveDistance < currentSlideSize) {
18165            momentumDuration = params.speed;
18166          } else if (moveDistance < 2 * currentSlideSize) {
18167            momentumDuration = params.speed * 1.5;
18168          } else {
18169            momentumDuration = params.speed * 2.5;
18170          }
18171        }
18172      } else if (params.freeMode.sticky) {
18173        swiper.slideToClosest();
18174        return;
18175      }
18176      if (params.freeMode.momentumBounce && doBounce) {
18177        swiper.updateProgress(afterBouncePosition);
18178        swiper.setTransition(momentumDuration);
18179        swiper.setTranslate(newPosition);
18180        swiper.transitionStart(true, swiper.swipeDirection);
18181        swiper.animating = true;
18182        $wrapperEl.transitionEnd(function () {
18183          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;
18184          emit('momentumBounce');
18185          swiper.setTransition(params.speed);
18186          setTimeout(function () {
18187            swiper.setTranslate(afterBouncePosition);
18188            $wrapperEl.transitionEnd(function () {
18189              if (!swiper || swiper.destroyed) return;
18190              swiper.transitionEnd();
18191            });
18192          }, 0);
18193        });
18194      } else if (swiper.velocity) {
18195        emit('_freeModeNoMomentumRelease');
18196        swiper.updateProgress(newPosition);
18197        swiper.setTransition(momentumDuration);
18198        swiper.setTranslate(newPosition);
18199        swiper.transitionStart(true, swiper.swipeDirection);
18200        if (!swiper.animating) {
18201          swiper.animating = true;
18202          $wrapperEl.transitionEnd(function () {
18203            if (!swiper || swiper.destroyed) return;
18204            swiper.transitionEnd();
18205          });
18206        }
18207      } else {
18208        swiper.updateProgress(newPosition);
18209      }
18210      swiper.updateActiveIndex();
18211      swiper.updateSlidesClasses();
18212    } else if (params.freeMode.sticky) {
18213      swiper.slideToClosest();
18214      return;
18215    } else if (params.freeMode) {
18216      emit('_freeModeNoMomentumRelease');
18217    }
18218    if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {
18219      swiper.updateProgress();
18220      swiper.updateActiveIndex();
18221      swiper.updateSlidesClasses();
18222    }
18223  }
18224  Object.assign(swiper, {
18225    freeMode: {
18226      onTouchStart: onTouchStart,
18227      onTouchMove: onTouchMove,
18228      onTouchEnd: onTouchEnd
18229    }
18230  });
18231}
18232
18233/***/ }),
18234
vendor: 5,204 bytes, lines 18235-18344
18235/***/ "./node_modules/swiper/modules/grid/grid.js":
18236/*!**************************************************!*\
18237  !*** ./node_modules/swiper/modules/grid/grid.js ***!
18238  \**************************************************/
18239/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
18240
18241"use strict";
18242__webpack_require__.r(__webpack_exports__);
18243/* harmony export */ __webpack_require__.d(__webpack_exports__, {
18244/* harmony export */   "default": function() { return /* binding */ Grid; }
18245/* harmony export */ });
18246function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
18247function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
18248function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
18249function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
18250function Grid(_ref) {
18251  var swiper = _ref.swiper,
18252    extendParams = _ref.extendParams;
18253  extendParams({
18254    grid: {
18255      rows: 1,
18256      fill: 'column'
18257    }
18258  });
18259  var slidesNumberEvenToRows;
18260  var slidesPerRow;
18261  var numFullColumns;
18262  var initSlides = function initSlides(slidesLength) {
18263    var slidesPerView = swiper.params.slidesPerView;
18264    var _swiper$params$grid = swiper.params.grid,
18265      rows = _swiper$params$grid.rows,
18266      fill = _swiper$params$grid.fill;
18267    slidesPerRow = slidesNumberEvenToRows / rows;
18268    numFullColumns = Math.floor(slidesLength / rows);
18269    if (Math.floor(slidesLength / rows) === slidesLength / rows) {
18270      slidesNumberEvenToRows = slidesLength;
18271    } else {
18272      slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;
18273    }
18274    if (slidesPerView !== 'auto' && fill === 'row') {
18275      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);
18276    }
18277  };
18278  var updateSlide = function updateSlide(i, slide, slidesLength, getDirectionLabel) {
18279    var _swiper$params = swiper.params,
18280      slidesPerGroup = _swiper$params.slidesPerGroup,
18281      spaceBetween = _swiper$params.spaceBetween;
18282    var _swiper$params$grid2 = swiper.params.grid,
18283      rows = _swiper$params$grid2.rows,
18284      fill = _swiper$params$grid2.fill; // Set slides order
18285
18286    var newSlideOrderIndex;
18287    var column;
18288    var row;
18289    if (fill === 'row' && slidesPerGroup > 1) {
18290      var groupIndex = Math.floor(i / (slidesPerGroup * rows));
18291      var slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;
18292      var columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);
18293      row = Math.floor(slideIndexInGroup / columnsInGroup);
18294      column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;
18295      newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;
18296      slide.css({
18297        '-webkit-order': newSlideOrderIndex,
18298        order: newSlideOrderIndex
18299      });
18300    } else if (fill === 'column') {
18301      column = Math.floor(i / rows);
18302      row = i - column * rows;
18303      if (column > numFullColumns || column === numFullColumns && row === rows - 1) {
18304        row += 1;
18305        if (row >= rows) {
18306          row = 0;
18307          column += 1;
18308        }
18309      }
18310    } else {
18311      row = Math.floor(i / slidesPerRow);
18312      column = i - row * slidesPerRow;
18313    }
18314    slide.css(getDirectionLabel('margin-top'), row !== 0 ? spaceBetween && "".concat(spaceBetween, "px") : '');
18315  };
18316  var updateWrapperSize = function updateWrapperSize(slideSize, snapGrid, getDirectionLabel) {
18317    var _swiper$params2 = swiper.params,
18318      spaceBetween = _swiper$params2.spaceBetween,
18319      centeredSlides = _swiper$params2.centeredSlides,
18320      roundLengths = _swiper$params2.roundLengths;
18321    var rows = swiper.params.grid.rows;
18322    swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;
18323    swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;
18324    swiper.$wrapperEl.css(_defineProperty({}, getDirectionLabel('width'), "".concat(swiper.virtualSize + spaceBetween, "px")));
18325    if (centeredSlides) {
18326      snapGrid.splice(0, snapGrid.length);
18327      var newSlidesGrid = [];
18328      for (var i = 0; i < snapGrid.length; i += 1) {
18329        var slidesGridItem = snapGrid[i];
18330        if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);
18331        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);
18332      }
18333      snapGrid.push.apply(snapGrid, newSlidesGrid);
18334    }
18335  };
18336  swiper.grid = {
18337    initSlides: initSlides,
18338    updateSlide: updateSlide,
18339    updateWrapperSize: updateWrapperSize
18340  };
18341}
18342
18343/***/ }),
18344
vendor: 3,946 bytes, lines 18345-18444
18345/***/ "./node_modules/swiper/modules/hash-navigation/hash-navigation.js":
18346/*!************************************************************************!*\
18347  !*** ./node_modules/swiper/modules/hash-navigation/hash-navigation.js ***!
18348  \************************************************************************/
18349/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
18350
18351"use strict";
18352__webpack_require__.r(__webpack_exports__);
18353/* harmony export */ __webpack_require__.d(__webpack_exports__, {
18354/* harmony export */   "default": function() { return /* binding */ HashNavigation; }
18355/* harmony export */ });
18356/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
18357/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
18358
18359
18360function HashNavigation(_ref) {
18361  var swiper = _ref.swiper,
18362    extendParams = _ref.extendParams,
18363    emit = _ref.emit,
18364    on = _ref.on;
18365  var initialized = false;
18366  var document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
18367  var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
18368  extendParams({
18369    hashNavigation: {
18370      enabled: false,
18371      replaceState: false,
18372      watchState: false
18373    }
18374  });
18375  var onHashChange = function onHashChange() {
18376    emit('hashChange');
18377    var newHash = document.location.hash.replace('#', '');
18378    var activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');
18379    if (newHash !== activeSlideHash) {
18380      var newIndex = swiper.$wrapperEl.children(".".concat(swiper.params.slideClass, "[data-hash=\"").concat(newHash, "\"]")).index();
18381      if (typeof newIndex === 'undefined') return;
18382      swiper.slideTo(newIndex);
18383    }
18384  };
18385  var setHash = function setHash() {
18386    if (!initialized || !swiper.params.hashNavigation.enabled) return;
18387    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {
18388      window.history.replaceState(null, null, "#".concat(swiper.slides.eq(swiper.activeIndex).attr('data-hash')) || 0);
18389      emit('hashSet');
18390    } else {
18391      var slide = swiper.slides.eq(swiper.activeIndex);
18392      var hash = slide.attr('data-hash') || slide.attr('data-history');
18393      document.location.hash = hash || '';
18394      emit('hashSet');
18395    }
18396  };
18397  var init = function init() {
18398    if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;
18399    initialized = true;
18400    var hash = document.location.hash.replace('#', '');
18401    if (hash) {
18402      var speed = 0;
18403      for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
18404        var slide = swiper.slides.eq(i);
18405        var slideHash = slide.attr('data-hash') || slide.attr('data-history');
18406        if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {
18407          var index = slide.index();
18408          swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);
18409        }
18410      }
18411    }
18412    if (swiper.params.hashNavigation.watchState) {
18413      (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(window).on('hashchange', onHashChange);
18414    }
18415  };
18416  var destroy = function destroy() {
18417    if (swiper.params.hashNavigation.watchState) {
18418      (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(window).off('hashchange', onHashChange);
18419    }
18420  };
18421  on('init', function () {
18422    if (swiper.params.hashNavigation.enabled) {
18423      init();
18424    }
18425  });
18426  on('destroy', function () {
18427    if (swiper.params.hashNavigation.enabled) {
18428      destroy();
18429    }
18430  });
18431  on('transitionEnd _freeModeNoMomentumRelease', function () {
18432    if (initialized) {
18433      setHash();
18434    }
18435  });
18436  on('slideChange', function () {
18437    if (initialized && swiper.params.cssMode) {
18438      setHash();
18439    }
18440  });
18441}
18442
18443/***/ }),
18444
vendor: 5,065 bytes, lines 18445-18593
18445/***/ "./node_modules/swiper/modules/history/history.js":
18446/*!********************************************************!*\
18447  !*** ./node_modules/swiper/modules/history/history.js ***!
18448  \********************************************************/
18449/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
18450
18451"use strict";
18452__webpack_require__.r(__webpack_exports__);
18453/* harmony export */ __webpack_require__.d(__webpack_exports__, {
18454/* harmony export */   "default": function() { return /* binding */ History; }
18455/* harmony export */ });
18456/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
18457
18458function History(_ref) {
18459  var swiper = _ref.swiper,
18460    extendParams = _ref.extendParams,
18461    on = _ref.on;
18462  extendParams({
18463    history: {
18464      enabled: false,
18465      root: '',
18466      replaceState: false,
18467      key: 'slides',
18468      keepQuery: false
18469    }
18470  });
18471  var initialized = false;
18472  var paths = {};
18473  var slugify = function slugify(text) {
18474    return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');
18475  };
18476  var getPathValues = function getPathValues(urlOverride) {
18477    var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
18478    var location;
18479    if (urlOverride) {
18480      location = new URL(urlOverride);
18481    } else {
18482      location = window.location;
18483    }
18484    var pathArray = location.pathname.slice(1).split('/').filter(function (part) {
18485      return part !== '';
18486    });
18487    var total = pathArray.length;
18488    var key = pathArray[total - 2];
18489    var value = pathArray[total - 1];
18490    return {
18491      key: key,
18492      value: value
18493    };
18494  };
18495  var setHistory = function setHistory(key, index) {
18496    var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
18497    if (!initialized || !swiper.params.history.enabled) return;
18498    var location;
18499    if (swiper.params.url) {
18500      location = new URL(swiper.params.url);
18501    } else {
18502      location = window.location;
18503    }
18504    var slide = swiper.slides.eq(index);
18505    var value = slugify(slide.attr('data-history'));
18506    if (swiper.params.history.root.length > 0) {
18507      var root = swiper.params.history.root;
18508      if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);
18509      value = "".concat(root, "/").concat(key, "/").concat(value);
18510    } else if (!location.pathname.includes(key)) {
18511      value = "".concat(key, "/").concat(value);
18512    }
18513    if (swiper.params.history.keepQuery) {
18514      value += location.search;
18515    }
18516    var currentState = window.history.state;
18517    if (currentState && currentState.value === value) {
18518      return;
18519    }
18520    if (swiper.params.history.replaceState) {
18521      window.history.replaceState({
18522        value: value
18523      }, null, value);
18524    } else {
18525      window.history.pushState({
18526        value: value
18527      }, null, value);
18528    }
18529  };
18530  var scrollToSlide = function scrollToSlide(speed, value, runCallbacks) {
18531    if (value) {
18532      for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
18533        var slide = swiper.slides.eq(i);
18534        var slideHistory = slugify(slide.attr('data-history'));
18535        if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {
18536          var index = slide.index();
18537          swiper.slideTo(index, speed, runCallbacks);
18538        }
18539      }
18540    } else {
18541      swiper.slideTo(0, speed, runCallbacks);
18542    }
18543  };
18544  var setHistoryPopState = function setHistoryPopState() {
18545    paths = getPathValues(swiper.params.url);
18546    scrollToSlide(swiper.params.speed, paths.value, false);
18547  };
18548  var init = function init() {
18549    var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
18550    if (!swiper.params.history) return;
18551    if (!window.history || !window.history.pushState) {
18552      swiper.params.history.enabled = false;
18553      swiper.params.hashNavigation.enabled = true;
18554      return;
18555    }
18556    initialized = true;
18557    paths = getPathValues(swiper.params.url);
18558    if (!paths.key && !paths.value) return;
18559    scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);
18560    if (!swiper.params.history.replaceState) {
18561      window.addEventListener('popstate', setHistoryPopState);
18562    }
18563  };
18564  var destroy = function destroy() {
18565    var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
18566    if (!swiper.params.history.replaceState) {
18567      window.removeEventListener('popstate', setHistoryPopState);
18568    }
18569  };
18570  on('init', function () {
18571    if (swiper.params.history.enabled) {
18572      init();
18573    }
18574  });
18575  on('destroy', function () {
18576    if (swiper.params.history.enabled) {
18577      destroy();
18578    }
18579  });
18580  on('transitionEnd _freeModeNoMomentumRelease', function () {
18581    if (initialized) {
18582      setHistory(swiper.params.history.key, swiper.activeIndex);
18583    }
18584  });
18585  on('slideChange', function () {
18586    if (initialized && swiper.params.cssMode) {
18587      setHistory(swiper.params.history.key, swiper.activeIndex);
18588    }
18589  });
18590}
18591
18592/***/ }),
18593
vendor: 5,254 bytes, lines 18594-18721
18594/***/ "./node_modules/swiper/modules/keyboard/keyboard.js":
18595/*!**********************************************************!*\
18596  !*** ./node_modules/swiper/modules/keyboard/keyboard.js ***!
18597  \**********************************************************/
18598/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
18599
18600"use strict";
18601__webpack_require__.r(__webpack_exports__);
18602/* harmony export */ __webpack_require__.d(__webpack_exports__, {
18603/* harmony export */   "default": function() { return /* binding */ Keyboard; }
18604/* harmony export */ });
18605/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
18606/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
18607/* eslint-disable consistent-return */
18608
18609
18610function Keyboard(_ref) {
18611  var swiper = _ref.swiper,
18612    extendParams = _ref.extendParams,
18613    on = _ref.on,
18614    emit = _ref.emit;
18615  var document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
18616  var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
18617  swiper.keyboard = {
18618    enabled: false
18619  };
18620  extendParams({
18621    keyboard: {
18622      enabled: false,
18623      onlyInViewport: true,
18624      pageUpDown: true
18625    }
18626  });
18627  function handle(event) {
18628    if (!swiper.enabled) return;
18629    var rtl = swiper.rtlTranslate;
18630    var e = event;
18631    if (e.originalEvent) e = e.originalEvent; // jquery fix
18632
18633    var kc = e.keyCode || e.charCode;
18634    var pageUpDown = swiper.params.keyboard.pageUpDown;
18635    var isPageUp = pageUpDown && kc === 33;
18636    var isPageDown = pageUpDown && kc === 34;
18637    var isArrowLeft = kc === 37;
18638    var isArrowRight = kc === 39;
18639    var isArrowUp = kc === 38;
18640    var isArrowDown = kc === 40; // Directions locks
18641
18642    if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {
18643      return false;
18644    }
18645    if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {
18646      return false;
18647    }
18648    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
18649      return undefined;
18650    }
18651    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {
18652      return undefined;
18653    }
18654    if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {
18655      var inView = false; // Check that swiper should be inside of visible area of window
18656
18657      if (swiper.$el.parents(".".concat(swiper.params.slideClass)).length > 0 && swiper.$el.parents(".".concat(swiper.params.slideActiveClass)).length === 0) {
18658        return undefined;
18659      }
18660      var $el = swiper.$el;
18661      var swiperWidth = $el[0].clientWidth;
18662      var swiperHeight = $el[0].clientHeight;
18663      var windowWidth = window.innerWidth;
18664      var windowHeight = window.innerHeight;
18665      var swiperOffset = swiper.$el.offset();
18666      if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;
18667      var swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];
18668      for (var i = 0; i < swiperCoord.length; i += 1) {
18669        var point = swiperCoord[i];
18670        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {
18671          if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line
18672
18673          inView = true;
18674        }
18675      }
18676      if (!inView) return undefined;
18677    }
18678    if (swiper.isHorizontal()) {
18679      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {
18680        if (e.preventDefault) e.preventDefault();else e.returnValue = false;
18681      }
18682      if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();
18683      if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();
18684    } else {
18685      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {
18686        if (e.preventDefault) e.preventDefault();else e.returnValue = false;
18687      }
18688      if (isPageDown || isArrowDown) swiper.slideNext();
18689      if (isPageUp || isArrowUp) swiper.slidePrev();
18690    }
18691    emit('keyPress', kc);
18692    return undefined;
18693  }
18694  function enable() {
18695    if (swiper.keyboard.enabled) return;
18696    (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(document).on('keydown', handle);
18697    swiper.keyboard.enabled = true;
18698  }
18699  function disable() {
18700    if (!swiper.keyboard.enabled) return;
18701    (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(document).off('keydown', handle);
18702    swiper.keyboard.enabled = false;
18703  }
18704  on('init', function () {
18705    if (swiper.params.keyboard.enabled) {
18706      enable();
18707    }
18708  });
18709  on('destroy', function () {
18710    if (swiper.keyboard.enabled) {
18711      disable();
18712    }
18713  });
18714  Object.assign(swiper.keyboard, {
18715    enable: enable,
18716    disable: disable
18717  });
18718}
18719
18720/***/ }),
18721
vendor: 11,474 bytes, lines 18722-18989
18722/***/ "./node_modules/swiper/modules/lazy/lazy.js":
18723/*!**************************************************!*\
18724  !*** ./node_modules/swiper/modules/lazy/lazy.js ***!
18725  \**************************************************/
18726/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
18727
18728"use strict";
18729__webpack_require__.r(__webpack_exports__);
18730/* harmony export */ __webpack_require__.d(__webpack_exports__, {
18731/* harmony export */   "default": function() { return /* binding */ Lazy; }
18732/* harmony export */ });
18733/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
18734/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
18735
18736
18737function Lazy(_ref) {
18738  var swiper = _ref.swiper,
18739    extendParams = _ref.extendParams,
18740    on = _ref.on,
18741    emit = _ref.emit;
18742  extendParams({
18743    lazy: {
18744      checkInView: false,
18745      enabled: false,
18746      loadPrevNext: false,
18747      loadPrevNextAmount: 1,
18748      loadOnTransitionStart: false,
18749      scrollingElement: '',
18750      elementClass: 'swiper-lazy',
18751      loadingClass: 'swiper-lazy-loading',
18752      loadedClass: 'swiper-lazy-loaded',
18753      preloaderClass: 'swiper-lazy-preloader'
18754    }
18755  });
18756  swiper.lazy = {};
18757  var scrollHandlerAttached = false;
18758  var initialImageLoaded = false;
18759  function loadInSlide(index) {
18760    var loadInDuplicate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
18761    var params = swiper.params.lazy;
18762    if (typeof index === 'undefined') return;
18763    if (swiper.slides.length === 0) return;
18764    var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
18765    var $slideEl = isVirtual ? swiper.$wrapperEl.children(".".concat(swiper.params.slideClass, "[data-swiper-slide-index=\"").concat(index, "\"]")) : swiper.slides.eq(index);
18766    var $images = $slideEl.find(".".concat(params.elementClass, ":not(.").concat(params.loadedClass, "):not(.").concat(params.loadingClass, ")"));
18767    if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {
18768      $images.push($slideEl[0]);
18769    }
18770    if ($images.length === 0) return;
18771    $images.each(function (imageEl) {
18772      var $imageEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(imageEl);
18773      $imageEl.addClass(params.loadingClass);
18774      var background = $imageEl.attr('data-background');
18775      var src = $imageEl.attr('data-src');
18776      var srcset = $imageEl.attr('data-srcset');
18777      var sizes = $imageEl.attr('data-sizes');
18778      var $pictureEl = $imageEl.parent('picture');
18779      swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, function () {
18780        if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;
18781        if (background) {
18782          $imageEl.css('background-image', "url(\"".concat(background, "\")"));
18783          $imageEl.removeAttr('data-background');
18784        } else {
18785          if (srcset) {
18786            $imageEl.attr('srcset', srcset);
18787            $imageEl.removeAttr('data-srcset');
18788          }
18789          if (sizes) {
18790            $imageEl.attr('sizes', sizes);
18791            $imageEl.removeAttr('data-sizes');
18792          }
18793          if ($pictureEl.length) {
18794            $pictureEl.children('source').each(function (sourceEl) {
18795              var $source = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(sourceEl);
18796              if ($source.attr('data-srcset')) {
18797                $source.attr('srcset', $source.attr('data-srcset'));
18798                $source.removeAttr('data-srcset');
18799              }
18800            });
18801          }
18802          if (src) {
18803            $imageEl.attr('src', src);
18804            $imageEl.removeAttr('data-src');
18805          }
18806        }
18807        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);
18808        $slideEl.find(".".concat(params.preloaderClass)).remove();
18809        if (swiper.params.loop && loadInDuplicate) {
18810          var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');
18811          if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {
18812            var originalSlide = swiper.$wrapperEl.children("[data-swiper-slide-index=\"".concat(slideOriginalIndex, "\"]:not(.").concat(swiper.params.slideDuplicateClass, ")"));
18813            loadInSlide(originalSlide.index(), false);
18814          } else {
18815            var duplicatedSlide = swiper.$wrapperEl.children(".".concat(swiper.params.slideDuplicateClass, "[data-swiper-slide-index=\"").concat(slideOriginalIndex, "\"]"));
18816            loadInSlide(duplicatedSlide.index(), false);
18817          }
18818        }
18819        emit('lazyImageReady', $slideEl[0], $imageEl[0]);
18820        if (swiper.params.autoHeight) {
18821          swiper.updateAutoHeight();
18822        }
18823      });
18824      emit('lazyImageLoad', $slideEl[0], $imageEl[0]);
18825    });
18826  }
18827  function load() {
18828    var $wrapperEl = swiper.$wrapperEl,
18829      swiperParams = swiper.params,
18830      slides = swiper.slides,
18831      activeIndex = swiper.activeIndex;
18832    var isVirtual = swiper.virtual && swiperParams.virtual.enabled;
18833    var params = swiperParams.lazy;
18834    var slidesPerView = swiperParams.slidesPerView;
18835    if (slidesPerView === 'auto') {
18836      slidesPerView = 0;
18837    }
18838    function slideExist(index) {
18839      if (isVirtual) {
18840        if ($wrapperEl.children(".".concat(swiperParams.slideClass, "[data-swiper-slide-index=\"").concat(index, "\"]")).length) {
18841          return true;
18842        }
18843      } else if (slides[index]) return true;
18844      return false;
18845    }
18846    function slideIndex(slideEl) {
18847      if (isVirtual) {
18848        return (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(slideEl).attr('data-swiper-slide-index');
18849      }
18850      return (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(slideEl).index();
18851    }
18852    if (!initialImageLoaded) initialImageLoaded = true;
18853    if (swiper.params.watchSlidesProgress) {
18854      $wrapperEl.children(".".concat(swiperParams.slideVisibleClass)).each(function (slideEl) {
18855        var index = isVirtual ? (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(slideEl).attr('data-swiper-slide-index') : (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(slideEl).index();
18856        loadInSlide(index);
18857      });
18858    } else if (slidesPerView > 1) {
18859      for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) {
18860        if (slideExist(i)) loadInSlide(i);
18861      }
18862    } else {
18863      loadInSlide(activeIndex);
18864    }
18865    if (params.loadPrevNext) {
18866      if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {
18867        var amount = params.loadPrevNextAmount;
18868        var spv = Math.ceil(slidesPerView);
18869        var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);
18870        var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides
18871
18872        for (var _i = activeIndex + spv; _i < maxIndex; _i += 1) {
18873          if (slideExist(_i)) loadInSlide(_i);
18874        } // Prev Slides
18875
18876        for (var _i2 = minIndex; _i2 < activeIndex; _i2 += 1) {
18877          if (slideExist(_i2)) loadInSlide(_i2);
18878        }
18879      } else {
18880        var nextSlide = $wrapperEl.children(".".concat(swiperParams.slideNextClass));
18881        if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));
18882        var prevSlide = $wrapperEl.children(".".concat(swiperParams.slidePrevClass));
18883        if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));
18884      }
18885    }
18886  }
18887  function checkInViewOnLoad() {
18888    var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
18889    if (!swiper || swiper.destroyed) return;
18890    var $scrollElement = swiper.params.lazy.scrollingElement ? (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(swiper.params.lazy.scrollingElement) : (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(window);
18891    var isWindow = $scrollElement[0] === window;
18892    var scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;
18893    var scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;
18894    var swiperOffset = swiper.$el.offset();
18895    var rtl = swiper.rtlTranslate;
18896    var inView = false;
18897    if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;
18898    var swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];
18899    for (var i = 0; i < swiperCoord.length; i += 1) {
18900      var point = swiperCoord[i];
18901      if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) {
18902        if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line
18903
18904        inView = true;
18905      }
18906    }
18907    var passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? {
18908      passive: true,
18909      capture: false
18910    } : false;
18911    if (inView) {
18912      load();
18913      $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);
18914    } else if (!scrollHandlerAttached) {
18915      scrollHandlerAttached = true;
18916      $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);
18917    }
18918  }
18919  on('beforeInit', function () {
18920    if (swiper.params.lazy.enabled && swiper.params.preloadImages) {
18921      swiper.params.preloadImages = false;
18922    }
18923  });
18924  on('init', function () {
18925    if (swiper.params.lazy.enabled) {
18926      if (swiper.params.lazy.checkInView) {
18927        checkInViewOnLoad();
18928      } else {
18929        load();
18930      }
18931    }
18932  });
18933  on('scroll', function () {
18934    if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) {
18935      load();
18936    }
18937  });
18938  on('scrollbarDragMove resize _freeModeNoMomentumRelease', function () {
18939    if (swiper.params.lazy.enabled) {
18940      if (swiper.params.lazy.checkInView) {
18941        checkInViewOnLoad();
18942      } else {
18943        load();
18944      }
18945    }
18946  });
18947  on('transitionStart', function () {
18948    if (swiper.params.lazy.enabled) {
18949      if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) {
18950        if (swiper.params.lazy.checkInView) {
18951          checkInViewOnLoad();
18952        } else {
18953          load();
18954        }
18955      }
18956    }
18957  });
18958  on('transitionEnd', function () {
18959    if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {
18960      if (swiper.params.lazy.checkInView) {
18961        checkInViewOnLoad();
18962      } else {
18963        load();
18964      }
18965    }
18966  });
18967  on('slideChange', function () {
18968    var _swiper$params = swiper.params,
18969      lazy = _swiper$params.lazy,
18970      cssMode = _swiper$params.cssMode,
18971      watchSlidesProgress = _swiper$params.watchSlidesProgress,
18972      touchReleaseOnEdges = _swiper$params.touchReleaseOnEdges,
18973      resistanceRatio = _swiper$params.resistanceRatio;
18974    if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) {
18975      load();
18976    }
18977  });
18978  on('destroy', function () {
18979    if (!swiper.$el) return;
18980    swiper.$el.find(".".concat(swiper.params.lazy.loadingClass)).removeClass(swiper.params.lazy.loadingClass);
18981  });
18982  Object.assign(swiper.lazy, {
18983    load: load,
18984    loadInSlide: loadInSlide
18985  });
18986}
18987
18988/***/ }),
18989
vendor: 2,217 bytes, lines 18990-19023
18990/***/ "./node_modules/swiper/modules/manipulation/manipulation.js":
18991/*!******************************************************************!*\
18992  !*** ./node_modules/swiper/modules/manipulation/manipulation.js ***!
18993  \******************************************************************/
18994/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
18995
18996"use strict";
18997__webpack_require__.r(__webpack_exports__);
18998/* harmony export */ __webpack_require__.d(__webpack_exports__, {
18999/* harmony export */   "default": function() { return /* binding */ Manipulation; }
19000/* harmony export */ });
19001/* harmony import */ var _methods_appendSlide_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./methods/appendSlide.js */ "./node_modules/swiper/modules/manipulation/methods/appendSlide.js");
19002/* harmony import */ var _methods_prependSlide_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./methods/prependSlide.js */ "./node_modules/swiper/modules/manipulation/methods/prependSlide.js");
19003/* harmony import */ var _methods_addSlide_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./methods/addSlide.js */ "./node_modules/swiper/modules/manipulation/methods/addSlide.js");
19004/* harmony import */ var _methods_removeSlide_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./methods/removeSlide.js */ "./node_modules/swiper/modules/manipulation/methods/removeSlide.js");
19005/* harmony import */ var _methods_removeAllSlides_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./methods/removeAllSlides.js */ "./node_modules/swiper/modules/manipulation/methods/removeAllSlides.js");
19006
19007
19008
19009
19010
19011function Manipulation(_ref) {
19012  var swiper = _ref.swiper;
19013  Object.assign(swiper, {
19014    appendSlide: _methods_appendSlide_js__WEBPACK_IMPORTED_MODULE_0__["default"].bind(swiper),
19015    prependSlide: _methods_prependSlide_js__WEBPACK_IMPORTED_MODULE_1__["default"].bind(swiper),
19016    addSlide: _methods_addSlide_js__WEBPACK_IMPORTED_MODULE_2__["default"].bind(swiper),
19017    removeSlide: _methods_removeSlide_js__WEBPACK_IMPORTED_MODULE_3__["default"].bind(swiper),
19018    removeAllSlides: _methods_removeAllSlides_js__WEBPACK_IMPORTED_MODULE_4__["default"].bind(swiper)
19019  });
19020}
19021
19022/***/ }),
19023
vendor: 2,478 bytes, lines 19024-19088
19024/***/ "./node_modules/swiper/modules/manipulation/methods/addSlide.js":
19025/*!**********************************************************************!*\
19026  !*** ./node_modules/swiper/modules/manipulation/methods/addSlide.js ***!
19027  \**********************************************************************/
19028/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
19029
19030"use strict";
19031__webpack_require__.r(__webpack_exports__);
19032/* harmony export */ __webpack_require__.d(__webpack_exports__, {
19033/* harmony export */   "default": function() { return /* binding */ addSlide; }
19034/* harmony export */ });
19035function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
19036function addSlide(index, slides) {
19037  var swiper = this;
19038  var $wrapperEl = swiper.$wrapperEl,
19039    params = swiper.params,
19040    activeIndex = swiper.activeIndex;
19041  var activeIndexBuffer = activeIndex;
19042  if (params.loop) {
19043    activeIndexBuffer -= swiper.loopedSlides;
19044    swiper.loopDestroy();
19045    swiper.slides = $wrapperEl.children(".".concat(params.slideClass));
19046  }
19047  var baseLength = swiper.slides.length;
19048  if (index <= 0) {
19049    swiper.prependSlide(slides);
19050    return;
19051  }
19052  if (index >= baseLength) {
19053    swiper.appendSlide(slides);
19054    return;
19055  }
19056  var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
19057  var slidesBuffer = [];
19058  for (var i = baseLength - 1; i >= index; i -= 1) {
19059    var currentSlide = swiper.slides.eq(i);
19060    currentSlide.remove();
19061    slidesBuffer.unshift(currentSlide);
19062  }
19063  if (_typeof(slides) === 'object' && 'length' in slides) {
19064    for (var _i = 0; _i < slides.length; _i += 1) {
19065      if (slides[_i]) $wrapperEl.append(slides[_i]);
19066    }
19067    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
19068  } else {
19069    $wrapperEl.append(slides);
19070  }
19071  for (var _i2 = 0; _i2 < slidesBuffer.length; _i2 += 1) {
19072    $wrapperEl.append(slidesBuffer[_i2]);
19073  }
19074  if (params.loop) {
19075    swiper.loopCreate();
19076  }
19077  if (!params.observer) {
19078    swiper.update();
19079  }
19080  if (params.loop) {
19081    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
19082  } else {
19083    swiper.slideTo(newActiveIndex, 0, false);
19084  }
19085}
19086
19087/***/ }),
19088
vendor: 1,456 bytes, lines 19089-19124
19089/***/ "./node_modules/swiper/modules/manipulation/methods/appendSlide.js":
19090/*!*************************************************************************!*\
19091  !*** ./node_modules/swiper/modules/manipulation/methods/appendSlide.js ***!
19092  \*************************************************************************/
19093/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
19094
19095"use strict";
19096__webpack_require__.r(__webpack_exports__);
19097/* harmony export */ __webpack_require__.d(__webpack_exports__, {
19098/* harmony export */   "default": function() { return /* binding */ appendSlide; }
19099/* harmony export */ });
19100function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
19101function appendSlide(slides) {
19102  var swiper = this;
19103  var $wrapperEl = swiper.$wrapperEl,
19104    params = swiper.params;
19105  if (params.loop) {
19106    swiper.loopDestroy();
19107  }
19108  if (_typeof(slides) === 'object' && 'length' in slides) {
19109    for (var i = 0; i < slides.length; i += 1) {
19110      if (slides[i]) $wrapperEl.append(slides[i]);
19111    }
19112  } else {
19113    $wrapperEl.append(slides);
19114  }
19115  if (params.loop) {
19116    swiper.loopCreate();
19117  }
19118  if (!params.observer) {
19119    swiper.update();
19120  }
19121}
19122
19123/***/ }),
19124
vendor: 1,636 bytes, lines 19125-19164
19125/***/ "./node_modules/swiper/modules/manipulation/methods/prependSlide.js":
19126/*!**************************************************************************!*\
19127  !*** ./node_modules/swiper/modules/manipulation/methods/prependSlide.js ***!
19128  \**************************************************************************/
19129/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
19130
19131"use strict";
19132__webpack_require__.r(__webpack_exports__);
19133/* harmony export */ __webpack_require__.d(__webpack_exports__, {
19134/* harmony export */   "default": function() { return /* binding */ prependSlide; }
19135/* harmony export */ });
19136function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
19137function prependSlide(slides) {
19138  var swiper = this;
19139  var params = swiper.params,
19140    $wrapperEl = swiper.$wrapperEl,
19141    activeIndex = swiper.activeIndex;
19142  if (params.loop) {
19143    swiper.loopDestroy();
19144  }
19145  var newActiveIndex = activeIndex + 1;
19146  if (_typeof(slides) === 'object' && 'length' in slides) {
19147    for (var i = 0; i < slides.length; i += 1) {
19148      if (slides[i]) $wrapperEl.prepend(slides[i]);
19149    }
19150    newActiveIndex = activeIndex + slides.length;
19151  } else {
19152    $wrapperEl.prepend(slides);
19153  }
19154  if (params.loop) {
19155    swiper.loopCreate();
19156  }
19157  if (!params.observer) {
19158    swiper.update();
19159  }
19160  swiper.slideTo(newActiveIndex, 0, false);
19161}
19162
19163/***/ }),
19164
vendor: 873 bytes, lines 19165-19186
19165/***/ "./node_modules/swiper/modules/manipulation/methods/removeAllSlides.js":
19166/*!*****************************************************************************!*\
19167  !*** ./node_modules/swiper/modules/manipulation/methods/removeAllSlides.js ***!
19168  \*****************************************************************************/
19169/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
19170
19171"use strict";
19172__webpack_require__.r(__webpack_exports__);
19173/* harmony export */ __webpack_require__.d(__webpack_exports__, {
19174/* harmony export */   "default": function() { return /* binding */ removeAllSlides; }
19175/* harmony export */ });
19176function removeAllSlides() {
19177  var swiper = this;
19178  var slidesIndexes = [];
19179  for (var i = 0; i < swiper.slides.length; i += 1) {
19180    slidesIndexes.push(i);
19181  }
19182  swiper.removeSlide(slidesIndexes);
19183}
19184
19185/***/ }),
19186
vendor: 2,271 bytes, lines 19187-19239
19187/***/ "./node_modules/swiper/modules/manipulation/methods/removeSlide.js":
19188/*!*************************************************************************!*\
19189  !*** ./node_modules/swiper/modules/manipulation/methods/removeSlide.js ***!
19190  \*************************************************************************/
19191/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
19192
19193"use strict";
19194__webpack_require__.r(__webpack_exports__);
19195/* harmony export */ __webpack_require__.d(__webpack_exports__, {
19196/* harmony export */   "default": function() { return /* binding */ removeSlide; }
19197/* harmony export */ });
19198function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
19199function removeSlide(slidesIndexes) {
19200  var swiper = this;
19201  var params = swiper.params,
19202    $wrapperEl = swiper.$wrapperEl,
19203    activeIndex = swiper.activeIndex;
19204  var activeIndexBuffer = activeIndex;
19205  if (params.loop) {
19206    activeIndexBuffer -= swiper.loopedSlides;
19207    swiper.loopDestroy();
19208    swiper.slides = $wrapperEl.children(".".concat(params.slideClass));
19209  }
19210  var newActiveIndex = activeIndexBuffer;
19211  var indexToRemove;
19212  if (_typeof(slidesIndexes) === 'object' && 'length' in slidesIndexes) {
19213    for (var i = 0; i < slidesIndexes.length; i += 1) {
19214      indexToRemove = slidesIndexes[i];
19215      if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
19216      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
19217    }
19218    newActiveIndex = Math.max(newActiveIndex, 0);
19219  } else {
19220    indexToRemove = slidesIndexes;
19221    if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
19222    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
19223    newActiveIndex = Math.max(newActiveIndex, 0);
19224  }
19225  if (params.loop) {
19226    swiper.loopCreate();
19227  }
19228  if (!params.observer) {
19229    swiper.update();
19230  }
19231  if (params.loop) {
19232    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
19233  } else {
19234    swiper.slideTo(newActiveIndex, 0, false);
19235  }
19236}
19237
19238/***/ }),
19239
vendor: 15,635 bytes, lines 19240-19623
19240/***/ "./node_modules/swiper/modules/mousewheel/mousewheel.js":
19241/*!**************************************************************!*\
19242  !*** ./node_modules/swiper/modules/mousewheel/mousewheel.js ***!
19243  \**************************************************************/
19244/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
19245
19246"use strict";
19247__webpack_require__.r(__webpack_exports__);
19248/* harmony export */ __webpack_require__.d(__webpack_exports__, {
19249/* harmony export */   "default": function() { return /* binding */ Mousewheel; }
19250/* harmony export */ });
19251/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
19252/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
19253/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
19254/* eslint-disable consistent-return */
19255
19256
19257
19258function Mousewheel(_ref) {
19259  var swiper = _ref.swiper,
19260    extendParams = _ref.extendParams,
19261    on = _ref.on,
19262    emit = _ref.emit;
19263  var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
19264  extendParams({
19265    mousewheel: {
19266      enabled: false,
19267      releaseOnEdges: false,
19268      invert: false,
19269      forceToAxis: false,
19270      sensitivity: 1,
19271      eventsTarget: 'container',
19272      thresholdDelta: null,
19273      thresholdTime: null
19274    }
19275  });
19276  swiper.mousewheel = {
19277    enabled: false
19278  };
19279  var timeout;
19280  var lastScrollTime = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.now)();
19281  var lastEventBeforeSnap;
19282  var recentWheelEvents = [];
19283  function normalize(e) {
19284    // Reasonable defaults
19285    var PIXEL_STEP = 10;
19286    var LINE_HEIGHT = 40;
19287    var PAGE_HEIGHT = 800;
19288    var sX = 0;
19289    var sY = 0; // spinX, spinY
19290
19291    var pX = 0;
19292    var pY = 0; // pixelX, pixelY
19293    // Legacy
19294
19295    if ('detail' in e) {
19296      sY = e.detail;
19297    }
19298    if ('wheelDelta' in e) {
19299      sY = -e.wheelDelta / 120;
19300    }
19301    if ('wheelDeltaY' in e) {
19302      sY = -e.wheelDeltaY / 120;
19303    }
19304    if ('wheelDeltaX' in e) {
19305      sX = -e.wheelDeltaX / 120;
19306    } // side scrolling on FF with DOMMouseScroll
19307
19308    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
19309      sX = sY;
19310      sY = 0;
19311    }
19312    pX = sX * PIXEL_STEP;
19313    pY = sY * PIXEL_STEP;
19314    if ('deltaY' in e) {
19315      pY = e.deltaY;
19316    }
19317    if ('deltaX' in e) {
19318      pX = e.deltaX;
19319    }
19320    if (e.shiftKey && !pX) {
19321      // if user scrolls with shift he wants horizontal scroll
19322      pX = pY;
19323      pY = 0;
19324    }
19325    if ((pX || pY) && e.deltaMode) {
19326      if (e.deltaMode === 1) {
19327        // delta in LINE units
19328        pX *= LINE_HEIGHT;
19329        pY *= LINE_HEIGHT;
19330      } else {
19331        // delta in PAGE units
19332        pX *= PAGE_HEIGHT;
19333        pY *= PAGE_HEIGHT;
19334      }
19335    } // Fall-back if spin cannot be determined
19336
19337    if (pX && !sX) {
19338      sX = pX < 1 ? -1 : 1;
19339    }
19340    if (pY && !sY) {
19341      sY = pY < 1 ? -1 : 1;
19342    }
19343    return {
19344      spinX: sX,
19345      spinY: sY,
19346      pixelX: pX,
19347      pixelY: pY
19348    };
19349  }
19350  function handleMouseEnter() {
19351    if (!swiper.enabled) return;
19352    swiper.mouseEntered = true;
19353  }
19354  function handleMouseLeave() {
19355    if (!swiper.enabled) return;
19356    swiper.mouseEntered = false;
19357  }
19358  function animateSlider(newEvent) {
19359    if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {
19360      // Prevent if delta of wheel scroll delta is below configured threshold
19361      return false;
19362    }
19363    if (swiper.params.mousewheel.thresholdTime && (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.now)() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {
19364      // Prevent if time between scrolls is below configured threshold
19365      return false;
19366    } // If the movement is NOT big enough and
19367    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):
19368    //   Don't go any further (avoid insignificant scroll movement).
19369
19370    if (newEvent.delta >= 6 && (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.now)() - lastScrollTime < 60) {
19371      // Return false as a default
19372      return true;
19373    } // If user is scrolling towards the end:
19374    //   If the slider hasn't hit the latest slide or
19375    //   if the slider is a loop and
19376    //   if the slider isn't moving right now:
19377    //     Go to next slide and
19378    //     emit a scroll event.
19379    // Else (the user is scrolling towards the beginning) and
19380    // if the slider hasn't hit the first slide or
19381    // if the slider is a loop and
19382    // if the slider isn't moving right now:
19383    //   Go to prev slide and
19384    //   emit a scroll event.
19385
19386    if (newEvent.direction < 0) {
19387      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
19388        swiper.slideNext();
19389        emit('scroll', newEvent.raw);
19390      }
19391    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
19392      swiper.slidePrev();
19393      emit('scroll', newEvent.raw);
19394    } // If you got here is because an animation has been triggered so store the current time
19395
19396    lastScrollTime = new window.Date().getTime(); // Return false as a default
19397
19398    return false;
19399  }
19400  function releaseScroll(newEvent) {
19401    var params = swiper.params.mousewheel;
19402    if (newEvent.direction < 0) {
19403      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {
19404        // Return true to animate scroll on edges
19405        return true;
19406      }
19407    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {
19408      // Return true to animate scroll on edges
19409      return true;
19410    }
19411    return false;
19412  }
19413  function handle(event) {
19414    var e = event;
19415    var disableParentSwiper = true;
19416    if (!swiper.enabled) return;
19417    var params = swiper.params.mousewheel;
19418    if (swiper.params.cssMode) {
19419      e.preventDefault();
19420    }
19421    var target = swiper.$el;
19422    if (swiper.params.mousewheel.eventsTarget !== 'container') {
19423      target = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(swiper.params.mousewheel.eventsTarget);
19424    }
19425    if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;
19426    if (e.originalEvent) e = e.originalEvent; // jquery fix
19427
19428    var delta = 0;
19429    var rtlFactor = swiper.rtlTranslate ? -1 : 1;
19430    var data = normalize(e);
19431    if (params.forceToAxis) {
19432      if (swiper.isHorizontal()) {
19433        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;
19434      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;
19435    } else {
19436      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
19437    }
19438    if (delta === 0) return true;
19439    if (params.invert) delta = -delta; // Get the scroll positions
19440
19441    var positions = swiper.getTranslate() + delta * params.sensitivity;
19442    if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();
19443    if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true:
19444    //     the disableParentSwiper will be true.
19445    // When loop is false:
19446    //     if the scroll positions is not on edge,
19447    //     then the disableParentSwiper will be true.
19448    //     if the scroll on edge positions,
19449    //     then the disableParentSwiper will be false.
19450
19451    disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());
19452    if (disableParentSwiper && swiper.params.nested) e.stopPropagation();
19453    if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {
19454      // Register the new event in a variable which stores the relevant data
19455      var newEvent = {
19456        time: (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.now)(),
19457        delta: Math.abs(delta),
19458        direction: Math.sign(delta),
19459        raw: event
19460      }; // Keep the most recent events
19461
19462      if (recentWheelEvents.length >= 2) {
19463        recentWheelEvents.shift(); // only store the last N events
19464      }
19465      var prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
19466      recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:
19467      //   If direction has changed or
19468      //   if the scroll is quicker than the previous one:
19469      //     Animate the slider.
19470      // Else (this is the first time the wheel is moved):
19471      //     Animate the slider.
19472
19473      if (prevEvent) {
19474        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {
19475          animateSlider(newEvent);
19476        }
19477      } else {
19478        animateSlider(newEvent);
19479      } // If it's time to release the scroll:
19480      //   Return now so you don't hit the preventDefault.
19481
19482      if (releaseScroll(newEvent)) {
19483        return true;
19484      }
19485    } else {
19486      // Freemode or scrollContainer:
19487      // If we recently snapped after a momentum scroll, then ignore wheel events
19488      // to give time for the deceleration to finish. Stop ignoring after 500 msecs
19489      // or if it's a new scroll (larger delta or inverse sign as last event before
19490      // an end-of-momentum snap).
19491      var _newEvent = {
19492        time: (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.now)(),
19493        delta: Math.abs(delta),
19494        direction: Math.sign(delta)
19495      };
19496      var ignoreWheelEvents = lastEventBeforeSnap && _newEvent.time < lastEventBeforeSnap.time + 500 && _newEvent.delta <= lastEventBeforeSnap.delta && _newEvent.direction === lastEventBeforeSnap.direction;
19497      if (!ignoreWheelEvents) {
19498        lastEventBeforeSnap = undefined;
19499        if (swiper.params.loop) {
19500          swiper.loopFix();
19501        }
19502        var position = swiper.getTranslate() + delta * params.sensitivity;
19503        var wasBeginning = swiper.isBeginning;
19504        var wasEnd = swiper.isEnd;
19505        if (position >= swiper.minTranslate()) position = swiper.minTranslate();
19506        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();
19507        swiper.setTransition(0);
19508        swiper.setTranslate(position);
19509        swiper.updateProgress();
19510        swiper.updateActiveIndex();
19511        swiper.updateSlidesClasses();
19512        if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {
19513          swiper.updateSlidesClasses();
19514        }
19515        if (swiper.params.freeMode.sticky) {
19516          // When wheel scrolling starts with sticky (aka snap) enabled, then detect
19517          // the end of a momentum scroll by storing recent (N=15?) wheel events.
19518          // 1. do all N events have decreasing or same (absolute value) delta?
19519          // 2. did all N events arrive in the last M (M=500?) msecs?
19520          // 3. does the earliest event have an (absolute value) delta that's
19521          //    at least P (P=1?) larger than the most recent event's delta?
19522          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?
19523          // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration.
19524          // Snap immediately and ignore remaining wheel events in this scroll.
19525          // See comment above for "remaining wheel events in this scroll" determination.
19526          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.
19527          clearTimeout(timeout);
19528          timeout = undefined;
19529          if (recentWheelEvents.length >= 15) {
19530            recentWheelEvents.shift(); // only store the last N events
19531          }
19532          var _prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
19533          var firstEvent = recentWheelEvents[0];
19534          recentWheelEvents.push(_newEvent);
19535          if (_prevEvent && (_newEvent.delta > _prevEvent.delta || _newEvent.direction !== _prevEvent.direction)) {
19536            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.
19537            recentWheelEvents.splice(0);
19538          } else if (recentWheelEvents.length >= 15 && _newEvent.time - firstEvent.time < 500 && firstEvent.delta - _newEvent.delta >= 1 && _newEvent.delta <= 6) {
19539            // We're at the end of the deceleration of a momentum scroll, so there's no need
19540            // to wait for more events. Snap ASAP on the next tick.
19541            // Also, because there's some remaining momentum we'll bias the snap in the
19542            // direction of the ongoing scroll because it's better UX for the scroll to snap
19543            // in the same direction as the scroll instead of reversing to snap.  Therefore,
19544            // if it's already scrolled more than 20% in the current direction, keep going.
19545            var snapToThreshold = delta > 0 ? 0.8 : 0.2;
19546            lastEventBeforeSnap = _newEvent;
19547            recentWheelEvents.splice(0);
19548            timeout = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.nextTick)(function () {
19549              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
19550            }, 0); // no delay; move on next tick
19551          }
19552          if (!timeout) {
19553            // if we get here, then we haven't detected the end of a momentum scroll, so
19554            // we'll consider a scroll "complete" when there haven't been any wheel events
19555            // for 500ms.
19556            timeout = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.nextTick)(function () {
19557              var snapToThreshold = 0.5;
19558              lastEventBeforeSnap = _newEvent;
19559              recentWheelEvents.splice(0);
19560              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
19561            }, 500);
19562          }
19563        } // Emit event
19564
19565        if (!ignoreWheelEvents) emit('scroll', e); // Stop autoplay
19566
19567        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions
19568
19569        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;
19570      }
19571    }
19572    if (e.preventDefault) e.preventDefault();else e.returnValue = false;
19573    return false;
19574  }
19575  function events(method) {
19576    var target = swiper.$el;
19577    if (swiper.params.mousewheel.eventsTarget !== 'container') {
19578      target = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(swiper.params.mousewheel.eventsTarget);
19579    }
19580    target[method]('mouseenter', handleMouseEnter);
19581    target[method]('mouseleave', handleMouseLeave);
19582    target[method]('wheel', handle);
19583  }
19584  function enable() {
19585    if (swiper.params.cssMode) {
19586      swiper.wrapperEl.removeEventListener('wheel', handle);
19587      return true;
19588    }
19589    if (swiper.mousewheel.enabled) return false;
19590    events('on');
19591    swiper.mousewheel.enabled = true;
19592    return true;
19593  }
19594  function disable() {
19595    if (swiper.params.cssMode) {
19596      swiper.wrapperEl.addEventListener(event, handle);
19597      return true;
19598    }
19599    if (!swiper.mousewheel.enabled) return false;
19600    events('off');
19601    swiper.mousewheel.enabled = false;
19602    return true;
19603  }
19604  on('init', function () {
19605    if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {
19606      disable();
19607    }
19608    if (swiper.params.mousewheel.enabled) enable();
19609  });
19610  on('destroy', function () {
19611    if (swiper.params.cssMode) {
19612      enable();
19613    }
19614    if (swiper.mousewheel.enabled) disable();
19615  });
19616  Object.assign(swiper.mousewheel, {
19617    enable: enable,
19618    disable: disable
19619  });
19620}
19621
19622/***/ }),
19623
vendor: 6,738 bytes, lines 19624-19812
19624/***/ "./node_modules/swiper/modules/navigation/navigation.js":
19625/*!**************************************************************!*\
19626  !*** ./node_modules/swiper/modules/navigation/navigation.js ***!
19627  \**************************************************************/
19628/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
19629
19630"use strict";
19631__webpack_require__.r(__webpack_exports__);
19632/* harmony export */ __webpack_require__.d(__webpack_exports__, {
19633/* harmony export */   "default": function() { return /* binding */ Navigation; }
19634/* harmony export */ });
19635/* harmony import */ var _shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/create-element-if-not-defined.js */ "./node_modules/swiper/shared/create-element-if-not-defined.js");
19636/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
19637
19638
19639function Navigation(_ref) {
19640  var swiper = _ref.swiper,
19641    extendParams = _ref.extendParams,
19642    on = _ref.on,
19643    emit = _ref.emit;
19644  extendParams({
19645    navigation: {
19646      nextEl: null,
19647      prevEl: null,
19648      hideOnClick: false,
19649      disabledClass: 'swiper-button-disabled',
19650      hiddenClass: 'swiper-button-hidden',
19651      lockClass: 'swiper-button-lock',
19652      navigationDisabledClass: 'swiper-navigation-disabled'
19653    }
19654  });
19655  swiper.navigation = {
19656    nextEl: null,
19657    $nextEl: null,
19658    prevEl: null,
19659    $prevEl: null
19660  };
19661  function getEl(el) {
19662    var $el;
19663    if (el) {
19664      $el = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(el);
19665      if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {
19666        $el = swiper.$el.find(el);
19667      }
19668    }
19669    return $el;
19670  }
19671  function toggleEl($el, disabled) {
19672    var params = swiper.params.navigation;
19673    if ($el && $el.length > 0) {
19674      $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);
19675      if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;
19676      if (swiper.params.watchOverflow && swiper.enabled) {
19677        $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
19678      }
19679    }
19680  }
19681  function update() {
19682    // Update Navigation Buttons
19683    if (swiper.params.loop) return;
19684    var _swiper$navigation = swiper.navigation,
19685      $nextEl = _swiper$navigation.$nextEl,
19686      $prevEl = _swiper$navigation.$prevEl;
19687    toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);
19688    toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);
19689  }
19690  function onPrevClick(e) {
19691    e.preventDefault();
19692    if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;
19693    swiper.slidePrev();
19694    emit('navigationPrev');
19695  }
19696  function onNextClick(e) {
19697    e.preventDefault();
19698    if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;
19699    swiper.slideNext();
19700    emit('navigationNext');
19701  }
19702  function init() {
19703    var params = swiper.params.navigation;
19704    swiper.params.navigation = (0,_shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper, swiper.originalParams.navigation, swiper.params.navigation, {
19705      nextEl: 'swiper-button-next',
19706      prevEl: 'swiper-button-prev'
19707    });
19708    if (!(params.nextEl || params.prevEl)) return;
19709    var $nextEl = getEl(params.nextEl);
19710    var $prevEl = getEl(params.prevEl);
19711    if ($nextEl && $nextEl.length > 0) {
19712      $nextEl.on('click', onNextClick);
19713    }
19714    if ($prevEl && $prevEl.length > 0) {
19715      $prevEl.on('click', onPrevClick);
19716    }
19717    Object.assign(swiper.navigation, {
19718      $nextEl: $nextEl,
19719      nextEl: $nextEl && $nextEl[0],
19720      $prevEl: $prevEl,
19721      prevEl: $prevEl && $prevEl[0]
19722    });
19723    if (!swiper.enabled) {
19724      if ($nextEl) $nextEl.addClass(params.lockClass);
19725      if ($prevEl) $prevEl.addClass(params.lockClass);
19726    }
19727  }
19728  function destroy() {
19729    var _swiper$navigation2 = swiper.navigation,
19730      $nextEl = _swiper$navigation2.$nextEl,
19731      $prevEl = _swiper$navigation2.$prevEl;
19732    if ($nextEl && $nextEl.length) {
19733      $nextEl.off('click', onNextClick);
19734      $nextEl.removeClass(swiper.params.navigation.disabledClass);
19735    }
19736    if ($prevEl && $prevEl.length) {
19737      $prevEl.off('click', onPrevClick);
19738      $prevEl.removeClass(swiper.params.navigation.disabledClass);
19739    }
19740  }
19741  on('init', function () {
19742    if (swiper.params.navigation.enabled === false) {
19743      // eslint-disable-next-line
19744      disable();
19745    } else {
19746      init();
19747      update();
19748    }
19749  });
19750  on('toEdge fromEdge lock unlock', function () {
19751    update();
19752  });
19753  on('destroy', function () {
19754    destroy();
19755  });
19756  on('enable disable', function () {
19757    var _swiper$navigation3 = swiper.navigation,
19758      $nextEl = _swiper$navigation3.$nextEl,
19759      $prevEl = _swiper$navigation3.$prevEl;
19760    if ($nextEl) {
19761      $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);
19762    }
19763    if ($prevEl) {
19764      $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);
19765    }
19766  });
19767  on('click', function (_s, e) {
19768    var _swiper$navigation4 = swiper.navigation,
19769      $nextEl = _swiper$navigation4.$nextEl,
19770      $prevEl = _swiper$navigation4.$prevEl;
19771    var targetEl = e.target;
19772    if (swiper.params.navigation.hideOnClick && !(0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(targetEl).is($prevEl) && !(0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(targetEl).is($nextEl)) {
19773      if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;
19774      var isHidden;
19775      if ($nextEl) {
19776        isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);
19777      } else if ($prevEl) {
19778        isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);
19779      }
19780      if (isHidden === true) {
19781        emit('navigationShow');
19782      } else {
19783        emit('navigationHide');
19784      }
19785      if ($nextEl) {
19786        $nextEl.toggleClass(swiper.params.navigation.hiddenClass);
19787      }
19788      if ($prevEl) {
19789        $prevEl.toggleClass(swiper.params.navigation.hiddenClass);
19790      }
19791    }
19792  });
19793  var enable = function enable() {
19794    swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);
19795    init();
19796    update();
19797  };
19798  var disable = function disable() {
19799    swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);
19800    destroy();
19801  };
19802  Object.assign(swiper.navigation, {
19803    enable: enable,
19804    disable: disable,
19805    update: update,
19806    init: init,
19807    destroy: destroy
19808  });
19809}
19810
19811/***/ }),
19812
vendor: 16,750 bytes, lines 19813-20205
19813/***/ "./node_modules/swiper/modules/pagination/pagination.js":
19814/*!**************************************************************!*\
19815  !*** ./node_modules/swiper/modules/pagination/pagination.js ***!
19816  \**************************************************************/
19817/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
19818
19819"use strict";
19820__webpack_require__.r(__webpack_exports__);
19821/* harmony export */ __webpack_require__.d(__webpack_exports__, {
19822/* harmony export */   "default": function() { return /* binding */ Pagination; }
19823/* harmony export */ });
19824/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
19825/* harmony import */ var _shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/classes-to-selector.js */ "./node_modules/swiper/shared/classes-to-selector.js");
19826/* harmony import */ var _shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/create-element-if-not-defined.js */ "./node_modules/swiper/shared/create-element-if-not-defined.js");
19827
19828
19829
19830function Pagination(_ref) {
19831  var swiper = _ref.swiper,
19832    extendParams = _ref.extendParams,
19833    on = _ref.on,
19834    emit = _ref.emit;
19835  var pfx = 'swiper-pagination';
19836  extendParams({
19837    pagination: {
19838      el: null,
19839      bulletElement: 'span',
19840      clickable: false,
19841      hideOnClick: false,
19842      renderBullet: null,
19843      renderProgressbar: null,
19844      renderFraction: null,
19845      renderCustom: null,
19846      progressbarOpposite: false,
19847      type: 'bullets',
19848      // 'bullets' or 'progressbar' or 'fraction' or 'custom'
19849      dynamicBullets: false,
19850      dynamicMainBullets: 1,
19851      formatFractionCurrent: function formatFractionCurrent(number) {
19852        return number;
19853      },
19854      formatFractionTotal: function formatFractionTotal(number) {
19855        return number;
19856      },
19857      bulletClass: "".concat(pfx, "-bullet"),
19858      bulletActiveClass: "".concat(pfx, "-bullet-active"),
19859      modifierClass: "".concat(pfx, "-"),
19860      currentClass: "".concat(pfx, "-current"),
19861      totalClass: "".concat(pfx, "-total"),
19862      hiddenClass: "".concat(pfx, "-hidden"),
19863      progressbarFillClass: "".concat(pfx, "-progressbar-fill"),
19864      progressbarOppositeClass: "".concat(pfx, "-progressbar-opposite"),
19865      clickableClass: "".concat(pfx, "-clickable"),
19866      lockClass: "".concat(pfx, "-lock"),
19867      horizontalClass: "".concat(pfx, "-horizontal"),
19868      verticalClass: "".concat(pfx, "-vertical"),
19869      paginationDisabledClass: "".concat(pfx, "-disabled")
19870    }
19871  });
19872  swiper.pagination = {
19873    el: null,
19874    $el: null,
19875    bullets: []
19876  };
19877  var bulletSize;
19878  var dynamicBulletIndex = 0;
19879  function isPaginationDisabled() {
19880    return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;
19881  }
19882  function setSideBullets($bulletEl, position) {
19883    var bulletActiveClass = swiper.params.pagination.bulletActiveClass;
19884    $bulletEl[position]().addClass("".concat(bulletActiveClass, "-").concat(position))[position]().addClass("".concat(bulletActiveClass, "-").concat(position, "-").concat(position));
19885  }
19886  function update() {
19887    // Render || Update Pagination bullets/items
19888    var rtl = swiper.rtl;
19889    var params = swiper.params.pagination;
19890    if (isPaginationDisabled()) return;
19891    var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
19892    var $el = swiper.pagination.$el; // Current/Total
19893
19894    var current;
19895    var total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
19896    if (swiper.params.loop) {
19897      current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);
19898      if (current > slidesLength - 1 - swiper.loopedSlides * 2) {
19899        current -= slidesLength - swiper.loopedSlides * 2;
19900      }
19901      if (current > total - 1) current -= total;
19902      if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;
19903    } else if (typeof swiper.snapIndex !== 'undefined') {
19904      current = swiper.snapIndex;
19905    } else {
19906      current = swiper.activeIndex || 0;
19907    } // Types
19908
19909    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
19910      var bullets = swiper.pagination.bullets;
19911      var firstIndex;
19912      var lastIndex;
19913      var midIndex;
19914      if (params.dynamicBullets) {
19915        bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);
19916        $el.css(swiper.isHorizontal() ? 'width' : 'height', "".concat(bulletSize * (params.dynamicMainBullets + 4), "px"));
19917        if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {
19918          dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);
19919          if (dynamicBulletIndex > params.dynamicMainBullets - 1) {
19920            dynamicBulletIndex = params.dynamicMainBullets - 1;
19921          } else if (dynamicBulletIndex < 0) {
19922            dynamicBulletIndex = 0;
19923          }
19924        }
19925        firstIndex = Math.max(current - dynamicBulletIndex, 0);
19926        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
19927        midIndex = (lastIndex + firstIndex) / 2;
19928      }
19929      bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(function (suffix) {
19930        return "".concat(params.bulletActiveClass).concat(suffix);
19931      }).join(' '));
19932      if ($el.length > 1) {
19933        bullets.each(function (bullet) {
19934          var $bullet = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(bullet);
19935          var bulletIndex = $bullet.index();
19936          if (bulletIndex === current) {
19937            $bullet.addClass(params.bulletActiveClass);
19938          }
19939          if (params.dynamicBullets) {
19940            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
19941              $bullet.addClass("".concat(params.bulletActiveClass, "-main"));
19942            }
19943            if (bulletIndex === firstIndex) {
19944              setSideBullets($bullet, 'prev');
19945            }
19946            if (bulletIndex === lastIndex) {
19947              setSideBullets($bullet, 'next');
19948            }
19949          }
19950        });
19951      } else {
19952        var $bullet = bullets.eq(current);
19953        var bulletIndex = $bullet.index();
19954        $bullet.addClass(params.bulletActiveClass);
19955        if (params.dynamicBullets) {
19956          var $firstDisplayedBullet = bullets.eq(firstIndex);
19957          var $lastDisplayedBullet = bullets.eq(lastIndex);
19958          for (var i = firstIndex; i <= lastIndex; i += 1) {
19959            bullets.eq(i).addClass("".concat(params.bulletActiveClass, "-main"));
19960          }
19961          if (swiper.params.loop) {
19962            if (bulletIndex >= bullets.length) {
19963              for (var _i = params.dynamicMainBullets; _i >= 0; _i -= 1) {
19964                bullets.eq(bullets.length - _i).addClass("".concat(params.bulletActiveClass, "-main"));
19965              }
19966              bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass("".concat(params.bulletActiveClass, "-prev"));
19967            } else {
19968              setSideBullets($firstDisplayedBullet, 'prev');
19969              setSideBullets($lastDisplayedBullet, 'next');
19970            }
19971          } else {
19972            setSideBullets($firstDisplayedBullet, 'prev');
19973            setSideBullets($lastDisplayedBullet, 'next');
19974          }
19975        }
19976      }
19977      if (params.dynamicBullets) {
19978        var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
19979        var bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;
19980        var offsetProp = rtl ? 'right' : 'left';
19981        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', "".concat(bulletsOffset, "px"));
19982      }
19983    }
19984    if (params.type === 'fraction') {
19985      $el.find((0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.currentClass)).text(params.formatFractionCurrent(current + 1));
19986      $el.find((0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.totalClass)).text(params.formatFractionTotal(total));
19987    }
19988    if (params.type === 'progressbar') {
19989      var progressbarDirection;
19990      if (params.progressbarOpposite) {
19991        progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
19992      } else {
19993        progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
19994      }
19995      var scale = (current + 1) / total;
19996      var scaleX = 1;
19997      var scaleY = 1;
19998      if (progressbarDirection === 'horizontal') {
19999        scaleX = scale;
20000      } else {
20001        scaleY = scale;
20002      }
20003      $el.find((0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.progressbarFillClass)).transform("translate3d(0,0,0) scaleX(".concat(scaleX, ") scaleY(").concat(scaleY, ")")).transition(swiper.params.speed);
20004    }
20005    if (params.type === 'custom' && params.renderCustom) {
20006      $el.html(params.renderCustom(swiper, current + 1, total));
20007      emit('paginationRender', $el[0]);
20008    } else {
20009      emit('paginationUpdate', $el[0]);
20010    }
20011    if (swiper.params.watchOverflow && swiper.enabled) {
20012      $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
20013    }
20014  }
20015  function render() {
20016    // Render Container
20017    var params = swiper.params.pagination;
20018    if (isPaginationDisabled()) return;
20019    var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
20020    var $el = swiper.pagination.$el;
20021    var paginationHTML = '';
20022    if (params.type === 'bullets') {
20023      var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
20024      if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {
20025        numberOfBullets = slidesLength;
20026      }
20027      for (var i = 0; i < numberOfBullets; i += 1) {
20028        if (params.renderBullet) {
20029          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
20030        } else {
20031          paginationHTML += "<".concat(params.bulletElement, " class=\"").concat(params.bulletClass, "\"></").concat(params.bulletElement, ">");
20032        }
20033      }
20034      $el.html(paginationHTML);
20035      swiper.pagination.bullets = $el.find((0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.bulletClass));
20036    }
20037    if (params.type === 'fraction') {
20038      if (params.renderFraction) {
20039        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
20040      } else {
20041        paginationHTML = "<span class=\"".concat(params.currentClass, "\"></span>") + ' / ' + "<span class=\"".concat(params.totalClass, "\"></span>");
20042      }
20043      $el.html(paginationHTML);
20044    }
20045    if (params.type === 'progressbar') {
20046      if (params.renderProgressbar) {
20047        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
20048      } else {
20049        paginationHTML = "<span class=\"".concat(params.progressbarFillClass, "\"></span>");
20050      }
20051      $el.html(paginationHTML);
20052    }
20053    if (params.type !== 'custom') {
20054      emit('paginationRender', swiper.pagination.$el[0]);
20055    }
20056  }
20057  function init() {
20058    swiper.params.pagination = (0,_shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_2__["default"])(swiper, swiper.originalParams.pagination, swiper.params.pagination, {
20059      el: 'swiper-pagination'
20060    });
20061    var params = swiper.params.pagination;
20062    if (!params.el) return;
20063    var $el = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params.el);
20064    if ($el.length === 0) return;
20065    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {
20066      $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper
20067
20068      if ($el.length > 1) {
20069        $el = $el.filter(function (el) {
20070          if ((0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(el).parents('.swiper')[0] !== swiper.el) return false;
20071          return true;
20072        });
20073      }
20074    }
20075    if (params.type === 'bullets' && params.clickable) {
20076      $el.addClass(params.clickableClass);
20077    }
20078    $el.addClass(params.modifierClass + params.type);
20079    $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
20080    if (params.type === 'bullets' && params.dynamicBullets) {
20081      $el.addClass("".concat(params.modifierClass).concat(params.type, "-dynamic"));
20082      dynamicBulletIndex = 0;
20083      if (params.dynamicMainBullets < 1) {
20084        params.dynamicMainBullets = 1;
20085      }
20086    }
20087    if (params.type === 'progressbar' && params.progressbarOpposite) {
20088      $el.addClass(params.progressbarOppositeClass);
20089    }
20090    if (params.clickable) {
20091      $el.on('click', (0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.bulletClass), function onClick(e) {
20092        e.preventDefault();
20093        var index = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(this).index() * swiper.params.slidesPerGroup;
20094        if (swiper.params.loop) index += swiper.loopedSlides;
20095        swiper.slideTo(index);
20096      });
20097    }
20098    Object.assign(swiper.pagination, {
20099      $el: $el,
20100      el: $el[0]
20101    });
20102    if (!swiper.enabled) {
20103      $el.addClass(params.lockClass);
20104    }
20105  }
20106  function destroy() {
20107    var params = swiper.params.pagination;
20108    if (isPaginationDisabled()) return;
20109    var $el = swiper.pagination.$el;
20110    $el.removeClass(params.hiddenClass);
20111    $el.removeClass(params.modifierClass + params.type);
20112    $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
20113    if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);
20114    if (params.clickable) {
20115      $el.off('click', (0,_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.bulletClass));
20116    }
20117  }
20118  on('init', function () {
20119    if (swiper.params.pagination.enabled === false) {
20120      // eslint-disable-next-line
20121      disable();
20122    } else {
20123      init();
20124      render();
20125      update();
20126    }
20127  });
20128  on('activeIndexChange', function () {
20129    if (swiper.params.loop) {
20130      update();
20131    } else if (typeof swiper.snapIndex === 'undefined') {
20132      update();
20133    }
20134  });
20135  on('snapIndexChange', function () {
20136    if (!swiper.params.loop) {
20137      update();
20138    }
20139  });
20140  on('slidesLengthChange', function () {
20141    if (swiper.params.loop) {
20142      render();
20143      update();
20144    }
20145  });
20146  on('snapGridLengthChange', function () {
20147    if (!swiper.params.loop) {
20148      render();
20149      update();
20150    }
20151  });
20152  on('destroy', function () {
20153    destroy();
20154  });
20155  on('enable disable', function () {
20156    var $el = swiper.pagination.$el;
20157    if ($el) {
20158      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);
20159    }
20160  });
20161  on('lock unlock', function () {
20162    update();
20163  });
20164  on('click', function (_s, e) {
20165    var targetEl = e.target;
20166    var $el = swiper.pagination.$el;
20167    if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el && $el.length > 0 && !(0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(targetEl).hasClass(swiper.params.pagination.bulletClass)) {
20168      if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;
20169      var isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);
20170      if (isHidden === true) {
20171        emit('paginationShow');
20172      } else {
20173        emit('paginationHide');
20174      }
20175      $el.toggleClass(swiper.params.pagination.hiddenClass);
20176    }
20177  });
20178  var enable = function enable() {
20179    swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass);
20180    if (swiper.pagination.$el) {
20181      swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass);
20182    }
20183    init();
20184    render();
20185    update();
20186  };
20187  var disable = function disable() {
20188    swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass);
20189    if (swiper.pagination.$el) {
20190      swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass);
20191    }
20192    destroy();
20193  };
20194  Object.assign(swiper.pagination, {
20195    enable: enable,
20196    disable: disable,
20197    render: render,
20198    update: update,
20199    init: init,
20200    destroy: destroy
20201  });
20202}
20203
20204/***/ }),
20205
vendor: 4,650 bytes, lines 20206-20317
20206/***/ "./node_modules/swiper/modules/parallax/parallax.js":
20207/*!**********************************************************!*\
20208  !*** ./node_modules/swiper/modules/parallax/parallax.js ***!
20209  \**********************************************************/
20210/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
20211
20212"use strict";
20213__webpack_require__.r(__webpack_exports__);
20214/* harmony export */ __webpack_require__.d(__webpack_exports__, {
20215/* harmony export */   "default": function() { return /* binding */ Parallax; }
20216/* harmony export */ });
20217/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
20218
20219function Parallax(_ref) {
20220  var swiper = _ref.swiper,
20221    extendParams = _ref.extendParams,
20222    on = _ref.on;
20223  extendParams({
20224    parallax: {
20225      enabled: false
20226    }
20227  });
20228  var setTransform = function setTransform(el, progress) {
20229    var rtl = swiper.rtl;
20230    var $el = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(el);
20231    var rtlFactor = rtl ? -1 : 1;
20232    var p = $el.attr('data-swiper-parallax') || '0';
20233    var x = $el.attr('data-swiper-parallax-x');
20234    var y = $el.attr('data-swiper-parallax-y');
20235    var scale = $el.attr('data-swiper-parallax-scale');
20236    var opacity = $el.attr('data-swiper-parallax-opacity');
20237    if (x || y) {
20238      x = x || '0';
20239      y = y || '0';
20240    } else if (swiper.isHorizontal()) {
20241      x = p;
20242      y = '0';
20243    } else {
20244      y = p;
20245      x = '0';
20246    }
20247    if (x.indexOf('%') >= 0) {
20248      x = "".concat(parseInt(x, 10) * progress * rtlFactor, "%");
20249    } else {
20250      x = "".concat(x * progress * rtlFactor, "px");
20251    }
20252    if (y.indexOf('%') >= 0) {
20253      y = "".concat(parseInt(y, 10) * progress, "%");
20254    } else {
20255      y = "".concat(y * progress, "px");
20256    }
20257    if (typeof opacity !== 'undefined' && opacity !== null) {
20258      var currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));
20259      $el[0].style.opacity = currentOpacity;
20260    }
20261    if (typeof scale === 'undefined' || scale === null) {
20262      $el.transform("translate3d(".concat(x, ", ").concat(y, ", 0px)"));
20263    } else {
20264      var currentScale = scale - (scale - 1) * (1 - Math.abs(progress));
20265      $el.transform("translate3d(".concat(x, ", ").concat(y, ", 0px) scale(").concat(currentScale, ")"));
20266    }
20267  };
20268  var setTranslate = function setTranslate() {
20269    var $el = swiper.$el,
20270      slides = swiper.slides,
20271      progress = swiper.progress,
20272      snapGrid = swiper.snapGrid;
20273    $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (el) {
20274      setTransform(el, progress);
20275    });
20276    slides.each(function (slideEl, slideIndex) {
20277      var slideProgress = slideEl.progress;
20278      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {
20279        slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);
20280      }
20281      slideProgress = Math.min(Math.max(slideProgress, -1), 1);
20282      (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (el) {
20283        setTransform(el, slideProgress);
20284      });
20285    });
20286  };
20287  var setTransition = function setTransition() {
20288    var duration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : swiper.params.speed;
20289    var $el = swiper.$el;
20290    $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (parallaxEl) {
20291      var $parallaxEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(parallaxEl);
20292      var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;
20293      if (duration === 0) parallaxDuration = 0;
20294      $parallaxEl.transition(parallaxDuration);
20295    });
20296  };
20297  on('beforeInit', function () {
20298    if (!swiper.params.parallax.enabled) return;
20299    swiper.params.watchSlidesProgress = true;
20300    swiper.originalParams.watchSlidesProgress = true;
20301  });
20302  on('init', function () {
20303    if (!swiper.params.parallax.enabled) return;
20304    setTranslate();
20305  });
20306  on('setTranslate', function () {
20307    if (!swiper.params.parallax.enabled) return;
20308    setTranslate();
20309  });
20310  on('setTransition', function (_swiper, duration) {
20311    if (!swiper.params.parallax.enabled) return;
20312    setTransition(duration);
20313  });
20314}
20315
20316/***/ }),
20317
vendor: 12,134 bytes, lines 20318-20657
20318/***/ "./node_modules/swiper/modules/scrollbar/scrollbar.js":
20319/*!************************************************************!*\
20320  !*** ./node_modules/swiper/modules/scrollbar/scrollbar.js ***!
20321  \************************************************************/
20322/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
20323
20324"use strict";
20325__webpack_require__.r(__webpack_exports__);
20326/* harmony export */ __webpack_require__.d(__webpack_exports__, {
20327/* harmony export */   "default": function() { return /* binding */ Scrollbar; }
20328/* harmony export */ });
20329/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
20330/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
20331/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
20332/* harmony import */ var _shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../shared/create-element-if-not-defined.js */ "./node_modules/swiper/shared/create-element-if-not-defined.js");
20333
20334
20335
20336
20337function Scrollbar(_ref) {
20338  var swiper = _ref.swiper,
20339    extendParams = _ref.extendParams,
20340    on = _ref.on,
20341    emit = _ref.emit;
20342  var document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
20343  var isTouched = false;
20344  var timeout = null;
20345  var dragTimeout = null;
20346  var dragStartPos;
20347  var dragSize;
20348  var trackSize;
20349  var divider;
20350  extendParams({
20351    scrollbar: {
20352      el: null,
20353      dragSize: 'auto',
20354      hide: false,
20355      draggable: false,
20356      snapOnRelease: true,
20357      lockClass: 'swiper-scrollbar-lock',
20358      dragClass: 'swiper-scrollbar-drag',
20359      scrollbarDisabledClass: 'swiper-scrollbar-disabled',
20360      horizontalClass: "swiper-scrollbar-horizontal",
20361      verticalClass: "swiper-scrollbar-vertical"
20362    }
20363  });
20364  swiper.scrollbar = {
20365    el: null,
20366    dragEl: null,
20367    $el: null,
20368    $dragEl: null
20369  };
20370  function setTranslate() {
20371    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
20372    var scrollbar = swiper.scrollbar,
20373      rtl = swiper.rtlTranslate,
20374      progress = swiper.progress;
20375    var $dragEl = scrollbar.$dragEl,
20376      $el = scrollbar.$el;
20377    var params = swiper.params.scrollbar;
20378    var newSize = dragSize;
20379    var newPos = (trackSize - dragSize) * progress;
20380    if (rtl) {
20381      newPos = -newPos;
20382      if (newPos > 0) {
20383        newSize = dragSize - newPos;
20384        newPos = 0;
20385      } else if (-newPos + dragSize > trackSize) {
20386        newSize = trackSize + newPos;
20387      }
20388    } else if (newPos < 0) {
20389      newSize = dragSize + newPos;
20390      newPos = 0;
20391    } else if (newPos + dragSize > trackSize) {
20392      newSize = trackSize - newPos;
20393    }
20394    if (swiper.isHorizontal()) {
20395      $dragEl.transform("translate3d(".concat(newPos, "px, 0, 0)"));
20396      $dragEl[0].style.width = "".concat(newSize, "px");
20397    } else {
20398      $dragEl.transform("translate3d(0px, ".concat(newPos, "px, 0)"));
20399      $dragEl[0].style.height = "".concat(newSize, "px");
20400    }
20401    if (params.hide) {
20402      clearTimeout(timeout);
20403      $el[0].style.opacity = 1;
20404      timeout = setTimeout(function () {
20405        $el[0].style.opacity = 0;
20406        $el.transition(400);
20407      }, 1000);
20408    }
20409  }
20410  function setTransition(duration) {
20411    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
20412    swiper.scrollbar.$dragEl.transition(duration);
20413  }
20414  function updateSize() {
20415    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
20416    var scrollbar = swiper.scrollbar;
20417    var $dragEl = scrollbar.$dragEl,
20418      $el = scrollbar.$el;
20419    $dragEl[0].style.width = '';
20420    $dragEl[0].style.height = '';
20421    trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;
20422    divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));
20423    if (swiper.params.scrollbar.dragSize === 'auto') {
20424      dragSize = trackSize * divider;
20425    } else {
20426      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);
20427    }
20428    if (swiper.isHorizontal()) {
20429      $dragEl[0].style.width = "".concat(dragSize, "px");
20430    } else {
20431      $dragEl[0].style.height = "".concat(dragSize, "px");
20432    }
20433    if (divider >= 1) {
20434      $el[0].style.display = 'none';
20435    } else {
20436      $el[0].style.display = '';
20437    }
20438    if (swiper.params.scrollbar.hide) {
20439      $el[0].style.opacity = 0;
20440    }
20441    if (swiper.params.watchOverflow && swiper.enabled) {
20442      scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);
20443    }
20444  }
20445  function getPointerPosition(e) {
20446    if (swiper.isHorizontal()) {
20447      return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;
20448    }
20449    return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;
20450  }
20451  function setDragPosition(e) {
20452    var scrollbar = swiper.scrollbar,
20453      rtl = swiper.rtlTranslate;
20454    var $el = scrollbar.$el;
20455    var positionRatio;
20456    positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);
20457    positionRatio = Math.max(Math.min(positionRatio, 1), 0);
20458    if (rtl) {
20459      positionRatio = 1 - positionRatio;
20460    }
20461    var position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;
20462    swiper.updateProgress(position);
20463    swiper.setTranslate(position);
20464    swiper.updateActiveIndex();
20465    swiper.updateSlidesClasses();
20466  }
20467  function onDragStart(e) {
20468    var params = swiper.params.scrollbar;
20469    var scrollbar = swiper.scrollbar,
20470      $wrapperEl = swiper.$wrapperEl;
20471    var $el = scrollbar.$el,
20472      $dragEl = scrollbar.$dragEl;
20473    isTouched = true;
20474    dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;
20475    e.preventDefault();
20476    e.stopPropagation();
20477    $wrapperEl.transition(100);
20478    $dragEl.transition(100);
20479    setDragPosition(e);
20480    clearTimeout(dragTimeout);
20481    $el.transition(0);
20482    if (params.hide) {
20483      $el.css('opacity', 1);
20484    }
20485    if (swiper.params.cssMode) {
20486      swiper.$wrapperEl.css('scroll-snap-type', 'none');
20487    }
20488    emit('scrollbarDragStart', e);
20489  }
20490  function onDragMove(e) {
20491    var scrollbar = swiper.scrollbar,
20492      $wrapperEl = swiper.$wrapperEl;
20493    var $el = scrollbar.$el,
20494      $dragEl = scrollbar.$dragEl;
20495    if (!isTouched) return;
20496    if (e.preventDefault) e.preventDefault();else e.returnValue = false;
20497    setDragPosition(e);
20498    $wrapperEl.transition(0);
20499    $el.transition(0);
20500    $dragEl.transition(0);
20501    emit('scrollbarDragMove', e);
20502  }
20503  function onDragEnd(e) {
20504    var params = swiper.params.scrollbar;
20505    var scrollbar = swiper.scrollbar,
20506      $wrapperEl = swiper.$wrapperEl;
20507    var $el = scrollbar.$el;
20508    if (!isTouched) return;
20509    isTouched = false;
20510    if (swiper.params.cssMode) {
20511      swiper.$wrapperEl.css('scroll-snap-type', '');
20512      $wrapperEl.transition('');
20513    }
20514    if (params.hide) {
20515      clearTimeout(dragTimeout);
20516      dragTimeout = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.nextTick)(function () {
20517        $el.css('opacity', 0);
20518        $el.transition(400);
20519      }, 1000);
20520    }
20521    emit('scrollbarDragEnd', e);
20522    if (params.snapOnRelease) {
20523      swiper.slideToClosest();
20524    }
20525  }
20526  function events(method) {
20527    var scrollbar = swiper.scrollbar,
20528      touchEventsTouch = swiper.touchEventsTouch,
20529      touchEventsDesktop = swiper.touchEventsDesktop,
20530      params = swiper.params,
20531      support = swiper.support;
20532    var $el = scrollbar.$el;
20533    if (!$el) return;
20534    var target = $el[0];
20535    var activeListener = support.passiveListener && params.passiveListeners ? {
20536      passive: false,
20537      capture: false
20538    } : false;
20539    var passiveListener = support.passiveListener && params.passiveListeners ? {
20540      passive: true,
20541      capture: false
20542    } : false;
20543    if (!target) return;
20544    var eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';
20545    if (!support.touch) {
20546      target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);
20547      document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);
20548      document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);
20549    } else {
20550      target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);
20551      target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);
20552      target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);
20553    }
20554  }
20555  function enableDraggable() {
20556    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
20557    events('on');
20558  }
20559  function disableDraggable() {
20560    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
20561    events('off');
20562  }
20563  function init() {
20564    var scrollbar = swiper.scrollbar,
20565      $swiperEl = swiper.$el;
20566    swiper.params.scrollbar = (0,_shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_3__["default"])(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {
20567      el: 'swiper-scrollbar'
20568    });
20569    var params = swiper.params.scrollbar;
20570    if (!params.el) return;
20571    var $el = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.el);
20572    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {
20573      $el = $swiperEl.find(params.el);
20574    }
20575    $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
20576    var $dragEl = $el.find(".".concat(swiper.params.scrollbar.dragClass));
20577    if ($dragEl.length === 0) {
20578      $dragEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])("<div class=\"".concat(swiper.params.scrollbar.dragClass, "\"></div>"));
20579      $el.append($dragEl);
20580    }
20581    Object.assign(scrollbar, {
20582      $el: $el,
20583      el: $el[0],
20584      $dragEl: $dragEl,
20585      dragEl: $dragEl[0]
20586    });
20587    if (params.draggable) {
20588      enableDraggable();
20589    }
20590    if ($el) {
20591      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);
20592    }
20593  }
20594  function destroy() {
20595    var params = swiper.params.scrollbar;
20596    var $el = swiper.scrollbar.$el;
20597    if ($el) {
20598      $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
20599    }
20600    disableDraggable();
20601  }
20602  on('init', function () {
20603    if (swiper.params.scrollbar.enabled === false) {
20604      // eslint-disable-next-line
20605      disable();
20606    } else {
20607      init();
20608      updateSize();
20609      setTranslate();
20610    }
20611  });
20612  on('update resize observerUpdate lock unlock', function () {
20613    updateSize();
20614  });
20615  on('setTranslate', function () {
20616    setTranslate();
20617  });
20618  on('setTransition', function (_s, duration) {
20619    setTransition(duration);
20620  });
20621  on('enable disable', function () {
20622    var $el = swiper.scrollbar.$el;
20623    if ($el) {
20624      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);
20625    }
20626  });
20627  on('destroy', function () {
20628    destroy();
20629  });
20630  var enable = function enable() {
20631    swiper.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);
20632    if (swiper.scrollbar.$el) {
20633      swiper.scrollbar.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);
20634    }
20635    init();
20636    updateSize();
20637    setTranslate();
20638  };
20639  var disable = function disable() {
20640    swiper.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);
20641    if (swiper.scrollbar.$el) {
20642      swiper.scrollbar.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);
20643    }
20644    destroy();
20645  };
20646  Object.assign(swiper.scrollbar, {
20647    enable: enable,
20648    disable: disable,
20649    updateSize: updateSize,
20650    setTranslate: setTranslate,
20651    init: init,
20652    destroy: destroy
20653  });
20654}
20655
20656/***/ }),
20657
vendor: 8,602 bytes, lines 20658-20846
20658/***/ "./node_modules/swiper/modules/thumbs/thumbs.js":
20659/*!******************************************************!*\
20660  !*** ./node_modules/swiper/modules/thumbs/thumbs.js ***!
20661  \******************************************************/
20662/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
20663
20664"use strict";
20665__webpack_require__.r(__webpack_exports__);
20666/* harmony export */ __webpack_require__.d(__webpack_exports__, {
20667/* harmony export */   "default": function() { return /* binding */ Thumb; }
20668/* harmony export */ });
20669/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
20670/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
20671
20672
20673function Thumb(_ref) {
20674  var swiper = _ref.swiper,
20675    extendParams = _ref.extendParams,
20676    on = _ref.on;
20677  extendParams({
20678    thumbs: {
20679      swiper: null,
20680      multipleActiveThumbs: true,
20681      autoScrollOffset: 0,
20682      slideThumbActiveClass: 'swiper-slide-thumb-active',
20683      thumbsContainerClass: 'swiper-thumbs'
20684    }
20685  });
20686  var initialized = false;
20687  var swiperCreated = false;
20688  swiper.thumbs = {
20689    swiper: null
20690  };
20691  function onThumbClick() {
20692    var thumbsSwiper = swiper.thumbs.swiper;
20693    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
20694    var clickedIndex = thumbsSwiper.clickedIndex;
20695    var clickedSlide = thumbsSwiper.clickedSlide;
20696    if (clickedSlide && (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;
20697    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;
20698    var slideToIndex;
20699    if (thumbsSwiper.params.loop) {
20700      slideToIndex = parseInt((0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);
20701    } else {
20702      slideToIndex = clickedIndex;
20703    }
20704    if (swiper.params.loop) {
20705      var currentIndex = swiper.activeIndex;
20706      if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {
20707        swiper.loopFix(); // eslint-disable-next-line
20708
20709        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
20710        currentIndex = swiper.activeIndex;
20711      }
20712      var prevIndex = swiper.slides.eq(currentIndex).prevAll("[data-swiper-slide-index=\"".concat(slideToIndex, "\"]")).eq(0).index();
20713      var nextIndex = swiper.slides.eq(currentIndex).nextAll("[data-swiper-slide-index=\"".concat(slideToIndex, "\"]")).eq(0).index();
20714      if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;
20715    }
20716    swiper.slideTo(slideToIndex);
20717  }
20718  function init() {
20719    var thumbsParams = swiper.params.thumbs;
20720    if (initialized) return false;
20721    initialized = true;
20722    var SwiperClass = swiper.constructor;
20723    if (thumbsParams.swiper instanceof SwiperClass) {
20724      swiper.thumbs.swiper = thumbsParams.swiper;
20725      Object.assign(swiper.thumbs.swiper.originalParams, {
20726        watchSlidesProgress: true,
20727        slideToClickedSlide: false
20728      });
20729      Object.assign(swiper.thumbs.swiper.params, {
20730        watchSlidesProgress: true,
20731        slideToClickedSlide: false
20732      });
20733    } else if ((0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__.isObject)(thumbsParams.swiper)) {
20734      var thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);
20735      Object.assign(thumbsSwiperParams, {
20736        watchSlidesProgress: true,
20737        slideToClickedSlide: false
20738      });
20739      swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);
20740      swiperCreated = true;
20741    }
20742    swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);
20743    swiper.thumbs.swiper.on('tap', onThumbClick);
20744    return true;
20745  }
20746  function update(initial) {
20747    var thumbsSwiper = swiper.thumbs.swiper;
20748    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
20749    var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; // Activate thumbs
20750
20751    var thumbsToActivate = 1;
20752    var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
20753    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
20754      thumbsToActivate = swiper.params.slidesPerView;
20755    }
20756    if (!swiper.params.thumbs.multipleActiveThumbs) {
20757      thumbsToActivate = 1;
20758    }
20759    thumbsToActivate = Math.floor(thumbsToActivate);
20760    thumbsSwiper.slides.removeClass(thumbActiveClass);
20761    if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {
20762      for (var i = 0; i < thumbsToActivate; i += 1) {
20763        thumbsSwiper.$wrapperEl.children("[data-swiper-slide-index=\"".concat(swiper.realIndex + i, "\"]")).addClass(thumbActiveClass);
20764      }
20765    } else {
20766      for (var _i = 0; _i < thumbsToActivate; _i += 1) {
20767        thumbsSwiper.slides.eq(swiper.realIndex + _i).addClass(thumbActiveClass);
20768      }
20769    }
20770    var autoScrollOffset = swiper.params.thumbs.autoScrollOffset;
20771    var useOffset = autoScrollOffset && !thumbsSwiper.params.loop;
20772    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {
20773      var currentThumbsIndex = thumbsSwiper.activeIndex;
20774      var newThumbsIndex;
20775      var direction;
20776      if (thumbsSwiper.params.loop) {
20777        if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {
20778          thumbsSwiper.loopFix(); // eslint-disable-next-line
20779
20780          thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;
20781          currentThumbsIndex = thumbsSwiper.activeIndex;
20782        } // Find actual thumbs index to slide to
20783
20784        var prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll("[data-swiper-slide-index=\"".concat(swiper.realIndex, "\"]")).eq(0).index();
20785        var nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll("[data-swiper-slide-index=\"".concat(swiper.realIndex, "\"]")).eq(0).index();
20786        if (typeof prevThumbsIndex === 'undefined') {
20787          newThumbsIndex = nextThumbsIndex;
20788        } else if (typeof nextThumbsIndex === 'undefined') {
20789          newThumbsIndex = prevThumbsIndex;
20790        } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {
20791          newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;
20792        } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {
20793          newThumbsIndex = nextThumbsIndex;
20794        } else {
20795          newThumbsIndex = prevThumbsIndex;
20796        }
20797        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';
20798      } else {
20799        newThumbsIndex = swiper.realIndex;
20800        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';
20801      }
20802      if (useOffset) {
20803        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;
20804      }
20805      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
20806        if (thumbsSwiper.params.centeredSlides) {
20807          if (newThumbsIndex > currentThumbsIndex) {
20808            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
20809          } else {
20810            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
20811          }
20812        } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1;
20813        }
20814        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);
20815      }
20816    }
20817  }
20818  on('beforeInit', function () {
20819    var thumbs = swiper.params.thumbs;
20820    if (!thumbs || !thumbs.swiper) return;
20821    init();
20822    update(true);
20823  });
20824  on('slideChange update resize observerUpdate', function () {
20825    update();
20826  });
20827  on('setTransition', function (_s, duration) {
20828    var thumbsSwiper = swiper.thumbs.swiper;
20829    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
20830    thumbsSwiper.setTransition(duration);
20831  });
20832  on('beforeDestroy', function () {
20833    var thumbsSwiper = swiper.thumbs.swiper;
20834    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
20835    if (swiperCreated) {
20836      thumbsSwiper.destroy();
20837    }
20838  });
20839  Object.assign(swiper.thumbs, {
20840    init: init,
20841    update: update
20842  });
20843}
20844
20845/***/ }),
20846
vendor: 9,987 bytes, lines 20847-21113
20847/***/ "./node_modules/swiper/modules/virtual/virtual.js":
20848/*!********************************************************!*\
20849  !*** ./node_modules/swiper/modules/virtual/virtual.js ***!
20850  \********************************************************/
20851/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
20852
20853"use strict";
20854__webpack_require__.r(__webpack_exports__);
20855/* harmony export */ __webpack_require__.d(__webpack_exports__, {
20856/* harmony export */   "default": function() { return /* binding */ Virtual; }
20857/* harmony export */ });
20858/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
20859/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
20860function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
20861
20862
20863function Virtual(_ref) {
20864  var swiper = _ref.swiper,
20865    extendParams = _ref.extendParams,
20866    on = _ref.on,
20867    emit = _ref.emit;
20868  extendParams({
20869    virtual: {
20870      enabled: false,
20871      slides: [],
20872      cache: true,
20873      renderSlide: null,
20874      renderExternal: null,
20875      renderExternalUpdate: true,
20876      addSlidesBefore: 0,
20877      addSlidesAfter: 0
20878    }
20879  });
20880  var cssModeTimeout;
20881  swiper.virtual = {
20882    cache: {},
20883    from: undefined,
20884    to: undefined,
20885    slides: [],
20886    offset: 0,
20887    slidesGrid: []
20888  };
20889  function renderSlide(slide, index) {
20890    var params = swiper.params.virtual;
20891    if (params.cache && swiper.virtual.cache[index]) {
20892      return swiper.virtual.cache[index];
20893    }
20894    var $slideEl = params.renderSlide ? (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params.renderSlide.call(swiper, slide, index)) : (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])("<div class=\"".concat(swiper.params.slideClass, "\" data-swiper-slide-index=\"").concat(index, "\">").concat(slide, "</div>"));
20895    if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);
20896    if (params.cache) swiper.virtual.cache[index] = $slideEl;
20897    return $slideEl;
20898  }
20899  function update(force) {
20900    var _swiper$params = swiper.params,
20901      slidesPerView = _swiper$params.slidesPerView,
20902      slidesPerGroup = _swiper$params.slidesPerGroup,
20903      centeredSlides = _swiper$params.centeredSlides;
20904    var _swiper$params$virtua = swiper.params.virtual,
20905      addSlidesBefore = _swiper$params$virtua.addSlidesBefore,
20906      addSlidesAfter = _swiper$params$virtua.addSlidesAfter;
20907    var _swiper$virtual = swiper.virtual,
20908      previousFrom = _swiper$virtual.from,
20909      previousTo = _swiper$virtual.to,
20910      slides = _swiper$virtual.slides,
20911      previousSlidesGrid = _swiper$virtual.slidesGrid,
20912      previousOffset = _swiper$virtual.offset;
20913    if (!swiper.params.cssMode) {
20914      swiper.updateActiveIndex();
20915    }
20916    var activeIndex = swiper.activeIndex || 0;
20917    var offsetProp;
20918    if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';
20919    var slidesAfter;
20920    var slidesBefore;
20921    if (centeredSlides) {
20922      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
20923      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
20924    } else {
20925      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;
20926      slidesBefore = slidesPerGroup + addSlidesBefore;
20927    }
20928    var from = Math.max((activeIndex || 0) - slidesBefore, 0);
20929    var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);
20930    var offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
20931    Object.assign(swiper.virtual, {
20932      from: from,
20933      to: to,
20934      offset: offset,
20935      slidesGrid: swiper.slidesGrid
20936    });
20937    function onRendered() {
20938      swiper.updateSlides();
20939      swiper.updateProgress();
20940      swiper.updateSlidesClasses();
20941      if (swiper.lazy && swiper.params.lazy.enabled) {
20942        swiper.lazy.load();
20943      }
20944      emit('virtualUpdate');
20945    }
20946    if (previousFrom === from && previousTo === to && !force) {
20947      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
20948        swiper.slides.css(offsetProp, "".concat(offset, "px"));
20949      }
20950      swiper.updateProgress();
20951      emit('virtualUpdate');
20952      return;
20953    }
20954    if (swiper.params.virtual.renderExternal) {
20955      swiper.params.virtual.renderExternal.call(swiper, {
20956        offset: offset,
20957        from: from,
20958        to: to,
20959        slides: function getSlides() {
20960          var slidesToRender = [];
20961          for (var i = from; i <= to; i += 1) {
20962            slidesToRender.push(slides[i]);
20963          }
20964          return slidesToRender;
20965        }()
20966      });
20967      if (swiper.params.virtual.renderExternalUpdate) {
20968        onRendered();
20969      } else {
20970        emit('virtualUpdate');
20971      }
20972      return;
20973    }
20974    var prependIndexes = [];
20975    var appendIndexes = [];
20976    if (force) {
20977      swiper.$wrapperEl.find(".".concat(swiper.params.slideClass)).remove();
20978    } else {
20979      for (var i = previousFrom; i <= previousTo; i += 1) {
20980        if (i < from || i > to) {
20981          swiper.$wrapperEl.find(".".concat(swiper.params.slideClass, "[data-swiper-slide-index=\"").concat(i, "\"]")).remove();
20982        }
20983      }
20984    }
20985    for (var _i = 0; _i < slides.length; _i += 1) {
20986      if (_i >= from && _i <= to) {
20987        if (typeof previousTo === 'undefined' || force) {
20988          appendIndexes.push(_i);
20989        } else {
20990          if (_i > previousTo) appendIndexes.push(_i);
20991          if (_i < previousFrom) prependIndexes.push(_i);
20992        }
20993      }
20994    }
20995    appendIndexes.forEach(function (index) {
20996      swiper.$wrapperEl.append(renderSlide(slides[index], index));
20997    });
20998    prependIndexes.sort(function (a, b) {
20999      return b - a;
21000    }).forEach(function (index) {
21001      swiper.$wrapperEl.prepend(renderSlide(slides[index], index));
21002    });
21003    swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, "".concat(offset, "px"));
21004    onRendered();
21005  }
21006  function appendSlide(slides) {
21007    if (_typeof(slides) === 'object' && 'length' in slides) {
21008      for (var i = 0; i < slides.length; i += 1) {
21009        if (slides[i]) swiper.virtual.slides.push(slides[i]);
21010      }
21011    } else {
21012      swiper.virtual.slides.push(slides);
21013    }
21014    update(true);
21015  }
21016  function prependSlide(slides) {
21017    var activeIndex = swiper.activeIndex;
21018    var newActiveIndex = activeIndex + 1;
21019    var numberOfNewSlides = 1;
21020    if (Array.isArray(slides)) {
21021      for (var i = 0; i < slides.length; i += 1) {
21022        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);
21023      }
21024      newActiveIndex = activeIndex + slides.length;
21025      numberOfNewSlides = slides.length;
21026    } else {
21027      swiper.virtual.slides.unshift(slides);
21028    }
21029    if (swiper.params.virtual.cache) {
21030      var cache = swiper.virtual.cache;
21031      var newCache = {};
21032      Object.keys(cache).forEach(function (cachedIndex) {
21033        var $cachedEl = cache[cachedIndex];
21034        var cachedElIndex = $cachedEl.attr('data-swiper-slide-index');
21035        if (cachedElIndex) {
21036          $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);
21037        }
21038        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;
21039      });
21040      swiper.virtual.cache = newCache;
21041    }
21042    update(true);
21043    swiper.slideTo(newActiveIndex, 0);
21044  }
21045  function removeSlide(slidesIndexes) {
21046    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;
21047    var activeIndex = swiper.activeIndex;
21048    if (Array.isArray(slidesIndexes)) {
21049      for (var i = slidesIndexes.length - 1; i >= 0; i -= 1) {
21050        swiper.virtual.slides.splice(slidesIndexes[i], 1);
21051        if (swiper.params.virtual.cache) {
21052          delete swiper.virtual.cache[slidesIndexes[i]];
21053        }
21054        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;
21055        activeIndex = Math.max(activeIndex, 0);
21056      }
21057    } else {
21058      swiper.virtual.slides.splice(slidesIndexes, 1);
21059      if (swiper.params.virtual.cache) {
21060        delete swiper.virtual.cache[slidesIndexes];
21061      }
21062      if (slidesIndexes < activeIndex) activeIndex -= 1;
21063      activeIndex = Math.max(activeIndex, 0);
21064    }
21065    update(true);
21066    swiper.slideTo(activeIndex, 0);
21067  }
21068  function removeAllSlides() {
21069    swiper.virtual.slides = [];
21070    if (swiper.params.virtual.cache) {
21071      swiper.virtual.cache = {};
21072    }
21073    update(true);
21074    swiper.slideTo(0, 0);
21075  }
21076  on('beforeInit', function () {
21077    if (!swiper.params.virtual.enabled) return;
21078    swiper.virtual.slides = swiper.params.virtual.slides;
21079    swiper.classNames.push("".concat(swiper.params.containerModifierClass, "virtual"));
21080    swiper.params.watchSlidesProgress = true;
21081    swiper.originalParams.watchSlidesProgress = true;
21082    if (!swiper.params.initialSlide) {
21083      update();
21084    }
21085  });
21086  on('setTranslate', function () {
21087    if (!swiper.params.virtual.enabled) return;
21088    if (swiper.params.cssMode && !swiper._immediateVirtual) {
21089      clearTimeout(cssModeTimeout);
21090      cssModeTimeout = setTimeout(function () {
21091        update();
21092      }, 100);
21093    } else {
21094      update();
21095    }
21096  });
21097  on('init update resize', function () {
21098    if (!swiper.params.virtual.enabled) return;
21099    if (swiper.params.cssMode) {
21100      (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__.setCSSProperty)(swiper.wrapperEl, '--swiper-virtual-size', "".concat(swiper.virtualSize, "px"));
21101    }
21102  });
21103  Object.assign(swiper.virtual, {
21104    appendSlide: appendSlide,
21105    prependSlide: prependSlide,
21106    removeSlide: removeSlide,
21107    removeAllSlides: removeAllSlides,
21108    update: update
21109  });
21110}
21111
21112/***/ }),
21113
vendor: 22,135 bytes, lines 21114-21659
21114/***/ "./node_modules/swiper/modules/zoom/zoom.js":
21115/*!**************************************************!*\
21116  !*** ./node_modules/swiper/modules/zoom/zoom.js ***!
21117  \**************************************************/
21118/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
21119
21120"use strict";
21121__webpack_require__.r(__webpack_exports__);
21122/* harmony export */ __webpack_require__.d(__webpack_exports__, {
21123/* harmony export */   "default": function() { return /* binding */ Zoom; }
21124/* harmony export */ });
21125/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
21126/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
21127/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
21128
21129
21130
21131function Zoom(_ref) {
21132  var swiper = _ref.swiper,
21133    extendParams = _ref.extendParams,
21134    on = _ref.on,
21135    emit = _ref.emit;
21136  var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
21137  extendParams({
21138    zoom: {
21139      enabled: false,
21140      maxRatio: 3,
21141      minRatio: 1,
21142      toggle: true,
21143      containerClass: 'swiper-zoom-container',
21144      zoomedSlideClass: 'swiper-slide-zoomed'
21145    }
21146  });
21147  swiper.zoom = {
21148    enabled: false
21149  };
21150  var currentScale = 1;
21151  var isScaling = false;
21152  var gesturesEnabled;
21153  var fakeGestureTouched;
21154  var fakeGestureMoved;
21155  var gesture = {
21156    $slideEl: undefined,
21157    slideWidth: undefined,
21158    slideHeight: undefined,
21159    $imageEl: undefined,
21160    $imageWrapEl: undefined,
21161    maxRatio: 3
21162  };
21163  var image = {
21164    isTouched: undefined,
21165    isMoved: undefined,
21166    currentX: undefined,
21167    currentY: undefined,
21168    minX: undefined,
21169    minY: undefined,
21170    maxX: undefined,
21171    maxY: undefined,
21172    width: undefined,
21173    height: undefined,
21174    startX: undefined,
21175    startY: undefined,
21176    touchesStart: {},
21177    touchesCurrent: {}
21178  };
21179  var velocity = {
21180    x: undefined,
21181    y: undefined,
21182    prevPositionX: undefined,
21183    prevPositionY: undefined,
21184    prevTime: undefined
21185  };
21186  var scale = 1;
21187  Object.defineProperty(swiper.zoom, 'scale', {
21188    get: function get() {
21189      return scale;
21190    },
21191    set: function set(value) {
21192      if (scale !== value) {
21193        var imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;
21194        var slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;
21195        emit('zoomChange', value, imageEl, slideEl);
21196      }
21197      scale = value;
21198    }
21199  });
21200  function getDistanceBetweenTouches(e) {
21201    if (e.targetTouches.length < 2) return 1;
21202    var x1 = e.targetTouches[0].pageX;
21203    var y1 = e.targetTouches[0].pageY;
21204    var x2 = e.targetTouches[1].pageX;
21205    var y2 = e.targetTouches[1].pageY;
21206    var distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
21207    return distance;
21208  } // Events
21209
21210  function onGestureStart(e) {
21211    var support = swiper.support;
21212    var params = swiper.params.zoom;
21213    fakeGestureTouched = false;
21214    fakeGestureMoved = false;
21215    if (!support.gestures) {
21216      if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {
21217        return;
21218      }
21219      fakeGestureTouched = true;
21220      gesture.scaleStart = getDistanceBetweenTouches(e);
21221    }
21222    if (!gesture.$slideEl || !gesture.$slideEl.length) {
21223      gesture.$slideEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target).closest(".".concat(swiper.params.slideClass));
21224      if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
21225      gesture.$imageEl = gesture.$slideEl.find(".".concat(params.containerClass)).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);
21226      gesture.$imageWrapEl = gesture.$imageEl.parent(".".concat(params.containerClass));
21227      gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
21228      if (gesture.$imageWrapEl.length === 0) {
21229        gesture.$imageEl = undefined;
21230        return;
21231      }
21232    }
21233    if (gesture.$imageEl) {
21234      gesture.$imageEl.transition(0);
21235    }
21236    isScaling = true;
21237  }
21238  function onGestureChange(e) {
21239    var support = swiper.support;
21240    var params = swiper.params.zoom;
21241    var zoom = swiper.zoom;
21242    if (!support.gestures) {
21243      if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {
21244        return;
21245      }
21246      fakeGestureMoved = true;
21247      gesture.scaleMove = getDistanceBetweenTouches(e);
21248    }
21249    if (!gesture.$imageEl || gesture.$imageEl.length === 0) {
21250      if (e.type === 'gesturechange') onGestureStart(e);
21251      return;
21252    }
21253    if (support.gestures) {
21254      zoom.scale = e.scale * currentScale;
21255    } else {
21256      zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;
21257    }
21258    if (zoom.scale > gesture.maxRatio) {
21259      zoom.scale = gesture.maxRatio - 1 + Math.pow(zoom.scale - gesture.maxRatio + 1, 0.5);
21260    }
21261    if (zoom.scale < params.minRatio) {
21262      zoom.scale = params.minRatio + 1 - Math.pow(params.minRatio - zoom.scale + 1, 0.5);
21263    }
21264    gesture.$imageEl.transform("translate3d(0,0,0) scale(".concat(zoom.scale, ")"));
21265  }
21266  function onGestureEnd(e) {
21267    var device = swiper.device;
21268    var support = swiper.support;
21269    var params = swiper.params.zoom;
21270    var zoom = swiper.zoom;
21271    if (!support.gestures) {
21272      if (!fakeGestureTouched || !fakeGestureMoved) {
21273        return;
21274      }
21275      if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {
21276        return;
21277      }
21278      fakeGestureTouched = false;
21279      fakeGestureMoved = false;
21280    }
21281    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
21282    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
21283    gesture.$imageEl.transition(swiper.params.speed).transform("translate3d(0,0,0) scale(".concat(zoom.scale, ")"));
21284    currentScale = zoom.scale;
21285    isScaling = false;
21286    if (zoom.scale === 1) gesture.$slideEl = undefined;
21287  }
21288  function onTouchStart(e) {
21289    var device = swiper.device;
21290    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
21291    if (image.isTouched) return;
21292    if (device.android && e.cancelable) e.preventDefault();
21293    image.isTouched = true;
21294    image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
21295    image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
21296  }
21297  function onTouchMove(e) {
21298    var zoom = swiper.zoom;
21299    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
21300    swiper.allowClick = false;
21301    if (!image.isTouched || !gesture.$slideEl) return;
21302    if (!image.isMoved) {
21303      image.width = gesture.$imageEl[0].offsetWidth;
21304      image.height = gesture.$imageEl[0].offsetHeight;
21305      image.startX = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.getTranslate)(gesture.$imageWrapEl[0], 'x') || 0;
21306      image.startY = (0,_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__.getTranslate)(gesture.$imageWrapEl[0], 'y') || 0;
21307      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;
21308      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;
21309      gesture.$imageWrapEl.transition(0);
21310    } // Define if we need image drag
21311
21312    var scaledWidth = image.width * zoom.scale;
21313    var scaledHeight = image.height * zoom.scale;
21314    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;
21315    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
21316    image.maxX = -image.minX;
21317    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
21318    image.maxY = -image.minY;
21319    image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
21320    image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
21321    if (!image.isMoved && !isScaling) {
21322      if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {
21323        image.isTouched = false;
21324        return;
21325      }
21326      if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {
21327        image.isTouched = false;
21328        return;
21329      }
21330    }
21331    if (e.cancelable) {
21332      e.preventDefault();
21333    }
21334    e.stopPropagation();
21335    image.isMoved = true;
21336    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;
21337    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;
21338    if (image.currentX < image.minX) {
21339      image.currentX = image.minX + 1 - Math.pow(image.minX - image.currentX + 1, 0.8);
21340    }
21341    if (image.currentX > image.maxX) {
21342      image.currentX = image.maxX - 1 + Math.pow(image.currentX - image.maxX + 1, 0.8);
21343    }
21344    if (image.currentY < image.minY) {
21345      image.currentY = image.minY + 1 - Math.pow(image.minY - image.currentY + 1, 0.8);
21346    }
21347    if (image.currentY > image.maxY) {
21348      image.currentY = image.maxY - 1 + Math.pow(image.currentY - image.maxY + 1, 0.8);
21349    } // Velocity
21350
21351    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;
21352    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;
21353    if (!velocity.prevTime) velocity.prevTime = Date.now();
21354    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
21355    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
21356    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;
21357    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;
21358    velocity.prevPositionX = image.touchesCurrent.x;
21359    velocity.prevPositionY = image.touchesCurrent.y;
21360    velocity.prevTime = Date.now();
21361    gesture.$imageWrapEl.transform("translate3d(".concat(image.currentX, "px, ").concat(image.currentY, "px,0)"));
21362  }
21363  function onTouchEnd() {
21364    var zoom = swiper.zoom;
21365    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
21366    if (!image.isTouched || !image.isMoved) {
21367      image.isTouched = false;
21368      image.isMoved = false;
21369      return;
21370    }
21371    image.isTouched = false;
21372    image.isMoved = false;
21373    var momentumDurationX = 300;
21374    var momentumDurationY = 300;
21375    var momentumDistanceX = velocity.x * momentumDurationX;
21376    var newPositionX = image.currentX + momentumDistanceX;
21377    var momentumDistanceY = velocity.y * momentumDurationY;
21378    var newPositionY = image.currentY + momentumDistanceY; // Fix duration
21379
21380    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);
21381    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);
21382    var momentumDuration = Math.max(momentumDurationX, momentumDurationY);
21383    image.currentX = newPositionX;
21384    image.currentY = newPositionY; // Define if we need image drag
21385
21386    var scaledWidth = image.width * zoom.scale;
21387    var scaledHeight = image.height * zoom.scale;
21388    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
21389    image.maxX = -image.minX;
21390    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
21391    image.maxY = -image.minY;
21392    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
21393    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
21394    gesture.$imageWrapEl.transition(momentumDuration).transform("translate3d(".concat(image.currentX, "px, ").concat(image.currentY, "px,0)"));
21395  }
21396  function onTransitionEnd() {
21397    var zoom = swiper.zoom;
21398    if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {
21399      if (gesture.$imageEl) {
21400        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');
21401      }
21402      if (gesture.$imageWrapEl) {
21403        gesture.$imageWrapEl.transform('translate3d(0,0,0)');
21404      }
21405      zoom.scale = 1;
21406      currentScale = 1;
21407      gesture.$slideEl = undefined;
21408      gesture.$imageEl = undefined;
21409      gesture.$imageWrapEl = undefined;
21410    }
21411  }
21412  function zoomIn(e) {
21413    var zoom = swiper.zoom;
21414    var params = swiper.params.zoom;
21415    if (!gesture.$slideEl) {
21416      if (e && e.target) {
21417        gesture.$slideEl = (0,_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target).closest(".".concat(swiper.params.slideClass));
21418      }
21419      if (!gesture.$slideEl) {
21420        if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
21421          gesture.$slideEl = swiper.$wrapperEl.children(".".concat(swiper.params.slideActiveClass));
21422        } else {
21423          gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
21424        }
21425      }
21426      gesture.$imageEl = gesture.$slideEl.find(".".concat(params.containerClass)).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);
21427      gesture.$imageWrapEl = gesture.$imageEl.parent(".".concat(params.containerClass));
21428    }
21429    if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;
21430    if (swiper.params.cssMode) {
21431      swiper.wrapperEl.style.overflow = 'hidden';
21432      swiper.wrapperEl.style.touchAction = 'none';
21433    }
21434    gesture.$slideEl.addClass("".concat(params.zoomedSlideClass));
21435    var touchX;
21436    var touchY;
21437    var offsetX;
21438    var offsetY;
21439    var diffX;
21440    var diffY;
21441    var translateX;
21442    var translateY;
21443    var imageWidth;
21444    var imageHeight;
21445    var scaledWidth;
21446    var scaledHeight;
21447    var translateMinX;
21448    var translateMinY;
21449    var translateMaxX;
21450    var translateMaxY;
21451    var slideWidth;
21452    var slideHeight;
21453    if (typeof image.touchesStart.x === 'undefined' && e) {
21454      touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;
21455      touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;
21456    } else {
21457      touchX = image.touchesStart.x;
21458      touchY = image.touchesStart.y;
21459    }
21460    zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
21461    currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
21462    if (e) {
21463      slideWidth = gesture.$slideEl[0].offsetWidth;
21464      slideHeight = gesture.$slideEl[0].offsetHeight;
21465      offsetX = gesture.$slideEl.offset().left + window.scrollX;
21466      offsetY = gesture.$slideEl.offset().top + window.scrollY;
21467      diffX = offsetX + slideWidth / 2 - touchX;
21468      diffY = offsetY + slideHeight / 2 - touchY;
21469      imageWidth = gesture.$imageEl[0].offsetWidth;
21470      imageHeight = gesture.$imageEl[0].offsetHeight;
21471      scaledWidth = imageWidth * zoom.scale;
21472      scaledHeight = imageHeight * zoom.scale;
21473      translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);
21474      translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);
21475      translateMaxX = -translateMinX;
21476      translateMaxY = -translateMinY;
21477      translateX = diffX * zoom.scale;
21478      translateY = diffY * zoom.scale;
21479      if (translateX < translateMinX) {
21480        translateX = translateMinX;
21481      }
21482      if (translateX > translateMaxX) {
21483        translateX = translateMaxX;
21484      }
21485      if (translateY < translateMinY) {
21486        translateY = translateMinY;
21487      }
21488      if (translateY > translateMaxY) {
21489        translateY = translateMaxY;
21490      }
21491    } else {
21492      translateX = 0;
21493      translateY = 0;
21494    }
21495    gesture.$imageWrapEl.transition(300).transform("translate3d(".concat(translateX, "px, ").concat(translateY, "px,0)"));
21496    gesture.$imageEl.transition(300).transform("translate3d(0,0,0) scale(".concat(zoom.scale, ")"));
21497  }
21498  function zoomOut() {
21499    var zoom = swiper.zoom;
21500    var params = swiper.params.zoom;
21501    if (!gesture.$slideEl) {
21502      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
21503        gesture.$slideEl = swiper.$wrapperEl.children(".".concat(swiper.params.slideActiveClass));
21504      } else {
21505        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
21506      }
21507      gesture.$imageEl = gesture.$slideEl.find(".".concat(params.containerClass)).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);
21508      gesture.$imageWrapEl = gesture.$imageEl.parent(".".concat(params.containerClass));
21509    }
21510    if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;
21511    if (swiper.params.cssMode) {
21512      swiper.wrapperEl.style.overflow = '';
21513      swiper.wrapperEl.style.touchAction = '';
21514    }
21515    zoom.scale = 1;
21516    currentScale = 1;
21517    gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');
21518    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');
21519    gesture.$slideEl.removeClass("".concat(params.zoomedSlideClass));
21520    gesture.$slideEl = undefined;
21521  } // Toggle Zoom
21522
21523  function zoomToggle(e) {
21524    var zoom = swiper.zoom;
21525    if (zoom.scale && zoom.scale !== 1) {
21526      // Zoom Out
21527      zoomOut();
21528    } else {
21529      // Zoom In
21530      zoomIn(e);
21531    }
21532  }
21533  function getListeners() {
21534    var support = swiper.support;
21535    var passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {
21536      passive: true,
21537      capture: false
21538    } : false;
21539    var activeListenerWithCapture = support.passiveListener ? {
21540      passive: false,
21541      capture: true
21542    } : true;
21543    return {
21544      passiveListener: passiveListener,
21545      activeListenerWithCapture: activeListenerWithCapture
21546    };
21547  }
21548  function getSlideSelector() {
21549    return ".".concat(swiper.params.slideClass);
21550  }
21551  function toggleGestures(method) {
21552    var _getListeners = getListeners(),
21553      passiveListener = _getListeners.passiveListener;
21554    var slideSelector = getSlideSelector();
21555    swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);
21556    swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);
21557    swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);
21558  }
21559  function enableGestures() {
21560    if (gesturesEnabled) return;
21561    gesturesEnabled = true;
21562    toggleGestures('on');
21563  }
21564  function disableGestures() {
21565    if (!gesturesEnabled) return;
21566    gesturesEnabled = false;
21567    toggleGestures('off');
21568  } // Attach/Detach Events
21569
21570  function enable() {
21571    var zoom = swiper.zoom;
21572    if (zoom.enabled) return;
21573    zoom.enabled = true;
21574    var support = swiper.support;
21575    var _getListeners2 = getListeners(),
21576      passiveListener = _getListeners2.passiveListener,
21577      activeListenerWithCapture = _getListeners2.activeListenerWithCapture;
21578    var slideSelector = getSlideSelector(); // Scale image
21579
21580    if (support.gestures) {
21581      swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);
21582      swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);
21583    } else if (swiper.touchEvents.start === 'touchstart') {
21584      swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);
21585      swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);
21586      swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);
21587      if (swiper.touchEvents.cancel) {
21588        swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);
21589      }
21590    } // Move image
21591
21592    swiper.$wrapperEl.on(swiper.touchEvents.move, ".".concat(swiper.params.zoom.containerClass), onTouchMove, activeListenerWithCapture);
21593  }
21594  function disable() {
21595    var zoom = swiper.zoom;
21596    if (!zoom.enabled) return;
21597    var support = swiper.support;
21598    zoom.enabled = false;
21599    var _getListeners3 = getListeners(),
21600      passiveListener = _getListeners3.passiveListener,
21601      activeListenerWithCapture = _getListeners3.activeListenerWithCapture;
21602    var slideSelector = getSlideSelector(); // Scale image
21603
21604    if (support.gestures) {
21605      swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);
21606      swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);
21607    } else if (swiper.touchEvents.start === 'touchstart') {
21608      swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);
21609      swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);
21610      swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);
21611      if (swiper.touchEvents.cancel) {
21612        swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);
21613      }
21614    } // Move image
21615
21616    swiper.$wrapperEl.off(swiper.touchEvents.move, ".".concat(swiper.params.zoom.containerClass), onTouchMove, activeListenerWithCapture);
21617  }
21618  on('init', function () {
21619    if (swiper.params.zoom.enabled) {
21620      enable();
21621    }
21622  });
21623  on('destroy', function () {
21624    disable();
21625  });
21626  on('touchStart', function (_s, e) {
21627    if (!swiper.zoom.enabled) return;
21628    onTouchStart(e);
21629  });
21630  on('touchEnd', function (_s, e) {
21631    if (!swiper.zoom.enabled) return;
21632    onTouchEnd(e);
21633  });
21634  on('doubleTap', function (_s, e) {
21635    if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
21636      zoomToggle(e);
21637    }
21638  });
21639  on('transitionEnd', function () {
21640    if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
21641      onTransitionEnd();
21642    }
21643  });
21644  on('slideChange', function () {
21645    if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {
21646      onTransitionEnd();
21647    }
21648  });
21649  Object.assign(swiper.zoom, {
21650    enable: enable,
21651    disable: disable,
21652    in: zoomIn,
21653    out: zoomOut,
21654    toggle: zoomToggle
21655  });
21656}
21657
21658/***/ }),
21659
vendor: 837 bytes, lines 21660-21678
21660/***/ "./node_modules/swiper/shared/classes-to-selector.js":
21661/*!***********************************************************!*\
21662  !*** ./node_modules/swiper/shared/classes-to-selector.js ***!
21663  \***********************************************************/
21664/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
21665
21666"use strict";
21667__webpack_require__.r(__webpack_exports__);
21668/* harmony export */ __webpack_require__.d(__webpack_exports__, {
21669/* harmony export */   "default": function() { return /* binding */ classesToSelector; }
21670/* harmony export */ });
21671function classesToSelector() {
21672  var classes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
21673  return ".".concat(classes.trim().replace(/([\.:!\/])/g, '\\$1') // eslint-disable-line
21674  .replace(/ /g, '.'));
21675}
21676
21677/***/ }),
21678
vendor: 1,457 bytes, lines 21679-21712
21679/***/ "./node_modules/swiper/shared/create-element-if-not-defined.js":
21680/*!*********************************************************************!*\
21681  !*** ./node_modules/swiper/shared/create-element-if-not-defined.js ***!
21682  \*********************************************************************/
21683/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
21684
21685"use strict";
21686__webpack_require__.r(__webpack_exports__);
21687/* harmony export */ __webpack_require__.d(__webpack_exports__, {
21688/* harmony export */   "default": function() { return /* binding */ createElementIfNotDefined; }
21689/* harmony export */ });
21690/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
21691
21692function createElementIfNotDefined(swiper, originalParams, params, checkProps) {
21693  var document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
21694  if (swiper.params.createElements) {
21695    Object.keys(checkProps).forEach(function (key) {
21696      if (!params[key] && params.auto === true) {
21697        var element = swiper.$el.children(".".concat(checkProps[key]))[0];
21698        if (!element) {
21699          element = document.createElement('div');
21700          element.className = checkProps[key];
21701          swiper.$el.append(element);
21702        }
21703        params[key] = element;
21704        originalParams[key] = element;
21705      }
21706    });
21707  }
21708  return params;
21709}
21710
21711/***/ }),
21712
vendor: 1,253 bytes, lines 21713-21738
21713/***/ "./node_modules/swiper/shared/create-shadow.js":
21714/*!*****************************************************!*\
21715  !*** ./node_modules/swiper/shared/create-shadow.js ***!
21716  \*****************************************************/
21717/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
21718
21719"use strict";
21720__webpack_require__.r(__webpack_exports__);
21721/* harmony export */ __webpack_require__.d(__webpack_exports__, {
21722/* harmony export */   "default": function() { return /* binding */ createShadow; }
21723/* harmony export */ });
21724/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom.js */ "./node_modules/swiper/shared/dom.js");
21725
21726function createShadow(params, $slideEl, side) {
21727  var shadowClass = "swiper-slide-shadow".concat(side ? "-".concat(side) : '');
21728  var $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;
21729  var $shadowEl = $shadowContainer.children(".".concat(shadowClass));
21730  if (!$shadowEl.length) {
21731    $shadowEl = (0,_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])("<div class=\"swiper-slide-shadow".concat(side ? "-".concat(side) : '', "\"></div>"));
21732    $shadowContainer.append($shadowEl);
21733  }
21734  return $shadowEl;
21735}
21736
21737/***/ }),
21738
vendor: 2,704 bytes, lines 21739-21796
21739/***/ "./node_modules/swiper/shared/dom.js":
21740/*!*******************************************!*\
21741  !*** ./node_modules/swiper/shared/dom.js ***!
21742  \*******************************************/
21743/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
21744
21745"use strict";
21746__webpack_require__.r(__webpack_exports__);
21747/* harmony import */ var dom7__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dom7 */ "./node_modules/dom7/dom7.esm.js");
21748
21749var Methods = {
21750  addClass: dom7__WEBPACK_IMPORTED_MODULE_0__.addClass,
21751  removeClass: dom7__WEBPACK_IMPORTED_MODULE_0__.removeClass,
21752  hasClass: dom7__WEBPACK_IMPORTED_MODULE_0__.hasClass,
21753  toggleClass: dom7__WEBPACK_IMPORTED_MODULE_0__.toggleClass,
21754  attr: dom7__WEBPACK_IMPORTED_MODULE_0__.attr,
21755  removeAttr: dom7__WEBPACK_IMPORTED_MODULE_0__.removeAttr,
21756  transform: dom7__WEBPACK_IMPORTED_MODULE_0__.transform,
21757  transition: dom7__WEBPACK_IMPORTED_MODULE_0__.transition,
21758  on: dom7__WEBPACK_IMPORTED_MODULE_0__.on,
21759  off: dom7__WEBPACK_IMPORTED_MODULE_0__.off,
21760  trigger: dom7__WEBPACK_IMPORTED_MODULE_0__.trigger,
21761  transitionEnd: dom7__WEBPACK_IMPORTED_MODULE_0__.transitionEnd,
21762  outerWidth: dom7__WEBPACK_IMPORTED_MODULE_0__.outerWidth,
21763  outerHeight: dom7__WEBPACK_IMPORTED_MODULE_0__.outerHeight,
21764  styles: dom7__WEBPACK_IMPORTED_MODULE_0__.styles,
21765  offset: dom7__WEBPACK_IMPORTED_MODULE_0__.offset,
21766  css: dom7__WEBPACK_IMPORTED_MODULE_0__.css,
21767  each: dom7__WEBPACK_IMPORTED_MODULE_0__.each,
21768  html: dom7__WEBPACK_IMPORTED_MODULE_0__.html,
21769  text: dom7__WEBPACK_IMPORTED_MODULE_0__.text,
21770  is: dom7__WEBPACK_IMPORTED_MODULE_0__.is,
21771  index: dom7__WEBPACK_IMPORTED_MODULE_0__.index,
21772  eq: dom7__WEBPACK_IMPORTED_MODULE_0__.eq,
21773  append: dom7__WEBPACK_IMPORTED_MODULE_0__.append,
21774  prepend: dom7__WEBPACK_IMPORTED_MODULE_0__.prepend,
21775  next: dom7__WEBPACK_IMPORTED_MODULE_0__.next,
21776  nextAll: dom7__WEBPACK_IMPORTED_MODULE_0__.nextAll,
21777  prev: dom7__WEBPACK_IMPORTED_MODULE_0__.prev,
21778  prevAll: dom7__WEBPACK_IMPORTED_MODULE_0__.prevAll,
21779  parent: dom7__WEBPACK_IMPORTED_MODULE_0__.parent,
21780  parents: dom7__WEBPACK_IMPORTED_MODULE_0__.parents,
21781  closest: dom7__WEBPACK_IMPORTED_MODULE_0__.closest,
21782  find: dom7__WEBPACK_IMPORTED_MODULE_0__.find,
21783  children: dom7__WEBPACK_IMPORTED_MODULE_0__.children,
21784  filter: dom7__WEBPACK_IMPORTED_MODULE_0__.filter,
21785  remove: dom7__WEBPACK_IMPORTED_MODULE_0__.remove
21786};
21787Object.keys(Methods).forEach(function (methodName) {
21788  Object.defineProperty(dom7__WEBPACK_IMPORTED_MODULE_0__.$.fn, methodName, {
21789    value: Methods[methodName],
21790    writable: true
21791  });
21792});
21793/* harmony default export */ __webpack_exports__["default"] = (dom7__WEBPACK_IMPORTED_MODULE_0__.$);
21794
21795/***/ }),
21796
vendor: 2,575 bytes, lines 21797-21865
21797/***/ "./node_modules/swiper/shared/effect-init.js":
21798/*!***************************************************!*\
21799  !*** ./node_modules/swiper/shared/effect-init.js ***!
21800  \***************************************************/
21801/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
21802
21803"use strict";
21804__webpack_require__.r(__webpack_exports__);
21805/* harmony export */ __webpack_require__.d(__webpack_exports__, {
21806/* harmony export */   "default": function() { return /* binding */ effectInit; }
21807/* harmony export */ });
21808function effectInit(params) {
21809  var effect = params.effect,
21810    swiper = params.swiper,
21811    on = params.on,
21812    setTranslate = params.setTranslate,
21813    setTransition = params.setTransition,
21814    overwriteParams = params.overwriteParams,
21815    perspective = params.perspective,
21816    recreateShadows = params.recreateShadows,
21817    getEffectParams = params.getEffectParams;
21818  on('beforeInit', function () {
21819    if (swiper.params.effect !== effect) return;
21820    swiper.classNames.push("".concat(swiper.params.containerModifierClass).concat(effect));
21821    if (perspective && perspective()) {
21822      swiper.classNames.push("".concat(swiper.params.containerModifierClass, "3d"));
21823    }
21824    var overwriteParamsResult = overwriteParams ? overwriteParams() : {};
21825    Object.assign(swiper.params, overwriteParamsResult);
21826    Object.assign(swiper.originalParams, overwriteParamsResult);
21827  });
21828  on('setTranslate', function () {
21829    if (swiper.params.effect !== effect) return;
21830    setTranslate();
21831  });
21832  on('setTransition', function (_s, duration) {
21833    if (swiper.params.effect !== effect) return;
21834    setTransition(duration);
21835  });
21836  on('transitionEnd', function () {
21837    if (swiper.params.effect !== effect) return;
21838    if (recreateShadows) {
21839      if (!getEffectParams || !getEffectParams().slideShadows) return; // remove shadows
21840
21841      swiper.slides.each(function (slideEl) {
21842        var $slideEl = swiper.$(slideEl);
21843        $slideEl.find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').remove();
21844      }); // create new one
21845
21846      recreateShadows();
21847    }
21848  });
21849  var requireUpdateOnVirtual;
21850  on('virtualUpdate', function () {
21851    if (swiper.params.effect !== effect) return;
21852    if (!swiper.slides.length) {
21853      requireUpdateOnVirtual = true;
21854    }
21855    requestAnimationFrame(function () {
21856      if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {
21857        setTranslate();
21858        requireUpdateOnVirtual = false;
21859      }
21860    });
21861  });
21862}
21863
21864/***/ }),
21865
vendor: 831 bytes, lines 21866-21888
21866/***/ "./node_modules/swiper/shared/effect-target.js":
21867/*!*****************************************************!*\
21868  !*** ./node_modules/swiper/shared/effect-target.js ***!
21869  \*****************************************************/
21870/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
21871
21872"use strict";
21873__webpack_require__.r(__webpack_exports__);
21874/* harmony export */ __webpack_require__.d(__webpack_exports__, {
21875/* harmony export */   "default": function() { return /* binding */ effectTarget; }
21876/* harmony export */ });
21877function effectTarget(effectParams, $slideEl) {
21878  if (effectParams.transformEl) {
21879    return $slideEl.find(effectParams.transformEl).css({
21880      'backface-visibility': 'hidden',
21881      '-webkit-backface-visibility': 'hidden'
21882    });
21883  }
21884  return $slideEl;
21885}
21886
21887/***/ }),
21888
vendor: 1,663 bytes, lines 21889-21930
21889/***/ "./node_modules/swiper/shared/effect-virtual-transition-end.js":
21890/*!*********************************************************************!*\
21891  !*** ./node_modules/swiper/shared/effect-virtual-transition-end.js ***!
21892  \*********************************************************************/
21893/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
21894
21895"use strict";
21896__webpack_require__.r(__webpack_exports__);
21897/* harmony export */ __webpack_require__.d(__webpack_exports__, {
21898/* harmony export */   "default": function() { return /* binding */ effectVirtualTransitionEnd; }
21899/* harmony export */ });
21900function effectVirtualTransitionEnd(_ref) {
21901  var swiper = _ref.swiper,
21902    duration = _ref.duration,
21903    transformEl = _ref.transformEl,
21904    allSlides = _ref.allSlides;
21905  var slides = swiper.slides,
21906    activeIndex = swiper.activeIndex,
21907    $wrapperEl = swiper.$wrapperEl;
21908  if (swiper.params.virtualTranslate && duration !== 0) {
21909    var eventTriggered = false;
21910    var $transitionEndTarget;
21911    if (allSlides) {
21912      $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;
21913    } else {
21914      $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex);
21915    }
21916    $transitionEndTarget.transitionEnd(function () {
21917      if (eventTriggered) return;
21918      if (!swiper || swiper.destroyed) return;
21919      eventTriggered = true;
21920      swiper.animating = false;
21921      var triggerEvents = ['webkitTransitionEnd', 'transitionend'];
21922      for (var i = 0; i < triggerEvents.length; i += 1) {
21923        $wrapperEl.trigger(triggerEvents[i]);
21924      }
21925    });
21926  }
21927}
21928
21929/***/ }),
21930
vendor: 1,242 bytes, lines 21931-21965
21931/***/ "./node_modules/swiper/shared/get-browser.js":
21932/*!***************************************************!*\
21933  !*** ./node_modules/swiper/shared/get-browser.js ***!
21934  \***************************************************/
21935/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
21936
21937"use strict";
21938__webpack_require__.r(__webpack_exports__);
21939/* harmony export */ __webpack_require__.d(__webpack_exports__, {
21940/* harmony export */   getBrowser: function() { return /* binding */ getBrowser; }
21941/* harmony export */ });
21942/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
21943
21944var browser;
21945function calcBrowser() {
21946  var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
21947  function isSafari() {
21948    var ua = window.navigator.userAgent.toLowerCase();
21949    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;
21950  }
21951  return {
21952    isSafari: isSafari(),
21953    isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)
21954  };
21955}
21956function getBrowser() {
21957  if (!browser) {
21958    browser = calcBrowser();
21959  }
21960  return browser;
21961}
21962
21963
21964/***/ }),
21965
vendor: 2,582 bytes, lines 21966-22031
21966/***/ "./node_modules/swiper/shared/get-device.js":
21967/*!**************************************************!*\
21968  !*** ./node_modules/swiper/shared/get-device.js ***!
21969  \**************************************************/
21970/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
21971
21972"use strict";
21973__webpack_require__.r(__webpack_exports__);
21974/* harmony export */ __webpack_require__.d(__webpack_exports__, {
21975/* harmony export */   getDevice: function() { return /* binding */ getDevice; }
21976/* harmony export */ });
21977/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
21978/* harmony import */ var _get_support_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./get-support.js */ "./node_modules/swiper/shared/get-support.js");
21979
21980
21981var deviceCached;
21982function calcDevice() {
21983  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
21984    userAgent = _ref.userAgent;
21985  var support = (0,_get_support_js__WEBPACK_IMPORTED_MODULE_1__.getSupport)();
21986  var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
21987  var platform = window.navigator.platform;
21988  var ua = userAgent || window.navigator.userAgent;
21989  var device = {
21990    ios: false,
21991    android: false
21992  };
21993  var screenWidth = window.screen.width;
21994  var screenHeight = window.screen.height;
21995  var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
21996
21997  var ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
21998  var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
21999  var iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
22000  var windows = platform === 'Win32';
22001  var macos = platform === 'MacIntel'; // iPadOs 13 fix
22002
22003  var iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];
22004  if (!ipad && macos && support.touch && iPadScreens.indexOf("".concat(screenWidth, "x").concat(screenHeight)) >= 0) {
22005    ipad = ua.match(/(Version)\/([\d.]+)/);
22006    if (!ipad) ipad = [0, 1, '13_0_0'];
22007    macos = false;
22008  } // Android
22009
22010  if (android && !windows) {
22011    device.os = 'android';
22012    device.android = true;
22013  }
22014  if (ipad || iphone || ipod) {
22015    device.os = 'ios';
22016    device.ios = true;
22017  } // Export object
22018
22019  return device;
22020}
22021function getDevice() {
22022  var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
22023  if (!deviceCached) {
22024    deviceCached = calcDevice(overrides);
22025  }
22026  return deviceCached;
22027}
22028
22029
22030/***/ }),
22031
vendor: 1,754 bytes, lines 22032-22080
22032/***/ "./node_modules/swiper/shared/get-support.js":
22033/*!***************************************************!*\
22034  !*** ./node_modules/swiper/shared/get-support.js ***!
22035  \***************************************************/
22036/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
22037
22038"use strict";
22039__webpack_require__.r(__webpack_exports__);
22040/* harmony export */ __webpack_require__.d(__webpack_exports__, {
22041/* harmony export */   getSupport: function() { return /* binding */ getSupport; }
22042/* harmony export */ });
22043/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
22044
22045var support;
22046function calcSupport() {
22047  var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
22048  var document = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getDocument)();
22049  return {
22050    smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,
22051    touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),
22052    passiveListener: function checkPassiveListener() {
22053      var supportsPassive = false;
22054      try {
22055        var opts = Object.defineProperty({}, 'passive', {
22056          // eslint-disable-next-line
22057          get: function get() {
22058            supportsPassive = true;
22059          }
22060        });
22061        window.addEventListener('testPassiveListener', null, opts);
22062      } catch (e) {// No support
22063      }
22064      return supportsPassive;
22065    }(),
22066    gestures: function checkGestures() {
22067      return 'ongesturestart' in window;
22068    }()
22069  };
22070}
22071function getSupport() {
22072  if (!support) {
22073    support = calcSupport();
22074  }
22075  return support;
22076}
22077
22078
22079/***/ }),
22080
vendor: 8,365 bytes, lines 22081-22267
22081/***/ "./node_modules/swiper/shared/utils.js":
22082/*!*********************************************!*\
22083  !*** ./node_modules/swiper/shared/utils.js ***!
22084  \*********************************************/
22085/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
22086
22087"use strict";
22088__webpack_require__.r(__webpack_exports__);
22089/* harmony export */ __webpack_require__.d(__webpack_exports__, {
22090/* harmony export */   animateCSSModeScroll: function() { return /* binding */ animateCSSModeScroll; },
22091/* harmony export */   deleteProps: function() { return /* binding */ deleteProps; },
22092/* harmony export */   extend: function() { return /* binding */ extend; },
22093/* harmony export */   getComputedStyle: function() { return /* binding */ getComputedStyle; },
22094/* harmony export */   getTranslate: function() { return /* binding */ getTranslate; },
22095/* harmony export */   isObject: function() { return /* binding */ isObject; },
22096/* harmony export */   nextTick: function() { return /* binding */ nextTick; },
22097/* harmony export */   now: function() { return /* binding */ now; },
22098/* harmony export */   setCSSProperty: function() { return /* binding */ setCSSProperty; }
22099/* harmony export */ });
22100/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
22101function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
22102function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
22103function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
22104function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
22105
22106function deleteProps(obj) {
22107  var object = obj;
22108  Object.keys(object).forEach(function (key) {
22109    try {
22110      object[key] = null;
22111    } catch (e) {// no getter for object
22112    }
22113    try {
22114      delete object[key];
22115    } catch (e) {// something got wrong
22116    }
22117  });
22118}
22119function nextTick(callback) {
22120  var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
22121  return setTimeout(callback, delay);
22122}
22123function now() {
22124  return Date.now();
22125}
22126function getComputedStyle(el) {
22127  var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
22128  var style;
22129  if (window.getComputedStyle) {
22130    style = window.getComputedStyle(el, null);
22131  }
22132  if (!style && el.currentStyle) {
22133    style = el.currentStyle;
22134  }
22135  if (!style) {
22136    style = el.style;
22137  }
22138  return style;
22139}
22140function getTranslate(el) {
22141  var axis = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'x';
22142  var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
22143  var matrix;
22144  var curTransform;
22145  var transformMatrix;
22146  var curStyle = getComputedStyle(el, null);
22147  if (window.WebKitCSSMatrix) {
22148    curTransform = curStyle.transform || curStyle.webkitTransform;
22149    if (curTransform.split(',').length > 6) {
22150      curTransform = curTransform.split(', ').map(function (a) {
22151        return a.replace(',', '.');
22152      }).join(', ');
22153    } // Some old versions of Webkit choke when 'none' is passed; pass
22154    // empty string instead in this case
22155
22156    transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
22157  } else {
22158    transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
22159    matrix = transformMatrix.toString().split(',');
22160  }
22161  if (axis === 'x') {
22162    // Latest Chrome and webkits Fix
22163    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix
22164    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers
22165    else curTransform = parseFloat(matrix[4]);
22166  }
22167  if (axis === 'y') {
22168    // Latest Chrome and webkits Fix
22169    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix
22170    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers
22171    else curTransform = parseFloat(matrix[5]);
22172  }
22173  return curTransform || 0;
22174}
22175function isObject(o) {
22176  return _typeof(o) === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';
22177}
22178function isNode(node) {
22179  // eslint-disable-next-line
22180  if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {
22181    return node instanceof HTMLElement;
22182  }
22183  return node && (node.nodeType === 1 || node.nodeType === 11);
22184}
22185function extend() {
22186  var to = Object(arguments.length <= 0 ? undefined : arguments[0]);
22187  var noExtend = ['__proto__', 'constructor', 'prototype'];
22188  for (var i = 1; i < arguments.length; i += 1) {
22189    var nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];
22190    if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {
22191      var keysArray = Object.keys(Object(nextSource)).filter(function (key) {
22192        return noExtend.indexOf(key) < 0;
22193      });
22194      for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
22195        var nextKey = keysArray[nextIndex];
22196        var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
22197        if (desc !== undefined && desc.enumerable) {
22198          if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {
22199            if (nextSource[nextKey].__swiper__) {
22200              to[nextKey] = nextSource[nextKey];
22201            } else {
22202              extend(to[nextKey], nextSource[nextKey]);
22203            }
22204          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {
22205            to[nextKey] = {};
22206            if (nextSource[nextKey].__swiper__) {
22207              to[nextKey] = nextSource[nextKey];
22208            } else {
22209              extend(to[nextKey], nextSource[nextKey]);
22210            }
22211          } else {
22212            to[nextKey] = nextSource[nextKey];
22213          }
22214        }
22215      }
22216    }
22217  }
22218  return to;
22219}
22220function setCSSProperty(el, varName, varValue) {
22221  el.style.setProperty(varName, varValue);
22222}
22223function animateCSSModeScroll(_ref) {
22224  var swiper = _ref.swiper,
22225    targetPosition = _ref.targetPosition,
22226    side = _ref.side;
22227  var window = (0,ssr_window__WEBPACK_IMPORTED_MODULE_0__.getWindow)();
22228  var startPosition = -swiper.translate;
22229  var startTime = null;
22230  var time;
22231  var duration = swiper.params.speed;
22232  swiper.wrapperEl.style.scrollSnapType = 'none';
22233  window.cancelAnimationFrame(swiper.cssModeFrameID);
22234  var dir = targetPosition > startPosition ? 'next' : 'prev';
22235  var isOutOfBound = function isOutOfBound(current, target) {
22236    return dir === 'next' && current >= target || dir === 'prev' && current <= target;
22237  };
22238  var _animate = function animate() {
22239    time = new Date().getTime();
22240    if (startTime === null) {
22241      startTime = time;
22242    }
22243    var progress = Math.max(Math.min((time - startTime) / duration, 1), 0);
22244    var easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;
22245    var currentPosition = startPosition + easeProgress * (targetPosition - startPosition);
22246    if (isOutOfBound(currentPosition, targetPosition)) {
22247      currentPosition = targetPosition;
22248    }
22249    swiper.wrapperEl.scrollTo(_defineProperty({}, side, currentPosition));
22250    if (isOutOfBound(currentPosition, targetPosition)) {
22251      swiper.wrapperEl.style.overflow = 'hidden';
22252      swiper.wrapperEl.style.scrollSnapType = '';
22253      setTimeout(function () {
22254        swiper.wrapperEl.style.overflow = '';
22255        swiper.wrapperEl.scrollTo(_defineProperty({}, side, currentPosition));
22256      });
22257      window.cancelAnimationFrame(swiper.cssModeFrameID);
22258      return;
22259    }
22260    swiper.cssModeFrameID = window.requestAnimationFrame(_animate);
22261  };
22262  _animate();
22263}
22264
22265
22266/***/ }),
22267
vendor: 9,729 bytes, lines 22268-22368
22268/***/ "./node_modules/swiper/swiper.esm.js":
22269/*!*******************************************!*\
22270  !*** ./node_modules/swiper/swiper.esm.js ***!
22271  \*******************************************/
22272/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
22273
22274"use strict";
22275__webpack_require__.r(__webpack_exports__);
22276/* harmony export */ __webpack_require__.d(__webpack_exports__, {
22277/* harmony export */   A11y: function() { return /* reexport safe */ _modules_a11y_a11y_js__WEBPACK_IMPORTED_MODULE_11__["default"]; },
22278/* harmony export */   Autoplay: function() { return /* reexport safe */ _modules_autoplay_autoplay_js__WEBPACK_IMPORTED_MODULE_14__["default"]; },
22279/* harmony export */   Controller: function() { return /* reexport safe */ _modules_controller_controller_js__WEBPACK_IMPORTED_MODULE_10__["default"]; },
22280/* harmony export */   EffectCards: function() { return /* reexport safe */ _modules_effect_cards_effect_cards_js__WEBPACK_IMPORTED_MODULE_24__["default"]; },
22281/* harmony export */   EffectCoverflow: function() { return /* reexport safe */ _modules_effect_coverflow_effect_coverflow_js__WEBPACK_IMPORTED_MODULE_22__["default"]; },
22282/* harmony export */   EffectCreative: function() { return /* reexport safe */ _modules_effect_creative_effect_creative_js__WEBPACK_IMPORTED_MODULE_23__["default"]; },
22283/* harmony export */   EffectCube: function() { return /* reexport safe */ _modules_effect_cube_effect_cube_js__WEBPACK_IMPORTED_MODULE_20__["default"]; },
22284/* harmony export */   EffectFade: function() { return /* reexport safe */ _modules_effect_fade_effect_fade_js__WEBPACK_IMPORTED_MODULE_19__["default"]; },
22285/* harmony export */   EffectFlip: function() { return /* reexport safe */ _modules_effect_flip_effect_flip_js__WEBPACK_IMPORTED_MODULE_21__["default"]; },
22286/* harmony export */   FreeMode: function() { return /* reexport safe */ _modules_free_mode_free_mode_js__WEBPACK_IMPORTED_MODULE_16__["default"]; },
22287/* harmony export */   Grid: function() { return /* reexport safe */ _modules_grid_grid_js__WEBPACK_IMPORTED_MODULE_17__["default"]; },
22288/* harmony export */   HashNavigation: function() { return /* reexport safe */ _modules_hash_navigation_hash_navigation_js__WEBPACK_IMPORTED_MODULE_13__["default"]; },
22289/* harmony export */   History: function() { return /* reexport safe */ _modules_history_history_js__WEBPACK_IMPORTED_MODULE_12__["default"]; },
22290/* harmony export */   Keyboard: function() { return /* reexport safe */ _modules_keyboard_keyboard_js__WEBPACK_IMPORTED_MODULE_2__["default"]; },
22291/* harmony export */   Lazy: function() { return /* reexport safe */ _modules_lazy_lazy_js__WEBPACK_IMPORTED_MODULE_9__["default"]; },
22292/* harmony export */   Manipulation: function() { return /* reexport safe */ _modules_manipulation_manipulation_js__WEBPACK_IMPORTED_MODULE_18__["default"]; },
22293/* harmony export */   Mousewheel: function() { return /* reexport safe */ _modules_mousewheel_mousewheel_js__WEBPACK_IMPORTED_MODULE_3__["default"]; },
22294/* harmony export */   Navigation: function() { return /* reexport safe */ _modules_navigation_navigation_js__WEBPACK_IMPORTED_MODULE_4__["default"]; },
22295/* harmony export */   Pagination: function() { return /* reexport safe */ _modules_pagination_pagination_js__WEBPACK_IMPORTED_MODULE_5__["default"]; },
22296/* harmony export */   Parallax: function() { return /* reexport safe */ _modules_parallax_parallax_js__WEBPACK_IMPORTED_MODULE_7__["default"]; },
22297/* harmony export */   Scrollbar: function() { return /* reexport safe */ _modules_scrollbar_scrollbar_js__WEBPACK_IMPORTED_MODULE_6__["default"]; },
22298/* harmony export */   Swiper: function() { return /* reexport safe */ _core_core_js__WEBPACK_IMPORTED_MODULE_0__["default"]; },
22299/* harmony export */   Thumbs: function() { return /* reexport safe */ _modules_thumbs_thumbs_js__WEBPACK_IMPORTED_MODULE_15__["default"]; },
22300/* harmony export */   Virtual: function() { return /* reexport safe */ _modules_virtual_virtual_js__WEBPACK_IMPORTED_MODULE_1__["default"]; },
22301/* harmony export */   Zoom: function() { return /* reexport safe */ _modules_zoom_zoom_js__WEBPACK_IMPORTED_MODULE_8__["default"]; },
22302/* harmony export */   "default": function() { return /* reexport safe */ _core_core_js__WEBPACK_IMPORTED_MODULE_0__["default"]; }
22303/* harmony export */ });
22304/* harmony import */ var _core_core_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core/core.js */ "./node_modules/swiper/core/core.js");
22305/* harmony import */ var _modules_virtual_virtual_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modules/virtual/virtual.js */ "./node_modules/swiper/modules/virtual/virtual.js");
22306/* harmony import */ var _modules_keyboard_keyboard_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modules/keyboard/keyboard.js */ "./node_modules/swiper/modules/keyboard/keyboard.js");
22307/* harmony import */ var _modules_mousewheel_mousewheel_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modules/mousewheel/mousewheel.js */ "./node_modules/swiper/modules/mousewheel/mousewheel.js");
22308/* harmony import */ var _modules_navigation_navigation_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modules/navigation/navigation.js */ "./node_modules/swiper/modules/navigation/navigation.js");
22309/* harmony import */ var _modules_pagination_pagination_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modules/pagination/pagination.js */ "./node_modules/swiper/modules/pagination/pagination.js");
22310/* harmony import */ var _modules_scrollbar_scrollbar_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modules/scrollbar/scrollbar.js */ "./node_modules/swiper/modules/scrollbar/scrollbar.js");
22311/* harmony import */ var _modules_parallax_parallax_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modules/parallax/parallax.js */ "./node_modules/swiper/modules/parallax/parallax.js");
22312/* harmony import */ var _modules_zoom_zoom_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./modules/zoom/zoom.js */ "./node_modules/swiper/modules/zoom/zoom.js");
22313/* harmony import */ var _modules_lazy_lazy_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./modules/lazy/lazy.js */ "./node_modules/swiper/modules/lazy/lazy.js");
22314/* harmony import */ var _modules_controller_controller_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./modules/controller/controller.js */ "./node_modules/swiper/modules/controller/controller.js");
22315/* harmony import */ var _modules_a11y_a11y_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./modules/a11y/a11y.js */ "./node_modules/swiper/modules/a11y/a11y.js");
22316/* harmony import */ var _modules_history_history_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./modules/history/history.js */ "./node_modules/swiper/modules/history/history.js");
22317/* harmony import */ var _modules_hash_navigation_hash_navigation_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./modules/hash-navigation/hash-navigation.js */ "./node_modules/swiper/modules/hash-navigation/hash-navigation.js");
22318/* harmony import */ var _modules_autoplay_autoplay_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./modules/autoplay/autoplay.js */ "./node_modules/swiper/modules/autoplay/autoplay.js");
22319/* harmony import */ var _modules_thumbs_thumbs_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./modules/thumbs/thumbs.js */ "./node_modules/swiper/modules/thumbs/thumbs.js");
22320/* harmony import */ var _modules_free_mode_free_mode_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./modules/free-mode/free-mode.js */ "./node_modules/swiper/modules/free-mode/free-mode.js");
22321/* harmony import */ var _modules_grid_grid_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./modules/grid/grid.js */ "./node_modules/swiper/modules/grid/grid.js");
22322/* harmony import */ var _modules_manipulation_manipulation_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./modules/manipulation/manipulation.js */ "./node_modules/swiper/modules/manipulation/manipulation.js");
22323/* harmony import */ var _modules_effect_fade_effect_fade_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./modules/effect-fade/effect-fade.js */ "./node_modules/swiper/modules/effect-fade/effect-fade.js");
22324/* harmony import */ var _modules_effect_cube_effect_cube_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./modules/effect-cube/effect-cube.js */ "./node_modules/swiper/modules/effect-cube/effect-cube.js");
22325/* harmony import */ var _modules_effect_flip_effect_flip_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./modules/effect-flip/effect-flip.js */ "./node_modules/swiper/modules/effect-flip/effect-flip.js");
22326/* harmony import */ var _modules_effect_coverflow_effect_coverflow_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./modules/effect-coverflow/effect-coverflow.js */ "./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js");
22327/* harmony import */ var _modules_effect_creative_effect_creative_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./modules/effect-creative/effect-creative.js */ "./node_modules/swiper/modules/effect-creative/effect-creative.js");
22328/* harmony import */ var _modules_effect_cards_effect_cards_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./modules/effect-cards/effect-cards.js */ "./node_modules/swiper/modules/effect-cards/effect-cards.js");
22329/**
22330 * Swiper 8.4.7
22331 * Most modern mobile touch slider and framework with hardware accelerated transitions
22332 * https://swiperjs.com
22333 *
22334 * Copyright 2014-2023 Vladimir Kharlampidi
22335 *
22336 * Released under the MIT License
22337 *
22338 * Released on: January 30, 2023
22339 */
22340
22341
22342
22343
22344
22345
22346
22347
22348
22349
22350
22351
22352
22353
22354
22355
22356
22357
22358
22359
22360
22361
22362
22363
22364
22365
22366
22367/***/ }),
22368
vendor: 392 bytes, lines 22369-22381
22369/***/ "./node_modules/swiper/swiper.min.css":
22370/*!********************************************!*\
22371  !*** ./node_modules/swiper/swiper.min.css ***!
22372  \********************************************/
22373/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
22374
22375"use strict";
22376__webpack_require__.r(__webpack_exports__);
22377// extracted by mini-css-extract-plugin
22378
22379
22380/***/ }),
22381
22382/***/ "./src/js/components/accordion.js":
22383/*!****************************************!*\
22384  !*** ./src/js/components/accordion.js ***!
22385  \****************************************/
22386/***/ (function() {
22387
22388var accordion = document.querySelectorAll('.accordion');
22389accordion.forEach(function (accordion) {
22390  var triggers = accordion.querySelectorAll('.accordion__trigger-btn');
22391  triggers.forEach(function (trigger, i) {
22392    trigger.addEventListener('click', function () {
22393      triggers.forEach(function (trigger) {
22394        trigger.parentElement.closest('.accordion__item').classList.remove('opened');
22395      });
22396      trigger.parentElement.closest('.accordion__item').classList.add('opened');
22397    });
22398  });
22399});
22400
22401/***/ }),
22402
22403/***/ "./src/js/components/header.js":
22404/*!*************************************!*\
22405  !*** ./src/js/components/header.js ***!
22406  \*************************************/
22407/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
22408
22409"use strict";
22410__webpack_require__.r(__webpack_exports__);
22411/* harmony import */ var body_scroll_lock_lib_bodyScrollLock_es6__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! body-scroll-lock/lib/bodyScrollLock.es6 */ "./node_modules/body-scroll-lock/lib/bodyScrollLock.es6.js");
22412
22413var header = document.querySelector('.header');
22414var hamburger = document.querySelector('.header__hamburger');
22415var menuScrollContent = document.querySelector('[data-menu-scoll-content]');
22416var anchors = document.querySelectorAll('.menu__nav-anchor');
22417var isMenuOpened = false;
22418function openMenu() {
22419  header.classList.add('menu-opened');
22420  hamburger.classList.add('active');
22421  (0,body_scroll_lock_lib_bodyScrollLock_es6__WEBPACK_IMPORTED_MODULE_0__.disableBodyScroll)(menuScrollContent);
22422  isMenuOpened = true;
22423}
22424function closeMenu() {
22425  header.classList.remove('menu-opened');
22426  hamburger.classList.remove('active');
22427  (0,body_scroll_lock_lib_bodyScrollLock_es6__WEBPACK_IMPORTED_MODULE_0__.enableBodyScroll)(menuScrollContent);
22428  isMenuOpened = false;
22429}
22430anchors.forEach(function (anchor) {
22431  return anchor.addEventListener('click', closeMenu);
22432});
22433hamburger.addEventListener('click', function () {
22434  return isMenuOpened ? closeMenu() : openMenu();
22435});
22436
22437/**
22438 * アンカースクロール
22439 */
22440document.querySelectorAll('a[href^="#"]').forEach(function (anchor) {
22441  anchor.addEventListener('click', function (e) {
22442    e.preventDefault();
22443    document.querySelector(this.getAttribute('href')).scrollIntoView({
22444      behavior: 'smooth'
22445    });
22446  });
22447});
22448
22449/***/ }),
22450
22451/***/ "./src/js/components/iframe-height.js":
22452/*!********************************************!*\
22453  !*** ./src/js/components/iframe-height.js ***!
22454  \********************************************/
22455/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
22456
22457"use strict";
22458__webpack_require__.r(__webpack_exports__);
22459/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js");
22460/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
22461
22462jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('message', function (event) {
22463  // if (event.originalEvent.origin != 'https://od.ignica.com') return;
22464
22465  jquery__WEBPACK_IMPORTED_MODULE_0___default()('.home-delivery__frame iframe').css({
22466    width: '100%',
22467    height: event.originalEvent.data
22468  });
22469  jquery__WEBPACK_IMPORTED_MODULE_0___default()('.single-store-info__advert iframe').css({
22470    width: '100%',
22471    height: event.originalEvent.data
22472  });
22473});
22474
22475/***/ }),
22476
22477/***/ "./src/js/components/scroll-to-top.js":
22478/*!********************************************!*\
22479  !*** ./src/js/components/scroll-to-top.js ***!
22480  \********************************************/
22481/***/ (function() {
22482
22483var scrollToTop = document.querySelector('.scroll-to-top');
22484function action() {
22485  if (window.scrollY > window.innerHeight) {
22486    scrollToTop.classList.add('visible');
22487  } else {
22488    scrollToTop.classList.remove('visible');
22489  }
22490}
22491document.addEventListener('scroll', action);
22492document.addEventListener('DOMContentLoaded', action);
22493
22494/***/ }),
22495
22496/***/ "./src/js/core/boot.js":
22497/*!*****************************!*\
22498  !*** ./src/js/core/boot.js ***!
22499  \*****************************/
22500/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
22501
22502"use strict";
22503__webpack_require__.r(__webpack_exports__);
22504/* harmony export */ __webpack_require__.d(__webpack_exports__, {
22505/* harmony export */   boot: function() { return /* binding */ boot; }
22506/* harmony export */ });
22507/* harmony import */ var _util_device__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/device */ "./src/js/core/util/device.js");
22508function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
22509function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
22510function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
22511function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
22512function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
22513function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
22514
22515var ios = _util_device__WEBPACK_IMPORTED_MODULE_0__["default"].ios ? 'ios' : '';
22516var android = _util_device__WEBPACK_IMPORTED_MODULE_0__["default"].android ? 'android' : '';
22517var windows = _util_device__WEBPACK_IMPORTED_MODULE_0__["default"].windows ? 'windows' : '';
22518var touch = _util_device__WEBPACK_IMPORTED_MODULE_0__["default"].desktop ? 'hover' : 'touch';
22519var userAgent = [ios, android, windows, touch];
22520document.documentElement.className = userAgent.filter(function (className) {
22521  return className !== '';
22522}).join(' ');
22523var Bootstrap = /*#__PURE__*/function () {
22524  function Bootstrap() {
22525    _classCallCheck(this, Bootstrap);
22526  }
22527  return _createClass(Bootstrap, [{
22528    key: "init",
22529    value: function init(modulesOption) {
22530      var _this = this;
22531      modulesOption.forEach(function (moduleOption) {
22532        return _this.install(moduleOption);
22533      });
22534    }
22535  }, {
22536    key: "install",
22537    value: function install(_ref) {
22538      var module = _ref.module,
22539        _ref$dynamic = _ref.dynamic,
22540        dynamic = _ref$dynamic === void 0 ? false : _ref$dynamic;
22541      if (dynamic) {
22542        // load
22543        this.initDynamicModule(module);
22544      } else {
22545        // just init
22546        this.initModule(module);
22547      }
22548    }
22549
22550    //checkPathname( module, path, dynamic ) {
22551    //	let parsedPathname = url.parse( window.location.href ).pathname.split('/');
22552    //	let parsedRoute = path.split('/');
22553    //
22554    //	if ( parsedPathname.every( (route, i) => route === parsedRoute[i] ) ) {
22555    //		// load or
22556    //		dynamic ? this.initDynamicModule( module ) : this.initModule( module );
22557    //	}
22558    //}
22559  }, {
22560    key: "initDynamicModule",
22561    value: function initDynamicModule(promise) {
22562      var _this2 = this;
22563      promise().then(function (_) {
22564        return _this2.initModule(_[Object.keys(_)[0]]);
22565      });
22566    }
22567  }, {
22568    key: "initModule",
22569    value: function initModule(module) {
22570      module();
22571    }
22572  }]);
22573}();
22574var boot = new Bootstrap();
22575
22576
22577/***/ }),
22578
22579/***/ "./src/js/core/polyfill/index.js":
22580/*!***************************************!*\
22581  !*** ./src/js/core/polyfill/index.js ***!
22582  \***************************************/
22583/***/ (function() {
22584
22585/*
22586* Polyfill for HTMLElement.closest
22587* */
22588var ElementPrototype = window.Element.prototype;
22589if (typeof ElementPrototype.matches !== 'function') {
22590  ElementPrototype.matches = ElementPrototype.msMatchesSelector || ElementPrototype.mozMatchesSelector || ElementPrototype.webkitMatchesSelector || function matches(selector) {
22591    var elements = (element.document || element.ownerDocument).querySelectorAll(selector);
22592    var element = this;
22593    var index = 0;
22594    while (elements[index] && elements[index] !== element) {
22595      ++index;
22596    }
22597    return Boolean(elements[index]);
22598  };
22599}
22600if (typeof ElementPrototype.closest !== 'function') {
22601  ElementPrototype.closest = function closest(selector) {
22602    var element = this;
22603    while (element && element.nodeType === 1) {
22604      if (element.matches(selector)) {
22605        return element;
22606      }
22607      element = element.parentNode;
22608    }
22609    return null;
22610  };
22611}
22612/*
22613* Create hasAttr function
22614* */
22615(function (prototype) {
22616  prototype.hasAttribute = prototype.hasAttribute || function (name) {
22617    return !!(this.attributes[name] && this.attributes[name].specified);
22618  };
22619})(Element.prototype);
22620
22621/***/ }),
22622
22623/***/ "./src/js/core/util/device.js":
22624/*!************************************!*\
22625  !*** ./src/js/core/util/device.js ***!
22626  \************************************/
22627/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
22628
22629"use strict";
22630__webpack_require__.r(__webpack_exports__);
22631/* harmony default export */ __webpack_exports__["default"] = ((function Device() {
22632  var ua = window.navigator.userAgent;
22633  var device = {
22634    ios: false,
22635    android: false,
22636    androidChrome: false,
22637    desktop: false,
22638    windows: false
22639  };
22640
22641  //eslint-disable-next-line no-useless-escape
22642  var windows = ua.match(/(Windows Phone);?[\s\/]+([\d.]+)?/);
22643  //eslint-disable-next-line no-useless-escape
22644  var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/);
22645  var ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
22646  var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
22647  var iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
22648
22649  // Windows
22650  if (windows) {
22651    device.os = 'windows';
22652    device.osVersion = windows[2];
22653    device.windows = true;
22654  }
22655  // Android
22656  if (android && !windows) {
22657    device.os = 'android';
22658    device.osVersion = android[2];
22659    device.android = true;
22660    device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;
22661  }
22662  if (ipad || iphone || ipod) {
22663    device.os = 'ios';
22664    device.ios = true;
22665  }
22666
22667  // Desktop
22668  device.desktop = !(device.os || device.android || device.webView);
22669
22670  // Webview
22671  device.webView = (iphone || ipad || ipod) && ua.match(/.*AppleWebKit(?!.*Safari)/i);
22672
22673  // Export object
22674  return device;
22675})());
22676
22677/***/ }),
22678
22679/***/ "./src/js/layouts/contact.js":
22680/*!***********************************!*\
22681  !*** ./src/js/layouts/contact.js ***!
22682  \***********************************/
22683/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
22684
22685"use strict";
22686__webpack_require__.r(__webpack_exports__);
22687/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js");
22688/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
22689/* harmony import */ var jquery_validation_dist_jquery_validate_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jquery-validation/dist/jquery.validate.js */ "./node_modules/jquery-validation/dist/jquery.validate.js");
22690/* harmony import */ var jquery_validation_dist_jquery_validate_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(jquery_validation_dist_jquery_validate_js__WEBPACK_IMPORTED_MODULE_1__);
22691
22692window.jQuery = window.$ = (jquery__WEBPACK_IMPORTED_MODULE_0___default());
22693
22694(function ($) {
22695  $(function () {
22696    var $form = $('#b_confirm').closest('form');
22697    var $wrapper = $('.fm_wrapper');
22698    if (!$form.length) return;
22699
22700    // --- 1. カスタムメソッド定義 ---
22701    if ($.validator) {
22702      $.validator.addMethod("kana", function (value, element) {
22703        return this.optional(element) || /^([ァ-ヶー\s ]+)$/.test(value);
22704      }, "全角カタカナで入力してください");
22705      $.validator.addMethod("zenkaku", function (value, element) {
22706        return this.optional(element) || !/[ -~。-゚]/.test(value);
22707      }, "全角で入力してください");
22708    }
22709
22710    // --- 2. バリデーションの設定 ---
22711    var validator = $form.validate({
22712      onfocusout: false,
22713      onkeyup: false,
22714      onclick: false,
22715      rules: {
22716        'total_confirm[]': {
22717          required: true
22718        },
22719        'store_pref': {
22720          required: true
22721        },
22722        'store_city': {
22723          required: true
22724        },
22725        'store_name': {
22726          required: true
22727        },
22728        'your-name': {
22729          required: true,
22730          zenkaku: true
22731        },
22732        'your-kana': {
22733          kana: true
22734        },
22735        'henshin': {
22736          required: true
22737        },
22738        'your-email': {
22739          required: function required() {
22740            return $('input[name="henshin"]:checked').val() === '希望する' && $('#your-tel').val() === '';
22741          },
22742          email: true
22743        },
22744        'your-tel': {
22745          required: function required() {
22746            return $('input[name="henshin"]:checked').val() === '希望する' && $('#your-email').val() === '';
22747          },
22748          digits: true
22749        },
22750        'your-msg': {
22751          required: true
22752        }
22753      },
22754      messages: {
22755        'total_confirm[]': "同意してください",
22756        'store_pref': "選択してください",
22757        'store_city': "選択してください",
22758        'store_name': "選択してください",
22759        'your-name': {
22760          required: "お名前を入力してください",
22761          zenkaku: "全角で入力してください"
22762        },
22763        'your-email': "メールアドレスを入力してください",
22764        'your-tel': "電話番号を入力してください",
22765        'your-msg': "お問い合わせ内容を入力してください"
22766      },
22767      errorElement: 'span',
22768      errorClass: 'error-msg-jquery',
22769      errorPlacement: function errorPlacement(error, element) {
22770        var $container = element.closest('.txt_flex, .totaly_confirm, .rd_flex, .renrakusaki');
22771        if ($container.length) {
22772          error.appendTo($container);
22773        } else {
22774          error.insertAfter(element);
22775        }
22776      }
22777    });
22778
22779    // --- 3. 返信希望による切り替え ---
22780    $('input[name="henshin"]').on('change', function () {
22781      var val = $(this).val();
22782      var $renrakuRow = $('.fm_tr--renrakusaki');
22783      if (val === '希望しない') {
22784        $renrakuRow.hide();
22785        // 値をクリア。かつdisabledにはしない(バリデーション関数側で制御)
22786        $('#your-email, #your-tel').val('');
22787        $('.error-msg-jquery').filter('[for="your-email"], [for="your-tel"]').remove();
22788      } else {
22789        $renrakuRow.show();
22790      }
22791    });
22792    $('input[name="henshin"]:checked').trigger('change');
22793
22794    // --- 4. 【確認する】ボタンクリック ---
22795    $('#b_confirm').on('click', function (e) {
22796      e.preventDefault();
22797      $('.wpcf7-not-valid-tip').remove();
22798      if ($form.valid()) {
22799        // 確認用クラスを付与(操作制限はCSSで行う)
22800        $wrapper.addClass('confirm_page');
22801        $('.contact__title').addClass('confirm_page');
22802        $('.contact__desc').addClass('confirm_page');
22803        $('._wrapper--input').hide();
22804        $('._wrapper--confirm').show();
22805        $('html, body').animate({
22806          scrollTop: $wrapper.offset().top - 100
22807        }, 500);
22808      } else {
22809        var $firstError = $('.error-msg-jquery:visible').first();
22810        if ($firstError.length) {
22811          $('html, body').animate({
22812            scrollTop: $firstError.offset().top - 100
22813          }, 300);
22814        }
22815      }
22816    });
22817
22818    // --- 5. 【修正する】ボタンクリック ---
22819    $('#b_back').on('click', function () {
22820      $wrapper.removeClass('confirm_page');
22821      $('.contact__title').removeClass('confirm_page');
22822      $('.contact__desc').removeClass('confirm_page');
22823      $('._wrapper--confirm').hide();
22824      $('._wrapper--input').show();
22825    });
22826
22827    // --- 6. 【送信する】ボタンクリック ---
22828    $('#b_submit').on('click', function (e) {
22829      // e.preventDefault(); // ここをあえて外すか、以下のように制御します
22830
22831      if ($form.valid()) {
22832        // 送信前に制限をすべて解除
22833        $form.find(':disabled').prop('disabled', false);
22834        $wrapper.removeClass('confirm_page');
22835        $('.fm_wrapper input, .fm_wrapper textarea, .fm_wrapper select').css('pointer-events', 'auto');
22836
22837        // 重要:CF7のPHP側バリデーションを通過させるため、
22838        // submitボタンのname属性を維持したまま、ネイティブのsubmitを実行
22839        return true; // preventDefaultしていないので、そのまま本来のsubmitが走ります
22840      } else {
22841        e.preventDefault();
22842        return false;
22843      }
22844    });
22845  });
22846  $("#pd_store").on("change", function () {
22847    if ($(this).val() === "本社") {
22848      $("#pd_pref").rules("remove", "required");
22849      $("#pd_city").rules("remove", "required");
22850    } else {
22851      $("#pd_pref").rules("add", {
22852        required: true
22853      });
22854      $("#pd_city").rules("add", {
22855        required: true
22856      });
22857    }
22858    $("#pd_pref").valid();
22859  });
22860})(jQuery);
22861
22862/***/ }),
22863
22864/***/ "./src/js/layouts/home.js":
22865/*!********************************!*\
22866  !*** ./src/js/layouts/home.js ***!
22867  \********************************/
22868/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
22869
22870"use strict";
22871__webpack_require__.r(__webpack_exports__);
22872/* harmony import */ var swiper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! swiper */ "./node_modules/swiper/swiper.esm.js");
22873/* harmony import */ var swiper_swiper_min_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! swiper/swiper.min.css */ "./node_modules/swiper/swiper.min.css");
22874
22875
22876new swiper__WEBPACK_IMPORTED_MODULE_0__.Swiper(".home-visual__slider .swiper", {
22877  modules: [swiper__WEBPACK_IMPORTED_MODULE_0__.Lazy, swiper__WEBPACK_IMPORTED_MODULE_0__.Navigation, swiper__WEBPACK_IMPORTED_MODULE_0__.Pagination, swiper__WEBPACK_IMPORTED_MODULE_0__.Autoplay],
22878  slidesPerView: 'auto',
22879  spaceBetween: 11,
22880  centeredSlides: true,
22881  loop: true,
22882  lazy: {
22883    loadPrevNext: true,
22884    loadPrevNextAmount: 6
22885  },
22886  autoplay: {
22887    delay: 3000,
22888    disableOnInteraction: false
22889  },
22890  navigation: {
22891    prevEl: ".home-visual__slider-prev",
22892    nextEl: ".home-visual__slider-next"
22893  },
22894  pagination: {
22895    el: '.home-visual__slider-pagination'
22896  }
22897});
22898new swiper__WEBPACK_IMPORTED_MODULE_0__.Swiper(".home-carousel__slider .swiper", {
22899  modules: [swiper__WEBPACK_IMPORTED_MODULE_0__.Lazy, swiper__WEBPACK_IMPORTED_MODULE_0__.Navigation, swiper__WEBPACK_IMPORTED_MODULE_0__.Pagination, swiper__WEBPACK_IMPORTED_MODULE_0__.Autoplay],
22900  slidesPerView: 'auto',
22901  spaceBetween: 10,
22902  centeredSlides: true,
22903  loop: true,
22904  lazy: {
22905    loadPrevNext: true,
22906    loadPrevNextAmount: 6
22907  },
22908  autoplay: {
22909    delay: 3000,
22910    disableOnInteraction: false
22911  },
22912  navigation: {
22913    prevEl: ".home-carousel__slider-prev",
22914    nextEl: ".home-carousel__slider-next"
22915  },
22916  pagination: {
22917    el: '.home-carousel__slider-pagination'
22918  },
22919  breakpoints: {
22920    767: {
22921      spaceBetween: 24
22922    }
22923  }
22924});
22925
22926/***/ }),
22927
22928/***/ "./src/js/layouts/stores.js":
22929/*!**********************************!*\
22930  !*** ./src/js/layouts/stores.js ***!
22931  \**********************************/
22932/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
22933
22934"use strict";
22935__webpack_require__.r(__webpack_exports__);
22936/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js");
22937/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
22938 // これを一番上に追加
22939
22940var tabsTrigger = document.querySelectorAll('.store__tabs-button');
22941var tabsContent = document.querySelectorAll('.store__tabs-content-item');
22942if (tabsTrigger) {
22943  tabsTrigger.forEach(function (trigger, i) {
22944    trigger.addEventListener('click', function () {
22945      tabsTrigger.forEach(function (trigger) {
22946        return trigger.classList.remove('active');
22947      });
22948      tabsContent.forEach(function (content) {
22949        return content.classList.remove('active');
22950      });
22951      trigger.classList.add('active');
22952      tabsContent[i].classList.add('active');
22953    });
22954  });
22955}
22956
22957/* ---------------------------------------------
22958*   Storeページで、チラシのリンク変更
22959--------------------------------------------- */
22960jquery__WEBPACK_IMPORTED_MODULE_0___default()(function () {
22961  // 親要素を指定してループ
22962  jquery__WEBPACK_IMPORTED_MODULE_0___default()('.leaflet_widget .leaflet').each(function () {
22963    var $this = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);
22964    var currentHref = $this.attr('href');
22965    if (currentHref && currentHref.indexOf('http') !== 0) {
22966      $this.attr('href', 'https://widgets.tokubai.co.jp' + currentHref);
22967    }
22968  });
22969});
22970
22971/* ---------------------------------------------
22972*   My Store
22973--------------------------------------------- */
22974jquery__WEBPACK_IMPORTED_MODULE_0___default()(function () {
22975  console.log('0108msg');
22976  'use strict';
22977  var cookieKey = 'storeIds';
22978  var maxAge = '2147483647';
22979  var path = '/';
22980  var trigger = '.js-mystore-trigger';
22981  var $popup = jquery__WEBPACK_IMPORTED_MODULE_0___default()('.js-mystore-popup');
22982  var $deleteBtn = jquery__WEBPACK_IMPORTED_MODULE_0___default()('.js-mystore-delete');
22983  var $cancelBtn = jquery__WEBPACK_IMPORTED_MODULE_0___default()('.js-mystore-cancel');
22984  var confirmTrigger = 'js-confirm-trigger';
22985  var keyword = 'checked';
22986  if (cookieGet()) {
22987    var storeIds = cookieGet();
22988  } else {
22989    var storeIds = [];
22990  }
22991  jquery__WEBPACK_IMPORTED_MODULE_0___default()(trigger).off().on('click', function () {
22992    var shopId = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).val();
22993    if (~shopId.indexOf(keyword)) {
22994      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).next().fadeIn();
22995      jquery__WEBPACK_IMPORTED_MODULE_0___default()($deleteBtn).off().on('click', function () {
22996        cookieRemove(shopId);
22997        location.reload();
22998      });
22999      jquery__WEBPACK_IMPORTED_MODULE_0___default()($cancelBtn).off().on('click', function () {
23000        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).closest($popup).fadeOut();
23001        return false;
23002      });
23003    } else {
23004      cookieAdd(shopId);
23005      location.reload();
23006    }
23007  });
23008
23009  // cookie取得
23010  function cookieGet() {
23011    //localStorageから取り出し
23012    var storeIds = document.cookie.indexOf(cookieKey); //取り出した後にJSON.parseをかけます。
23013
23014    if (storeIds !== -1) {
23015      var cookieValue = document.cookie.split('; ').find(function (row) {
23016        return row.startsWith(cookieKey);
23017      }).split('=')[1];
23018      return cookieValue.split(',');
23019    } else {
23020      return false;
23021    }
23022  }
23023
23024  // cookieに追加
23025  function cookieAdd(val) {
23026    storeIds.push(val);
23027    var storeIdsStr = storeIds.join(',');
23028    document.cookie = cookieKey + '=' + storeIdsStr + '; max-age=' + maxAge + '; Path=' + path;
23029  }
23030
23031  // cookieから削除
23032  function cookieRemove(val) {
23033    var val = val.replace(keyword, '');
23034    var index = storeIds.indexOf(val);
23035    storeIds.splice(index, 1);
23036    var storeIdsStr = storeIds.join(',');
23037    document.cookie = cookieKey + '=' + storeIdsStr + '; max-age=' + maxAge + '; Path=' + path;
23038  }
23039
23040  // cookieから削除
23041  function confirmDelete() {
23042    var result = window.confirm('本当に削除しますか?');
23043    return result;
23044  }
23045
23046  /**
23047   * 検索結果:空欄の市・区は削除
23048   */
23049  // 1. 最初に対象を一度だけ変数に入れる(高速化)
23050  var $cityWrappers = jquery__WEBPACK_IMPORTED_MODULE_0___default()('.search_result .city_wrapper');
23051  var total = $cityWrappers.length;
23052  $cityWrappers.each(function (idx, item) {
23053    var $this = jquery__WEBPACK_IMPORTED_MODULE_0___default()(item);
23054
23055    // 中身(.store_list__item)がなければ削除
23056    if ($this.find('.store_list__item').length === 0) {
23057      $this.remove();
23058    }
23059
23060    // 正確に「最後(-1)」をキャッチ
23061    if (idx === total - 1) {
23062      console.log('全てのチェックが終了');
23063      // 削除されずに残った要素を表示
23064      jquery__WEBPACK_IMPORTED_MODULE_0___default()('.search_result .pref_wrapper').fadeIn();
23065    }
23066  });
23067
23068  /**
23069   * 検索結果:スクロール
23070   */
23071  // 1. URLのパラメータを確認
23072  var params = new URLSearchParams(window.location.search);
23073  var hasParam = params.has('kw') || params.has('pref') || params.has('yagou');
23074
23075  // 2. パラメータがある場合、スクロール実行
23076  if (hasParam) {
23077    var $target = jquery__WEBPACK_IMPORTED_MODULE_0___default()('.search_result');
23078    if ($target.length) {
23079      // ターゲットの位置を取得
23080      var position = $target.offset().top;
23081      var offset = 20; // 少し上に余白を持たせる調整
23082
23083      // 3. スムーズスクロールを実行
23084      jquery__WEBPACK_IMPORTED_MODULE_0___default()('html, body').animate({
23085        scrollTop: position - offset
23086      }, 600, 'swing'); // 600ミリ秒(0.6秒)かけてスクロール
23087    }
23088  }
23089
23090  /***
23091   * 都道府県別の店舗数の表示調整
23092   */
23093  jquery__WEBPACK_IMPORTED_MODULE_0___default()('.pref_wrapper').each(function () {
23094    var pref_store_len = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).find('.store_list__item').length;
23095    jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).find('.pref_head .store_len').html(pref_store_len + '<span>店舗</span>');
23096  });
23097
23098  /***
23099   * 都道府県別の市区町村PDの絞り込みコード
23100   */
23101  jquery__WEBPACK_IMPORTED_MODULE_0___default()('select[name="pref_city_pd"]').on('change', function () {
23102    // 選択された値を取得
23103    var value = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).val();
23104    if (value) {
23105      // エンコードしてリダイレクト
23106      var redirectUrl = '/stores/?pref=' + encodeURIComponent(value);
23107      if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).attr('data-yagou')) {
23108        redirectUrl += '&yagou=' + jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).attr('data-yagou');
23109      } else if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).attr('data-kw')) {
23110        redirectUrl += '&kw=' + encodeURIComponent(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).attr('data-kw'));
23111      }
23112      window.location.href = redirectUrl;
23113    }
23114  });
23115});
23116
23117/***/ })
vendor: 5,021 bytes, lines 23117-23222
23117
23118
23119/******/ 	});
23120/************************************************************************/
23121/******/ 	// The module cache
23122/******/ 	var __webpack_module_cache__ = {};
23123/******/ 	
23124/******/ 	// The require function
23125/******/ 	function __webpack_require__(moduleId) {
23126/******/ 		// Check if module is in cache
23127/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
23128/******/ 		if (cachedModule !== undefined) {
23129/******/ 			return cachedModule.exports;
23130/******/ 		}
23131/******/ 		// Check if module exists (development only)
23132/******/ 		if (__webpack_modules__[moduleId] === undefined) {
23133/******/ 			var e = new Error("Cannot find module '" + moduleId + "'");
23134/******/ 			e.code = 'MODULE_NOT_FOUND';
23135/******/ 			throw e;
23136/******/ 		}
23137/******/ 		// Create a new module (and put it into the cache)
23138/******/ 		var module = __webpack_module_cache__[moduleId] = {
23139/******/ 			id: moduleId,
23140/******/ 			loaded: false,
23141/******/ 			exports: {}
23142/******/ 		};
23143/******/ 	
23144/******/ 		// Execute the module function
23145/******/ 		__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
23146/******/ 	
23147/******/ 		// Flag the module as loaded
23148/******/ 		module.loaded = true;
23149/******/ 	
23150/******/ 		// Return the exports of the module
23151/******/ 		return module.exports;
23152/******/ 	}
23153/******/ 	
23154/************************************************************************/
23155/******/ 	/* webpack/runtime/compat get default export */
23156/******/ 	!function() {
23157/******/ 		// getDefaultExport function for compatibility with non-harmony modules
23158/******/ 		__webpack_require__.n = function(module) {
23159/******/ 			var getter = module && module.__esModule ?
23160/******/ 				function() { return module['default']; } :
23161/******/ 				function() { return module; };
23162/******/ 			__webpack_require__.d(getter, { a: getter });
23163/******/ 			return getter;
23164/******/ 		};
23165/******/ 	}();
23166/******/ 	
23167/******/ 	/* webpack/runtime/define property getters */
23168/******/ 	!function() {
23169/******/ 		// define getter functions for harmony exports
23170/******/ 		__webpack_require__.d = function(exports, definition) {
23171/******/ 			for(var key in definition) {
23172/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
23173/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
23174/******/ 				}
23175/******/ 			}
23176/******/ 		};
23177/******/ 	}();
23178/******/ 	
23179/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
23180/******/ 	!function() {
23181/******/ 		__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
23182/******/ 	}();
23183/******/ 	
23184/******/ 	/* webpack/runtime/make namespace object */
23185/******/ 	!function() {
23186/******/ 		// define __esModule on exports
23187/******/ 		__webpack_require__.r = function(exports) {
23188/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
23189/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
23190/******/ 			}
23191/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
23192/******/ 		};
23193/******/ 	}();
23194/******/ 	
23195/******/ 	/* webpack/runtime/node module decorator */
23196/******/ 	!function() {
23197/******/ 		__webpack_require__.nmd = function(module) {
23198/******/ 			module.paths = [];
23199/******/ 			if (!module.children) module.children = [];
23200/******/ 			return module;
23201/******/ 		};
23202/******/ 	}();
23203/******/ 	
23204/************************************************************************/
23205var __webpack_exports__ = {};
23206// This entry needs to be wrapped in an IIFE because it needs to be in strict mode.
23207!function() {
23208"use strict";
23209var __webpack_exports__ = {};
23210/*!*************************!*\
23211  !*** ./src/js/index.js ***!
23212  \*************************/
23213__webpack_require__.r(__webpack_exports__);
23214/* harmony import */ var lozad__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lozad */ "./node_modules/lozad/dist/lozad.min.js");
23215/* harmony import */ var lozad__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lozad__WEBPACK_IMPORTED_MODULE_0__);
23216/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js");
23217/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_1__);
23218/* harmony import */ var _core_polyfill__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./core/polyfill */ "./src/js/core/polyfill/index.js");
23219/* harmony import */ var _core_polyfill__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_core_polyfill__WEBPACK_IMPORTED_MODULE_2__);
23220/* harmony import */ var _core_boot__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./core/boot */ "./src/js/core/boot.js");
23221/* harmony import */ var _components_header__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/header */ "./src/js/components/header.js");
23222/* harmony import */ var _components_accordion__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/
23222accordion */ "./src/js/components/accordion.js");
23223/* harmony import */ var _components_accordion__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_components_accordion__WEBPACK_IMPORTED_MODULE_5__);
23224/* harmony import */ var _components_scroll_to_top__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/scroll-to-top */ "./src/js/components/scroll-to-top.js");
23225/* harmony import */ var _components_scroll_to_top__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_components_scroll_to_top__WEBPACK_IMPORTED_MODULE_6__);
23226/* harmony import */ var _components_iframe_height__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/iframe-height */ "./src/js/components/iframe-height.js");
23227/* harmony import */ var _layouts_home__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./layouts/home */ "./src/js/layouts/home.js");
23228/* harmony import */ var _layouts_stores__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./layouts/stores */ "./src/js/layouts/stores.js");
23229/* harmony import */ var _layouts_contact__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./layouts/contact */ "./src/js/layouts/contact.js");
23230
23231
23232/**
23233 * 1. Lozad (画像表示) を最優先で実行
23234 * import文の直後に置くことで、他のjsエラーに巻き込まれる確率を最小限にします。
23235 */
23236var initLozad = function initLozad() {
23237  try {
23238    var observer = lozad__WEBPACK_IMPORTED_MODULE_0___default()('.lozad', {
23239      rootMargin: '200px 0px',
23240      loaded: function loaded(el) {
23241        console.log('Lozad: Image loaded ->', el.getAttribute('data-src'));
23242      }
23243    });
23244    observer.observe();
23245    console.log('Lozad: Init Success');
23246  } catch (e) {
23247    console.error('Lozad Error:', e);
23248  }
23249};
23250
23251// 即座に実行
23252initLozad();
23253
23254/**
23255 * 2. jQueryをWebpackの全スコープに強制配布
23256 * これを書くことで stores.js 内の $ が認識されるようになります。
23257 */
23258
23259window.$ = window.jQuery = (jquery__WEBPACK_IMPORTED_MODULE_1___default());
23260
23261/**
23262 * 3. 他のファイルのインポート
23263 */
23264
23265
23266
23267
23268
23269
23270
23271// ここでエラーが起きても Lozad は既に終わっているので画像は出ます
23272
23273
23274
23275/**
23276 * 4. 全体の初期化
23277 */
23278try {
23279  _core_boot__WEBPACK_IMPORTED_MODULE_3__.boot.init([]);
23280} catch (e) {
23281  console.warn('Boot system warning:', e);
23282}
23283
23284/**
23285 * 5. 念のための再実行
23286 */
23287if (document.readyState === 'loading') {
23288  document.addEventListener('DOMContentLoaded', initLozad);
23289}
23290setTimeout(initLozad, 1000);
23291}();
23292// This entry needs to be wrapped in an IIFE because it needs to be in strict mode.
23293!function() {
23294"use strict";
23295/*!*******************************!*\
23296  !*** ./src/styles/index.scss ***!
23297  \*******************************/
23298__webpack_require__.r(__webpack_exports__);
23299// extracted by mini-css-extract-plugin
23300
23301}();
23302/******/ })()
23303;

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.