{"version":3,"sources":["webpack:///./node_modules/@ionic/core/dist/esm-es5/swiper.bundle-8bab85e6.js"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","doc","document","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","win","window","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","Dom7","arr","self","i","$","selector","context","els","tempParent","html_1","trim","indexOf","toCreate","innerHTML","push","match","split","nodeType","unique","uniqueArray","addClass","className","classes","j","classList","add","removeClass","remove","hasClass","contains","toggleClass","toggle","attr","attrs","value","arguments","getAttribute","attrName","removeAttr","removeAttribute","data","el","dom7ElementDataStorage","dataKey","transform","elStyle","webkitTransform","transition","duration","webkitTransitionDuration","transitionDuration","on","args","_i","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents_1","parents","k","handleEvent","undefined","events","event","dom7LiveListeners","proxyListener","dom7Listeners","off","handlers","handler","dom7proxy","splice","trigger","evt","detail","bubbles","cancelable","filter","dataIndex","dispatchEvent","transitionEnd","callback","dom","fireCallBack","call","outerWidth","includeMargins","styles_1","styles","offsetWidth","parseFloat","outerHeight","styles_2","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","prop","each","html","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","index","child","previousSibling","eq","returnIndex","append","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","next_1","prev","previousElementSibling","prevAll","prevEls","prev_1","parent","parentNode","parent_1","closest","find","foundElements","found","removeChild","toAdd","fn","prototype","Class","doc$1","win$1","Methods","methodName","Utils","deleteProps","object","nextTick","delay","now","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","parseUrlQuery","url","params","param","query","urlToParse","paramsPart","decodeURIComponent","o","to","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","Support","testDiv","touch","Modernizr","maxTouchPoints","DocumentTouch","pointerEvents","pointerEnabled","PointerEvent","prefixedPointerEvents","msPointerEnabled","transforms3d","csstransforms3d","flexbox","observer","passiveListener","supportsPassive","opts","defineProperty","get","gestures","Browser","isSafari","ua","toLowerCase","isIE","isEdge","isUiWebView","test","SwiperClass","eventsListeners","eventName","priority","method","once","onceHandler","f7proxy","eventHandler","emit","Array","isArray","slice","eventsArray","handlers_1","useModulesParams","instanceParams","instance","modules","moduleName","module","useModules","modulesParams","moduleParams","modulePropName","moduleProp","bind","moduleEventName","create","set","components","use","configurable","installModule","name","proto","static","install","m","updateSize","width","height","swiper","$el","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","size","updateSlides","$wrapperEl","swiperSize","rtl","rtlTranslate","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","slidesNumberEvenToRows","slideSize","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesPerColumn","Math","floor","ceil","slidesPerView","slidesPerColumnFill","max","newSlidesGrid","slidesPerRow","numFullColumns","slide_1","newSlideOrderIndex","column","row","slidesPerGroup","groupIndex","order","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","paddingTop","paddingBottom","swiperSlideSize","centeredSlides","abs","effect","setWrapperSize","slidesGridItem","centerInsufficientSlides","allSlidesSize_1","slideSizeValue","allSlidesOffset_1","snap","snapIndex","watchOverflow","checkOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","speed","activeSlides","newHeight","setTransition","index_1","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","translate","offsetCenter","slideVisibleClass","visibleSlidesIndexes","visibleSlides","slide_2","slideProgress","minTranslate","slideBefore","slideAfter","isVisible","progress","updateProgress","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","activeSlide","realIndex","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","loop","slideDuplicateClass","nextSlide","prevSlide","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","initialized","runCallbacksOnInit","updateClickedSlide","slide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","update","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","z","previousTranslate","transitionStart","runCallbacks","direction","autoHeight","dir","transitionEnd$1","animating","transition$1","slideTo","internal","slideIndex","preventInteractionOnTransition","initialSlide","allowSlideNext","allowSlidePrev","onSlideToWrapperTransitionEnd","destroyed","slideToLoop","newIndex","loopedSlides","slideNext","loopFix","_clientLeft","slidePrev","normalize","val","prevIndex","normalizedTranslate","normalizedSnapGrid","prevSnap","slideReset","slideToClosest","translate_1","currentSnap","nextSnap","slidesPerViewDynamic","slideToIndex","loopCreate","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","snapTranslate","diff","slideChanged","loopDestroy","setGrabCursor","moving","simulateTouch","isLocked","cursor","unsetGrabCursor","grabCursor","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","manipulation","Device","device","ios","android","androidChrome","desktop","windows","iphone","ipod","ipad","cordova","phonegap","os","osVersion","webView","osVersionArr","metaViewport","minimalUi","pixelRatio","devicePixelRatio","onTouchStart","touchEventsData","touches","originalEvent","isTouchEvent","type","which","button","isTouched","isMoved","noSwiping","noSwipingSelector","noSwipingClass","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","threshold","allowThresholdMove","preventDefault","formElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","onTouchMove","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","pow","touchAngle","atan2","PI","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","velocities","position","time","onTouchEnd","currentPos","touchEndTime","timeDiff","lastClickTime","clickTimeout","freeModeMomentum","lastMoveEvent","pop","velocityEvent","distance","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition_1","doBounce","bounceAmount","freeModeMomentumBounceRatio","needsLoopFix","freeModeMomentumBounce","freeModeSticky","longSwipesMs","stopIndex","groupSize","ratio","longSwipes","longSwipesRatio","shortSwipes","onResize","breakpoints","setBreakpoint","newTranslate","min","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","attachEvents","touchEvents","wrapperEl","touchEventsTarget","start","passiveListeners","passive","move","end","detachEvents","_a","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams_1","paramValue","breakpointParams","originalParams","directionChanged","needsReLoop","changeDirection","points","point","sort","b","breakpointsInverse","innerWidth","addClasses","classNames","suffixes","suffix","containerModifierClass","removeClasses","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","preloadImages","imagesLoaded","imagesToLoad","updateOnImagesReady","currentSrc","images","wasLocked","navigation","checkOverflow$1","defaults","init","uniqueNavElements","wrapperClass","prototypes","extendedDefaults","Swiper","_super","_this","prototypeGroup","protoMethod","moduleParamName","swiperParams","passedParams","swipers_1","containerEl","newParams","touchEventsTouch","touchEventsDesktop","spv","breakLoop","translated","translateValue","newDirection","needUpdate","currentDirection","slideEl","destroy","deleteInstance","cleanStyles","extendDefaults","newDefaults","Device$1","Support$1","support","Browser$1","browser","Resize","resize","resizeHandler","orientationChangeHandler","Observer","func","MutationObserver","WebkitMutationObserver","attach","options","ObserverFunc","mutations","observerUpdate","requestAnimationFrame","observe","attributes","childList","characterData","observers","observeParents","containerParents","observeSlideChildren","disconnect","Observer$1","isEventSupported","isSupported","element","implementation","hasFeature","Mousewheel","lastScrollTime","PIXEL_STEP","LINE_HEIGHT","PAGE_HEIGHT","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","handle","mousewheel","releaseOnEdges","delta","rtlFactor","forceToAxis","invert","sensitivity","timeout","autoplayDisableOnInteraction","stop","getTime","returnValue","enable","eventsTarged","disable","Pagination","pagination","current","total","paginationType","bullets","firstIndex_1","lastIndex_1","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bulletActiveClass","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","currentClass","formatFractionCurrent","totalClass","formatFractionTotal","progressbarDirection","progressbarOpposite","scale","scaleX","scaleY","progressbarFillClass","renderCustom","lockClass","render","paginationHTML","numberOfBullets","renderBullet","bulletClass","bulletElement","renderFraction","renderProgressbar","clickable","clickableClass","modifierClass","progressbarOppositeClass","hiddenClass","hideOnClick","number","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","click","isHidden","Scrollbar","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","hide","opacity","divider","moveDivider","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","dragStartPos","onDragStart","dragTimeout","onDragMove","onDragEnd","snapOnRelease","enableDraggable","activeListener","disableDraggable","$swiperEl","dragClass","dragEl","draggable","Zoom","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","zoom","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","$slideEl","$imageEl","$imageWrapEl","containerClass","maxRatio","isScaling","onGestureChange","scaleMove","currentScale","minRatio","onGestureEnd","changedTouches","touchesStart","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","onTransitionEnd","out","in","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","zoomedSlideClass","touchStart","touchEnd","doubleTap","Autoplay","$activeSlideEl","reverseDirection","stopOnLastSlide","pause","waitForTransition","disableOnInteraction","beforeTransitionStart","sliderFirstMove"],"mappings":"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","file":"js/chunk-2d217c19.70a41f67.js","sourcesContent":["import { __extends, __spreadArrays } from \"tslib\";\n/**\n * SSR Window 2.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: May 12, 2020\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(function (key) {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nvar doc = typeof document !== 'undefined' ? document : {};\nvar ssrDocument = {\n body: {},\n addEventListener: function () { },\n removeEventListener: function () { },\n activeElement: {\n blur: function () { },\n nodeName: '',\n },\n querySelector: function () {\n return null;\n },\n querySelectorAll: function () {\n return [];\n },\n getElementById: function () {\n return null;\n },\n createEvent: function () {\n return {\n initEvent: function () { },\n };\n },\n createElement: function () {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function () { },\n getElementsByTagName: function () {\n return [];\n },\n };\n },\n createElementNS: function () {\n return {};\n },\n importNode: function () {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nextend(doc, ssrDocument);\nvar win = typeof window !== 'undefined' ? window : {};\nvar ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState: function () { },\n pushState: function () { },\n go: function () { },\n back: function () { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function () { },\n removeEventListener: function () { },\n getComputedStyle: function () {\n return {\n getPropertyValue: function () {\n return '';\n },\n };\n },\n Image: function () { },\n Date: function () { },\n screen: {},\n setTimeout: function () { },\n clearTimeout: function () { },\n matchMedia: function () {\n return {};\n },\n};\nextend(win, ssrWindow);\n/**\n * Dom7 2.1.5\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * http://framework7.io/docs/dom.html\n *\n * Copyright 2020, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n *\n * Licensed under MIT\n *\n * Released on: May 15, 2020\n */\nvar Dom7 = /** @class */ (function () {\n function Dom7(arr) {\n var self = this;\n // Create array-like object\n for (var i = 0; i < arr.length; i += 1) {\n self[i] = arr[i];\n }\n self.length = arr.length;\n // Return collection with methods\n return this;\n }\n return Dom7;\n}());\nfunction $(selector, context) {\n var arr = [];\n var i = 0;\n if (selector && !context) {\n if (selector instanceof Dom7) {\n return selector;\n }\n }\n if (selector) {\n // String\n if (typeof selector === 'string') {\n var els = void 0;\n var tempParent = void 0;\n var html_1 = selector.trim();\n if (html_1.indexOf('<') >= 0 && html_1.indexOf('>') >= 0) {\n var toCreate = 'div';\n if (html_1.indexOf(':~]/)) {\n // Pure ID selector\n els = [doc.getElementById(selector.trim().split('#')[1])];\n }\n else {\n // Other selectors\n els = (context || doc).querySelectorAll(selector.trim());\n }\n for (i = 0; i < els.length; i += 1) {\n if (els[i])\n arr.push(els[i]);\n }\n }\n }\n else if (selector.nodeType || selector === win || selector === doc) {\n // Node/element\n arr.push(selector);\n }\n else if (selector.length > 0 && selector[0].nodeType) {\n // Array of elements or instance of Dom\n for (i = 0; i < selector.length; i += 1) {\n arr.push(selector[i]);\n }\n }\n }\n return new Dom7(arr);\n}\n$.fn = Dom7.prototype;\n$.Class = Dom7;\n$.Dom7 = Dom7;\nfunction unique(arr) {\n var uniqueArray = [];\n for (var i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1)\n uniqueArray.push(arr[i]);\n }\n return uniqueArray;\n}\n// Classes and attributes\nfunction addClass(className) {\n if (typeof className === 'undefined') {\n return this;\n }\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i += 1) {\n for (var j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined')\n this[j].classList.add(classes[i]);\n }\n }\n return this;\n}\nfunction removeClass(className) {\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i += 1) {\n for (var j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined')\n this[j].classList.remove(classes[i]);\n }\n }\n return this;\n}\nfunction hasClass(className) {\n if (!this[0])\n return false;\n return this[0].classList.contains(className);\n}\nfunction toggleClass(className) {\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i += 1) {\n for (var j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined')\n this[j].classList.toggle(classes[i]);\n }\n }\n return this;\n}\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0])\n return this[0].getAttribute(attrs);\n return undefined;\n }\n // Set attrs\n for (var i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n }\n else {\n // Object\n // eslint-disable-next-line\n for (var attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n}\n// eslint-disable-next-line\nfunction removeAttr(attr) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n return this;\n}\nfunction data(key, value) {\n var el;\n if (typeof value === 'undefined') {\n el = this[0];\n // Get value\n if (el) {\n if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {\n return el.dom7ElementDataStorage[key];\n }\n var dataKey = el.getAttribute(\"data-\" + key);\n if (dataKey) {\n return dataKey;\n }\n return undefined;\n }\n return undefined;\n }\n // Set value\n for (var i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage)\n el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n}\n// Transforms\n// eslint-disable-next-line\nfunction transform(transform) {\n for (var i = 0; i < this.length; i += 1) {\n var elStyle = this[i].style;\n elStyle.webkitTransform = transform;\n elStyle.transform = transform;\n }\n return this;\n}\nfunction transition(duration) {\n if (typeof duration !== 'string') {\n duration = duration + \"ms\"; // eslint-disable-line\n }\n for (var i = 0; i < this.length; i += 1) {\n var elStyle = this[i].style;\n elStyle.webkitTransitionDuration = duration;\n elStyle.transitionDuration = duration;\n }\n return this;\n}\n// Events\nfunction on() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var eventType = args[0], targetSelector = args[1], listener = args[2], capture = args[3];\n if (typeof args[1] === 'function') {\n eventType = args[0], listener = args[1], capture = args[2];\n targetSelector = undefined;\n }\n if (!capture)\n capture = false;\n function handleLiveEvent(e) {\n var target = e.target;\n if (!target)\n return;\n var eventData = e.target.dom7EventData || [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n if ($(target).is(targetSelector))\n listener.apply(target, eventData);\n else {\n var parents_1 = $(target).parents(); // eslint-disable-line\n for (var k = 0; k < parents_1.length; k += 1) {\n if ($(parents_1[k]).is(targetSelector))\n listener.apply(parents_1[k], eventData);\n }\n }\n }\n function handleEvent(e) {\n var eventData = e && e.target ? e.target.dom7EventData || [] : [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n listener.apply(this, eventData);\n }\n var events = eventType.split(' ');\n var j;\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n var event = events[j];\n if (!el.dom7Listeners)\n el.dom7Listeners = {};\n if (!el.dom7Listeners[event])\n el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener: listener,\n proxyListener: handleEvent,\n });\n el.addEventListener(event, handleEvent, capture);\n }\n }\n else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n var event = events[j];\n if (!el.dom7LiveListeners)\n el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event])\n el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener: listener,\n proxyListener: handleLiveEvent,\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n return this;\n}\nfunction off() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var eventType = args[0], targetSelector = args[1], listener = args[2], capture = args[3];\n if (typeof args[1] === 'function') {\n eventType = args[0], listener = args[1], capture = args[2];\n targetSelector = undefined;\n }\n if (!capture)\n capture = false;\n var events = eventType.split(' ');\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n var handlers = void 0;\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n }\n else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n if (handlers && handlers.length) {\n for (var k = handlers.length - 1; k >= 0; k -= 1) {\n var handler = handlers[k];\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n return this;\n}\nfunction trigger() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var events = args[0].split(' ');\n var eventData = args[1];\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n var evt = void 0;\n try {\n evt = new win.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true,\n });\n }\n catch (e) {\n evt = doc.createEvent('Event');\n evt.initEvent(event, true, true);\n evt.detail = eventData;\n }\n // eslint-disable-next-line\n el.dom7EventData = args.filter(function (data, dataIndex) { return dataIndex > 0; });\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n return this;\n}\nfunction transitionEnd(callback) {\n var events = ['webkitTransitionEnd', 'transitionend'];\n var dom = this;\n var i;\n function fireCallBack(e) {\n /* jshint validthis:true */\n if (e.target !== this)\n return;\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n}\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n var styles_1 = this.styles();\n return this[0].offsetWidth + parseFloat(styles_1.getPropertyValue('margin-right')) + parseFloat(styles_1.getPropertyValue('margin-left'));\n }\n return this[0].offsetWidth;\n }\n return null;\n}\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n var styles_2 = this.styles();\n return this[0].offsetHeight + parseFloat(styles_2.getPropertyValue('margin-top')) + parseFloat(styles_2.getPropertyValue('margin-bottom'));\n }\n return this[0].offsetHeight;\n }\n return null;\n}\nfunction offset() {\n if (this.length > 0) {\n var el = this[0];\n var box = el.getBoundingClientRect();\n var body = doc.body;\n var clientTop = el.clientTop || body.clientTop || 0;\n var clientLeft = el.clientLeft || body.clientLeft || 0;\n var scrollTop = el === win ? win.scrollY : el.scrollTop;\n var scrollLeft = el === win ? win.scrollX : el.scrollLeft;\n return {\n top: (box.top + scrollTop) - clientTop,\n left: (box.left + scrollLeft) - clientLeft,\n };\n }\n return null;\n}\nfunction styles() {\n if (this[0])\n return win.getComputedStyle(this[0], null);\n return {};\n}\nfunction css(props, value) {\n var i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n if (this[0])\n return win.getComputedStyle(this[0], null).getPropertyValue(props);\n }\n else {\n for (i = 0; i < this.length; i += 1) {\n // eslint-disable-next-line\n for (var prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n return this;\n }\n return this;\n}\n// Iterate over the collection passing elements to `callback`\nfunction each(callback) {\n // Don't bother continuing without a callback\n if (!callback)\n return this;\n // Iterate over the current collection\n for (var i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], i, this[i]) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n}\n// eslint-disable-next-line\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : undefined;\n }\n for (var i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n return this;\n}\n// eslint-disable-next-line\nfunction text(text) {\n if (typeof text === 'undefined') {\n if (this[0]) {\n return this[0].textContent.trim();\n }\n return null;\n }\n for (var i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n return this;\n}\nfunction is(selector) {\n var el = this[0];\n var compareWith;\n var i;\n if (!el || typeof selector === 'undefined')\n return false;\n if (typeof selector === 'string') {\n if (el.matches)\n return el.matches(selector);\n else if (el.webkitMatchesSelector)\n return el.webkitMatchesSelector(selector);\n else if (el.msMatchesSelector)\n return el.msMatchesSelector(selector);\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el)\n return true;\n }\n return false;\n }\n else if (selector === doc)\n return el === doc;\n else if (selector === win)\n return el === win;\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el)\n return true;\n }\n return false;\n }\n return false;\n}\nfunction index() {\n var child = this[0];\n var i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1)\n i += 1;\n }\n return i;\n }\n return undefined;\n}\n// eslint-disable-next-line\nfunction eq(index) {\n if (typeof index === 'undefined')\n return this;\n var length = this.length;\n var returnIndex;\n if (index > length - 1) {\n return new Dom7([]);\n }\n if (index < 0) {\n returnIndex = length + index;\n if (returnIndex < 0)\n return new Dom7([]);\n return new Dom7([this[returnIndex]]);\n }\n return new Dom7([this[index]]);\n}\nfunction append() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var newChild;\n for (var k = 0; k < args.length; k += 1) {\n newChild = args[k];\n for (var i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = doc.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n }\n else if (newChild instanceof Dom7) {\n for (var j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n }\n else {\n this[i].appendChild(newChild);\n }\n }\n }\n return this;\n}\nfunction prepend(newChild) {\n var i;\n var j;\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = doc.createElement('div');\n tempDiv.innerHTML = newChild;\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n }\n else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n }\n else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n return this;\n}\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return new Dom7([this[0].nextElementSibling]);\n }\n return new Dom7([]);\n }\n if (this[0].nextElementSibling)\n return new Dom7([this[0].nextElementSibling]);\n return new Dom7([]);\n }\n return new Dom7([]);\n}\nfunction nextAll(selector) {\n var nextEls = [];\n var el = this[0];\n if (!el)\n return new Dom7([]);\n while (el.nextElementSibling) {\n var next_1 = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if ($(next_1).is(selector))\n nextEls.push(next_1);\n }\n else\n nextEls.push(next_1);\n el = next_1;\n }\n return new Dom7(nextEls);\n}\nfunction prev(selector) {\n if (this.length > 0) {\n var el = this[0];\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return new Dom7([el.previousElementSibling]);\n }\n return new Dom7([]);\n }\n if (el.previousElementSibling)\n return new Dom7([el.previousElementSibling]);\n return new Dom7([]);\n }\n return new Dom7([]);\n}\nfunction prevAll(selector) {\n var prevEls = [];\n var el = this[0];\n if (!el)\n return new Dom7([]);\n while (el.previousElementSibling) {\n var prev_1 = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if ($(prev_1).is(selector))\n prevEls.push(prev_1);\n }\n else\n prevEls.push(prev_1);\n el = prev_1;\n }\n return new Dom7(prevEls);\n}\nfunction parent(selector) {\n var parents = []; // eslint-disable-line\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector))\n parents.push(this[i].parentNode);\n }\n else {\n parents.push(this[i].parentNode);\n }\n }\n }\n return $(unique(parents));\n}\nfunction parents(selector) {\n var parents = []; // eslint-disable-line\n for (var i = 0; i < this.length; i += 1) {\n var parent_1 = this[i].parentNode; // eslint-disable-line\n while (parent_1) {\n if (selector) {\n if ($(parent_1).is(selector))\n parents.push(parent_1);\n }\n else {\n parents.push(parent_1);\n }\n parent_1 = parent_1.parentNode;\n }\n }\n return $(unique(parents));\n}\nfunction closest(selector) {\n var closest = this; // eslint-disable-line\n if (typeof selector === 'undefined') {\n return new Dom7([]);\n }\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n return closest;\n}\nfunction find(selector) {\n var foundElements = [];\n for (var i = 0; i < this.length; i += 1) {\n var found = this[i].querySelectorAll(selector);\n for (var j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n return new Dom7(foundElements);\n}\nfunction children(selector) {\n var children = []; // eslint-disable-line\n for (var i = 0; i < this.length; i += 1) {\n var childNodes = this[i].childNodes;\n for (var j = 0; j < childNodes.length; j += 1) {\n if (!selector) {\n if (childNodes[j].nodeType === 1)\n children.push(childNodes[j]);\n }\n else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n return new Dom7(unique(children));\n}\nfunction remove() {\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode)\n this[i].parentNode.removeChild(this[i]);\n }\n return this;\n}\nfunction add() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var dom = this;\n var i;\n var j;\n for (i = 0; i < args.length; i += 1) {\n var toAdd = $(args[i]);\n for (j = 0; j < toAdd.length; j += 1) {\n dom[dom.length] = toAdd[j];\n dom.length += 1;\n }\n }\n return dom;\n}\n/**\n * SSR Window 1.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2018, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: July 18, 2018\n */\nvar doc$1 = (typeof document === 'undefined') ? {\n body: {},\n addEventListener: function addEventListener() { },\n removeEventListener: function removeEventListener() { },\n activeElement: {\n blur: function blur() { },\n nodeName: '',\n },\n querySelector: function querySelector() {\n return null;\n },\n querySelectorAll: function querySelectorAll() {\n return [];\n },\n getElementById: function getElementById() {\n return null;\n },\n createEvent: function createEvent() {\n return {\n initEvent: function initEvent() { },\n };\n },\n createElement: function createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function setAttribute() { },\n getElementsByTagName: function getElementsByTagName() {\n return [];\n },\n };\n },\n location: { hash: '' },\n} : document; // eslint-disable-line\nvar win$1 = (typeof window === 'undefined') ? {\n document: doc$1,\n navigator: {\n userAgent: '',\n },\n location: {},\n history: {},\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function addEventListener() { },\n removeEventListener: function removeEventListener() { },\n getComputedStyle: function getComputedStyle() {\n return {\n getPropertyValue: function getPropertyValue() {\n return '';\n },\n };\n },\n Image: function Image() { },\n Date: function Date() { },\n screen: {},\n setTimeout: function setTimeout() { },\n clearTimeout: function clearTimeout() { },\n} : window; // eslint-disable-line\n/**\n * Swiper 4.5.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * http://www.idangero.us/swiper/\n *\n * Copyright 2014-2019 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: September 13, 2019\n */\nvar Methods = {\n addClass: addClass,\n removeClass: removeClass,\n hasClass: hasClass,\n toggleClass: toggleClass,\n attr: attr,\n removeAttr: removeAttr,\n data: data,\n transform: transform,\n transition: transition,\n on: on,\n off: off,\n trigger: trigger,\n transitionEnd: transitionEnd,\n outerWidth: outerWidth,\n outerHeight: outerHeight,\n offset: offset,\n css: css,\n each: each,\n html: html,\n text: text,\n is: is,\n index: index,\n eq: eq,\n append: append,\n prepend: prepend,\n next: next,\n nextAll: nextAll,\n prev: prev,\n prevAll: prevAll,\n parent: parent,\n parents: parents,\n closest: closest,\n find: find,\n children: children,\n remove: remove,\n add: add,\n styles: styles,\n};\nObject.keys(Methods).forEach(function (methodName) {\n $.fn[methodName] = $.fn[methodName] || Methods[methodName];\n});\nvar Utils = {\n deleteProps: function (obj) {\n var object = obj;\n Object.keys(object).forEach(function (key) {\n try {\n object[key] = null;\n }\n catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n }\n catch (e) {\n // something got wrong\n }\n });\n },\n nextTick: function (callback, delay) {\n if (delay === void 0) { delay = 0; }\n return setTimeout(callback, delay);\n },\n now: function () {\n return Date.now();\n },\n getTranslate: function (el, axis) {\n if (axis === void 0) { axis = 'x'; }\n var matrix;\n var curTransform;\n var transformMatrix;\n var curStyle = win$1.getComputedStyle(el, null);\n if (win$1.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(function (a) { return a.replace(',', '.'); }).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new win$1.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n }\n else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (win$1.WebKitCSSMatrix)\n curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16)\n curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else\n curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (win$1.WebKitCSSMatrix)\n curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16)\n curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else\n curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n },\n parseUrlQuery: function (url) {\n var query = {};\n var urlToParse = url || win$1.location.href;\n var i;\n var params;\n var param;\n var length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter(function (paramsPart) { return paramsPart !== ''; });\n length = params.length;\n for (i = 0; i < length; i += 1) {\n param = params[i].replace(/#\\S+/g, '').split('=');\n query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';\n }\n }\n return query;\n },\n isObject: function (o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n },\n extend: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var to = Object(args[0]);\n for (var i = 1; i < args.length; i += 1) {\n var nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n var keysArray = Object.keys(Object(nextSource));\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n Utils.extend(to[nextKey], nextSource[nextKey]);\n }\n else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n Utils.extend(to[nextKey], nextSource[nextKey]);\n }\n else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n },\n};\nvar Support = (function Support() {\n var testDiv = doc$1.createElement('div');\n return {\n touch: (win$1.Modernizr && win$1.Modernizr.touch === true) || (function checkTouch() {\n return !!((win$1.navigator.maxTouchPoints > 0) || ('ontouchstart' in win$1) || (win$1.DocumentTouch && doc$1 instanceof win$1.DocumentTouch));\n }()),\n pointerEvents: !!(win$1.navigator.pointerEnabled || win$1.PointerEvent || ('maxTouchPoints' in win$1.navigator && win$1.navigator.maxTouchPoints > 0)),\n prefixedPointerEvents: !!win$1.navigator.msPointerEnabled,\n transition: (function checkTransition() {\n var style = testDiv.style;\n return ('transition' in style || 'webkitTransition' in style || 'MozTransition' in style);\n }()),\n transforms3d: (win$1.Modernizr && win$1.Modernizr.csstransforms3d === true) || (function checkTransforms3d() {\n var style = testDiv.style;\n return ('webkitPerspective' in style || 'MozPerspective' in style || 'OPerspective' in style || 'MsPerspective' in style || 'perspective' in style);\n }()),\n flexbox: (function checkFlexbox() {\n var style = testDiv.style;\n var styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' ');\n for (var i = 0; i < styles.length; i += 1) {\n if (styles[i] in style)\n return true;\n }\n return false;\n }()),\n observer: (function checkObserver() {\n return ('MutationObserver' in win$1 || 'WebkitMutationObserver' in win$1);\n }()),\n passiveListener: (function checkPassiveListener() {\n var supportsPassive = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get: function () {\n supportsPassive = true;\n },\n });\n win$1.addEventListener('testPassiveListener', null, opts);\n }\n catch (e) {\n // No support\n }\n return supportsPassive;\n }()),\n gestures: (function checkGestures() {\n return 'ongesturestart' in win$1;\n }()),\n };\n}());\nvar Browser = (function Browser() {\n function isSafari() {\n var ua = win$1.navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n }\n return {\n isIE: !!win$1.navigator.userAgent.match(/Trident/g) || !!win$1.navigator.userAgent.match(/MSIE/g),\n isEdge: !!win$1.navigator.userAgent.match(/Edge/g),\n isSafari: isSafari(),\n isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(win$1.navigator.userAgent),\n };\n}());\nvar SwiperClass = /** @class */ (function () {\n function SwiperClass(params) {\n if (params === void 0) { params = {}; }\n var self = this;\n self.params = params;\n // Events\n self.eventsListeners = {};\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach(function (eventName) {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n }\n SwiperClass.prototype.on = function (events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function')\n return self;\n var method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(function (event) {\n if (!self.eventsListeners[event])\n self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n };\n SwiperClass.prototype.once = function (events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function')\n return self;\n function onceHandler() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n handler.apply(self, args);\n self.off(events, onceHandler);\n if (onceHandler.f7proxy) {\n delete onceHandler.f7proxy;\n }\n }\n onceHandler.f7proxy = handler;\n return self.on(events, onceHandler, priority);\n };\n SwiperClass.prototype.off = function (events, handler) {\n var self = this;\n if (!self.eventsListeners)\n return self;\n events.split(' ').forEach(function (event) {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n }\n else if (self.eventsListeners[event] && self.eventsListeners[event].length) {\n self.eventsListeners[event].forEach(function (eventHandler, index) {\n if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n };\n SwiperClass.prototype.emit = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var self = this;\n if (!self.eventsListeners)\n return self;\n var events;\n var data;\n var context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n }\n else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n var eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(function (event) {\n if (self.eventsListeners && self.eventsListeners[event]) {\n var handlers_1 = [];\n self.eventsListeners[event].forEach(function (eventHandler) {\n handlers_1.push(eventHandler);\n });\n handlers_1.forEach(function (eventHandler) {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n };\n SwiperClass.prototype.useModulesParams = function (instanceParams) {\n var instance = this;\n if (!instance.modules)\n return;\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n Utils.extend(instanceParams, module.params);\n }\n });\n };\n SwiperClass.prototype.useModules = function (modulesParams) {\n if (modulesParams === void 0) { modulesParams = {}; }\n var instance = this;\n if (!instance.modules)\n return;\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName];\n var moduleParams = modulesParams[moduleName] || {};\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach(function (modulePropName) {\n var moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n }\n else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach(function (moduleEventName) {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n };\n Object.defineProperty(SwiperClass, \"components\", {\n set: function (components) {\n var Class = this;\n if (!Class.use)\n return;\n Class.use(components);\n },\n enumerable: true,\n configurable: true\n });\n SwiperClass.installModule = function (module) {\n var params = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n params[_i - 1] = arguments[_i];\n }\n var Class = this;\n if (!Class.prototype.modules)\n Class.prototype.modules = {};\n var name = module.name || (Object.keys(Class.prototype.modules).length + \"_\" + Utils.now());\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach(function (key) {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach(function (key) {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n module.install.apply(Class, params);\n }\n return Class;\n };\n SwiperClass.use = function (module) {\n var params = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n params[_i - 1] = arguments[_i];\n }\n var Class = this;\n if (Array.isArray(module)) {\n module.forEach(function (m) { return Class.installModule(m); });\n return Class;\n }\n return Class.installModule.apply(Class, __spreadArrays([module], params));\n };\n return SwiperClass;\n}());\nfunction updateSize() {\n var swiper = this;\n var width;\n var height;\n var $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined') {\n width = swiper.params.width;\n }\n else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined') {\n height = swiper.params.height;\n }\n else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n // Subtract paddings\n width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n Utils.extend(swiper, {\n width: width,\n height: height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\nfunction updateSlides() {\n var swiper = this;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl, swiperSize = swiper.size, rtl = swiper.rtlTranslate, wrongRTL = swiper.wrongRTL;\n var isVirtual = swiper.virtual && params.virtual.enabled;\n var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n var slides = $wrapperEl.children(\".\" + swiper.params.slideClass);\n var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n var snapGrid = [];\n var slidesGrid = [];\n var slidesSizesGrid = [];\n var offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n var offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n var previousSnapGridLength = swiper.snapGrid.length;\n var previousSlidesGridLength = swiper.snapGrid.length;\n var spaceBetween = params.spaceBetween;\n var slidePosition = -offsetBefore;\n var prevSlideSize = 0;\n var index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n swiper.virtualSize = -spaceBetween;\n // reset margins\n if (rtl)\n slides.css({ marginLeft: '', marginTop: '' });\n else\n slides.css({ marginRight: '', marginBottom: '' });\n var slidesNumberEvenToRows;\n if (params.slidesPerColumn > 1) {\n if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n slidesNumberEvenToRows = slidesLength;\n }\n else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n }\n // Calc slides\n var slideSize;\n var slidesPerColumn = params.slidesPerColumn;\n var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n for (var i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n var slide_1 = slides.eq(i);\n if (params.slidesPerColumn > 1) {\n // Set slides order\n var newSlideOrderIndex = void 0;\n var column = void 0;\n var row = void 0;\n if ((params.slidesPerColumnFill === 'column')\n || (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1)) {\n if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - (column * slidesPerColumn);\n if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n row += 1;\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n }\n else {\n var groupIndex = Math.floor(i / params.slidesPerGroup);\n row = Math.floor(i / params.slidesPerView) - groupIndex * params.slidesPerColumn;\n column = i - row * params.slidesPerView - groupIndex * params.slidesPerView;\n }\n newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n slide_1\n .css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n }\n else {\n row = Math.floor(i / slidesPerRow);\n column = i - (row * slidesPerRow);\n }\n slide_1\n .css(\"margin-\" + (swiper.isHorizontal() ? 'top' : 'left'), (row !== 0 && params.spaceBetween) && (params.spaceBetween + \"px\"))\n .attr('data-swiper-column', column)\n .attr('data-swiper-row', row);\n }\n if (slide_1.css('display') === 'none')\n continue; // eslint-disable-line\n if (params.slidesPerView === 'auto') {\n var slideStyles = win$1.getComputedStyle(slide_1[0], null);\n var currentTransform = slide_1[0].style.transform;\n var currentWebKitTransform = slide_1[0].style.webkitTransform;\n if (currentTransform) {\n slide_1[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide_1[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal()\n ? slide_1.outerWidth(true)\n : slide_1.outerHeight(true);\n }\n else {\n // eslint-disable-next-line\n if (swiper.isHorizontal()) {\n var width = parseFloat(slideStyles.getPropertyValue('width'));\n var paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));\n var paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));\n var marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));\n var marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));\n var boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box' && !Browser.isIE) {\n slideSize = width + marginLeft + marginRight;\n }\n else {\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;\n }\n }\n else {\n var height = parseFloat(slideStyles.getPropertyValue('height'));\n var paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));\n var paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));\n var marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));\n var marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n var boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box' && !Browser.isIE) {\n slideSize = height + marginTop + marginBottom;\n }\n else {\n slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;\n }\n }\n }\n if (currentTransform) {\n slide_1[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide_1[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths)\n slideSize = Math.floor(slideSize);\n }\n else {\n slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;\n if (params.roundLengths)\n slideSize = Math.floor(slideSize);\n if (slides[i]) {\n if (swiper.isHorizontal()) {\n slides[i].style.width = slideSize + \"px\";\n }\n else {\n slides[i].style.height = slideSize + \"px\";\n }\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;\n if (prevSlideSize === 0 && i !== 0)\n slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n if (i === 0)\n slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000)\n slidePosition = 0;\n if (params.roundLengths)\n slidePosition = Math.floor(slidePosition);\n if ((index) % params.slidesPerGroup === 0)\n snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n }\n else {\n if (params.roundLengths)\n slidePosition = Math.floor(slidePosition);\n if ((index) % params.slidesPerGroup === 0)\n snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n var newSlidesGrid;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: swiper.virtualSize + params.spaceBetween + \"px\" });\n }\n if (!Support.flexbox || params.setWrapperSize) {\n if (swiper.isHorizontal())\n $wrapperEl.css({ width: swiper.virtualSize + params.spaceBetween + \"px\" });\n else\n $wrapperEl.css({ height: swiper.virtualSize + params.spaceBetween + \"px\" });\n }\n if (params.slidesPerColumn > 1) {\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n if (swiper.isHorizontal())\n $wrapperEl.css({ width: swiper.virtualSize + params.spaceBetween + \"px\" });\n else\n $wrapperEl.css({ height: swiper.virtualSize + params.spaceBetween + \"px\" });\n if (params.centeredSlides) {\n newSlidesGrid = [];\n for (var i = 0; i < snapGrid.length; i += 1) {\n var slidesGridItem = snapGrid[i];\n if (params.roundLengths)\n slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0])\n newSlidesGrid.push(slidesGridItem);\n }\n snapGrid = newSlidesGrid;\n }\n }\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n for (var i = 0; i < snapGrid.length; i += 1) {\n var slidesGridItem = snapGrid[i];\n if (params.roundLengths)\n slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0)\n snapGrid = [0];\n if (params.spaceBetween !== 0) {\n if (swiper.isHorizontal()) {\n if (rtl)\n slides.css({ marginLeft: spaceBetween + \"px\" });\n else\n slides.css({ marginRight: spaceBetween + \"px\" });\n }\n else\n slides.css({ marginBottom: spaceBetween + \"px\" });\n }\n if (params.centerInsufficientSlides) {\n var allSlidesSize_1 = 0;\n slidesSizesGrid.forEach(function (slideSizeValue) {\n allSlidesSize_1 += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize_1 -= params.spaceBetween;\n if (allSlidesSize_1 < swiperSize) {\n var allSlidesOffset_1 = (swiperSize - allSlidesSize_1) / 2;\n snapGrid.forEach(function (snap, snapIndex) {\n snapGrid[snapIndex] = snap - allSlidesOffset_1;\n });\n slidesGrid.forEach(function (snap, snapIndex) {\n slidesGrid[snapIndex] = snap + allSlidesOffset_1;\n });\n }\n }\n Utils.extend(swiper, {\n slides: slides,\n snapGrid: snapGrid,\n slidesGrid: slidesGrid,\n slidesSizesGrid: slidesSizesGrid,\n });\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow)\n swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n}\nfunction updateAutoHeight(speed) {\n var swiper = this;\n var activeSlides = [];\n var newHeight = 0;\n var i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n }\n else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n var index_1 = swiper.activeIndex + i;\n if (index_1 > swiper.slides.length)\n break;\n activeSlides.push(swiper.slides.eq(index_1)[0]);\n }\n }\n else {\n activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n }\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n var height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n // Update Height\n if (newHeight)\n swiper.$wrapperEl.css('height', newHeight + \"px\");\n}\nfunction updateSlidesOffset() {\n var swiper = this;\n var slides = swiper.slides;\n for (var i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) { translate = (this && this.translate) || 0; }\n var swiper = this;\n var params = swiper.params;\n var slides = swiper.slides, rtl = swiper.rtlTranslate;\n if (slides.length === 0)\n return;\n if (typeof slides[0].swiperSlideOffset === 'undefined')\n swiper.updateSlidesOffset();\n var offsetCenter = -translate;\n if (rtl)\n offsetCenter = translate;\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n for (var i = 0; i < slides.length; i += 1) {\n var slide_2 = slides[i];\n var slideProgress = ((offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide_2.swiperSlideOffset) / (slide_2.swiperSlideSize + params.spaceBetween);\n if (params.watchSlidesVisibility) {\n var slideBefore = -(offsetCenter - slide_2.swiperSlideOffset);\n var slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n var isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)\n || (slideAfter > 1 && slideAfter <= swiper.size)\n || (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide_2);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n }\n slide_2.progress = rtl ? -slideProgress : slideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\nfunction updateProgress(translate) {\n if (translate === void 0) { translate = (this && this.translate) || 0; }\n var swiper = this;\n var params = swiper.params;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n var progress = swiper.progress, isBeginning = swiper.isBeginning, isEnd = swiper.isEnd;\n var wasBeginning = isBeginning;\n var wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n }\n else {\n progress = (translate - swiper.minTranslate()) / (translatesDiff);\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Utils.extend(swiper, {\n progress: progress,\n isBeginning: isBeginning,\n isEnd: isEnd,\n });\n if (params.watchSlidesProgress || params.watchSlidesVisibility)\n swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\nfunction updateSlidesClasses() {\n var swiper = this;\n var slides = swiper.slides, params = swiper.params, $wrapperEl = swiper.$wrapperEl, activeIndex = swiper.activeIndex, realIndex = swiper.realIndex;\n var isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(params.slideActiveClass + \" \" + params.slideNextClass + \" \" + params.slidePrevClass + \" \" + params.slideDuplicateActiveClass + \" \" + params.slideDuplicateNextClass + \" \" + params.slideDuplicatePrevClass);\n var activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(\".\" + params.slideClass + \"[data-swiper-slide-index=\\\"\" + activeIndex + \"\\\"]\");\n }\n else {\n activeSlide = slides.eq(activeIndex);\n }\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\".\" + params.slideClass + \":not(.\" + params.slideDuplicateClass + \")[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]\")\n .addClass(params.slideDuplicateActiveClass);\n }\n else {\n $wrapperEl\n .children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]\")\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n var nextSlide = activeSlide.nextAll(\".\" + params.slideClass).eq(0).addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n var prevSlide = activeSlide.prevAll(\".\" + params.slideClass).eq(0).addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\".\" + params.slideClass + \":not(.\" + params.slideDuplicateClass + \")[data-swiper-slide-index=\\\"\" + nextSlide.attr('data-swiper-slide-index') + \"\\\"]\")\n .addClass(params.slideDuplicateNextClass);\n }\n else {\n $wrapperEl\n .children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + nextSlide.attr('data-swiper-slide-index') + \"\\\"]\")\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(\".\" + params.slideClass + \":not(.\" + params.slideDuplicateClass + \")[data-swiper-slide-index=\\\"\" + prevSlide.attr('data-swiper-slide-index') + \"\\\"]\")\n .addClass(params.slideDuplicatePrevClass);\n }\n else {\n $wrapperEl\n .children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + prevSlide.attr('data-swiper-slide-index') + \"\\\"]\")\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n}\nfunction updateActiveIndex(newActiveIndex) {\n var swiper = this;\n var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n var slidesGrid = swiper.slidesGrid, snapGrid = swiper.snapGrid, params = swiper.params, previousIndex = swiper.activeIndex, previousRealIndex = swiper.realIndex, previousSnapIndex = swiper.snapIndex;\n var activeIndex = newActiveIndex;\n var snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (var i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {\n activeIndex = i;\n }\n else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n }\n else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined')\n activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n }\n else {\n snapIndex = Math.floor(activeIndex / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length)\n snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n // Get real index\n var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Utils.extend(swiper, {\n snapIndex: snapIndex,\n realIndex: realIndex,\n previousIndex: previousIndex,\n activeIndex: activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\nfunction updateClickedSlide(e) {\n var swiper = this;\n var params = swiper.params;\n var slide = $(e.target).closest(\".\" + params.slideClass)[0];\n var slideFound = false;\n if (slide) {\n for (var i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide)\n slideFound = true;\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n }\n else {\n swiper.clickedIndex = $(slide).index();\n }\n }\n else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\nvar update = {\n updateSize: updateSize,\n updateSlides: updateSlides,\n updateAutoHeight: updateAutoHeight,\n updateSlidesOffset: updateSlidesOffset,\n updateSlidesProgress: updateSlidesProgress,\n updateProgress: updateProgress,\n updateSlidesClasses: updateSlidesClasses,\n updateActiveIndex: updateActiveIndex,\n updateClickedSlide: updateClickedSlide,\n};\nfunction getTranslate(axis) {\n if (axis === void 0) { axis = this.isHorizontal() ? 'x' : 'y'; }\n var swiper = this;\n var params = swiper.params, rtl = swiper.rtlTranslate, translate = swiper.translate, $wrapperEl = swiper.$wrapperEl;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n var currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n if (rtl)\n currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\nfunction setTranslate(translate, byController) {\n var swiper = this;\n var rtl = swiper.rtlTranslate, params = swiper.params, $wrapperEl = swiper.$wrapperEl, progress = swiper.progress;\n var x = 0;\n var y = 0;\n var z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n }\n else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n if (!params.virtualTranslate) {\n if (Support.transforms3d)\n $wrapperEl.transform(\"translate3d(\" + x + \"px, \" + y + \"px, \" + z + \"px)\");\n else\n $wrapperEl.transform(\"translate(\" + x + \"px, \" + y + \"px)\");\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n // Check if we need to update progress\n var newProgress;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n }\n else {\n newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\nfunction minTranslate() {\n return (-this.snapGrid[0]);\n}\nfunction maxTranslate() {\n return (-this.snapGrid[this.snapGrid.length - 1]);\n}\nvar translate = {\n getTranslate: getTranslate,\n setTranslate: setTranslate,\n minTranslate: minTranslate,\n maxTranslate: maxTranslate,\n};\nfunction setTransition(duration, byController) {\n var swiper = this;\n swiper.$wrapperEl.transition(duration);\n swiper.emit('setTransition', duration, byController);\n}\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) { runCallbacks = true; }\n var swiper = this;\n var activeIndex = swiper.activeIndex, params = swiper.params, previousIndex = swiper.previousIndex;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n var dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex)\n dir = 'next';\n else if (activeIndex < previousIndex)\n dir = 'prev';\n else\n dir = 'reset';\n }\n swiper.emit('transitionStart');\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n swiper.emit('slideChangeTransitionStart');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n }\n else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n}\nfunction transitionEnd$1(runCallbacks, direction) {\n if (runCallbacks === void 0) { runCallbacks = true; }\n var swiper = this;\n var activeIndex = swiper.activeIndex, previousIndex = swiper.previousIndex;\n swiper.animating = false;\n swiper.setTransition(0);\n var dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex)\n dir = 'next';\n else if (activeIndex < previousIndex)\n dir = 'prev';\n else\n dir = 'reset';\n }\n swiper.emit('transitionEnd');\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n swiper.emit('slideChangeTransitionEnd');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n }\n else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n}\nvar transition$1 = {\n setTransition: setTransition,\n transitionStart: transitionStart,\n transitionEnd: transitionEnd$1,\n};\nfunction slideTo(index, speed, runCallbacks, internal) {\n if (index === void 0) { index = 0; }\n if (speed === void 0) { speed = this.params.speed; }\n if (runCallbacks === void 0) { runCallbacks = true; }\n var swiper = this;\n var slideIndex = index;\n if (slideIndex < 0)\n slideIndex = 0;\n var params = swiper.params, snapGrid = swiper.snapGrid, slidesGrid = swiper.slidesGrid, previousIndex = swiper.previousIndex, activeIndex = swiper.activeIndex, rtl = swiper.rtlTranslate;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n var snapIndex = Math.floor(slideIndex / params.slidesPerGroup);\n if (snapIndex >= snapGrid.length)\n snapIndex = snapGrid.length - 1;\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n var translate = -snapGrid[snapIndex];\n // Update progress\n swiper.updateProgress(translate);\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (var i = 0; i < slidesGrid.length; i += 1) {\n if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex)\n return false;\n }\n }\n var direction;\n if (slideIndex > activeIndex)\n direction = 'next';\n else if (slideIndex < activeIndex)\n direction = 'prev';\n else\n direction = 'reset';\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (speed === 0 || !Support.transition) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed)\n return;\n if (e.target !== this)\n return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n return true;\n}\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) { index = 0; }\n if (speed === void 0) { speed = this.params.speed; }\n if (runCallbacks === void 0) { runCallbacks = true; }\n var swiper = this;\n var newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) { speed = this.params.speed; }\n if (runCallbacks === void 0) { runCallbacks = true; }\n var swiper = this;\n var params = swiper.params, animating = swiper.animating;\n if (params.loop) {\n if (animating)\n return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);\n}\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) { speed = this.params.speed; }\n if (runCallbacks === void 0) { runCallbacks = true; }\n var swiper = this;\n var params = swiper.params, animating = swiper.animating, snapGrid = swiper.snapGrid, slidesGrid = swiper.slidesGrid, rtlTranslate = swiper.rtlTranslate;\n if (params.loop) {\n if (animating)\n return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n var translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0)\n return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n var normalizedTranslate = normalize(translate);\n var normalizedSnapGrid = snapGrid.map(function (val) { return normalize(val); });\n var normalizedSlidesGrid = slidesGrid.map(function (val) { return normalize(val); });\n var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n var prevIndex;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0)\n prevIndex = swiper.activeIndex - 1;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) { speed = this.params.speed; }\n if (runCallbacks === void 0) { runCallbacks = true; }\n var swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal) {\n if (speed === void 0) { speed = this.params.speed; }\n if (runCallbacks === void 0) { runCallbacks = true; }\n var swiper = this;\n var index = swiper.activeIndex;\n var snapIndex = Math.floor(index / swiper.params.slidesPerGroup);\n if (snapIndex < swiper.snapGrid.length - 1) {\n var translate_1 = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n var currentSnap = swiper.snapGrid[snapIndex];\n var nextSnap = swiper.snapGrid[snapIndex + 1];\n if ((translate_1 - currentSnap) > (nextSnap - currentSnap) / 2) {\n index = swiper.params.slidesPerGroup;\n }\n }\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\nfunction slideToClickedSlide() {\n var swiper = this;\n var params = swiper.params, $wrapperEl = swiper.$wrapperEl;\n var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n var slideToIndex = swiper.clickedIndex;\n var realIndex;\n if (params.loop) {\n if (swiper.animating)\n return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if ((slideToIndex < swiper.loopedSlides - (slidesPerView / 2))\n || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(\".\" + params.slideClass + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + params.slideDuplicateClass + \")\")\n .eq(0)\n .index();\n Utils.nextTick(function () {\n swiper.slideTo(slideToIndex);\n });\n }\n else {\n swiper.slideTo(slideToIndex);\n }\n }\n else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(\".\" + params.slideClass + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + params.slideDuplicateClass + \")\")\n .eq(0)\n .index();\n Utils.nextTick(function () {\n swiper.slideTo(slideToIndex);\n });\n }\n else {\n swiper.slideTo(slideToIndex);\n }\n }\n else {\n swiper.slideTo(slideToIndex);\n }\n}\nvar slide = {\n slideTo: slideTo,\n slideToLoop: slideToLoop,\n slideNext: slideNext,\n slidePrev: slidePrev,\n slideReset: slideReset,\n slideToClosest: slideToClosest,\n slideToClickedSlide: slideToClickedSlide,\n};\nfunction loopCreate() {\n var swiper = this;\n var params = swiper.params, $wrapperEl = swiper.$wrapperEl;\n // Remove duplicated slides\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass).remove();\n var slides = $wrapperEl.children(\".\" + params.slideClass);\n if (params.loopFillGroupWithBlank) {\n var blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (var i = 0; i < blankSlidesNum; i += 1) {\n var blankNode = $(doc$1.createElement('div')).addClass(params.slideClass + \" \" + params.slideBlankClass);\n $wrapperEl.append(blankNode);\n }\n slides = $wrapperEl.children(\".\" + params.slideClass);\n }\n }\n if (params.slidesPerView === 'auto' && !params.loopedSlides)\n params.loopedSlides = slides.length;\n swiper.loopedSlides = parseInt(params.loopedSlides || params.slidesPerView, 10);\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n var prependSlides = [];\n var appendSlides = [];\n slides.each(function (index, el) {\n var slide = $(el);\n if (index < swiper.loopedSlides)\n appendSlides.push(el);\n if (index < slides.length && index >= slides.length - swiper.loopedSlides)\n prependSlides.push(el);\n slide.attr('data-swiper-slide-index', index);\n });\n for (var i = 0; i < appendSlides.length; i += 1) {\n $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (var i = prependSlides.length - 1; i >= 0; i -= 1) {\n $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\nfunction loopFix() {\n var swiper = this;\n var params = swiper.params, activeIndex = swiper.activeIndex, slides = swiper.slides, loopedSlides = swiper.loopedSlides, allowSlidePrev = swiper.allowSlidePrev, allowSlideNext = swiper.allowSlideNext, snapGrid = swiper.snapGrid, rtl = swiper.rtlTranslate;\n var newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n var snapTranslate = -snapGrid[activeIndex];\n var diff = snapTranslate - swiper.getTranslate();\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n newIndex += loopedSlides;\n var slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n else if ((params.slidesPerView === 'auto' && activeIndex >= loopedSlides * 2) || (activeIndex >= slides.length - loopedSlides)) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n var slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n}\nfunction loopDestroy() {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl, params = swiper.params, slides = swiper.slides;\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \",.\" + params.slideClass + \".\" + params.slideBlankClass).remove();\n slides.removeAttr('data-swiper-slide-index');\n}\nvar loop = {\n loopCreate: loopCreate,\n loopFix: loopFix,\n loopDestroy: loopDestroy,\n};\nfunction setGrabCursor(moving) {\n var swiper = this;\n if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked))\n return;\n var el = swiper.el;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\nfunction unsetGrabCursor() {\n var swiper = this;\n if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked))\n return;\n swiper.el.style.cursor = '';\n}\nvar grabCursor = {\n setGrabCursor: setGrabCursor,\n unsetGrabCursor: unsetGrabCursor,\n};\nfunction appendSlide(slides) {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl, params = swiper.params;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i])\n $wrapperEl.append(slides[i]);\n }\n }\n else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n}\nfunction prependSlide(slides) {\n var swiper = this;\n var params = swiper.params, $wrapperEl = swiper.$wrapperEl, activeIndex = swiper.activeIndex;\n if (params.loop) {\n swiper.loopDestroy();\n }\n var newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i])\n $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n }\n else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\nfunction addSlide(index, slides) {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl, params = swiper.params, activeIndex = swiper.activeIndex;\n var activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(\".\" + params.slideClass);\n }\n var baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n var slidesBuffer = [];\n for (var i = baseLength - 1; i >= index; i -= 1) {\n var currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i])\n $wrapperEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n }\n else {\n $wrapperEl.append(slides);\n }\n for (var i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n }\n else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\nfunction removeSlide(slidesIndexes) {\n var swiper = this;\n var params = swiper.params, $wrapperEl = swiper.$wrapperEl, activeIndex = swiper.activeIndex;\n var activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(\".\" + params.slideClass);\n }\n var newActiveIndex = activeIndexBuffer;\n var indexToRemove;\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (var i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove])\n swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex)\n newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove])\n swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex)\n newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n }\n else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\nfunction removeAllSlides() {\n var swiper = this;\n var slidesIndexes = [];\n for (var i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\nvar manipulation = {\n appendSlide: appendSlide,\n prependSlide: prependSlide,\n addSlide: addSlide,\n removeSlide: removeSlide,\n removeAllSlides: removeAllSlides,\n};\nvar Device = (function Device() {\n var ua = win$1.navigator.userAgent;\n var device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n windows: false,\n iphone: false,\n ipod: false,\n ipad: false,\n cordova: win$1.cordova || win$1.phonegap,\n phonegap: win$1.cordova || win$1.phonegap,\n };\n var windows = ua.match(/(Windows Phone);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n var iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n // Windows\n if (windows) {\n device.os = 'windows';\n device.osVersion = windows[2];\n device.windows = true;\n }\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.iphone = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n // Desktop\n device.desktop = !(device.os || device.android || device.webView);\n // Webview\n device.webView = (iphone || ipad || ipod) && ua.match(/.*AppleWebKit(?!.*Safari)/i);\n // Minimal UI\n if (device.os && device.os === 'ios') {\n var osVersionArr = device.osVersion.split('.');\n var metaViewport = doc$1.querySelector('meta[name=\"viewport\"]');\n device.minimalUi = !device.webView\n && (ipod || iphone)\n && (osVersionArr[0] * 1 === 7 ? osVersionArr[1] * 1 >= 1 : osVersionArr[0] * 1 > 7)\n && metaViewport && metaViewport.getAttribute('content').indexOf('minimal-ui') >= 0;\n }\n // Pixel Ratio\n device.pixelRatio = win$1.devicePixelRatio || 1;\n // Export object\n return device;\n}());\nfunction onTouchStart(event) {\n var swiper = this;\n var data = swiper.touchEventsData;\n var params = swiper.params, touches = swiper.touches;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n var e = event;\n if (e.originalEvent)\n e = e.originalEvent;\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3)\n return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0)\n return;\n if (data.isTouched && data.isMoved)\n return;\n if (params.noSwiping && $(e.target).closest(params.noSwipingSelector ? params.noSwipingSelector : \".\" + params.noSwipingClass)[0]) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!$(e).closest(params.swipeHandler)[0])\n return;\n }\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n var startX = touches.currentX;\n var startY = touches.currentY;\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (edgeSwipeDetection\n && ((startX <= edgeSwipeThreshold)\n || (startX >= win$1.screen.width - edgeSwipeThreshold))) {\n return;\n }\n Utils.extend(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = Utils.now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0)\n data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n var preventDefault = true;\n if ($(e.target).is(data.formElements))\n preventDefault = false;\n if (doc$1.activeElement\n && $(doc$1.activeElement).is(data.formElements)\n && doc$1.activeElement !== e.target) {\n doc$1.activeElement.blur();\n }\n var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n}\nfunction onTouchMove(event) {\n var swiper = this;\n var data = swiper.touchEventsData;\n var params = swiper.params, touches = swiper.touches, rtl = swiper.rtlTranslate;\n var e = event;\n if (e.originalEvent)\n e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type === 'mousemove')\n return;\n var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n Utils.extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = Utils.now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if ((pageY < touches.startY && swiper.translate <= swiper.maxTranslate())\n || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n }\n else if ((pageX < touches.startX && swiper.translate <= swiper.maxTranslate())\n || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())) {\n return;\n }\n }\n if (data.isTouchEvent && doc$1.activeElement) {\n if (e.target === doc$1.activeElement && $(e.target).is(data.formElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1)\n return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n var diffX = touches.currentX - touches.startX;\n var diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt((Math.pow(diffX, 2)) + (Math.pow(diffY, 2))) < swiper.params.threshold)\n return;\n if (typeof data.isScrolling === 'undefined') {\n var touchAngle = void 0;\n if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {\n data.isScrolling = false;\n }\n else {\n // eslint-disable-next-line\n if ((diffX * diffX) + (diffY * diffY) >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n e.preventDefault();\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n if (!data.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n var diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl)\n diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n var disableParentSwiper = true;\n var resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {\n disableParentSwiper = false;\n if (params.resistance)\n data.currentTranslate = (swiper.minTranslate() - 1) + (Math.pow((-swiper.minTranslate() + data.startTranslate + diff), resistanceRatio));\n }\n else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance)\n data.currentTranslate = (swiper.maxTranslate() + 1) - (Math.pow((swiper.maxTranslate() - data.startTranslate - diff), resistanceRatio));\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n }\n else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger)\n return;\n // Update active index in free mode\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode) {\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: Utils.now(),\n });\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\nfunction onTouchEnd(event) {\n var swiper = this;\n var data = swiper.touchEventsData;\n var params = swiper.params, touches = swiper.touches, rtl = swiper.rtlTranslate, $wrapperEl = swiper.$wrapperEl, slidesGrid = swiper.slidesGrid, snapGrid = swiper.snapGrid;\n var e = event;\n if (e.originalEvent)\n e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n // Time diff\n var touchEndTime = Utils.now();\n var timeDiff = touchEndTime - data.touchStartTime;\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap', e);\n if (timeDiff < 300 && (touchEndTime - data.lastClickTime) > 300) {\n if (data.clickTimeout)\n clearTimeout(data.clickTimeout);\n data.clickTimeout = Utils.nextTick(function () {\n if (!swiper || swiper.destroyed)\n return;\n swiper.emit('click', e);\n }, 300);\n }\n if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {\n if (data.clickTimeout)\n clearTimeout(data.clickTimeout);\n swiper.emit('doubleTap', e);\n }\n }\n data.lastClickTime = Utils.now();\n Utils.nextTick(function () {\n if (!swiper.destroyed)\n swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n var currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n }\n else {\n currentPos = -data.currentTranslate;\n }\n if (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n }\n else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n if (params.freeModeMomentum) {\n if (data.velocities.length > 1) {\n var lastMoveEvent = data.velocities.pop();\n var velocityEvent = data.velocities.pop();\n var distance = lastMoveEvent.position - velocityEvent.position;\n var time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n swiper.velocity = 0;\n }\n }\n else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n data.velocities.length = 0;\n var momentumDuration = 1000 * params.freeModeMomentumRatio;\n var momentumDistance = swiper.velocity * momentumDuration;\n var newPosition = swiper.translate + momentumDistance;\n if (rtl)\n newPosition = -newPosition;\n var doBounce = false;\n var afterBouncePosition_1;\n var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n var needsLoopFix = void 0;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition_1 = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n }\n else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides)\n needsLoopFix = true;\n }\n else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition_1 = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n }\n else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides)\n needsLoopFix = true;\n }\n else if (params.freeModeSticky) {\n var nextSlide = void 0;\n for (var j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n }\n else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n swiper.once('transitionEnd', function () {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n }\n else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n }\n else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n if (params.freeModeMomentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition_1);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce)\n return;\n swiper.emit('momentumBounce');\n swiper.setTransition(params.speed);\n swiper.setTranslate(afterBouncePosition_1);\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed)\n return;\n swiper.transitionEnd();\n });\n });\n }\n else if (swiper.velocity) {\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed)\n return;\n swiper.transitionEnd();\n });\n }\n }\n else {\n swiper.updateProgress(newPosition);\n }\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n return;\n }\n // Find current slide\n var stopIndex = 0;\n var groupSize = swiper.slidesSizesGrid[0];\n for (var i = 0; i < slidesGrid.length; i += params.slidesPerGroup) {\n if (typeof slidesGrid[i + params.slidesPerGroup] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + params.slidesPerGroup]) {\n stopIndex = i;\n groupSize = slidesGrid[i + params.slidesPerGroup] - slidesGrid[i];\n }\n }\n else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n // Find current slide size\n var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio)\n swiper.slideTo(stopIndex + params.slidesPerGroup);\n else\n swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > (1 - params.longSwipesRatio))\n swiper.slideTo(stopIndex + params.slidesPerGroup);\n else\n swiper.slideTo(stopIndex);\n }\n }\n else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + params.slidesPerGroup);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n }\n}\nfunction onResize() {\n var swiper = this;\n var params = swiper.params, el = swiper.el;\n if (el && el.offsetWidth === 0)\n return;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n // Save locks\n var allowSlideNext = swiper.allowSlideNext, allowSlidePrev = swiper.allowSlidePrev, snapGrid = swiper.snapGrid;\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n if (params.freeMode) {\n var newTranslate = Math.min(Math.max(swiper.translate, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n }\n else {\n swiper.updateSlidesClasses();\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n }\n else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\nfunction onClick(e) {\n var swiper = this;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks)\n e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\nfunction attachEvents() {\n var swiper = this;\n var params = swiper.params, touchEvents = swiper.touchEvents, el = swiper.el, wrapperEl = swiper.wrapperEl;\n {\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n var target = params.touchEventsTarget === 'container' ? el : wrapperEl;\n var capture = !!params.nested;\n // Touch Events\n {\n if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n target.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n doc$1.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n doc$1.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n }\n else {\n if (Support.touch) {\n var passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n target.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n target.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture: capture } : capture);\n target.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n target.addEventListener('mousedown', swiper.onTouchStart, false);\n doc$1.addEventListener('mousemove', swiper.onTouchMove, capture);\n doc$1.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n target.addEventListener('click', swiper.onClick, true);\n }\n }\n // Resize handler\n swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);\n}\nfunction detachEvents() {\n var swiper = this;\n var params = swiper.params, touchEvents = swiper.touchEvents, el = swiper.el, wrapperEl = swiper.wrapperEl;\n var target = params.touchEventsTarget === 'container' ? el : wrapperEl;\n var capture = !!params.nested;\n // Touch Events\n {\n if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n target.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n doc$1.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n doc$1.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n }\n else {\n if (Support.touch) {\n var passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n target.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n target.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n target.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n target.removeEventListener('mousedown', swiper.onTouchStart, false);\n doc$1.removeEventListener('mousemove', swiper.onTouchMove, capture);\n doc$1.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n target.removeEventListener('click', swiper.onClick, true);\n }\n }\n // Resize handler\n swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);\n}\nvar events = {\n attachEvents: attachEvents,\n detachEvents: detachEvents,\n};\nfunction setBreakpoint() {\n var swiper = this;\n var activeIndex = swiper.activeIndex, initialized = swiper.initialized, _a = swiper.loopedSlides, loopedSlides = _a === void 0 ? 0 : _a, params = swiper.params;\n var breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0))\n return;\n // Set breakpoint for window width and update parameters\n var breakpoint = swiper.getBreakpoint(breakpoints);\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n var breakpointOnlyParams_1 = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams_1) {\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup'].forEach(function (param) {\n var paramValue = breakpointOnlyParams_1[param];\n if (typeof paramValue === 'undefined')\n return;\n if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n breakpointOnlyParams_1[param] = 'auto';\n }\n else if (param === 'slidesPerView') {\n breakpointOnlyParams_1[param] = parseFloat(paramValue);\n }\n else {\n breakpointOnlyParams_1[param] = parseInt(paramValue, 10);\n }\n });\n }\n var breakpointParams = breakpointOnlyParams_1 || swiper.originalParams;\n var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n Utils.extend(swiper.params, breakpointParams);\n Utils.extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n swiper.currentBreakpoint = breakpoint;\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);\n }\n swiper.emit('breakpoint', breakpointParams);\n }\n}\nfunction getBreakpoint(breakpoints) {\n var swiper = this;\n // Get breakpoint for window width\n if (!breakpoints)\n return undefined;\n var breakpoint = false;\n var points = [];\n Object.keys(breakpoints).forEach(function (point) {\n points.push(point);\n });\n points.sort(function (a, b) { return parseInt(a, 10) - parseInt(b, 10); });\n for (var i = 0; i < points.length; i += 1) {\n var point = points[i];\n if (swiper.params.breakpointsInverse) {\n if (point <= win$1.innerWidth) {\n breakpoint = point;\n }\n }\n else if (point >= win$1.innerWidth && !breakpoint) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\nvar breakpoints = { setBreakpoint: setBreakpoint, getBreakpoint: getBreakpoint };\nfunction addClasses() {\n var swiper = this;\n var classNames = swiper.classNames, params = swiper.params, rtl = swiper.rtl, $el = swiper.$el;\n var suffixes = [];\n suffixes.push('initialized');\n suffixes.push(params.direction);\n if (params.freeMode) {\n suffixes.push('free-mode');\n }\n if (!Support.flexbox) {\n suffixes.push('no-flexbox');\n }\n if (params.autoHeight) {\n suffixes.push('autoheight');\n }\n if (rtl) {\n suffixes.push('rtl');\n }\n if (params.slidesPerColumn > 1) {\n suffixes.push('multirow');\n }\n if (Device.android) {\n suffixes.push('android');\n }\n if (Device.ios) {\n suffixes.push('ios');\n }\n // WP8 Touch Events Fix\n if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n suffixes.push(\"wp8-\" + params.direction);\n }\n suffixes.forEach(function (suffix) {\n classNames.push(params.containerModifierClass + suffix);\n });\n $el.addClass(classNames.join(' '));\n}\nfunction removeClasses() {\n var swiper = this;\n var $el = swiper.$el, classNames = swiper.classNames;\n $el.removeClass(classNames.join(' '));\n}\nvar classes = { addClasses: addClasses, removeClasses: removeClasses };\nfunction loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n var image;\n function onReady() {\n if (callback)\n callback();\n }\n if (!imageEl.complete || !checkForComplete) {\n if (src) {\n image = new win$1.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n }\n else {\n onReady();\n }\n }\n else {\n // image already loaded...\n onReady();\n }\n}\nfunction preloadImages() {\n var swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed)\n return;\n if (swiper.imagesLoaded !== undefined)\n swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady)\n swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {\n var imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}\nvar images = {\n loadImage: loadImage,\n preloadImages: preloadImages,\n};\nfunction checkOverflow() {\n var swiper = this;\n var wasLocked = swiper.isLocked;\n swiper.isLocked = swiper.snapGrid.length === 1;\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked;\n // events\n if (wasLocked !== swiper.isLocked)\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n swiper.navigation.update();\n }\n}\nvar checkOverflow$1 = { checkOverflow: checkOverflow };\nvar defaults = {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n //\n preventInteractionOnTransition: false,\n // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // Breakpoints\n breakpoints: undefined,\n breakpointsInverse: false,\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n centeredSlides: false,\n slidesOffsetBefore: 0,\n slidesOffsetAfter: 0,\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: true,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n // NS\n containerModifierClass: 'swiper-container-',\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n};\n/* eslint no-param-reassign: \"off\" */\nvar prototypes = {\n update: update,\n translate: translate,\n transition: transition$1,\n slide: slide,\n loop: loop,\n grabCursor: grabCursor,\n manipulation: manipulation,\n events: events,\n breakpoints: breakpoints,\n checkOverflow: checkOverflow$1,\n classes: classes,\n images: images,\n};\nvar extendedDefaults = {};\nvar Swiper = /** @class */ (function (_super) {\n __extends(Swiper, _super);\n function Swiper() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _this = this;\n var el;\n var params;\n if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n params = args[0];\n }\n else {\n el = args[0], params = args[1];\n }\n if (!params)\n params = {};\n params = Utils.extend({}, params);\n if (el && !params.el)\n params.el = el;\n _this = _super.call(this, params) || this;\n Object.keys(prototypes).forEach(function (prototypeGroup) {\n Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {\n if (!Swiper.prototype[protoMethod]) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n }\n });\n });\n // Swiper Instance\n var swiper = _this;\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n Object.keys(swiper.modules).forEach(function (moduleName) {\n var module = swiper.modules[moduleName];\n if (module.params) {\n var moduleParamName = Object.keys(module.params)[0];\n var moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null)\n return;\n if (!(moduleParamName in params && 'enabled' in moduleParams))\n return;\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (typeof params[moduleParamName] === 'object'\n && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName])\n params[moduleParamName] = { enabled: false };\n }\n });\n // Extend defaults with modules params\n var swiperParams = Utils.extend({}, defaults);\n swiper.useModulesParams(swiperParams);\n // Extend defaults with passed params\n swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = Utils.extend({}, swiper.params);\n swiper.passedParams = Utils.extend({}, params);\n // Save Dom lib\n swiper.$ = $;\n // Find el\n var $el = $(swiper.params.el);\n el = $el[0];\n if (!el) {\n return undefined;\n }\n if ($el.length > 1) {\n var swipers_1 = [];\n $el.each(function (index, containerEl) {\n var newParams = Utils.extend({}, params, { el: containerEl });\n swipers_1.push(new Swiper(newParams));\n });\n return swipers_1;\n }\n el.swiper = swiper;\n $el.data('swiper', swiper);\n // Find Wrapper\n var $wrapperEl = $el.children(\".\" + swiper.params.wrapperClass);\n // Extend Swiper\n Utils.extend(swiper, {\n $el: $el,\n el: el,\n $wrapperEl: $wrapperEl,\n wrapperEl: $wrapperEl[0],\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal: function () {\n return swiper.params.direction === 'horizontal';\n },\n isVertical: function () {\n return swiper.params.direction === 'vertical';\n },\n // RTL\n rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: (function touchEvents() {\n var touch = ['touchstart', 'touchmove', 'touchend'];\n var desktop = ['mousedown', 'mousemove', 'mouseup'];\n if (Support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n }\n else if (Support.prefixedPointerEvents) {\n desktop = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp'];\n }\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }()),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n formElements: 'input, select, option, textarea, button, video',\n // Last click time\n lastClickTime: Utils.now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n });\n // Install Modules\n swiper.useModules();\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n // Return app instance\n return swiper;\n }\n Swiper.prototype.slidesPerViewDynamic = function () {\n var swiper = this;\n var params = swiper.params, slides = swiper.slides, slidesGrid = swiper.slidesGrid, swiperSize = swiper.size, activeIndex = swiper.activeIndex;\n var spv = 1;\n if (params.centeredSlides) {\n var slideSize = slides[activeIndex].swiperSlideSize;\n var breakLoop = void 0;\n for (var i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize)\n breakLoop = true;\n }\n }\n for (var i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize)\n breakLoop = true;\n }\n }\n }\n else {\n for (var i = activeIndex + 1; i < slides.length; i += 1) {\n if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n return spv;\n };\n Swiper.prototype.update = function () {\n var swiper = this;\n if (!swiper || swiper.destroyed)\n return;\n var snapGrid = swiper.snapGrid, params = swiper.params;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n var translated;\n if (swiper.params.freeMode) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n }\n else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n }\n else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n };\n Swiper.prototype.changeDirection = function (newDirection, needUpdate) {\n if (needUpdate === void 0) { needUpdate = true; }\n var swiper = this;\n var currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {\n return swiper;\n }\n swiper.$el\n .removeClass(\"\" + swiper.params.containerModifierClass + currentDirection + \" wp8-\" + currentDirection)\n .addClass(\"\" + swiper.params.containerModifierClass + newDirection);\n if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n swiper.$el.addClass(swiper.params.containerModifierClass + \"wp8-\" + newDirection);\n }\n swiper.params.direction = newDirection;\n swiper.slides.each(function (slideIndex, slideEl) {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n }\n else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate)\n swiper.update();\n return swiper;\n };\n Swiper.prototype.init = function () {\n var swiper = this;\n if (swiper.initialized)\n return;\n swiper.emit('beforeInit');\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n // Add Classes\n swiper.addClasses();\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n // Update size\n swiper.updateSize();\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n // Set Grab Cursor\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n }\n else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n }\n // Attach events\n swiper.attachEvents();\n // Init Flag\n swiper.initialized = true;\n // Emit\n swiper.emit('init');\n };\n Swiper.prototype.destroy = function (deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) { deleteInstance = true; }\n if (cleanStyles === void 0) { cleanStyles = true; }\n var swiper = this;\n var params = swiper.params, $el = swiper.$el, $wrapperEl = swiper.$wrapperEl, slides = swiper.slides;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n // Init Flag\n swiper.initialized = false;\n // Detach events\n swiper.detachEvents();\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass([\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '))\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index')\n .removeAttr('data-swiper-column')\n .removeAttr('data-swiper-row');\n }\n }\n swiper.emit('destroy');\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(function (eventName) {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n swiper.$el.data('swiper', null);\n Utils.deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n };\n Swiper.extendDefaults = function (newDefaults) {\n Utils.extend(extendedDefaults, newDefaults);\n };\n Object.defineProperty(Swiper, \"extendedDefaults\", {\n get: function () {\n return extendedDefaults;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Swiper, \"defaults\", {\n get: function () {\n return defaults;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Swiper, \"Class\", {\n get: function () {\n return SwiperClass;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Swiper, \"$\", {\n get: function () {\n return $;\n },\n enumerable: true,\n configurable: true\n });\n return Swiper;\n}(SwiperClass));\nvar Device$1 = {\n name: 'device',\n proto: {\n device: Device,\n },\n static: {\n device: Device,\n },\n};\nvar Support$1 = {\n name: 'support',\n proto: {\n support: Support,\n },\n static: {\n support: Support,\n },\n};\nvar Browser$1 = {\n name: 'browser',\n proto: {\n browser: Browser,\n },\n static: {\n browser: Browser,\n },\n};\nvar Resize = {\n name: 'resize',\n create: function () {\n var swiper = this;\n Utils.extend(swiper, {\n resize: {\n resizeHandler: function () {\n if (!swiper || swiper.destroyed || !swiper.initialized)\n return;\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler: function () {\n if (!swiper || swiper.destroyed || !swiper.initialized)\n return;\n swiper.emit('orientationchange');\n },\n },\n });\n },\n on: {\n init: function () {\n var swiper = this;\n // Emit resize\n win$1.addEventListener('resize', swiper.resize.resizeHandler);\n // Emit orientationchange\n win$1.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy: function () {\n var swiper = this;\n win$1.removeEventListener('resize', swiper.resize.resizeHandler);\n win$1.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n },\n};\nvar Observer = {\n func: win$1.MutationObserver || win$1.WebkitMutationObserver,\n attach: function (target, options) {\n if (options === void 0) { options = {}; }\n var swiper = this;\n var ObserverFunc = Observer.func;\n var observer = new ObserverFunc(function (mutations) {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n swiper.emit('observerUpdate', mutations[0]);\n return;\n }\n var observerUpdate = function observerUpdate() {\n swiper.emit('observerUpdate', mutations[0]);\n };\n if (win$1.requestAnimationFrame) {\n win$1.requestAnimationFrame(observerUpdate);\n }\n else {\n win$1.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n swiper.observer.observers.push(observer);\n },\n init: function () {\n var swiper = this;\n if (!Support.observer || !swiper.params.observer)\n return;\n if (swiper.params.observeParents) {\n var containerParents = swiper.$el.parents();\n for (var i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n }\n // Observe container\n swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });\n // Observe wrapper\n swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n },\n destroy: function () {\n var swiper = this;\n swiper.observer.observers.forEach(function (observer) {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n },\n};\nvar Observer$1 = {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n },\n create: function () {\n var swiper = this;\n Utils.extend(swiper, {\n observer: {\n init: Observer.init.bind(swiper),\n attach: Observer.attach.bind(swiper),\n destroy: Observer.destroy.bind(swiper),\n observers: [],\n },\n });\n },\n on: {\n init: function () {\n var swiper = this;\n swiper.observer.init();\n },\n destroy: function () {\n var swiper = this;\n swiper.observer.destroy();\n },\n },\n};\nfunction isEventSupported() {\n var eventName = 'onwheel';\n var isSupported = eventName in doc$1;\n if (!isSupported) {\n var element = doc$1.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n if (!isSupported\n && doc$1.implementation\n && doc$1.implementation.hasFeature\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n && doc$1.implementation.hasFeature('', '') !== true) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = doc$1.implementation.hasFeature('Events.wheel', '3.0');\n }\n return isSupported;\n}\nvar Mousewheel = {\n lastScrollTime: Utils.now(),\n event: (function getEvent() {\n if (win$1.navigator.userAgent.indexOf('firefox') > -1)\n return 'DOMMouseScroll';\n return isEventSupported() ? 'wheel' : 'mousewheel';\n }()),\n normalize: function (e) {\n // Reasonable defaults\n var PIXEL_STEP = 10;\n var LINE_HEIGHT = 40;\n var PAGE_HEIGHT = 800;\n var sX = 0;\n var sY = 0; // spinX, spinY\n var pX = 0;\n var pY = 0; // pixelX, pixelY\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n }\n else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = (pX < 1) ? -1 : 1;\n }\n if (pY && !sY) {\n sY = (pY < 1) ? -1 : 1;\n }\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n },\n handleMouseEnter: function () {\n var swiper = this;\n swiper.mouseEntered = true;\n },\n handleMouseLeave: function () {\n var swiper = this;\n swiper.mouseEntered = false;\n },\n handle: function (event) {\n var e = event;\n var swiper = this;\n var params = swiper.params.mousewheel;\n if (!swiper.mouseEntered && !params.releaseOnEdges)\n return true;\n if (e.originalEvent)\n e = e.originalEvent; // jquery fix\n var delta = 0;\n var rtlFactor = swiper.rtlTranslate ? -1 : 1;\n var data = Mousewheel.normalize(e);\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY))\n delta = data.pixelX * rtlFactor;\n else\n return true;\n }\n else if (Math.abs(data.pixelY) > Math.abs(data.pixelX))\n delta = data.pixelY;\n else\n return true;\n }\n else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n if (delta === 0)\n return true;\n if (params.invert)\n delta = -delta;\n if (!swiper.params.freeMode) {\n if (Utils.now() - swiper.mousewheel.lastScrollTime > 60) {\n if (delta < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n swiper.emit('scroll', e);\n }\n else if (params.releaseOnEdges)\n return true;\n }\n else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n swiper.emit('scroll', e);\n }\n else if (params.releaseOnEdges)\n return true;\n }\n swiper.mousewheel.lastScrollTime = (new win$1.Date()).getTime();\n }\n else {\n // Freemode or scrollContainer:\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n var position = swiper.getTranslate() + (delta * params.sensitivity);\n var wasBeginning = swiper.isBeginning;\n var wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate())\n position = swiper.minTranslate();\n if (position <= swiper.maxTranslate())\n position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n if (swiper.params.freeModeSticky) {\n clearTimeout(swiper.mousewheel.timeout);\n swiper.mousewheel.timeout = Utils.nextTick(function () {\n swiper.slideToClosest();\n }, 300);\n }\n // Emit event\n swiper.emit('scroll', e);\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction)\n swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate())\n return true;\n }\n if (e.preventDefault)\n e.preventDefault();\n else\n e.returnValue = false;\n return false;\n },\n enable: function () {\n var swiper = this;\n if (!Mousewheel.event)\n return false;\n if (swiper.mousewheel.enabled)\n return false;\n var target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n target.on(Mousewheel.event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = true;\n return true;\n },\n disable: function () {\n var swiper = this;\n if (!Mousewheel.event)\n return false;\n if (!swiper.mousewheel.enabled)\n return false;\n var target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.off(Mousewheel.event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = false;\n return true;\n },\n};\nvar Pagination = {\n update: function () {\n // Render || Update Pagination bullets/items\n var swiper = this;\n var rtl = swiper.rtl;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0)\n return;\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n var $el = swiper.pagination.$el;\n // Current/Total\n var current;\n var total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {\n current -= (slidesLength - (swiper.loopedSlides * 2));\n }\n if (current > total - 1)\n current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets')\n current = total + current;\n }\n else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n }\n else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n var bullets = swiper.pagination.bullets;\n var firstIndex_1;\n var lastIndex_1;\n var midIndex = void 0;\n if (params.dynamicBullets) {\n swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', swiper.pagination.bulletSize * (params.dynamicMainBullets + 4) + \"px\");\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);\n if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {\n swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n }\n else if (swiper.pagination.dynamicBulletIndex < 0) {\n swiper.pagination.dynamicBulletIndex = 0;\n }\n }\n firstIndex_1 = current - swiper.pagination.dynamicBulletIndex;\n lastIndex_1 = firstIndex_1 + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex_1 + firstIndex_1) / 2;\n }\n bullets.removeClass(params.bulletActiveClass + \" \" + params.bulletActiveClass + \"-next \" + params.bulletActiveClass + \"-next-next \" + params.bulletActiveClass + \"-prev \" + params.bulletActiveClass + \"-prev-prev \" + params.bulletActiveClass + \"-main\");\n if ($el.length > 1) {\n bullets.each(function (index, bullet) {\n var $bullet = $(bullet);\n var bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex_1 && bulletIndex <= lastIndex_1) {\n $bullet.addClass(params.bulletActiveClass + \"-main\");\n }\n if (bulletIndex === firstIndex_1) {\n $bullet\n .prev()\n .addClass(params.bulletActiveClass + \"-prev\")\n .prev()\n .addClass(params.bulletActiveClass + \"-prev-prev\");\n }\n if (bulletIndex === lastIndex_1) {\n $bullet\n .next()\n .addClass(params.bulletActiveClass + \"-next\")\n .next()\n .addClass(params.bulletActiveClass + \"-next-next\");\n }\n }\n });\n }\n else {\n var $bullet = bullets.eq(current);\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n var $firstDisplayedBullet = bullets.eq(firstIndex_1);\n var $lastDisplayedBullet = bullets.eq(lastIndex_1);\n for (var i = firstIndex_1; i <= lastIndex_1; i += 1) {\n bullets.eq(i).addClass(params.bulletActiveClass + \"-main\");\n }\n $firstDisplayedBullet\n .prev()\n .addClass(params.bulletActiveClass + \"-prev\")\n .prev()\n .addClass(params.bulletActiveClass + \"-prev-prev\");\n $lastDisplayedBullet\n .next()\n .addClass(params.bulletActiveClass + \"-next\")\n .next()\n .addClass(params.bulletActiveClass + \"-next-next\");\n }\n }\n if (params.dynamicBullets) {\n var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n var bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n var offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', bulletsOffset + \"px\");\n }\n }\n if (params.type === 'fraction') {\n $el.find(\".\" + params.currentClass).text(params.formatFractionCurrent(current + 1));\n $el.find(\".\" + params.totalClass).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n var progressbarDirection = void 0;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n }\n else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n var scale = (current + 1) / total;\n var scaleX = 1;\n var scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n }\n else {\n scaleY = scale;\n }\n $el.find(\".\" + params.progressbarFillClass).transform(\"translate3d(0,0,0) scaleX(\" + scaleX + \") scaleY(\" + scaleY + \")\").transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n swiper.emit('paginationRender', swiper, $el[0]);\n }\n else {\n swiper.emit('paginationUpdate', swiper, $el[0]);\n }\n $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n },\n render: function () {\n // Render Container\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0)\n return;\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n var $el = swiper.pagination.$el;\n var paginationHTML = '';\n if (params.type === 'bullets') {\n var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n for (var i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n }\n else {\n paginationHTML += \"<\" + params.bulletElement + \" class=\\\"\" + params.bulletClass + \"\\\">\";\n }\n }\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(\".\" + params.bulletClass);\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n }\n else {\n paginationHTML = \"\"\n + ' / '\n + (\"\");\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n }\n else {\n paginationHTML = \"\";\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init: function () {\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el)\n return;\n var $el = $(params.el);\n if ($el.length === 0)\n return;\n if (swiper.params.uniqueNavElements\n && typeof params.el === 'string'\n && $el.length > 1\n && swiper.$el.find(params.el).length === 1) {\n $el = swiper.$el.find(params.el);\n }\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n $el.addClass(params.modifierClass + params.type);\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(\"\" + params.modifierClass + params.type + \"-dynamic\");\n swiper.pagination.dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n $el.on('click', \".\" + params.bulletClass, function onClick(e) {\n e.preventDefault();\n var index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop)\n index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n Utils.extend(swiper.pagination, {\n $el: $el,\n el: $el[0],\n });\n },\n destroy: function () {\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0)\n return;\n var $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets)\n swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', \".\" + params.bulletClass);\n }\n },\n};\nvar pagination = {\n name: 'pagination',\n params: {\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: function (number) { return number; },\n formatFractionTotal: function (number) { return number; },\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-',\n currentClass: 'swiper-pagination-current',\n totalClass: 'swiper-pagination-total',\n hiddenClass: 'swiper-pagination-hidden',\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\n progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n clickableClass: 'swiper-pagination-clickable',\n lockClass: 'swiper-pagination-lock',\n },\n },\n create: function () {\n var swiper = this;\n Utils.extend(swiper, {\n pagination: {\n init: Pagination.init.bind(swiper),\n render: Pagination.render.bind(swiper),\n update: Pagination.update.bind(swiper),\n destroy: Pagination.destroy.bind(swiper),\n dynamicBulletIndex: 0,\n },\n });\n },\n on: {\n init: function () {\n var swiper = this;\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange: function () {\n var swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.update();\n }\n else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange: function () {\n var swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange: function () {\n var swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange: function () {\n var swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy: function () {\n var swiper = this;\n swiper.pagination.destroy();\n },\n click: function (e) {\n var swiper = this;\n if (swiper.params.pagination.el\n && swiper.params.pagination.hideOnClick\n && swiper.pagination.$el.length > 0\n && !$(e.target).hasClass(swiper.params.pagination.bulletClass)) {\n var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n swiper.emit('paginationShow', swiper);\n }\n else {\n swiper.emit('paginationHide', swiper);\n }\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n },\n },\n};\nvar Scrollbar = {\n setTranslate: function () {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el)\n return;\n var scrollbar = swiper.scrollbar, rtl = swiper.rtlTranslate, progress = swiper.progress;\n var dragSize = scrollbar.dragSize, trackSize = scrollbar.trackSize, $dragEl = scrollbar.$dragEl, $el = scrollbar.$el;\n var params = swiper.params.scrollbar;\n var newSize = dragSize;\n var newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n }\n else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n }\n else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n }\n else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n if (Support.transforms3d) {\n $dragEl.transform(\"translate3d(\" + newPos + \"px, 0, 0)\");\n }\n else {\n $dragEl.transform(\"translateX(\" + newPos + \"px)\");\n }\n $dragEl[0].style.width = newSize + \"px\";\n }\n else {\n if (Support.transforms3d) {\n $dragEl.transform(\"translate3d(0px, \" + newPos + \"px, 0)\");\n }\n else {\n $dragEl.transform(\"translateY(\" + newPos + \"px)\");\n }\n $dragEl[0].style.height = newSize + \"px\";\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.timeout);\n $el[0].style.opacity = 1;\n swiper.scrollbar.timeout = setTimeout(function () {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n },\n setTransition: function (duration) {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el)\n return;\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize: function () {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el)\n return;\n var scrollbar = swiper.scrollbar;\n var $dragEl = scrollbar.$dragEl, $el = scrollbar.$el;\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n var divider = swiper.size / swiper.virtualSize;\n var moveDivider = divider * (trackSize / swiper.size);\n var dragSize;\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n }\n else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = dragSize + \"px\";\n }\n else {\n $dragEl[0].style.height = dragSize + \"px\";\n }\n if (divider >= 1) {\n $el[0].style.display = 'none';\n }\n else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n Utils.extend(scrollbar, {\n trackSize: trackSize,\n divider: divider,\n moveDivider: moveDivider,\n dragSize: dragSize,\n });\n scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n },\n getPointerPosition: function (e) {\n var swiper = this;\n if (swiper.isHorizontal()) {\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX);\n }\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY);\n },\n setDragPosition: function (e) {\n var swiper = this;\n var scrollbar = swiper.scrollbar, rtl = swiper.rtlTranslate;\n var $el = scrollbar.$el, dragSize = scrollbar.dragSize, trackSize = scrollbar.trackSize, dragStartPos = scrollbar.dragStartPos;\n var positionRatio;\n positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']\n - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n var position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n },\n onDragStart: function (e) {\n var swiper = this;\n var params = swiper.params.scrollbar;\n var scrollbar = swiper.scrollbar, $wrapperEl = swiper.$wrapperEl;\n var $el = scrollbar.$el, $dragEl = scrollbar.$dragEl;\n swiper.scrollbar.isTouched = true;\n swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)\n ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n scrollbar.setDragPosition(e);\n clearTimeout(swiper.scrollbar.dragTimeout);\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n swiper.emit('scrollbarDragStart', e);\n },\n onDragMove: function (e) {\n var swiper = this;\n var scrollbar = swiper.scrollbar, $wrapperEl = swiper.$wrapperEl;\n var $el = scrollbar.$el, $dragEl = scrollbar.$dragEl;\n if (!swiper.scrollbar.isTouched)\n return;\n if (e.preventDefault)\n e.preventDefault();\n else\n e.returnValue = false;\n scrollbar.setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n swiper.emit('scrollbarDragMove', e);\n },\n onDragEnd: function (e) {\n var swiper = this;\n var params = swiper.params.scrollbar;\n var scrollbar = swiper.scrollbar;\n var $el = scrollbar.$el;\n if (!swiper.scrollbar.isTouched)\n return;\n swiper.scrollbar.isTouched = false;\n if (params.hide) {\n clearTimeout(swiper.scrollbar.dragTimeout);\n swiper.scrollbar.dragTimeout = Utils.nextTick(function () {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n swiper.emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n },\n enableDraggable: function () {\n var swiper = this;\n if (!swiper.params.scrollbar.el)\n return;\n var scrollbar = swiper.scrollbar, touchEventsTouch = swiper.touchEventsTouch, touchEventsDesktop = swiper.touchEventsDesktop, params = swiper.params;\n var $el = scrollbar.$el;\n var target = $el[0];\n var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n doc$1.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n doc$1.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n else {\n target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n disableDraggable: function () {\n var swiper = this;\n if (!swiper.params.scrollbar.el)\n return;\n var scrollbar = swiper.scrollbar, touchEventsTouch = swiper.touchEventsTouch, touchEventsDesktop = swiper.touchEventsDesktop, params = swiper.params;\n var $el = scrollbar.$el;\n var target = $el[0];\n var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n doc$1.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n doc$1.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n else {\n target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n init: function () {\n var swiper = this;\n if (!swiper.params.scrollbar.el)\n return;\n var scrollbar = swiper.scrollbar, $swiperEl = swiper.$el;\n var params = swiper.params.scrollbar;\n var $el = $(params.el);\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n var $dragEl = $el.find(\".\" + swiper.params.scrollbar.dragClass);\n if ($dragEl.length === 0) {\n $dragEl = $(\"
\");\n $el.append($dragEl);\n }\n Utils.extend(scrollbar, {\n $el: $el,\n el: $el[0],\n $dragEl: $dragEl,\n dragEl: $dragEl[0],\n });\n if (params.draggable) {\n scrollbar.enableDraggable();\n }\n },\n destroy: function () {\n var swiper = this;\n swiper.scrollbar.disableDraggable();\n },\n};\nvar scrollbar = {\n name: 'scrollbar',\n params: {\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n },\n },\n create: function () {\n var swiper = this;\n Utils.extend(swiper, {\n scrollbar: {\n init: Scrollbar.init.bind(swiper),\n destroy: Scrollbar.destroy.bind(swiper),\n updateSize: Scrollbar.updateSize.bind(swiper),\n setTranslate: Scrollbar.setTranslate.bind(swiper),\n setTransition: Scrollbar.setTransition.bind(swiper),\n enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n getPointerPosition: Scrollbar.getPointerPosition.bind(swiper),\n onDragStart: Scrollbar.onDragStart.bind(swiper),\n onDragMove: Scrollbar.onDragMove.bind(swiper),\n onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n isTouched: false,\n timeout: null,\n dragTimeout: null,\n },\n });\n },\n on: {\n init: function () {\n var swiper = this;\n swiper.scrollbar.init();\n swiper.scrollbar.updateSize();\n swiper.scrollbar.setTranslate();\n },\n update: function () {\n var swiper = this;\n swiper.scrollbar.updateSize();\n },\n resize: function () {\n var swiper = this;\n swiper.scrollbar.updateSize();\n },\n observerUpdate: function () {\n var swiper = this;\n swiper.scrollbar.updateSize();\n },\n setTranslate: function () {\n var swiper = this;\n swiper.scrollbar.setTranslate();\n },\n setTransition: function (duration) {\n var swiper = this;\n swiper.scrollbar.setTransition(duration);\n },\n destroy: function () {\n var swiper = this;\n swiper.scrollbar.destroy();\n },\n },\n};\nvar Zoom = {\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches: function (e) {\n if (e.targetTouches.length < 2)\n return 1;\n var x1 = e.targetTouches[0].pageX;\n var y1 = e.targetTouches[0].pageY;\n var x2 = e.targetTouches[1].pageX;\n var y2 = e.targetTouches[1].pageY;\n var distance = Math.sqrt((Math.pow((x2 - x1), 2)) + (Math.pow((y2 - y1), 2)));\n return distance;\n },\n // Events\n onGestureStart: function (e) {\n var swiper = this;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n if (!Support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureTouched = true;\n gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest('.swiper-slide');\n if (gesture.$slideEl.length === 0)\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n gesture.$imageWrapEl = gesture.$imageEl.parent(\".\" + params.containerClass);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n gesture.$imageEl.transition(0);\n swiper.zoom.isScaling = true;\n },\n onGestureChange: function (e) {\n var swiper = this;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n if (!Support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureMoved = true;\n gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0)\n return;\n if (Support.gestures) {\n zoom.scale = e.scale * zoom.currentScale;\n }\n else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = (gesture.maxRatio - 1) + (Math.pow(((zoom.scale - gesture.maxRatio) + 1), 0.5));\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = (params.minRatio + 1) - (Math.pow(((params.minRatio - zoom.scale) + 1), 0.5));\n }\n gesture.$imageEl.transform(\"translate3d(0,0,0) scale(\" + zoom.scale + \")\");\n },\n onGestureEnd: function (e) {\n var swiper = this;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n if (!Support.gestures) {\n if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n return;\n }\n if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {\n return;\n }\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0)\n return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform(\"translate3d(0,0,0) scale(\" + zoom.scale + \")\");\n zoom.currentScale = zoom.scale;\n zoom.isScaling = false;\n if (zoom.scale === 1)\n gesture.$slideEl = undefined;\n },\n onTouchStart: function (e) {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture, image = zoom.image;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0)\n return;\n if (image.isTouched)\n return;\n if (Device.android)\n e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n },\n onTouchMove: function (e) {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture, image = zoom.image, velocity = zoom.velocity;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0)\n return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl)\n return;\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n if (swiper.rtl) {\n image.startX = -image.startX;\n image.startY = -image.startY;\n }\n }\n // Define if we need image drag\n var scaledWidth = image.width * zoom.scale;\n var scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight)\n return;\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (!image.isMoved && !zoom.isScaling) {\n if (swiper.isHorizontal()\n && ((Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)\n || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x))) {\n image.isTouched = false;\n return;\n }\n if (!swiper.isHorizontal()\n && ((Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)\n || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y))) {\n image.isTouched = false;\n return;\n }\n }\n e.preventDefault();\n e.stopPropagation();\n image.isMoved = true;\n image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;\n image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;\n if (image.currentX < image.minX) {\n image.currentX = (image.minX + 1) - (Math.pow(((image.minX - image.currentX) + 1), 0.8));\n }\n if (image.currentX > image.maxX) {\n image.currentX = (image.maxX - 1) + (Math.pow(((image.currentX - image.maxX) + 1), 0.8));\n }\n if (image.currentY < image.minY) {\n image.currentY = (image.minY + 1) - (Math.pow(((image.minY - image.currentY) + 1), 0.8));\n }\n if (image.currentY > image.maxY) {\n image.currentY = (image.maxY - 1) + (Math.pow(((image.currentY - image.maxY) + 1), 0.8));\n }\n // Velocity\n if (!velocity.prevPositionX)\n velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY)\n velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime)\n velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2)\n velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2)\n velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.$imageWrapEl.transform(\"translate3d(\" + image.currentX + \"px, \" + image.currentY + \"px,0)\");\n },\n onTouchEnd: function () {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture, image = zoom.image, velocity = zoom.velocity;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0)\n return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n var momentumDurationX = 300;\n var momentumDurationY = 300;\n var momentumDistanceX = velocity.x * momentumDurationX;\n var newPositionX = image.currentX + momentumDistanceX;\n var momentumDistanceY = velocity.y * momentumDurationY;\n var newPositionY = image.currentY + momentumDistanceY;\n // Fix duration\n if (velocity.x !== 0)\n momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0)\n momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n var momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n // Define if we need image drag\n var scaledWidth = image.width * zoom.scale;\n var scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.$imageWrapEl.transition(momentumDuration).transform(\"translate3d(\" + image.currentX + \"px, \" + image.currentY + \"px,0)\");\n },\n onTransitionEnd: function () {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n zoom.scale = 1;\n zoom.currentScale = 1;\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n },\n // Toggle Zoom\n toggle: function (e) {\n var swiper = this;\n var zoom = swiper.zoom;\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoom.out();\n }\n else {\n // Zoom In\n zoom.in(e);\n }\n },\n in: function (e) {\n var swiper = this;\n var zoom = swiper.zoom;\n var params = swiper.params.zoom;\n var gesture = zoom.gesture, image = zoom.image;\n if (!gesture.$slideEl) {\n gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n gesture.$imageWrapEl = gesture.$imageEl.parent(\".\" + params.containerClass);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0)\n return;\n gesture.$slideEl.addClass(\"\" + params.zoomedSlideClass);\n var touchX;\n var touchY;\n var offsetX;\n var offsetY;\n var diffX;\n var diffY;\n var translateX;\n var translateY;\n var imageWidth;\n var imageHeight;\n var scaledWidth;\n var scaledHeight;\n var translateMinX;\n var translateMinY;\n var translateMaxX;\n var translateMaxY;\n var slideWidth;\n var slideHeight;\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n }\n else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left;\n offsetY = gesture.$slideEl.offset().top;\n diffX = (offsetX + (slideWidth / 2)) - touchX;\n diffY = (offsetY + (slideHeight / 2)) - touchY;\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);\n translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n }\n else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl.transition(300).transform(\"translate3d(\" + translateX + \"px, \" + translateY + \"px,0)\");\n gesture.$imageEl.transition(300).transform(\"translate3d(0,0,0) scale(\" + zoom.scale + \")\");\n },\n out: function () {\n var swiper = this;\n var zoom = swiper.zoom;\n var params = swiper.params.zoom;\n var gesture = zoom.gesture;\n if (!gesture.$slideEl) {\n gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n gesture.$imageWrapEl = gesture.$imageEl.parent(\".\" + params.containerClass);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0)\n return;\n zoom.scale = 1;\n zoom.currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(\"\" + params.zoomedSlideClass);\n gesture.$slideEl = undefined;\n },\n // Attach/Detach Events\n enable: function () {\n var swiper = this;\n var zoom = swiper.zoom;\n if (zoom.enabled)\n return;\n zoom.enabled = true;\n var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.on('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);\n }\n else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);\n }\n // Move image\n swiper.$wrapperEl.on(swiper.touchEvents.move, \".\" + swiper.params.zoom.containerClass, zoom.onTouchMove);\n },\n disable: function () {\n var swiper = this;\n var zoom = swiper.zoom;\n if (!zoom.enabled)\n return;\n swiper.zoom.enabled = false;\n var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.off('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);\n }\n else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);\n }\n // Move image\n swiper.$wrapperEl.off(swiper.touchEvents.move, \".\" + swiper.params.zoom.containerClass, zoom.onTouchMove);\n },\n};\nvar zoom = {\n name: 'zoom',\n params: {\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n },\n create: function () {\n var swiper = this;\n var zoom = {\n enabled: false,\n scale: 1,\n currentScale: 1,\n isScaling: false,\n gesture: {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n },\n image: {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n },\n velocity: {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n },\n };\n ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach(function (methodName) {\n zoom[methodName] = Zoom[methodName].bind(swiper);\n });\n Utils.extend(swiper, {\n zoom: zoom,\n });\n var scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get: function () {\n return scale;\n },\n set: function (value) {\n if (scale !== value) {\n var imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\n var slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;\n swiper.emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n },\n on: {\n init: function () {\n var swiper = this;\n if (swiper.params.zoom.enabled) {\n swiper.zoom.enable();\n }\n },\n destroy: function () {\n var swiper = this;\n swiper.zoom.disable();\n },\n touchStart: function (e) {\n var swiper = this;\n if (!swiper.zoom.enabled)\n return;\n swiper.zoom.onTouchStart(e);\n },\n touchEnd: function (e) {\n var swiper = this;\n if (!swiper.zoom.enabled)\n return;\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap: function (e) {\n var swiper = this;\n if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n swiper.zoom.toggle(e);\n }\n },\n transitionEnd: function () {\n var swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n },\n },\n};\n/* eslint no-underscore-dangle: \"off\" */\nvar Autoplay = {\n run: function () {\n var swiper = this;\n var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n var delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = Utils.nextTick(function () {\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n }\n else if (!swiper.isBeginning) {\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n }\n else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n }\n else {\n swiper.autoplay.stop();\n }\n }\n else if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n }\n else if (!swiper.isEnd) {\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n }\n else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n }\n else {\n swiper.autoplay.stop();\n }\n }, delay);\n },\n start: function () {\n var swiper = this;\n if (typeof swiper.autoplay.timeout !== 'undefined')\n return false;\n if (swiper.autoplay.running)\n return false;\n swiper.autoplay.running = true;\n swiper.emit('autoplayStart');\n swiper.autoplay.run();\n return true;\n },\n stop: function () {\n var swiper = this;\n if (!swiper.autoplay.running)\n return false;\n if (typeof swiper.autoplay.timeout === 'undefined')\n return false;\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause: function (speed) {\n var swiper = this;\n if (!swiper.autoplay.running)\n return;\n if (swiper.autoplay.paused)\n return;\n if (swiper.autoplay.timeout)\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n }\n else {\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n }\n },\n};\nvar autoplay = {\n name: 'autoplay',\n params: {\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n },\n },\n create: function () {\n var swiper = this;\n Utils.extend(swiper, {\n autoplay: {\n running: false,\n paused: false,\n run: Autoplay.run.bind(swiper),\n start: Autoplay.start.bind(swiper),\n stop: Autoplay.stop.bind(swiper),\n pause: Autoplay.pause.bind(swiper),\n onTransitionEnd: function (e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl)\n return;\n if (e.target !== this)\n return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n else {\n swiper.autoplay.run();\n }\n },\n },\n });\n },\n on: {\n init: function () {\n var swiper = this;\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n }\n },\n beforeTransitionStart: function (speed, internal) {\n var swiper = this;\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n }\n else {\n swiper.autoplay.stop();\n }\n }\n },\n sliderFirstMove: function () {\n var swiper = this;\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n }\n else {\n swiper.autoplay.pause();\n }\n }\n },\n destroy: function () {\n var swiper = this;\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n },\n },\n};\n// Swiper Class\nvar components = [\n Device$1,\n Support$1,\n Browser$1,\n Resize,\n Observer$1,\n];\nif (typeof Swiper.use === 'undefined') {\n Swiper.use = Swiper.Class.use;\n Swiper.installModule = Swiper.Class.installModule;\n}\nSwiper.use(components);\nSwiper.use([pagination, scrollbar, autoplay, zoom]);\nexport { Swiper };\n"],"sourceRoot":""}