{"version":3,"file":"./modules/5006.xxxxxxxx.js","mappings":"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","sources":["webpack:///../../../node_modules/swiper/modules/mousewheel.mjs","webpack:///../../../node_modules/swiper/modules/scrollbar.mjs","webpack:///../../../node_modules/swiper/shared/create-element-if-not-defined.mjs","webpack:///../../../node_modules/swiper/shared/classes-to-selector.mjs","webpack:///../../../node_modules/swiper/shared/ssr-window.esm.mjs","webpack:///../../../node_modules/swiper/shared/utils.mjs","webpack:///../../../node_modules/swiper/shared/swiper-core.mjs"],"sourcesContent":["import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { n as nextTick, d as now } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Mousewheel(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const window = getWindow();\n  extendParams({\n    mousewheel: {\n      enabled: false,\n      releaseOnEdges: false,\n      invert: false,\n      forceToAxis: false,\n      sensitivity: 1,\n      eventsTarget: 'container',\n      thresholdDelta: null,\n      thresholdTime: null,\n      noMousewheelClass: 'swiper-no-mousewheel'\n    }\n  });\n  swiper.mousewheel = {\n    enabled: false\n  };\n  let timeout;\n  let lastScrollTime = now();\n  let lastEventBeforeSnap;\n  const recentWheelEvents = [];\n  function normalize(e) {\n    // Reasonable defaults\n    const PIXEL_STEP = 10;\n    const LINE_HEIGHT = 40;\n    const PAGE_HEIGHT = 800;\n    let sX = 0;\n    let sY = 0; // spinX, spinY\n    let pX = 0;\n    let pY = 0; // pixelX, pixelY\n\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\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 (e.shiftKey && !pX) {\n      // if user scrolls with shift he wants horizontal scroll\n      pX = pY;\n      pY = 0;\n    }\n    if ((pX || pY) && e.deltaMode) {\n      if (e.deltaMode === 1) {\n        // delta in LINE units\n        pX *= LINE_HEIGHT;\n        pY *= LINE_HEIGHT;\n      } else {\n        // delta in PAGE units\n        pX *= PAGE_HEIGHT;\n        pY *= PAGE_HEIGHT;\n      }\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  function handleMouseEnter() {\n    if (!swiper.enabled) return;\n    swiper.mouseEntered = true;\n  }\n  function handleMouseLeave() {\n    if (!swiper.enabled) return;\n    swiper.mouseEntered = false;\n  }\n  function animateSlider(newEvent) {\n    if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n      // Prevent if delta of wheel scroll delta is below configured threshold\n      return false;\n    }\n    if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n      // Prevent if time between scrolls is below configured threshold\n      return false;\n    }\n\n    // If the movement is NOT big enough and\n    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n    //   Don't go any further (avoid insignificant scroll movement).\n    if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n      // Return false as a default\n      return true;\n    }\n    // If user is scrolling towards the end:\n    //   If the slider hasn't hit the latest slide or\n    //   if the slider is a loop and\n    //   if the slider isn't moving right now:\n    //     Go to next slide and\n    //     emit a scroll event.\n    // Else (the user is scrolling towards the beginning) and\n    // if the slider hasn't hit the first slide or\n    // if the slider is a loop and\n    // if the slider isn't moving right now:\n    //   Go to prev slide and\n    //   emit a scroll event.\n    if (newEvent.direction < 0) {\n      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n        swiper.slideNext();\n        emit('scroll', newEvent.raw);\n      }\n    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n      swiper.slidePrev();\n      emit('scroll', newEvent.raw);\n    }\n    // If you got here is because an animation has been triggered so store the current time\n    lastScrollTime = new window.Date().getTime();\n    // Return false as a default\n    return false;\n  }\n  function releaseScroll(newEvent) {\n    const params = swiper.params.mousewheel;\n    if (newEvent.direction < 0) {\n      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n        // Return true to animate scroll on edges\n        return true;\n      }\n    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n      // Return true to animate scroll on edges\n      return true;\n    }\n    return false;\n  }\n  function handle(event) {\n    let e = event;\n    let disableParentSwiper = true;\n    if (!swiper.enabled) return;\n\n    // Ignore event if the target or its parents have the swiper-no-mousewheel class\n    if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n    const params = swiper.params.mousewheel;\n    if (swiper.params.cssMode) {\n      e.preventDefault();\n    }\n    let targetEl = swiper.el;\n    if (swiper.params.mousewheel.eventsTarget !== 'container') {\n      targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n    }\n    const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n    if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n    let delta = 0;\n    const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n    const data = normalize(e);\n    if (params.forceToAxis) {\n      if (swiper.isHorizontal()) {\n        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n    } else {\n      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n    }\n    if (delta === 0) return true;\n    if (params.invert) delta = -delta;\n\n    // Get the scroll positions\n    let positions = swiper.getTranslate() + delta * params.sensitivity;\n    if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n    if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n    // When loop is true:\n    //     the disableParentSwiper will be true.\n    // When loop is false:\n    //     if the scroll positions is not on edge,\n    //     then the disableParentSwiper will be true.\n    //     if the scroll on edge positions,\n    //     then the disableParentSwiper will be false.\n    disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n    if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n    if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n      // Register the new event in a variable which stores the relevant data\n      const newEvent = {\n        time: now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta),\n        raw: event\n      };\n\n      // Keep the most recent events\n      if (recentWheelEvents.length >= 2) {\n        recentWheelEvents.shift(); // only store the last N events\n      }\n\n      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n      recentWheelEvents.push(newEvent);\n\n      // If there is at least one previous recorded event:\n      //   If direction has changed or\n      //   if the scroll is quicker than the previous one:\n      //     Animate the slider.\n      // Else (this is the first time the wheel is moved):\n      //     Animate the slider.\n      if (prevEvent) {\n        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n          animateSlider(newEvent);\n        }\n      } else {\n        animateSlider(newEvent);\n      }\n\n      // If it's time to release the scroll:\n      //   Return now so you don't hit the preventDefault.\n      if (releaseScroll(newEvent)) {\n        return true;\n      }\n    } else {\n      // Freemode or scrollContainer:\n\n      // If we recently snapped after a momentum scroll, then ignore wheel events\n      // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n      // or if it's a new scroll (larger delta or inverse sign as last event before\n      // an end-of-momentum snap).\n      const newEvent = {\n        time: now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta)\n      };\n      const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n      if (!ignoreWheelEvents) {\n        lastEventBeforeSnap = undefined;\n        let position = swiper.getTranslate() + delta * params.sensitivity;\n        const wasBeginning = swiper.isBeginning;\n        const wasEnd = swiper.isEnd;\n        if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n        if (position <= swiper.maxTranslate()) 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.loop) {\n          swiper.loopFix({\n            direction: newEvent.direction < 0 ? 'next' : 'prev',\n            byMousewheel: true\n          });\n        }\n        if (swiper.params.freeMode.sticky) {\n          // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n          // the end of a momentum scroll by storing recent (N=15?) wheel events.\n          // 1. do all N events have decreasing or same (absolute value) delta?\n          // 2. did all N events arrive in the last M (M=500?) msecs?\n          // 3. does the earliest event have an (absolute value) delta that's\n          //    at least P (P=1?) larger than the most recent event's delta?\n          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n          // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n          // Snap immediately and ignore remaining wheel events in this scroll.\n          // See comment above for \"remaining wheel events in this scroll\" determination.\n          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n          clearTimeout(timeout);\n          timeout = undefined;\n          if (recentWheelEvents.length >= 15) {\n            recentWheelEvents.shift(); // only store the last N events\n          }\n\n          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n          const firstEvent = recentWheelEvents[0];\n          recentWheelEvents.push(newEvent);\n          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n            recentWheelEvents.splice(0);\n          } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n            // We're at the end of the deceleration of a momentum scroll, so there's no need\n            // to wait for more events. Snap ASAP on the next tick.\n            // Also, because there's some remaining momentum we'll bias the snap in the\n            // direction of the ongoing scroll because it's better UX for the scroll to snap\n            // in the same direction as the scroll instead of reversing to snap.  Therefore,\n            // if it's already scrolled more than 20% in the current direction, keep going.\n            const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n            lastEventBeforeSnap = newEvent;\n            recentWheelEvents.splice(0);\n            timeout = nextTick(() => {\n              if (swiper.destroyed || !swiper.params) return;\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 0); // no delay; move on next tick\n          }\n\n          if (!timeout) {\n            // if we get here, then we haven't detected the end of a momentum scroll, so\n            // we'll consider a scroll \"complete\" when there haven't been any wheel events\n            // for 500ms.\n            timeout = nextTick(() => {\n              if (swiper.destroyed || !swiper.params) return;\n              const snapToThreshold = 0.5;\n              lastEventBeforeSnap = newEvent;\n              recentWheelEvents.splice(0);\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 500);\n          }\n        }\n\n        // Emit event\n        if (!ignoreWheelEvents) emit('scroll', e);\n\n        // Stop autoplay\n        if (swiper.params.autoplay && swiper.params.autoplay.disableOnInteraction) swiper.autoplay.stop();\n        // Return page scroll on edge positions\n        if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {\n          return true;\n        }\n      }\n    }\n    if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n    return false;\n  }\n  function events(method) {\n    let targetEl = swiper.el;\n    if (swiper.params.mousewheel.eventsTarget !== 'container') {\n      targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n    }\n    targetEl[method]('mouseenter', handleMouseEnter);\n    targetEl[method]('mouseleave', handleMouseLeave);\n    targetEl[method]('wheel', handle);\n  }\n  function enable() {\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.removeEventListener('wheel', handle);\n      return true;\n    }\n    if (swiper.mousewheel.enabled) return false;\n    events('addEventListener');\n    swiper.mousewheel.enabled = true;\n    return true;\n  }\n  function disable() {\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.addEventListener(event, handle);\n      return true;\n    }\n    if (!swiper.mousewheel.enabled) return false;\n    events('removeEventListener');\n    swiper.mousewheel.enabled = false;\n    return true;\n  }\n  on('init', () => {\n    if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n      disable();\n    }\n    if (swiper.params.mousewheel.enabled) enable();\n  });\n  on('destroy', () => {\n    if (swiper.params.cssMode) {\n      enable();\n    }\n    if (swiper.mousewheel.enabled) disable();\n  });\n  Object.assign(swiper.mousewheel, {\n    enable,\n    disable\n  });\n}\n\nexport { Mousewheel as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { m as makeElementsArray, i as classesToTokens, c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\n\nfunction Scrollbar(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const document = getDocument();\n  let isTouched = false;\n  let timeout = null;\n  let dragTimeout = null;\n  let dragStartPos;\n  let dragSize;\n  let trackSize;\n  let divider;\n  extendParams({\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      scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n      horizontalClass: `swiper-scrollbar-horizontal`,\n      verticalClass: `swiper-scrollbar-vertical`\n    }\n  });\n  swiper.scrollbar = {\n    el: null,\n    dragEl: null\n  };\n  function setTranslate() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const {\n      scrollbar,\n      rtlTranslate: rtl\n    } = swiper;\n    const {\n      dragEl,\n      el\n    } = scrollbar;\n    const params = swiper.params.scrollbar;\n    const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n    let newSize = dragSize;\n    let newPos = (trackSize - dragSize) * progress;\n    if (rtl) {\n      newPos = -newPos;\n      if (newPos > 0) {\n        newSize = dragSize - newPos;\n        newPos = 0;\n      } else if (-newPos + dragSize > trackSize) {\n        newSize = trackSize + newPos;\n      }\n    } else if (newPos < 0) {\n      newSize = dragSize + newPos;\n      newPos = 0;\n    } else if (newPos + dragSize > trackSize) {\n      newSize = trackSize - newPos;\n    }\n    if (swiper.isHorizontal()) {\n      dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n      dragEl.style.width = `${newSize}px`;\n    } else {\n      dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n      dragEl.style.height = `${newSize}px`;\n    }\n    if (params.hide) {\n      clearTimeout(timeout);\n      el.style.opacity = 1;\n      timeout = setTimeout(() => {\n        el.style.opacity = 0;\n        el.style.transitionDuration = '400ms';\n      }, 1000);\n    }\n  }\n  function setTransition(duration) {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n  }\n  function updateSize() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const {\n      scrollbar\n    } = swiper;\n    const {\n      dragEl,\n      el\n    } = scrollbar;\n    dragEl.style.width = '';\n    dragEl.style.height = '';\n    trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n    divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n    if (swiper.params.scrollbar.dragSize === 'auto') {\n      dragSize = trackSize * divider;\n    } else {\n      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n    }\n    if (swiper.isHorizontal()) {\n      dragEl.style.width = `${dragSize}px`;\n    } else {\n      dragEl.style.height = `${dragSize}px`;\n    }\n    if (divider >= 1) {\n      el.style.display = 'none';\n    } else {\n      el.style.display = '';\n    }\n    if (swiper.params.scrollbar.hide) {\n      el.style.opacity = 0;\n    }\n    if (swiper.params.watchOverflow && swiper.enabled) {\n      scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n    }\n  }\n  function getPointerPosition(e) {\n    return swiper.isHorizontal() ? e.clientX : e.clientY;\n  }\n  function setDragPosition(e) {\n    const {\n      scrollbar,\n      rtlTranslate: rtl\n    } = swiper;\n    const {\n      el\n    } = scrollbar;\n    let positionRatio;\n    positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (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    const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n    swiper.updateProgress(position);\n    swiper.setTranslate(position);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  function onDragStart(e) {\n    const params = swiper.params.scrollbar;\n    const {\n      scrollbar,\n      wrapperEl\n    } = swiper;\n    const {\n      el,\n      dragEl\n    } = scrollbar;\n    isTouched = true;\n    dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n    e.preventDefault();\n    e.stopPropagation();\n    wrapperEl.style.transitionDuration = '100ms';\n    dragEl.style.transitionDuration = '100ms';\n    setDragPosition(e);\n    clearTimeout(dragTimeout);\n    el.style.transitionDuration = '0ms';\n    if (params.hide) {\n      el.style.opacity = 1;\n    }\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n    }\n    emit('scrollbarDragStart', e);\n  }\n  function onDragMove(e) {\n    const {\n      scrollbar,\n      wrapperEl\n    } = swiper;\n    const {\n      el,\n      dragEl\n    } = scrollbar;\n    if (!isTouched) return;\n    if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false;\n    setDragPosition(e);\n    wrapperEl.style.transitionDuration = '0ms';\n    el.style.transitionDuration = '0ms';\n    dragEl.style.transitionDuration = '0ms';\n    emit('scrollbarDragMove', e);\n  }\n  function onDragEnd(e) {\n    const params = swiper.params.scrollbar;\n    const {\n      scrollbar,\n      wrapperEl\n    } = swiper;\n    const {\n      el\n    } = scrollbar;\n    if (!isTouched) return;\n    isTouched = false;\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style['scroll-snap-type'] = '';\n      wrapperEl.style.transitionDuration = '';\n    }\n    if (params.hide) {\n      clearTimeout(dragTimeout);\n      dragTimeout = nextTick(() => {\n        el.style.opacity = 0;\n        el.style.transitionDuration = '400ms';\n      }, 1000);\n    }\n    emit('scrollbarDragEnd', e);\n    if (params.snapOnRelease) {\n      swiper.slideToClosest();\n    }\n  }\n  function events(method) {\n    const {\n      scrollbar,\n      params\n    } = swiper;\n    const el = scrollbar.el;\n    if (!el) return;\n    const target = el;\n    const activeListener = params.passiveListeners ? {\n      passive: false,\n      capture: false\n    } : false;\n    const passiveListener = params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    if (!target) return;\n    const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n    target[eventMethod]('pointerdown', onDragStart, activeListener);\n    document[eventMethod]('pointermove', onDragMove, activeListener);\n    document[eventMethod]('pointerup', onDragEnd, passiveListener);\n  }\n  function enableDraggable() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    events('on');\n  }\n  function disableDraggable() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    events('off');\n  }\n  function init() {\n    const {\n      scrollbar,\n      el: swiperEl\n    } = swiper;\n    swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n      el: 'swiper-scrollbar'\n    });\n    const params = swiper.params.scrollbar;\n    if (!params.el) return;\n    let el;\n    if (typeof params.el === 'string' && swiper.isElement) {\n      el = swiper.el.querySelector(params.el);\n    }\n    if (!el && typeof params.el === 'string') {\n      el = document.querySelectorAll(params.el);\n      if (!el.length) return;\n    } else if (!el) {\n      el = params.el;\n    }\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n      el = swiperEl.querySelector(params.el);\n    }\n    if (el.length > 0) el = el[0];\n    el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    let dragEl;\n    if (el) {\n      dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass));\n      if (!dragEl) {\n        dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n        el.append(dragEl);\n      }\n    }\n    Object.assign(scrollbar, {\n      el,\n      dragEl\n    });\n    if (params.draggable) {\n      enableDraggable();\n    }\n    if (el) {\n      el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n    }\n  }\n  function destroy() {\n    const params = swiper.params.scrollbar;\n    const el = swiper.scrollbar.el;\n    if (el) {\n      el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass));\n    }\n    disableDraggable();\n  }\n  on('changeDirection', () => {\n    if (!swiper.scrollbar || !swiper.scrollbar.el) return;\n    const params = swiper.params.scrollbar;\n    let {\n      el\n    } = swiper.scrollbar;\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.classList.remove(params.horizontalClass, params.verticalClass);\n      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    });\n  });\n  on('init', () => {\n    if (swiper.params.scrollbar.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      updateSize();\n      setTranslate();\n    }\n  });\n  on('update resize observerUpdate lock unlock changeDirection', () => {\n    updateSize();\n  });\n  on('setTranslate', () => {\n    setTranslate();\n  });\n  on('setTransition', (_s, duration) => {\n    setTransition(duration);\n  });\n  on('enable disable', () => {\n    const {\n      el\n    } = swiper.scrollbar;\n    if (el) {\n      el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n    }\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  const enable = () => {\n    swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n    if (swiper.scrollbar.el) {\n      swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n    }\n    init();\n    updateSize();\n    setTranslate();\n  };\n  const disable = () => {\n    swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n    if (swiper.scrollbar.el) {\n      swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n    }\n    destroy();\n  };\n  Object.assign(swiper.scrollbar, {\n    enable,\n    disable,\n    updateSize,\n    setTranslate,\n    init,\n    destroy\n  });\n}\n\nexport { Scrollbar as default };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n  if (swiper.params.createElements) {\n    Object.keys(checkProps).forEach(key => {\n      if (!params[key] && params.auto === true) {\n        let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n        if (!element) {\n          element = createElement('div', checkProps[key]);\n          element.className = checkProps[key];\n          swiper.el.append(element);\n        }\n        params[key] = element;\n        originalParams[key] = element;\n      }\n    });\n  }\n  return params;\n}\n\nexport { createElementIfNotDefined as c };\n","function classesToSelector(classes) {\n  if (classes === void 0) {\n    classes = '';\n  }\n  return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n  .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","/**\n * SSR Window 5.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2025, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 12, 2025\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n  return obj !== null && typeof obj === 'object' && 'constructor' in obj && 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  const noExtend = ['__proto__', 'constructor', 'prototype'];\n  Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n    if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n      extend(target[key], src[key]);\n    }\n  });\n}\nconst ssrDocument = {\n  body: {},\n  addEventListener() {},\n  removeEventListener() {},\n  activeElement: {\n    blur() {},\n    nodeName: ''\n  },\n  querySelector() {\n    return null;\n  },\n  querySelectorAll() {\n    return [];\n  },\n  getElementById() {\n    return null;\n  },\n  createEvent() {\n    return {\n      initEvent() {}\n    };\n  },\n  createElement() {\n    return {\n      children: [],\n      childNodes: [],\n      style: {},\n      setAttribute() {},\n      getElementsByTagName() {\n        return [];\n      }\n    };\n  },\n  createElementNS() {\n    return {};\n  },\n  importNode() {\n    return null;\n  },\n  location: {\n    hash: '',\n    host: '',\n    hostname: '',\n    href: '',\n    origin: '',\n    pathname: '',\n    protocol: '',\n    search: ''\n  }\n};\nfunction getDocument() {\n  const doc = typeof document !== 'undefined' ? document : {};\n  extend(doc, ssrDocument);\n  return doc;\n}\nconst 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() {},\n    pushState() {},\n    go() {},\n    back() {}\n  },\n  CustomEvent: function CustomEvent() {\n    return this;\n  },\n  addEventListener() {},\n  removeEventListener() {},\n  getComputedStyle() {\n    return {\n      getPropertyValue() {\n        return '';\n      }\n    };\n  },\n  Image() {},\n  Date() {},\n  screen: {},\n  setTimeout() {},\n  clearTimeout() {},\n  matchMedia() {\n    return {};\n  },\n  requestAnimationFrame(callback) {\n    if (typeof setTimeout === 'undefined') {\n      callback();\n      return null;\n    }\n    return setTimeout(callback, 0);\n  },\n  cancelAnimationFrame(id) {\n    if (typeof setTimeout === 'undefined') {\n      return;\n    }\n    clearTimeout(id);\n  }\n};\nfunction getWindow() {\n  const win = typeof window !== 'undefined' ? window : {};\n  extend(win, ssrWindow);\n  return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes) {\n  if (classes === void 0) {\n    classes = '';\n  }\n  return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n  const object = obj;\n  Object.keys(object).forEach(key => {\n    try {\n      object[key] = null;\n    } catch (e) {\n      // no getter for object\n    }\n    try {\n      delete object[key];\n    } catch (e) {\n      // something got wrong\n    }\n  });\n}\nfunction nextTick(callback, delay) {\n  if (delay === void 0) {\n    delay = 0;\n  }\n  return setTimeout(callback, delay);\n}\nfunction now() {\n  return Date.now();\n}\nfunction getComputedStyle(el) {\n  const window = getWindow();\n  let style;\n  if (window.getComputedStyle) {\n    style = window.getComputedStyle(el, null);\n  }\n  if (!style && el.currentStyle) {\n    style = el.currentStyle;\n  }\n  if (!style) {\n    style = el.style;\n  }\n  return style;\n}\nfunction getTranslate(el, axis) {\n  if (axis === void 0) {\n    axis = 'x';\n  }\n  const window = getWindow();\n  let matrix;\n  let curTransform;\n  let transformMatrix;\n  const curStyle = getComputedStyle(el);\n  if (window.WebKitCSSMatrix) {\n    curTransform = curStyle.transform || curStyle.webkitTransform;\n    if (curTransform.split(',').length > 6) {\n      curTransform = curTransform.split(', ').map(a => 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 window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\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 (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n    // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n    // Normal Browsers\n    else curTransform = parseFloat(matrix[4]);\n  }\n  if (axis === 'y') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n    // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n    // Normal Browsers\n    else curTransform = parseFloat(matrix[5]);\n  }\n  return curTransform || 0;\n}\nfunction isObject(o) {\n  return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n  // eslint-disable-next-line\n  if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n    return node instanceof HTMLElement;\n  }\n  return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n  const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n  const noExtend = ['__proto__', 'constructor', 'prototype'];\n  for (let i = 1; i < arguments.length; i += 1) {\n    const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n    if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n      const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n        const nextKey = keysArray[nextIndex];\n        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n        if (desc !== undefined && desc.enumerable) {\n          if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            if (nextSource[nextKey].__swiper__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            to[nextKey] = {};\n            if (nextSource[nextKey].__swiper__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else {\n            to[nextKey] = nextSource[nextKey];\n          }\n        }\n      }\n    }\n  }\n  return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n  el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n  let {\n    swiper,\n    targetPosition,\n    side\n  } = _ref;\n  const window = getWindow();\n  const startPosition = -swiper.translate;\n  let startTime = null;\n  let time;\n  const duration = swiper.params.speed;\n  swiper.wrapperEl.style.scrollSnapType = 'none';\n  window.cancelAnimationFrame(swiper.cssModeFrameID);\n  const dir = targetPosition > startPosition ? 'next' : 'prev';\n  const isOutOfBound = (current, target) => {\n    return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n  };\n  const animate = () => {\n    time = new Date().getTime();\n    if (startTime === null) {\n      startTime = time;\n    }\n    const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n    const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n    let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      currentPosition = targetPosition;\n    }\n    swiper.wrapperEl.scrollTo({\n      [side]: currentPosition\n    });\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      swiper.wrapperEl.style.overflow = 'hidden';\n      swiper.wrapperEl.style.scrollSnapType = '';\n      setTimeout(() => {\n        swiper.wrapperEl.style.overflow = '';\n        swiper.wrapperEl.scrollTo({\n          [side]: currentPosition\n        });\n      });\n      window.cancelAnimationFrame(swiper.cssModeFrameID);\n      return;\n    }\n    swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n  };\n  animate();\n}\nfunction getSlideTransformEl(slideEl) {\n  return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n  if (selector === void 0) {\n    selector = '';\n  }\n  const window = getWindow();\n  const children = [...element.children];\n  if (window.HTMLSlotElement && element instanceof HTMLSlotElement) {\n    children.push(...element.assignedElements());\n  }\n  if (!selector) {\n    return children;\n  }\n  return children.filter(el => el.matches(selector));\n}\nfunction elementIsChildOfSlot(el, slot) {\n  // Breadth-first search through all parent's children and assigned elements\n  const elementsQueue = [slot];\n  while (elementsQueue.length > 0) {\n    const elementToCheck = elementsQueue.shift();\n    if (el === elementToCheck) {\n      return true;\n    }\n    elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : []), ...(elementToCheck.assignedElements ? elementToCheck.assignedElements() : []));\n  }\n}\nfunction elementIsChildOf(el, parent) {\n  const window = getWindow();\n  let isChild = parent.contains(el);\n  if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) {\n    const children = [...parent.assignedElements()];\n    isChild = children.includes(el);\n    if (!isChild) {\n      isChild = elementIsChildOfSlot(el, parent);\n    }\n  }\n  return isChild;\n}\nfunction showWarning(text) {\n  try {\n    console.warn(text);\n    return;\n  } catch (err) {\n    // err\n  }\n}\nfunction createElement(tag, classes) {\n  if (classes === void 0) {\n    classes = [];\n  }\n  const el = document.createElement(tag);\n  el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n  return el;\n}\nfunction elementOffset(el) {\n  const window = getWindow();\n  const document = getDocument();\n  const box = el.getBoundingClientRect();\n  const body = document.body;\n  const clientTop = el.clientTop || body.clientTop || 0;\n  const clientLeft = el.clientLeft || body.clientLeft || 0;\n  const scrollTop = el === window ? window.scrollY : el.scrollTop;\n  const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n  return {\n    top: box.top + scrollTop - clientTop,\n    left: box.left + scrollLeft - clientLeft\n  };\n}\nfunction elementPrevAll(el, selector) {\n  const prevEls = [];\n  while (el.previousElementSibling) {\n    const prev = el.previousElementSibling; // eslint-disable-line\n    if (selector) {\n      if (prev.matches(selector)) prevEls.push(prev);\n    } else prevEls.push(prev);\n    el = prev;\n  }\n  return prevEls;\n}\nfunction elementNextAll(el, selector) {\n  const nextEls = [];\n  while (el.nextElementSibling) {\n    const next = el.nextElementSibling; // eslint-disable-line\n    if (selector) {\n      if (next.matches(selector)) nextEls.push(next);\n    } else nextEls.push(next);\n    el = next;\n  }\n  return nextEls;\n}\nfunction elementStyle(el, prop) {\n  const window = getWindow();\n  return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n  let child = el;\n  let i;\n  if (child) {\n    i = 0;\n    // eslint-disable-next-line\n    while ((child = child.previousSibling) !== null) {\n      if (child.nodeType === 1) i += 1;\n    }\n    return i;\n  }\n  return undefined;\n}\nfunction elementParents(el, selector) {\n  const parents = []; // eslint-disable-line\n  let parent = el.parentElement; // eslint-disable-line\n  while (parent) {\n    if (selector) {\n      if (parent.matches(selector)) parents.push(parent);\n    } else {\n      parents.push(parent);\n    }\n    parent = parent.parentElement;\n  }\n  return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n  function fireCallBack(e) {\n    if (e.target !== el) return;\n    callback.call(el, e);\n    el.removeEventListener('transitionend', fireCallBack);\n  }\n  if (callback) {\n    el.addEventListener('transitionend', fireCallBack);\n  }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n  const window = getWindow();\n  if (includeMargins) {\n    return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n  }\n  return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n  return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\nfunction getRotateFix(swiper) {\n  return v => {\n    if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {\n      return v + 0.001;\n    }\n    return v;\n  };\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, getSlideTransformEl as g, elementIndex as h, classesToTokens as i, getTranslate as j, elementTransitionEnd as k, isObject as l, makeElementsArray as m, nextTick as n, getRotateFix as o, elementStyle as p, elementNextAll as q, elementPrevAll as r, setCSSProperty as s, animateCSSModeScroll as t, showWarning as u, elementIsChildOf as v, extend as w, deleteProps as x };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, p as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, q as elementNextAll, r as elementPrevAll, j as getTranslate, t as animateCSSModeScroll, n as nextTick, u as showWarning, c as createElement, v as elementIsChildOf, d as now, w as extend, h as elementIndex, x as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n  const window = getWindow();\n  const document = getDocument();\n  return {\n    smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n    touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n  };\n}\nfunction getSupport() {\n  if (!support) {\n    support = calcSupport();\n  }\n  return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n  let {\n    userAgent\n  } = _temp === void 0 ? {} : _temp;\n  const support = getSupport();\n  const window = getWindow();\n  const platform = window.navigator.platform;\n  const ua = userAgent || window.navigator.userAgent;\n  const device = {\n    ios: false,\n    android: false\n  };\n  const screenWidth = window.screen.width;\n  const screenHeight = window.screen.height;\n  const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n  let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n  const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n  const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n  const windows = platform === 'Win32';\n  let macos = platform === 'MacIntel';\n\n  // iPadOs 13 fix\n  const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n  if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n    ipad = ua.match(/(Version)\\/([\\d.]+)/);\n    if (!ipad) ipad = [0, 1, '13_0_0'];\n    macos = false;\n  }\n\n  // Android\n  if (android && !windows) {\n    device.os = 'android';\n    device.android = true;\n  }\n  if (ipad || iphone || ipod) {\n    device.os = 'ios';\n    device.ios = true;\n  }\n\n  // Export object\n  return device;\n}\nfunction getDevice(overrides) {\n  if (overrides === void 0) {\n    overrides = {};\n  }\n  if (!deviceCached) {\n    deviceCached = calcDevice(overrides);\n  }\n  return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n  const window = getWindow();\n  const device = getDevice();\n  let needPerspectiveFix = false;\n  function isSafari() {\n    const ua = window.navigator.userAgent.toLowerCase();\n    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n  }\n  if (isSafari()) {\n    const ua = String(window.navigator.userAgent);\n    if (ua.includes('Version/')) {\n      const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n      needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n    }\n  }\n  const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n  const isSafariBrowser = isSafari();\n  const need3dFix = isSafariBrowser || isWebView && device.ios;\n  return {\n    isSafari: needPerspectiveFix || isSafariBrowser,\n    needPerspectiveFix,\n    need3dFix,\n    isWebView\n  };\n}\nfunction getBrowser() {\n  if (!browser) {\n    browser = calcBrowser();\n  }\n  return browser;\n}\n\nfunction Resize(_ref) {\n  let {\n    swiper,\n    on,\n    emit\n  } = _ref;\n  const window = getWindow();\n  let observer = null;\n  let animationFrame = null;\n  const resizeHandler = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    emit('beforeResize');\n    emit('resize');\n  };\n  const createObserver = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    observer = new ResizeObserver(entries => {\n      animationFrame = window.requestAnimationFrame(() => {\n        const {\n          width,\n          height\n        } = swiper;\n        let newWidth = width;\n        let newHeight = height;\n        entries.forEach(_ref2 => {\n          let {\n            contentBoxSize,\n            contentRect,\n            target\n          } = _ref2;\n          if (target && target !== swiper.el) return;\n          newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n          newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n        });\n        if (newWidth !== width || newHeight !== height) {\n          resizeHandler();\n        }\n      });\n    });\n    observer.observe(swiper.el);\n  };\n  const removeObserver = () => {\n    if (animationFrame) {\n      window.cancelAnimationFrame(animationFrame);\n    }\n    if (observer && observer.unobserve && swiper.el) {\n      observer.unobserve(swiper.el);\n      observer = null;\n    }\n  };\n  const orientationChangeHandler = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    emit('orientationchange');\n  };\n  on('init', () => {\n    if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n      createObserver();\n      return;\n    }\n    window.addEventListener('resize', resizeHandler);\n    window.addEventListener('orientationchange', orientationChangeHandler);\n  });\n  on('destroy', () => {\n    removeObserver();\n    window.removeEventListener('resize', resizeHandler);\n    window.removeEventListener('orientationchange', orientationChangeHandler);\n  });\n}\n\nfunction Observer(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const observers = [];\n  const window = getWindow();\n  const attach = function (target, options) {\n    if (options === void 0) {\n      options = {};\n    }\n    const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n    const observer = new ObserverFunc(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 (swiper.__preventObserver__) return;\n      if (mutations.length === 1) {\n        emit('observerUpdate', mutations[0]);\n        return;\n      }\n      const observerUpdate = function observerUpdate() {\n        emit('observerUpdate', mutations[0]);\n      };\n      if (window.requestAnimationFrame) {\n        window.requestAnimationFrame(observerUpdate);\n      } else {\n        window.setTimeout(observerUpdate, 0);\n      }\n    });\n    observer.observe(target, {\n      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n      childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,\n      characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n    });\n    observers.push(observer);\n  };\n  const init = () => {\n    if (!swiper.params.observer) return;\n    if (swiper.params.observeParents) {\n      const containerParents = elementParents(swiper.hostEl);\n      for (let i = 0; i < containerParents.length; i += 1) {\n        attach(containerParents[i]);\n      }\n    }\n    // Observe container\n    attach(swiper.hostEl, {\n      childList: swiper.params.observeSlideChildren\n    });\n\n    // Observe wrapper\n    attach(swiper.wrapperEl, {\n      attributes: false\n    });\n  };\n  const destroy = () => {\n    observers.forEach(observer => {\n      observer.disconnect();\n    });\n    observers.splice(0, observers.length);\n  };\n  extendParams({\n    observer: false,\n    observeParents: false,\n    observeSlideChildren: false\n  });\n  on('init', init);\n  on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n  on(events, handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    events.split(' ').forEach(event => {\n      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n      self.eventsListeners[event][method](handler);\n    });\n    return self;\n  },\n  once(events, handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    function onceHandler() {\n      self.off(events, onceHandler);\n      if (onceHandler.__emitterProxy) {\n        delete onceHandler.__emitterProxy;\n      }\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      handler.apply(self, args);\n    }\n    onceHandler.__emitterProxy = handler;\n    return self.on(events, onceHandler, priority);\n  },\n  onAny(handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    if (self.eventsAnyListeners.indexOf(handler) < 0) {\n      self.eventsAnyListeners[method](handler);\n    }\n    return self;\n  },\n  offAny(handler) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsAnyListeners) return self;\n    const index = self.eventsAnyListeners.indexOf(handler);\n    if (index >= 0) {\n      self.eventsAnyListeners.splice(index, 1);\n    }\n    return self;\n  },\n  off(events, handler) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsListeners) return self;\n    events.split(' ').forEach(event => {\n      if (typeof handler === 'undefined') {\n        self.eventsListeners[event] = [];\n      } else if (self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach((eventHandler, index) => {\n          if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n            self.eventsListeners[event].splice(index, 1);\n          }\n        });\n      }\n    });\n    return self;\n  },\n  emit() {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsListeners) return self;\n    let events;\n    let data;\n    let context;\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\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    } else {\n      events = args[0].events;\n      data = args[0].data;\n      context = args[0].context || self;\n    }\n    data.unshift(context);\n    const eventsArray = Array.isArray(events) ? events : events.split(' ');\n    eventsArray.forEach(event => {\n      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n        self.eventsAnyListeners.forEach(eventHandler => {\n          eventHandler.apply(context, [event, ...data]);\n        });\n      }\n      if (self.eventsListeners && self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach(eventHandler => {\n          eventHandler.apply(context, data);\n        });\n      }\n    });\n    return self;\n  }\n};\n\nfunction updateSize() {\n  const swiper = this;\n  let width;\n  let height;\n  const el = swiper.el;\n  if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n    width = swiper.params.width;\n  } else {\n    width = el.clientWidth;\n  }\n  if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n    height = swiper.params.height;\n  } else {\n    height = el.clientHeight;\n  }\n  if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n    return;\n  }\n\n  // Subtract paddings\n  width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n  height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n  if (Number.isNaN(width)) width = 0;\n  if (Number.isNaN(height)) height = 0;\n  Object.assign(swiper, {\n    width,\n    height,\n    size: swiper.isHorizontal() ? width : height\n  });\n}\n\nfunction updateSlides() {\n  const swiper = this;\n  function getDirectionPropertyValue(node, label) {\n    return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n  }\n  const params = swiper.params;\n  const {\n    wrapperEl,\n    slidesEl,\n    size: swiperSize,\n    rtlTranslate: rtl,\n    wrongRTL\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n  const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n  let snapGrid = [];\n  const slidesGrid = [];\n  const slidesSizesGrid = [];\n  let offsetBefore = params.slidesOffsetBefore;\n  if (typeof offsetBefore === 'function') {\n    offsetBefore = params.slidesOffsetBefore.call(swiper);\n  }\n  let offsetAfter = params.slidesOffsetAfter;\n  if (typeof offsetAfter === 'function') {\n    offsetAfter = params.slidesOffsetAfter.call(swiper);\n  }\n  const previousSnapGridLength = swiper.snapGrid.length;\n  const previousSlidesGridLength = swiper.slidesGrid.length;\n  let spaceBetween = params.spaceBetween;\n  let slidePosition = -offsetBefore;\n  let prevSlideSize = 0;\n  let 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  } else if (typeof spaceBetween === 'string') {\n    spaceBetween = parseFloat(spaceBetween);\n  }\n  swiper.virtualSize = -spaceBetween;\n\n  // reset margins\n  slides.forEach(slideEl => {\n    if (rtl) {\n      slideEl.style.marginLeft = '';\n    } else {\n      slideEl.style.marginRight = '';\n    }\n    slideEl.style.marginBottom = '';\n    slideEl.style.marginTop = '';\n  });\n\n  // reset cssMode offsets\n  if (params.centeredSlides && params.cssMode) {\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n  }\n  const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n  if (gridEnabled) {\n    swiper.grid.initSlides(slides);\n  } else if (swiper.grid) {\n    swiper.grid.unsetSlides();\n  }\n\n  // Calc slides\n  let slideSize;\n  const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n    return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n  }).length > 0;\n  for (let i = 0; i < slidesLength; i += 1) {\n    slideSize = 0;\n    let slide;\n    if (slides[i]) slide = slides[i];\n    if (gridEnabled) {\n      swiper.grid.updateSlide(i, slide, slides);\n    }\n    if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n    if (params.slidesPerView === 'auto') {\n      if (shouldResetSlideSize) {\n        slides[i].style[swiper.getDirectionLabel('width')] = ``;\n      }\n      const slideStyles = getComputedStyle(slide);\n      const currentTransform = slide.style.transform;\n      const currentWebKitTransform = slide.style.webkitTransform;\n      if (currentTransform) {\n        slide.style.transform = 'none';\n      }\n      if (currentWebKitTransform) {\n        slide.style.webkitTransform = 'none';\n      }\n      if (params.roundLengths) {\n        slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n      } else {\n        // eslint-disable-next-line\n        const width = getDirectionPropertyValue(slideStyles, 'width');\n        const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n        const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n        const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n        const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n        const boxSizing = slideStyles.getPropertyValue('box-sizing');\n        if (boxSizing && boxSizing === 'border-box') {\n          slideSize = width + marginLeft + marginRight;\n        } else {\n          const {\n            clientWidth,\n            offsetWidth\n          } = slide;\n          slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n        }\n      }\n      if (currentTransform) {\n        slide.style.transform = currentTransform;\n      }\n      if (currentWebKitTransform) {\n        slide.style.webkitTransform = currentWebKitTransform;\n      }\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n    } else {\n      slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n      if (slides[i]) {\n        slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\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) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n      if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n    } else {\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) 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  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n    wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n  }\n  if (params.setWrapperSize) {\n    wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n  }\n  if (gridEnabled) {\n    swiper.grid.updateWrapperSize(slideSize, snapGrid);\n  }\n\n  // Remove last grid elements depending on width\n  if (!params.centeredSlides) {\n    const newSlidesGrid = [];\n    for (let i = 0; i < snapGrid.length; i += 1) {\n      let slidesGridItem = snapGrid[i];\n      if (params.roundLengths) 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 (isVirtual && params.loop) {\n    const size = slidesSizesGrid[0] + spaceBetween;\n    if (params.slidesPerGroup > 1) {\n      const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n      const groupSize = size * params.slidesPerGroup;\n      for (let i = 0; i < groups; i += 1) {\n        snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n      }\n    }\n    for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n      if (params.slidesPerGroup === 1) {\n        snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n      }\n      slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n      swiper.virtualSize += size;\n    }\n  }\n  if (snapGrid.length === 0) snapGrid = [0];\n  if (spaceBetween !== 0) {\n    const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n    slides.filter((_, slideIndex) => {\n      if (!params.cssMode || params.loop) return true;\n      if (slideIndex === slides.length - 1) {\n        return false;\n      }\n      return true;\n    }).forEach(slideEl => {\n      slideEl.style[key] = `${spaceBetween}px`;\n    });\n  }\n  if (params.centeredSlides && params.centeredSlidesBounds) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (spaceBetween || 0);\n    });\n    allSlidesSize -= spaceBetween;\n    const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;\n    snapGrid = snapGrid.map(snap => {\n      if (snap <= 0) return -offsetBefore;\n      if (snap > maxSnap) return maxSnap + offsetAfter;\n      return snap;\n    });\n  }\n  if (params.centerInsufficientSlides) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (spaceBetween || 0);\n    });\n    allSlidesSize -= spaceBetween;\n    const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);\n    if (allSlidesSize + offsetSize < swiperSize) {\n      const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;\n      snapGrid.forEach((snap, snapIndex) => {\n        snapGrid[snapIndex] = snap - allSlidesOffset;\n      });\n      slidesGrid.forEach((snap, snapIndex) => {\n        slidesGrid[snapIndex] = snap + allSlidesOffset;\n      });\n    }\n  }\n  Object.assign(swiper, {\n    slides,\n    snapGrid,\n    slidesGrid,\n    slidesSizesGrid\n  });\n  if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n    const addToSnapGrid = -swiper.snapGrid[0];\n    const addToSlidesGrid = -swiper.slidesGrid[0];\n    swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n    swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n  }\n  if (slidesLength !== previousSlidesLength) {\n    swiper.emit('slidesLengthChange');\n  }\n  if (snapGrid.length !== previousSnapGridLength) {\n    if (swiper.params.watchOverflow) swiper.checkOverflow();\n    swiper.emit('snapGridLengthChange');\n  }\n  if (slidesGrid.length !== previousSlidesGridLength) {\n    swiper.emit('slidesGridLengthChange');\n  }\n  if (params.watchSlidesProgress) {\n    swiper.updateSlidesOffset();\n  }\n  swiper.emit('slidesUpdated');\n  if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n    const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n    const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n    if (slidesLength <= params.maxBackfaceHiddenSlides) {\n      if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n    } else if (hasClassBackfaceClassAdded) {\n      swiper.el.classList.remove(backFaceHiddenClass);\n    }\n  }\n}\n\nfunction updateAutoHeight(speed) {\n  const swiper = this;\n  const activeSlides = [];\n  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n  let newHeight = 0;\n  let i;\n  if (typeof speed === 'number') {\n    swiper.setTransition(speed);\n  } else if (speed === true) {\n    swiper.setTransition(swiper.params.speed);\n  }\n  const getSlideByIndex = index => {\n    if (isVirtual) {\n      return swiper.slides[swiper.getSlideIndexByData(index)];\n    }\n    return swiper.slides[index];\n  };\n  // Find slides currently in view\n  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n    if (swiper.params.centeredSlides) {\n      (swiper.visibleSlides || []).forEach(slide => {\n        activeSlides.push(slide);\n      });\n    } else {\n      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n        const index = swiper.activeIndex + i;\n        if (index > swiper.slides.length && !isVirtual) break;\n        activeSlides.push(getSlideByIndex(index));\n      }\n    }\n  } else {\n    activeSlides.push(getSlideByIndex(swiper.activeIndex));\n  }\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      const height = activeSlides[i].offsetHeight;\n      newHeight = height > newHeight ? height : newHeight;\n    }\n  }\n\n  // Update Height\n  if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n  const swiper = this;\n  const slides = swiper.slides;\n  // eslint-disable-next-line\n  const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n  for (let i = 0; i < slides.length; i += 1) {\n    slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n  }\n}\n\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n  if (condition && !slideEl.classList.contains(className)) {\n    slideEl.classList.add(className);\n  } else if (!condition && slideEl.classList.contains(className)) {\n    slideEl.classList.remove(className);\n  }\n};\nfunction updateSlidesProgress(translate) {\n  if (translate === void 0) {\n    translate = this && this.translate || 0;\n  }\n  const swiper = this;\n  const params = swiper.params;\n  const {\n    slides,\n    rtlTranslate: rtl,\n    snapGrid\n  } = swiper;\n  if (slides.length === 0) return;\n  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n  let offsetCenter = -translate;\n  if (rtl) offsetCenter = translate;\n  swiper.visibleSlidesIndexes = [];\n  swiper.visibleSlides = [];\n  let spaceBetween = params.spaceBetween;\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n  } else if (typeof spaceBetween === 'string') {\n    spaceBetween = parseFloat(spaceBetween);\n  }\n  for (let i = 0; i < slides.length; i += 1) {\n    const slide = slides[i];\n    let slideOffset = slide.swiperSlideOffset;\n    if (params.cssMode && params.centeredSlides) {\n      slideOffset -= slides[0].swiperSlideOffset;\n    }\n    const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n    const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n    const slideBefore = -(offsetCenter - slideOffset);\n    const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n    const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n    const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n    if (isVisible) {\n      swiper.visibleSlides.push(slide);\n      swiper.visibleSlidesIndexes.push(i);\n    }\n    toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n    toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n    slide.progress = rtl ? -slideProgress : slideProgress;\n    slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n  }\n}\n\nfunction updateProgress(translate) {\n  const swiper = this;\n  if (typeof translate === 'undefined') {\n    const multiplier = swiper.rtlTranslate ? -1 : 1;\n    // eslint-disable-next-line\n    translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n  }\n  const params = swiper.params;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  let {\n    progress,\n    isBeginning,\n    isEnd,\n    progressLoop\n  } = swiper;\n  const wasBeginning = isBeginning;\n  const wasEnd = isEnd;\n  if (translatesDiff === 0) {\n    progress = 0;\n    isBeginning = true;\n    isEnd = true;\n  } else {\n    progress = (translate - swiper.minTranslate()) / translatesDiff;\n    const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n    const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n    isBeginning = isBeginningRounded || progress <= 0;\n    isEnd = isEndRounded || progress >= 1;\n    if (isBeginningRounded) progress = 0;\n    if (isEndRounded) progress = 1;\n  }\n  if (params.loop) {\n    const firstSlideIndex = swiper.getSlideIndexByData(0);\n    const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n    const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n    const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n    const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n    const translateAbs = Math.abs(translate);\n    if (translateAbs >= firstSlideTranslate) {\n      progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n    } else {\n      progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n    }\n    if (progressLoop > 1) progressLoop -= 1;\n  }\n  Object.assign(swiper, {\n    progress,\n    progressLoop,\n    isBeginning,\n    isEnd\n  });\n  if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) 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}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n  if (condition && !slideEl.classList.contains(className)) {\n    slideEl.classList.add(className);\n  } else if (!condition && slideEl.classList.contains(className)) {\n    slideEl.classList.remove(className);\n  }\n};\nfunction updateSlidesClasses() {\n  const swiper = this;\n  const {\n    slides,\n    params,\n    slidesEl,\n    activeIndex\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n  const getFilteredSlide = selector => {\n    return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n  };\n  let activeSlide;\n  let prevSlide;\n  let nextSlide;\n  if (isVirtual) {\n    if (params.loop) {\n      let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n      if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n      if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n      activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n    } else {\n      activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n    }\n  } else {\n    if (gridEnabled) {\n      activeSlide = slides.find(slideEl => slideEl.column === activeIndex);\n      nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1);\n      prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1);\n    } else {\n      activeSlide = slides[activeIndex];\n    }\n  }\n  if (activeSlide) {\n    if (!gridEnabled) {\n      // Next Slide\n      nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n      if (params.loop && !nextSlide) {\n        nextSlide = slides[0];\n      }\n\n      // Prev Slide\n      prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n      if (params.loop && !prevSlide === 0) {\n        prevSlide = slides[slides.length - 1];\n      }\n    }\n  }\n  slides.forEach(slideEl => {\n    toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n    toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n    toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n  });\n  swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n  if (!swiper || swiper.destroyed || !swiper.params) return;\n  const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n  const slideEl = imageEl.closest(slideSelector());\n  if (slideEl) {\n    let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n    if (!lazyEl && swiper.isElement) {\n      if (slideEl.shadowRoot) {\n        lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n      } else {\n        // init later\n        requestAnimationFrame(() => {\n          if (slideEl.shadowRoot) {\n            lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n            if (lazyEl) lazyEl.remove();\n          }\n        });\n      }\n    }\n    if (lazyEl) lazyEl.remove();\n  }\n};\nconst unlazy = (swiper, index) => {\n  if (!swiper.slides[index]) return;\n  const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n  if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n  if (!swiper || swiper.destroyed || !swiper.params) return;\n  let amount = swiper.params.lazyPreloadPrevNext;\n  const len = swiper.slides.length;\n  if (!len || !amount || amount < 0) return;\n  amount = Math.min(amount, len);\n  const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n  const activeIndex = swiper.activeIndex;\n  if (swiper.params.grid && swiper.params.grid.rows > 1) {\n    const activeColumn = activeIndex;\n    const preloadColumns = [activeColumn - amount];\n    preloadColumns.push(...Array.from({\n      length: amount\n    }).map((_, i) => {\n      return activeColumn + slidesPerView + i;\n    }));\n    swiper.slides.forEach((slideEl, i) => {\n      if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n    });\n    return;\n  }\n  const slideIndexLastInView = activeIndex + slidesPerView - 1;\n  if (swiper.params.rewind || swiper.params.loop) {\n    for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n      const realIndex = (i % len + len) % len;\n      if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n    }\n  } else {\n    for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n      if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n        unlazy(swiper, i);\n      }\n    }\n  }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n  const {\n    slidesGrid,\n    params\n  } = swiper;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  let activeIndex;\n  for (let 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      } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n        activeIndex = i + 1;\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') activeIndex = 0;\n  }\n  return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n  const swiper = this;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  const {\n    snapGrid,\n    params,\n    activeIndex: previousIndex,\n    realIndex: previousRealIndex,\n    snapIndex: previousSnapIndex\n  } = swiper;\n  let activeIndex = newActiveIndex;\n  let snapIndex;\n  const getVirtualRealIndex = aIndex => {\n    let realIndex = aIndex - swiper.virtual.slidesBefore;\n    if (realIndex < 0) {\n      realIndex = swiper.virtual.slides.length + realIndex;\n    }\n    if (realIndex >= swiper.virtual.slides.length) {\n      realIndex -= swiper.virtual.slides.length;\n    }\n    return realIndex;\n  };\n  if (typeof activeIndex === 'undefined') {\n    activeIndex = getActiveIndexByTranslate(swiper);\n  }\n  if (snapGrid.indexOf(translate) >= 0) {\n    snapIndex = snapGrid.indexOf(translate);\n  } else {\n    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n  }\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n  if (activeIndex === previousIndex && !swiper.params.loop) {\n    if (snapIndex !== previousSnapIndex) {\n      swiper.snapIndex = snapIndex;\n      swiper.emit('snapIndexChange');\n    }\n    return;\n  }\n  if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n    swiper.realIndex = getVirtualRealIndex(activeIndex);\n    return;\n  }\n  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n  // Get real index\n  let realIndex;\n  if (swiper.virtual && params.virtual.enabled && params.loop) {\n    realIndex = getVirtualRealIndex(activeIndex);\n  } else if (gridEnabled) {\n    const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex);\n    let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n    if (Number.isNaN(activeSlideIndex)) {\n      activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n    }\n    realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n  } else if (swiper.slides[activeIndex]) {\n    const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n    if (slideIndex) {\n      realIndex = parseInt(slideIndex, 10);\n    } else {\n      realIndex = activeIndex;\n    }\n  } else {\n    realIndex = activeIndex;\n  }\n  Object.assign(swiper, {\n    previousSnapIndex,\n    snapIndex,\n    previousRealIndex,\n    realIndex,\n    previousIndex,\n    activeIndex\n  });\n  if (swiper.initialized) {\n    preload(swiper);\n  }\n  swiper.emit('activeIndexChange');\n  swiper.emit('snapIndexChange');\n  if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n    if (previousRealIndex !== realIndex) {\n      swiper.emit('realIndexChange');\n    }\n    swiper.emit('slideChange');\n  }\n}\n\nfunction updateClickedSlide(el, path) {\n  const swiper = this;\n  const params = swiper.params;\n  let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n  if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n    [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n      if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n        slide = pathEl;\n      }\n    });\n  }\n  let slideFound = false;\n  let slideIndex;\n  if (slide) {\n    for (let i = 0; i < swiper.slides.length; i += 1) {\n      if (swiper.slides[i] === slide) {\n        slideFound = true;\n        slideIndex = i;\n        break;\n      }\n    }\n  }\n  if (slide && slideFound) {\n    swiper.clickedSlide = slide;\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n    } else {\n      swiper.clickedIndex = slideIndex;\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}\n\nvar update = {\n  updateSize,\n  updateSlides,\n  updateAutoHeight,\n  updateSlidesOffset,\n  updateSlidesProgress,\n  updateProgress,\n  updateSlidesClasses,\n  updateActiveIndex,\n  updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n  if (axis === void 0) {\n    axis = this.isHorizontal() ? 'x' : 'y';\n  }\n  const swiper = this;\n  const {\n    params,\n    rtlTranslate: rtl,\n    translate,\n    wrapperEl\n  } = swiper;\n  if (params.virtualTranslate) {\n    return rtl ? -translate : translate;\n  }\n  if (params.cssMode) {\n    return translate;\n  }\n  let currentTranslate = getTranslate(wrapperEl, axis);\n  currentTranslate += swiper.cssOverflowAdjustment();\n  if (rtl) currentTranslate = -currentTranslate;\n  return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n  const swiper = this;\n  const {\n    rtlTranslate: rtl,\n    params,\n    wrapperEl,\n    progress\n  } = swiper;\n  let x = 0;\n  let y = 0;\n  const z = 0;\n  if (swiper.isHorizontal()) {\n    x = rtl ? -translate : translate;\n  } else {\n    y = translate;\n  }\n  if (params.roundLengths) {\n    x = Math.floor(x);\n    y = Math.floor(y);\n  }\n  swiper.previousTranslate = swiper.translate;\n  swiper.translate = swiper.isHorizontal() ? x : y;\n  if (params.cssMode) {\n    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n  } else if (!params.virtualTranslate) {\n    if (swiper.isHorizontal()) {\n      x -= swiper.cssOverflowAdjustment();\n    } else {\n      y -= swiper.cssOverflowAdjustment();\n    }\n    wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n  }\n\n  // Check if we need to update progress\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\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}\n\nfunction minTranslate() {\n  return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n  return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n  if (translate === void 0) {\n    translate = 0;\n  }\n  if (speed === void 0) {\n    speed = this.params.speed;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (translateBounds === void 0) {\n    translateBounds = true;\n  }\n  const swiper = this;\n  const {\n    params,\n    wrapperEl\n  } = swiper;\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n  const minTranslate = swiper.minTranslate();\n  const maxTranslate = swiper.maxTranslate();\n  let newTranslate;\n  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n  // Update progress\n  swiper.updateProgress(newTranslate);\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    if (speed === 0) {\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: -newTranslate,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: -newTranslate,\n        behavior: 'smooth'\n      });\n    }\n    return true;\n  }\n  if (speed === 0) {\n    swiper.setTransition(0);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionEnd');\n    }\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionStart');\n    }\n    if (!swiper.animating) {\n      swiper.animating = true;\n      if (!swiper.onTranslateToWrapperTransitionEnd) {\n        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!swiper || swiper.destroyed) return;\n          if (e.target !== this) return;\n          swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.onTranslateToWrapperTransitionEnd = null;\n          delete swiper.onTranslateToWrapperTransitionEnd;\n          swiper.animating = false;\n          if (runCallbacks) {\n            swiper.emit('transitionEnd');\n          }\n        };\n      }\n      swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n    }\n  }\n  return true;\n}\n\nvar translate = {\n  getTranslate: getSwiperTranslate,\n  setTranslate,\n  minTranslate,\n  maxTranslate,\n  translateTo\n};\n\nfunction setTransition(duration, byController) {\n  const swiper = this;\n  if (!swiper.params.cssMode) {\n    swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n    swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n  }\n  swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n  let {\n    swiper,\n    runCallbacks,\n    direction,\n    step\n  } = _ref;\n  const {\n    activeIndex,\n    previousIndex\n  } = swiper;\n  let dir = direction;\n  if (!dir) {\n    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n  }\n  swiper.emit(`transition${step}`);\n  if (runCallbacks && activeIndex !== previousIndex) {\n    if (dir === 'reset') {\n      swiper.emit(`slideResetTransition${step}`);\n      return;\n    }\n    swiper.emit(`slideChangeTransition${step}`);\n    if (dir === 'next') {\n      swiper.emit(`slideNextTransition${step}`);\n    } else {\n      swiper.emit(`slidePrevTransition${step}`);\n    }\n  }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  if (params.cssMode) return;\n  if (params.autoHeight) {\n    swiper.updateAutoHeight();\n  }\n  transitionEmit({\n    swiper,\n    runCallbacks,\n    direction,\n    step: 'Start'\n  });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  swiper.animating = false;\n  if (params.cssMode) return;\n  swiper.setTransition(0);\n  transitionEmit({\n    swiper,\n    runCallbacks,\n    direction,\n    step: 'End'\n  });\n}\n\nvar transition = {\n  setTransition,\n  transitionStart,\n  transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n  if (index === void 0) {\n    index = 0;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (typeof index === 'string') {\n    index = parseInt(index, 10);\n  }\n  const swiper = this;\n  let slideIndex = index;\n  if (slideIndex < 0) slideIndex = 0;\n  const {\n    params,\n    snapGrid,\n    slidesGrid,\n    previousIndex,\n    activeIndex,\n    rtlTranslate: rtl,\n    wrapperEl,\n    enabled\n  } = swiper;\n  if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n  const translate = -snapGrid[snapIndex];\n  // Normalize slideIndex\n  if (params.normalizeSlideIndex) {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      const normalizedTranslate = -Math.floor(translate * 100);\n      const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n      const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\n        if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n          slideIndex = i;\n        } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n          slideIndex = i + 1;\n        }\n      } else if (normalizedTranslate >= normalizedGrid) {\n        slideIndex = i;\n      }\n    }\n  }\n  // Directions locks\n  if (swiper.initialized && slideIndex !== activeIndex) {\n    if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : 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  }\n  if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n    swiper.emit('beforeSlideChangeStart');\n  }\n\n  // Update progress\n  swiper.updateProgress(translate);\n  let direction;\n  if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n  // initial virtual\n  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n  const isInitialVirtual = isVirtual && initial;\n  // Update Index\n  if (!isInitialVirtual && (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 (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    const t = rtl ? translate : -translate;\n    if (speed === 0) {\n      if (isVirtual) {\n        swiper.wrapperEl.style.scrollSnapType = 'none';\n        swiper._immediateVirtual = true;\n      }\n      if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n        swiper._cssModeVirtualInitialSet = true;\n        requestAnimationFrame(() => {\n          wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n        });\n      } else {\n        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n      }\n      if (isVirtual) {\n        requestAnimationFrame(() => {\n          swiper.wrapperEl.style.scrollSnapType = '';\n          swiper._immediateVirtual = false;\n        });\n      }\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: t,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: t,\n        behavior: 'smooth'\n      });\n    }\n    return true;\n  }\n  const browser = getBrowser();\n  const isSafari = browser.isSafari;\n  if (isVirtual && !initial && isSafari && swiper.isElement) {\n    swiper.virtual.update(false, false, slideIndex);\n  }\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 (speed === 0) {\n    swiper.transitionEnd(runCallbacks, direction);\n  } else if (!swiper.animating) {\n    swiper.animating = true;\n    if (!swiper.onSlideToWrapperTransitionEnd) {\n      swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n        if (!swiper || swiper.destroyed) return;\n        if (e.target !== this) return;\n        swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n        swiper.onSlideToWrapperTransitionEnd = null;\n        delete swiper.onSlideToWrapperTransitionEnd;\n        swiper.transitionEnd(runCallbacks, direction);\n      };\n    }\n    swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n  }\n  return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n  if (index === void 0) {\n    index = 0;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (typeof index === 'string') {\n    const indexAsNumber = parseInt(index, 10);\n    index = indexAsNumber;\n  }\n  const swiper = this;\n  if (swiper.destroyed) return;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n  let newIndex = index;\n  if (swiper.params.loop) {\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      // eslint-disable-next-line\n      newIndex = newIndex + swiper.virtual.slidesBefore;\n    } else {\n      let targetSlideIndex;\n      if (gridEnabled) {\n        const slideIndex = newIndex * swiper.params.grid.rows;\n        targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n      } else {\n        targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n      }\n      const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n      const {\n        centeredSlides\n      } = swiper.params;\n      let slidesPerView = swiper.params.slidesPerView;\n      if (slidesPerView === 'auto') {\n        slidesPerView = swiper.slidesPerViewDynamic();\n      } else {\n        slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n        if (centeredSlides && slidesPerView % 2 === 0) {\n          slidesPerView = slidesPerView + 1;\n        }\n      }\n      let needLoopFix = cols - targetSlideIndex < slidesPerView;\n      if (centeredSlides) {\n        needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n      }\n      if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n        needLoopFix = false;\n      }\n      if (needLoopFix) {\n        const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n        swiper.loopFix({\n          direction,\n          slideTo: true,\n          activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n          slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n        });\n      }\n      if (gridEnabled) {\n        const slideIndex = newIndex * swiper.params.grid.rows;\n        newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n      } else {\n        newIndex = swiper.getSlideIndexByData(newIndex);\n      }\n    }\n  }\n  requestAnimationFrame(() => {\n    swiper.slideTo(newIndex, speed, runCallbacks, internal);\n  });\n  return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    enabled,\n    params,\n    animating\n  } = swiper;\n  if (!enabled || swiper.destroyed) return swiper;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  let perGroup = params.slidesPerGroup;\n  if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n    perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n  }\n  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  if (params.loop) {\n    if (animating && !isVirtual && params.loopPreventsSliding) return false;\n    swiper.loopFix({\n      direction: 'next'\n    });\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.wrapperEl.clientLeft;\n    if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n      requestAnimationFrame(() => {\n        swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n      });\n      return true;\n    }\n  }\n  if (params.rewind && swiper.isEnd) {\n    return swiper.slideTo(0, speed, runCallbacks, internal);\n  }\n  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    params,\n    snapGrid,\n    slidesGrid,\n    rtlTranslate,\n    enabled,\n    animating\n  } = swiper;\n  if (!enabled || swiper.destroyed) return swiper;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  if (params.loop) {\n    if (animating && !isVirtual && params.loopPreventsSliding) return false;\n    swiper.loopFix({\n      direction: 'prev'\n    });\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.wrapperEl.clientLeft;\n  }\n  const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n  function normalize(val) {\n    if (val < 0) return -Math.floor(Math.abs(val));\n    return Math.floor(val);\n  }\n  const normalizedTranslate = normalize(translate);\n  const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n  const isFreeMode = params.freeMode && params.freeMode.enabled;\n  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n  if (typeof prevSnap === 'undefined' && (params.cssMode || isFreeMode)) {\n    let prevSnapIndex;\n    snapGrid.forEach((snap, snapIndex) => {\n      if (normalizedTranslate >= snap) {\n        // prevSnap = snap;\n        prevSnapIndex = snapIndex;\n      }\n    });\n    if (typeof prevSnapIndex !== 'undefined') {\n      prevSnap = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n    }\n  }\n  let prevIndex = 0;\n  if (typeof prevSnap !== 'undefined') {\n    prevIndex = slidesGrid.indexOf(prevSnap);\n    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n    if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n      prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n      prevIndex = Math.max(prevIndex, 0);\n    }\n  }\n  if (params.rewind && swiper.isBeginning) {\n    const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n    return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n  } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n    requestAnimationFrame(() => {\n      swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n    });\n    return true;\n  }\n  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  if (swiper.destroyed) return;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (threshold === void 0) {\n    threshold = 0.5;\n  }\n  const swiper = this;\n  if (swiper.destroyed) return;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  let index = swiper.activeIndex;\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  if (translate >= swiper.snapGrid[snapIndex]) {\n    // The current translate is on or after the current snap index, so the choice\n    // is between the current index and the one after it.\n    const currentSnap = swiper.snapGrid[snapIndex];\n    const nextSnap = swiper.snapGrid[snapIndex + 1];\n    if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n      index += swiper.params.slidesPerGroup;\n    }\n  } else {\n    // The current translate is before the current snap index, so the choice\n    // is between the current index and the one before it.\n    const prevSnap = swiper.snapGrid[snapIndex - 1];\n    const currentSnap = swiper.snapGrid[snapIndex];\n    if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n      index -= swiper.params.slidesPerGroup;\n    }\n  }\n  index = Math.max(index, 0);\n  index = Math.min(index, swiper.slidesGrid.length - 1);\n  return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n  const swiper = this;\n  if (swiper.destroyed) return;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n  let slideToIndex = swiper.clickedIndex;\n  let realIndex;\n  const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n  if (params.loop) {\n    if (swiper.animating) return;\n    realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n    if (params.centeredSlides) {\n      if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n        swiper.loopFix();\n        slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n        nextTick(() => {\n          swiper.slideTo(slideToIndex);\n        });\n      } else {\n        swiper.slideTo(slideToIndex);\n      }\n    } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n      swiper.loopFix();\n      slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n      nextTick(() => {\n        swiper.slideTo(slideToIndex);\n      });\n    } else {\n      swiper.slideTo(slideToIndex);\n    }\n  } else {\n    swiper.slideTo(slideToIndex);\n  }\n}\n\nvar slide = {\n  slideTo,\n  slideToLoop,\n  slideNext,\n  slidePrev,\n  slideReset,\n  slideToClosest,\n  slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex, initial) {\n  const swiper = this;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n  const initSlides = () => {\n    const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n    slides.forEach((el, index) => {\n      el.setAttribute('data-swiper-slide-index', index);\n    });\n  };\n  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n  const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n  const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n  const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n  const addBlankSlides = amountOfSlides => {\n    for (let i = 0; i < amountOfSlides; i += 1) {\n      const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n      swiper.slidesEl.append(slideEl);\n    }\n  };\n  if (shouldFillGroup) {\n    if (params.loopAddBlankSlides) {\n      const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n      addBlankSlides(slidesToAdd);\n      swiper.recalcSlides();\n      swiper.updateSlides();\n    } else {\n      showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n    }\n    initSlides();\n  } else if (shouldFillGrid) {\n    if (params.loopAddBlankSlides) {\n      const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n      addBlankSlides(slidesToAdd);\n      swiper.recalcSlides();\n      swiper.updateSlides();\n    } else {\n      showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n    }\n    initSlides();\n  } else {\n    initSlides();\n  }\n  swiper.loopFix({\n    slideRealIndex,\n    direction: params.centeredSlides ? undefined : 'next',\n    initial\n  });\n}\n\nfunction loopFix(_temp) {\n  let {\n    slideRealIndex,\n    slideTo = true,\n    direction,\n    setTranslate,\n    activeSlideIndex,\n    initial,\n    byController,\n    byMousewheel\n  } = _temp === void 0 ? {} : _temp;\n  const swiper = this;\n  if (!swiper.params.loop) return;\n  swiper.emit('beforeLoopFix');\n  const {\n    slides,\n    allowSlidePrev,\n    allowSlideNext,\n    slidesEl,\n    params\n  } = swiper;\n  const {\n    centeredSlides,\n    initialSlide\n  } = params;\n  swiper.allowSlidePrev = true;\n  swiper.allowSlideNext = true;\n  if (swiper.virtual && params.virtual.enabled) {\n    if (slideTo) {\n      if (!params.centeredSlides && swiper.snapIndex === 0) {\n        swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n      } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n        swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n      } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n        swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n      }\n    }\n    swiper.allowSlidePrev = allowSlidePrev;\n    swiper.allowSlideNext = allowSlideNext;\n    swiper.emit('loopFix');\n    return;\n  }\n  let slidesPerView = params.slidesPerView;\n  if (slidesPerView === 'auto') {\n    slidesPerView = swiper.slidesPerViewDynamic();\n  } else {\n    slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n    if (centeredSlides && slidesPerView % 2 === 0) {\n      slidesPerView = slidesPerView + 1;\n    }\n  }\n  const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n  let loopedSlides = slidesPerGroup;\n  if (loopedSlides % slidesPerGroup !== 0) {\n    loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n  }\n  loopedSlides += params.loopAdditionalSlides;\n  swiper.loopedSlides = loopedSlides;\n  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n  if (slides.length < slidesPerView + loopedSlides || swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) {\n    showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled or not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n  } else if (gridEnabled && params.grid.fill === 'row') {\n    showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n  }\n  const prependSlidesIndexes = [];\n  const appendSlidesIndexes = [];\n  const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n  const isInitialOverflow = initial && cols - initialSlide < slidesPerView && !centeredSlides;\n  let activeIndex = isInitialOverflow ? initialSlide : swiper.activeIndex;\n  if (typeof activeSlideIndex === 'undefined') {\n    activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass)));\n  } else {\n    activeIndex = activeSlideIndex;\n  }\n  const isNext = direction === 'next' || !direction;\n  const isPrev = direction === 'prev' || !direction;\n  let slidesPrepended = 0;\n  let slidesAppended = 0;\n  const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n  const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n  // prepend last slides before start\n  if (activeColIndexWithShift < loopedSlides) {\n    slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n    for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n      const index = i - Math.floor(i / cols) * cols;\n      if (gridEnabled) {\n        const colIndexToPrepend = cols - index - 1;\n        for (let i = slides.length - 1; i >= 0; i -= 1) {\n          if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n        }\n        // slides.forEach((slide, slideIndex) => {\n        //   if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n        // });\n      } else {\n        prependSlidesIndexes.push(cols - index - 1);\n      }\n    }\n  } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n    slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n    if (isInitialOverflow) {\n      slidesAppended = Math.max(slidesAppended, slidesPerView - cols + initialSlide + 1);\n    }\n    for (let i = 0; i < slidesAppended; i += 1) {\n      const index = i - Math.floor(i / cols) * cols;\n      if (gridEnabled) {\n        slides.forEach((slide, slideIndex) => {\n          if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n        });\n      } else {\n        appendSlidesIndexes.push(index);\n      }\n    }\n  }\n  swiper.__preventObserver__ = true;\n  requestAnimationFrame(() => {\n    swiper.__preventObserver__ = false;\n  });\n  if (swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) {\n    if (appendSlidesIndexes.includes(activeSlideIndex)) {\n      appendSlidesIndexes.splice(appendSlidesIndexes.indexOf(activeSlideIndex), 1);\n    }\n    if (prependSlidesIndexes.includes(activeSlideIndex)) {\n      prependSlidesIndexes.splice(prependSlidesIndexes.indexOf(activeSlideIndex), 1);\n    }\n  }\n  if (isPrev) {\n    prependSlidesIndexes.forEach(index => {\n      slides[index].swiperLoopMoveDOM = true;\n      slidesEl.prepend(slides[index]);\n      slides[index].swiperLoopMoveDOM = false;\n    });\n  }\n  if (isNext) {\n    appendSlidesIndexes.forEach(index => {\n      slides[index].swiperLoopMoveDOM = true;\n      slidesEl.append(slides[index]);\n      slides[index].swiperLoopMoveDOM = false;\n    });\n  }\n  swiper.recalcSlides();\n  if (params.slidesPerView === 'auto') {\n    swiper.updateSlides();\n  } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n    swiper.slides.forEach((slide, slideIndex) => {\n      swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n    });\n  }\n  if (params.watchSlidesProgress) {\n    swiper.updateSlidesOffset();\n  }\n  if (slideTo) {\n    if (prependSlidesIndexes.length > 0 && isPrev) {\n      if (typeof slideRealIndex === 'undefined') {\n        const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n        const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n        const diff = newSlideTranslate - currentSlideTranslate;\n        if (byMousewheel) {\n          swiper.setTranslate(swiper.translate - diff);\n        } else {\n          swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n          if (setTranslate) {\n            swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n            swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n          }\n        }\n      } else {\n        if (setTranslate) {\n          const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n          swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n          swiper.touchEventsData.currentTranslate = swiper.translate;\n        }\n      }\n    } else if (appendSlidesIndexes.length > 0 && isNext) {\n      if (typeof slideRealIndex === 'undefined') {\n        const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n        const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n        const diff = newSlideTranslate - currentSlideTranslate;\n        if (byMousewheel) {\n          swiper.setTranslate(swiper.translate - diff);\n        } else {\n          swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n          if (setTranslate) {\n            swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n            swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n          }\n        }\n      } else {\n        const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n        swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n      }\n    }\n  }\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n  if (swiper.controller && swiper.controller.control && !byController) {\n    const loopParams = {\n      slideRealIndex,\n      direction,\n      setTranslate,\n      activeSlideIndex,\n      byController: true\n    };\n    if (Array.isArray(swiper.controller.control)) {\n      swiper.controller.control.forEach(c => {\n        if (!c.destroyed && c.params.loop) c.loopFix({\n          ...loopParams,\n          slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n        });\n      });\n    } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n      swiper.controller.control.loopFix({\n        ...loopParams,\n        slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n      });\n    }\n  }\n  swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n  const swiper = this;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  if (!params.loop || !slidesEl || swiper.virtual && swiper.params.virtual.enabled) return;\n  swiper.recalcSlides();\n  const newSlidesOrder = [];\n  swiper.slides.forEach(slideEl => {\n    const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n    newSlidesOrder[index] = slideEl;\n  });\n  swiper.slides.forEach(slideEl => {\n    slideEl.removeAttribute('data-swiper-slide-index');\n  });\n  newSlidesOrder.forEach(slideEl => {\n    slidesEl.append(slideEl);\n  });\n  swiper.recalcSlides();\n  swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n  loopCreate,\n  loopFix,\n  loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n  const swiper = this;\n  if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n  const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n  if (swiper.isElement) {\n    swiper.__preventObserver__ = true;\n  }\n  el.style.cursor = 'move';\n  el.style.cursor = moving ? 'grabbing' : 'grab';\n  if (swiper.isElement) {\n    requestAnimationFrame(() => {\n      swiper.__preventObserver__ = false;\n    });\n  }\n}\n\nfunction unsetGrabCursor() {\n  const swiper = this;\n  if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n    return;\n  }\n  if (swiper.isElement) {\n    swiper.__preventObserver__ = true;\n  }\n  swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n  if (swiper.isElement) {\n    requestAnimationFrame(() => {\n      swiper.__preventObserver__ = false;\n    });\n  }\n}\n\nvar grabCursor = {\n  setGrabCursor,\n  unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n  if (base === void 0) {\n    base = this;\n  }\n  function __closestFrom(el) {\n    if (!el || el === getDocument() || el === getWindow()) return null;\n    if (el.assignedSlot) el = el.assignedSlot;\n    const found = el.closest(selector);\n    if (!found && !el.getRootNode) {\n      return null;\n    }\n    return found || __closestFrom(el.getRootNode().host);\n  }\n  return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n  const window = getWindow();\n  const {\n    params\n  } = swiper;\n  const edgeSwipeDetection = params.edgeSwipeDetection;\n  const edgeSwipeThreshold = params.edgeSwipeThreshold;\n  if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n    if (edgeSwipeDetection === 'prevent') {\n      event.preventDefault();\n      return true;\n    }\n    return false;\n  }\n  return true;\n}\nfunction onTouchStart(event) {\n  const swiper = this;\n  const document = getDocument();\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  const data = swiper.touchEventsData;\n  if (e.type === 'pointerdown') {\n    if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n      return;\n    }\n    data.pointerId = e.pointerId;\n  } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n    data.touchId = e.targetTouches[0].identifier;\n  }\n  if (e.type === 'touchstart') {\n    // don't proceed touch event\n    preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n    return;\n  }\n  const {\n    params,\n    touches,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  if (!params.simulateTouch && e.pointerType === 'mouse') return;\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return;\n  }\n  if (!swiper.animating && params.cssMode && params.loop) {\n    swiper.loopFix();\n  }\n  let targetEl = e.target;\n  if (params.touchEventsTarget === 'wrapper') {\n    if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;\n  }\n  if ('which' in e && e.which === 3) return;\n  if ('button' in e && e.button > 0) return;\n  if (data.isTouched && data.isMoved) return;\n\n  // change target el for shadow root component\n  const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n  // eslint-disable-next-line\n  const eventPath = e.composedPath ? e.composedPath() : e.path;\n  if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n    targetEl = eventPath[0];\n  }\n  const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n  const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n  // use closestElement for shadow root element to get the actual closest for nested shadow root element\n  if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n    swiper.allowClick = true;\n    return;\n  }\n  if (params.swipeHandler) {\n    if (!targetEl.closest(params.swipeHandler)) return;\n  }\n  touches.currentX = e.pageX;\n  touches.currentY = e.pageY;\n  const startX = touches.currentX;\n  const startY = touches.currentY;\n\n  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n  if (!preventEdgeSwipe(swiper, e, startX)) {\n    return;\n  }\n  Object.assign(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 = now();\n  swiper.allowClick = true;\n  swiper.updateSize();\n  swiper.swipeDirection = undefined;\n  if (params.threshold > 0) data.allowThresholdMove = false;\n  let preventDefault = true;\n  if (targetEl.matches(data.focusableElements)) {\n    preventDefault = false;\n    if (targetEl.nodeName === 'SELECT') {\n      data.isTouched = false;\n    }\n  }\n  if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {\n    document.activeElement.blur();\n  }\n  const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n  if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n    e.preventDefault();\n  }\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n    swiper.freeMode.onTouchStart();\n  }\n  swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n  const document = getDocument();\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const {\n    params,\n    touches,\n    rtlTranslate: rtl,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  if (!params.simulateTouch && event.pointerType === 'mouse') return;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  if (e.type === 'pointermove') {\n    if (data.touchId !== null) return; // return from pointer if we use touch\n    const id = e.pointerId;\n    if (id !== data.pointerId) return;\n  }\n  let targetTouch;\n  if (e.type === 'touchmove') {\n    targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n    if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n  } else {\n    targetTouch = e;\n  }\n  if (!data.isTouched) {\n    if (data.startMoving && data.isScrolling) {\n      swiper.emit('touchMoveOpposite', e);\n    }\n    return;\n  }\n  const pageX = targetTouch.pageX;\n  const pageY = targetTouch.pageY;\n  if (e.preventedByNestedSwiper) {\n    touches.startX = pageX;\n    touches.startY = pageY;\n    return;\n  }\n  if (!swiper.allowTouchMove) {\n    if (!e.target.matches(data.focusableElements)) {\n      swiper.allowClick = false;\n    }\n    if (data.isTouched) {\n      Object.assign(touches, {\n        startX: pageX,\n        startY: pageY,\n        currentX: pageX,\n        currentY: pageY\n      });\n      data.touchStartTime = now();\n    }\n    return;\n  }\n  if (params.touchReleaseOnEdges && !params.loop) {\n    if (swiper.isVertical()) {\n      // Vertical\n      if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n        data.isTouched = false;\n        data.isMoved = false;\n        return;\n      }\n    } else if (rtl && (pageX > touches.startX && -swiper.translate <= swiper.maxTranslate() || pageX < touches.startX && -swiper.translate >= swiper.minTranslate())) {\n      return;\n    } else if (!rtl && (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate())) {\n      return;\n    }\n  }\n  if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {\n    document.activeElement.blur();\n  }\n  if (document.activeElement) {\n    if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n      data.isMoved = true;\n      swiper.allowClick = false;\n      return;\n    }\n  }\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchMove', e);\n  }\n  touches.previousX = touches.currentX;\n  touches.previousY = touches.currentY;\n  touches.currentX = pageX;\n  touches.currentY = pageY;\n  const diffX = touches.currentX - touches.startX;\n  const diffY = touches.currentY - touches.startY;\n  if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n  if (typeof data.isScrolling === 'undefined') {\n    let touchAngle;\n    if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n      data.isScrolling = false;\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 || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n    data.isTouched = false;\n    return;\n  }\n  if (!data.startMoving) {\n    return;\n  }\n  swiper.allowClick = false;\n  if (!params.cssMode && e.cancelable) {\n    e.preventDefault();\n  }\n  if (params.touchMoveStopPropagation && !params.nested) {\n    e.stopPropagation();\n  }\n  let diff = swiper.isHorizontal() ? diffX : diffY;\n  let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n  if (params.oneWayMovement) {\n    diff = Math.abs(diff) * (rtl ? 1 : -1);\n    touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n  }\n  touches.diff = diff;\n  diff *= params.touchRatio;\n  if (rtl) {\n    diff = -diff;\n    touchesDiff = -touchesDiff;\n  }\n  const prevTouchesDirection = swiper.touchesDirection;\n  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n  swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n  const isLoop = swiper.params.loop && !params.cssMode;\n  const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n  if (!data.isMoved) {\n    if (isLoop && allowLoopFix) {\n      swiper.loopFix({\n        direction: swiper.swipeDirection\n      });\n    }\n    data.startTranslate = swiper.getTranslate();\n    swiper.setTransition(0);\n    if (swiper.animating) {\n      const evt = new window.CustomEvent('transitionend', {\n        bubbles: true,\n        cancelable: true,\n        detail: {\n          bySwiperTouchMove: true\n        }\n      });\n      swiper.wrapperEl.dispatchEvent(evt);\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  let loopFixed;\n  new Date().getTime();\n  if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n    Object.assign(touches, {\n      startX: pageX,\n      startY: pageY,\n      currentX: pageX,\n      currentY: pageY,\n      startTranslate: data.currentTranslate\n    });\n    data.loopSwapReset = true;\n    data.startTranslate = data.currentTranslate;\n    return;\n  }\n  swiper.emit('sliderMove', e);\n  data.isMoved = true;\n  data.currentTranslate = diff + data.startTranslate;\n  let disableParentSwiper = true;\n  let resistanceRatio = params.resistanceRatio;\n  if (params.touchReleaseOnEdges) {\n    resistanceRatio = 0;\n  }\n  if (diff > 0) {\n    if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {\n      swiper.loopFix({\n        direction: 'prev',\n        setTranslate: true,\n        activeSlideIndex: 0\n      });\n    }\n    if (data.currentTranslate > swiper.minTranslate()) {\n      disableParentSwiper = false;\n      if (params.resistance) {\n        data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n      }\n    }\n  } else if (diff < 0) {\n    if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {\n      swiper.loopFix({\n        direction: 'next',\n        setTranslate: true,\n        activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n      });\n    }\n    if (data.currentTranslate < swiper.maxTranslate()) {\n      disableParentSwiper = false;\n      if (params.resistance) {\n        data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n      }\n    }\n  }\n  if (disableParentSwiper) {\n    e.preventedByNestedSwiper = true;\n  }\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  if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n    data.currentTranslate = data.startTranslate;\n  }\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    } else {\n      data.currentTranslate = data.startTranslate;\n      return;\n    }\n  }\n  if (!params.followFinger || params.cssMode) return;\n\n  // Update active index in free mode\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n    swiper.freeMode.onTouchMove();\n  }\n  // Update progress\n  swiper.updateProgress(data.currentTranslate);\n  // Update translate\n  swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  let targetTouch;\n  const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n  if (!isTouchEvent) {\n    if (data.touchId !== null) return; // return from pointer if we use touch\n    if (e.pointerId !== data.pointerId) return;\n    targetTouch = e;\n  } else {\n    targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n    if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n  }\n  if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n    const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n    if (!proceed) {\n      return;\n    }\n  }\n  data.pointerId = null;\n  data.touchId = null;\n  const {\n    params,\n    touches,\n    rtlTranslate: rtl,\n    slidesGrid,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  if (!params.simulateTouch && e.pointerType === 'mouse') return;\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\n  // Return Grab Cursor\n  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n    swiper.setGrabCursor(false);\n  }\n\n  // Time diff\n  const touchEndTime = now();\n  const timeDiff = touchEndTime - data.touchStartTime;\n\n  // Tap, doubleTap, Click\n  if (swiper.allowClick) {\n    const pathTree = e.path || e.composedPath && e.composedPath();\n    swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n    swiper.emit('tap click', e);\n    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n      swiper.emit('doubleTap doubleClick', e);\n    }\n  }\n  data.lastClickTime = now();\n  nextTick(() => {\n    if (!swiper.destroyed) swiper.allowClick = true;\n  });\n  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\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  let currentPos;\n  if (params.followFinger) {\n    currentPos = rtl ? swiper.translate : -swiper.translate;\n  } else {\n    currentPos = -data.currentTranslate;\n  }\n  if (params.cssMode) {\n    return;\n  }\n  if (params.freeMode && params.freeMode.enabled) {\n    swiper.freeMode.onTouchEnd({\n      currentPos\n    });\n    return;\n  }\n\n  // Find current slide\n  const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n  let stopIndex = 0;\n  let groupSize = swiper.slidesSizesGrid[0];\n  for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n    const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n    if (typeof slidesGrid[i + increment] !== 'undefined') {\n      if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n        stopIndex = i;\n        groupSize = slidesGrid[i + increment] - slidesGrid[i];\n      }\n    } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n      stopIndex = i;\n      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n    }\n  }\n  let rewindFirstIndex = null;\n  let rewindLastIndex = null;\n  if (params.rewind) {\n    if (swiper.isBeginning) {\n      rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n    } else if (swiper.isEnd) {\n      rewindFirstIndex = 0;\n    }\n  }\n  // Find current slide size\n  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n  const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\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) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n    }\n    if (swiper.swipeDirection === 'prev') {\n      if (ratio > 1 - params.longSwipesRatio) {\n        swiper.slideTo(stopIndex + increment);\n      } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n        swiper.slideTo(rewindLastIndex);\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    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n    if (!isNavButtonTarget) {\n      if (swiper.swipeDirection === 'next') {\n        swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n      }\n      if (swiper.swipeDirection === 'prev') {\n        swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n      }\n    } else if (e.target === swiper.navigation.nextEl) {\n      swiper.slideTo(stopIndex + increment);\n    } else {\n      swiper.slideTo(stopIndex);\n    }\n  }\n}\n\nfunction onResize() {\n  const swiper = this;\n  const {\n    params,\n    el\n  } = swiper;\n  if (el && el.offsetWidth === 0) return;\n\n  // Breakpoints\n  if (params.breakpoints) {\n    swiper.setBreakpoint();\n  }\n\n  // Save locks\n  const {\n    allowSlideNext,\n    allowSlidePrev,\n    snapGrid\n  } = swiper;\n  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n  // Disable locks on resize\n  swiper.allowSlideNext = true;\n  swiper.allowSlidePrev = true;\n  swiper.updateSize();\n  swiper.updateSlides();\n  swiper.updateSlidesClasses();\n  const isVirtualLoop = isVirtual && params.loop;\n  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n    swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n  } else {\n    if (swiper.params.loop && !isVirtual) {\n      swiper.slideToLoop(swiper.realIndex, 0, false, true);\n    } else {\n      swiper.slideTo(swiper.activeIndex, 0, false, true);\n    }\n  }\n  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n    clearTimeout(swiper.autoplay.resizeTimeout);\n    swiper.autoplay.resizeTimeout = setTimeout(() => {\n      if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n        swiper.autoplay.resume();\n      }\n    }, 500);\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}\n\nfunction onClick(e) {\n  const swiper = this;\n  if (!swiper.enabled) return;\n  if (!swiper.allowClick) {\n    if (swiper.params.preventClicks) e.preventDefault();\n    if (swiper.params.preventClicksPropagation && swiper.animating) {\n      e.stopPropagation();\n      e.stopImmediatePropagation();\n    }\n  }\n}\n\nfunction onScroll() {\n  const swiper = this;\n  const {\n    wrapperEl,\n    rtlTranslate,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  swiper.previousTranslate = swiper.translate;\n  if (swiper.isHorizontal()) {\n    swiper.translate = -wrapperEl.scrollLeft;\n  } else {\n    swiper.translate = -wrapperEl.scrollTop;\n  }\n  // eslint-disable-next-line\n  if (swiper.translate === 0) swiper.translate = 0;\n  swiper.updateActiveIndex();\n  swiper.updateSlidesClasses();\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n  }\n  if (newProgress !== swiper.progress) {\n    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n  }\n  swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n  const swiper = this;\n  processLazyPreloader(swiper, e.target);\n  if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n    return;\n  }\n  swiper.update();\n}\n\nfunction onDocumentTouchStart() {\n  const swiper = this;\n  if (swiper.documentTouchHandlerProceeded) return;\n  swiper.documentTouchHandlerProceeded = true;\n  if (swiper.params.touchReleaseOnEdges) {\n    swiper.el.style.touchAction = 'auto';\n  }\n}\n\nconst events = (swiper, method) => {\n  const document = getDocument();\n  const {\n    params,\n    el,\n    wrapperEl,\n    device\n  } = swiper;\n  const capture = !!params.nested;\n  const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n  const swiperMethod = method;\n  if (!el || typeof el === 'string') return;\n\n  // Touch Events\n  document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n    passive: false,\n    capture\n  });\n  el[domMethod]('touchstart', swiper.onTouchStart, {\n    passive: false\n  });\n  el[domMethod]('pointerdown', swiper.onTouchStart, {\n    passive: false\n  });\n  document[domMethod]('touchmove', swiper.onTouchMove, {\n    passive: false,\n    capture\n  });\n  document[domMethod]('pointermove', swiper.onTouchMove, {\n    passive: false,\n    capture\n  });\n  document[domMethod]('touchend', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointerup', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointercancel', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('touchcancel', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointerout', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointerleave', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('contextmenu', swiper.onTouchEnd, {\n    passive: true\n  });\n\n  // Prevent Links Clicks\n  if (params.preventClicks || params.preventClicksPropagation) {\n    el[domMethod]('click', swiper.onClick, true);\n  }\n  if (params.cssMode) {\n    wrapperEl[domMethod]('scroll', swiper.onScroll);\n  }\n\n  // Resize handler\n  if (params.updateOnWindowResize) {\n    swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n  } else {\n    swiper[swiperMethod]('observerUpdate', onResize, true);\n  }\n\n  // Images loader\n  el[domMethod]('load', swiper.onLoad, {\n    capture: true\n  });\n};\nfunction attachEvents() {\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  swiper.onTouchStart = onTouchStart.bind(swiper);\n  swiper.onTouchMove = onTouchMove.bind(swiper);\n  swiper.onTouchEnd = onTouchEnd.bind(swiper);\n  swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n  if (params.cssMode) {\n    swiper.onScroll = onScroll.bind(swiper);\n  }\n  swiper.onClick = onClick.bind(swiper);\n  swiper.onLoad = onLoad.bind(swiper);\n  events(swiper, 'on');\n}\nfunction detachEvents() {\n  const swiper = this;\n  events(swiper, 'off');\n}\nvar events$1 = {\n  attachEvents,\n  detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n  return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n  const swiper = this;\n  const {\n    realIndex,\n    initialized,\n    params,\n    el\n  } = swiper;\n  const breakpoints = params.breakpoints;\n  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n  const document = getDocument();\n\n  // Get breakpoint for window/container width and update parameters\n  const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container';\n  const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase);\n  const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer);\n  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n  const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n  const wasMultiRow = isGridEnabled(swiper, params);\n  const isMultiRow = isGridEnabled(swiper, breakpointParams);\n  const wasGrabCursor = swiper.params.grabCursor;\n  const isGrabCursor = breakpointParams.grabCursor;\n  const wasEnabled = params.enabled;\n  if (wasMultiRow && !isMultiRow) {\n    el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n    swiper.emitContainerClasses();\n  } else if (!wasMultiRow && isMultiRow) {\n    el.classList.add(`${params.containerModifierClass}grid`);\n    if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n      el.classList.add(`${params.containerModifierClass}grid-column`);\n    }\n    swiper.emitContainerClasses();\n  }\n  if (wasGrabCursor && !isGrabCursor) {\n    swiper.unsetGrabCursor();\n  } else if (!wasGrabCursor && isGrabCursor) {\n    swiper.setGrabCursor();\n  }\n\n  // Toggle navigation, pagination, scrollbar\n  ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n    if (typeof breakpointParams[prop] === 'undefined') return;\n    const wasModuleEnabled = params[prop] && params[prop].enabled;\n    const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n    if (wasModuleEnabled && !isModuleEnabled) {\n      swiper[prop].disable();\n    }\n    if (!wasModuleEnabled && isModuleEnabled) {\n      swiper[prop].enable();\n    }\n  });\n  const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n  const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n  const wasLoop = params.loop;\n  if (directionChanged && initialized) {\n    swiper.changeDirection();\n  }\n  extend(swiper.params, breakpointParams);\n  const isEnabled = swiper.params.enabled;\n  const hasLoop = swiper.params.loop;\n  Object.assign(swiper, {\n    allowTouchMove: swiper.params.allowTouchMove,\n    allowSlideNext: swiper.params.allowSlideNext,\n    allowSlidePrev: swiper.params.allowSlidePrev\n  });\n  if (wasEnabled && !isEnabled) {\n    swiper.disable();\n  } else if (!wasEnabled && isEnabled) {\n    swiper.enable();\n  }\n  swiper.currentBreakpoint = breakpoint;\n  swiper.emit('_beforeBreakpoint', breakpointParams);\n  if (initialized) {\n    if (needsReLoop) {\n      swiper.loopDestroy();\n      swiper.loopCreate(realIndex);\n      swiper.updateSlides();\n    } else if (!wasLoop && hasLoop) {\n      swiper.loopCreate(realIndex);\n      swiper.updateSlides();\n    } else if (wasLoop && !hasLoop) {\n      swiper.loopDestroy();\n    }\n  }\n  swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n  if (base === void 0) {\n    base = 'window';\n  }\n  if (!breakpoints || base === 'container' && !containerEl) return undefined;\n  let breakpoint = false;\n  const window = getWindow();\n  const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n  const points = Object.keys(breakpoints).map(point => {\n    if (typeof point === 'string' && point.indexOf('@') === 0) {\n      const minRatio = parseFloat(point.substr(1));\n      const value = currentHeight * minRatio;\n      return {\n        value,\n        point\n      };\n    }\n    return {\n      value: point,\n      point\n    };\n  });\n  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n  for (let i = 0; i < points.length; i += 1) {\n    const {\n      point,\n      value\n    } = points[i];\n    if (base === 'window') {\n      if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n        breakpoint = point;\n      }\n    } else if (value <= containerEl.clientWidth) {\n      breakpoint = point;\n    }\n  }\n  return breakpoint || 'max';\n}\n\nvar breakpoints = {\n  setBreakpoint,\n  getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n  const resultClasses = [];\n  entries.forEach(item => {\n    if (typeof item === 'object') {\n      Object.keys(item).forEach(classNames => {\n        if (item[classNames]) {\n          resultClasses.push(prefix + classNames);\n        }\n      });\n    } else if (typeof item === 'string') {\n      resultClasses.push(prefix + item);\n    }\n  });\n  return resultClasses;\n}\nfunction addClasses() {\n  const swiper = this;\n  const {\n    classNames,\n    params,\n    rtl,\n    el,\n    device\n  } = swiper;\n  // prettier-ignore\n  const suffixes = prepareClasses(['initialized', params.direction, {\n    'free-mode': swiper.params.freeMode && params.freeMode.enabled\n  }, {\n    'autoheight': params.autoHeight\n  }, {\n    'rtl': rtl\n  }, {\n    'grid': params.grid && params.grid.rows > 1\n  }, {\n    'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n  }, {\n    'android': device.android\n  }, {\n    'ios': device.ios\n  }, {\n    'css-mode': params.cssMode\n  }, {\n    'centered': params.cssMode && params.centeredSlides\n  }, {\n    'watch-progress': params.watchSlidesProgress\n  }], params.containerModifierClass);\n  classNames.push(...suffixes);\n  el.classList.add(...classNames);\n  swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n  const swiper = this;\n  const {\n    el,\n    classNames\n  } = swiper;\n  if (!el || typeof el === 'string') return;\n  el.classList.remove(...classNames);\n  swiper.emitContainerClasses();\n}\n\nvar classes = {\n  addClasses,\n  removeClasses\n};\n\nfunction checkOverflow() {\n  const swiper = this;\n  const {\n    isLocked: wasLocked,\n    params\n  } = swiper;\n  const {\n    slidesOffsetBefore\n  } = params;\n  if (slidesOffsetBefore) {\n    const lastSlideIndex = swiper.slides.length - 1;\n    const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n    swiper.isLocked = swiper.size > lastSlideRightEdge;\n  } else {\n    swiper.isLocked = swiper.snapGrid.length === 1;\n  }\n  if (params.allowSlideNext === true) {\n    swiper.allowSlideNext = !swiper.isLocked;\n  }\n  if (params.allowSlidePrev === true) {\n    swiper.allowSlidePrev = !swiper.isLocked;\n  }\n  if (wasLocked && wasLocked !== swiper.isLocked) {\n    swiper.isEnd = false;\n  }\n  if (wasLocked !== swiper.isLocked) {\n    swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n  }\n}\nvar checkOverflow$1 = {\n  checkOverflow\n};\n\nvar defaults = {\n  init: true,\n  direction: 'horizontal',\n  oneWayMovement: false,\n  swiperElementNodeName: 'SWIPER-CONTAINER',\n  touchEventsTarget: 'wrapper',\n  initialSlide: 0,\n  speed: 300,\n  cssMode: false,\n  updateOnWindowResize: true,\n  resizeObserver: true,\n  nested: false,\n  createElements: false,\n  eventsPrefix: 'swiper',\n  enabled: true,\n  focusableElements: 'input, select, option, textarea, button, video, label',\n  // Overrides\n  width: null,\n  height: null,\n  //\n  preventInteractionOnTransition: false,\n  // ssr\n  userAgent: null,\n  url: null,\n  // To support iOS's swipe-to-go-back gesture (when being used in-app).\n  edgeSwipeDetection: false,\n  edgeSwipeThreshold: 20,\n  // Autoheight\n  autoHeight: false,\n  // Set wrapper width\n  setWrapperSize: false,\n  // Virtual Translate\n  virtualTranslate: false,\n  // Effects\n  effect: 'slide',\n  // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n  // Breakpoints\n  breakpoints: undefined,\n  breakpointsBase: 'window',\n  // Slides grid\n  spaceBetween: 0,\n  slidesPerView: 1,\n  slidesPerGroup: 1,\n  slidesPerGroupSkip: 0,\n  slidesPerGroupAuto: false,\n  centeredSlides: false,\n  centeredSlidesBounds: false,\n  slidesOffsetBefore: 0,\n  // in px\n  slidesOffsetAfter: 0,\n  // in px\n  normalizeSlideIndex: true,\n  centerInsufficientSlides: false,\n  // Disable swiper and hide navigation when container not overflow\n  watchOverflow: true,\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: 5,\n  touchMoveStopPropagation: false,\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  // Cursor\n  grabCursor: false,\n  // Clicks\n  preventClicks: true,\n  preventClicksPropagation: true,\n  slideToClickedSlide: false,\n  // loop\n  loop: false,\n  loopAddBlankSlides: true,\n  loopAdditionalSlides: 0,\n  loopPreventsSliding: true,\n  // rewind\n  rewind: false,\n  // Swiping/no swiping\n  allowSlidePrev: true,\n  allowSlideNext: true,\n  swipeHandler: null,\n  // '.swipe-handler',\n  noSwiping: true,\n  noSwipingClass: 'swiper-no-swiping',\n  noSwipingSelector: null,\n  // Passive Listeners\n  passiveListeners: true,\n  maxBackfaceHiddenSlides: 10,\n  // NS\n  containerModifierClass: 'swiper-',\n  // NEW\n  slideClass: 'swiper-slide',\n  slideBlankClass: 'swiper-slide-blank',\n  slideActiveClass: 'swiper-slide-active',\n  slideVisibleClass: 'swiper-slide-visible',\n  slideFullyVisibleClass: 'swiper-slide-fully-visible',\n  slideNextClass: 'swiper-slide-next',\n  slidePrevClass: 'swiper-slide-prev',\n  wrapperClass: 'swiper-wrapper',\n  lazyPreloaderClass: 'swiper-lazy-preloader',\n  lazyPreloadPrevNext: 0,\n  // Callbacks\n  runCallbacksOnInit: true,\n  // Internals\n  _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n  return function extendParams(obj) {\n    if (obj === void 0) {\n      obj = {};\n    }\n    const moduleParamName = Object.keys(obj)[0];\n    const moduleParams = obj[moduleParamName];\n    if (typeof moduleParams !== 'object' || moduleParams === null) {\n      extend(allModulesParams, obj);\n      return;\n    }\n    if (params[moduleParamName] === true) {\n      params[moduleParamName] = {\n        enabled: true\n      };\n    }\n    if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n      params[moduleParamName].auto = true;\n    }\n    if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n      params[moduleParamName].auto = true;\n    }\n    if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n      extend(allModulesParams, obj);\n      return;\n    }\n    if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n      params[moduleParamName].enabled = true;\n    }\n    if (!params[moduleParamName]) params[moduleParamName] = {\n      enabled: false\n    };\n    extend(allModulesParams, obj);\n  };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n  eventsEmitter,\n  update,\n  translate,\n  transition,\n  slide,\n  loop,\n  grabCursor,\n  events: events$1,\n  breakpoints,\n  checkOverflow: checkOverflow$1,\n  classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n  constructor() {\n    let el;\n    let params;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n      params = args[0];\n    } else {\n      [el, params] = args;\n    }\n    if (!params) params = {};\n    params = extend({}, params);\n    if (el && !params.el) params.el = el;\n    const document = getDocument();\n    if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n      const swipers = [];\n      document.querySelectorAll(params.el).forEach(containerEl => {\n        const newParams = extend({}, params, {\n          el: containerEl\n        });\n        swipers.push(new Swiper(newParams));\n      });\n      // eslint-disable-next-line no-constructor-return\n      return swipers;\n    }\n\n    // Swiper Instance\n    const swiper = this;\n    swiper.__swiper__ = true;\n    swiper.support = getSupport();\n    swiper.device = getDevice({\n      userAgent: params.userAgent\n    });\n    swiper.browser = getBrowser();\n    swiper.eventsListeners = {};\n    swiper.eventsAnyListeners = [];\n    swiper.modules = [...swiper.__modules__];\n    if (params.modules && Array.isArray(params.modules)) {\n      swiper.modules.push(...params.modules);\n    }\n    const allModulesParams = {};\n    swiper.modules.forEach(mod => {\n      mod({\n        params,\n        swiper,\n        extendParams: moduleExtendParams(params, allModulesParams),\n        on: swiper.on.bind(swiper),\n        once: swiper.once.bind(swiper),\n        off: swiper.off.bind(swiper),\n        emit: swiper.emit.bind(swiper)\n      });\n    });\n\n    // Extend defaults with modules params\n    const swiperParams = extend({}, defaults, allModulesParams);\n\n    // Extend defaults with passed params\n    swiper.params = extend({}, swiperParams, extendedDefaults, params);\n    swiper.originalParams = extend({}, swiper.params);\n    swiper.passedParams = extend({}, params);\n\n    // add event listeners\n    if (swiper.params && swiper.params.on) {\n      Object.keys(swiper.params.on).forEach(eventName => {\n        swiper.on(eventName, swiper.params.on[eventName]);\n      });\n    }\n    if (swiper.params && swiper.params.onAny) {\n      swiper.onAny(swiper.params.onAny);\n    }\n\n    // Extend Swiper\n    Object.assign(swiper, {\n      enabled: swiper.params.enabled,\n      el,\n      // Classes\n      classNames: [],\n      // Slides\n      slides: [],\n      slidesGrid: [],\n      snapGrid: [],\n      slidesSizesGrid: [],\n      // isDirection\n      isHorizontal() {\n        return swiper.params.direction === 'horizontal';\n      },\n      isVertical() {\n        return swiper.params.direction === 'vertical';\n      },\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      cssOverflowAdjustment() {\n        // Returns 0 unless `translate` is > 2**23\n        // Should be subtracted from css values to prevent overflow\n        return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n      },\n      // Locks\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n      // Touch Events\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        focusableElements: swiper.params.focusableElements,\n        // Last click time\n        lastClickTime: 0,\n        clickTimeout: undefined,\n        // Velocities\n        velocities: [],\n        allowMomentumBounce: undefined,\n        startMoving: undefined,\n        pointerId: null,\n        touchId: null\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    swiper.emit('_swiper');\n\n    // Init\n    if (swiper.params.init) {\n      swiper.init();\n    }\n\n    // Return app instance\n    // eslint-disable-next-line no-constructor-return\n    return swiper;\n  }\n  getDirectionLabel(property) {\n    if (this.isHorizontal()) {\n      return property;\n    }\n    // prettier-ignore\n    return {\n      'width': 'height',\n      'margin-top': 'margin-left',\n      'margin-bottom ': 'margin-right',\n      'margin-left': 'margin-top',\n      'margin-right': 'margin-bottom',\n      'padding-left': 'padding-top',\n      'padding-right': 'padding-bottom',\n      'marginRight': 'marginBottom'\n    }[property];\n  }\n  getSlideIndex(slideEl) {\n    const {\n      slidesEl,\n      params\n    } = this;\n    const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n    const firstSlideIndex = elementIndex(slides[0]);\n    return elementIndex(slideEl) - firstSlideIndex;\n  }\n  getSlideIndexByData(index) {\n    return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index));\n  }\n  recalcSlides() {\n    const swiper = this;\n    const {\n      slidesEl,\n      params\n    } = swiper;\n    swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n  }\n  enable() {\n    const swiper = this;\n    if (swiper.enabled) return;\n    swiper.enabled = true;\n    if (swiper.params.grabCursor) {\n      swiper.setGrabCursor();\n    }\n    swiper.emit('enable');\n  }\n  disable() {\n    const swiper = this;\n    if (!swiper.enabled) return;\n    swiper.enabled = false;\n    if (swiper.params.grabCursor) {\n      swiper.unsetGrabCursor();\n    }\n    swiper.emit('disable');\n  }\n  setProgress(progress, speed) {\n    const swiper = this;\n    progress = Math.min(Math.max(progress, 0), 1);\n    const min = swiper.minTranslate();\n    const max = swiper.maxTranslate();\n    const current = (max - min) * progress + min;\n    swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  emitContainerClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const cls = swiper.el.className.split(' ').filter(className => {\n      return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n    });\n    swiper.emit('_containerClasses', cls.join(' '));\n  }\n  getSlideClasses(slideEl) {\n    const swiper = this;\n    if (swiper.destroyed) return '';\n    return slideEl.className.split(' ').filter(className => {\n      return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n    }).join(' ');\n  }\n  emitSlidesClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const updates = [];\n    swiper.slides.forEach(slideEl => {\n      const classNames = swiper.getSlideClasses(slideEl);\n      updates.push({\n        slideEl,\n        classNames\n      });\n      swiper.emit('_slideClass', slideEl, classNames);\n    });\n    swiper.emit('_slideClasses', updates);\n  }\n  slidesPerViewDynamic(view, exact) {\n    if (view === void 0) {\n      view = 'current';\n    }\n    if (exact === void 0) {\n      exact = false;\n    }\n    const swiper = this;\n    const {\n      params,\n      slides,\n      slidesGrid,\n      slidesSizesGrid,\n      size: swiperSize,\n      activeIndex\n    } = swiper;\n    let spv = 1;\n    if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n    if (params.centeredSlides) {\n      let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n      let breakLoop;\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += Math.ceil(slides[i].swiperSlideSize);\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n      for (let i = activeIndex - 1; i >= 0; i -= 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n    } else {\n      // eslint-disable-next-line\n      if (view === 'current') {\n        for (let i = activeIndex + 1; i < slides.length; i += 1) {\n          const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      } else {\n        // previous\n        for (let i = activeIndex - 1; i >= 0; i -= 1) {\n          const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      }\n    }\n    return spv;\n  }\n  update() {\n    const swiper = this;\n    if (!swiper || swiper.destroyed) return;\n    const {\n      snapGrid,\n      params\n    } = swiper;\n    // Breakpoints\n    if (params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n    [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n      if (imageEl.complete) {\n        processLazyPreloader(swiper, imageEl);\n      }\n    });\n    swiper.updateSize();\n    swiper.updateSlides();\n    swiper.updateProgress();\n    swiper.updateSlidesClasses();\n    function setTranslate() {\n      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n      swiper.setTranslate(newTranslate);\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n    let translated;\n    if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n      setTranslate();\n      if (params.autoHeight) {\n        swiper.updateAutoHeight();\n      }\n    } else {\n      if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n        const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n        translated = swiper.slideTo(slides.length - 1, 0, false, true);\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  changeDirection(newDirection, needUpdate) {\n    if (needUpdate === void 0) {\n      needUpdate = true;\n    }\n    const swiper = this;\n    const 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.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n    swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n    swiper.emitContainerClasses();\n    swiper.params.direction = newDirection;\n    swiper.slides.forEach(slideEl => {\n      if (newDirection === 'vertical') {\n        slideEl.style.width = '';\n      } else {\n        slideEl.style.height = '';\n      }\n    });\n    swiper.emit('changeDirection');\n    if (needUpdate) swiper.update();\n    return swiper;\n  }\n  changeLanguageDirection(direction) {\n    const swiper = this;\n    if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n    swiper.rtl = direction === 'rtl';\n    swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n    if (swiper.rtl) {\n      swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n      swiper.el.dir = 'rtl';\n    } else {\n      swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n      swiper.el.dir = 'ltr';\n    }\n    swiper.update();\n  }\n  mount(element) {\n    const swiper = this;\n    if (swiper.mounted) return true;\n\n    // Find el\n    let el = element || swiper.params.el;\n    if (typeof el === 'string') {\n      el = document.querySelector(el);\n    }\n    if (!el) {\n      return false;\n    }\n    el.swiper = swiper;\n    if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n      swiper.isElement = true;\n    }\n    const getWrapperSelector = () => {\n      return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n    };\n    const getWrapper = () => {\n      if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n        const res = el.shadowRoot.querySelector(getWrapperSelector());\n        // Children needs to return slot items\n        return res;\n      }\n      return elementChildren(el, getWrapperSelector())[0];\n    };\n    // Find Wrapper\n    let wrapperEl = getWrapper();\n    if (!wrapperEl && swiper.params.createElements) {\n      wrapperEl = createElement('div', swiper.params.wrapperClass);\n      el.append(wrapperEl);\n      elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n        wrapperEl.append(slideEl);\n      });\n    }\n    Object.assign(swiper, {\n      el,\n      wrapperEl,\n      slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n      hostEl: swiper.isElement ? el.parentNode.host : el,\n      mounted: true,\n      // RTL\n      rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n      wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n    });\n    return true;\n  }\n  init(el) {\n    const swiper = this;\n    if (swiper.initialized) return swiper;\n    const mounted = swiper.mount(el);\n    if (mounted === false) return swiper;\n    swiper.emit('beforeInit');\n\n    // Set breakpoint\n    if (swiper.params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n\n    // Add Classes\n    swiper.addClasses();\n\n    // Update size\n    swiper.updateSize();\n\n    // Update slides\n    swiper.updateSlides();\n    if (swiper.params.watchOverflow) {\n      swiper.checkOverflow();\n    }\n\n    // Set Grab Cursor\n    if (swiper.params.grabCursor && swiper.enabled) {\n      swiper.setGrabCursor();\n    }\n\n    // Slide To Initial Slide\n    if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n    } else {\n      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n    }\n\n    // Create loop\n    if (swiper.params.loop) {\n      swiper.loopCreate(undefined, true);\n    }\n\n    // Attach events\n    swiper.attachEvents();\n    const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n    if (swiper.isElement) {\n      lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n    }\n    lazyElements.forEach(imageEl => {\n      if (imageEl.complete) {\n        processLazyPreloader(swiper, imageEl);\n      } else {\n        imageEl.addEventListener('load', e => {\n          processLazyPreloader(swiper, e.target);\n        });\n      }\n    });\n    preload(swiper);\n\n    // Init Flag\n    swiper.initialized = true;\n    preload(swiper);\n\n    // Emit\n    swiper.emit('init');\n    swiper.emit('afterInit');\n    return swiper;\n  }\n  destroy(deleteInstance, cleanStyles) {\n    if (deleteInstance === void 0) {\n      deleteInstance = true;\n    }\n    if (cleanStyles === void 0) {\n      cleanStyles = true;\n    }\n    const swiper = this;\n    const {\n      params,\n      el,\n      wrapperEl,\n      slides\n    } = swiper;\n    if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n      return null;\n    }\n    swiper.emit('beforeDestroy');\n\n    // Init Flag\n    swiper.initialized = false;\n\n    // Detach events\n    swiper.detachEvents();\n\n    // Destroy loop\n    if (params.loop) {\n      swiper.loopDestroy();\n    }\n\n    // Cleanup styles\n    if (cleanStyles) {\n      swiper.removeClasses();\n      if (el && typeof el !== 'string') {\n        el.removeAttribute('style');\n      }\n      if (wrapperEl) {\n        wrapperEl.removeAttribute('style');\n      }\n      if (slides && slides.length) {\n        slides.forEach(slideEl => {\n          slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n          slideEl.removeAttribute('style');\n          slideEl.removeAttribute('data-swiper-slide-index');\n        });\n      }\n    }\n    swiper.emit('destroy');\n\n    // Detach emitter events\n    Object.keys(swiper.eventsListeners).forEach(eventName => {\n      swiper.off(eventName);\n    });\n    if (deleteInstance !== false) {\n      if (swiper.el && typeof swiper.el !== 'string') {\n        swiper.el.swiper = null;\n      }\n      deleteProps(swiper);\n    }\n    swiper.destroyed = true;\n    return null;\n  }\n  static extendDefaults(newDefaults) {\n    extend(extendedDefaults, newDefaults);\n  }\n  static get extendedDefaults() {\n    return extendedDefaults;\n  }\n  static get defaults() {\n    return defaults;\n  }\n  static installModule(mod) {\n    if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n    const modules = Swiper.prototype.__modules__;\n    if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n      modules.push(mod);\n    }\n  }\n  static use(module) {\n    if (Array.isArray(module)) {\n      module.forEach(m => Swiper.installModule(m));\n      return Swiper;\n    }\n    Swiper.installModule(module);\n    return Swiper;\n  }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n  Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n    Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n  });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n"],"names":["Mousewheel","_ref","swiper","extendParams","on","emit","window","timeout","mousewheel","enabled","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","params","delta","direction","isEnd","loop","animating","slideNext","raw","isBeginning","slidePrev","Date","getTime","handle","event","e","disableParentSwiper","target","closest","cssMode","preventDefault","targetEl","el","document","querySelector","targetElContainsTarget","contains","originalEvent","rtlFactor","rtlTranslate","data","sX","sY","pX","pY","detail","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaY","deltaX","shiftKey","deltaMode","spinX","spinY","pixelX","pixelY","normalize","isHorizontal","Math","abs","positions","getTranslate","minTranslate","maxTranslate","nested","stopPropagation","freeMode","time","sign","ignoreWheelEvents","undefined","position","wasBeginning","wasEnd","setTransition","setTranslate","updateProgress","updateActiveIndex","updateSlidesClasses","loopFix","byMousewheel","sticky","clearTimeout","length","shift","prevEvent","firstEvent","push","splice","snapToThreshold","n","destroyed","slideToClosest","speed","autoplay","disableOnInteraction","stop","releaseScroll","returnValue","events","method","enable","wrapperEl","removeEventListener","disable","addEventListener","Object","assign","Scrollbar","g","dragStartPos","dragSize","trackSize","divider","isTouched","dragTimeout","scrollbar","rtl","dragEl","progress","progressLoop","newSize","newPos","style","transform","width","height","hide","opacity","setTimeout","transitionDuration","updateSize","offsetWidth","offsetHeight","size","virtualSize","slidesOffsetBefore","centeredSlides","snapGrid","parseInt","display","watchOverflow","classList","isLocked","lockClass","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","max","min","onDragStart","getBoundingClientRect","onDragMove","cancelable","onDragEnd","snapOnRelease","activeListener","passiveListeners","passive","capture","passiveListener","eventMethod","init","swiperEl","originalParams","checkProps","createElements","keys","forEach","key","auto","element","c","className","append","isElement","querySelectorAll","classes","uniqueNavElements","add","horizontalClass","verticalClass","dragClass","trim","replace","draggable","destroy","remove","scrollbarDisabledClass","m","subEl","_s","duration","isObject","obj","constructor","extend","src","noExtend","filter","indexOf","ssrDocument","body","activeElement","blur","nodeName","getElementById","createEvent","initEvent","createElement","children","childNodes","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","screen","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","classesToTokens","split","deleteProps","object","nextTick","delay","now","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","webkitTransform","map","a","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","o","prototype","call","slice","to","arguments","i","nextSource","node","HTMLElement","nodeType","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","targetPosition","side","startPosition","translate","startTime","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","easeProgress","cos","PI","currentPosition","scrollTo","overflow","elementChildren","selector","HTMLSlotElement","assignedElements","matches","elementIsChildOf","parent","isChild","includes","slot","elementsQueue","elementToCheck","shadowRoot","elementIsChildOfSlot","showWarning","text","console","warn","err","tag","Array","isArray","elementOffset","box","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementPrevAll","prevEls","previousElementSibling","prev","elementNextAll","nextEls","nextElementSibling","next","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parentElement","elementOuterSize","includeMargins","makeElementsArray","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","screenHeight","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","major","minor","num","Number","isWebView","test","isSafariBrowser","need3dFix","calcBrowser","eventsEmitter","handler","priority","self","eventsListeners","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","eventHandler","context","_len2","_key2","unshift","toggleSlideClasses$1","slideEl","condition","toggleSlideClasses","processLazyPreloader","imageEl","slideClass","lazyEl","lazyPreloaderClass","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","realIndex","update","clientWidth","clientHeight","isVertical","isNaN","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","wrongRTL","isVirtual","virtual","previousSlidesLength","slidesLength","slidesGrid","slidesSizesGrid","offsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","marginLeft","marginRight","marginBottom","marginTop","s","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","getSlideByIndex","getSlideIndexByData","visibleSlides","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","multiplier","translatesDiff","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","getFilteredSlide","activeSlide","prevSlide","nextSlide","find","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","slideRealIndex","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","val","normalizedSnapGrid","isFreeMode","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","loopAddBlankSlides","recalcSlides","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isInitialOverflow","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","onTouchStart","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","touchEventsTarget","which","button","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","touchMoveStopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","_loopSwapReset","loopSwapReset","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","domMethod","swiperMethod","updateOnWindowResize","isGridEnabled","defaults","swiperElementNodeName","resizeObserver","eventsPrefix","url","breakpointsBase","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","prototypes","transition","transitionDelay","moving","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpointContainer","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","use","module","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect"],"sourceRoot":""}