PageSourceSearch

https://okendo.io/wp-content/themes/okendo/dist/index-legacy.js?ver=1790139781

js okendo.io collected 2026-09-24 08:43:49 UTC 735,145 bytes, 19,382 lines download raw bytes

1var __defProp = Object.defineProperty;
2var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4(function() {
5  "use strict";
6  class Accordion {
7    constructor($el) {
8      this.activeClass = "is-active";
9      this.$accordions = document.querySelectorAll(".js-accordion");
10      this.$accordions.forEach(($accordion) => {
11        const $sections = $accordion.querySelectorAll(".js-accordion-section");
12        const $auxiliaryContent = $accordion.querySelectorAll(".js-accordion-auxiliary-content");
13        $sections.forEach(($section, index) => {
14          const $button = $section.querySelector(".js-accordion-button");
15          const $content = $section.querySelector(".js-accordion-content");
16          $button.addEventListener("click", () => {
17            $section.classList.toggle(this.activeClass);
18            $content.setAttribute("aria-expanded", $section.classList.contains(this.activeClass));
19            $sections.forEach(($aSection) => {
20              if ($aSection !== $section) {
21                $aSection.classList.remove(this.activeClass);
22              }
23            });
24            $auxiliaryContent.forEach(($auxiliary) => {
25              $auxiliary.classList.remove(this.activeClass);
26            });
27            if ($auxiliaryContent[index]) {
28              $auxiliaryContent[index].classList.add(this.activeClass);
29            }
30          });
31        });
32      });
33    }
34  }
35  class Analytics {
36    constructor() {
37      this.$elements = document.querySelectorAll("[data-ga]");
38      this.$elements.forEach((element) => this.setup(element));
39    }
40    /**
41     * @function setup
42     * @param {HTMLElement} el
43     */
44    setup(el) {
45      el.addEventListener("click", () => {
46        const parts = el.dataset.ga.split("|");
47        const category = parts[0];
48        const action = parts[1];
49        const label = parts[2];
50        this.constructor.send(category, action, label);
51      });
52    }
53    /**
54     * @funtion send
55     * @param {String} category
56     * @param {String} action
57     * @param {String} label
58     */
59    static send(category, action, label) {
60      if (!window.ga) return;
61      window.ga("send", "event", category, action, label);
62    }
63  }
64  class OkendoIntercom {
65    constructor() {
66      if (!window.Intercom) return;
67      const $els = document.querySelectorAll(".js-invoke-intercom, [href='#js-invoke-intercom']");
68      $els.forEach(($el) => {
69        $el.addEventListener("click", (e) => {
70          e.preventDefault();
71          Intercom("showNewMessage");
72        });
73      });
74    }
75  }
76  class Steps {
77    constructor() {
78      document.querySelectorAll(".js-steps").forEach(($el) => new StepsElement$1($el));
79    }
80  }
81  let StepsElement$1 = class StepsElement {
82    constructor($el) {
83      __publicField(this, "MIN_DESKTOP_WIDTH", 1440);
84      this.$el = $el;
85      this.$bar = this.$el.querySelector(".js-steps-bar");
86      this.$progressBar = this.$el.querySelector(".js-steps-progress-bar");
87      this.$steps = document.querySelectorAll(".js-steps-bar-step");
88      this.$container = this.$el.querySelector(".js-steps-progress-container");
89      if (this.$container) {
90        this.buildLeftPoints();
91        window.addEventListener("scroll", this.scroll.bind(this));
92        window.addEventListener("resize", this.resize.bind(this));
93      }
94    }
95    buildLeftPoints() {
96      this.leftPoints = [];
97      const { width } = this.$container.getBoundingClientRect();
98      const { offsetWidth } = document.body;
99      this.$steps.forEach(($step) => {
100        const { left } = $step.getBoundingClientRect();
101        let percentage = Math.round(left / offsetWidth * 100);
102        if (window.innerWidth < this.MIN_DESKTOP_WIDTH) {
103          percentage = Math.round(left / (width + offsetWidth) * 100);
104        }
105        this.leftPoints.push(percentage);
106      });
107    }
108    scroll() {
109      const viewportTop = document.body.scrollTop + document.documentElement.scrollTop;
110      const componentRect = this.$el.getBoundingClientRect();
111      const componentPageOffsetY = componentRect.top + viewportTop;
112      const viewportHeight = window.innerHeight;
113      const wpAdminBar = document.getElementById("wpadminbar");
114      const siteHeader = document.querySelector(".js-header");
115      const siteHeaderHight = wpAdminBar ? wpAdminBar.offsetHeight + siteHeader.offsetHeight : siteHeader.offsetHeight;
116      const componentViewportScroll = Math.min(1, Math.max(0, (viewportTop - componentPageOffsetY + siteHeaderHight + viewportHeight / 3) / componentRect.height));
117      this.leftPoints.forEach((point, index) => {
118        this.$steps[index].classList.toggle("has-passed", componentViewportScroll * 100 >= point);
119      });
120      const percentage = componentViewportScroll * 100;
121      this.$progressBar.style.width = `${percentage}%`;
122      if (window.innerWidth < 1440) {
123        this.$container.style.transform = `translateX(-${percentage}%)`;
124      }
125    }
126    resize() {
127      this.$container.style.transform = `translateX(0)`;
128      this.buildLeftPoints();
129    }
130  };
131  class VanillaTilt {
132    constructor(element, settings = {}) {
133      if (!(element instanceof Node)) {
134        throw "Can't initialize VanillaTilt because " + element + " is not a Node.";
135      }
136      this.width = null;
137      this.height = null;
138      this.clientWidth = null;
139      this.clientHeight = null;
140      this.left = null;
141      this.top = null;
142      this.gammazero = null;
143      this.betazero = null;
144      this.lastgammazero = null;
145      this.lastbetazero = null;
146      this.transitionTimeout = null;
147      this.updateCall = null;
148      this.event = null;
149      this.updateBind = this.update.bind(this);
150      this.resetBind = this.reset.bind(this);
151      this.element = element;
152      this.settings = this.extendSettings(settings);
153      this.reverse = this.settings.reverse ? -1 : 1;
154      this.resetToStart = VanillaTilt.isSettingTrue(this.settings["reset-to-start"]);
155      this.glare = VanillaTilt.isSettingTrue(this.settings.glare);
156      this.glarePrerender = VanillaTilt.isSettingTrue(this.settings["glare-prerender"]);
157      this.fullPageListening = VanillaTilt.isSettingTrue(this.settings["full-page-listening"]);
158      this.gyroscope = VanillaTilt.isSettingTrue(this.settings.gyroscope);
159      this.gyroscopeSamples = this.settings.gyroscopeSamples;
160      this.elementListener = this.getElementListener();
161      if (this.glare) {
162        this.prepareGlare();
163      }
164      if (this.fullPageListening) {
165        this.updateClientSize();
166      }
167      this.addEventListeners();
168      this.reset();
169      if (this.resetToStart === false) {
170        this.settings.startX = 0;
171        this.settings.startY = 0;
172      }
173    }
174    static isSettingTrue(setting) {
175      return setting === "" || setting === true || setting === 1;
176    }
177    /**
178     * Method returns element what will be listen mouse events
179     * @return {Node}
180     */
181    getElementListener() {
182      if (this.fullPageListening) {
183        return window.document;
184      }
185      if (typeof this.settings["mouse-event-element"] === "string") {
186        const mouseEventElement = document.querySelector(this.settings["mouse-event-element"]);
187        if (mouseEventElement) {
188          return mouseEventElement;
189        }
190      }
191      if (this.settings["mouse-event-element"] instanceof Node) {
192        return this.settings["mouse-event-element"];
193      }
194      return this.element;
195    }
196    /**
197     * Method set listen methods for this.elementListener
198     * @return {Node}
199     */
200    addEventListeners() {
201      this.onMouseEnterBind = this.onMouseEnter.bind(this);
202      this.onMouseMoveBind = this.onMouseMove.bind(this);
203      this.onMouseLeaveBind = this.onMouseLeave.bind(this);
204      this.onWindowResizeBind = this.onWindowResize.bind(this);
205      this.onDeviceOrientationBind = this.onDeviceOrientation.bind(this);
206      this.elementListener.addEventListener("mouseenter", this.onMouseEnterBind);
207      this.elementListener.addEventListener("mouseleave", this.onMouseLeaveBind);
208      this.elementListener.addEventListener("mousemove", this.onMouseMoveBind);
209      if (this.glare || this.fullPageListening) {
210        window.addEventListener("resize", this.onWindowResizeBind);
211      }
212      if (this.gyroscope) {
213        window.addEventListener("deviceorientation", this.onDeviceOrientationBind);
214      }
215    }
216    /**
217     * Method remove event listeners from current this.elementListener
218     */
219    removeEventListeners() {
220      this.elementListener.removeEventListener("mouseenter", this.onMouseEnterBind);
221      this.elementListener.removeEventListener("mouseleave", this.onMouseLeaveBind);
222      this.elementListener.removeEventListener("mousemove", this.onMouseMoveBind);
223      if (this.gyroscope) {
224        window.removeEventListener("deviceorientation", this.onDeviceOrientationBind);
225      }
226      if (this.glare || this.fullPageListening) {
227        window.removeEventListener("resize", this.onWindowResizeBind);
228      }
229    }
230    destroy() {
231      clearTimeout(this.transitionTimeout);
232      if (this.updateCall !== null) {
233        cancelAnimationFrame(this.updateCall);
234      }
235      this.element.style.willChange = "";
236      this.element.style.transition = "";
237      this.element.style.transform = "";
238      this.resetGlare();
239      this.removeEventListeners();
240      this.element.vanillaTilt = null;
241      delete this.element.vanillaTilt;
242      this.element = null;
243    }
244    onDeviceOrientation(event) {
245      if (event.gamma === null || event.beta === null) {
246        return;
247      }
248      this.updateElementPosition();
249      if (this.gyroscopeSamples > 0) {
250        this.lastgammazero = this.gammazero;
251        this.lastbetazero = this.betazero;
252        if (this.gammazero === null) {
253          this.gammazero = event.gamma;
254          this.betazero = event.beta;
255        } else {
256          this.gammazero = (event.gamma + this.lastgammazero) / 2;
257          this.betazero = (event.beta + this.lastbetazero) / 2;
258        }
259        this.gyroscopeSamples -= 1;
260      }
261      const totalAngleX = this.settings.gyroscopeMaxAngleX - this.settings.gyroscopeMinAngleX;
262      const totalAngleY = this.settings.gyroscopeMaxAngleY - this.settings.gyroscopeMinAngleY;
263      const degreesPerPixelX = totalAngleX / this.width;
264      const degreesPerPixelY = totalAngleY / this.height;
265      const angleX = event.gamma - (this.settings.gyroscopeMinAngleX + this.gammazero);
266      const angleY = event.beta - (this.settings.gyroscopeMinAngleY + this.betazero);
267      const posX = angleX / degreesPerPixelX;
268      const posY = angleY / degreesPerPixelY;
269      if (this.updateCall !== null) {
270        cancelAnimationFrame(this.updateCall);
271      }
272      this.event = {
273        clientX: posX + this.left,
274        clientY: posY + this.top
275      };
276      this.updateCall = requestAnimationFrame(this.updateBind);
277    }
278    onMouseEnter() {
279      this.updateElementPosition();
280      this.element.style.willChange = "transform";
281      this.setTransition();
282    }
283    onMouseMove(event) {
284      if (this.updateCall !== null) {
285        cancelAnimationFrame(this.updateCall);
286      }
287      this.event = event;
288      this.updateCall = requestAnimationFrame(this.updateBind);
289    }
290    onMouseLeave() {
291      this.setTransition();
292      if (this.settings.reset) {
293        requestAnimationFrame(this.resetBind);
294      }
295    }
296    reset() {
297      this.onMouseEnter();
298      if (this.fullPageListening) {
299        this.event = {
300          clientX: (this.settings.startX + this.settings.max) / (2 * this.settings.max) * this.clientWidth,
301          clientY: (this.settings.startY + this.settings.max) / (2 * this.settings.max) * this.clientHeight
302        };
303      } else {
304        this.event = {
305          clientX: this.left + (this.settings.startX + this.settings.max) / (2 * this.settings.max) * this.width,
306          clientY: this.top + (this.settings.startY + this.settings.max) / (2 * this.settings.max) * this.height
307        };
308      }
309      let backupScale = this.settings.scale;
310      this.settings.scale = 1;
311      this.update();
312      this.settings.scale = backupScale;
313      this.resetGlare();
314    }
315    resetGlare() {
316      if (this.glare) {
317        this.glareElement.style.transform = "rotate(180deg) translate(-50%, -50%)";
318        this.glareElement.style.opacity = "0";
319      }
320    }
321    getValues() {
322      let x, y;
323      if (this.fullPageListening) {
324        x = this.event.clientX / this.clientWidth;
325        y = this.event.clientY / this.clientHeight;
326      } else {
327        x = (this.event.clientX - this.left) / this.width;
328        y = (this.event.clientY - this.top) / this.height;
329      }
330      x = Math.min(Math.max(x, 0), 1);
331      y = Math.min(Math.max(y, 0), 1);
332      let tiltX = (this.reverse * (this.settings.max - x * this.settings.max * 2)).toFixed(2);
333      let tiltY = (this.reverse * (y * this.settings.max * 2 - this.settings.max)).toFixed(2);
334      let angle = Math.atan2(this.event.clientX - (this.left + this.width / 2), -(this.event.clientY - (this.top + this.height / 2))) * (180 / Math.PI);
335      return {
336        tiltX,
337        tiltY,
338        percentageX: x * 100,
339        percentageY: y * 100,
340        angle
341      };
342    }
343    updateElementPosition() {
344      let rect = this.element.getBoundingClientRect();
345      this.width = this.element.offsetWidth;
346      this.height = this.element.offsetHeight;
347      this.left = rect.left;
348      this.top = rect.top;
349    }
350    update() {
351      let values = this.getValues();
352      this.element.style.transform = "perspective(" + this.settings.perspective + "px) rotateX(" + (this.settings.axis === "x" ? 0 : values.tiltY) + "deg) rotateY(" + (this.settings.axis === "y" ? 0 : values.tiltX) + "deg) scale3d(" + this.settings.scale + ", " + this.settings.scale + ", " + this.settings.scale + ")";
353      if (this.glare) {
354        this.glareElement.style.transform = `rotate(${values.angle}deg) translate(-50%, -50%)`;
355        this.glareElement.style.opacity = `${values.percentageY * this.settings["max-glare"] / 100}`;
356      }
357      this.element.dispatchEvent(new CustomEvent("tiltChange", {
358        "detail": values
359      }));
360      this.updateCall = null;
361    }
362    /**
363     * Appends the glare element (if glarePrerender equals false)
364     * and sets the default style
365     */
366    prepareGlare() {
367      if (!this.glarePrerender) {
368        const jsTiltGlare = document.createElement("div");
369        jsTiltGlare.classList.add("js-tilt-glare");
370        const jsTiltGlareInner = document.createElement("div");
371        jsTiltGlareInner.classList.add("js-tilt-glare-inner");
372        jsTiltGlare.appendChild(jsTiltGlareInner);
373        this.element.appendChild(jsTiltGlare);
374      }
375      this.glareElementWrapper = this.element.querySelector(".js-tilt-glare");
376      this.glareElement = this.element.querySelector(".js-tilt-glare-inner");
377      if (this.glarePrerender) {
378        return;
379      }
380      Object.assign(this.glareElementWrapper.style, {
381        "position": "absolute",
382        "top": "0",
383        "left": "0",
384        "width": "100%",
385        "height": "100%",
386        "overflow": "hidden",
387        "pointer-events": "none",
388        "border-radius": "inherit"
389      });
390      Object.assign(this.glareElement.style, {
391        "position": "absolute",
392        "top": "50%",
393        "left": "50%",
394        "pointer-events": "none",
395        "background-image": `linear-gradient(0deg, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 100%)`,
396        "transform": "rotate(180deg) translate(-50%, -50%)",
397        "transform-origin": "0% 0%",
398        "opacity": "0"
399      });
400      this.updateGlareSize();
401    }
402    updateGlareSize() {
403      if (this.glare) {
404        const glareSize = (this.element.offsetWidth > this.element.offsetHeight ? this.element.offsetWidth : this.element.offsetHeight) * 2;
405        Object.assign(this.glareElement.style, {
406          "width": `${glareSize}px`,
407          "height": `${glareSize}px`
408        });
409      }
410    }
411    updateClientSize() {
412      this.clientWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
413      this.clientHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
414    }
415    onWindowResize() {
416      this.updateGlareSize();
417      this.updateClientSize();
418    }
419    setTransition() {
420      clearTimeout(this.transitionTimeout);
421      this.element.style.transition = this.settings.speed + "ms " + this.settings.easing;
422      if (this.glare) this.glareElement.style.transition = `opacity ${this.settings.speed}ms ${this.settings.easing}`;
423      this.transitionTimeout = setTimeout(() => {
424        this.element.style.transition = "";
425        if (this.glare) {
426          this.glareElement.style.transition = "";
427        }
428      }, this.settings.speed);
429    }
430    /**
431     * Method return patched settings of instance
432     * @param {boolean} settings.reverse - reverse the tilt direction
433     * @param {number} settings.max - max tilt rotation (degrees)
434     * @param {startX} settings.startX - the starting tilt on the X axis, in degrees. Default: 0
435     * @param {startY} settings.startY - the starting tilt on the Y axis, in degrees. Default: 0
436     * @param {number} settings.perspective - Transform perspective, the lower the more extreme the tilt gets
437     * @param {string} settings.easing - Easing on enter/exit
438     * @param {number} settings.scale - 2 = 200%, 1.5 = 150%, etc..
439     * @param {number} settings.speed - Speed of the enter/exit transition
440     * @param {boolean} settings.transition - Set a transition on enter/exit
441     * @param {string|null} settings.axis - What axis should be enabled. Can be "x" or "y"
442     * @param {boolean} settings.glare - if it should have a "glare" effect
443     * @param {number} settings.max-glare - the maximum "glare" opacity (1 = 100%, 0.5 = 50%)
444     * @param {boolean} settings.glare-prerender - false = VanillaTilt creates the glare elements for you, otherwise
445     * @param {boolean} settings.full-page-listening - If true, parallax effect will listen to mouse move events on the whole document, not only the selected element
446     * @param {string|object} settings.mouse-event-element - String selector or link to HTML-element what will be listen mouse events
447     * @param {boolean} settings.reset - false = If the tilt effect has to be reset on exit
448     * @param {boolean} settings.reset-to-start - true = On reset event (mouse leave) will return to initial start angle (if startX or startY is set)
449     * @param {gyroscope} settings.gyroscope - Enable tilting by deviceorientation events
450     * @param {gyroscopeSensitivity} settings.gyroscopeSensitivity - Between 0 and 1 - The angle at which max tilt position is reached. 1 = 90deg, 0.5 = 45deg, etc..
451     * @param {gyroscopeSamples} settings.gyroscopeSamples - How many gyroscope moves to decide the starting position.
452     */
453    extendSettings(settings) {
454      let defaultSettings = {
455        reverse: false,
456        max: 15,
457        startX: 0,
458        startY: 0,
459        perspective: 1e3,
460        easing: "cubic-bezier(.03,.98,.52,.99)",
461        scale: 1,
462        speed: 300,
463        transition: true,
464        axis: null,
465        glare: false,
466        "max-glare": 1,
467        "glare-prerender": false,
468        "full-page-listening": false,
469        "mouse-event-element": null,
470        reset: true,
471        "reset-to-start": true,
472        gyroscope: true,
473        gyroscopeMinAngleX: -45,
474        gyroscopeMaxAngleX: 45,
475        gyroscopeMinAngleY: -45,
476        gyroscopeMaxAngleY: 45,
477        gyroscopeSamples: 10
478      };
479      let newSettings = {};
480      for (var property in defaultSettings) {
481        if (property in settings) {
482          newSettings[property] = settings[property];
483        } else if (this.element.hasAttribute("data-tilt-" + property)) {
484          let attribute = this.element.getAttribute("data-tilt-" + property);
485          try {
486            newSettings[property] = JSON.parse(attribute);
487          } catch (e) {
488            newSettings[property] = attribute;
489          }
490        } else {
491          newSettings[property] = defaultSettings[property];
492        }
493      }
494      return newSettings;
495    }
496    static init(elements, settings) {
497      if (elements instanceof Node) {
498        elements = [elements];
499      }
500      if (elements instanceof NodeList) {
501        elements = [].slice.call(elements);
502      }
503      if (!(elements instanceof Array)) {
504        return;
505      }
506      elements.forEach((element) => {
507        if (!("vanillaTilt" in element)) {
508          element.vanillaTilt = new VanillaTilt(element, settings);
509        }
510      });
511    }
512  }
513  if (typeof document !== "undefined") {
514    window.VanillaTilt = VanillaTilt;
515    VanillaTilt.init(document.querySelectorAll("[data-tilt]"));
516  }
517  const { lg } = { lg: 1024 };
518  class Tilt {
519    constructor() {
520      if (window.innerWidth < lg) {
521        return;
522      }
523      document.querySelectorAll(".js-tilt").forEach(($el) => {
524        VanillaTilt.init($el, {
525          max: 5,
526          scale: 1.05,
527          speed: 700,
528          glare: $el.dataset.tiltGlare !== void 0 ? $el.dataset.tiltGlare === "true" : true,
529          "max-glare": 0.2,
530          gyroscopeMinAngleX: -10,
531          gyroscopeMaxAngleX: 10,
532          gyroscopeMinAngleY: -10,
533          gyroscopeMaxAngleY: 10
534        });
535      });
536    }
537  }
538  class Anchor {
539    constructor() {
540      this.$links = document.querySelectorAll(".js-anchor");
541      this.$links.forEach(($link) => {
542        $link.addEventListener("click", (e) => {
543          e.preventDefault();
544          const $el = document.querySelector($link.getAttribute("href"));
545          const $header = document.querySelector(".js-header");
546          history.replaceState(null, null, $link.getAttribute("href"));
547          if ($el) {
548            const headerHeight = $header.offsetHeight;
549            const elTop = $el.getBoundingClientRect().top;
550            const scrollPos = window.scrollY || document.documentElement.scrollTop || document.body.scrollTop || 0;
551            window.scrollTo({
552              top: elTop + scrollPos - headerHeight,
553              behavior: "smooth"
554            });
555          }
556        });
557      });
558    }
559  }
560  class Modal {
561    constructor() {
562      this.$modal = document.querySelector(".js-modal");
563      if (!this.$modal) {
564        return;
565      }
566      this.$modalContent = document.querySelector(".js-modal-content");
567      this.$modalClose = this.$modal.querySelector(".js-modal-close");
568      this.$modalClose.addEventListener("click", this.hideDetails.bind(this));
569      document.querySelectorAll(".js-open-modal").forEach((item) => {
570        item.addEventListener("click", (e) => {
571          e.preventDefault();
572          this.showDetails(e.currentTarget.dataset.modalContent);
573        });
574      });
575    }
576    showDetails(embed) {
577      this.modalOpen = true;
578      document.body.classList.add("scrolling-disabled");
579      this.$modal.classList.remove("hidden");
580      this.$modal.setAttribute("aria-hidden", "false");
581      this.$modalContent.innerHTML = embed;
582    }
583    hideDetails(e) {
584      e.preventDefault();
585      this.$modal.classList.add("hidden");
586      this.$modal.setAttribute("aria-hidden", "true");
587      document.body.classList.remove("scrolling-disabled");
588      this.modalOpen = false;
589      this.pauseVideo();
590    }
591    pauseVideo() {
592      this.$modalContent.firstChild.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', "*");
593    }
594  }
595  function getDefaultExportFromCjs(x) {
596    return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
597  }
598  var js = { exports: {} };
599  var core$1 = { exports: {} };
600  var evEmitter$1 = { exports: {} };
601  var evEmitter = evEmitter$1.exports;
602  var hasRequiredEvEmitter;
603  function requireEvEmitter() {
604    if (hasRequiredEvEmitter) return evEmitter$1.exports;
605    hasRequiredEvEmitter = 1;
606    (function(module) {
607      (function(global2, factory) {
608        if (module.exports) {
609          module.exports = factory();
610        } else {
611          global2.EvEmitter = factory();
612        }
613      })(typeof window != "undefined" ? window : evEmitter, function() {
614        function EvEmitter() {
615        }
616        let proto = EvEmitter.prototype;
617        proto.on = function(eventName, listener) {
618          if (!eventName || !listener) return this;
619          let events = this._events = this._events || {};
620          let listeners = events[eventName] = events[eventName] || [];
621          if (!listeners.includes(listener)) {
622            listeners.push(listener);
623          }
624          return this;
625        };
626        proto.once = function(eventName, listener) {
627          if (!eventName || !listener) return this;
628          this.on(eventName, listener);
629          let onceEvents = this._onceEvents = this._onceEvents || {};
630          let onceListeners = onceEvents[eventName] = onceEvents[eventName] || {};
631          onceListeners[listener] = true;
632          return this;
633        };
634        proto.off = function(eventName, listener) {
635          let listeners = this._events && this._events[eventName];
636          if (!listeners || !listeners.length) return this;
637          let index = listeners.indexOf(listener);
638          if (index != -1) {
639            listeners.splice(index, 1);
640          }
641          return this;
642        };
643        proto.emitEvent = function(eventName, args) {
644          let listeners = this._events && this._events[eventName];
645          if (!listeners || !listeners.length) return this;
646          listeners = listeners.slice(0);
647          args = args || [];
648          let onceListeners = this._onceEvents && this._onceEvents[eventName];
649          for (let listener of listeners) {
650            let isOnce = onceListeners && onceListeners[listener];
651            if (isOnce) {
652              this.off(eventName, listener);
653              delete onceListeners[listener];
654            }
655            listener.apply(this, args);
656          }
657          return this;
658        };
659        proto.allOff = function() {
660          delete this._events;
661          delete this._onceEvents;
662          return this;
663        };
664        return EvEmitter;
665      });
666    })(evEmitter$1);
667    return evEmitter$1.exports;
668  }
669  var getSize = { exports: {} };
670  /*!
671   * Infinite Scroll v2.0.4
672   * measure size of elements
673   * MIT license
674   */
675  var hasRequiredGetSize;
676  function requireGetSize() {
677    if (hasRequiredGetSize) return getSize.exports;
678    hasRequiredGetSize = 1;
679    (function(module) {
680      (function(window2, factory) {
681        if (module.exports) {
682          module.exports = factory();
683        } else {
684          window2.getSize = factory();
685        }
686      })(window, function factory() {
687        function getStyleSize(value) {
688          let num = parseFloat(value);
689          let isValid = value.indexOf("%") == -1 && !isNaN(num);
690          return isValid && num;
691        }
692        let measurements = [
693          "paddingLeft",
694          "paddingRight",
695          "paddingTop",
696          "paddingBottom",
697          "marginLeft",
698          "marginRight",
699          "marginTop",
700          "marginBottom",
701          "borderLeftWidth",
702          "borderRightWidth",
703          "borderTopWidth",
704          "borderBottomWidth"
705        ];
706        function getZeroSize() {
707          let size = {
708            width: 0,
709            height: 0,
710            innerWidth: 0,
711            innerHeight: 0,
712            outerWidth: 0,
713            outerHeight: 0
714          };
vendor: 83,567 bytes, lines 715-2794
715          measurements.forEach((measurement) => {
716            size[measurement] = 0;
717          });
718          return size;
719        }
720        function getSize2(elem) {
721          if (typeof elem == "string") elem = document.querySelector(elem);
722          let isElement = elem && typeof elem == "object" && elem.nodeType;
723          if (!isElement) return;
724          let style = getComputedStyle(elem);
725          if (style.display == "none") return getZeroSize();
726          let size = {};
727          size.width = elem.offsetWidth;
728          size.height = elem.offsetHeight;
729          let isBorderBox = size.isBorderBox = style.boxSizing == "border-box";
730          measurements.forEach((measurement) => {
731            let value = style[measurement];
732            let num = parseFloat(value);
733            size[measurement] = !isNaN(num) ? num : 0;
734          });
735          let paddingWidth = size.paddingLeft + size.paddingRight;
736          let paddingHeight = size.paddingTop + size.paddingBottom;
737          let marginWidth = size.marginLeft + size.marginRight;
738          let marginHeight = size.marginTop + size.marginBottom;
739          let borderWidth = size.borderLeftWidth + size.borderRightWidth;
740          let borderHeight = size.borderTopWidth + size.borderBottomWidth;
741          let styleWidth = getStyleSize(style.width);
742          if (styleWidth !== false) {
743            size.width = styleWidth + // add padding and border unless it's already including it
744            (isBorderBox ? 0 : paddingWidth + borderWidth);
745          }
746          let styleHeight = getStyleSize(style.height);
747          if (styleHeight !== false) {
748            size.height = styleHeight + // add padding and border unless it's already including it
749            (isBorderBox ? 0 : paddingHeight + borderHeight);
750          }
751          size.innerWidth = size.width - (paddingWidth + borderWidth);
752          size.innerHeight = size.height - (paddingHeight + borderHeight);
753          size.outerWidth = size.width + marginWidth;
754          size.outerHeight = size.height + marginHeight;
755          return size;
756        }
757        return getSize2;
758      });
759    })(getSize);
760    return getSize.exports;
761  }
762  var utils$3 = { exports: {} };
763  var utils$2 = utils$3.exports;
764  var hasRequiredUtils;
765  function requireUtils() {
766    if (hasRequiredUtils) return utils$3.exports;
767    hasRequiredUtils = 1;
768    (function(module) {
769      (function(global2, factory) {
770        if (module.exports) {
771          module.exports = factory(global2);
772        } else {
773          global2.fizzyUIUtils = factory(global2);
774        }
775      })(utils$2, function factory(global2) {
776        let utils2 = {};
777        utils2.extend = function(a, b) {
778          return Object.assign(a, b);
779        };
780        utils2.modulo = function(num, div) {
781          return (num % div + div) % div;
782        };
783        utils2.makeArray = function(obj) {
784          if (Array.isArray(obj)) return obj;
785          if (obj === null || obj === void 0) return [];
786          let isArrayLike = typeof obj == "object" && typeof obj.length == "number";
787          if (isArrayLike) return [...obj];
788          return [obj];
789        };
790        utils2.removeFrom = function(ary, obj) {
791          let index = ary.indexOf(obj);
792          if (index != -1) {
793            ary.splice(index, 1);
794          }
795        };
796        utils2.getParent = function(elem, selector2) {
797          while (elem.parentNode && elem != document.body) {
798            elem = elem.parentNode;
799            if (elem.matches(selector2)) return elem;
800          }
801        };
802        utils2.getQueryElement = function(elem) {
803          if (typeof elem == "string") {
804            return document.querySelector(elem);
805          }
806          return elem;
807        };
808        utils2.handleEvent = function(event) {
809          let method = "on" + event.type;
810          if (this[method]) {
811            this[method](event);
812          }
813        };
814        utils2.filterFindElements = function(elems, selector2) {
815          elems = utils2.makeArray(elems);
816          return elems.filter((elem) => elem instanceof HTMLElement).reduce((ffElems, elem) => {
817            if (!selector2) {
818              ffElems.push(elem);
819              return ffElems;
820            }
821            if (elem.matches(selector2)) {
822              ffElems.push(elem);
823            }
824            let childElems = elem.querySelectorAll(selector2);
825            ffElems = ffElems.concat(...childElems);
826            return ffElems;
827          }, []);
828        };
829        utils2.debounceMethod = function(_class, methodName, threshold) {
830          threshold = threshold || 100;
831          let method = _class.prototype[methodName];
832          let timeoutName = methodName + "Timeout";
833          _class.prototype[methodName] = function() {
834            clearTimeout(this[timeoutName]);
835            let args = arguments;
836            this[timeoutName] = setTimeout(() => {
837              method.apply(this, args);
838              delete this[timeoutName];
839            }, threshold);
840          };
841        };
842        utils2.docReady = function(onDocReady) {
843          let readyState = document.readyState;
844          if (readyState == "complete" || readyState == "interactive") {
845            setTimeout(onDocReady);
846          } else {
847            document.addEventListener("DOMContentLoaded", onDocReady);
848          }
849        };
850        utils2.toDashed = function(str) {
851          return str.replace(/(.)([A-Z])/g, function(match, $1, $2) {
852            return $1 + "-" + $2;
853          }).toLowerCase();
854        };
855        let console2 = global2.console;
856        utils2.htmlInit = function(WidgetClass, namespace) {
857          utils2.docReady(function() {
858            let dashedNamespace = utils2.toDashed(namespace);
859            let dataAttr = "data-" + dashedNamespace;
860            let dataAttrElems = document.querySelectorAll(`[${dataAttr}]`);
861            let jQuery2 = global2.jQuery;
862            [...dataAttrElems].forEach((elem) => {
863              let attr = elem.getAttribute(dataAttr);
864              let options;
865              try {
866                options = attr && JSON.parse(attr);
867              } catch (error) {
868                if (console2) {
869                  console2.error(`Error parsing ${dataAttr} on ${elem.className}: ${error}`);
870                }
871                return;
872              }
873              let instance = new WidgetClass(elem, options);
874              if (jQuery2) {
875                jQuery2.data(elem, namespace, instance);
876              }
877            });
878          });
879        };
880        return utils2;
881      });
882    })(utils$3);
883    return utils$3.exports;
884  }
885  var cell$1 = { exports: {} };
886  var cell = cell$1.exports;
887  var hasRequiredCell;
888  function requireCell() {
889    if (hasRequiredCell) return cell$1.exports;
890    hasRequiredCell = 1;
891    (function(module) {
892      (function(window2, factory) {
893        if (module.exports) {
894          module.exports = factory(requireGetSize());
895        } else {
896          window2.Flickity = window2.Flickity || {};
897          window2.Flickity.Cell = factory(window2.getSize);
898        }
899      })(typeof window != "undefined" ? window : cell, function factory(getSize2) {
900        const cellClassName = "flickity-cell";
901        function Cell(elem) {
902          this.element = elem;
903          this.element.classList.add(cellClassName);
904          this.x = 0;
905          this.unselect();
906        }
907        let proto = Cell.prototype;
908        proto.destroy = function() {
909          this.unselect();
910          this.element.classList.remove(cellClassName);
911          this.element.style.transform = "";
912          this.element.removeAttribute("aria-hidden");
913        };
914        proto.getSize = function() {
915          this.size = getSize2(this.element);
916        };
917        proto.select = function() {
918          this.element.classList.add("is-selected");
919          this.element.removeAttribute("aria-hidden");
920        };
921        proto.unselect = function() {
922          this.element.classList.remove("is-selected");
923          this.element.setAttribute("aria-hidden", "true");
924        };
925        proto.remove = function() {
926          this.element.remove();
927        };
928        return Cell;
929      });
930    })(cell$1);
931    return cell$1.exports;
932  }
933  var slide$1 = { exports: {} };
934  var slide = slide$1.exports;
935  var hasRequiredSlide;
936  function requireSlide() {
937    if (hasRequiredSlide) return slide$1.exports;
938    hasRequiredSlide = 1;
939    (function(module) {
940      (function(window2, factory) {
941        if (module.exports) {
942          module.exports = factory();
943        } else {
944          window2.Flickity = window2.Flickity || {};
945          window2.Flickity.Slide = factory();
946        }
947      })(typeof window != "undefined" ? window : slide, function factory() {
948        function Slide(beginMargin, endMargin, cellAlign) {
949          this.beginMargin = beginMargin;
950          this.endMargin = endMargin;
951          this.cellAlign = cellAlign;
952          this.cells = [];
953          this.outerWidth = 0;
954          this.height = 0;
955        }
956        let proto = Slide.prototype;
957        proto.addCell = function(cell2) {
958          this.cells.push(cell2);
959          this.outerWidth += cell2.size.outerWidth;
960          this.height = Math.max(cell2.size.outerHeight, this.height);
961          if (this.cells.length === 1) {
962            this.x = cell2.x;
963            this.firstMargin = cell2.size[this.beginMargin];
964          }
965        };
966        proto.updateTarget = function() {
967          let lastCell = this.getLastCell();
968          let lastMargin = lastCell ? lastCell.size[this.endMargin] : 0;
969          let slideWidth = this.outerWidth - (this.firstMargin + lastMargin);
970          this.target = this.x + this.firstMargin + slideWidth * this.cellAlign;
971        };
972        proto.getLastCell = function() {
973          return this.cells[this.cells.length - 1];
974        };
975        proto.select = function() {
976          this.cells.forEach((cell2) => cell2.select());
977        };
978        proto.unselect = function() {
979          this.cells.forEach((cell2) => cell2.unselect());
980        };
981        proto.getCellElements = function() {
982          return this.cells.map((cell2) => cell2.element);
983        };
984        return Slide;
985      });
986    })(slide$1);
987    return slide$1.exports;
988  }
989  var animate$1 = { exports: {} };
990  var animate = animate$1.exports;
991  var hasRequiredAnimate;
992  function requireAnimate() {
993    if (hasRequiredAnimate) return animate$1.exports;
994    hasRequiredAnimate = 1;
995    (function(module) {
996      (function(window2, factory) {
997        if (module.exports) {
998          module.exports = factory(requireUtils());
999        } else {
1000          window2.Flickity = window2.Flickity || {};
1001          window2.Flickity.animatePrototype = factory(window2.fizzyUIUtils);
1002        }
1003      })(typeof window != "undefined" ? window : animate, function factory(utils2) {
1004        let proto = {};
1005        proto.startAnimation = function() {
1006          if (this.isAnimating) return;
1007          this.isAnimating = true;
1008          this.restingFrames = 0;
1009          this.animate();
1010        };
1011        proto.animate = function() {
1012          this.applyDragForce();
1013          this.applySelectedAttraction();
1014          let previousX = this.x;
1015          this.integratePhysics();
1016          this.positionSlider();
1017          this.settle(previousX);
1018          if (this.isAnimating) requestAnimationFrame(() => this.animate());
1019        };
1020        proto.positionSlider = function() {
1021          let x = this.x;
1022          if (this.isWrapping) {
1023            x = utils2.modulo(x, this.slideableWidth) - this.slideableWidth;
1024            this.shiftWrapCells(x);
1025          }
1026          this.setTranslateX(x, this.isAnimating);
1027          this.dispatchScrollEvent();
1028        };
1029        proto.setTranslateX = function(x, is3d) {
1030          x += this.cursorPosition;
1031          if (this.options.rightToLeft) x = -x;
1032          let translateX = this.getPositionValue(x);
1033          this.slider.style.transform = is3d ? `translate3d(${translateX},0,0)` : `translateX(${translateX})`;
1034        };
1035        proto.dispatchScrollEvent = function() {
1036          let firstSlide = this.slides[0];
1037          if (!firstSlide) return;
1038          let positionX = -this.x - firstSlide.target;
1039          let progress = positionX / this.slidesWidth;
1040          this.dispatchEvent("scroll", null, [progress, positionX]);
1041        };
1042        proto.positionSliderAtSelected = function() {
1043          if (!this.cells.length) return;
1044          this.x = -this.selectedSlide.target;
1045          this.velocity = 0;
1046          this.positionSlider();
1047        };
1048        proto.getPositionValue = function(position) {
1049          if (this.options.percentPosition) {
1050            return Math.round(position / this.size.innerWidth * 1e4) * 0.01 + "%";
1051          } else {
1052            return Math.round(position) + "px";
1053          }
1054        };
1055        proto.settle = function(previousX) {
1056          let isResting = !this.isPointerDown && Math.round(this.x * 100) === Math.round(previousX * 100);
1057          if (isResting) this.restingFrames++;
1058          if (this.restingFrames > 2) {
1059            this.isAnimating = false;
1060            delete this.isFreeScrolling;
1061            this.positionSlider();
1062            this.dispatchEvent("settle", null, [this.selectedIndex]);
1063          }
1064        };
1065        proto.shiftWrapCells = function(x) {
1066          let beforeGap = this.cursorPosition + x;
1067          this._shiftCells(this.beforeShiftCells, beforeGap, -1);
1068          let afterGap = this.size.innerWidth - (x + this.slideableWidth + this.cursorPosition);
1069          this._shiftCells(this.afterShiftCells, afterGap, 1);
1070        };
1071        proto._shiftCells = function(cells, gap, shift) {
1072          cells.forEach((cell2) => {
1073            let cellShift = gap > 0 ? shift : 0;
1074            this._wrapShiftCell(cell2, cellShift);
1075            gap -= cell2.size.outerWidth;
1076          });
1077        };
1078        proto._unshiftCells = function(cells) {
1079          if (!cells || !cells.length) return;
1080          cells.forEach((cell2) => this._wrapShiftCell(cell2, 0));
1081        };
1082        proto._wrapShiftCell = function(cell2, shift) {
1083          this._renderCellPosition(cell2, cell2.x + this.slideableWidth * shift);
1084        };
1085        proto.integratePhysics = function() {
1086          this.x += this.velocity;
1087          this.velocity *= this.getFrictionFactor();
1088        };
1089        proto.applyForce = function(force) {
1090          this.velocity += force;
1091        };
1092        proto.getFrictionFactor = function() {
1093          return 1 - this.options[this.isFreeScrolling ? "freeScrollFriction" : "friction"];
1094        };
1095        proto.getRestingPosition = function() {
1096          return this.x + this.velocity / (1 - this.getFrictionFactor());
1097        };
1098        proto.applyDragForce = function() {
1099          if (!this.isDraggable || !this.isPointerDown) return;
1100          let dragVelocity = this.dragX - this.x;
1101          let dragForce = dragVelocity - this.velocity;
1102          this.applyForce(dragForce);
1103        };
1104        proto.applySelectedAttraction = function() {
1105          let dragDown = this.isDraggable && this.isPointerDown;
1106          if (dragDown || this.isFreeScrolling || !this.slides.length) return;
1107          let distance = this.selectedSlide.target * -1 - this.x;
1108          let force = distance * this.options.selectedAttraction;
1109          this.applyForce(force);
1110        };
1111        return proto;
1112      });
1113    })(animate$1);
1114    return animate$1.exports;
1115  }
1116  var core = core$1.exports;
1117  var hasRequiredCore;
1118  function requireCore() {
1119    if (hasRequiredCore) return core$1.exports;
1120    hasRequiredCore = 1;
1121    (function(module) {
1122      (function(window2, factory) {
1123        if (module.exports) {
1124          module.exports = factory(
1125            window2,
1126            requireEvEmitter(),
1127            requireGetSize(),
1128            requireUtils(),
1129            requireCell(),
1130            requireSlide(),
1131            requireAnimate()
1132          );
1133        } else {
1134          let _Flickity = window2.Flickity;
1135          window2.Flickity = factory(
1136            window2,
1137            window2.EvEmitter,
1138            window2.getSize,
1139            window2.fizzyUIUtils,
1140            _Flickity.Cell,
1141            _Flickity.Slide,
1142            _Flickity.animatePrototype
1143          );
1144        }
1145      })(
1146        typeof window != "undefined" ? window : core,
1147        function factory(window2, EvEmitter, getSize2, utils2, Cell, Slide, animatePrototype) {
1148          const { getComputedStyle: getComputedStyle2, console: console2 } = window2;
1149          let { jQuery: jQuery2 } = window2;
1150          let GUID = 0;
1151          let instances = {};
1152          function Flickity2(element, options) {
1153            let queryElement = utils2.getQueryElement(element);
1154            if (!queryElement) {
1155              if (console2) console2.error(`Bad element for Flickity: ${queryElement || element}`);
1156              return;
1157            }
1158            this.element = queryElement;
1159            if (this.element.flickityGUID) {
1160              let instance = instances[this.element.flickityGUID];
1161              if (instance) instance.option(options);
1162              return instance;
1163            }
1164            if (jQuery2) {
1165              this.$element = jQuery2(this.element);
1166            }
1167            this.options = { ...this.constructor.defaults };
1168            this.option(options);
1169            this._create();
1170          }
1171          Flickity2.defaults = {
1172            accessibility: true,
1173            // adaptiveHeight: false,
1174            cellAlign: "center",
1175            // cellSelector: undefined,
1176            // contain: false,
1177            freeScrollFriction: 0.075,
1178            // friction when free-scrolling
1179            friction: 0.28,
1180            // friction when selecting
1181            namespaceJQueryEvents: true,
1182            // initialIndex: 0,
1183            percentPosition: true,
1184            resize: true,
1185            selectedAttraction: 0.025,
1186            setGallerySize: true
1187            // watchCSS: false,
1188            // wrapAround: false
1189          };
1190          Flickity2.create = {};
1191          let proto = Flickity2.prototype;
1192          Object.assign(proto, EvEmitter.prototype);
1193          proto._create = function() {
1194            let { resize, watchCSS, rightToLeft } = this.options;
1195            let id = this.guid = ++GUID;
1196            this.element.flickityGUID = id;
1197            instances[id] = this;
1198            this.selectedIndex = 0;
1199            this.restingFrames = 0;
1200            this.x = 0;
1201            this.velocity = 0;
1202            this.beginMargin = rightToLeft ? "marginRight" : "marginLeft";
1203            this.endMargin = rightToLeft ? "marginLeft" : "marginRight";
1204            this.viewport = document.createElement("div");
1205            this.viewport.className = "flickity-viewport";
1206            this._createSlider();
1207            this.focusableElems = [this.element];
1208            if (resize || watchCSS) {
1209              window2.addEventListener("resize", this);
1210            }
1211            for (let eventName in this.options.on) {
1212              let listener = this.options.on[eventName];
1213              this.on(eventName, listener);
1214            }
1215            for (let method in Flickity2.create) {
1216              Flickity2.create[method].call(this);
1217            }
1218            if (watchCSS) {
1219              this.watchCSS();
1220            } else {
1221              this.activate();
1222            }
1223          };
1224          proto.option = function(opts) {
1225            Object.assign(this.options, opts);
1226          };
1227          proto.activate = function() {
1228            if (this.isActive) return;
1229            this.isActive = true;
1230            this.element.classList.add("flickity-enabled");
1231            if (this.options.rightToLeft) {
1232              this.element.classList.add("flickity-rtl");
1233            }
1234            this.getSize();
1235            let cellElems = this._filterFindCellElements(this.element.children);
1236            this.slider.append(...cellElems);
1237            this.viewport.append(this.slider);
1238            this.element.append(this.viewport);
1239            this.reloadCells();
1240            if (this.options.accessibility) {
1241              this.element.tabIndex = 0;
1242              this.element.addEventListener("keydown", this);
1243            }
1244            this.emitEvent("activate");
1245            this.selectInitialIndex();
1246            this.isInitActivated = true;
1247            this.dispatchEvent("ready");
1248          };
1249          proto._createSlider = function() {
1250            let slider = document.createElement("div");
1251            slider.className = "flickity-slider";
1252            this.slider = slider;
1253          };
1254          proto._filterFindCellElements = function(elems) {
1255            return utils2.filterFindElements(elems, this.options.cellSelector);
1256          };
1257          proto.reloadCells = function() {
1258            this.cells = this._makeCells(this.slider.children);
1259            this.positionCells();
1260            this._updateWrapShiftCells();
1261            this.setGallerySize();
1262          };
1263          proto._makeCells = function(elems) {
1264            let cellElems = this._filterFindCellElements(elems);
1265            return cellElems.map((cellElem) => new Cell(cellElem));
1266          };
1267          proto.getLastCell = function() {
1268            return this.cells[this.cells.length - 1];
1269          };
1270          proto.getLastSlide = function() {
1271            return this.slides[this.slides.length - 1];
1272          };
1273          proto.positionCells = function() {
1274            this._sizeCells(this.cells);
1275            this._positionCells(0);
1276          };
1277          proto._positionCells = function(index) {
1278            index = index || 0;
1279            this.maxCellHeight = index ? this.maxCellHeight || 0 : 0;
1280            let cellX = 0;
1281            if (index > 0) {
1282              let startCell = this.cells[index - 1];
1283              cellX = startCell.x + startCell.size.outerWidth;
1284            }
1285            this.cells.slice(index).forEach((cell2) => {
1286              cell2.x = cellX;
1287              this._renderCellPosition(cell2, cellX);
1288              cellX += cell2.size.outerWidth;
1289              this.maxCellHeight = Math.max(cell2.size.outerHeight, this.maxCellHeight);
1290            });
1291            this.slideableWidth = cellX;
1292            this.updateSlides();
1293            this._containSlides();
1294            this.slidesWidth = this.cells.length ? this.getLastSlide().target - this.slides[0].target : 0;
1295          };
1296          proto._renderCellPosition = function(cell2, x) {
1297            let sideOffset = this.options.rightToLeft ? -1 : 1;
1298            let renderX = x * sideOffset;
1299            if (this.options.percentPosition) renderX *= this.size.innerWidth / cell2.size.width;
1300            let positionValue = this.getPositionValue(renderX);
1301            cell2.element.style.transform = `translateX( ${positionValue} )`;
1302          };
1303          proto._sizeCells = function(cells) {
1304            cells.forEach((cell2) => cell2.getSize());
1305          };
1306          proto.updateSlides = function() {
1307            this.slides = [];
1308            if (!this.cells.length) return;
1309            let { beginMargin, endMargin } = this;
1310            let slide2 = new Slide(beginMargin, endMargin, this.cellAlign);
1311            this.slides.push(slide2);
1312            let canCellFit = this._getCanCellFit();
1313            this.cells.forEach((cell2, i2) => {
1314              if (!slide2.cells.length) {
1315                slide2.addCell(cell2);
1316                return;
1317              }
1318              let slideWidth = slide2.outerWidth - slide2.firstMargin + (cell2.size.outerWidth - cell2.size[endMargin]);
1319              if (canCellFit(i2, slideWidth)) {
1320                slide2.addCell(cell2);
1321              } else {
1322                slide2.updateTarget();
1323                slide2 = new Slide(beginMargin, endMargin, this.cellAlign);
1324                this.slides.push(slide2);
1325                slide2.addCell(cell2);
1326              }
1327            });
1328            slide2.updateTarget();
1329            this.updateSelectedSlide();
1330          };
1331          proto._getCanCellFit = function() {
1332            let { groupCells } = this.options;
1333            if (!groupCells) return () => false;
1334            if (typeof groupCells == "number") {
1335              let number = parseInt(groupCells, 10);
1336              return (i2) => i2 % number !== 0;
1337            }
1338            let percent = 1;
1339            let percentMatch = typeof groupCells == "string" && groupCells.match(/^(\d+)%$/);
1340            if (percentMatch) percent = parseInt(percentMatch[1], 10) / 100;
1341            let groupWidth = (this.size.innerWidth + 1) * percent;
1342            return (i2, slideWidth) => slideWidth <= groupWidth;
1343          };
1344          proto._init = proto.reposition = function() {
1345            this.positionCells();
1346            this.positionSliderAtSelected();
1347          };
1348          proto.getSize = function() {
1349            this.size = getSize2(this.element);
1350            this.setCellAlign();
1351            this.cursorPosition = this.size.innerWidth * this.cellAlign;
1352          };
1353          let cellAlignShorthands = {
1354            left: 0,
1355            center: 0.5,
1356            right: 1
1357          };
1358          proto.setCellAlign = function() {
1359            let { cellAlign, rightToLeft } = this.options;
1360            let shorthand = cellAlignShorthands[cellAlign];
1361            this.cellAlign = shorthand !== void 0 ? shorthand : cellAlign;
1362            if (rightToLeft) this.cellAlign = 1 - this.cellAlign;
1363          };
1364          proto.setGallerySize = function() {
1365            if (!this.options.setGallerySize) return;
1366            let height = this.options.adaptiveHeight && this.selectedSlide ? this.selectedSlide.height : this.maxCellHeight;
1367            this.viewport.style.height = `${height}px`;
1368          };
1369          proto._updateWrapShiftCells = function() {
1370            this.isWrapping = this.getIsWrapping();
1371            if (!this.isWrapping) return;
1372            this._unshiftCells(this.beforeShiftCells);
1373            this._unshiftCells(this.afterShiftCells);
1374            let beforeGapX = this.cursorPosition;
1375            let lastIndex = this.cells.length - 1;
1376            this.beforeShiftCells = this._getGapCells(beforeGapX, lastIndex, -1);
1377            let afterGapX = this.size.innerWidth - this.cursorPosition;
1378            this.afterShiftCells = this._getGapCells(afterGapX, 0, 1);
1379          };
1380          proto.getIsWrapping = function() {
1381            let { wrapAround } = this.options;
1382            if (!wrapAround || this.slides.length < 2) return false;
1383            if (wrapAround !== "fill") return true;
1384            let gapWidth = this.slideableWidth - this.size.innerWidth;
1385            if (gapWidth > this.size.innerWidth) return true;
1386            for (let cell2 of this.cells) {
1387              if (cell2.size.outerWidth > gapWidth) return false;
1388            }
1389            return true;
1390          };
1391          proto._getGapCells = function(gapX, cellIndex, increment) {
1392            let cells = [];
1393            while (gapX > 0) {
1394              let cell2 = this.cells[cellIndex];
1395              if (!cell2) break;
1396              cells.push(cell2);
1397              cellIndex += increment;
1398              gapX -= cell2.size.outerWidth;
1399            }
1400            return cells;
1401          };
1402          proto._containSlides = function() {
1403            let isContaining = this.options.contain && !this.isWrapping && this.cells.length;
1404            if (!isContaining) return;
1405            let contentWidth = this.slideableWidth - this.getLastCell().size[this.endMargin];
1406            let isContentSmaller = contentWidth < this.size.innerWidth;
1407            if (isContentSmaller) {
1408              this.slides.forEach((slide2) => {
1409                slide2.target = contentWidth * this.cellAlign;
1410              });
1411            } else {
1412              let beginBound = this.cursorPosition + this.cells[0].size[this.beginMargin];
1413              let endBound = contentWidth - this.size.innerWidth * (1 - this.cellAlign);
1414              this.slides.forEach((slide2) => {
1415                slide2.target = Math.max(slide2.target, beginBound);
1416                slide2.target = Math.min(slide2.target, endBound);
1417              });
1418            }
1419          };
1420          proto.dispatchEvent = function(type, event, args) {
1421            let emitArgs = event ? [event].concat(args) : args;
1422            this.emitEvent(type, emitArgs);
1423            if (jQuery2 && this.$element) {
1424              type += this.options.namespaceJQueryEvents ? ".flickity" : "";
1425              let $event = type;
1426              if (event) {
1427                let jQEvent = new jQuery2.Event(event);
1428                jQEvent.type = type;
1429                $event = jQEvent;
1430              }
1431              this.$element.trigger($event, args);
1432            }
1433          };
1434          const unidraggerEvents = [
1435            "dragStart",
1436            "dragMove",
1437            "dragEnd",
1438            "pointerDown",
1439            "pointerMove",
1440            "pointerEnd",
1441            "staticClick"
1442          ];
1443          let _emitEvent = proto.emitEvent;
1444          proto.emitEvent = function(eventName, args) {
1445            if (eventName === "staticClick") {
1446              let clickedCell = this.getParentCell(args[0].target);
1447              let cellElem = clickedCell && clickedCell.element;
1448              let cellIndex = clickedCell && this.cells.indexOf(clickedCell);
1449              args = args.concat(cellElem, cellIndex);
1450            }
1451            _emitEvent.call(this, eventName, args);
1452            let isUnidraggerEvent = unidraggerEvents.includes(eventName);
1453            if (!isUnidraggerEvent || !jQuery2 || !this.$element) return;
1454            eventName += this.options.namespaceJQueryEvents ? ".flickity" : "";
1455            let event = args.shift(0);
1456            let jQEvent = new jQuery2.Event(event);
1457            jQEvent.type = eventName;
1458            this.$element.trigger(jQEvent, args);
1459          };
1460          proto.select = function(index, isWrap, isInstant) {
1461            if (!this.isActive) return;
1462            index = parseInt(index, 10);
1463            this._wrapSelect(index);
1464            if (this.isWrapping || isWrap) {
1465              index = utils2.modulo(index, this.slides.length);
1466            }
1467            if (!this.slides[index]) return;
1468            let prevIndex = this.selectedIndex;
1469            this.selectedIndex = index;
1470            this.updateSelectedSlide();
1471            if (isInstant) {
1472              this.positionSliderAtSelected();
1473            } else {
1474              this.startAnimation();
1475            }
1476            if (this.options.adaptiveHeight) {
1477              this.setGallerySize();
1478            }
1479            this.dispatchEvent("select", null, [index]);
1480            if (index !== prevIndex) {
1481              this.dispatchEvent("change", null, [index]);
1482            }
1483          };
1484          proto._wrapSelect = function(index) {
1485            if (!this.isWrapping) return;
1486            const { selectedIndex, slideableWidth, slides: { length } } = this;
1487            if (!this.isDragSelect) {
1488              let wrapIndex = utils2.modulo(index, length);
1489              let delta = Math.abs(wrapIndex - selectedIndex);
1490              let backWrapDelta = Math.abs(wrapIndex + length - selectedIndex);
1491              let forewardWrapDelta = Math.abs(wrapIndex - length - selectedIndex);
1492              if (backWrapDelta < delta) {
1493                index += length;
1494              } else if (forewardWrapDelta < delta) {
1495                index -= length;
1496              }
1497            }
1498            if (index < 0) {
1499              this.x -= slideableWidth;
1500            } else if (index >= length) {
1501              this.x += slideableWidth;
1502            }
1503          };
1504          proto.previous = function(isWrap, isInstant) {
1505            this.select(this.selectedIndex - 1, isWrap, isInstant);
1506          };
1507          proto.next = function(isWrap, isInstant) {
1508            this.select(this.selectedIndex + 1, isWrap, isInstant);
1509          };
1510          proto.updateSelectedSlide = function() {
1511            let slide2 = this.slides[this.selectedIndex];
1512            if (!slide2) return;
1513            this.unselectSelectedSlide();
1514            this.selectedSlide = slide2;
1515            slide2.select();
1516            this.selectedCells = slide2.cells;
1517            this.selectedElements = slide2.getCellElements();
1518            this.selectedCell = slide2.cells[0];
1519            this.selectedElement = this.selectedElements[0];
1520          };
1521          proto.unselectSelectedSlide = function() {
1522            if (this.selectedSlide) this.selectedSlide.unselect();
1523          };
1524          proto.selectInitialIndex = function() {
1525            let initialIndex = this.options.initialIndex;
1526            if (this.isInitActivated) {
1527              this.select(this.selectedIndex, false, true);
1528              return;
1529            }
1530            if (initialIndex && typeof initialIndex == "string") {
1531              let cell2 = this.queryCell(initialIndex);
1532              if (cell2) {
1533                this.selectCell(initialIndex, false, true);
1534                return;
1535              }
1536            }
1537            let index = 0;
1538            if (initialIndex && this.slides[initialIndex]) {
1539              index = initialIndex;
1540            }
1541            this.select(index, false, true);
1542          };
1543          proto.selectCell = function(value, isWrap, isInstant) {
1544            let cell2 = this.queryCell(value);
1545            if (!cell2) return;
1546            let index = this.getCellSlideIndex(cell2);
1547            this.select(index, isWrap, isInstant);
1548          };
1549          proto.getCellSlideIndex = function(cell2) {
1550            let cellSlide = this.slides.find((slide2) => slide2.cells.includes(cell2));
1551            return this.slides.indexOf(cellSlide);
1552          };
1553          proto.getCell = function(elem) {
1554            for (let cell2 of this.cells) {
1555              if (cell2.element === elem) return cell2;
1556            }
1557          };
1558          proto.getCells = function(elems) {
1559            elems = utils2.makeArray(elems);
1560            return elems.map((elem) => this.getCell(elem)).filter(Boolean);
1561          };
1562          proto.getCellElements = function() {
1563            return this.cells.map((cell2) => cell2.element);
1564          };
1565          proto.getParentCell = function(elem) {
1566            let cell2 = this.getCell(elem);
1567            if (cell2) return cell2;
1568            let closest = elem.closest(".flickity-slider > *");
1569            return this.getCell(closest);
1570          };
1571          proto.getAdjacentCellElements = function(adjCount, index) {
1572            if (!adjCount) return this.selectedSlide.getCellElements();
1573            index = index === void 0 ? this.selectedIndex : index;
1574            let len = this.slides.length;
1575            if (1 + adjCount * 2 >= len) {
1576              return this.getCellElements();
1577            }
1578            let cellElems = [];
1579            for (let i2 = index - adjCount; i2 <= index + adjCount; i2++) {
1580              let slideIndex = this.isWrapping ? utils2.modulo(i2, len) : i2;
1581              let slide2 = this.slides[slideIndex];
1582              if (slide2) {
1583                cellElems = cellElems.concat(slide2.getCellElements());
1584              }
1585            }
1586            return cellElems;
1587          };
1588          proto.queryCell = function(selector2) {
1589            if (typeof selector2 == "number") {
1590              return this.cells[selector2];
1591            }
1592            let isSelectorString = typeof selector2 == "string" && !selector2.match(/^[#.]?[\d/]/);
1593            if (isSelectorString) {
1594              selector2 = this.element.querySelector(selector2);
1595            }
1596            return this.getCell(selector2);
1597          };
1598          proto.uiChange = function() {
1599            this.emitEvent("uiChange");
1600          };
1601          proto.onresize = function() {
1602            this.watchCSS();
1603            this.resize();
1604          };
1605          utils2.debounceMethod(Flickity2, "onresize", 150);
1606          proto.resize = function() {
1607            if (!this.isActive || this.isAnimating || this.isDragging) return;
1608            this.getSize();
1609            if (this.isWrapping) {
1610              this.x = utils2.modulo(this.x, this.slideableWidth);
1611            }
1612            this.positionCells();
1613            this._updateWrapShiftCells();
1614            this.setGallerySize();
1615            this.emitEvent("resize");
1616            let selectedElement = this.selectedElements && this.selectedElements[0];
1617            this.selectCell(selectedElement, false, true);
1618          };
1619          proto.watchCSS = function() {
1620            if (!this.options.watchCSS) return;
1621            let afterContent = getComputedStyle2(this.element, ":after").content;
1622            if (afterContent.includes("flickity")) {
1623              this.activate();
1624            } else {
1625              this.deactivate();
1626            }
1627          };
1628          proto.onkeydown = function(event) {
1629            let { activeElement } = document;
1630            let handler = Flickity2.keyboardHandlers[event.key];
1631            if (!this.options.accessibility || !activeElement || !handler) return;
1632            let isFocused = this.focusableElems.some((elem) => activeElement === elem);
1633            if (isFocused) handler.call(this);
1634          };
1635          Flickity2.keyboardHandlers = {
1636            ArrowLeft: function() {
1637              this.uiChange();
1638              let leftMethod = this.options.rightToLeft ? "next" : "previous";
1639              this[leftMethod]();
1640            },
1641            ArrowRight: function() {
1642              this.uiChange();
1643              let rightMethod = this.options.rightToLeft ? "previous" : "next";
1644              this[rightMethod]();
1645            }
1646          };
1647          proto.focus = function() {
1648            this.element.focus({ preventScroll: true });
1649          };
1650          proto.deactivate = function() {
1651            if (!this.isActive) return;
1652            this.element.classList.remove("flickity-enabled");
1653            this.element.classList.remove("flickity-rtl");
1654            this.unselectSelectedSlide();
1655            this.cells.forEach((cell2) => cell2.destroy());
1656            this.viewport.remove();
1657            this.element.append(...this.slider.children);
1658            if (this.options.accessibility) {
1659              this.element.removeAttribute("tabIndex");
1660              this.element.removeEventListener("keydown", this);
1661            }
1662            this.isActive = false;
1663            this.emitEvent("deactivate");
1664          };
1665          proto.destroy = function() {
1666            this.deactivate();
1667            window2.removeEventListener("resize", this);
1668            this.allOff();
1669            this.emitEvent("destroy");
1670            if (jQuery2 && this.$element) {
1671              jQuery2.removeData(this.element, "flickity");
1672            }
1673            delete this.element.flickityGUID;
1674            delete instances[this.guid];
1675          };
1676          Object.assign(proto, animatePrototype);
1677          Flickity2.data = function(elem) {
1678            elem = utils2.getQueryElement(elem);
1679            if (elem) return instances[elem.flickityGUID];
1680          };
1681          utils2.htmlInit(Flickity2, "flickity");
1682          let { jQueryBridget } = window2;
1683          if (jQuery2 && jQueryBridget) {
1684            jQueryBridget("flickity", Flickity2, jQuery2);
1685          }
1686          Flickity2.setJQuery = function(jq) {
1687            jQuery2 = jq;
1688          };
1689          Flickity2.Cell = Cell;
1690          Flickity2.Slide = Slide;
1691          return Flickity2;
1692        }
1693      );
1694    })(core$1);
1695    return core$1.exports;
1696  }
1697  var drag$1 = { exports: {} };
1698  var unidragger$1 = { exports: {} };
1699  /*!
1700   * Unidragger v3.0.1
1701   * Draggable base class
1702   * MIT license
1703   */
1704  var unidragger = unidragger$1.exports;
1705  var hasRequiredUnidragger;
1706  function requireUnidragger() {
1707    if (hasRequiredUnidragger) return unidragger$1.exports;
1708    hasRequiredUnidragger = 1;
1709    (function(module) {
1710      (function(window2, factory) {
1711        if (module.exports) {
1712          module.exports = factory(
1713            window2,
1714            requireEvEmitter()
1715          );
1716        } else {
1717          window2.Unidragger = factory(
1718            window2,
1719            window2.EvEmitter
1720          );
1721        }
1722      })(typeof window != "undefined" ? window : unidragger, function factory(window2, EvEmitter) {
1723        function Unidragger() {
1724        }
1725        let proto = Unidragger.prototype = Object.create(EvEmitter.prototype);
1726        proto.handleEvent = function(event) {
1727          let method = "on" + event.type;
1728          if (this[method]) {
1729            this[method](event);
1730          }
1731        };
1732        let startEvent, activeEvents;
1733        if ("ontouchstart" in window2) {
1734          startEvent = "touchstart";
1735          activeEvents = ["touchmove", "touchend", "touchcancel"];
1736        } else if (window2.PointerEvent) {
1737          startEvent = "pointerdown";
1738          activeEvents = ["pointermove", "pointerup", "pointercancel"];
1739        } else {
1740          startEvent = "mousedown";
1741          activeEvents = ["mousemove", "mouseup"];
1742        }
1743        proto.touchActionValue = "none";
1744        proto.bindHandles = function() {
1745          this._bindHandles("addEventListener", this.touchActionValue);
1746        };
1747        proto.unbindHandles = function() {
1748          this._bindHandles("removeEventListener", "");
1749        };
1750        proto._bindHandles = function(bindMethod, touchAction) {
1751          this.handles.forEach((handle) => {
1752            handle[bindMethod](startEvent, this);
1753            handle[bindMethod]("click", this);
1754            if (window2.PointerEvent) handle.style.touchAction = touchAction;
1755          });
1756        };
1757        proto.bindActivePointerEvents = function() {
1758          activeEvents.forEach((eventName) => {
1759            window2.addEventListener(eventName, this);
1760          });
1761        };
1762        proto.unbindActivePointerEvents = function() {
1763          activeEvents.forEach((eventName) => {
1764            window2.removeEventListener(eventName, this);
1765          });
1766        };
1767        proto.withPointer = function(methodName, event) {
1768          if (event.pointerId === this.pointerIdentifier) {
1769            this[methodName](event, event);
1770          }
1771        };
1772        proto.withTouch = function(methodName, event) {
1773          let touch;
1774          for (let changedTouch of event.changedTouches) {
1775            if (changedTouch.identifier === this.pointerIdentifier) {
1776              touch = changedTouch;
1777            }
1778          }
1779          if (touch) this[methodName](event, touch);
1780        };
1781        proto.onmousedown = function(event) {
1782          this.pointerDown(event, event);
1783        };
1784        proto.ontouchstart = function(event) {
1785          this.pointerDown(event, event.changedTouches[0]);
1786        };
1787        proto.onpointerdown = function(event) {
1788          this.pointerDown(event, event);
1789        };
1790        const cursorNodes = ["TEXTAREA", "INPUT", "SELECT", "OPTION"];
1791        const clickTypes = ["radio", "checkbox", "button", "submit", "image", "file"];
1792        proto.pointerDown = function(event, pointer) {
1793          let isCursorNode = cursorNodes.includes(event.target.nodeName);
1794          let isClickType = clickTypes.includes(event.target.type);
1795          let isOkayElement = !isCursorNode || isClickType;
1796          let isOkay = !this.isPointerDown && !event.button && isOkayElement;
1797          if (!isOkay) return;
1798          this.isPointerDown = true;
1799          this.pointerIdentifier = pointer.pointerId !== void 0 ? (
1800            // pointerId for pointer events, touch.indentifier for touch events
1801            pointer.pointerId
1802          ) : pointer.identifier;
1803          this.pointerDownPointer = {
1804            pageX: pointer.pageX,
1805            pageY: pointer.pageY
1806          };
1807          this.bindActivePointerEvents();
1808          this.emitEvent("pointerDown", [event, pointer]);
1809        };
1810        proto.onmousemove = function(event) {
1811          this.pointerMove(event, event);
1812        };
1813        proto.onpointermove = function(event) {
1814          this.withPointer("pointerMove", event);
1815        };
1816        proto.ontouchmove = function(event) {
1817          this.withTouch("pointerMove", event);
1818        };
1819        proto.pointerMove = function(event, pointer) {
1820          let moveVector = {
1821            x: pointer.pageX - this.pointerDownPointer.pageX,
1822            y: pointer.pageY - this.pointerDownPointer.pageY
1823          };
1824          this.emitEvent("pointerMove", [event, pointer, moveVector]);
1825          let isDragStarting = !this.isDragging && this.hasDragStarted(moveVector);
1826          if (isDragStarting) this.dragStart(event, pointer);
1827          if (this.isDragging) this.dragMove(event, pointer, moveVector);
1828        };
1829        proto.hasDragStarted = function(moveVector) {
1830          return Math.abs(moveVector.x) > 3 || Math.abs(moveVector.y) > 3;
1831        };
1832        proto.dragStart = function(event, pointer) {
1833          this.isDragging = true;
1834          this.isPreventingClicks = true;
1835          this.emitEvent("dragStart", [event, pointer]);
1836        };
1837        proto.dragMove = function(event, pointer, moveVector) {
1838          this.emitEvent("dragMove", [event, pointer, moveVector]);
1839        };
1840        proto.onmouseup = function(event) {
1841          this.pointerUp(event, event);
1842        };
1843        proto.onpointerup = function(event) {
1844          this.withPointer("pointerUp", event);
1845        };
1846        proto.ontouchend = function(event) {
1847          this.withTouch("pointerUp", event);
1848        };
1849        proto.pointerUp = function(event, pointer) {
1850          this.pointerDone();
1851          this.emitEvent("pointerUp", [event, pointer]);
1852          if (this.isDragging) {
1853            this.dragEnd(event, pointer);
1854          } else {
1855            this.staticClick(event, pointer);
1856          }
1857        };
1858        proto.dragEnd = function(event, pointer) {
1859          this.isDragging = false;
1860          setTimeout(() => delete this.isPreventingClicks);
1861          this.emitEvent("dragEnd", [event, pointer]);
1862        };
1863        proto.pointerDone = function() {
1864          this.isPointerDown = false;
1865          delete this.pointerIdentifier;
1866          this.unbindActivePointerEvents();
1867          this.emitEvent("pointerDone");
1868        };
1869        proto.onpointercancel = function(event) {
1870          this.withPointer("pointerCancel", event);
1871        };
1872        proto.ontouchcancel = function(event) {
1873          this.withTouch("pointerCancel", event);
1874        };
1875        proto.pointerCancel = function(event, pointer) {
1876          this.pointerDone();
1877          this.emitEvent("pointerCancel", [event, pointer]);
1878        };
1879        proto.onclick = function(event) {
1880          if (this.isPreventingClicks) event.preventDefault();
1881        };
1882        proto.staticClick = function(event, pointer) {
1883          let isMouseup = event.type === "mouseup";
1884          if (isMouseup && this.isIgnoringMouseUp) return;
1885          this.emitEvent("staticClick", [event, pointer]);
1886          if (isMouseup) {
1887            this.isIgnoringMouseUp = true;
1888            setTimeout(() => {
1889              delete this.isIgnoringMouseUp;
1890            }, 400);
1891          }
1892        };
1893        return Unidragger;
1894      });
1895    })(unidragger$1);
1896    return unidragger$1.exports;
1897  }
1898  var drag = drag$1.exports;
1899  var hasRequiredDrag;
1900  function requireDrag() {
1901    if (hasRequiredDrag) return drag$1.exports;
1902    hasRequiredDrag = 1;
1903    (function(module) {
1904      (function(window2, factory) {
1905        if (module.exports) {
1906          module.exports = factory(
1907            window2,
1908            requireCore(),
1909            requireUnidragger(),
1910            requireUtils()
1911          );
1912        } else {
1913          window2.Flickity = factory(
1914            window2,
1915            window2.Flickity,
1916            window2.Unidragger,
1917            window2.fizzyUIUtils
1918          );
1919        }
1920      })(
1921        typeof window != "undefined" ? window : drag,
1922        function factory(window2, Flickity2, Unidragger, utils2) {
1923          Object.assign(Flickity2.defaults, {
1924            draggable: ">1",
1925            dragThreshold: 3
1926          });
1927          let proto = Flickity2.prototype;
1928          Object.assign(proto, Unidragger.prototype);
1929          proto.touchActionValue = "";
1930          Flickity2.create.drag = function() {
1931            this.on("activate", this.onActivateDrag);
1932            this.on("uiChange", this._uiChangeDrag);
1933            this.on("deactivate", this.onDeactivateDrag);
1934            this.on("cellChange", this.updateDraggable);
1935            this.on("pointerDown", this.handlePointerDown);
1936            this.on("pointerUp", this.handlePointerUp);
1937            this.on("pointerDown", this.handlePointerDone);
1938            this.on("dragStart", this.handleDragStart);
1939            this.on("dragMove", this.handleDragMove);
1940            this.on("dragEnd", this.handleDragEnd);
1941            this.on("staticClick", this.handleStaticClick);
1942          };
1943          proto.onActivateDrag = function() {
1944            this.handles = [this.viewport];
1945            this.bindHandles();
1946            this.updateDraggable();
1947          };
1948          proto.onDeactivateDrag = function() {
1949            this.unbindHandles();
1950            this.element.classList.remove("is-draggable");
1951          };
1952          proto.updateDraggable = function() {
1953            if (this.options.draggable === ">1") {
1954              this.isDraggable = this.slides.length > 1;
1955            } else {
1956              this.isDraggable = this.options.draggable;
1957            }
1958            this.element.classList.toggle("is-draggable", this.isDraggable);
1959          };
1960          proto._uiChangeDrag = function() {
1961            delete this.isFreeScrolling;
1962          };
1963          proto.handlePointerDown = function(event) {
1964            if (!this.isDraggable) {
1965              this.bindActivePointerEvents(event);
1966              return;
1967            }
1968            let isTouchStart = event.type === "touchstart";
1969            let isTouchPointer = event.pointerType === "touch";
1970            let isFocusNode = event.target.matches("input, textarea, select");
1971            if (!isTouchStart && !isTouchPointer && !isFocusNode) event.preventDefault();
1972            if (!isFocusNode) this.focus();
1973            if (document.activeElement !== this.element) document.activeElement.blur();
1974            this.dragX = this.x;
1975            this.viewport.classList.add("is-pointer-down");
1976            this.pointerDownScroll = getScrollPosition();
1977            window2.addEventListener("scroll", this);
1978            this.bindActivePointerEvents(event);
1979          };
1980          proto.hasDragStarted = function(moveVector) {
1981            return Math.abs(moveVector.x) > this.options.dragThreshold;
1982          };
1983          proto.handlePointerUp = function() {
1984            delete this.isTouchScrolling;
1985            this.viewport.classList.remove("is-pointer-down");
1986          };
1987          proto.handlePointerDone = function() {
1988            window2.removeEventListener("scroll", this);
1989            delete this.pointerDownScroll;
1990          };
1991          proto.handleDragStart = function() {
1992            if (!this.isDraggable) return;
1993            this.dragStartPosition = this.x;
1994            this.startAnimation();
1995            window2.removeEventListener("scroll", this);
1996          };
1997          proto.handleDragMove = function(event, pointer, moveVector) {
1998            if (!this.isDraggable) return;
1999            event.preventDefault();
2000            this.previousDragX = this.dragX;
2001            let direction = this.options.rightToLeft ? -1 : 1;
2002            if (this.isWrapping) moveVector.x %= this.slideableWidth;
2003            let dragX = this.dragStartPosition + moveVector.x * direction;
2004            if (!this.isWrapping) {
2005              let originBound = Math.max(-this.slides[0].target, this.dragStartPosition);
2006              dragX = dragX > originBound ? (dragX + originBound) * 0.5 : dragX;
2007              let endBound = Math.min(-this.getLastSlide().target, this.dragStartPosition);
2008              dragX = dragX < endBound ? (dragX + endBound) * 0.5 : dragX;
2009            }
2010            this.dragX = dragX;
2011            this.dragMoveTime = /* @__PURE__ */ new Date();
2012          };
2013          proto.handleDragEnd = function() {
2014            if (!this.isDraggable) return;
2015            let { freeScroll } = this.options;
2016            if (freeScroll) this.isFreeScrolling = true;
2017            let index = this.dragEndRestingSelect();
2018            if (freeScroll && !this.isWrapping) {
2019              let restingX = this.getRestingPosition();
2020              this.isFreeScrolling = -restingX > this.slides[0].target && -restingX < this.getLastSlide().target;
2021            } else if (!freeScroll && index === this.selectedIndex) {
2022              index += this.dragEndBoostSelect();
2023            }
2024            delete this.previousDragX;
2025            this.isDragSelect = this.isWrapping;
2026            this.select(index);
2027            delete this.isDragSelect;
2028          };
2029          proto.dragEndRestingSelect = function() {
2030            let restingX = this.getRestingPosition();
2031            let distance = Math.abs(this.getSlideDistance(-restingX, this.selectedIndex));
2032            let positiveResting = this._getClosestResting(restingX, distance, 1);
2033            let negativeResting = this._getClosestResting(restingX, distance, -1);
2034            return positiveResting.distance < negativeResting.distance ? positiveResting.index : negativeResting.index;
2035          };
2036          proto._getClosestResting = function(restingX, distance, increment) {
2037            let index = this.selectedIndex;
2038            let minDistance = Infinity;
2039            let condition = this.options.contain && !this.isWrapping ? (
2040              // if containing, keep going if distance is equal to minDistance
2041              (dist, minDist) => dist <= minDist
2042            ) : (dist, minDist) => dist < minDist;
2043            while (condition(distance, minDistance)) {
2044              index += increment;
2045              minDistance = distance;
2046              distance = this.getSlideDistance(-restingX, index);
2047              if (distance === null) break;
2048              distance = Math.abs(distance);
2049            }
2050            return {
2051              distance: minDistance,
2052              // selected was previous index
2053              index: index - increment
2054            };
2055          };
2056          proto.getSlideDistance = function(x, index) {
2057            let len = this.slides.length;
2058            let isWrapAround = this.options.wrapAround && len > 1;
2059            let slideIndex = isWrapAround ? utils2.modulo(index, len) : index;
2060            let slide2 = this.slides[slideIndex];
2061            if (!slide2) return null;
2062            let wrap2 = isWrapAround ? this.slideableWidth * Math.floor(index / len) : 0;
2063            return x - (slide2.target + wrap2);
2064          };
2065          proto.dragEndBoostSelect = function() {
2066            if (this.previousDragX === void 0 || !this.dragMoveTime || // or if drag was held for 100 ms
2067            /* @__PURE__ */ new Date() - this.dragMoveTime > 100) {
2068              return 0;
2069            }
2070            let distance = this.getSlideDistance(-this.dragX, this.selectedIndex);
2071            let delta = this.previousDragX - this.dragX;
2072            if (distance > 0 && delta > 0) {
2073              return 1;
2074            } else if (distance < 0 && delta < 0) {
2075              return -1;
2076            }
2077            return 0;
2078          };
2079          proto.onscroll = function() {
2080            let scroll = getScrollPosition();
2081            let scrollMoveX = this.pointerDownScroll.x - scroll.x;
2082            let scrollMoveY = this.pointerDownScroll.y - scroll.y;
2083            if (Math.abs(scrollMoveX) > 3 || Math.abs(scrollMoveY) > 3) {
2084              this.pointerDone();
2085            }
2086          };
2087          function getScrollPosition() {
2088            return {
2089              x: window2.pageXOffset,
2090              y: window2.pageYOffset
2091            };
2092          }
2093          return Flickity2;
2094        }
2095      );
2096    })(drag$1);
2097    return drag$1.exports;
2098  }
2099  var prevNextButton$1 = { exports: {} };
2100  var prevNextButton = prevNextButton$1.exports;
2101  var hasRequiredPrevNextButton;
2102  function requirePrevNextButton() {
2103    if (hasRequiredPrevNextButton) return prevNextButton$1.exports;
2104    hasRequiredPrevNextButton = 1;
2105    (function(module) {
2106      (function(window2, factory) {
2107        if (module.exports) {
2108          module.exports = factory(requireCore());
2109        } else {
2110          factory(window2.Flickity);
2111        }
2112      })(typeof window != "undefined" ? window : prevNextButton, function factory(Flickity2) {
2113        const svgURI = "http://www.w3.org/2000/svg";
2114        function PrevNextButton(increment, direction, arrowShape) {
2115          this.increment = increment;
2116          this.direction = direction;
2117          this.isPrevious = increment === "previous";
2118          this.isLeft = direction === "left";
2119          this._create(arrowShape);
2120        }
2121        PrevNextButton.prototype._create = function(arrowShape) {
2122          let element = this.element = document.createElement("button");
2123          element.className = `flickity-button flickity-prev-next-button ${this.increment}`;
2124          let label = this.isPrevious ? "Previous" : "Next";
2125          element.setAttribute("type", "button");
2126          element.setAttribute("aria-label", label);
2127          this.disable();
2128          let svg = this.createSVG(label, arrowShape);
2129          element.append(svg);
2130        };
2131        PrevNextButton.prototype.createSVG = function(label, arrowShape) {
2132          let svg = document.createElementNS(svgURI, "svg");
2133          svg.setAttribute("class", "flickity-button-icon");
2134          svg.setAttribute("viewBox", "0 0 100 100");
2135          let title = document.createElementNS(svgURI, "title");
2136          title.append(label);
2137          let path = document.createElementNS(svgURI, "path");
2138          let pathMovements = getArrowMovements(arrowShape);
2139          path.setAttribute("d", pathMovements);
2140          path.setAttribute("class", "arrow");
2141          if (!this.isLeft) {
2142            path.setAttribute("transform", "translate(100, 100) rotate(180)");
2143          }
2144          svg.append(title, path);
2145          return svg;
2146        };
2147        function getArrowMovements(shape) {
2148          if (typeof shape == "string") return shape;
2149          let { x0, x1, x2, x3, y1, y2 } = shape;
2150          return `M ${x0}, 50
2151    L ${x1}, ${y1 + 50}
2152    L ${x2}, ${y2 + 50}
2153    L ${x3}, 50
2154    L ${x2}, ${50 - y2}
2155    L ${x1}, ${50 - y1}
2156    Z`;
2157        }
2158        PrevNextButton.prototype.enable = function() {
2159          this.element.removeAttribute("disabled");
2160        };
2161        PrevNextButton.prototype.disable = function() {
2162          this.element.setAttribute("disabled", true);
2163        };
2164        Object.assign(Flickity2.defaults, {
2165          prevNextButtons: true,
2166          arrowShape: {
2167            x0: 10,
2168            x1: 60,
2169            y1: 50,
2170            x2: 70,
2171            y2: 40,
2172            x3: 30
2173          }
2174        });
2175        Flickity2.create.prevNextButtons = function() {
2176          if (!this.options.prevNextButtons) return;
2177          let { rightToLeft, arrowShape } = this.options;
2178          let prevDirection = rightToLeft ? "right" : "left";
2179          let nextDirection = rightToLeft ? "left" : "right";
2180          this.prevButton = new PrevNextButton("previous", prevDirection, arrowShape);
2181          this.nextButton = new PrevNextButton("next", nextDirection, arrowShape);
2182          this.focusableElems.push(this.prevButton.element);
2183          this.focusableElems.push(this.nextButton.element);
2184          this.handlePrevButtonClick = () => {
2185            this.uiChange();
2186            this.previous();
2187          };
2188          this.handleNextButtonClick = () => {
2189            this.uiChange();
2190            this.next();
2191          };
2192          this.on("activate", this.activatePrevNextButtons);
2193          this.on("select", this.updatePrevNextButtons);
2194        };
2195        let proto = Flickity2.prototype;
2196        proto.updatePrevNextButtons = function() {
2197          let lastIndex = this.slides.length ? this.slides.length - 1 : 0;
2198          this.updatePrevNextButton(this.prevButton, 0);
2199          this.updatePrevNextButton(this.nextButton, lastIndex);
2200        };
2201        proto.updatePrevNextButton = function(button, disabledIndex) {
2202          if (this.isWrapping && this.slides.length > 1) {
2203            button.enable();
2204            return;
2205          }
2206          let isEnabled = this.selectedIndex !== disabledIndex;
2207          button[isEnabled ? "enable" : "disable"]();
2208          let isDisabledFocused = !isEnabled && document.activeElement === button.element;
2209          if (isDisabledFocused) this.focus();
2210        };
2211        proto.activatePrevNextButtons = function() {
2212          this.prevButton.element.addEventListener("click", this.handlePrevButtonClick);
2213          this.nextButton.element.addEventListener("click", this.handleNextButtonClick);
2214          this.element.append(this.prevButton.element, this.nextButton.element);
2215          this.on("deactivate", this.deactivatePrevNextButtons);
2216        };
2217        proto.deactivatePrevNextButtons = function() {
2218          this.prevButton.element.remove();
2219          this.nextButton.element.remove();
2220          this.prevButton.element.removeEventListener("click", this.handlePrevButtonClick);
2221          this.nextButton.element.removeEventListener("click", this.handleNextButtonClick);
2222          this.off("deactivate", this.deactivatePrevNextButtons);
2223        };
2224        Flickity2.PrevNextButton = PrevNextButton;
2225        return Flickity2;
2226      });
2227    })(prevNextButton$1);
2228    return prevNextButton$1.exports;
2229  }
2230  var pageDots$1 = { exports: {} };
2231  var pageDots = pageDots$1.exports;
2232  var hasRequiredPageDots;
2233  function requirePageDots() {
2234    if (hasRequiredPageDots) return pageDots$1.exports;
2235    hasRequiredPageDots = 1;
2236    (function(module) {
2237      (function(window2, factory) {
2238        if (module.exports) {
2239          module.exports = factory(
2240            requireCore(),
2241            requireUtils()
2242          );
2243        } else {
2244          factory(
2245            window2.Flickity,
2246            window2.fizzyUIUtils
2247          );
2248        }
2249      })(typeof window != "undefined" ? window : pageDots, function factory(Flickity2, utils2) {
2250        function PageDots() {
2251          this.holder = document.createElement("div");
2252          this.holder.className = "flickity-page-dots";
2253          this.dots = [];
2254        }
2255        PageDots.prototype.setDots = function(slidesLength) {
2256          let delta = slidesLength - this.dots.length;
2257          if (delta > 0) {
2258            this.addDots(delta);
2259          } else if (delta < 0) {
2260            this.removeDots(-delta);
2261          }
2262        };
2263        PageDots.prototype.addDots = function(count) {
2264          let newDots = new Array(count).fill().map((item, i2) => {
2265            let dot = document.createElement("button");
2266            dot.setAttribute("type", "button");
2267            let num = i2 + 1 + this.dots.length;
2268            dot.className = "flickity-page-dot";
2269            dot.textContent = `View slide ${num}`;
2270            return dot;
2271          });
2272          this.holder.append(...newDots);
2273          this.dots = this.dots.concat(newDots);
2274        };
2275        PageDots.prototype.removeDots = function(count) {
2276          let removeDots = this.dots.splice(this.dots.length - count, count);
2277          removeDots.forEach((dot) => dot.remove());
2278        };
2279        PageDots.prototype.updateSelected = function(index) {
2280          if (this.selectedDot) {
2281            this.selectedDot.classList.remove("is-selected");
2282            this.selectedDot.removeAttribute("aria-current");
2283          }
2284          if (!this.dots.length) return;
2285          this.selectedDot = this.dots[index];
2286          this.selectedDot.classList.add("is-selected");
2287          this.selectedDot.setAttribute("aria-current", "step");
2288        };
2289        Flickity2.PageDots = PageDots;
2290        Object.assign(Flickity2.defaults, {
2291          pageDots: true
2292        });
2293        Flickity2.create.pageDots = function() {
2294          if (!this.options.pageDots) return;
2295          this.pageDots = new PageDots();
2296          this.handlePageDotsClick = this.onPageDotsClick.bind(this);
2297          this.on("activate", this.activatePageDots);
2298          this.on("select", this.updateSelectedPageDots);
2299          this.on("cellChange", this.updatePageDots);
2300          this.on("resize", this.updatePageDots);
2301          this.on("deactivate", this.deactivatePageDots);
2302        };
2303        let proto = Flickity2.prototype;
2304        proto.activatePageDots = function() {
2305          this.pageDots.setDots(this.slides.length);
2306          this.focusableElems.push(...this.pageDots.dots);
2307          this.pageDots.holder.addEventListener("click", this.handlePageDotsClick);
2308          this.element.append(this.pageDots.holder);
2309        };
2310        proto.onPageDotsClick = function(event) {
2311          let index = this.pageDots.dots.indexOf(event.target);
2312          if (index === -1) return;
2313          this.uiChange();
2314          this.select(index);
2315        };
2316        proto.updateSelectedPageDots = function() {
2317          this.pageDots.updateSelected(this.selectedIndex);
2318        };
2319        proto.updatePageDots = function() {
2320          this.pageDots.dots.forEach((dot) => {
2321            utils2.removeFrom(this.focusableElems, dot);
2322          });
2323          this.pageDots.setDots(this.slides.length);
2324          this.focusableElems.push(...this.pageDots.dots);
2325        };
2326        proto.deactivatePageDots = function() {
2327          this.pageDots.holder.remove();
2328          this.pageDots.holder.removeEventListener("click", this.handlePageDotsClick);
2329        };
2330        Flickity2.PageDots = PageDots;
2331        return Flickity2;
2332      });
2333    })(pageDots$1);
2334    return pageDots$1.exports;
2335  }
2336  var player$1 = { exports: {} };
2337  var player = player$1.exports;
2338  var hasRequiredPlayer;
2339  function requirePlayer() {
2340    if (hasRequiredPlayer) return player$1.exports;
2341    hasRequiredPlayer = 1;
2342    (function(module) {
2343      (function(window2, factory) {
2344        if (module.exports) {
2345          module.exports = factory(requireCore());
2346        } else {
2347          factory(window2.Flickity);
2348        }
2349      })(typeof window != "undefined" ? window : player, function factory(Flickity2) {
2350        function Player(autoPlay, onTick) {
2351          this.autoPlay = autoPlay;
2352          this.onTick = onTick;
2353          this.state = "stopped";
2354          this.onVisibilityChange = this.visibilityChange.bind(this);
2355          this.onVisibilityPlay = this.visibilityPlay.bind(this);
2356        }
2357        Player.prototype.play = function() {
2358          if (this.state === "playing") return;
2359          let isPageHidden = document.hidden;
2360          if (isPageHidden) {
2361            document.addEventListener("visibilitychange", this.onVisibilityPlay);
2362            return;
2363          }
2364          this.state = "playing";
2365          document.addEventListener("visibilitychange", this.onVisibilityChange);
2366          this.tick();
2367        };
2368        Player.prototype.tick = function() {
2369          if (this.state !== "playing") return;
2370          let time = typeof this.autoPlay == "number" ? this.autoPlay : 3e3;
2371          this.clear();
2372          this.timeout = setTimeout(() => {
2373            this.onTick();
2374            this.tick();
2375          }, time);
2376        };
2377        Player.prototype.stop = function() {
2378          this.state = "stopped";
2379          this.clear();
2380          document.removeEventListener("visibilitychange", this.onVisibilityChange);
2381        };
2382        Player.prototype.clear = function() {
2383          clearTimeout(this.timeout);
2384        };
2385        Player.prototype.pause = function() {
2386          if (this.state === "playing") {
2387            this.state = "paused";
2388            this.clear();
2389          }
2390        };
2391        Player.prototype.unpause = function() {
2392          if (this.state === "paused") this.play();
2393        };
2394        Player.prototype.visibilityChange = function() {
2395          let isPageHidden = document.hidden;
2396          this[isPageHidden ? "pause" : "unpause"]();
2397        };
2398        Player.prototype.visibilityPlay = function() {
2399          this.play();
2400          document.removeEventListener("visibilitychange", this.onVisibilityPlay);
2401        };
2402        Object.assign(Flickity2.defaults, {
2403          pauseAutoPlayOnHover: true
2404        });
2405        Flickity2.create.player = function() {
2406          this.player = new Player(this.options.autoPlay, () => {
2407            this.next(true);
2408          });
2409          this.on("activate", this.activatePlayer);
2410          this.on("uiChange", this.stopPlayer);
2411          this.on("pointerDown", this.stopPlayer);
2412          this.on("deactivate", this.deactivatePlayer);
2413        };
2414        let proto = Flickity2.prototype;
2415        proto.activatePlayer = function() {
2416          if (!this.options.autoPlay) return;
2417          this.player.play();
2418          this.element.addEventListener("mouseenter", this);
2419        };
2420        proto.playPlayer = function() {
2421          this.player.play();
2422        };
2423        proto.stopPlayer = function() {
2424          this.player.stop();
2425        };
2426        proto.pausePlayer = function() {
2427          this.player.pause();
2428        };
2429        proto.unpausePlayer = function() {
2430          this.player.unpause();
2431        };
2432        proto.deactivatePlayer = function() {
2433          this.player.stop();
2434          this.element.removeEventListener("mouseenter", this);
2435        };
2436        proto.onmouseenter = function() {
2437          if (!this.options.pauseAutoPlayOnHover) return;
2438          this.player.pause();
2439          this.element.addEventListener("mouseleave", this);
2440        };
2441        proto.onmouseleave = function() {
2442          this.player.unpause();
2443          this.element.removeEventListener("mouseleave", this);
2444        };
2445        Flickity2.Player = Player;
2446        return Flickity2;
2447      });
2448    })(player$1);
2449    return player$1.exports;
2450  }
2451  var addRemoveCell$1 = { exports: {} };
2452  var addRemoveCell = addRemoveCell$1.exports;
2453  var hasRequiredAddRemoveCell;
2454  function requireAddRemoveCell() {
2455    if (hasRequiredAddRemoveCell) return addRemoveCell$1.exports;
2456    hasRequiredAddRemoveCell = 1;
2457    (function(module) {
2458      (function(window2, factory) {
2459        if (module.exports) {
2460          module.exports = factory(
2461            requireCore(),
2462            requireUtils()
2463          );
2464        } else {
2465          factory(
2466            window2.Flickity,
2467            window2.fizzyUIUtils
2468          );
2469        }
2470      })(typeof window != "undefined" ? window : addRemoveCell, function factory(Flickity2, utils2) {
2471        function getCellsFragment(cells) {
2472          let fragment = document.createDocumentFragment();
2473          cells.forEach((cell2) => fragment.appendChild(cell2.element));
2474          return fragment;
2475        }
2476        let proto = Flickity2.prototype;
2477        proto.insert = function(elems, index) {
2478          let cells = this._makeCells(elems);
2479          if (!cells || !cells.length) return;
2480          let len = this.cells.length;
2481          index = index === void 0 ? len : index;
2482          let fragment = getCellsFragment(cells);
2483          let isAppend = index === len;
2484          if (isAppend) {
2485            this.slider.appendChild(fragment);
2486          } else {
2487            let insertCellElement = this.cells[index].element;
2488            this.slider.insertBefore(fragment, insertCellElement);
2489          }
2490          if (index === 0) {
2491            this.cells = cells.concat(this.cells);
2492          } else if (isAppend) {
2493            this.cells = this.cells.concat(cells);
2494          } else {
2495            let endCells = this.cells.splice(index, len - index);
2496            this.cells = this.cells.concat(cells).concat(endCells);
2497          }
2498          this._sizeCells(cells);
2499          this.cellChange(index);
2500          this.positionSliderAtSelected();
2501        };
2502        proto.append = function(elems) {
2503          this.insert(elems, this.cells.length);
2504        };
2505        proto.prepend = function(elems) {
2506          this.insert(elems, 0);
2507        };
2508        proto.remove = function(elems) {
2509          let cells = this.getCells(elems);
2510          if (!cells || !cells.length) return;
2511          let minCellIndex = this.cells.length - 1;
2512          cells.forEach((cell2) => {
2513            cell2.remove();
2514            let index = this.cells.indexOf(cell2);
2515            minCellIndex = Math.min(index, minCellIndex);
2516            utils2.removeFrom(this.cells, cell2);
2517          });
2518          this.cellChange(minCellIndex);
2519          this.positionSliderAtSelected();
2520        };
2521        proto.cellSizeChange = function(elem) {
2522          let cell2 = this.getCell(elem);
2523          if (!cell2) return;
2524          cell2.getSize();
2525          let index = this.cells.indexOf(cell2);
2526          this.cellChange(index);
2527        };
2528        proto.cellChange = function(changedCellIndex) {
2529          let prevSelectedElem = this.selectedElement;
2530          this._positionCells(changedCellIndex);
2531          this._updateWrapShiftCells();
2532          this.setGallerySize();
2533          let cell2 = this.getCell(prevSelectedElem);
2534          if (cell2) this.selectedIndex = this.getCellSlideIndex(cell2);
2535          this.selectedIndex = Math.min(this.slides.length - 1, this.selectedIndex);
2536          this.emitEvent("cellChange", [changedCellIndex]);
2537          this.select(this.selectedIndex);
2538        };
2539        return Flickity2;
2540      });
2541    })(addRemoveCell$1);
2542    return addRemoveCell$1.exports;
2543  }
2544  var lazyload$1 = { exports: {} };
2545  var lazyload = lazyload$1.exports;
2546  var hasRequiredLazyload;
2547  function requireLazyload() {
2548    if (hasRequiredLazyload) return lazyload$1.exports;
2549    hasRequiredLazyload = 1;
2550    (function(module) {
2551      (function(window2, factory) {
2552        if (module.exports) {
2553          module.exports = factory(
2554            requireCore(),
2555            requireUtils()
2556          );
2557        } else {
2558          factory(
2559            window2.Flickity,
2560            window2.fizzyUIUtils
2561          );
2562        }
2563      })(typeof window != "undefined" ? window : lazyload, function factory(Flickity2, utils2) {
2564        const lazyAttr = "data-flickity-lazyload";
2565        const lazySrcAttr = `${lazyAttr}-src`;
2566        const lazySrcsetAttr = `${lazyAttr}-srcset`;
2567        const imgSelector = `img[${lazyAttr}], img[${lazySrcAttr}], img[${lazySrcsetAttr}], source[${lazySrcsetAttr}]`;
2568        Flickity2.create.lazyLoad = function() {
2569          this.on("select", this.lazyLoad);
2570          this.handleLazyLoadComplete = this.onLazyLoadComplete.bind(this);
2571        };
2572        let proto = Flickity2.prototype;
2573        proto.lazyLoad = function() {
2574          let { lazyLoad } = this.options;
2575          if (!lazyLoad) return;
2576          let adjCount = typeof lazyLoad == "number" ? lazyLoad : 0;
2577          this.getAdjacentCellElements(adjCount).map(getCellLazyImages).flat().forEach((img) => new LazyLoader(img, this.handleLazyLoadComplete));
2578        };
2579        function getCellLazyImages(cellElem) {
2580          if (cellElem.matches("img")) {
2581            let cellAttr = cellElem.getAttribute(lazyAttr);
2582            let cellSrcAttr = cellElem.getAttribute(lazySrcAttr);
2583            let cellSrcsetAttr = cellElem.getAttribute(lazySrcsetAttr);
2584            if (cellAttr || cellSrcAttr || cellSrcsetAttr) {
2585              return cellElem;
2586            }
2587          }
2588          return [...cellElem.querySelectorAll(imgSelector)];
2589        }
2590        proto.onLazyLoadComplete = function(img, event) {
2591          let cell2 = this.getParentCell(img);
2592          let cellElem = cell2 && cell2.element;
2593          this.cellSizeChange(cellElem);
2594          this.dispatchEvent("lazyLoad", event, cellElem);
2595        };
2596        function LazyLoader(img, onComplete) {
2597          this.img = img;
2598          this.onComplete = onComplete;
2599          this.load();
2600        }
2601        LazyLoader.prototype.handleEvent = utils2.handleEvent;
2602        LazyLoader.prototype.load = function() {
2603          this.img.addEventListener("load", this);
2604          this.img.addEventListener("error", this);
2605          let src = this.img.getAttribute(lazyAttr) || this.img.getAttribute(lazySrcAttr);
2606          let srcset = this.img.getAttribute(lazySrcsetAttr);
2607          this.img.src = src;
2608          if (srcset) this.img.setAttribute("srcset", srcset);
2609          this.img.removeAttribute(lazyAttr);
2610          this.img.removeAttribute(lazySrcAttr);
2611          this.img.removeAttribute(lazySrcsetAttr);
2612        };
2613        LazyLoader.prototype.onload = function(event) {
2614          this.complete(event, "flickity-lazyloaded");
2615        };
2616        LazyLoader.prototype.onerror = function(event) {
2617          this.complete(event, "flickity-lazyerror");
2618        };
2619        LazyLoader.prototype.complete = function(event, className) {
2620          this.img.removeEventListener("load", this);
2621          this.img.removeEventListener("error", this);
2622          let mediaElem = this.img.parentNode.matches("picture") ? this.img.parentNode : this.img;
2623          mediaElem.classList.add(className);
2624          this.onComplete(this.img, event);
2625        };
2626        Flickity2.LazyLoader = LazyLoader;
2627        return Flickity2;
2628      });
2629    })(lazyload$1);
2630    return lazyload$1.exports;
2631  }
2632  var imagesloaded$3 = { exports: {} };
2633  var imagesloaded$2 = { exports: {} };
2634  /*!
2635   * imagesLoaded v5.0.0
2636   * JavaScript is all like "You images are done yet or what?"
2637   * MIT License
2638   */
2639  var imagesloaded$1 = imagesloaded$2.exports;
2640  var hasRequiredImagesloaded$1;
2641  function requireImagesloaded$1() {
2642    if (hasRequiredImagesloaded$1) return imagesloaded$2.exports;
2643    hasRequiredImagesloaded$1 = 1;
2644    (function(module) {
2645      (function(window2, factory) {
2646        if (module.exports) {
2647          module.exports = factory(window2, requireEvEmitter());
2648        } else {
2649          window2.imagesLoaded = factory(window2, window2.EvEmitter);
2650        }
2651      })(
2652        typeof window !== "undefined" ? window : imagesloaded$1,
2653        function factory(window2, EvEmitter) {
2654          let $ = window2.jQuery;
2655          let console2 = window2.console;
2656          function makeArray(obj) {
2657            if (Array.isArray(obj)) return obj;
2658            let isArrayLike = typeof obj == "object" && typeof obj.length == "number";
2659            if (isArrayLike) return [...obj];
2660            return [obj];
2661          }
2662          function ImagesLoaded(elem, options, onAlways) {
2663            if (!(this instanceof ImagesLoaded)) {
2664              return new ImagesLoaded(elem, options, onAlways);
2665            }
2666            let queryElem = elem;
2667            if (typeof elem == "string") {
2668              queryElem = document.querySelectorAll(elem);
2669            }
2670            if (!queryElem) {
2671              console2.error(`Bad element for imagesLoaded ${queryElem || elem}`);
2672              return;
2673            }
2674            this.elements = makeArray(queryElem);
2675            this.options = {};
2676            if (typeof options == "function") {
2677              onAlways = options;
2678            } else {
2679              Object.assign(this.options, options);
2680            }
2681            if (onAlways) this.on("always", onAlways);
2682            this.getImages();
2683            if ($) this.jqDeferred = new $.Deferred();
2684            setTimeout(this.check.bind(this));
2685          }
2686          ImagesLoaded.prototype = Object.create(EvEmitter.prototype);
2687          ImagesLoaded.prototype.getImages = function() {
2688            this.images = [];
2689            this.elements.forEach(this.addElementImages, this);
2690          };
2691          const elementNodeTypes = [1, 9, 11];
2692          ImagesLoaded.prototype.addElementImages = function(elem) {
2693            if (elem.nodeName === "IMG") {
2694              this.addImage(elem);
2695            }
2696            if (this.options.background === true) {
2697              this.addElementBackgroundImages(elem);
2698            }
2699            let { nodeType } = elem;
2700            if (!nodeType || !elementNodeTypes.includes(nodeType)) return;
2701            let childImgs = elem.querySelectorAll("img");
2702            for (let img of childImgs) {
2703              this.addImage(img);
2704            }
2705            if (typeof this.options.background == "string") {
2706              let children = elem.querySelectorAll(this.options.background);
2707              for (let child of children) {
2708                this.addElementBackgroundImages(child);
2709              }
2710            }
2711          };
2712          const reURL = /url\((['"])?(.*?)\1\)/gi;
2713          ImagesLoaded.prototype.addElementBackgroundImages = function(elem) {
2714            let style = getComputedStyle(elem);
2715            if (!style) return;
2716            let matches = reURL.exec(style.backgroundImage);
2717            while (matches !== null) {
2718              let url = matches && matches[2];
2719              if (url) {
2720                this.addBackground(url, elem);
2721              }
2722              matches = reURL.exec(style.backgroundImage);
2723            }
2724          };
2725          ImagesLoaded.prototype.addImage = function(img) {
2726            let loadingImage = new LoadingImage(img);
2727            this.images.push(loadingImage);
2728          };
2729          ImagesLoaded.prototype.addBackground = function(url, elem) {
2730            let background = new Background(url, elem);
2731            this.images.push(background);
2732          };
2733          ImagesLoaded.prototype.check = function() {
2734            this.progressedCount = 0;
2735            this.hasAnyBroken = false;
2736            if (!this.images.length) {
2737              this.complete();
2738              return;
2739            }
2740            let onProgress = (image, elem, message) => {
2741              setTimeout(() => {
2742                this.progress(image, elem, message);
2743              });
2744            };
2745            this.images.forEach(function(loadingImage) {
2746              loadingImage.once("progress", onProgress);
2747              loadingImage.check();
2748            });
2749          };
2750          ImagesLoaded.prototype.progress = function(image, elem, message) {
2751            this.progressedCount++;
2752            this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;
2753            this.emitEvent("progress", [this, image, elem]);
2754            if (this.jqDeferred && this.jqDeferred.notify) {
2755              this.jqDeferred.notify(this, image);
2756            }
2757            if (this.progressedCount === this.images.length) {
2758              this.complete();
2759            }
2760            if (this.options.debug && console2) {
2761              console2.log(`progress: ${message}`, image, elem);
2762            }
2763          };
2764          ImagesLoaded.prototype.complete = function() {
2765            let eventName = this.hasAnyBroken ? "fail" : "done";
2766            this.isComplete = true;
2767            this.emitEvent(eventName, [this]);
2768            this.emitEvent("always", [this]);
2769            if (this.jqDeferred) {
2770              let jqMethod = this.hasAnyBroken ? "reject" : "resolve";
2771              this.jqDeferred[jqMethod](this);
2772            }
2773          };
2774          function LoadingImage(img) {
2775            this.img = img;
2776          }
2777          LoadingImage.prototype = Object.create(EvEmitter.prototype);
2778          LoadingImage.prototype.check = function() {
2779            let isComplete = this.getIsImageComplete();
2780            if (isComplete) {
2781              this.confirm(this.img.naturalWidth !== 0, "naturalWidth");
2782              return;
2783            }
2784            this.proxyImage = new Image();
2785            if (this.img.crossOrigin) {
2786              this.proxyImage.crossOrigin = this.img.crossOrigin;
2787            }
2788            this.proxyImage.addEventListener("load", this);
2789            this.proxyImage.addEventListener("error", this);
2790            this.img.addEventListener("load", this);
2791            this.img.addEventListener("error", this);
2792            this.proxyImage.src = this.img.currentSrc || this.img.src;
2793          };
2794          LoadingImage.prototype.getIsImageComplete = function() {
2795            return this.img.complete && this.img.naturalWidth;
2796          };
2797          LoadingImage.prototype.confirm = function(isLoaded, message) {
2798            this.isLoaded = isLoaded;
2799            let { parentNode } = this.img;
2800            let elem = parentNode.nodeName === "PICTURE" ? parentNode : this.img;
2801            this.emitEvent("progress", [this, elem, message]);
2802          };
2803          LoadingImage.prototype.handleEvent = function(event) {
2804            let method = "on" + event.type;
2805            if (this[method]) {
2806              this[method](event);
2807            }
2808          };
2809          LoadingImage.prototype.onload = function() {
2810            this.confirm(true, "onload");
2811            this.unbindEvents();
2812          };
2813          LoadingImage.prototype.onerror = function() {
2814            this.confirm(false, "onerror");
2815            this.unbindEvents();
2816          };
2817          LoadingImage.prototype.unbindEvents = function() {
2818            this.proxyImage.removeEventListener("load", this);
2819            this.proxyImage.removeEventListener("error", this);
2820            this.img.removeEventListener("load", this);
2821            this.img.removeEventListener("error", this);
2822          };
2823          function Background(url, element) {
2824            this.url = url;
2825            this.element = element;
2826            this.img = new Image();
2827          }
2828          Background.prototype = Object.create(LoadingImage.prototype);
2829          Background.prototype.check = function() {
2830            this.img.addEventListener("load", this);
2831            this.img.addEventListener("error", this);
2832            this.img.src = this.url;
2833            let isComplete = this.getIsImageComplete();
2834            if (isComplete) {
2835              this.confirm(this.img.naturalWidth !== 0, "naturalWidth");
2836              this.unbindEvents();
2837            }
2838          };
2839          Background.prototype.unbindEvents = function() {
2840            this.img.removeEventListener("load", this);
2841            this.img.removeEventListener("error", this);
2842          };
2843          Background.prototype.confirm = function(isLoaded, message) {
2844            this.isLoaded = isLoaded;
2845            this.emitEvent("progress", [this, this.element, message]);
2846          };
2847          ImagesLoaded.makeJQueryPlugin = function(jQuery2) {
2848            jQuery2 = jQuery2 || window2.jQuery;
2849            if (!jQuery2) return;
2850            $ = jQuery2;
2851            $.fn.imagesLoaded = function(options, onAlways) {
2852              let instance = new ImagesLoaded(this, options, onAlways);
2853              return instance.jqDeferred.promise($(this));
2854            };
2855          };
2856          ImagesLoaded.makeJQueryPlugin();
2857          return ImagesLoaded;
2858        }
2859      );
2860    })(imagesloaded$2);
2861    return imagesloaded$2.exports;
2862  }
2863  var imagesloaded = imagesloaded$3.exports;
2864  var hasRequiredImagesloaded;
2865  function requireImagesloaded() {
2866    if (hasRequiredImagesloaded) return imagesloaded$3.exports;
2867    hasRequiredImagesloaded = 1;
2868    (function(module) {
2869      (function(window2, factory) {
2870        if (module.exports) {
2871          module.exports = factory(
2872            requireCore(),
2873            requireImagesloaded$1()
2874          );
2875        } else {
2876          factory(
2877            window2.Flickity,
2878            window2.imagesLoaded
2879          );
2880        }
2881      })(
2882        typeof window != "undefined" ? window : imagesloaded,
2883        function factory(Flickity2, imagesLoaded) {
2884          Flickity2.create.imagesLoaded = function() {
2885            this.on("activate", this.imagesLoaded);
2886          };
2887          Flickity2.prototype.imagesLoaded = function() {
2888            if (!this.options.imagesLoaded) return;
2889            let onImagesLoadedProgress = (instance, image) => {
2890              let cell2 = this.getParentCell(image.img);
2891              this.cellSizeChange(cell2 && cell2.element);
2892              if (!this.options.freeScroll) this.positionSliderAtSelected();
2893            };
2894            imagesLoaded(this.slider).on("progress", onImagesLoadedProgress);
2895          };
2896          return Flickity2;
2897        }
2898      );
2899    })(imagesloaded$3);
2900    return imagesloaded$3.exports;
2901  }
2902  /*!
2903   * Flickity v3.0.0
2904   * Touch, responsive, flickable carousels
2905   *
2906   * Licensed GPLv3 for open source use
2907   * or Flickity Commercial License for commercial use
2908   *
2909   * https://flickity.metafizzy.co
2910   * Copyright 2015-2022 Metafizzy
2911   */
2912  var hasRequiredJs;
2913  function requireJs() {
2914    if (hasRequiredJs) return js.exports;
2915    hasRequiredJs = 1;
2916    (function(module) {
2917      if (module.exports) {
2918        const Flickity2 = requireCore();
2919        requireDrag();
2920        requirePrevNextButton();
2921        requirePageDots();
2922        requirePlayer();
2923        requireAddRemoveCell();
2924        requireLazyload();
2925        requireImagesloaded();
2926        module.exports = Flickity2;
2927      }
2928    })(js);
2929    return js.exports;
2930  }
2931  var jsExports = requireJs();
2932  const Flickity = /* @__PURE__ */ getDefaultExportFromCjs(jsExports);
2933  class AccordionContent {
2934    constructor() {
2935      this.$els = document.querySelectorAll(".js-accordion-content");
2936      this.$els.forEach(($el) => {
2937        const $carousel = $el.querySelector(".js-accordion-content-carousel");
2938        if ($carousel) {
2939          new Flickity($carousel, {
2940            cellAlign: "left",
2941            contain: true,
2942            wrapAround: true,
2943            prevNextButtons: false,
2944            imagesLoaded: true
2945          });
2946        }
2947      });
2948    }
2949  }
2950  const mobileMenuToggle = "OKENDO_MOBILE_MENU_TOGGLE";
2951  const videoLoaded = "OKENDO_VIDEO_LOADED";
2952  class Animations {
2953    constructor() {
2954      const $components = document.querySelectorAll("[data-component]");
2955      this.components = [];
2956      const options = {
2957        root: null,
2958        threshold: 0.3
2959      };
2960      const observer = new IntersectionObserver((entries, observer2) => {
2961        entries.forEach((entry, index) => {
2962          const { intersectionIndex } = entry.target;
2963          const component = this.components[intersectionIndex];
2964          const { animations } = component;
2965          if (entry.isIntersecting) {
2966            animations.forEach((animation) => {
2967              if (animation.type === "video" && !animation.video) {
2968                animation.video = new VideoAnimation(animation.$el);
2969              }
2970            });
2971            entry.target.classList.add("in-view");
2972          } else {
2973            entry.target.classList.remove("in-view");
2974          }
2975        });
2976      }, options);
2977      $components.forEach(($component, index) => {
2978        const animations = [];
2979        const $animations = $component.querySelectorAll(".js-animation");
2980        $animations.forEach(($animation) => {
2981          const animation = {
2982            "$el": $animation,
2983            "type": $animation.dataset.animationType
2984          };
2985          animations.push(animation);
2986        });
2987        this.components.push({
2988          "$component": $component,
2989          animations
2990        });
2991        $component.intersectionIndex = index;
2992        observer.observe($component);
2993      });
2994    }
2995  }
2996  class VideoAnimation {
2997    constructor($el) {
2998      if (!$el || !$el.dataset.source || !$el.dataset.mime) return;
2999      this.$el = $el;
3000      const {
3001        mime,
3002        source,
3003        hoverOnly,
3004        poster,
3005        mp4Source,
3006        mp4Mime,
3007        disableOnMobile,
3008        loop
3009      } = this.$el.dataset;
3010      if (disableOnMobile === "true" && window.innerWidth < 1024) {
3011        return;
3012      }
3013      const isHoverOnly = JSON.parse(hoverOnly.toLowerCase()) || false;
3014      const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
3015      this.$video = document.createElement("video");
3016      if (!isSafari || isSafari && !mp4Source) {
3017        this.$source = document.createElement("source");
3018        this.$source.src = source;
3019        this.$source.type = mime;
3020        this.$video.appendChild(this.$source);
3021      } else if (isSafari && mp4Source && mp4Mime) {
3022        const $mp4Source = document.createElement("source");
3023        $mp4Source.src = mp4Source;
3024        $mp4Source.type = mp4Mime;
3025        $mp4Source.codecs = "hvc1";
3026        $mp4Source.setAttribute("codecs", "hvc1");
3027        this.$video.appendChild($mp4Source);
3028      }
3029      this.$video.muted = true;
3030      this.$video.autoplay = !isHoverOnly;
3031      this.$video.setAttribute("playsinline", true);
3032      this.$video.setAttribute("muted", true);
3033      if (loop === "true") {
3034        this.$video.setAttribute("loop", true);
3035      }
3036      if (poster) {
3037        this.$video.setAttribute("poster", poster);
3038      }
3039      this.$el.appendChild(this.$video);
3040      this.$video.load();
3041      this.$video.onloadeddata = () => {
3042        if (!isHoverOnly) {
3043          this.$video.play();
3044        }
3045        window.dispatchEvent(new CustomEvent(videoLoaded, {
3046          detail: {
3047            el: this.$el
3048          }
3049        }));
3050      };
3051      if (isHoverOnly) {
vendor: 9,487 bytes, lines 3052-3320
3052        const $animationHoverContainer = this.$el.closest(".js-animation-hover-container");
3053        if ($animationHoverContainer) {
3054          $animationHoverContainer.addEventListener("mouseenter", () => {
3055            this.$video.play();
3056          });
3057          $animationHoverContainer.addEventListener("mouseleave", () => {
3058            this.$video.pause();
3059            this.$video.currentTime = 0;
3060            this.$video.load();
3061          });
3062        } else {
3063          this.$el.addEventListener("mouseenter", () => {
3064            this.$video.play();
3065          });
3066          this.$el.addEventListener("mouseleave", () => {
3067            this.$video.pause();
3068            this.$video.currentTime = 0;
3069          });
3070        }
3071      }
3072    }
3073  }
3074  function bind(fn, thisArg) {
3075    return function wrap2() {
3076      return fn.apply(thisArg, arguments);
3077    };
3078  }
3079  const { toString } = Object.prototype;
3080  const { getPrototypeOf } = Object;
3081  const kindOf = /* @__PURE__ */ ((cache) => (thing) => {
3082    const str = toString.call(thing);
3083    return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());
3084  })(/* @__PURE__ */ Object.create(null));
3085  const kindOfTest = (type) => {
3086    type = type.toLowerCase();
3087    return (thing) => kindOf(thing) === type;
3088  };
3089  const typeOfTest = (type) => (thing) => typeof thing === type;
3090  const { isArray } = Array;
3091  const isUndefined = typeOfTest("undefined");
3092  function isBuffer(val) {
3093    return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);
3094  }
3095  const isArrayBuffer = kindOfTest("ArrayBuffer");
3096  function isArrayBufferView(val) {
3097    let result;
3098    if (typeof ArrayBuffer !== "undefined" && ArrayBuffer.isView) {
3099      result = ArrayBuffer.isView(val);
3100    } else {
3101      result = val && val.buffer && isArrayBuffer(val.buffer);
3102    }
3103    return result;
3104  }
3105  const isString = typeOfTest("string");
3106  const isFunction = typeOfTest("function");
3107  const isNumber = typeOfTest("number");
3108  const isObject = (thing) => thing !== null && typeof thing === "object";
3109  const isBoolean = (thing) => thing === true || thing === false;
3110  const isPlainObject$1 = (val) => {
3111    if (kindOf(val) !== "object") {
3112      return false;
3113    }
3114    const prototype2 = getPrototypeOf(val);
3115    return (prototype2 === null || prototype2 === Object.prototype || Object.getPrototypeOf(prototype2) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);
3116  };
3117  const isDate = kindOfTest("Date");
3118  const isFile = kindOfTest("File");
3119  const isBlob = kindOfTest("Blob");
3120  const isFileList = kindOfTest("FileList");
3121  const isStream = (val) => isObject(val) && isFunction(val.pipe);
3122  const isFormData = (thing) => {
3123    let kind;
3124    return thing && (typeof FormData === "function" && thing instanceof FormData || isFunction(thing.append) && ((kind = kindOf(thing)) === "formdata" || // detect form-data instance
3125    kind === "object" && isFunction(thing.toString) && thing.toString() === "[object FormData]"));
3126  };
3127  const isURLSearchParams = kindOfTest("URLSearchParams");
3128  const [isReadableStream, isRequest, isResponse, isHeaders] = ["ReadableStream", "Request", "Response", "Headers"].map(kindOfTest);
3129  const trim = (str) => str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "");
3130  function forEach(obj, fn, { allOwnKeys = false } = {}) {
3131    if (obj === null || typeof obj === "undefined") {
3132      return;
3133    }
3134    let i2;
3135    let l;
3136    if (typeof obj !== "object") {
3137      obj = [obj];
3138    }
3139    if (isArray(obj)) {
3140      for (i2 = 0, l = obj.length; i2 < l; i2++) {
3141        fn.call(null, obj[i2], i2, obj);
3142      }
3143    } else {
3144      const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);
3145      const len = keys.length;
3146      let key;
3147      for (i2 = 0; i2 < len; i2++) {
3148        key = keys[i2];
3149        fn.call(null, obj[key], key, obj);
3150      }
3151    }
3152  }
3153  function findKey(obj, key) {
3154    key = key.toLowerCase();
3155    const keys = Object.keys(obj);
3156    let i2 = keys.length;
3157    let _key;
3158    while (i2-- > 0) {
3159      _key = keys[i2];
3160      if (key === _key.toLowerCase()) {
3161        return _key;
3162      }
3163    }
3164    return null;
3165  }
3166  const _global = (() => {
3167    if (typeof globalThis !== "undefined") return globalThis;
3168    return typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : global;
3169  })();
3170  const isContextDefined = (context) => !isUndefined(context) && context !== _global;
3171  function merge() {
3172    const { caseless } = isContextDefined(this) && this || {};
3173    const result = {};
3174    const assignValue = (val, key) => {
3175      const targetKey = caseless && findKey(result, key) || key;
3176      if (isPlainObject$1(result[targetKey]) && isPlainObject$1(val)) {
3177        result[targetKey] = merge(result[targetKey], val);
3178      } else if (isPlainObject$1(val)) {
3179        result[targetKey] = merge({}, val);
3180      } else if (isArray(val)) {
3181        result[targetKey] = val.slice();
3182      } else {
3183        result[targetKey] = val;
3184      }
3185    };
3186    for (let i2 = 0, l = arguments.length; i2 < l; i2++) {
3187      arguments[i2] && forEach(arguments[i2], assignValue);
3188    }
3189    return result;
3190  }
3191  const extend = (a, b, thisArg, { allOwnKeys } = {}) => {
3192    forEach(b, (val, key) => {
3193      if (thisArg && isFunction(val)) {
3194        a[key] = bind(val, thisArg);
3195      } else {
3196        a[key] = val;
3197      }
3198    }, { allOwnKeys });
3199    return a;
3200  };
3201  const stripBOM = (content) => {
3202    if (content.charCodeAt(0) === 65279) {
3203      content = content.slice(1);
3204    }
3205    return content;
3206  };
3207  const inherits = (constructor, superConstructor, props, descriptors2) => {
3208    constructor.prototype = Object.create(superConstructor.prototype, descriptors2);
3209    constructor.prototype.constructor = constructor;
3210    Object.defineProperty(constructor, "super", {
3211      value: superConstructor.prototype
3212    });
3213    props && Object.assign(constructor.prototype, props);
3214  };
3215  const toFlatObject = (sourceObj, destObj, filter, propFilter) => {
3216    let props;
3217    let i2;
3218    let prop;
3219    const merged = {};
3220    destObj = destObj || {};
3221    if (sourceObj == null) return destObj;
3222    do {
3223      props = Object.getOwnPropertyNames(sourceObj);
3224      i2 = props.length;
3225      while (i2-- > 0) {
3226        prop = props[i2];
3227        if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {
3228          destObj[prop] = sourceObj[prop];
3229          merged[prop] = true;
3230        }
3231      }
3232      sourceObj = filter !== false && getPrototypeOf(sourceObj);
3233    } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);
3234    return destObj;
3235  };
3236  const endsWith = (str, searchString, position) => {
3237    str = String(str);
3238    if (position === void 0 || position > str.length) {
3239      position = str.length;
3240    }
3241    position -= searchString.length;
3242    const lastIndex = str.indexOf(searchString, position);
3243    return lastIndex !== -1 && lastIndex === position;
3244  };
3245  const toArray$1 = (thing) => {
3246    if (!thing) return null;
3247    if (isArray(thing)) return thing;
3248    let i2 = thing.length;
3249    if (!isNumber(i2)) return null;
3250    const arr = new Array(i2);
3251    while (i2-- > 0) {
3252      arr[i2] = thing[i2];
3253    }
3254    return arr;
3255  };
3256  const isTypedArray = /* @__PURE__ */ ((TypedArray) => {
3257    return (thing) => {
3258      return TypedArray && thing instanceof TypedArray;
3259    };
3260  })(typeof Uint8Array !== "undefined" && getPrototypeOf(Uint8Array));
3261  const forEachEntry = (obj, fn) => {
3262    const generator = obj && obj[Symbol.iterator];
3263    const iterator = generator.call(obj);
3264    let result;
3265    while ((result = iterator.next()) && !result.done) {
3266      const pair = result.value;
3267      fn.call(obj, pair[0], pair[1]);
3268    }
3269  };
3270  const matchAll = (regExp, str) => {
3271    let matches;
3272    const arr = [];
3273    while ((matches = regExp.exec(str)) !== null) {
3274      arr.push(matches);
3275    }
3276    return arr;
3277  };
3278  const isHTMLForm = kindOfTest("HTMLFormElement");
3279  const toCamelCase = (str) => {
3280    return str.toLowerCase().replace(
3281      /[-_\s]([a-z\d])(\w*)/g,
3282      function replacer(m, p1, p2) {
3283        return p1.toUpperCase() + p2;
3284      }
3285    );
3286  };
3287  const hasOwnProperty = (({ hasOwnProperty: hasOwnProperty2 }) => (obj, prop) => hasOwnProperty2.call(obj, prop))(Object.prototype);
3288  const isRegExp = kindOfTest("RegExp");
3289  const reduceDescriptors = (obj, reducer) => {
3290    const descriptors2 = Object.getOwnPropertyDescriptors(obj);
3291    const reducedDescriptors = {};
3292    forEach(descriptors2, (descriptor, name) => {
3293      let ret;
3294      if ((ret = reducer(descriptor, name, obj)) !== false) {
3295        reducedDescriptors[name] = ret || descriptor;
3296      }
3297    });
3298    Object.defineProperties(obj, reducedDescriptors);
3299  };
3300  const freezeMethods = (obj) => {
3301    reduceDescriptors(obj, (descriptor, name) => {
3302      if (isFunction(obj) && ["arguments", "caller", "callee"].indexOf(name) !== -1) {
3303        return false;
3304      }
3305      const value = obj[name];
3306      if (!isFunction(value)) return;
3307      descriptor.enumerable = false;
3308      if ("writable" in descriptor) {
3309        descriptor.writable = false;
3310        return;
3311      }
3312      if (!descriptor.set) {
3313        descriptor.set = () => {
3314          throw Error("Can not rewrite read-only method '" + name + "'");
3315        };
3316      }
3317    });
3318  };
3319  const toObjectSet = (arrayOrString, delimiter) => {
3320    const obj = {};
3321    const define = (arr) => {
3322      arr.forEach((value) => {
3323        obj[value] = true;
3324      });
3325    };
3326    isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));
3327    return obj;
3328  };
3329  const noop = () => {
3330  };
3331  const toFiniteNumber = (value, defaultValue) => {
3332    return value != null && Number.isFinite(value = +value) ? value : defaultValue;
3333  };
3334  const ALPHA = "abcdefghijklmnopqrstuvwxyz";
3335  const DIGIT = "0123456789";
3336  const ALPHABET = {
3337    DIGIT,
3338    ALPHA,
3339    ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT
3340  };
3341  const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {
3342    let str = "";
3343    const { length } = alphabet;
3344    while (size--) {
3345      str += alphabet[Math.random() * length | 0];
3346    }
3347    return str;
3348  };
3349  function isSpecCompliantForm(thing) {
3350    return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === "FormData" && thing[Symbol.iterator]);
3351  }
3352  const toJSONObject = (obj) => {
3353    const stack = new Array(10);
3354    const visit = (source, i2) => {
3355      if (isObject(source)) {
3356        if (stack.indexOf(source) >= 0) {
3357          return;
3358        }
3359        if (!("toJSON" in source)) {
3360          stack[i2] = source;
3361          const target = isArray(source) ? [] : {};
3362          forEach(source, (value, key) => {
3363            const reducedValue = visit(value, i2 + 1);
3364            !isUndefined(reducedValue) && (target[key] = reducedValue);
3365          });
3366          stack[i2] = void 0;
3367          return target;
3368        }
3369      }
3370      return source;
3371    };
3372    return visit(obj, 0);
3373  };
3374  const isAsyncFn = kindOfTest("AsyncFunction");
3375  const isThenable = (thing) => thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);
3376  const _setImmediate = ((setImmediateSupported, postMessageSupported) => {
3377    if (setImmediateSupported) {
3378      return setImmediate;
3379    }
3380    return postMessageSupported ? ((token, callbacks) => {
3381      _global.addEventListener("message", ({ source, data }) => {
3382        if (source === _global && data === token) {
3383          callbacks.length && callbacks.shift()();
3384        }
3385      }, false);
3386      return (cb) => {
3387        callbacks.push(cb);
3388        _global.postMessage(token, "*");
3389      };
3390    })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);
3391  })(
3392    typeof setImmediate === "function",
3393    isFunction(_global.postMessage)
3394  );
3395  const asap = typeof queueMicrotask !== "undefined" ? queueMicrotask.bind(_global) : typeof process !== "undefined" && process.nextTick || _setImmediate;
3396  const utils$1 = {
3397    isArray,
3398    isArrayBuffer,
3399    isBuffer,
3400    isFormData,
3401    isArrayBufferView,
3402    isString,
3403    isNumber,
3404    isBoolean,
3405    isObject,
3406    isPlainObject: isPlainObject$1,
3407    isReadableStream,
3408    isRequest,
3409    isResponse,
3410    isHeaders,
3411    isUndefined,
3412    isDate,
3413    isFile,
3414    isBlob,
3415    isRegExp,
3416    isFunction,
3417    isStream,
3418    isURLSearchParams,
3419    isTypedArray,
3420    isFileList,
3421    forEach,
3422    merge,
3423    extend,
3424    trim,
3425    stripBOM,
3426    inherits,
3427    toFlatObject,
3428    kindOf,
3429    kindOfTest,
3430    endsWith,
3431    toArray: toArray$1,
3432    forEachEntry,
3433    matchAll,
3434    isHTMLForm,
3435    hasOwnProperty,
3436    hasOwnProp: hasOwnProperty,
3437    // an alias to avoid ESLint no-prototype-builtins detection
3438    reduceDescriptors,
3439    freezeMethods,
3440    toObjectSet,
3441    toCamelCase,
3442    noop,
3443    toFiniteNumber,
3444    findKey,
3445    global: _global,
3446    isContextDefined,
3447    ALPHABET,
3448    generateString,
3449    isSpecCompliantForm,
3450    toJSONObject,
3451    isAsyncFn,
3452    isThenable,
3453    setImmediate: _setImmediate,
3454    asap
3455  };
3456  function AxiosError$1(message, code, config, request, response) {
3457    Error.call(this);
3458    if (Error.captureStackTrace) {
3459      Error.captureStackTrace(this, this.constructor);
3460    } else {
3461      this.stack = new Error().stack;
3462    }
3463    this.message = message;
3464    this.name = "AxiosError";
3465    code && (this.code = code);
3466    config && (this.config = config);
3467    request && (this.request = request);
3468    if (response) {
3469      this.response = response;
3470      this.status = response.status ? response.status : null;
3471    }
3472  }
3473  utils$1.inherits(AxiosError$1, Error, {
3474    toJSON: function toJSON() {
3475      return {
3476        // Standard
3477        message: this.message,
3478        name: this.name,
3479        // Microsoft
3480        description: this.description,
3481        number: this.number,
3482        // Mozilla
3483        fileName: this.fileName,
3484        lineNumber: this.lineNumber,
3485        columnNumber: this.columnNumber,
3486        stack: this.stack,
3487        // Axios
3488        config: utils$1.toJSONObject(this.config),
vendor: 27,472 bytes, lines 3489-4324
3489        code: this.code,
3490        status: this.status
3491      };
3492    }
3493  });
3494  const prototype$1 = AxiosError$1.prototype;
3495  const descriptors = {};
3496  [
3497    "ERR_BAD_OPTION_VALUE",
3498    "ERR_BAD_OPTION",
3499    "ECONNABORTED",
3500    "ETIMEDOUT",
3501    "ERR_NETWORK",
3502    "ERR_FR_TOO_MANY_REDIRECTS",
3503    "ERR_DEPRECATED",
3504    "ERR_BAD_RESPONSE",
3505    "ERR_BAD_REQUEST",
3506    "ERR_CANCELED",
3507    "ERR_NOT_SUPPORT",
3508    "ERR_INVALID_URL"
3509    // eslint-disable-next-line func-names
3510  ].forEach((code) => {
3511    descriptors[code] = { value: code };
3512  });
3513  Object.defineProperties(AxiosError$1, descriptors);
3514  Object.defineProperty(prototype$1, "isAxiosError", { value: true });
3515  AxiosError$1.from = (error, code, config, request, response, customProps) => {
3516    const axiosError = Object.create(prototype$1);
3517    utils$1.toFlatObject(error, axiosError, function filter(obj) {
3518      return obj !== Error.prototype;
3519    }, (prop) => {
3520      return prop !== "isAxiosError";
3521    });
3522    AxiosError$1.call(axiosError, error.message, code, config, request, response);
3523    axiosError.cause = error;
3524    axiosError.name = error.name;
3525    customProps && Object.assign(axiosError, customProps);
3526    return axiosError;
3527  };
3528  const httpAdapter = null;
3529  function isVisitable(thing) {
3530    return utils$1.isPlainObject(thing) || utils$1.isArray(thing);
3531  }
3532  function removeBrackets(key) {
3533    return utils$1.endsWith(key, "[]") ? key.slice(0, -2) : key;
3534  }
3535  function renderKey(path, key, dots) {
3536    if (!path) return key;
3537    return path.concat(key).map(function each(token, i2) {
3538      token = removeBrackets(token);
3539      return !dots && i2 ? "[" + token + "]" : token;
3540    }).join(dots ? "." : "");
3541  }
3542  function isFlatArray(arr) {
3543    return utils$1.isArray(arr) && !arr.some(isVisitable);
3544  }
3545  const predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) {
3546    return /^is[A-Z]/.test(prop);
3547  });
3548  function toFormData$1(obj, formData, options) {
3549    if (!utils$1.isObject(obj)) {
3550      throw new TypeError("target must be an object");
3551    }
3552    formData = formData || new FormData();
3553    options = utils$1.toFlatObject(options, {
3554      metaTokens: true,
3555      dots: false,
3556      indexes: false
3557    }, false, function defined(option, source) {
3558      return !utils$1.isUndefined(source[option]);
3559    });
3560    const metaTokens = options.metaTokens;
3561    const visitor = options.visitor || defaultVisitor;
3562    const dots = options.dots;
3563    const indexes = options.indexes;
3564    const _Blob = options.Blob || typeof Blob !== "undefined" && Blob;
3565    const useBlob = _Blob && utils$1.isSpecCompliantForm(formData);
3566    if (!utils$1.isFunction(visitor)) {
3567      throw new TypeError("visitor must be a function");
3568    }
3569    function convertValue(value) {
3570      if (value === null) return "";
3571      if (utils$1.isDate(value)) {
3572        return value.toISOString();
3573      }
3574      if (!useBlob && utils$1.isBlob(value)) {
3575        throw new AxiosError$1("Blob is not supported. Use a Buffer instead.");
3576      }
3577      if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) {
3578        return useBlob && typeof Blob === "function" ? new Blob([value]) : Buffer.from(value);
3579      }
3580      return value;
3581    }
3582    function defaultVisitor(value, key, path) {
3583      let arr = value;
3584      if (value && !path && typeof value === "object") {
3585        if (utils$1.endsWith(key, "{}")) {
3586          key = metaTokens ? key : key.slice(0, -2);
3587          value = JSON.stringify(value);
3588        } else if (utils$1.isArray(value) && isFlatArray(value) || (utils$1.isFileList(value) || utils$1.endsWith(key, "[]")) && (arr = utils$1.toArray(value))) {
3589          key = removeBrackets(key);
3590          arr.forEach(function each(el, index) {
3591            !(utils$1.isUndefined(el) || el === null) && formData.append(
3592              // eslint-disable-next-line no-nested-ternary
3593              indexes === true ? renderKey([key], index, dots) : indexes === null ? key : key + "[]",
3594              convertValue(el)
3595            );
3596          });
3597          return false;
3598        }
3599      }
3600      if (isVisitable(value)) {
3601        return true;
3602      }
3603      formData.append(renderKey(path, key, dots), convertValue(value));
3604      return false;
3605    }
3606    const stack = [];
3607    const exposedHelpers = Object.assign(predicates, {
3608      defaultVisitor,
3609      convertValue,
3610      isVisitable
3611    });
3612    function build(value, path) {
3613      if (utils$1.isUndefined(value)) return;
3614      if (stack.indexOf(value) !== -1) {
3615        throw Error("Circular reference detected in " + path.join("."));
3616      }
3617      stack.push(value);
3618      utils$1.forEach(value, function each(el, key) {
3619        const result = !(utils$1.isUndefined(el) || el === null) && visitor.call(
3620          formData,
3621          el,
3622          utils$1.isString(key) ? key.trim() : key,
3623          path,
3624          exposedHelpers
3625        );
3626        if (result === true) {
3627          build(el, path ? path.concat(key) : [key]);
3628        }
3629      });
3630      stack.pop();
3631    }
3632    if (!utils$1.isObject(obj)) {
3633      throw new TypeError("data must be an object");
3634    }
3635    build(obj);
3636    return formData;
3637  }
3638  function encode$1(str) {
3639    const charMap = {
3640      "!": "%21",
3641      "'": "%27",
3642      "(": "%28",
3643      ")": "%29",
3644      "~": "%7E",
3645      "%20": "+",
3646      "%00": "\0"
3647    };
3648    return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {
3649      return charMap[match];
3650    });
3651  }
3652  function AxiosURLSearchParams(params, options) {
3653    this._pairs = [];
3654    params && toFormData$1(params, this, options);
3655  }
3656  const prototype = AxiosURLSearchParams.prototype;
3657  prototype.append = function append(name, value) {
3658    this._pairs.push([name, value]);
3659  };
3660  prototype.toString = function toString2(encoder) {
3661    const _encode = encoder ? function(value) {
3662      return encoder.call(this, value, encode$1);
3663    } : encode$1;
3664    return this._pairs.map(function each(pair) {
3665      return _encode(pair[0]) + "=" + _encode(pair[1]);
3666    }, "").join("&");
3667  };
3668  function encode(val) {
3669    return encodeURIComponent(val).replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, "+").replace(/%5B/gi, "[").replace(/%5D/gi, "]");
3670  }
3671  function buildURL(url, params, options) {
3672    if (!params) {
3673      return url;
3674    }
3675    const _encode = options && options.encode || encode;
3676    if (utils$1.isFunction(options)) {
3677      options = {
3678        serialize: options
3679      };
3680    }
3681    const serializeFn = options && options.serialize;
3682    let serializedParams;
3683    if (serializeFn) {
3684      serializedParams = serializeFn(params, options);
3685    } else {
3686      serializedParams = utils$1.isURLSearchParams(params) ? params.toString() : new AxiosURLSearchParams(params, options).toString(_encode);
3687    }
3688    if (serializedParams) {
3689      const hashmarkIndex = url.indexOf("#");
3690      if (hashmarkIndex !== -1) {
3691        url = url.slice(0, hashmarkIndex);
3692      }
3693      url += (url.indexOf("?") === -1 ? "?" : "&") + serializedParams;
3694    }
3695    return url;
3696  }
3697  class InterceptorManager {
3698    constructor() {
3699      this.handlers = [];
3700    }
3701    /**
3702     * Add a new interceptor to the stack
3703     *
3704     * @param {Function} fulfilled The function to handle `then` for a `Promise`
3705     * @param {Function} rejected The function to handle `reject` for a `Promise`
3706     *
3707     * @return {Number} An ID used to remove interceptor later
3708     */
3709    use(fulfilled, rejected, options) {
3710      this.handlers.push({
3711        fulfilled,
3712        rejected,
3713        synchronous: options ? options.synchronous : false,
3714        runWhen: options ? options.runWhen : null
3715      });
3716      return this.handlers.length - 1;
3717    }
3718    /**
3719     * Remove an interceptor from the stack
3720     *
3721     * @param {Number} id The ID that was returned by `use`
3722     *
3723     * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise
3724     */
3725    eject(id) {
3726      if (this.handlers[id]) {
3727        this.handlers[id] = null;
3728      }
3729    }
3730    /**
3731     * Clear all interceptors from the stack
3732     *
3733     * @returns {void}
3734     */
3735    clear() {
3736      if (this.handlers) {
3737        this.handlers = [];
3738      }
3739    }
3740    /**
3741     * Iterate over all the registered interceptors
3742     *
3743     * This method is particularly useful for skipping over any
3744     * interceptors that may have become `null` calling `eject`.
3745     *
3746     * @param {Function} fn The function to call for each interceptor
3747     *
3748     * @returns {void}
3749     */
3750    forEach(fn) {
3751      utils$1.forEach(this.handlers, function forEachHandler(h) {
3752        if (h !== null) {
3753          fn(h);
3754        }
3755      });
3756    }
3757  }
3758  const transitionalDefaults = {
3759    silentJSONParsing: true,
3760    forcedJSONParsing: true,
3761    clarifyTimeoutError: false
3762  };
3763  const URLSearchParams$1 = typeof URLSearchParams !== "undefined" ? URLSearchParams : AxiosURLSearchParams;
3764  const FormData$1 = typeof FormData !== "undefined" ? FormData : null;
3765  const Blob$1 = typeof Blob !== "undefined" ? Blob : null;
3766  const platform$1 = {
3767    isBrowser: true,
3768    classes: {
3769      URLSearchParams: URLSearchParams$1,
3770      FormData: FormData$1,
3771      Blob: Blob$1
3772    },
3773    protocols: ["http", "https", "file", "blob", "url", "data"]
3774  };
3775  const hasBrowserEnv = typeof window !== "undefined" && typeof document !== "undefined";
3776  const _navigator = typeof navigator === "object" && navigator || void 0;
3777  const hasStandardBrowserEnv = hasBrowserEnv && (!_navigator || ["ReactNative", "NativeScript", "NS"].indexOf(_navigator.product) < 0);
3778  const hasStandardBrowserWebWorkerEnv = (() => {
3779    return typeof WorkerGlobalScope !== "undefined" && // eslint-disable-next-line no-undef
3780    self instanceof WorkerGlobalScope && typeof self.importScripts === "function";
3781  })();
3782  const origin = hasBrowserEnv && window.location.href || "http://localhost";
3783  const utils = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
3784    __proto__: null,
3785    hasBrowserEnv,
3786    hasStandardBrowserEnv,
3787    hasStandardBrowserWebWorkerEnv,
3788    navigator: _navigator,
3789    origin
3790  }, Symbol.toStringTag, { value: "Module" }));
3791  const platform = {
3792    ...utils,
3793    ...platform$1
3794  };
3795  function toURLEncodedForm(data, options) {
3796    return toFormData$1(data, new platform.classes.URLSearchParams(), Object.assign({
3797      visitor: function(value, key, path, helpers) {
3798        if (platform.isNode && utils$1.isBuffer(value)) {
3799          this.append(key, value.toString("base64"));
3800          return false;
3801        }
3802        return helpers.defaultVisitor.apply(this, arguments);
3803      }
3804    }, options));
3805  }
3806  function parsePropPath(name) {
3807    return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map((match) => {
3808      return match[0] === "[]" ? "" : match[1] || match[0];
3809    });
3810  }
3811  function arrayToObject(arr) {
3812    const obj = {};
3813    const keys = Object.keys(arr);
3814    let i2;
3815    const len = keys.length;
3816    let key;
3817    for (i2 = 0; i2 < len; i2++) {
3818      key = keys[i2];
3819      obj[key] = arr[key];
3820    }
3821    return obj;
3822  }
3823  function formDataToJSON(formData) {
3824    function buildPath(path, value, target, index) {
3825      let name = path[index++];
3826      if (name === "__proto__") return true;
3827      const isNumericKey = Number.isFinite(+name);
3828      const isLast = index >= path.length;
3829      name = !name && utils$1.isArray(target) ? target.length : name;
3830      if (isLast) {
3831        if (utils$1.hasOwnProp(target, name)) {
3832          target[name] = [target[name], value];
3833        } else {
3834          target[name] = value;
3835        }
3836        return !isNumericKey;
3837      }
3838      if (!target[name] || !utils$1.isObject(target[name])) {
3839        target[name] = [];
3840      }
3841      const result = buildPath(path, value, target[name], index);
3842      if (result && utils$1.isArray(target[name])) {
3843        target[name] = arrayToObject(target[name]);
3844      }
3845      return !isNumericKey;
3846    }
3847    if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) {
3848      const obj = {};
3849      utils$1.forEachEntry(formData, (name, value) => {
3850        buildPath(parsePropPath(name), value, obj, 0);
3851      });
3852      return obj;
3853    }
3854    return null;
3855  }
3856  function stringifySafely(rawValue, parser, encoder) {
3857    if (utils$1.isString(rawValue)) {
3858      try {
3859        (parser || JSON.parse)(rawValue);
3860        return utils$1.trim(rawValue);
3861      } catch (e) {
3862        if (e.name !== "SyntaxError") {
3863          throw e;
3864        }
3865      }
3866    }
3867    return (encoder || JSON.stringify)(rawValue);
3868  }
3869  const defaults$1 = {
3870    transitional: transitionalDefaults,
3871    adapter: ["xhr", "http", "fetch"],
3872    transformRequest: [function transformRequest(data, headers) {
3873      const contentType = headers.getContentType() || "";
3874      const hasJSONContentType = contentType.indexOf("application/json") > -1;
3875      const isObjectPayload = utils$1.isObject(data);
3876      if (isObjectPayload && utils$1.isHTMLForm(data)) {
3877        data = new FormData(data);
3878      }
3879      const isFormData2 = utils$1.isFormData(data);
3880      if (isFormData2) {
3881        return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;
3882      }
3883      if (utils$1.isArrayBuffer(data) || utils$1.isBuffer(data) || utils$1.isStream(data) || utils$1.isFile(data) || utils$1.isBlob(data) || utils$1.isReadableStream(data)) {
3884        return data;
3885      }
3886      if (utils$1.isArrayBufferView(data)) {
3887        return data.buffer;
3888      }
3889      if (utils$1.isURLSearchParams(data)) {
3890        headers.setContentType("application/x-www-form-urlencoded;charset=utf-8", false);
3891        return data.toString();
3892      }
3893      let isFileList2;
3894      if (isObjectPayload) {
3895        if (contentType.indexOf("application/x-www-form-urlencoded") > -1) {
3896          return toURLEncodedForm(data, this.formSerializer).toString();
3897        }
3898        if ((isFileList2 = utils$1.isFileList(data)) || contentType.indexOf("multipart/form-data") > -1) {
3899          const _FormData = this.env && this.env.FormData;
3900          return toFormData$1(
3901            isFileList2 ? { "files[]": data } : data,
3902            _FormData && new _FormData(),
3903            this.formSerializer
3904          );
3905        }
3906      }
3907      if (isObjectPayload || hasJSONContentType) {
3908        headers.setContentType("application/json", false);
3909        return stringifySafely(data);
3910      }
3911      return data;
3912    }],
3913    transformResponse: [function transformResponse(data) {
3914      const transitional = this.transitional || defaults$1.transitional;
3915      const forcedJSONParsing = transitional && transitional.forcedJSONParsing;
3916      const JSONRequested = this.responseType === "json";
3917      if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) {
3918        return data;
3919      }
3920      if (data && utils$1.isString(data) && (forcedJSONParsing && !this.responseType || JSONRequested)) {
3921        const silentJSONParsing = transitional && transitional.silentJSONParsing;
3922        const strictJSONParsing = !silentJSONParsing && JSONRequested;
3923        try {
3924          return JSON.parse(data);
3925        } catch (e) {
3926          if (strictJSONParsing) {
3927            if (e.name === "SyntaxError") {
3928              throw AxiosError$1.from(e, AxiosError$1.ERR_BAD_RESPONSE, this, null, this.response);
3929            }
3930            throw e;
3931          }
3932        }
3933      }
3934      return data;
3935    }],
3936    /**
3937     * A timeout in milliseconds to abort a request. If set to 0 (default) a
3938     * timeout is not created.
3939     */
3940    timeout: 0,
3941    xsrfCookieName: "XSRF-TOKEN",
3942    xsrfHeaderName: "X-XSRF-TOKEN",
3943    maxContentLength: -1,
3944    maxBodyLength: -1,
3945    env: {
3946      FormData: platform.classes.FormData,
3947      Blob: platform.classes.Blob
3948    },
3949    validateStatus: function validateStatus(status) {
3950      return status >= 200 && status < 300;
3951    },
3952    headers: {
3953      common: {
3954        "Accept": "application/json, text/plain, */*",
3955        "Content-Type": void 0
3956      }
3957    }
3958  };
3959  utils$1.forEach(["delete", "get", "head", "post", "put", "patch"], (method) => {
3960    defaults$1.headers[method] = {};
3961  });
3962  const ignoreDuplicateOf = utils$1.toObjectSet([
3963    "age",
3964    "authorization",
3965    "content-length",
3966    "content-type",
3967    "etag",
3968    "expires",
3969    "from",
3970    "host",
3971    "if-modified-since",
3972    "if-unmodified-since",
3973    "last-modified",
3974    "location",
3975    "max-forwards",
3976    "proxy-authorization",
3977    "referer",
3978    "retry-after",
3979    "user-agent"
3980  ]);
3981  const parseHeaders = (rawHeaders) => {
3982    const parsed = {};
3983    let key;
3984    let val;
3985    let i2;
3986    rawHeaders && rawHeaders.split("\n").forEach(function parser(line) {
3987      i2 = line.indexOf(":");
3988      key = line.substring(0, i2).trim().toLowerCase();
3989      val = line.substring(i2 + 1).trim();
3990      if (!key || parsed[key] && ignoreDuplicateOf[key]) {
3991        return;
3992      }
3993      if (key === "set-cookie") {
3994        if (parsed[key]) {
3995          parsed[key].push(val);
3996        } else {
3997          parsed[key] = [val];
3998        }
3999      } else {
4000        parsed[key] = parsed[key] ? parsed[key] + ", " + val : val;
4001      }
4002    });
4003    return parsed;
4004  };
4005  const $internals = Symbol("internals");
4006  function normalizeHeader(header) {
4007    return header && String(header).trim().toLowerCase();
4008  }
4009  function normalizeValue(value) {
4010    if (value === false || value == null) {
4011      return value;
4012    }
4013    return utils$1.isArray(value) ? value.map(normalizeValue) : String(value);
4014  }
4015  function parseTokens(str) {
4016    const tokens = /* @__PURE__ */ Object.create(null);
4017    const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;
4018    let match;
4019    while (match = tokensRE.exec(str)) {
4020      tokens[match[1]] = match[2];
4021    }
4022    return tokens;
4023  }
4024  const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());
4025  function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {
4026    if (utils$1.isFunction(filter)) {
4027      return filter.call(this, value, header);
4028    }
4029    if (isHeaderNameFilter) {
4030      value = header;
4031    }
4032    if (!utils$1.isString(value)) return;
4033    if (utils$1.isString(filter)) {
4034      return value.indexOf(filter) !== -1;
4035    }
4036    if (utils$1.isRegExp(filter)) {
4037      return filter.test(value);
4038    }
4039  }
4040  function formatHeader(header) {
4041    return header.trim().toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => {
4042      return char.toUpperCase() + str;
4043    });
4044  }
4045  function buildAccessors(obj, header) {
4046    const accessorName = utils$1.toCamelCase(" " + header);
4047    ["get", "set", "has"].forEach((methodName) => {
4048      Object.defineProperty(obj, methodName + accessorName, {
4049        value: function(arg1, arg2, arg3) {
4050          return this[methodName].call(this, header, arg1, arg2, arg3);
4051        },
4052        configurable: true
4053      });
4054    });
4055  }
4056  let AxiosHeaders$1 = class AxiosHeaders {
4057    constructor(headers) {
4058      headers && this.set(headers);
4059    }
4060    set(header, valueOrRewrite, rewrite) {
4061      const self2 = this;
4062      function setHeader(_value, _header, _rewrite) {
4063        const lHeader = normalizeHeader(_header);
4064        if (!lHeader) {
4065          throw new Error("header name must be a non-empty string");
4066        }
4067        const key = utils$1.findKey(self2, lHeader);
4068        if (!key || self2[key] === void 0 || _rewrite === true || _rewrite === void 0 && self2[key] !== false) {
4069          self2[key || _header] = normalizeValue(_value);
4070        }
4071      }
4072      const setHeaders = (headers, _rewrite) => utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));
4073      if (utils$1.isPlainObject(header) || header instanceof this.constructor) {
4074        setHeaders(header, valueOrRewrite);
4075      } else if (utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {
4076        setHeaders(parseHeaders(header), valueOrRewrite);
4077      } else if (utils$1.isHeaders(header)) {
4078        for (const [key, value] of header.entries()) {
4079          setHeader(value, key, rewrite);
4080        }
4081      } else {
4082        header != null && setHeader(valueOrRewrite, header, rewrite);
4083      }
4084      return this;
4085    }
4086    get(header, parser) {
4087      header = normalizeHeader(header);
4088      if (header) {
4089        const key = utils$1.findKey(this, header);
4090        if (key) {
4091          const value = this[key];
4092          if (!parser) {
4093            return value;
4094          }
4095          if (parser === true) {
4096            return parseTokens(value);
4097          }
4098          if (utils$1.isFunction(parser)) {
4099            return parser.call(this, value, key);
4100          }
4101          if (utils$1.isRegExp(parser)) {
4102            return parser.exec(value);
4103          }
4104          throw new TypeError("parser must be boolean|regexp|function");
4105        }
4106      }
4107    }
4108    has(header, matcher) {
4109      header = normalizeHeader(header);
4110      if (header) {
4111        const key = utils$1.findKey(this, header);
4112        return !!(key && this[key] !== void 0 && (!matcher || matchHeaderValue(this, this[key], key, matcher)));
4113      }
4114      return false;
4115    }
4116    delete(header, matcher) {
4117      const self2 = this;
4118      let deleted = false;
4119      function deleteHeader(_header) {
4120        _header = normalizeHeader(_header);
4121        if (_header) {
4122          const key = utils$1.findKey(self2, _header);
4123          if (key && (!matcher || matchHeaderValue(self2, self2[key], key, matcher))) {
4124            delete self2[key];
4125            deleted = true;
4126          }
4127        }
4128      }
4129      if (utils$1.isArray(header)) {
4130        header.forEach(deleteHeader);
4131      } else {
4132        deleteHeader(header);
4133      }
4134      return deleted;
4135    }
4136    clear(matcher) {
4137      const keys = Object.keys(this);
4138      let i2 = keys.length;
4139      let deleted = false;
4140      while (i2--) {
4141        const key = keys[i2];
4142        if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {
4143          delete this[key];
4144          deleted = true;
4145        }
4146      }
4147      return deleted;
4148    }
4149    normalize(format) {
4150      const self2 = this;
4151      const headers = {};
4152      utils$1.forEach(this, (value, header) => {
4153        const key = utils$1.findKey(headers, header);
4154        if (key) {
4155          self2[key] = normalizeValue(value);
4156          delete self2[header];
4157          return;
4158        }
4159        const normalized = format ? formatHeader(header) : String(header).trim();
4160        if (normalized !== header) {
4161          delete self2[header];
4162        }
4163        self2[normalized] = normalizeValue(value);
4164        headers[normalized] = true;
4165      });
4166      return this;
4167    }
4168    concat(...targets) {
4169      return this.constructor.concat(this, ...targets);
4170    }
4171    toJSON(asStrings) {
4172      const obj = /* @__PURE__ */ Object.create(null);
4173      utils$1.forEach(this, (value, header) => {
4174        value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(", ") : value);
4175      });
4176      return obj;
4177    }
4178    [Symbol.iterator]() {
4179      return Object.entries(this.toJSON())[Symbol.iterator]();
4180    }
4181    toString() {
4182      return Object.entries(this.toJSON()).map(([header, value]) => header + ": " + value).join("\n");
4183    }
4184    get [Symbol.toStringTag]() {
4185      return "AxiosHeaders";
4186    }
4187    static from(thing) {
4188      return thing instanceof this ? thing : new this(thing);
4189    }
4190    static concat(first, ...targets) {
4191      const computed = new this(first);
4192      targets.forEach((target) => computed.set(target));
4193      return computed;
4194    }
4195    static accessor(header) {
4196      const internals = this[$internals] = this[$internals] = {
4197        accessors: {}
4198      };
4199      const accessors = internals.accessors;
4200      const prototype2 = this.prototype;
4201      function defineAccessor(_header) {
4202        const lHeader = normalizeHeader(_header);
4203        if (!accessors[lHeader]) {
4204          buildAccessors(prototype2, _header);
4205          accessors[lHeader] = true;
4206        }
4207      }
4208      utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);
4209      return this;
4210    }
4211  };
4212  AxiosHeaders$1.accessor(["Content-Type", "Content-Length", "Accept", "Accept-Encoding", "User-Agent", "Authorization"]);
4213  utils$1.reduceDescriptors(AxiosHeaders$1.prototype, ({ value }, key) => {
4214    let mapped = key[0].toUpperCase() + key.slice(1);
4215    return {
4216      get: () => value,
4217      set(headerValue) {
4218        this[mapped] = headerValue;
4219      }
4220    };
4221  });
4222  utils$1.freezeMethods(AxiosHeaders$1);
4223  function transformData(fns, response) {
4224    const config = this || defaults$1;
4225    const context = response || config;
4226    const headers = AxiosHeaders$1.from(context.headers);
4227    let data = context.data;
4228    utils$1.forEach(fns, function transform(fn) {
4229      data = fn.call(config, data, headers.normalize(), response ? response.status : void 0);
4230    });
4231    headers.normalize();
4232    return data;
4233  }
4234  function isCancel$1(value) {
4235    return !!(value && value.__CANCEL__);
4236  }
4237  function CanceledError$1(message, config, request) {
4238    AxiosError$1.call(this, message == null ? "canceled" : message, AxiosError$1.ERR_CANCELED, config, request);
4239    this.name = "CanceledError";
4240  }
4241  utils$1.inherits(CanceledError$1, AxiosError$1, {
4242    __CANCEL__: true
4243  });
4244  function settle(resolve, reject, response) {
4245    const validateStatus = response.config.validateStatus;
4246    if (!response.status || !validateStatus || validateStatus(response.status)) {
4247      resolve(response);
4248    } else {
4249      reject(new AxiosError$1(
4250        "Request failed with status code " + response.status,
4251        [AxiosError$1.ERR_BAD_REQUEST, AxiosError$1.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],
4252        response.config,
4253        response.request,
4254        response
4255      ));
4256    }
4257  }
4258  function parseProtocol(url) {
4259    const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url);
4260    return match && match[1] || "";
4261  }
4262  function speedometer(samplesCount, min) {
4263    samplesCount = samplesCount || 10;
4264    const bytes = new Array(samplesCount);
4265    const timestamps = new Array(samplesCount);
4266    let head = 0;
4267    let tail = 0;
4268    let firstSampleTS;
4269    min = min !== void 0 ? min : 1e3;
4270    return function push(chunkLength) {
4271      const now = Date.now();
4272      const startedAt = timestamps[tail];
4273      if (!firstSampleTS) {
4274        firstSampleTS = now;
4275      }
4276      bytes[head] = chunkLength;
4277      timestamps[head] = now;
4278      let i2 = tail;
4279      let bytesCount = 0;
4280      while (i2 !== head) {
4281        bytesCount += bytes[i2++];
4282        i2 = i2 % samplesCount;
4283      }
4284      head = (head + 1) % samplesCount;
4285      if (head === tail) {
4286        tail = (tail + 1) % samplesCount;
4287      }
4288      if (now - firstSampleTS < min) {
4289        return;
4290      }
4291      const passed = startedAt && now - startedAt;
4292      return passed ? Math.round(bytesCount * 1e3 / passed) : void 0;
4293    };
4294  }
4295  function throttle(fn, freq) {
4296    let timestamp = 0;
4297    let threshold = 1e3 / freq;
4298    let lastArgs;
4299    let timer;
4300    const invoke = (args, now = Date.now()) => {
4301      timestamp = now;
4302      lastArgs = null;
4303      if (timer) {
4304        clearTimeout(timer);
4305        timer = null;
4306      }
4307      fn.apply(null, args);
4308    };
4309    const throttled = (...args) => {
4310      const now = Date.now();
4311      const passed = now - timestamp;
4312      if (passed >= threshold) {
4313        invoke(args, now);
4314      } else {
4315        lastArgs = args;
4316        if (!timer) {
4317          timer = setTimeout(() => {
4318            timer = null;
4319            invoke(lastArgs);
4320          }, threshold - passed);
4321        }
4322      }
4323    };
4324    const flush = () =>
4324 lastArgs && invoke(lastArgs);
4325    return [throttled, flush];
4326  }
4327  const progressEventReducer = (listener, isDownloadStream, freq = 3) => {
4328    let bytesNotified = 0;
4329    const _speedometer = speedometer(50, 250);
4330    return throttle((e) => {
4331      const loaded = e.loaded;
4332      const total = e.lengthComputable ? e.total : void 0;
4333      const progressBytes = loaded - bytesNotified;
4334      const rate = _speedometer(progressBytes);
4335      const inRange = loaded <= total;
4336      bytesNotified = loaded;
4337      const data = {
4338        loaded,
4339        total,
4340        progress: total ? loaded / total : void 0,
4341        bytes: progressBytes,
4342        rate: rate ? rate : void 0,
4343        estimated: rate && total && inRange ? (total - loaded) / rate : void 0,
4344        event: e,
4345        lengthComputable: total != null,
4346        [isDownloadStream ? "download" : "upload"]: true
4347      };
4348      listener(data);
4349    }, freq);
4350  };
4351  const progressEventDecorator = (total, throttled) => {
4352    const lengthComputable = total != null;
4353    return [(loaded) => throttled[0]({
4354      lengthComputable,
4355      total,
4356      loaded
4357    }), throttled[1]];
4358  };
4359  const asyncDecorator = (fn) => (...args) => utils$1.asap(() => fn(...args));
4360  const isURLSameOrigin = platform.hasStandardBrowserEnv ? /* @__PURE__ */ ((origin2, isMSIE) => (url) => {
4361    url = new URL(url, platform.origin);
4362    return origin2.protocol === url.protocol && origin2.host === url.host && (isMSIE || origin2.port === url.port);
4363  })(
4364    new URL(platform.origin),
4365    platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)
4366  ) : () => true;
4367  const cookies = platform.hasStandardBrowserEnv ? (
4368    // Standard browser envs support document.cookie
4369    {
4370      write(name, value, expires, path, domain, secure) {
4371        const cookie = [name + "=" + encodeURIComponent(value)];
4372        utils$1.isNumber(expires) && cookie.push("expires=" + new Date(expires).toGMTString());
4373        utils$1.isString(path) && cookie.push("path=" + path);
4374        utils$1.isString(domain) && cookie.push("domain=" + domain);
4375        secure === true && cookie.push("secure");
4376        document.cookie = cookie.join("; ");
4377      },
4378      read(name) {
4379        const match = document.cookie.match(new RegExp("(^|;\\s*)(" + name + ")=([^;]*)"));
4380        return match ? decodeURIComponent(match[3]) : null;
4381      },
4382      remove(name) {
4383        this.write(name, "", Date.now() - 864e5);
4384      }
4385    }
4386  ) : (
4387    // Non-standard browser env (web workers, react-native) lack needed support.
4388    {
4389      write() {
4390      },
4391      read() {
4392        return null;
4393      },
4394      remove() {
4395      }
4396    }
4397  );
4398  function isAbsoluteURL(url) {
4399    return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url);
4400  }
4401  function combineURLs(baseURL, relativeURL) {
4402    return relativeURL ? baseURL.replace(/\/?\/$/, "") + "/" + relativeURL.replace(/^\/+/, "") : baseURL;
4403  }
4404  function buildFullPath(baseURL, requestedURL) {
4405    if (baseURL && !isAbsoluteURL(requestedURL)) {
4406      return combineURLs(baseURL, requestedURL);
4407    }
4408    return requestedURL;
4409  }
4410  const headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? { ...thing } : thing;
4411  function mergeConfig$1(config1, config2) {
4412    config2 = config2 || {};
4413    const config = {};
4414    function getMergedValue(target, source, prop, caseless) {
4415      if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) {
4416        return utils$1.merge.call({ caseless }, target, source);
4417      } else if (utils$1.isPlainObject(source)) {
4418        return utils$1.merge({}, source);
4419      } else if (utils$1.isArray(source)) {
4420        return source.slice();
4421      }
4422      return source;
4423    }
4424    function mergeDeepProperties(a, b, prop, caseless) {
4425      if (!utils$1.isUndefined(b)) {
4426        return getMergedValue(a, b, prop, caseless);
4427      } else if (!utils$1.isUndefined(a)) {
4428        return getMergedValue(void 0, a, prop, caseless);
4429      }
4430    }
4431    function valueFromConfig2(a, b) {
4432      if (!utils$1.isUndefined(b)) {
4433        return getMergedValue(void 0, b);
4434      }
4435    }
4436    function defaultToConfig2(a, b) {
4437      if (!utils$1.isUndefined(b)) {
4438        return getMergedValue(void 0, b);
4439      } else if (!utils$1.isUndefined(a)) {
4440        return getMergedValue(void 0, a);
4441      }
4442    }
4443    function mergeDirectKeys(a, b, prop) {
4444      if (prop in config2) {
4445        return getMergedValue(a, b);
4446      } else if (prop in config1) {
4447        return getMergedValue(void 0, a);
4448      }
4449    }
4450    const mergeMap = {
4451      url: valueFromConfig2,
4452      method: valueFromConfig2,
4453      data: valueFromConfig2,
4454      baseURL: defaultToConfig2,
4455      transformRequest: defaultToConfig2,
4456      transformResponse: defaultToConfig2,
4457      paramsSerializer: defaultToConfig2,
4458      timeout: defaultToConfig2,
4459      timeoutMessage: defaultToConfig2,
4460      withCredentials: defaultToConfig2,
4461      withXSRFToken: defaultToConfig2,
4462      adapter: defaultToConfig2,
4463      responseType: defaultToConfig2,
4464      xsrfCookieName: defaultToConfig2,
4465      xsrfHeaderName: defaultToConfig2,
4466      onUploadProgress: defaultToConfig2,
4467      onDownloadProgress: defaultToConfig2,
4468      decompress: defaultToConfig2,
4469      maxContentLength: defaultToConfig2,
4470      maxBodyLength: defaultToConfig2,
4471      beforeRedirect: defaultToConfig2,
4472      transport: defaultToConfig2,
4473      httpAgent: defaultToConfig2,
4474      httpsAgent: defaultToConfig2,
4475      cancelToken: defaultToConfig2,
4476      socketPath: defaultToConfig2,
4477      responseEncoding: defaultToConfig2,
4478      validateStatus: mergeDirectKeys,
4479      headers: (a, b, prop) => mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true)
4480    };
4481    utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {
4482      const merge2 = mergeMap[prop] || mergeDeepProperties;
4483      const configValue = merge2(config1[prop], config2[prop], prop);
4484      utils$1.isUndefined(configValue) && merge2 !== mergeDirectKeys || (config[prop] = configValue);
4485    });
4486    return config;
4487  }
4488  const resolveConfig$2 = (config) => {
4489    const newConfig = mergeConfig$1({}, config);
4490    let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;
4491    newConfig.headers = headers = AxiosHeaders$1.from(headers);
4492    newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);
4493    if (auth) {
4494      headers.set(
4495        "Authorization",
4496        "Basic " + btoa((auth.username || "") + ":" + (auth.password ? unescape(encodeURIComponent(auth.password)) : ""))
4497      );
4498    }
4499    let contentType;
4500    if (utils$1.isFormData(data)) {
4501      if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {
4502        headers.setContentType(void 0);
4503      } else if ((contentType = headers.getContentType()) !== false) {
4504        const [type, ...tokens] = contentType ? contentType.split(";").map((token) => token.trim()).filter(Boolean) : [];
4505        headers.setContentType([type || "multipart/form-data", ...tokens].join("; "));
4506      }
4507    }
4508    if (platform.hasStandardBrowserEnv) {
4509      withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));
4510      if (withXSRFToken || withXSRFToken !== false && isURLSameOrigin(newConfig.url)) {
4511        const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);
4512        if (xsrfValue) {
4513          headers.set(xsrfHeaderName, xsrfValue);
4514        }
4515      }
4516    }
4517    return newConfig;
4518  };
4519  const isXHRAdapterSupported = typeof XMLHttpRequest !== "undefined";
4520  const xhrAdapter = isXHRAdapterSupported && function(config) {
4521    return new Promise(function dispatchXhrRequest(resolve, reject) {
4522      const _config2 = resolveConfig$2(config);
4523      let requestData = _config2.data;
4524      const requestHeaders = AxiosHeaders$1.from(_config2.headers).normalize();
4525      let { responseType, onUploadProgress, onDownloadProgress } = _config2;
4526      let onCanceled;
4527      let uploadThrottled, downloadThrottled;
4528      let flushUpload, flushDownload;
4529      function done() {
4530        flushUpload && flushUpload();
4531        flushDownload && flushDownload();
4532        _config2.cancelToken && _config2.cancelToken.unsubscribe(onCanceled);
4533        _config2.signal && _config2.signal.removeEventListener("abort", onCanceled);
4534      }
4535      let request = new XMLHttpRequest();
4536      request.open(_config2.method.toUpperCase(), _config2.url, true);
4537      request.timeout = _config2.timeout;
4538      function onloadend() {
4539        if (!request) {
4540          return;
4541        }
4542        const responseHeaders = AxiosHeaders$1.from(
4543          "getAllResponseHeaders" in request && request.getAllResponseHeaders()
4544        );
4545        const responseData = !responseType || responseType === "text" || responseType === "json" ? request.responseText : request.response;
4546        const response = {
4547          data: responseData,
4548          status: request.status,
4549          statusText: request.statusText,
4550          headers: responseHeaders,
4551          config,
4552          request
4553        };
4554        settle(function _resolve(value) {
4555          resolve(value);
4556          done();
4557        }, function _reject(err) {
4558          reject(err);
4559          done();
4560        }, response);
4561        request = null;
4562      }
4563      if ("onloadend" in request) {
4564        request.onloadend = onloadend;
4565      } else {
4566        request.onreadystatechange = function handleLoad() {
4567          if (!request || request.readyState !== 4) {
4568            return;
4569          }
4570          if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf("file:") === 0)) {
4571            return;
4572          }
4573          setTimeout(onloadend);
4574        };
4575      }
4576      request.onabort = function handleAbort() {
4577        if (!request) {
4578          return;
4579        }
4580        reject(new AxiosError$1("Request aborted", AxiosError$1.ECONNABORTED, config, request));
4581        request = null;
4582      };
4583      request.onerror = function handleError() {
4584        reject(new AxiosError$1("Network Error", AxiosError$1.ERR_NETWORK, config, request));
4585        request = null;
4586      };
4587      request.ontimeout = function handleTimeout() {
4588        let timeoutErrorMessage = _config2.timeout ? "timeout of " + _config2.timeout + "ms exceeded" : "timeout exceeded";
4589        const transitional = _config2.transitional || transitionalDefaults;
4590        if (_config2.timeoutErrorMessage) {
4591          timeoutErrorMessage = _config2.timeoutErrorMessage;
4592        }
4593        reject(new AxiosError$1(
4594          timeoutErrorMessage,
4595          transitional.clarifyTimeoutError ? AxiosError$1.ETIMEDOUT : AxiosError$1.ECONNABORTED,
4596          config,
4597          request
4598        ));
4599        request = null;
4600      };
4601      requestData === void 0 && requestHeaders.setContentType(null);
4602      if ("setRequestHeader" in request) {
vendor: 4,767 bytes, lines 4603-4748
4603        utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {
4604          request.setRequestHeader(key, val);
4605        });
4606      }
4607      if (!utils$1.isUndefined(_config2.withCredentials)) {
4608        request.withCredentials = !!_config2.withCredentials;
4609      }
4610      if (responseType && responseType !== "json") {
4611        request.responseType = _config2.responseType;
4612      }
4613      if (onDownloadProgress) {
4614        [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true);
4615        request.addEventListener("progress", downloadThrottled);
4616      }
4617      if (onUploadProgress && request.upload) {
4618        [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress);
4619        request.upload.addEventListener("progress", uploadThrottled);
4620        request.upload.addEventListener("loadend", flushUpload);
4621      }
4622      if (_config2.cancelToken || _config2.signal) {
4623        onCanceled = (cancel) => {
4624          if (!request) {
4625            return;
4626          }
4627          reject(!cancel || cancel.type ? new CanceledError$1(null, config, request) : cancel);
4628          request.abort();
4629          request = null;
4630        };
4631        _config2.cancelToken && _config2.cancelToken.subscribe(onCanceled);
4632        if (_config2.signal) {
4633          _config2.signal.aborted ? onCanceled() : _config2.signal.addEventListener("abort", onCanceled);
4634        }
4635      }
4636      const protocol = parseProtocol(_config2.url);
4637      if (protocol && platform.protocols.indexOf(protocol) === -1) {
4638        reject(new AxiosError$1("Unsupported protocol " + protocol + ":", AxiosError$1.ERR_BAD_REQUEST, config));
4639        return;
4640      }
4641      request.send(requestData || null);
4642    });
4643  };
4644  const composeSignals = (signals, timeout) => {
4645    const { length } = signals = signals ? signals.filter(Boolean) : [];
4646    if (timeout || length) {
4647      let controller = new AbortController();
4648      let aborted;
4649      const onabort = function(reason) {
4650        if (!aborted) {
4651          aborted = true;
4652          unsubscribe();
4653          const err = reason instanceof Error ? reason : this.reason;
4654          controller.abort(err instanceof AxiosError$1 ? err : new CanceledError$1(err instanceof Error ? err.message : err));
4655        }
4656      };
4657      let timer = timeout && setTimeout(() => {
4658        timer = null;
4659        onabort(new AxiosError$1(`timeout ${timeout} of ms exceeded`, AxiosError$1.ETIMEDOUT));
4660      }, timeout);
4661      const unsubscribe = () => {
4662        if (signals) {
4663          timer && clearTimeout(timer);
4664          timer = null;
4665          signals.forEach((signal2) => {
4666            signal2.unsubscribe ? signal2.unsubscribe(onabort) : signal2.removeEventListener("abort", onabort);
4667          });
4668          signals = null;
4669        }
4670      };
4671      signals.forEach((signal2) => signal2.addEventListener("abort", onabort));
4672      const { signal } = controller;
4673      signal.unsubscribe = () => utils$1.asap(unsubscribe);
4674      return signal;
4675    }
4676  };
4677  const streamChunk = function* (chunk, chunkSize) {
4678    let len = chunk.byteLength;
4679    if (len < chunkSize) {
4680      yield chunk;
4681      return;
4682    }
4683    let pos = 0;
4684    let end;
4685    while (pos < len) {
4686      end = pos + chunkSize;
4687      yield chunk.slice(pos, end);
4688      pos = end;
4689    }
4690  };
4691  const readBytes = async function* (iterable, chunkSize) {
4692    for await (const chunk of readStream(iterable)) {
4693      yield* streamChunk(chunk, chunkSize);
4694    }
4695  };
4696  const readStream = async function* (stream) {
4697    if (stream[Symbol.asyncIterator]) {
4698      yield* stream;
4699      return;
4700    }
4701    const reader = stream.getReader();
4702    try {
4703      for (; ; ) {
4704        const { done, value } = await reader.read();
4705        if (done) {
4706          break;
4707        }
4708        yield value;
4709      }
4710    } finally {
4711      await reader.cancel();
4712    }
4713  };
4714  const trackStream = (stream, chunkSize, onProgress, onFinish) => {
4715    const iterator = readBytes(stream, chunkSize);
4716    let bytes = 0;
4717    let done;
4718    let _onFinish = (e) => {
4719      if (!done) {
4720        done = true;
4721        onFinish && onFinish(e);
4722      }
4723    };
4724    return new ReadableStream({
4725      async pull(controller) {
4726        try {
4727          const { done: done2, value } = await iterator.next();
4728          if (done2) {
4729            _onFinish();
4730            controller.close();
4731            return;
4732          }
4733          let len = value.byteLength;
4734          if (onProgress) {
4735            let loadedBytes = bytes += len;
4736            onProgress(loadedBytes);
4737          }
4738          controller.enqueue(new Uint8Array(value));
4739        } catch (err) {
4740          _onFinish(err);
4741          throw err;
4742        }
4743      },
4744      cancel(reason) {
4745        _onFinish(reason);
4746        return iterator.return();
4747      }
4748    }, {
4749      highWaterMark: 2
4750    });
4751  };
4752  const isFetchSupported = typeof fetch === "function" && typeof Request === "function" && typeof Response === "function";
4753  const isReadableStreamSupported = isFetchSupported && typeof ReadableStream === "function";
4754  const encodeText = isFetchSupported && (typeof TextEncoder === "function" ? /* @__PURE__ */ ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) : async (str) => new Uint8Array(await new Response(str).arrayBuffer()));
4755  const test = (fn, ...args) => {
4756    try {
4757      return !!fn(...args);
4758    } catch (e) {
4759      return false;
4760    }
4761  };
4762  const supportsRequestStream = isReadableStreamSupported && test(() => {
4763    let duplexAccessed = false;
4764    const hasContentType = new Request(platform.origin, {
4765      body: new ReadableStream(),
4766      method: "POST",
4767      get duplex() {
4768        duplexAccessed = true;
4769        return "half";
4770      }
4771    }).headers.has("Content-Type");
4772    return duplexAccessed && !hasContentType;
4773  });
4774  const DEFAULT_CHUNK_SIZE = 64 * 1024;
4775  const supportsResponseStream = isReadableStreamSupported && test(() => utils$1.isReadableStream(new Response("").body));
4776  const resolvers = {
4777    stream: supportsResponseStream && ((res) => res.body)
4778  };
4779  isFetchSupported && ((res) => {
4780    ["text", "arrayBuffer", "blob", "formData", "stream"].forEach((type) => {
4781      !resolvers[type] && (resolvers[type] = utils$1.isFunction(res[type]) ? (res2) => res2[type]() : (_, config) => {
4782        throw new AxiosError$1(`Response type '${type}' is not supported`, AxiosError$1.ERR_NOT_SUPPORT, config);
4783      });
4784    });
4785  })(new Response());
4786  const getBodyLength = async (body) => {
4787    if (body == null) {
4788      return 0;
4789    }
4790    if (utils$1.isBlob(body)) {
4791      return body.size;
4792    }
4793    if (utils$1.isSpecCompliantForm(body)) {
4794      const _request = new Request(platform.origin, {
4795        method: "POST",
4796        body
4797      });
4798      return (await _request.arrayBuffer()).byteLength;
4799    }
4800    if (utils$1.isArrayBufferView(body) || utils$1.isArrayBuffer(body)) {
4801      return body.byteLength;
4802    }
4803    if (utils$1.isURLSearchParams(body)) {
4804      body = body + "";
4805    }
4806    if (utils$1.isString(body)) {
4807      return (await encodeText(body)).byteLength;
4808    }
4809  };
4810  const resolveBodyLength = async (headers, body) => {
4811    const length = utils$1.toFiniteNumber(headers.getContentLength());
4812    return length == null ? getBodyLength(body) : length;
4813  };
4814  const fetchAdapter = isFetchSupported && (async (config) => {
4815    let {
4816      url,
4817      method,
4818      data,
4819      signal,
4820      cancelToken,
4821      timeout,
4822      onDownloadProgress,
4823      onUploadProgress,
4824      responseType,
4825      headers,
4826      withCredentials = "same-origin",
4827      fetchOptions
4828    } = resolveConfig$2(config);
4829    responseType = responseType ? (responseType + "").toLowerCase() : "text";
4830    let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);
4831    let request;
4832    const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {
4833      composedSignal.unsubscribe();
4834    });
4835    let requestContentLength;
4836    try {
4837      if (onUploadProgress && supportsRequestStream && method !== "get" && method !== "head" && (requestContentLength = await resolveBodyLength(headers, data)) !== 0) {
4838        let _request = new Request(url, {
4839          method: "POST",
4840          body: data,
4841          duplex: "half"
4842        });
4843        let contentTypeHeader;
4844        if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get("content-type"))) {
4845          headers.setContentType(contentTypeHeader);
4846        }
4847        if (_request.body) {
4848          const [onProgress, flush] = progressEventDecorator(
4849            requestContentLength,
4850            progressEventReducer(asyncDecorator(onUploadProgress))
4851          );
4852          data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);
4853        }
4854      }
4855      if (!utils$1.isString(withCredentials)) {
4856        withCredentials = withCredentials ? "include" : "omit";
4857      }
4858      const isCredentialsSupported = "credentials" in Request.prototype;
vendor: 7,047 bytes, lines 4859-5049
4859      request = new Request(url, {
4860        ...fetchOptions,
4861        signal: composedSignal,
4862        method: method.toUpperCase(),
4863        headers: headers.normalize().toJSON(),
4864        body: data,
4865        duplex: "half",
4866        credentials: isCredentialsSupported ? withCredentials : void 0
4867      });
4868      let response = await fetch(request);
4869      const isStreamResponse = supportsResponseStream && (responseType === "stream" || responseType === "response");
4870      if (supportsResponseStream && (onDownloadProgress || isStreamResponse && unsubscribe)) {
4871        const options = {};
4872        ["status", "statusText", "headers"].forEach((prop) => {
4873          options[prop] = response[prop];
4874        });
4875        const responseContentLength = utils$1.toFiniteNumber(response.headers.get("content-length"));
4876        const [onProgress, flush] = onDownloadProgress && progressEventDecorator(
4877          responseContentLength,
4878          progressEventReducer(asyncDecorator(onDownloadProgress), true)
4879        ) || [];
4880        response = new Response(
4881          trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {
4882            flush && flush();
4883            unsubscribe && unsubscribe();
4884          }),
4885          options
4886        );
4887      }
4888      responseType = responseType || "text";
4889      let responseData = await resolvers[utils$1.findKey(resolvers, responseType) || "text"](response, config);
4890      !isStreamResponse && unsubscribe && unsubscribe();
4891      return await new Promise((resolve, reject) => {
4892        settle(resolve, reject, {
4893          data: responseData,
4894          headers: AxiosHeaders$1.from(response.headers),
4895          status: response.status,
4896          statusText: response.statusText,
4897          config,
4898          request
4899        });
4900      });
4901    } catch (err) {
4902      unsubscribe && unsubscribe();
4903      if (err && err.name === "TypeError" && /fetch/i.test(err.message)) {
4904        throw Object.assign(
4905          new AxiosError$1("Network Error", AxiosError$1.ERR_NETWORK, config, request),
4906          {
4907            cause: err.cause || err
4908          }
4909        );
4910      }
4911      throw AxiosError$1.from(err, err && err.code, config, request);
4912    }
4913  });
4914  const knownAdapters = {
4915    http: httpAdapter,
4916    xhr: xhrAdapter,
4917    fetch: fetchAdapter
4918  };
4919  utils$1.forEach(knownAdapters, (fn, value) => {
4920    if (fn) {
4921      try {
4922        Object.defineProperty(fn, "name", { value });
4923      } catch (e) {
4924      }
4925      Object.defineProperty(fn, "adapterName", { value });
4926    }
4927  });
4928  const renderReason = (reason) => `- ${reason}`;
4929  const isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false;
4930  const adapters = {
4931    getAdapter: (adapters2) => {
4932      adapters2 = utils$1.isArray(adapters2) ? adapters2 : [adapters2];
4933      const { length } = adapters2;
4934      let nameOrAdapter;
4935      let adapter;
4936      const rejectedReasons = {};
4937      for (let i2 = 0; i2 < length; i2++) {
4938        nameOrAdapter = adapters2[i2];
4939        let id;
4940        adapter = nameOrAdapter;
4941        if (!isResolvedHandle(nameOrAdapter)) {
4942          adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];
4943          if (adapter === void 0) {
4944            throw new AxiosError$1(`Unknown adapter '${id}'`);
4945          }
4946        }
4947        if (adapter) {
4948          break;
4949        }
4950        rejectedReasons[id || "#" + i2] = adapter;
4951      }
4952      if (!adapter) {
4953        const reasons = Object.entries(rejectedReasons).map(
4954          ([id, state]) => `adapter ${id} ` + (state === false ? "is not supported by the environment" : "is not available in the build")
4955        );
4956        let s = length ? reasons.length > 1 ? "since :\n" + reasons.map(renderReason).join("\n") : " " + renderReason(reasons[0]) : "as no adapter specified";
4957        throw new AxiosError$1(
4958          `There is no suitable adapter to dispatch the request ` + s,
4959          "ERR_NOT_SUPPORT"
4960        );
4961      }
4962      return adapter;
4963    },
4964    adapters: knownAdapters
4965  };
4966  function throwIfCancellationRequested(config) {
4967    if (config.cancelToken) {
4968      config.cancelToken.throwIfRequested();
4969    }
4970    if (config.signal && config.signal.aborted) {
4971      throw new CanceledError$1(null, config);
4972    }
4973  }
4974  function dispatchRequest(config) {
4975    throwIfCancellationRequested(config);
4976    config.headers = AxiosHeaders$1.from(config.headers);
4977    config.data = transformData.call(
4978      config,
4979      config.transformRequest
4980    );
4981    if (["post", "put", "patch"].indexOf(config.method) !== -1) {
4982      config.headers.setContentType("application/x-www-form-urlencoded", false);
4983    }
4984    const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter);
4985    return adapter(config).then(function onAdapterResolution(response) {
4986      throwIfCancellationRequested(config);
4987      response.data = transformData.call(
4988        config,
4989        config.transformResponse,
4990        response
4991      );
4992      response.headers = AxiosHeaders$1.from(response.headers);
4993      return response;
4994    }, function onAdapterRejection(reason) {
4995      if (!isCancel$1(reason)) {
4996        throwIfCancellationRequested(config);
4997        if (reason && reason.response) {
4998          reason.response.data = transformData.call(
4999            config,
5000            config.transformResponse,
5001            reason.response
5002          );
5003          reason.response.headers = AxiosHeaders$1.from(reason.response.headers);
5004        }
5005      }
5006      return Promise.reject(reason);
5007    });
5008  }
5009  const VERSION$1 = "1.7.9";
5010  const validators$1 = {};
5011  ["object", "boolean", "number", "function", "string", "symbol"].forEach((type, i2) => {
5012    validators$1[type] = function validator2(thing) {
5013      return typeof thing === type || "a" + (i2 < 1 ? "n " : " ") + type;
5014    };
5015  });
5016  const deprecatedWarnings = {};
5017  validators$1.transitional = function transitional(validator2, version, message) {
5018    function formatMessage(opt, desc) {
5019      return "[Axios v" + VERSION$1 + "] Transitional option '" + opt + "'" + desc + (message ? ". " + message : "");
5020    }
5021    return (value, opt, opts) => {
5022      if (validator2 === false) {
5023        throw new AxiosError$1(
5024          formatMessage(opt, " has been removed" + (version ? " in " + version : "")),
5025          AxiosError$1.ERR_DEPRECATED
5026        );
5027      }
5028      if (version && !deprecatedWarnings[opt]) {
5029        deprecatedWarnings[opt] = true;
5030        console.warn(
5031          formatMessage(
5032            opt,
5033            " has been deprecated since v" + version + " and will be removed in the near future"
5034          )
5035        );
5036      }
5037      return validator2 ? validator2(value, opt, opts) : true;
5038    };
5039  };
5040  validators$1.spelling = function spelling(correctSpelling) {
5041    return (value, opt) => {
5042      console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);
5043      return true;
5044    };
5045  };
5046  function assertOptions(options, schema, allowUnknown) {
5047    if (typeof options !== "object") {
5048      throw new AxiosError$1("options must be an object", AxiosError$1.ERR_BAD_OPTION_VALUE);
5049    }
vendor: 9,543 bytes, lines 5050-5349
5050    const keys = Object.keys(options);
5051    let i2 = keys.length;
5052    while (i2-- > 0) {
5053      const opt = keys[i2];
5054      const validator2 = schema[opt];
5055      if (validator2) {
5056        const value = options[opt];
5057        const result = value === void 0 || validator2(value, opt, options);
5058        if (result !== true) {
5059          throw new AxiosError$1("option " + opt + " must be " + result, AxiosError$1.ERR_BAD_OPTION_VALUE);
5060        }
5061        continue;
5062      }
5063      if (allowUnknown !== true) {
5064        throw new AxiosError$1("Unknown option " + opt, AxiosError$1.ERR_BAD_OPTION);
5065      }
5066    }
5067  }
5068  const validator = {
5069    assertOptions,
5070    validators: validators$1
5071  };
5072  const validators = validator.validators;
5073  let Axios$1 = class Axios {
5074    constructor(instanceConfig) {
5075      this.defaults = instanceConfig;
5076      this.interceptors = {
5077        request: new InterceptorManager(),
5078        response: new InterceptorManager()
5079      };
5080    }
5081    /**
5082     * Dispatch a request
5083     *
5084     * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)
5085     * @param {?Object} config
5086     *
5087     * @returns {Promise} The Promise to be fulfilled
5088     */
5089    async request(configOrUrl, config) {
5090      try {
5091        return await this._request(configOrUrl, config);
5092      } catch (err) {
5093        if (err instanceof Error) {
5094          let dummy = {};
5095          Error.captureStackTrace ? Error.captureStackTrace(dummy) : dummy = new Error();
5096          const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, "") : "";
5097          try {
5098            if (!err.stack) {
5099              err.stack = stack;
5100            } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ""))) {
5101              err.stack += "\n" + stack;
5102            }
5103          } catch (e) {
5104          }
5105        }
5106        throw err;
5107      }
5108    }
5109    _request(configOrUrl, config) {
5110      if (typeof configOrUrl === "string") {
5111        config = config || {};
5112        config.url = configOrUrl;
5113      } else {
5114        config = configOrUrl || {};
5115      }
5116      config = mergeConfig$1(this.defaults, config);
5117      const { transitional, paramsSerializer, headers } = config;
5118      if (transitional !== void 0) {
5119        validator.assertOptions(transitional, {
5120          silentJSONParsing: validators.transitional(validators.boolean),
5121          forcedJSONParsing: validators.transitional(validators.boolean),
5122          clarifyTimeoutError: validators.transitional(validators.boolean)
5123        }, false);
5124      }
5125      if (paramsSerializer != null) {
5126        if (utils$1.isFunction(paramsSerializer)) {
5127          config.paramsSerializer = {
5128            serialize: paramsSerializer
5129          };
5130        } else {
5131          validator.assertOptions(paramsSerializer, {
5132            encode: validators.function,
5133            serialize: validators.function
5134          }, true);
5135        }
5136      }
5137      validator.assertOptions(config, {
5138        baseUrl: validators.spelling("baseURL"),
5139        withXsrfToken: validators.spelling("withXSRFToken")
5140      }, true);
5141      config.method = (config.method || this.defaults.method || "get").toLowerCase();
5142      let contextHeaders = headers && utils$1.merge(
5143        headers.common,
5144        headers[config.method]
5145      );
5146      headers && utils$1.forEach(
5147        ["delete", "get", "head", "post", "put", "patch", "common"],
5148        (method) => {
5149          delete headers[method];
5150        }
5151      );
5152      config.headers = AxiosHeaders$1.concat(contextHeaders, headers);
5153      const requestInterceptorChain = [];
5154      let synchronousRequestInterceptors = true;
5155      this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
5156        if (typeof interceptor.runWhen === "function" && interceptor.runWhen(config) === false) {
5157          return;
5158        }
5159        synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;
5160        requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);
5161      });
5162      const responseInterceptorChain = [];
5163      this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
5164        responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);
5165      });
5166      let promise;
5167      let i2 = 0;
5168      let len;
5169      if (!synchronousRequestInterceptors) {
5170        const chain = [dispatchRequest.bind(this), void 0];
5171        chain.unshift.apply(chain, requestInterceptorChain);
5172        chain.push.apply(chain, responseInterceptorChain);
5173        len = chain.length;
5174        promise = Promise.resolve(config);
5175        while (i2 < len) {
5176          promise = promise.then(chain[i2++], chain[i2++]);
5177        }
5178        return promise;
5179      }
5180      len = requestInterceptorChain.length;
5181      let newConfig = config;
5182      i2 = 0;
5183      while (i2 < len) {
5184        const onFulfilled = requestInterceptorChain[i2++];
5185        const onRejected = requestInterceptorChain[i2++];
5186        try {
5187          newConfig = onFulfilled(newConfig);
5188        } catch (error) {
5189          onRejected.call(this, error);
5190          break;
5191        }
5192      }
5193      try {
5194        promise = dispatchRequest.call(this, newConfig);
5195      } catch (error) {
5196        return Promise.reject(error);
5197      }
5198      i2 = 0;
5199      len = responseInterceptorChain.length;
5200      while (i2 < len) {
5201        promise = promise.then(responseInterceptorChain[i2++], responseInterceptorChain[i2++]);
5202      }
5203      return promise;
5204    }
5205    getUri(config) {
5206      config = mergeConfig$1(this.defaults, config);
5207      const fullPath = buildFullPath(config.baseURL, config.url);
5208      return buildURL(fullPath, config.params, config.paramsSerializer);
5209    }
5210  };
5211  utils$1.forEach(["delete", "get", "head", "options"], function forEachMethodNoData(method) {
5212    Axios$1.prototype[method] = function(url, config) {
5213      return this.request(mergeConfig$1(config || {}, {
5214        method,
5215        url,
5216        data: (config || {}).data
5217      }));
5218    };
5219  });
5220  utils$1.forEach(["post", "put", "patch"], function forEachMethodWithData(method) {
5221    function generateHTTPMethod(isForm) {
5222      return function httpMethod(url, data, config) {
5223        return this.request(mergeConfig$1(config || {}, {
5224          method,
5225          headers: isForm ? {
5226            "Content-Type": "multipart/form-data"
5227          } : {},
5228          url,
5229          data
5230        }));
5231      };
5232    }
5233    Axios$1.prototype[method] = generateHTTPMethod();
5234    Axios$1.prototype[method + "Form"] = generateHTTPMethod(true);
5235  });
5236  let CancelToken$1 = class CancelToken2 {
5237    constructor(executor) {
5238      if (typeof executor !== "function") {
5239        throw new TypeError("executor must be a function.");
5240      }
5241      let resolvePromise;
5242      this.promise = new Promise(function promiseExecutor(resolve) {
5243        resolvePromise = resolve;
5244      });
5245      const token = this;
5246      this.promise.then((cancel) => {
5247        if (!token._listeners) return;
5248        let i2 = token._listeners.length;
5249        while (i2-- > 0) {
5250          token._listeners[i2](cancel);
5251        }
5252        token._listeners = null;
5253      });
5254      this.promise.then = (onfulfilled) => {
5255        let _resolve;
5256        const promise = new Promise((resolve) => {
5257          token.subscribe(resolve);
5258          _resolve = resolve;
5259        }).then(onfulfilled);
5260        promise.cancel = function reject() {
5261          token.unsubscribe(_resolve);
5262        };
5263        return promise;
5264      };
5265      executor(function cancel(message, config, request) {
5266        if (token.reason) {
5267          return;
5268        }
5269        token.reason = new CanceledError$1(message, config, request);
5270        resolvePromise(token.reason);
5271      });
5272    }
5273    /**
5274     * Throws a `CanceledError` if cancellation has been requested.
5275     */
5276    throwIfRequested() {
5277      if (this.reason) {
5278        throw this.reason;
5279      }
5280    }
5281    /**
5282     * Subscribe to the cancel signal
5283     */
5284    subscribe(listener) {
5285      if (this.reason) {
5286        listener(this.reason);
5287        return;
5288      }
5289      if (this._listeners) {
5290        this._listeners.push(listener);
5291      } else {
5292        this._listeners = [listener];
5293      }
5294    }
5295    /**
5296     * Unsubscribe from the cancel signal
5297     */
5298    unsubscribe(listener) {
5299      if (!this._listeners) {
5300        return;
5301      }
5302      const index = this._listeners.indexOf(listener);
5303      if (index !== -1) {
5304        this._listeners.splice(index, 1);
5305      }
5306    }
5307    toAbortSignal() {
5308      const controller = new AbortController();
5309      const abort = (err) => {
5310        controller.abort(err);
5311      };
5312      this.subscribe(abort);
5313      controller.signal.unsubscribe = () => this.unsubscribe(abort);
5314      return controller.signal;
5315    }
5316    /**
5317     * Returns an object that contains a new `CancelToken` and a function that, when called,
5318     * cancels the `CancelToken`.
5319     */
5320    static source() {
5321      let cancel;
5322      const token = new CancelToken2(function executor(c) {
5323        cancel = c;
5324      });
5325      return {
5326        token,
5327        cancel
5328      };
5329    }
5330  };
5331  function spread$1(callback) {
5332    return function wrap2(arr) {
5333      return callback.apply(null, arr);
5334    };
5335  }
5336  function isAxiosError$1(payload) {
5337    return utils$1.isObject(payload) && payload.isAxiosError === true;
5338  }
5339  const HttpStatusCode$1 = {
5340    Continue: 100,
5341    SwitchingProtocols: 101,
5342    Processing: 102,
5343    EarlyHints: 103,
5344    Ok: 200,
5345    Created: 201,
5346    Accepted: 202,
5347    NonAuthoritativeInformation: 203,
5348    NoContent: 204,
5349    ResetContent: 205,
5350    PartialContent: 206,
5351    MultiStatus: 207,
5352    AlreadyReported: 208,
5353    ImUsed: 226,
5354    MultipleChoices: 300,
5355    MovedPermanently: 301,
5356    Found: 302,
5357    SeeOther: 303,
5358    NotModified: 304,
5359    UseProxy: 305,
5360    Unused: 306,
5361    TemporaryRedirect: 307,
5362    PermanentRedirect: 308,
5363    BadRequest: 400,
5364    Unauthorized: 401,
5365    PaymentRequired: 402,
5366    Forbidden: 403,
5367    NotFound: 404,
5368    MethodNotAllowed: 405,
5369    NotAcceptable: 406,
5370    ProxyAuthenticationRequired: 407,
5371    RequestTimeout: 408,
5372    Conflict: 409,
5373    Gone: 410,
5374    LengthRequired: 411,
5375    PreconditionFailed: 412,
5376    PayloadTooLarge: 413,
5377    UriTooLong: 414,
5378    UnsupportedMediaType: 415,
5379    RangeNotSatisfiable: 416,
5380    ExpectationFailed: 417,
5381    ImATeapot: 418,
5382    MisdirectedRequest: 421,
5383    UnprocessableEntity: 422,
5384    Locked: 423,
5385    FailedDependency: 424,
5386    TooEarly: 425,
5387    UpgradeRequired: 426,
5388    PreconditionRequired: 428,
5389    TooManyRequests: 429,
5390    RequestHeaderFieldsTooLarge: 431,
5391    UnavailableForLegalReasons: 451,
5392    InternalServerError: 500,
5393    NotImplemented: 501,
5394    BadGateway: 502,
5395    ServiceUnavailable: 503,
5396    GatewayTimeout: 504,
5397    HttpVersionNotSupported: 505,
5398    VariantAlsoNegotiates: 506,
5399    InsufficientStorage: 507,
5400    LoopDetected: 508,
5401    NotExtended: 510,
5402    NetworkAuthenticationRequired: 511
5403  };
5404  Object.entries(HttpStatusCode$1).forEach(([key, value]) => {
5405    HttpStatusCode$1[value] = key;
5406  });
5407  function createInstance(defaultConfig) {
5408    const context = new Axios$1(defaultConfig);
5409    const instance = bind(Axios$1.prototype.request, context);
5410    utils$1.extend(instance, Axios$1.prototype, context, { allOwnKeys: true });
5411    utils$1.extend(instance, context, null, { allOwnKeys: true });
5412    instance.create = function create(instanceConfig) {
5413      return createInstance(mergeConfig$1(defaultConfig, instanceConfig));
5414    };
5415    return instance;
5416  }
5417  const axios = createInstance(defaults$1);
5418  axios.Axios = Axios$1;
5419  axios.CanceledError = CanceledError$1;
5420  axios.CancelToken = CancelToken$1;
5421  axios.isCancel = isCancel$1;
5422  axios.VERSION = VERSION$1;
5423  axios.toFormData = toFormData$1;
5424  axios.AxiosError = AxiosError$1;
5425  axios.Cancel = axios.CanceledError;
5426  axios.all = function all2(promises) {
5427    return Promise.all(promises);
5428  };
5429  axios.spread = spread$1;
5430  axios.isAxiosError = isAxiosError$1;
5431  axios.mergeConfig = mergeConfig$1;
5432  axios.AxiosHeaders = AxiosHeaders$1;
5433  axios.formToJSON = (thing) => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing);
5434  axios.getAdapter = adapters.getAdapter;
5435  axios.HttpStatusCode = HttpStatusCode$1;
5436  axios.default = axios;
5437  const {
5438    Axios,
5439    AxiosError,
5440    CanceledError,
5441    isCancel,
5442    CancelToken,
5443    VERSION,
5444    all,
5445    Cancel,
5446    isAxiosError,
5447    spread,
5448    toFormData,
5449    AxiosHeaders,
5450    HttpStatusCode,
5451    formToJSON,
5452    getAdapter,
5453    mergeConfig
5454  } = axios;
5455  class ArticleListing {
5456    constructor() {
5457      var _a, _b;
5458      this.$el = document.querySelector(".js-article-listing");
5459      if (!this.$el) return;
5460      this.currentPage = 1;
5461      this.$header = document.querySelector(".js-header");
5462      this.$loadMoreButton = this.$el.querySelector(".js-article-listing-load-more");
5463      this.$grid = this.$el.querySelector(".js-article-listing-grid");
5464      this.$categorySelect = this.$el.querySelector(".js-article-listing-category-select");
5465      this.$typeSelect = this.$el.querySelector(".js-article-listing-type-select");
5466      this.$numberOfVisibleArticles = this.$el.querySelector(".js-article-listing-visible-articles");
5467      this.$totalArticles = this.$el.querySelector(".js-article-listing-total-articles");
5468      this.$resetButton = this.$el.querySelector(".js-article-listing-reset-filters");
5469      (_a = this.$categorySelect) == null ? void 0 : _a.addEventListener("change", this.filterByCategory.bind(this));
5470      (_b = this.$typeSelect) == null ? void 0 : _b.addEventListener("change", this.onTypeSelect.bind(this));
5471      if (this.$loadMoreButton) {
5472        this.$loadMoreButtonText = this.$loadMoreButton.querySelector(".c-cta__label");
5473        this.originalLoadMoreButtonText = this.$loadMoreButtonText.innerText;
5474        this.$loadMoreButton.addEventListener("click", this.loadMore.bind(this));
5475      }
5476      if (this.$resetButton) {
5477        this.$resetButton.addEventListener("click", this.resetFilters.bind(this));
5478      }
5479      this.updateResetFilters();
5480    }
5481    async execute(params, scrollToTop = true, reset = false) {
5482      if (reset) {
5483        this.currentPage = 1;
5484      } else {
5485        this.currentPage++;
5486      }
5487      this.$grid.classList.add("is-loading");
5488      if (this.$loadMoreButton) {
5489        this.$loadMoreButtonText.innerText = "Loading";
5490        this.$loadMoreButton.disabled = true;
5491      }
5492      const payload = new FormData();
5493      payload.append("paged", this.currentPage);
5494      Object.keys(params).forEach((key) => {
5495        payload.append(key, params[key]);
5496      });
5497      let category = void 0;
5498      if (this.selectedCategory) {
5499        category = this.selectedCategory;
5500      } else if (this.$loadMoreButton && this.$loadMoreButton.dataset.category) {
5501        category = this.$loadMoreButton.dataset.category;
5502      }
5503      if (category) {
5504        payload.append("category", category);
5505      }
5506      if (this.$el.dataset.postType === "post") {
5507        payload.append("action", "theme_articles_load_more");
5508      }
5509      if (this.$el.dataset.postType === "webinars") {
5510        payload.append("action", "theme_webinars_load_more");
5511      }
5512      if (this.$el.dataset.postType === "guides") {
5513        payload.append("action", "theme_guides_load_more");
5514      }
5515      try {
5516        const { data } = await axios.post(window.site.api.ajax, payload);
5517        if (this.$loadMoreButton) {
5518          this.$loadMoreButtonText.innerText = this.originalLoadMoreButtonText;
5519          this.$loadMoreButton.disabled = false;
5520          if (data.is_last_page) {
5521            this.$loadMoreButton.style.display = "none";
5522          } else {
5523            this.$loadMoreButton.style.display = "block";
5524          }
5525        }
5526        if (data) {
5527          this.$grid.innerHTML = reset ? data.response : this.$grid.innerHTML + data.response;
5528          this.$grid.classList.remove("is-loading");
5529          this.updateTotal(data.total_articles, scrollToTop);
5530          this.updateResetFilters();
5531        } else {
5532          if (this.$loadMoreButton) {
5533            this.$loadMoreButton.style.display = "none";
5534          }
5535          this.updateResetFilters();
5536        }
5537      } catch (error) {
5538        this.currentPage = 1;
5539        this.$grid.classList.remove("is-loading");
5540      }
5541    }
5542    async loadMore() {
5543      const payload = {};
5544      if (this.selectedCategory) {
5545        payload["category"] = this.selectedCategory;
5546      }
5547      await this.execute(payload, false);
5548    }
5549    async filterByCategory(e) {
5550      const payload = {};
5551      if (e.target.value === "all") {
5552        this.selectedCategory = void 0;
5553      } else {
5554        this.selectedCategory = e.target.value;
5555      }
5556      if (this.category) {
5557        payload["category"] = this.selectedCategory;
5558      }
5559      await this.execute(payload, true, true);
5560    }
5561    async resetFilters() {
5562      this.selectedCategory = void 0;
5563      this.$categorySelect.selectedIndex = 0;
5564      await this.execute({}, true, true);
5565    }
5566    updateTotal(totalArticles, scrollToTop = true) {
5567      const total = this.$grid.querySelectorAll(".js-article-card").length;
5568      this.$numberOfVisibleArticles.innerText = total;
5569      this.$totalArticles.innerText = totalArticles;
5570      this.$grid.classList.remove("is-loading");
5571      if (scrollToTop) {
5572        window.scrollTo({
5573          top: this.$el.offsetTop - this.$header.offsetHeight,
5574          behavior: "smooth"
5575        });
5576      }
5577    }
5578    updateResetFilters() {
5579      if (!this.$resetButton) return;
5580      if (this.currentPage > 1 || this.selectedCategory) {
5581        this.$resetButton.style.display = "block";
5582      } else {
5583        this.$resetButton.style.display = "none";
5584      }
5585    }
5586    onTypeSelect(e) {
5587      window.location = e.currentTarget.value;
5588    }
5589  }
5590  class BecomePartnerForm {
5591    constructor() {
5592      this.$el = document.querySelector(".js-become-partner-form");
5593      if (!this.$el) return;
5594      this.$carousels = this.$el.querySelectorAll(".js-become-partner-form-logo-carousel");
5595      this.$carousels.forEach(($carousel) => new Flickity($carousel, {
5596        imagesLoaded: true,
5597        prevNextButtons: false,
5598        pageDots: true,
5599        autoPlay: 3e3
5600      }));
5601    }
5602  }
5603  class BookDemo {
5604    constructor() {
5605      this.$el = document.querySelector(".js-book-demo");
5606      if (!this.$el) return;
5607      this.$cta = this.$el.querySelector("a.c-cta");
5608      if (this.$cta && this.$cta.href.indexOf("#") > -1) {
5609        this.$cta.addEventListener("click", (e) => {
5610          e.preventDefault();
5611          const id = this.$cta.href.split("#")[1];
5612          const $target = document.getElementById(id);
5613          $target.scrollIntoView({ behavior: "smooth" });
5614        });
5615      }
5616    }
5617  }
5618  class BookDemoForm {
5619    constructor() {
5620      this.$el = document.querySelector(".js-book-demo-form");
5621      if (!this.$el) return;
5622      this.$carousels = this.$el.querySelectorAll(".js-book-demo-form-logo-carousel");
5623      this.$carousels.forEach(($carousel) => new Flickity($carousel, {
5624        imagesLoaded: true,
5625        prevNextButtons: false,
5626        pageDots: true,
5627        autoPlay: 3e3
5628      }));
5629    }
5630  }
5631  class BookNowForm {
5632    constructor() {
5633      const $els = document.querySelectorAll(".js-book-now-form");
5634      $els.forEach(($el) => new Form($el));
5635    }
5636  }
5637  class Form {
5638    constructor($el) {
5639      this.$el = $el;
5640      this.$el.addEventListener("submit", this.onSubmit.bind(this));
5641    }
5642    onSubmit(e) {
5643      e.preventDefault();
5644      const email = this.$el.querySelector(".js-book-now-form-email").value;
5645      let path = `/book-a-demo/?email=${email}`;
5646      window.location = path;
5647    }
5648  }
5649  class Callouts {
5650    constructor() {
5651      this.$els = document.querySelectorAll(".js-callouts");
5652      this.$els.forEach(($el) => {
5653        const activeClass = "is-active";
5654        const $tabs = $el.querySelectorAll(".js-callouts-tab");
5655        const $carousel = $el.querySelector(".js-callouts-carousel");
5656        const $prevButtons = $el.querySelectorAll(".js-callouts-prev");
5657        const $nextButtons = $el.querySelectorAll(".js-callouts-next");
5658        const carousel = new Flickity($carousel, {
5659          cellAlign: "left",
5660          contain: true,
5661          prevNextButtons: false,
5662          pageDots: false,
5663          wrapAround: true,
5664          imagesLoaded: true
5665        });
5666        carousel.on("select", (index) => {
5667          var _a;
5668          $tabs.forEach(($tab) => $tab.classList.remove(activeClass));
5669          (_a = $tabs[index]) == null ? void 0 : _a.classList.add(activeClass);
5670        });
5671        $prevButtons.forEach(($prevButton) => {
5672          $prevButton.addEventListener("click", () => {
5673            carousel.previous();
5674          });
5675        });
5676        $nextButtons.forEach(($nextButton) => {
5677          $nextButton.addEventListener("click", () => {
5678            carousel.next();
5679          });
5680        });
5681        $tabs.forEach(($tab, index) => {
5682          $tab.addEventListener("click", () => {
5683            carousel.select(index);
5684          });
5685        });
5686      });
5687    }
5688  }
5689  class CarouselContent {
5690    constructor() {
5691      const $els = document.querySelectorAll(".js-carousel-content");
5692      $els.forEach(($el) => new Carousel$i($el));
5693    }
5694  }
5695  let Carousel$i = class Carousel {
5696    constructor($el) {
5697      this.$el = $el;
5698      this.$carousel = $el.querySelector(".js-carousel-content-carousel");
5699      this.carousel = new Flickity(this.$carousel, {
5700        contain: true,
5701        prevNextButtons: false,
5702        pageDots: false,
5703        wrapAround: false,
5704        imagesLoaded: true
5705      });
5706    }
5707  };
5708  class CaseStudiesListing {
5709    constructor() {
5710      var _a, _b, _c;
5711      this.$el = document.querySelector(".js-case-studies-listing");
5712      if (!this.$el) return;
5713      this.currentPage = 1;
5714      this.$header = document.querySelector(".js-header");
5715      this.$loadMoreButton = this.$el.querySelector(".js-case-studies-listing-load-more");
5716      this.$grid = this.$el.querySelector(".js-case-studies-listing-grid");
5717      this.$noResults = this.$el.querySelector(".js-case-studies-listing-no-results");
5718      this.$verticalSelect = this.$el.querySelector(".js-case-studies-listing-vertical-select");
5719      this.$productSelect = this.$el.querySelector(".js-case-studies-listing-product-select");
5720      this.$integrationSelect = this.$el.querySelector(".js-case-studies-listing-integration-select");
5721      this.$numberOfVisibleArticles = this.$el.querySelector(".js-case-studies-listing-visible-articles");
5722      this.$totalArticles = this.$el.querySelector(".js-case-studies-listing-total-articles");
5723      this.$resetButton = this.$el.querySelector(".js-case-studies-listing-reset-filters");
5724      (_a = this.$verticalSelect) == null ? void 0 : _a.addEventListener("change", this.filterByVertical.bind(this));
5725      (_b = this.$productSelect) == null ? void 0 : _b.addEventListener("change", this.filterByProduct.bind(this));
5726      (_c = this.$integrationSelect) == null ? void 0 : _c.addEventListener("change", this.filterByIntegration.bind(this));
5727      if (this.$loadMoreButton) {
5728        this.$loadMoreButtonText = this.$loadMoreButton.querySelector(".c-cta__label");
5729        this.originalLoadMoreButtonText = this.$loadMoreButtonText.innerText;
5730        this.$loadMoreButton.addEventListener("click", this.loadMore.bind(this));
5731      }
5732      if (this.$resetButton) {
5733        this.$resetButton.addEventListener("click", this.resetFilters.bind(this));
5734      }
5735      if (this.$noResults) {
5736        this.$noResults.style.display = "none";
5737      }
5738      this.updateResetFilters();
5739    }
5740    async execute(params, scrollToTop = true, reset = false) {
5741      if (reset) {
5742        this.currentPage = 1;
5743      } else {
5744        this.currentPage++;
5745      }
5746      this.$grid.classList.add("is-loading");
5747      if (this.$loadMoreButton) {
5748        this.$loadMoreButtonText.innerText = "Loading";
5749        this.$loadMoreButton.disabled = true;
5750      }
5751      const payload = new FormData();
5752      payload.append("paged", this.currentPage);
5753      Object.keys(params).forEach((key) => {
5754        payload.append(key, params[key]);
5755      });
5756      try {
5757        const { data } = await axios.post(window.site.api.ajax, payload);
5758        if (this.$loadMoreButton) {
5759          this.$loadMoreButtonText.innerText = this.originalLoadMoreButtonText;
5760          this.$loadMoreButton.disabled = false;
5761          if (data.is_last_page) {
5762            this.$loadMoreButton.style.display = "none";
5763          } else {
5764            this.$loadMoreButton.style.display = "block";
5765          }
5766        }
5767        if (data) {
5768          this.$grid.innerHTML = reset ? data.response : this.$grid.innerHTML + data.response;
5769          this.$grid.classList.remove("is-loading");
5770          this.updateTotal(data.total_articles, scrollToTop);
5771          this.updateResetFilters();
5772          if (!data.total_articles) {
5773            this.$grid.style.display = "none";
5774            if (this.$noResults) {
5775              this.$noResults.removeAttribute("style");
5776            }
5777            if (this.$loadMoreButton) {
5778              this.$loadMoreButton.style.display = "none";
5779            }
5780          } else {
5781            if (this.$noResults) {
5782              this.$noResults.style.display = "none";
5783            }
5784            this.$grid.removeAttribute("style");
5785          }
5786        } else {
5787          if (this.$loadMoreButton) {
5788            this.$loadMoreButton.style.display = "none";
5789          }
5790          this.updateResetFilters();
5791        }
5792      } catch (error) {
5793        this.currentPage = 1;
5794        this.$grid.classList.remove("is-loading");
5795      }
5796    }
5797    async loadMore() {
5798      const payload = {
5799        action: "theme_case_studies_load_more"
5800      };
5801      if (this.selectedVertical) {
5802        payload["vertical"] = this.selectedVertical;
5803      }
5804      if (this.selectedProduct) {
5805        payload["product"] = this.selectedProduct;
5806      }
5807      if (this.selectedIntegration) {
5808        payload["integration"] = this.selectedIntegration;
5809      }
5810      await this.execute(payload, false);
5811    }
5812    async filterByVertical(e) {
5813      if (e.target.value === "all") {
5814        this.selectedVertical = void 0;
5815      } else {
5816        this.selectedVertical = e.target.value;
5817      }
5818      await this.filterByCategory();
5819    }
5820    async filterByProduct(e) {
5821      if (e.target.value === "all") {
5822        this.selectedProduct = void 0;
5823      } else {
5824        this.selectedProduct = e.target.value;
5825      }
5826      await this.filterByCategory();
5827    }
5828    async filterByIntegration(e) {
5829      if (e.target.value === "all") {
5830        this.selectedIntegration = void 0;
5831      } else {
5832        this.selectedIntegration = e.target.value;
5833      }
5834      await this.filterByCategory();
5835    }
5836    async filterByCategory(e) {
5837      const payload = {
5838        action: "theme_case_studies_load_more"
5839      };
5840      if (this.selectedVertical) {
5841        payload["vertical"] = this.selectedVertical;
5842      }
5843      if (this.selectedProduct) {
5844        payload["product"] = this.selectedProduct;
5845      }
5846      if (this.selectedIntegration) {
5847        payload["integration"] = this.selectedIntegration;
5848      }
5849      await this.execute(payload, true, true);
5850    }
5851    async resetFilters() {
5852      this.selectedVertical = void 0;
5853      this.selectedProduct = void 0;
5854      this.selectedIntegration = void 0;
5855      if (this.$verticalSelect) {
5856        this.$verticalSelect.selectedIndex = 0;
5857      }
5858      if (this.$productSelect) {
5859        this.$productSelect.selectedIndex = 0;
5860      }
5861      if (this.$integrationSelect) {
5862        this.$integrationSelect.selectedIndex = 0;
5863      }
5864      const payload = {
5865        action: "theme_case_studies_load_more"
5866      };
5867      await this.execute(payload, true, true);
5868    }
5869    updateTotal(totalArticles, scrollToTop = true) {
5870      const total = this.$grid.querySelectorAll(".js-case-studies-card").length;
5871      this.$numberOfVisibleArticles.innerText = total;
5872      this.$totalArticles.innerText = totalArticles;
5873      this.$grid.classList.remove("is-loading");
5874      if (scrollToTop) {
5875        window.scrollTo({
5876          top: this.$el.offsetTop - this.$header.offsetHeight,
5877          behavior: "smooth"
5878        });
5879      }
5880    }
5881    updateResetFilters() {
5882      if (!this.$resetButton) return;
5883      if (this.currentPage > 1 || this.selectedVertical || this.selectedProduct || this.selectedIntegration) {
5884        this.$resetButton.style.display = "block";
5885      } else {
5886        this.$resetButton.style.display = "none";
5887      }
5888    }
5889  }
5890  class MobileCarousel {
5891    constructor($el, options = {
5892      maxWidth: 1024
5893    }) {
5894      this.maxWidth = options.maxWidth;
5895      this.flickityOptions = {
5896        wrapAround: true,
5897        prevNextButtons: false,
5898        pageDots: true,
5899        imagesLoaded: "true",
5900        cellAlign: "left",
5901        ...options.flickity
5902      };
5903      this.$el = $el;
5904      if (window.innerWidth < this.maxWidth) {
5905        this.createCarousel();
5906      }
5907      window.addEventListener("resize", () => {
5908        const t2 = setTimeout(() => {
5909          this.onResize();
5910          clearTimeout(t2);
5911        }, 250);
5912      });
5913      return this;
5914    }
5915    onResize() {
5916      if (window.innerWidth < this.maxWidth) {
5917        this.createCarousel();
5918        return;
5919      }
5920      if (this.carousel) {
5921        this.carousel.destroy();
5922      }
5923    }
5924    createCarousel() {
5925      if (!this.$el) {
5926        return;
5927      }
5928      this.carousel = new Flickity(this.$el, this.flickityOptions);
5929      const t2 = setTimeout(() => {
5930        this.carousel.resize();
5931        clearTimeout(t2);
5932      }, 250);
5933    }
5934  }
5935  class ClientTestimonialGrid {
5936    constructor() {
5937      const $els = document.querySelectorAll(".js-client-testimonials-carousel");
5938      $els.forEach(($el) => new MobileCarousel($el, {
5939        maxWidth: 768
5940      }));
5941    }
5942  }
5943  class Countdown {
5944    constructor() {
5945      this.$el = document.querySelector(".js-countdown");
5946      if (!this.$el) return;
5947      const launch = new Date(parseInt(this.$el.dataset.launch) * 1e3).getTime();
5948      const tick = () => {
5949        const now = (/* @__PURE__ */ new Date()).getTime();
5950        const distance = launch - now;
5951        if (distance < 0) {
5952          return;
5953        }
5954        const props = {
5955          days: Math.floor(distance / (1e3 * 60 * 60 * 24)),
5956          hours: Math.floor(distance % (1e3 * 60 * 60 * 24) / (1e3 * 60 * 60)),
5957          minutes: Math.floor(distance % (1e3 * 60 * 60) / (1e3 * 60)),
5958          seconds: Math.floor(distance % (1e3 * 60) / 1e3)
5959        };
5960        for (const [key, value] of Object.entries(props)) {
5961          document.querySelector(".js-" + key).innerHTML = value;
5962        }
5963      };
5964      tick();
5965      setInterval(tick, 1e3);
5966    }
5967  }
5968  class CustomerImpact {
5969    constructor() {
5970      this.$els = document.querySelectorAll(".js-customer-impact");
5971      this.$els.forEach(($el) => {
5972        const $carousel = $el.querySelector(".js-customer-impact-carousel");
5973        const $prevButtons = $el.querySelectorAll(".js-customer-impact-prev");
5974        const $nextButtons = $el.querySelectorAll(".js-customer-impact-next");
5975        const carousel = new Flickity($carousel, {
5976          cellAlign: "left",
5977          contain: true,
5978          prevNextButtons: false,
5979          pageDots: false,
5980          wrapAround: true,
5981          imagesLoaded: true
5982        });
5983        $prevButtons.forEach(($prevButton) => {
5984          $prevButton.addEventListener("click", () => {
5985            carousel.previous();
5986          });
5987        });
5988        $nextButtons.forEach(($nextButton) => {
5989          $nextButton.addEventListener("click", () => {
5990            carousel.next();
5991          });
5992        });
5993      });
5994    }
5995  }
5996  class CustomerStoryVideos {
5997    constructor() {
5998      const $els = document.querySelectorAll(".js-customer-story-videos");
5999      $els.forEach(($el) => new Carousel$h($el));
6000    }
6001  }
6002  let Carousel$h = class Carousel {
6003    constructor($el) {
6004      var _a, _b;
6005      this.$el = $el;
6006      this.activeClass = "is-active";
6007      this.$tabs = this.$el.querySelectorAll(".js-customer-story-videos-tab");
6008      this.$carousel = this.$el.querySelector(".js-customer-story-videos-carousel");
6009      this.$nextBtn = this.$el.querySelector(".js-customer-story-videos-carousel-next-btn");
6010      this.$prevBtn = this.$el.querySelector(".js-customer-story-videos-carousel-prev-btn");
6011      this.$iframes = this.$el.querySelectorAll("iframe");
6012      this.flickity = new Flickity(this.$carousel, {
6013        imagesLoaded: true,
6014        prevNextButtons: false,
6015        pageDots: false,
6016        percentPosition: false,
6017        wrapAround: true
6018      });
6019      this.flickity.on("select", this.onSelect.bind(this));
6020      (_a = this.$nextBtn) == null ? void 0 : _a.addEventListener("click", this.next.bind(this));
6021      (_b = this.$prevBtn) == null ? void 0 : _b.addEventListener("click", this.prev.bind(this));
6022      this.$tabs.forEach(($tab, index) => {
6023        $tab.addEventListener("click", this.goToSlide.bind(this, $tab, index));
6024      });
6025    }
6026    stopVideos() {
6027      this.$iframes.forEach(($iframe) => {
6028        $iframe.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', "*");
6029      });
6030    }
6031    /**
6032     * @function next
6033     * @param {Event} e
6034     * @returns void
6035     * Goes to next slide in carousel
6036     */
6037    next(e) {
6038      if (!this.flickity) return;
6039      e.preventDefault();
6040      this.flickity.next();
6041    }
6042    /**
6043     * @function prev
6044     * @param {Event} e
6045     * @returns void
6046     * Goes to previous slide in carousel
6047     */
6048    prev(e) {
6049      if (!this.flickity) return;
6050      e.preventDefault();
6051      this.flickity.previous();
6052    }
6053    /**
6054     * @function goToSlide
6055     * @param {HTMLButtonElement} $tab tab that has been clicked
6056     * @param {Number} index slide index
6057     * @returns void
6058     * Goes to specific slide in carousel based on index
6059     */
6060    goToSlide($tab, index = 0) {
6061      if (!this.flickity || !$tab) return;
6062      this.$tabs.forEach(($tab2) => $tab2.classList.remove(this.activeClass));
6063      $tab.classList.add(this.activeClass);
6064      this.flickity.select(index);
6065    }
6066    /**
6067     * @function onSelect
6068     * @param {Number} index
6069     * Fired when the Flickity slide changes
6070     */
6071    onSelect(index) {
6072      var _a;
6073      this.stopVideos();
6074      this.$tabs.forEach(($tab) => $tab.classList.remove(this.activeClass));
6075      (_a = this.$tabs[index]) == null ? void 0 : _a.classList.add(this.activeClass);
6076    }
6077  };
6078  class FeaturedMerchants {
6079    constructor() {
6080      const $els = document.querySelectorAll(".js-featured-merchants-carousel");
6081      $els.forEach(($el) => new Carousel$g($el));
6082    }
6083  }
6084  let Carousel$g = class Carousel {
6085    constructor($el) {
6086      this.$el = $el;
6087      this.flickity = new Flickity($el, {
6088        imagesLoaded: true,
6089        prevNextButtons: false,
6090        pageDots: false,
6091        cellAlign: "center",
6092        contain: true,
6093        freeScroll: true,
6094        initialIndex: 2,
6095        on: {
6096          ready: () => {
6097            $el.classList.remove("opacity-0");
6098          }
6099        }
6100      });
6101    }
6102  };
6103  class Hamburger {
6104    constructor($el) {
6105      this.$el = document.querySelector(".js-hamburger");
6106      this.activeClass = "is-active";
6107      this.$el && this.$el.addEventListener("click", this.onClick.bind(this));
6108    }
6109    /**
6110     * @function onClick
6111     * @param {Event} e
6112     */
6113    onClick(e) {
6114      e.preventDefault();
6115      this.$el.classList.toggle(this.activeClass);
6116      window.dispatchEvent(new Event(mobileMenuToggle));
6117    }
6118  }
6119  class HiringProcess {
6120    constructor() {
6121      const $els = document.querySelectorAll(".js-hiring-process");
6122      $els.forEach(($el) => new Carousel$f($el));
6123    }
6124  }
6125  let Carousel$f = class Carousel {
6126    constructor($el) {
6127      this.$el = $el;
6128      this.$carousel = this.$el.querySelector(".js-hiring-process-carousel");
6129      this.$nextBtn = this.$el.querySelector(".js-hiring-process-carousel-next-btn");
6130      this.$prevBtn = this.$el.querySelector(".js-hiring-process-carousel-prev-btn");
6131      this.flickity = new Flickity(this.$carousel, {
6132        imagesLoaded: true,
6133        prevNextButtons: false,
6134        pageDots: true,
6135        cellAlign: "center",
6136        draggable: window.innerWidth < 768,
6137        // can't drag and animate the variable centre width
6138        groupCells: 1,
6139        wrapAround: false
6140      });
6141      this.flickity.on("change", this.assignHeights.bind(this));
6142      this.$nextBtn.addEventListener("click", this.next.bind(this));
6143      this.$prevBtn.addEventListener("click", this.prev.bind(this));
6144    }
6145    assignHeights(index) {
6146      if (window.innerWidth < 768) return;
6147      var adjust = (i3, pos) => {
6148        const diff = Math.abs(index - i3);
6149        this.$carousel.querySelector(`.c-hiring-process-card:nth-child(${i3 + 1})`).style.height = `calc(100% - 2.46rem * ${diff})`;
6150        this.$carousel.querySelector(`.c-hiring-process-card:nth-child(${i3 + 1})`).dataset.pos = pos;
6151        this.$carousel.querySelector(`.c-hiring-process-card:nth-child(${i3 + 1}) .c-hiring-process-card--title`).style.width = `calc(20rem - 1.6rem * ${diff})`;
6152      };
6153      for (var i2 = index - 1; i2 >= 0; i2--) {
6154        adjust(i2, "left");
6155      }
6156      for (var i2 = index + 1; i2 < this.flickity.cells.length; i2++) {
6157        adjust(i2, "right");
6158      }
6159      adjust(index, "center");
6160    }
6161    /**
6162     * @function next
6163     * @param {Event} e
6164     * @returns void
6165     * Goes to next slide in carousel
6166     */
6167    next(e) {
6168      if (!this.flickity) return;
6169      e.preventDefault();
6170      this.flickity.next();
6171      this.flickity.reposition();
6172    }
6173    /**
6174     * @function prev
6175     * @param {Event} e
6176     * @returns void
6177     * Goes to previous slide in carousel
6178     */
6179    prev(e) {
6180      if (!this.flickity) return;
6181      e.preventDefault();
6182      this.flickity.previous();
6183      this.flickity.reposition();
6184    }
6185  };
6186  class InspirationListing {
6187    constructor() {
6188      var _a, _b, _c, _d;
6189      this.$el = document.querySelector(".js-inspiration-listing");
6190      if (!this.$el) return;
6191      this.currentPage = 1;
6192      this.$header = document.querySelector(".js-header");
6193      this.$loadMoreButton = this.$el.querySelector(".js-inspiration-listing-load-more");
6194      this.$grid = this.$el.querySelector(".js-inspiration-listing-grid");
6195      this.$noResults = this.$el.querySelector(".js-inspiration-listing-no-results");
6196      this.$verticalSelect = this.$el.querySelector(".js-inspiration-listing-vertical-select");
6197      this.$productSelect = this.$el.querySelector(".js-inspiration-listing-product-select");
6198      this.$featureSelect = this.$el.querySelector(".js-inspiration-listing-feature-select");
6199      this.$pageSelect = this.$el.querySelector(".js-inspiration-listing-page-select");
6200      this.$resetButton = this.$el.querySelector(".js-inspiration-listing-reset-filters");
6201      (_a = this.$verticalSelect) == null ? void 0 : _a.addEventListener("change", this.filterByVertical.bind(this));
6202      (_b = this.$productSelect) == null ? void 0 : _b.addEventListener("change", this.filterByProduct.bind(this));
6203      (_c = this.$featureSelect) == null ? void 0 : _c.addEventListener("change", this.filterByFeature.bind(this));
6204      (_d = this.$pageSelect) == null ? void 0 : _d.addEventListener("change", this.filterByPage.bind(this));
6205      this.$detailButtons = this.$el.querySelectorAll(".js-inspiration-details-button");
6206      this.$modal = document.querySelector(".js-inspiration-modal");
6207      this.$modalInner = this.$modal.querySelector(".js-inspiration-modal-inner");
6208      this.$modalClose = this.$modal.querySelector(".js-inspiration-modal-close");
6209      this.$modalImages = this.$modal.querySelector(".js-images");
6210      this.$modalVideo = this.$modal.querySelector(".js-video");
6211      this.$modalVideoEmbed = this.$modal.querySelector(".js-video-embed");
6212      this.$modalImage = this.$modal.querySelector(".js-inspiration-modal-image");
6213      this.$modalImageMobile = this.$modal.querySelector(".js-inspiration-modal-image-mobile");
6214      this.$modalLogo = this.$modal.querySelector(".js-inspiration-modal-logo");
6215      this.$modalLink = this.$modal.querySelector(".js-inspiration-modal-link");
6216      this.$modalIndustries = this.$modal.querySelector(".js-inspiration-modal-industries");
6217      this.$modalProducts = this.$modal.querySelector(".js-inspiration-modal-products");
6218      this.$modalFeatures = this.$modal.querySelector(".js-inspiration-modal-features");
6219      this.$modalPages = this.$modal.querySelector(".js-inspiration-modal-pages");
6220      this.$modalCaseStudyLink = this.$modal.querySelector(".js-inspiration-modal-case-study-link");
6221      this.$modalNext = this.$modal.querySelector(".js-inspiration-modal-next");
6222      this.$modalPrev = this.$modal.querySelector(".js-inspiration-modal-prev");
6223      this.$modalNext.addEventListener("click", this.nextModal.bind(this));
6224      this.$modalPrev.addEventListener("click", this.prevModal.bind(this));
6225      if (this.$loadMoreButton) {
6226        this.$loadMoreButtonText = this.$loadMoreButton.querySelector(".c-cta__label");
6227        this.originalLoadMoreButtonText = this.$loadMoreButtonText.innerText;
6228        this.$loadMoreButton.addEventListener("click", this.loadMore.bind(this));
6229      }
6230      if (this.$resetButton) {
6231        this.$resetButton.addEventListener("click", this.resetFilters.bind(this));
6232      }
6233      if (this.$noResults) {
6234        this.$noResults.style.display = "none";
6235      }
6236      document.addEventListener("click", (e) => {
6237        if (e.target.closest(".js-inspiration-details-button")) {
6238          e.preventDefault();
6239          const $el = e.target.closest(".js-inspiration-details-button");
6240          this.permalink(parseInt($el.dataset.jsonId));
6241          this.showDetails(parseInt($el.dataset.jsonId), $el);
6242          return;
6243        }
6244      });
6245      this.$modalClose.addEventListener("click", this.hideDetails.bind(this));
6246      window.addEventListener("keyup", (e) => {
6247        if (e.key === "Escape" && this.modalOpen) {
6248          this.hideDetails(e);
6249        }
6250      });
6251      this.openPermalink();
6252      this.updateResetFilters();
6253    }
6254    permalink(id) {
6255      var queryParams = new URLSearchParams(window.location.search);
6256      queryParams.set("inspiration", id);
6257      history.replaceState(null, null, "?" + queryParams.toString());
6258    }
6259    clearPermalink() {
6260      var queryParams = new URLSearchParams(window.location.search);
6261      queryParams.delete("inspiration");
6262      history.replaceState(null, null, "?" + queryParams.toString());
6263    }
6264    openPermalink() {
6265      const urlParams = new URLSearchParams(window.location.search);
6266      const inspiration = urlParams.get("inspiration");
6267      if (inspiration) {
6268        this.showDetails(parseInt(inspiration));
6269      }
6270      const vertical = urlParams.get("vertical");
6271      if (vertical) {
6272        this.selectedVertical = vertical;
6273        this.$verticalSelect.value = vertical;
6274      }
6275      const product = urlParams.get("product");
6276      if (product) {
6277        this.selectedProduct = product;
6278        this.$productSelect.value = product;
6279      }
6280      if (vertical || product) {
6281        this.filterByCategory();
6282      }
6283    }
6284    async execute(params, scrollToTop = true, reset = false) {
6285      if (reset) {
6286        this.currentPage = 1;
6287      } else {
6288        this.currentPage++;
6289      }
6290      this.$grid.classList.add("is-loading");
6291      if (this.$loadMoreButton) {
6292        this.$loadMoreButtonText.innerText = "Loading";
6293        this.$loadMoreButton.disabled = true;
6294      }
6295      const payload = new FormData();
6296      payload.append("paged", this.currentPage);
6297      Object.keys(params).forEach((key) => {
6298        payload.append(key, params[key]);
6299      });
6300      try {
6301        const { data } = await axios.post(window.site.api.ajax, payload);
6302        if (this.$loadMoreButton) {
6303          this.$loadMoreButtonText.innerText = this.originalLoadMoreButtonText;
6304          this.$loadMoreButton.disabled = false;
6305          if (data.is_last_page) {
6306            this.$loadMoreButton.style.display = "none";
6307          } else {
6308            this.$loadMoreButton.style.display = "block";
6309          }
6310        }
6311        if (data) {
6312          this.$grid.innerHTML = reset ? data.response : this.$grid.innerHTML + data.response;
6313          this.$grid.classList.remove("is-loading");
6314          this.updateResetFilters();
6315          if (!data.total_articles) {
6316            this.$grid.style.display = "none";
6317            if (this.$noResults) {
6318              this.$noResults.removeAttribute("style");
6319            }
6320            if (this.$loadMoreButton) {
6321              this.$loadMoreButton.style.display = "none";
6322            }
6323          } else {
6324            if (this.$noResults) {
6325              this.$noResults.style.display = "none";
6326            }
6327            this.$grid.removeAttribute("style");
6328          }
6329        } else {
6330          if (this.$loadMoreButton) {
6331            this.$loadMoreButton.style.display = "none";
6332          }
6333          this.updateResetFilters();
6334        }
6335      } catch (error) {
6336        this.currentPage = 1;
6337        this.$grid.classList.remove("is-loading");
6338      }
6339    }
6340    async loadMore() {
6341      const payload = {
6342        action: "theme_inspiration_load_more"
6343      };
6344      if (this.selectedVertical) {
6345        payload["vertical"] = this.selectedVertical;
6346      }
6347      if (this.selectedProduct) {
6348        payload["product"] = this.selectedProduct;
6349      }
6350      if (this.selectedFeature) {
6351        payload["feature"] = this.selectedFeature;
6352      }
6353      await this.execute(payload, false);
6354    }
6355    async filterByVertical(e) {
6356      if (e.target.value === "all") {
6357        this.selectedVertical = void 0;
6358      } else {
6359        this.selectedVertical = e.target.value;
6360      }
6361      var queryParams = new URLSearchParams(window.location.search);
6362      queryParams.set("vertical", this.selectedVertical);
6363      history.replaceState(null, null, "?" + queryParams.toString());
6364      await this.filterByCategory();
6365    }
6366    async filterByProduct(e) {
6367      if (e.target.value === "all") {
6368        this.selectedProduct = void 0;
6369      } else {
6370        this.selectedProduct = e.target.value;
6371      }
6372      var queryParams = new URLSearchParams(window.location.search);
6373      queryParams.set("product", this.selectedProduct);
6374      history.replaceState(null, null, "?" + queryParams.toString());
6375      await this.filterByCategory();
6376    }
6377    async filterByFeature(e) {
6378      if (e.target.value === "all") {
6379        this.selectedFeature = void 0;
6380      } else {
6381        this.selectedFeature = e.target.value;
6382      }
6383      await this.filterByCategory();
6384    }
6385    async filterByPage(e) {
6386      if (e.target.value === "all") {
6387        this.selectedPage = void 0;
6388      } else {
6389        this.selectedPage = e.target.value;
6390      }
6391      await this.filterByCategory();
6392    }
6393    async filterByCategory(e) {
6394      const payload = {
6395        action: "theme_inspiration_load_more"
6396      };
6397      if (this.selectedVertical) {
6398        payload["vertical"] = this.selectedVertical;
6399      }
6400      if (this.selectedProduct) {
6401        payload["product"] = this.selectedProduct;
6402      }
6403      if (this.selectedFeature) {
6404        payload["feature"] = this.selectedFeature;
6405      }
6406      if (this.selectedPage) {
6407        payload["page"] = this.selectedPage;
6408      }
6409      await this.execute(payload, true, true);
6410    }
6411    async resetFilters() {
6412      this.selectedVertical = void 0;
6413      this.selectedProduct = void 0;
6414      this.selectedFeature = void 0;
6415      this.selectedPage = void 0;
6416      if (this.$verticalSelect) {
6417        this.$verticalSelect.selectedIndex = 0;
6418      }
6419      if (this.$productSelect) {
6420        this.$productSelect.selectedIndex = 0;
6421      }
6422      if (this.$featureSelect) {
6423        this.$featureSelect.selectedIndex = 0;
6424      }
6425      const payload = {
6426        action: "theme_inspiration_load_more"
6427      };
6428      await this.execute(payload, true, true);
6429    }
6430    updateResetFilters() {
6431      if (!this.$resetButton) return;
6432      if (this.currentPage > 1 || this.selectedVertical || this.selectedProduct || this.selectedFeature || this.selectedPage) {
6433        this.$resetButton.style.display = "block";
6434      } else {
6435        this.$resetButton.style.display = "none";
6436      }
6437    }
6438    showDetails(id, invoker) {
6439      this.modalOpen = true;
6440      document.body.classList.add("scrolling-disabled");
6441      this.invoker = invoker;
6442      this.$modal.classList.add("is-open");
6443      this.$modalInner.focus();
6444      this.$modal.setAttribute("aria-hidden", "false");
6445      this.setModalData(id);
6446    }
6447    setModalData(id) {
6448      const modalData = window.okeInspirationModalData.find((item) => item.id === id);
6449      this.$modalNext.dataset.jsonId = modalData.next;
6450      this.$modalPrev.dataset.jsonId = modalData.prev;
6451      this.modalData = modalData.data;
6452      this.$modalLogo.src = this.modalData[this.$modalLogo.dataset.json];
6453      if (this.modalData.modal_media === "image") {
6454        this.$modalImages.classList.remove("hidden");
6455        this.$modalVideo.classList.add("hidden");
6456        this.$modalImage.src = this.modalData[this.$modalImage.dataset.json];
6457        this.$modalImageMobile.src = this.modalData[this.$modalImageMobile.dataset.json];
6458      } else if (this.modalData.modal_media === "video") {
6459        this.$modalImages.classList.add("hidden");
6460        this.$modalVideo.classList.remove("hidden");
6461        this.$modalVideoEmbed.innerHTML = this.modalData.modal_video;
6462        this.$modalVideoEmbed.classList.remove("*:aspect-video");
6463        this.$modalVideoEmbed.classList.remove("*:aspect-fullscreen");
6464        this.$modalVideoEmbed.classList.remove("*:aspect-portrait");
6465        const aspectClass = "*:aspect-" + this.modalData.modal_video_aspect_ratio;
6466        this.$modalVideoEmbed.classList.add(aspectClass);
6467      }
6468      this.$modalLink.href = this.modalData[this.$modalLink.dataset.json].url;
6469      this.$modalLink.innerHTML = this.modalData[this.$modalLink.dataset.json].title;
6470      const industries = this.modalData[this.$modalIndustries.dataset.json];
6471      const products = this.modalData[this.$modalProducts.dataset.json];
6472      const features = this.modalData[this.$modalFeatures.dataset.json];
6473      const pages = this.modalData[this.$modalPages.dataset.json];
6474      const caseStudyLink = this.modalData[this.$modalCaseStudyLink.dataset.json];
6475      this.$modalIndustries.parentElement.classList.remove("hidden");
6476      this.$modalProducts.parentElement.classList.remove("hidden");
6477      this.$modalFeatures.parentElement.classList.remove("hidden");
6478      this.$modalPages.parentElement.classList.remove("hidden");
6479      this.$modalCaseStudyLink.classList.remove("hidden");
6480      if (industries) {
6481        this.$modalIndustries.innerHTML = this.modalData[this.$modalIndustries.dataset.json];
6482      } else {
6483        this.$modalIndustries.parentElement.classList.add("hidden");
6484      }
6485      if (products) {
6486        this.$modalProducts.innerHTML = this.modalData[this.$modalProducts.dataset.json];
6487      } else {
6488        this.$modalProducts.parentElement.classList.add("hidden");
6489      }
6490      if (features) {
6491        this.$modalFeatures.innerHTML = this.modalData[this.$modalFeatures.dataset.json];
6492      } else {
6493        this.$modalFeatures.parentElement.classList.add("hidden");
6494      }
6495      if (pages) {
6496        this.$modalPages.innerHTML = this.modalData[this.$modalPages.dataset.json];
6497      } else {
6498        this.$modalPages.parentElement.classList.add("hidden");
6499      }
6500      if (caseStudyLink) {
6501        this.$modalCaseStudyLink.href = this.modalData[this.$modalCaseStudyLink.dataset.json];
6502      } else {
6503        this.$modalCaseStudyLink.classList.add("hidden");
6504      }
6505    }
6506    hideDetails(e) {
6507      e.preventDefault();
6508      this.$modal.classList.remove("is-open");
6509      this.$modal.setAttribute("aria-hidden", "true");
6510      document.body.classList.remove("scrolling-disabled");
6511      this.modalOpen = false;
6512      this.clearPermalink();
6513      this.pauseVideo();
6514      if (this.invoker) {
6515        this.invoker.focus();
6516      }
6517    }
6518    pauseVideo() {
6519      var _a;
6520      (_a = this.$modalVideoEmbed.firstChild) == null ? void 0 : _a.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', "*");
6521    }
6522    nextModal(e) {
6523      e.preventDefault();
6524      this.pauseVideo();
6525      this.permalink(e.currentTarget.dataset.jsonId);
6526      this.setModalData(parseInt(e.currentTarget.dataset.jsonId));
6527    }
6528    prevModal(e) {
6529      e.preventDefault();
6530      this.pauseVideo();
6531      this.permalink(e.currentTarget.dataset.jsonId);
6532      this.setModalData(parseInt(e.currentTarget.dataset.jsonId));
6533    }
6534  }
6535  class JoinUs {
6536    constructor() {
6537      const $els = document.querySelectorAll(".js-join-us");
6538      $els.forEach(($el) => new Carousel$e($el));
6539    }
6540  }
6541  let Carousel$e = class Carousel {
6542    constructor($el) {
6543      this.$el = $el;
6544      this.activeClass = "is-active";
6545      this.$tabs = this.$el.querySelectorAll(".js-join-us-tab");
6546      this.$carousel = this.$el.querySelector(".js-join-us-carousel");
6547      this.flickity = new Flickity(this.$carousel, {
6548        imagesLoaded: true,
6549        prevNextButtons: false,
6550        pageDots: false,
6551        percentPosition: false,
6552        wrapAround: true,
6553        draggable: false
6554      });
6555      window.addEventListener("hashchange", this.goToHash.bind(this));
6556      this.flickity.on("select", this.onSelect.bind(this));
6557      this.$tabs.forEach(($tab, index) => {
6558        $tab.addEventListener("click", this.onTabClick.bind(this, $tab, index));
6559      });
6560      if (window.location.hash) {
6561        this.goToHash();
6562      } else {
6563        this.$tabs[0].classList.add(this.activeClass);
6564      }
6565    }
6566    onTabClick($tab, index) {
6567      history.pushState({}, "", "#" + $tab.dataset.hash);
6568      this.goToSlide($tab, index);
6569    }
6570    goToHash() {
6571      try {
6572        var el = this.$el.querySelector(window.location.hash);
6573        var idx = [...el.parentNode.children].indexOf(el);
6574        this.goToSlide(el, idx);
6575      } catch (e) {
6576      }
6577    }
6578    /**
6579     * @function goToSlide
6580     * @param {HTMLButtonElement} $tab tab that has been clicked
6581     * @param {Number} index slide index
6582     * @returns void
6583     * Goes to specific slide in carousel based on index
6584     */
6585    goToSlide($tab, index = 0) {
6586      if (!this.flickity || !$tab) return;
6587      this.$tabs.forEach(($tab2) => $tab2.classList.remove(this.activeClass));
6588      $tab.classList.add(this.activeClass);
6589      this.flickity.select(index);
6590    }
6591    /**
6592     * @function onSelect
6593     * @param {Number} index
6594     * Fired when the Flickity slide changes
6595     */
6596    onSelect(index) {
6597      var _a;
6598      this.$tabs.forEach(($tab) => $tab.classList.remove(this.activeClass));
6599      (_a = this.$tabs[index]) == null ? void 0 : _a.classList.add(this.activeClass);
6600    }
6601  };
6602  class LandingPageHero {
6603    constructor() {
6604      this.$el = document.querySelector(".js-landing-page-hero");
6605      if (!this.$el) return;
6606      this.$carousels = this.$el.querySelectorAll(".js-landing-page-hero-logo-carousel");
6607      this.$carousels.forEach(($carousel) => new Flickity($carousel, {
6608        imagesLoaded: true,
6609        prevNextButtons: false,
6610        pageDots: true,
6611        autoPlay: 3e3
6612      }));
6613    }
6614  }
6615  var t = function() {
6616    return t = Object.assign || function(t2) {
6617      for (var i2, n = 1, s = arguments.length; n < s; n++) for (var a in i2 = arguments[n]) Object.prototype.hasOwnProperty.call(i2, a) && (t2[a] = i2[a]);
6618      return t2;
6619    }, t.apply(this, arguments);
6620  }, i = function() {
6621    function i2(i3, n, s) {
6622      var a = this;
6623      this.endVal = n, this.options = s, this.version = "2.8.0", this.defaults = { startVal: 0, decimalPlaces: 0, duration: 2, useEasing: true, useGrouping: true, useIndianSeparators: false, smartEasingThreshold: 999, smartEasingAmount: 333, separator: ",", decimal: ".", prefix: "", suffix: "", enableScrollSpy: false, scrollSpyDelay: 200, scrollSpyOnce: false }, this.finalEndVal = null, this.useEasing = true, this.countDown = false, this.error = "", this.startVal = 0, this.paused = true, this.once = false, this.count = function(t2) {
6624        a.startTime || (a.startTime = t2);
6625        var i4 = t2 - a.startTime;
6626        a.remaining = a.duration - i4, a.useEasing ? a.countDown ? a.frameVal = a.startVal - a.easingFn(i4, 0, a.startVal - a.endVal, a.duration) : a.frameVal = a.easingFn(i4, a.startVal, a.endVal - a.startVal, a.duration) : a.frameVal = a.startVal + (a.endVal - a.startVal) * (i4 / a.duration);
6627        var n2 = a.countDown ? a.frameVal < a.endVal : a.frameVal > a.endVal;
6628        a.frameVal = n2 ? a.endVal : a.frameVal, a.frameVal = Number(a.frameVal.toFixed(a.options.decimalPlaces)), a.printValue(a.frameVal), i4 < a.duration ? a.rAF = requestAnimationFrame(a.count) : null !== a.finalEndVal ? a.update(a.finalEndVal) : a.options.onCompleteCallback && a.options.onCompleteCallback();
6629      }, this.formatNumber = function(t2) {
6630        var i4, n2, s2, e, o = t2 < 0 ? "-" : "";
6631        i4 = Math.abs(t2).toFixed(a.options.decimalPlaces);
6632        var r = (i4 += "").split(".");
6633        if (n2 = r[0], s2 = r.length > 1 ? a.options.decimal + r[1] : "", a.options.useGrouping) {
6634          e = "";
6635          for (var l = 3, h = 0, u = 0, p = n2.length; u < p; ++u) a.options.useIndianSeparators && 4 === u && (l = 2, h = 1), 0 !== u && h % l == 0 && (e = a.options.separator + e), h++, e = n2[p - u - 1] + e;
6636          n2 = e;
6637        }
6638        return a.options.numerals && a.options.numerals.length && (n2 = n2.replace(/[0-9]/g, function(t3) {
6639          return a.options.numerals[+t3];
6640        }), s2 = s2.replace(/[0-9]/g, function(t3) {
6641          return a.options.numerals[+t3];
6642        })), o + a.options.prefix + n2 + s2 + a.options.suffix;
6643      }, this.easeOutExpo = function(t2, i4, n2, s2) {
6644        return n2 * (1 - Math.pow(2, -10 * t2 / s2)) * 1024 / 1023 + i4;
6645      }, this.options = t(t({}, this.defaults), s), this.formattingFn = this.options.formattingFn ? this.options.formattingFn : this.formatNumber, this.easingFn = this.options.easingFn ? this.options.easingFn : this.easeOutExpo, this.startVal = this.validateValue(this.options.startVal), this.frameVal = this.startVal, this.endVal = this.validateValue(n), this.options.decimalPlaces = Math.max(this.options.decimalPlaces), this.resetDuration(), this.options.separator = String(this.options.separator), this.useEasing = this.options.useEasing, "" === this.options.separator && (this.options.useGrouping = false), this.el = "string" == typeof i3 ? document.getElementById(i3) : i3, this.el ? this.printValue(this.startVal) : this.error = "[CountUp] target is null or undefined", "undefined" != typeof window && this.options.enableScrollSpy && (this.error ? console.error(this.error, i3) : (window.onScrollFns = window.onScrollFns || [], window.onScrollFns.push(function() {
6646        return a.handleScroll(a);
6647      }), window.onscroll = function() {
6648        window.onScrollFns.forEach(function(t2) {
6649          return t2();
6650        });
6651      }, this.handleScroll(this)));
6652    }
6653    return i2.prototype.handleScroll = function(t2) {
6654      if (t2 && window && !t2.once) {
6655        var i3 = window.innerHeight + window.scrollY, n = t2.el.getBoundingClientRect(), s = n.top + window.pageYOffset, a = n.top + n.height + window.pageYOffset;
6656        a < i3 && a > window.scrollY && t2.paused ? (t2.paused = false, setTimeout(function() {
6657          return t2.start();
6658        }, t2.options.scrollSpyDelay), t2.options.scrollSpyOnce && (t2.once = true)) : (window.scrollY > a || s > i3) && !t2.paused && t2.reset();
6659      }
6660    }, i2.prototype.determineDirectionAndSmartEasing = function() {
6661      var t2 = this.finalEndVal ? this.finalEndVal : this.endVal;
6662      this.countDown = this.startVal > t2;
6663      var i3 = t2 - this.startVal;
6664      if (Math.abs(i3) > this.options.smartEasingThreshold && this.options.useEasing) {
6665        this.finalEndVal = t2;
6666        var n = this.countDown ? 1 : -1;
6667        this.endVal = t2 + n * this.options.smartEasingAmount, this.duration = this.duration / 2;
6668      } else this.endVal = t2, this.finalEndVal = null;
6669      null !== this.finalEndVal ? this.useEasing = false : this.useEasing = this.options.useEasing;
6670    }, i2.prototype.start = function(t2) {
6671      this.error || (this.options.onStartCallback && this.options.onStartCallback(), t2 && (this.options.onCompleteCallback = t2), this.duration > 0 ? (this.determineDirectionAndSmartEasing(), this.paused = false, this.rAF = requestAnimationFrame(this.count)) : this.printValue(this.endVal));
6672    }, i2.prototype.pauseResume = function() {
6673      this.paused ? (this.startTime = null, this.duration = this.remaining, this.startVal = this.frameVal, this.determineDirectionAndSmartEasing(), this.rAF = requestAnimationFrame(this.count)) : cancelAnimationFrame(this.rAF), this.paused = !this.paused;
6674    }, i2.prototype.reset = function() {
6675      cancelAnimationFrame(this.rAF), this.paused = true, this.resetDuration(), this.startVal = this.validateValue(this.options.startVal), this.frameVal = this.startVal, this.printValue(this.startVal);
6676    }, i2.prototype.update = function(t2) {
6677      cancelAnimationFrame(this.rAF), this.startTime = null, this.endVal = this.validateValue(t2), this.endVal !== this.frameVal && (this.startVal = this.frameVal, null == this.finalEndVal && this.resetDuration(), this.finalEndVal = null, this.determineDirectionAndSmartEasing(), this.rAF = requestAnimationFrame(this.count));
6678    }, i2.prototype.printValue = function(t2) {
6679      var i3;
6680      if (this.el) {
6681        var n = this.formattingFn(t2);
6682        if (null === (i3 = this.options.plugin) || void 0 === i3 ? void 0 : i3.render) this.options.plugin.render(this.el, n);
6683        else if ("INPUT" === this.el.tagName) this.el.value = n;
6684        else "text" === this.el.tagName || "tspan" === this.el.tagName ? this.el.textContent = n : this.el.innerHTML = n;
6685      }
6686    }, i2.prototype.ensureNumber = function(t2) {
6687      return "number" == typeof t2 && !isNaN(t2);
6688    }, i2.prototype.validateValue = function(t2) {
6689      var i3 = Number(t2);
6690      return this.ensureNumber(i3) ? i3 : (this.error = "[CountUp] invalid start or end value: ".concat(t2), null);
6691    }, i2.prototype.resetDuration = function() {
6692      this.startTime = null, this.duration = 1e3 * Number(this.options.duration), this.remaining = this.duration;
6693    }, i2;
6694  }();
6695  class LogoTicker {
6696    constructor() {
6697      const $els = document.querySelectorAll(".js-logo-ticker-carousel");
6698      $els.forEach(($el) => new Carousel$d($el));
6699      const $countups = document.querySelectorAll(".js-countup");
6700      $countups.forEach(($el) => {
6701        var countUp = new i($el, $el.dataset.count, {
6702          enableScrollSpy: true,
6703          suffix: "+",
6704          onCompleteCallback: () => $el.classList.add("c-countup-complete")
6705        });
6706        countUp.start();
6707      });
6708    }
6709  }
6710  let Carousel$d = class Carousel {
6711    constructor($el) {
6712      this.$el = $el;
6713      this.$el.classList.remove("flex");
6714      this.carousel = new Flickity(this.$el, {
6715        cellAlign: "center",
6716        prevNextButtons: false,
6717        pageDots: false,
6718        wrapAround: true,
6719        imagesLoaded: true,
6720        draggable: false
6721      });
6722      this.carousel.x = 0;
6723      this.play();
6724    }
6725    play() {
6726      this.carousel.x = this.carousel.x - 1.05;
6727      this.carousel.settle(this.carousel.x);
6728      this.requestId = window.requestAnimationFrame(this.play.bind(this));
6729    }
6730  };
6731  var resolveConfig$1 = {};
6732  var resolveConfig = {};
6733  var negateValue = {};
6734  var hasRequiredNegateValue;
6735  function requireNegateValue() {
6736    if (hasRequiredNegateValue) return negateValue;
6737    hasRequiredNegateValue = 1;
6738    (function(exports) {
6739      Object.defineProperty(exports, "__esModule", {
6740        value: true
6741      });
6742      Object.defineProperty(exports, "default", {
6743        enumerable: true,
6744        get: function() {
6745          return negateValue2;
6746        }
6747      });
6748      function negateValue2(value) {
6749        value = `${value}`;
6750        if (value === "0") {
6751          return "0";
6752        }
6753        if (/^[+-]?(\d+|\d*\.\d+)(e[+-]?\d+)?(%|\w+)?$/.test(value)) {
6754          return value.replace(/^[+-]?/, (sign) => sign === "-" ? "" : "-");
6755        }
6756        let numericFunctions = [
6757          "var",
6758          "calc",
6759          "min",
6760          "max",
6761          "clamp"
6762        ];
6763        for (const fn of numericFunctions) {
6764          if (value.includes(`${fn}(`)) {
6765            return `calc(${value} * -1)`;
6766          }
6767        }
6768      }
6769    })(negateValue);
6770    return negateValue;
6771  }
6772  var corePluginList = {};
6773  var hasRequiredCorePluginList;
6774  function requireCorePluginList() {
6775    if (hasRequiredCorePluginList) return corePluginList;
6776    hasRequiredCorePluginList = 1;
6777    (function(exports) {
6778      Object.defineProperty(exports, "__esModule", {
6779        value: true
6780      });
6781      Object.defineProperty(exports, "default", {
6782        enumerable: true,
6783        get: function() {
6784          return _default;
6785        }
6786      });
6787      const _default = [
6788        "preflight",
6789        "container",
6790        "accessibility",
6791        "pointerEvents",
6792        "visibility",
6793        "position",
6794        "inset",
6795        "isolation",
6796        "zIndex",
6797        "order",
6798        "gridColumn",
6799        "gridColumnStart",
6800        "gridColumnEnd",
6801        "gridRow",
6802        "gridRowStart",
6803        "gridRowEnd",
6804        "float",
6805        "clear",
6806        "margin",
6807        "boxSizing",
6808        "lineClamp",
6809        "display",
6810        "aspectRatio",
6811        "size",
6812        "height",
6813        "maxHeight",
6814        "minHeight",
6815        "width",
6816        "minWidth",
6817        "maxWidth",
6818        "flex",
6819        "flexShrink",
6820        "flexGrow",
6821        "flexBasis",
6822        "tableLayout",
6823        "captionSide",
6824        "borderCollapse",
6825        "borderSpacing",
6826        "transformOrigin",
6827        "translate",
6828        "rotate",
6829        "skew",
6830        "scale",
6831        "transform",
6832        "animation",
6833        "cursor",
6834        "touchAction",
6835        "userSelect",
6836        "resize",
6837        "scrollSnapType",
6838        "scrollSnapAlign",
6839        "scrollSnapStop",
6840        "scrollMargin",
6841        "scrollPadding",
6842        "listStylePosition",
6843        "listStyleType",
6844        "listStyleImage",
6845        "appearance",
6846        "columns",
6847        "breakBefore",
6848        "breakInside",
6849        "breakAfter",
6850        "gridAutoColumns",
6851        "gridAutoFlow",
6852        "gridAutoRows",
6853        "gridTemplateColumns",
6854        "gridTemplateRows",
6855        "flexDirection",
6856        "flexWrap",
6857        "placeContent",
6858        "placeItems",
6859        "alignContent",
6860        "alignItems",
6861        "justifyContent",
6862        "justifyItems",
6863        "gap",
6864        "space",
6865        "divideWidth",
6866        "divideStyle",
6867        "divideColor",
6868        "divideOpacity",
6869        "placeSelf",
6870        "alignSelf",
6871        "justifySelf",
6872        "overflow",
6873        "overscrollBehavior",
6874        "scrollBehavior",
6875        "textOverflow",
6876        "hyphens",
6877        "whitespace",
6878        "textWrap",
6879        "wordBreak",
6880        "borderRadius",
6881        "borderWidth",
6882        "borderStyle",
6883        "borderColor",
6884        "borderOpacity",
6885        "backgroundColor",
6886        "backgroundOpacity",
6887        "backgroundImage",
6888        "gradientColorStops",
6889        "boxDecorationBreak",
6890        "backgroundSize",
6891        "backgroundAttachment",
6892        "backgroundClip",
6893        "backgroundPosition",
6894        "backgroundRepeat",
6895        "backgroundOrigin",
6896        "fill",
6897        "stroke",
6898        "strokeWidth",
6899        "objectFit",
6900        "objectPosition",
6901        "padding",
6902        "textAlign",
6903        "textIndent",
6904        "verticalAlign",
6905        "fontFamily",
6906        "fontSize",
6907        "fontWeight",
6908        "textTransform",
6909        "fontStyle",
6910        "fontVariantNumeric",
6911        "lineHeight",
6912        "letterSpacing",
6913        "textColor",
6914        "textOpacity",
6915        "textDecoration",
6916        "textDecorationColor",
6917        "textDecorationStyle",
6918        "textDecorationThickness",
6919        "textUnderlineOffset",
6920        "fontSmoothing",
6921        "placeholderColor",
6922        "placeholderOpacity",
6923        "caretColor",
6924        "accentColor",
6925        "opacity",
6926        "backgroundBlendMode",
6927        "mixBlendMode",
6928        "boxShadow",
6929        "boxShadowColor",
6930        "outlineStyle",
6931        "outlineWidth",
6932        "outlineOffset",
6933        "outlineColor",
6934        "ringWidth",
6935        "ringColor",
6936        "ringOpacity",
6937        "ringOffsetWidth",
6938        "ringOffsetColor",
6939        "blur",
6940        "brightness",
6941        "contrast",
6942        "dropShadow",
6943        "grayscale",
6944        "hueRotate",
6945        "invert",
6946        "saturate",
6947        "sepia",
6948        "filter",
6949        "backdropBlur",
6950        "backdropBrightness",
6951        "backdropContrast",
6952        "backdropGrayscale",
6953        "backdropHueRotate",
6954        "backdropInvert",
6955        "backdropOpacity",
6956        "backdropSaturate",
6957        "backdropSepia",
6958        "backdropFilter",
6959        "transitionProperty",
6960        "transitionDelay",
6961        "transitionDuration",
6962        "transitionTimingFunction",
6963        "willChange",
6964        "contain",
6965        "content",
6966        "forcedColorAdjust"
6967      ];
6968    })(corePluginList);
6969    return corePluginList;
6970  }
6971  var configurePlugins = {};
6972  var hasRequiredConfigurePlugins;
6973  function requireConfigurePlugins() {
6974    if (hasRequiredConfigurePlugins) return configurePlugins;
6975    hasRequiredConfigurePlugins = 1;
6976    (function(exports) {
6977      Object.defineProperty(exports, "__esModule", {
6978        value: true
6979      });
6980      Object.defineProperty(exports, "default", {
6981        enumerable: true,
6982        get: function() {
6983          return _default;
6984        }
6985      });
6986      function _default(pluginConfig, plugins) {
6987        if (pluginConfig === void 0) {
6988          return plugins;
6989        }
6990        const pluginNames = Array.isArray(pluginConfig) ? pluginConfig : [
6991          ...new Set(plugins.filter((pluginName) => {
6992            return pluginConfig !== false && pluginConfig[pluginName] !== false;
6993          }).concat(Object.keys(pluginConfig).filter((pluginName) => {
6994            return pluginConfig[pluginName] !== false;
6995          })))
6996        ];
6997        return pluginNames;
6998      }
6999    })(configurePlugins);
7000    return configurePlugins;
7001  }
7002  var colors = {};
7003  var log = {};
7004  var picocolors_browser = { exports: {} };
7005  var hasRequiredPicocolors_browser;
7006  function requirePicocolors_browser() {
7007    if (hasRequiredPicocolors_browser) return picocolors_browser.exports;
7008    hasRequiredPicocolors_browser = 1;
7009    var x = String;
7010    var create = function() {
7011      return { isColorSupported: false, reset: x, bold: x, dim: x, italic: x, underline: x, inverse: x, hidden: x, strikethrough: x, black: x, red: x, green: x, yellow: x, blue: x, magenta: x, cyan: x, white: x, gray: x, bgBlack: x, bgRed: x, bgGreen: x, bgYellow: x, bgBlue: x, bgMagenta: x, bgCyan: x, bgWhite: x, blackBright: x, redBright: x, greenBright: x, yellowBright: x, blueBright: x, magentaBright: x, cyanBright: x, whiteBright: x, bgBlackBright: x, bgRedBright: x, bgGreenBright: x, bgYellowBright: x, bgBlueBright: x, bgMagentaBright: x, bgCyanBright: x, bgWhiteBright: x };
7012    };
7013    picocolors_browser.exports = create();
7014    picocolors_browser.exports.createColors = create;
7015    return picocolors_browser.exports;
7016  }
7017  var hasRequiredLog;
7018  function requireLog() {
7019    if (hasRequiredLog) return log;
7020    hasRequiredLog = 1;
7021    (function(exports) {
7022      Object.defineProperty(exports, "__esModule", {
7023        value: true
7024      });
7025      function _export(target, all2) {
7026        for (var name in all2) Object.defineProperty(target, name, {
7027          enumerable: true,
7028          get: all2[name]
7029        });
7030      }
7031      _export(exports, {
7032        dim: function() {
7033          return dim;
7034        },
7035        default: function() {
7036          return _default;
7037        }
7038      });
7039      const _picocolors = /* @__PURE__ */ _interop_require_default(/* @__PURE__ */ requirePicocolors_browser());
7040      function _interop_require_default(obj) {
7041        return obj && obj.__esModule ? obj : {
7042          default: obj
7043        };
7044      }
7045      let alreadyShown = /* @__PURE__ */ new Set();
7046      function log2(type, messages, key) {
7047        if (typeof process !== "undefined" && process.env.JEST_WORKER_ID) return;
7048        if (key && alreadyShown.has(key)) return;
7049        if (key) alreadyShown.add(key);
7050        console.warn("");
7051        messages.forEach((message) => console.warn(type, "-", message));
7052      }
7053      function dim(input) {
7054        return _picocolors.default.dim(input);
7055      }
7056      const _default = {
7057        info(key, messages) {
7058          log2(_picocolors.default.bold(_picocolors.default.cyan("info")), ...Array.isArray(key) ? [
7059            key
7060          ] : [
7061            messages,
7062            key
7063          ]);
7064        },
7065        warn(key, messages) {
7066          log2(_picocolors.default.bold(_picocolors.default.yellow("warn")), ...Array.isArray(key) ? [
7067            key
7068          ] : [
7069            messages,
7070            key
7071          ]);
7072        },
7073        risk(key, messages) {
7074          log2(_picocolors.default.bold(_picocolors.default.magenta("risk")), ...Array.isArray(key) ? [
7075            key
7076          ] : [
7077            messages,
7078            key
7079          ]);
7080        }
7081      };
7082    })(log);
7083    return log;
7084  }
7085  var hasRequiredColors;
7086  function requireColors() {
7087    if (hasRequiredColors) return colors;
7088    hasRequiredColors = 1;
7089    (function(exports) {
7090      Object.defineProperty(exports, "__esModule", {
7091        value: true
7092      });
7093      Object.defineProperty(exports, "default", {
7094        enumerable: true,
7095        get: function() {
7096          return _default;
7097        }
7098      });
7099      const _log = /* @__PURE__ */ _interop_require_default(requireLog());
7100      function _interop_require_default(obj) {
7101        return obj && obj.__esModule ? obj : {
7102          default: obj
7103        };
7104      }
7105      function warn({ version, from, to }) {
7106        _log.default.warn(`${from}-color-renamed`, [
7107          `As of Tailwind CSS ${version}, \`${from}\` has been renamed to \`${to}\`.`,
7108          "Update your configuration file to silence this warning."
7109        ]);
7110      }
7111      const _default = {
7112        inherit: "inherit",
7113        current: "currentColor",
7114        transparent: "transparent",
7115        black: "#000",
7116        white: "#fff",
7117        slate: {
7118          50: "#f8fafc",
7119          100: "#f1f5f9",
7120          200: "#e2e8f0",
7121          300: "#cbd5e1",
7122          400: "#94a3b8",
7123          500: "#64748b",
7124          600: "#475569",
7125          700: "#334155",
7126          800: "#1e293b",
7127          900: "#0f172a",
7128          950: "#020617"
7129        },
7130        gray: {
7131          50: "#f9fafb",
7132          100: "#f3f4f6",
7133          200: "#e5e7eb",
7134          300: "#d1d5db",
7135          400: "#9ca3af",
7136          500: "#6b7280",
7137          600: "#4b5563",
7138          700: "#374151",
7139          800: "#1f2937",
7140          900: "#111827",
7141          950: "#030712"
7142        },
7143        zinc: {
7144          50: "#fafafa",
7145          100: "#f4f4f5",
7146          200: "#e4e4e7",
7147          300: "#d4d4d8",
7148          400: "#a1a1aa",
7149          500: "#71717a",
7150          600: "#52525b",
7151          700: "#3f3f46",
7152          800: "#27272a",
7153          900: "#18181b",
7154          950: "#09090b"
7155        },
7156        neutral: {
7157          50: "#fafafa",
7158          100: "#f5f5f5",
7159          200: "#e5e5e5",
7160          300: "#d4d4d4",
7161          400: "#a3a3a3",
7162          500: "#737373",
7163          600: "#525252",
7164          700: "#404040",
7165          800: "#262626",
7166          900: "#171717",
7167          950: "#0a0a0a"
7168        },
7169        stone: {
7170          50: "#fafaf9",
7171          100: "#f5f5f4",
7172          200: "#e7e5e4",
7173          300: "#d6d3d1",
7174          400: "#a8a29e",
7175          500: "#78716c",
7176          600: "#57534e",
7177          700: "#44403c",
7178          800: "#292524",
7179          900: "#1c1917",
7180          950: "#0c0a09"
7181        },
7182        red: {
7183          50: "#fef2f2",
7184          100: "#fee2e2",
7185          200: "#fecaca",
7186          300: "#fca5a5",
7187          400: "#f87171",
7188          500: "#ef4444",
7189          600: "#dc2626",
7190          700: "#b91c1c",
7191          800: "#991b1b",
7192          900: "#7f1d1d",
7193          950: "#450a0a"
7194        },
7195        orange: {
7196          50: "#fff7ed",
7197          100: "#ffedd5",
7198          200: "#fed7aa",
7199          300: "#fdba74",
7200          400: "#fb923c",
7201          500: "#f97316",
7202          600: "#ea580c",
7203          700: "#c2410c",
7204          800: "#9a3412",
7205          900: "#7c2d12",
7206          950: "#431407"
7207        },
7208        amber: {
7209          50: "#fffbeb",
7210          100: "#fef3c7",
7211          200: "#fde68a",
7212          300: "#fcd34d",
7213          400: "#fbbf24",
7214          500: "#f59e0b",
7215          600: "#d97706",
7216          700: "#b45309",
7217          800: "#92400e",
7218          900: "#78350f",
7219          950: "#451a03"
7220        },
7221        yellow: {
7222          50: "#fefce8",
7223          100: "#fef9c3",
7224          200: "#fef08a",
7225          300: "#fde047",
7226          400: "#facc15",
7227          500: "#eab308",
7228          600: "#ca8a04",
7229          700: "#a16207",
7230          800: "#854d0e",
7231          900: "#713f12",
7232          950: "#422006"
7233        },
7234        lime: {
7235          50: "#f7fee7",
7236          100: "#ecfccb",
7237          200: "#d9f99d",
7238          300: "#bef264",
7239          400: "#a3e635",
7240          500: "#84cc16",
7241          600: "#65a30d",
7242          700: "#4d7c0f",
7243          800: "#3f6212",
7244          900: "#365314",
7245          950: "#1a2e05"
7246        },
7247        green: {
7248          50: "#f0fdf4",
7249          100: "#dcfce7",
7250          200: "#bbf7d0",
7251          300: "#86efac",
7252          400: "#4ade80",
7253          500: "#22c55e",
7254          600: "#16a34a",
7255          700: "#15803d",
7256          800: "#166534",
7257          900: "#14532d",
7258          950: "#052e16"
7259        },
7260        emerald: {
7261          50: "#ecfdf5",
7262          100: "#d1fae5",
7263          200: "#a7f3d0",
7264          300: "#6ee7b7",
7265          400: "#34d399",
7266          500: "#10b981",
7267          600: "#059669",
7268          700: "#047857",
7269          800: "#065f46",
7270          900: "#064e3b",
7271          950: "#022c22"
7272        },
7273        teal: {
7274          50: "#f0fdfa",
7275          100: "#ccfbf1",
7276          200: "#99f6e4",
7277          300: "#5eead4",
7278          400: "#2dd4bf",
7279          500: "#14b8a6",
7280          600: "#0d9488",
7281          700: "#0f766e",
7282          800: "#115e59",
7283          900: "#134e4a",
7284          950: "#042f2e"
7285        },
7286        cyan: {
7287          50: "#ecfeff",
7288          100: "#cffafe",
7289          200: "#a5f3fc",
7290          300: "#67e8f9",
7291          400: "#22d3ee",
7292          500: "#06b6d4",
7293          600: "#0891b2",
7294          700: "#0e7490",
7295          800: "#155e75",
7296          900: "#164e63",
7297          950: "#083344"
7298        },
7299        sky: {
7300          50: "#f0f9ff",
7301          100: "#e0f2fe",
7302          200: "#bae6fd",
7303          300: "#7dd3fc",
7304          400: "#38bdf8",
7305          500: "#0ea5e9",
7306          600: "#0284c7",
7307          700: "#0369a1",
7308          800: "#075985",
7309          900: "#0c4a6e",
7310          950: "#082f49"
7311        },
7312        blue: {
7313          50: "#eff6ff",
7314          100: "#dbeafe",
7315          200: "#bfdbfe",
7316          300: "#93c5fd",
7317          400: "#60a5fa",
7318          500: "#3b82f6",
7319          600: "#2563eb",
7320          700: "#1d4ed8",
7321          800: "#1e40af",
7322          900: "#1e3a8a",
7323          950: "#172554"
7324        },
7325        indigo: {
7326          50: "#eef2ff",
7327          100: "#e0e7ff",
7328          200: "#c7d2fe",
7329          300: "#a5b4fc",
7330          400: "#818cf8",
7331          500: "#6366f1",
7332          600: "#4f46e5",
7333          700: "#4338ca",
7334          800: "#3730a3",
7335          900: "#312e81",
7336          950: "#1e1b4b"
7337        },
7338        violet: {
7339          50: "#f5f3ff",
7340          100: "#ede9fe",
7341          200: "#ddd6fe",
7342          300: "#c4b5fd",
7343          400: "#a78bfa",
7344          500: "#8b5cf6",
7345          600: "#7c3aed",
7346          700: "#6d28d9",
7347          800: "#5b21b6",
7348          900: "#4c1d95",
7349          950: "#2e1065"
7350        },
7351        purple: {
7352          50: "#faf5ff",
7353          100: "#f3e8ff",
7354          200: "#e9d5ff",
7355          300: "#d8b4fe",
7356          400: "#c084fc",
7357          500: "#a855f7",
7358          600: "#9333ea",
7359          700: "#7e22ce",
7360          800: "#6b21a8",
7361          900: "#581c87",
7362          950: "#3b0764"
7363        },
7364        fuchsia: {
7365          50: "#fdf4ff",
7366          100: "#fae8ff",
7367          200: "#f5d0fe",
7368          300: "#f0abfc",
7369          400: "#e879f9",
7370          500: "#d946ef",
7371          600: "#c026d3",
7372          700: "#a21caf",
7373          800: "#86198f",
7374          900: "#701a75",
7375          950: "#4a044e"
7376        },
7377        pink: {
7378          50: "#fdf2f8",
7379          100: "#fce7f3",
7380          200: "#fbcfe8",
7381          300: "#f9a8d4",
7382          400: "#f472b6",
7383          500: "#ec4899",
7384          600: "#db2777",
7385          700: "#be185d",
7386          800: "#9d174d",
7387          900: "#831843",
7388          950: "#500724"
7389        },
7390        rose: {
7391          50: "#fff1f2",
7392          100: "#ffe4e6",
7393          200: "#fecdd3",
7394          300: "#fda4af",
7395          400: "#fb7185",
7396          500: "#f43f5e",
7397          600: "#e11d48",
7398          700: "#be123c",
7399          800: "#9f1239",
7400          900: "#881337",
7401          950: "#4c0519"
7402        },
7403        get lightBlue() {
7404          warn({
7405            version: "v2.2",
7406            from: "lightBlue",
7407            to: "sky"
7408          });
7409          return this.sky;
7410        },
7411        get warmGray() {
7412          warn({
7413            version: "v3.0",
7414            from: "warmGray",
7415            to: "stone"
7416          });
7417          return this.stone;
7418        },
7419        get trueGray() {
7420          warn({
7421            version: "v3.0",
7422            from: "trueGray",
7423            to: "neutral"
7424          });
7425          return this.neutral;
7426        },
7427        get coolGray() {
7428          warn({
7429            version: "v3.0",
7430            from: "coolGray",
7431            to: "gray"
7432          });
7433          return this.gray;
7434        },
7435        get blueGray() {
7436          warn({
7437            version: "v3.0",
7438            from: "blueGray",
7439            to: "slate"
7440          });
7441          return this.slate;
7442        }
7443      };
7444    })(colors);
7445    return colors;
7446  }
7447  var defaults = {};
7448  var hasRequiredDefaults;
7449  function requireDefaults() {
7450    if (hasRequiredDefaults) return defaults;
7451    hasRequiredDefaults = 1;
7452    (function(exports) {
7453      Object.defineProperty(exports, "__esModule", {
7454        value: true
7455      });
7456      Object.defineProperty(exports, "defaults", {
7457        enumerable: true,
7458        get: function() {
7459          return defaults2;
7460        }
7461      });
7462      function defaults2(target, ...sources) {
7463        for (let source of sources) {
7464          for (let k in source) {
7465            var _target_hasOwnProperty;
7466            if (!(target === null || target === void 0 ? void 0 : (_target_hasOwnProperty = target.hasOwnProperty) === null || _target_hasOwnProperty === void 0 ? void 0 : _target_hasOwnProperty.call(target, k))) {
7467              target[k] = source[k];
7468            }
7469          }
7470          for (let k of Object.getOwnPropertySymbols(source)) {
7471            var _target_hasOwnProperty1;
7472            if (!(target === null || target === void 0 ? void 0 : (_target_hasOwnProperty1 = target.hasOwnProperty) === null || _target_hasOwnProperty1 === void 0 ? void 0 : _target_hasOwnProperty1.call(target, k))) {
7473              target[k] = source[k];
7474            }
7475          }
7476        }
7477        return target;
7478      }
7479    })(defaults);
7480    return defaults;
7481  }
7482  var toPath = {};
7483  var hasRequiredToPath;
7484  function requireToPath() {
7485    if (hasRequiredToPath) return toPath;
7486    hasRequiredToPath = 1;
7487    (function(exports) {
7488      Object.defineProperty(exports, "__esModule", {
7489        value: true
7490      });
7491      Object.defineProperty(exports, "toPath", {
7492        enumerable: true,
7493        get: function() {
7494          return toPath2;
7495        }
7496      });
7497      function toPath2(path) {
7498        if (Array.isArray(path)) return path;
7499        let openBrackets = path.split("[").length - 1;
7500        let closedBrackets = path.split("]").length - 1;
7501        if (openBrackets !== closedBrackets) {
7502          throw new Error(`Path is invalid. Has unbalanced brackets: ${path}`);
7503        }
7504        return path.split(/\.(?![^\[]*\])|[\[\]]/g).filter(Boolean);
7505      }
7506    })(toPath);
7507    return toPath;
7508  }
7509  var normalizeConfig = {};
7510  var featureFlags = {};
7511  var hasRequiredFeatureFlags;
7512  function requireFeatureFlags() {
7513    if (hasRequiredFeatureFlags) return featureFlags;
7514    hasRequiredFeatureFlags = 1;
7515    (function(exports) {
7516      Object.defineProperty(exports, "__esModule", {
7517        value: true
7518      });
7519      function _export(target, all2) {
7520        for (var name in all2) Object.defineProperty(target, name, {
7521          enumerable: true,
7522          get: all2[name]
7523        });
7524      }
7525      _export(exports, {
7526        flagEnabled: function() {
7527          return flagEnabled;
7528        },
7529        issueFlagNotices: function() {
7530          return issueFlagNotices;
7531        },
7532        default: function() {
7533          return _default;
7534        }
7535      });
7536      const _picocolors = /* @__PURE__ */ _interop_require_default(/* @__PURE__ */ requirePicocolors_browser());
7537      const _log = /* @__PURE__ */ _interop_require_default(requireLog());
7538      function _interop_require_default(obj) {
7539        return obj && obj.__esModule ? obj : {
7540          default: obj
7541        };
7542      }
7543      let defaults2 = {
7544        optimizeUniversalDefaults: false,
7545        generalizedModifiers: true,
7546        disableColorOpacityUtilitiesByDefault: false,
7547        relativeContentPathsByDefault: false
7548      };
7549      let featureFlags2 = {
7550        future: [
7551          "hoverOnlyWhenSupported",
7552          "respectDefaultRingColorOpacity",
7553          "disableColorOpacityUtilitiesByDefault",
7554          "relativeContentPathsByDefault"
7555        ],
7556        experimental: [
7557          "optimizeUniversalDefaults",
7558          "generalizedModifiers"
7559        ]
7560      };
7561      function flagEnabled(config, flag) {
7562        if (featureFlags2.future.includes(flag)) {
7563          var _config_future;
7564          var _config_future_flag, _ref;
7565          return config.future === "all" || ((_ref = (_config_future_flag = config === null || config === void 0 ? void 0 : (_config_future = config.future) === null || _config_future === void 0 ? void 0 : _config_future[flag]) !== null && _config_future_flag !== void 0 ? _config_future_flag : defaults2[flag]) !== null && _ref !== void 0 ? _ref : false);
7566        }
7567        if (featureFlags2.experimental.includes(flag)) {
7568          var _config_experimental;
7569          var _config_experimental_flag, _ref1;
7570          return config.experimental === "all" || ((_ref1 = (_config_experimental_flag = config === null || config === void 0 ? void 0 : (_config_experimental = config.experimental) === null || _config_experimental === void 0 ? void 0 : _config_experimental[flag]) !== null && _config_experimental_flag !== void 0 ? _config_experimental_flag : defaults2[flag]) !== null && _ref1 !== void 0 ? _ref1 : false);
7571        }
7572        return false;
7573      }
7574      function experimentalFlagsEnabled(config) {
7575        if (config.experimental === "all") {
7576          return featureFlags2.experimental;
7577        }
7578        var _config_experimental;
7579        return Object.keys((_config_experimental = config === null || config === void 0 ? void 0 : config.experimental) !== null && _config_experimental !== void 0 ? _config_experimental : {}).filter((flag) => featureFlags2.experimental.includes(flag) && config.experimental[flag]);
7580      }
7581      function issueFlagNotices(config) {
7582        if (process.env.JEST_WORKER_ID !== void 0) {
7583          return;
7584        }
7585        if (experimentalFlagsEnabled(config).length > 0) {
7586          let changes = experimentalFlagsEnabled(config).map((s) => _picocolors.default.yellow(s)).join(", ");
7587          _log.default.warn("experimental-flags-enabled", [
7588            `You have enabled experimental features: ${changes}`,
7589            "Experimental features in Tailwind CSS are not covered by semver, may introduce breaking changes, and can change at any time."
7590          ]);
7591        }
7592      }
7593      const _default = featureFlags2;
7594    })(featureFlags);
7595    return featureFlags;
7596  }
7597  var hasRequiredNormalizeConfig;
7598  function requireNormalizeConfig() {
7599    if (hasRequiredNormalizeConfig) return normalizeConfig;
7600    hasRequiredNormalizeConfig = 1;
7601    (function(exports) {
7602      Object.defineProperty(exports, "__esModule", {
7603        value: true
7604      });
7605      Object.defineProperty(exports, "normalizeConfig", {
7606        enumerable: true,
7607        get: function() {
7608          return normalizeConfig2;
7609        }
7610      });
7611      const _featureFlags = requireFeatureFlags();
7612      const _log = /* @__PURE__ */ _interop_require_wildcard(requireLog());
7613      function _getRequireWildcardCache(nodeInterop) {
7614        if (typeof WeakMap !== "function") return null;
7615        var cacheBabelInterop = /* @__PURE__ */ new WeakMap();
7616        var cacheNodeInterop = /* @__PURE__ */ new WeakMap();
7617        return (_getRequireWildcardCache = function(nodeInterop2) {
7618          return nodeInterop2 ? cacheNodeInterop : cacheBabelInterop;
7619        })(nodeInterop);
7620      }
7621      function _interop_require_wildcard(obj, nodeInterop) {
7622        if (obj && obj.__esModule) {
7623          return obj;
7624        }
7625        if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
7626          return {
7627            default: obj
7628          };
7629        }
7630        var cache = _getRequireWildcardCache(nodeInterop);
7631        if (cache && cache.has(obj)) {
7632          return cache.get(obj);
7633        }
7634        var newObj = {};
7635        var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
7636        for (var key in obj) {
7637          if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
7638            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
7639            if (desc && (desc.get || desc.set)) {
7640              Object.defineProperty(newObj, key, desc);
7641            } else {
7642              newObj[key] = obj[key];
7643            }
7644          }
7645        }
7646        newObj.default = obj;
7647        if (cache) {
7648          cache.set(obj, newObj);
7649        }
7650        return newObj;
7651      }
7652      function normalizeConfig2(config) {
7653        let valid = (() => {
7654          if (config.purge) {
7655            return false;
7656          }
7657          if (!config.content) {
7658            return false;
7659          }
7660          if (!Array.isArray(config.content) && !(typeof config.content === "object" && config.content !== null)) {
7661            return false;
7662          }
7663          if (Array.isArray(config.content)) {
7664            return config.content.every((path) => {
7665              if (typeof path === "string") return true;
7666              if (typeof (path === null || path === void 0 ? void 0 : path.raw) !== "string") return false;
7667              if ((path === null || path === void 0 ? void 0 : path.extension) && typeof (path === null || path === void 0 ? void 0 : path.extension) !== "string") {
7668                return false;
7669              }
7670              return true;
7671            });
7672          }
7673          if (typeof config.content === "object" && config.content !== null) {
7674            if (Object.keys(config.content).some((key) => ![
7675              "files",
7676              "relative",
7677              "extract",
7678              "transform"
7679            ].includes(key))) {
7680              return false;
7681            }
7682            if (Array.isArray(config.content.files)) {
7683              if (!config.content.files.every((path) => {
7684                if (typeof path === "string") return true;
7685                if (typeof (path === null || path === void 0 ? void 0 : path.raw) !== "string") return false;
7686                if ((path === null || path === void 0 ? void 0 : path.extension) && typeof (path === null || path === void 0 ? void 0 : path.extension) !== "string") {
7687                  return false;
7688                }
7689                return true;
7690              })) {
7691                return false;
7692              }
7693              if (typeof config.content.extract === "object") {
7694                for (let value of Object.values(config.content.extract)) {
7695                  if (typeof value !== "function") {
7696                    return false;
7697                  }
7698                }
7699              } else if (!(config.content.extract === void 0 || typeof config.content.extract === "function")) {
7700                return false;
7701              }
7702              if (typeof config.content.transform === "object") {
7703                for (let value of Object.values(config.content.transform)) {
7704                  if (typeof value !== "function") {
7705                    return false;
7706                  }
7707                }
7708              } else if (!(config.content.transform === void 0 || typeof config.content.transform === "function")) {
7709                return false;
7710              }
7711              if (typeof config.content.relative !== "boolean" && typeof config.content.relative !== "undefined") {
7712                return false;
7713              }
7714            }
7715            return true;
7716          }
7717          return false;
7718        })();
7719        if (!valid) {
7720          _log.default.warn("purge-deprecation", [
7721            "The `purge`/`content` options have changed in Tailwind CSS v3.0.",
7722            "Update your configuration file to eliminate this warning.",
7723            "https://tailwindcss.com/docs/upgrade-guide#configure-content-sources"
7724          ]);
7725        }
7726        config.safelist = (() => {
7727          var _purge_options;
7728          let { content, purge, safelist } = config;
7729          if (Array.isArray(safelist)) return safelist;
7730          if (Array.isArray(content === null || content === void 0 ? void 0 : content.safelist)) return content.safelist;
7731          if (Array.isArray(purge === null || purge === void 0 ? void 0 : purge.safelist)) return purge.safelist;
7732          if (Array.isArray(purge === null || purge === void 0 ? void 0 : (_purge_options = purge.options) === null || _purge_options === void 0 ? void 0 : _purge_options.safelist)) return purge.options.safelist;
7733          return [];
7734        })();
7735        config.blocklist = (() => {
7736          let { blocklist } = config;
7737          if (Array.isArray(blocklist)) {
7738            if (blocklist.every((item) => typeof item === "string")) {
7739              return blocklist;
7740            }
7741            _log.default.warn("blocklist-invalid", [
7742              "The `blocklist` option must be an array of strings.",
7743              "https://tailwindcss.com/docs/content-configuration#discarding-classes"
7744            ]);
7745          }
7746          return [];
7747        })();
7748        if (typeof config.prefix === "function") {
7749          _log.default.warn("prefix-function", [
7750            "As of Tailwind CSS v3.0, `prefix` cannot be a function.",
7751            "Update `prefix` in your configuration to be a string to eliminate this warning.",
7752            "https://tailwindcss.com/docs/upgrade-guide#prefix-cannot-be-a-function"
7753          ]);
7754          config.prefix = "";
7755        } else {
7756          var _config_prefix;
7757          config.prefix = (_config_prefix = config.prefix) !== null && _config_prefix !== void 0 ? _config_prefix : "";
7758        }
7759        config.content = {
7760          relative: (() => {
7761            let { content } = config;
7762            if (content === null || content === void 0 ? void 0 : content.relative) {
7763              return content.relative;
7764            }
7765            return (0, _featureFlags.flagEnabled)(config, "relativeContentPathsByDefault");
7766          })(),
7767          files: (() => {
7768            let { content, purge } = config;
7769            if (Array.isArray(purge)) return purge;
7770            if (Array.isArray(purge === null || purge === void 0 ? void 0 : purge.content)) return purge.content;
7771            if (Array.isArray(content)) return content;
7772            if (Array.isArray(content === null || content === void 0 ? void 0 : content.content)) return content.content;
7773            if (Array.isArray(content === null || content === void 0 ? void 0 : content.files)) return content.files;
7774            return [];
7775          })(),
7776          extract: (() => {
7777            let extract = (() => {
7778              var _config_purge, _config_content, _config_purge1, _config_purge_extract, _config_content1, _config_content_extract, _config_purge2, _config_purge_options, _config_content2, _config_content_options;
7779              if ((_config_purge = config.purge) === null || _config_purge === void 0 ? void 0 : _config_purge.extract) return config.purge.extract;
7780              if ((_config_content = config.content) === null || _config_content === void 0 ? void 0 : _config_content.extract) return config.content.extract;
7781              if ((_config_purge1 = config.purge) === null || _config_purge1 === void 0 ? void 0 : (_config_purge_extract = _config_purge1.extract) === null || _config_purge_extract === void 0 ? void 0 : _config_purge_extract.DEFAULT) return config.purge.extract.DEFAULT;
7782              if ((_config_content1 = config.content) === null || _config_content1 === void 0 ? void 0 : (_config_content_extract = _config_content1.extract) === null || _config_content_extract === void 0 ? void 0 : _config_content_extract.DEFAULT) return config.content.extract.DEFAULT;
7783              if ((_config_purge2 = config.purge) === null || _config_purge2 === void 0 ? void 0 : (_config_purge_options = _config_purge2.options) === null || _config_purge_options === void 0 ? void 0 : _config_purge_options.extractors) return config.purge.options.extractors;
7784              if ((_config_content2 = config.content) === null || _config_content2 === void 0 ? void 0 : (_config_content_options = _config_content2.options) === null || _config_content_options === void 0 ? void 0 : _config_content_options.extractors) return config.content.options.extractors;
7785              return {};
7786            })();
7787            let extractors = {};
7788            let defaultExtractor = (() => {
7789              var _config_purge, _config_purge_options, _config_content, _config_content_options;
7790              if ((_config_purge = config.purge) === null || _config_purge === void 0 ? void 0 : (_config_purge_options = _config_purge.options) === null || _config_purge_options === void 0 ? void 0 : _config_purge_options.defaultExtractor) {
7791                return config.purge.options.defaultExtractor;
7792              }
7793              if ((_config_content = config.content) === null || _config_content === void 0 ? void 0 : (_config_content_options = _config_content.options) === null || _config_content_options === void 0 ? void 0 : _config_content_options.defaultExtractor) {
7794                return config.content.options.defaultExtractor;
7795              }
7796              return void 0;
7797            })();
7798            if (defaultExtractor !== void 0) {
7799              extractors.DEFAULT = defaultExtractor;
7800            }
7801            if (typeof extract === "function") {
7802              extractors.DEFAULT = extract;
7803            } else if (Array.isArray(extract)) {
7804              for (let { extensions, extractor } of extract !== null && extract !== void 0 ? extract : []) {
7805                for (let extension of extensions) {
7806                  extractors[extension] = extractor;
7807                }
7808              }
7809            } else if (typeof extract === "object" && extract !== null) {
7810              Object.assign(extractors, extract);
7811            }
7812            return extractors;
7813          })(),
7814          transform: (() => {
7815            let transform = (() => {
7816              var _config_purge, _config_content, _config_purge1, _config_purge_transform, _c
7816onfig_content1, _config_content_transform;
7817              if ((_config_purge = config.purge) === null || _config_purge === void 0 ? void 0 : _config_purge.transform) return config.purge.transform;
7818              if ((_config_content = config.content) === null || _config_content === void 0 ? void 0 : _config_content.transform) return config.content.transform;
7819              if ((_config_purge1 = config.purge) === null || _config_purge1 === void 0 ? void 0 : (_config_purge_transform = _config_purge1.transform) === null || _config_purge_transform === void 0 ? void 0 : _config_purge_transform.DEFAULT) return config.purge.transform.DEFAULT;
7820              if ((_config_content1 = config.content) === null || _config_content1 === void 0 ? void 0 : (_config_content_transform = _config_content1.transform) === null || _config_content_transform === void 0 ? void 0 : _config_content_transform.DEFAULT) return config.content.transform.DEFAULT;
7821              return {};
7822            })();
7823            let transformers = {};
7824            if (typeof transform === "function") {
7825              transformers.DEFAULT = transform;
7826            } else if (typeof transform === "object" && transform !== null) {
7827              Object.assign(transformers, transform);
7828            }
7829            return transformers;
7830          })()
7831        };
7832        for (let file of config.content.files) {
7833          if (typeof file === "string" && /{([^,]*?)}/g.test(file)) {
7834            _log.default.warn("invalid-glob-braces", [
7835              `The glob pattern ${(0, _log.dim)(file)} in your Tailwind CSS configuration is invalid.`,
7836              `Update it to ${(0, _log.dim)(file.replace(/{([^,]*?)}/g, "$1"))} to silence this warning.`
7837            ]);
7838            break;
7839          }
7840        }
7841        return config;
7842      }
7843    })(normalizeConfig);
7844    return normalizeConfig;
7845  }
7846  var isPlainObject = {};
7847  var hasRequiredIsPlainObject;
7848  function requireIsPlainObject() {
7849    if (hasRequiredIsPlainObject) return isPlainObject;
7850    hasRequiredIsPlainObject = 1;
7851    (function(exports) {
7852      Object.defineProperty(exports, "__esModule", {
7853        value: true
7854      });
7855      Object.defineProperty(exports, "default", {
7856        enumerable: true,
7857        get: function() {
7858          return isPlainObject2;
7859        }
7860      });
7861      function isPlainObject2(value) {
7862        if (Object.prototype.toString.call(value) !== "[object Object]") {
7863          return false;
7864        }
7865        const prototype2 = Object.getPrototypeOf(value);
7866        return prototype2 === null || Object.getPrototypeOf(prototype2) === null;
7867      }
7868    })(isPlainObject);
7869    return isPlainObject;
7870  }
7871  var cloneDeep = {};
7872  var hasRequiredCloneDeep;
7873  function requireCloneDeep() {
7874    if (hasRequiredCloneDeep) return cloneDeep;
7875    hasRequiredCloneDeep = 1;
7876    (function(exports) {
7877      Object.defineProperty(exports, "__esModule", {
7878        value: true
7879      });
7880      Object.defineProperty(exports, "cloneDeep", {
7881        enumerable: true,
7882        get: function() {
7883          return cloneDeep2;
7884        }
7885      });
7886      function cloneDeep2(value) {
7887        if (Array.isArray(value)) {
7888          return value.map((child) => cloneDeep2(child));
7889        }
7890        if (typeof value === "object" && value !== null) {
7891          return Object.fromEntries(Object.entries(value).map(([k, v]) => [
7892            k,
7893            cloneDeep2(v)
7894          ]));
7895        }
7896        return value;
7897      }
7898    })(cloneDeep);
7899    return cloneDeep;
7900  }
7901  var pluginUtils = {};
7902  var escapeCommas = {};
7903  var hasRequiredEscapeCommas;
7904  function requireEscapeCommas() {
7905    if (hasRequiredEscapeCommas) return escapeCommas;
7906    hasRequiredEscapeCommas = 1;
7907    (function(exports) {
7908      Object.defineProperty(exports, "__esModule", {
7909        value: true
7910      });
7911      Object.defineProperty(exports, "default", {
7912        enumerable: true,
7913        get: function() {
7914          return escapeCommas2;
7915        }
7916      });
7917      function escapeCommas2(className) {
7918        return className.replace(/\\,/g, "\\2c ");
7919      }
7920    })(escapeCommas);
7921    return escapeCommas;
7922  }
7923  var withAlphaVariable = {};
7924  var color = {};
7925  var colorNames = {};
7926  var hasRequiredColorNames;
7927  function requireColorNames() {
7928    if (hasRequiredColorNames) return colorNames;
7929    hasRequiredColorNames = 1;
7930    (function(exports) {
7931      Object.defineProperty(exports, "__esModule", {
7932        value: true
7933      });
7934      Object.defineProperty(exports, "default", {
7935        enumerable: true,
7936        get: function() {
7937          return _default;
7938        }
7939      });
7940      const _default = {
7941        aliceblue: [
7942          240,
7943          248,
7944          255
7945        ],
7946        antiquewhite: [
7947          250,
7948          235,
7949          215
7950        ],
7951        aqua: [
7952          0,
7953          255,
7954          255
7955        ],
7956        aquamarine: [
7957          127,
7958          255,
7959          212
7960        ],
7961        azure: [
7962          240,
7963          255,
7964          255
7965        ],
7966        beige: [
7967          245,
7968          245,
7969          220
7970        ],
7971        bisque: [
7972          255,
7973          228,
7974          196
7975        ],
7976        black: [
7977          0,
7978          0,
7979          0
7980        ],
7981        blanchedalmond: [
7982          255,
7983          235,
7984          205
7985        ],
7986        blue: [
7987          0,
7988          0,
7989          255
7990        ],
7991        blueviolet: [
7992          138,
7993          43,
7994          226
7995        ],
7996        brown: [
7997          165,
7998          42,
7999          42
8000        ],
8001        burlywood: [
8002          222,
8003          184,
8004          135
8005        ],
8006        cadetblue: [
8007          95,
8008          158,
8009          160
8010        ],
8011        chartreuse: [
8012          127,
8013          255,
8014          0
8015        ],
8016        chocolate: [
8017          210,
8018          105,
8019          30
8020        ],
8021        coral: [
8022          255,
8023          127,
8024          80
8025        ],
8026        cornflowerblue: [
8027          100,
8028          149,
8029          237
8030        ],
8031        cornsilk: [
8032          255,
8033          248,
8034          220
8035        ],
8036        crimson: [
8037          220,
8038          20,
8039          60
8040        ],
8041        cyan: [
8042          0,
8043          255,
8044          255
8045        ],
8046        darkblue: [
8047          0,
8048          0,
8049          139
8050        ],
8051        darkcyan: [
8052          0,
8053          139,
8054          139
8055        ],
8056        darkgoldenrod: [
8057          184,
8058          134,
8059          11
8060        ],
8061        darkgray: [
8062          169,
8063          169,
8064          169
8065        ],
8066        darkgreen: [
8067          0,
8068          100,
8069          0
8070        ],
8071        darkgrey: [
8072          169,
8073          169,
8074          169
8075        ],
8076        darkkhaki: [
8077          189,
8078          183,
8079          107
8080        ],
8081        darkmagenta: [
8082          139,
8083          0,
8084          139
8085        ],
8086        darkolivegreen: [
8087          85,
8088          107,
8089          47
8090        ],
8091        darkorange: [
8092          255,
8093          140,
8094          0
8095        ],
8096        darkorchid: [
8097          153,
8098          50,
8099          204
8100        ],
8101        darkred: [
8102          139,
8103          0,
8104          0
8105        ],
8106        darksalmon: [
8107          233,
8108          150,
8109          122
8110        ],
8111        darkseagreen: [
8112          143,
8113          188,
8114          143
8115        ],
8116        darkslateblue: [
8117          72,
8118          61,
8119          139
8120        ],
8121        darkslategray: [
8122          47,
8123          79,
8124          79
8125        ],
8126        darkslategrey: [
8127          47,
8128          79,
8129          79
8130        ],
8131        darkturquoise: [
8132          0,
8133          206,
8134          209
8135        ],
8136        darkviolet: [
8137          148,
8138          0,
8139          211
8140        ],
8141        deeppink: [
8142          255,
8143          20,
8144          147
8145        ],
8146        deepskyblue: [
8147          0,
8148          191,
8149          255
8150        ],
8151        dimgray: [
8152          105,
8153          105,
8154          105
8155        ],
8156        dimgrey: [
8157          105,
8158          105,
8159          105
8160        ],
8161        dodgerblue: [
8162          30,
8163          144,
8164          255
8165        ],
8166        firebrick: [
8167          178,
8168          34,
8169          34
8170        ],
8171        floralwhite: [
8172          255,
8173          250,
8174          240
8175        ],
8176        forestgreen: [
8177          34,
8178          139,
8179          34
8180        ],
8181        fuchsia: [
8182          255,
8183          0,
8184          255
8185        ],
8186        gainsboro: [
8187          220,
8188          220,
8189          220
8190        ],
8191        ghostwhite: [
8192          248,
8193          248,
8194          255
8195        ],
8196        gold: [
8197          255,
8198          215,
8199          0
8200        ],
8201        goldenrod: [
8202          218,
8203          165,
8204          32
8205        ],
8206        gray: [
8207          128,
8208          128,
8209          128
8210        ],
8211        green: [
8212          0,
8213          128,
8214          0
8215        ],
8216        greenyellow: [
8217          173,
8218          255,
8219          47
8220        ],
8221        grey: [
8222          128,
8223          128,
8224          128
8225        ],
8226        honeydew: [
8227          240,
8228          255,
8229          240
8230        ],
8231        hotpink: [
8232          255,
8233          105,
8234          180
8235        ],
8236        indianred: [
8237          205,
8238          92,
8239          92
8240        ],
8241        indigo: [
8242          75,
8243          0,
8244          130
8245        ],
8246        ivory: [
8247          255,
8248          255,
8249          240
8250        ],
8251        khaki: [
8252          240,
8253          230,
8254          140
8255        ],
8256        lavender: [
8257          230,
8258          230,
8259          250
8260        ],
8261        lavenderblush: [
8262          255,
8263          240,
8264          245
8265        ],
8266        lawngreen: [
8267          124,
8268          252,
8269          0
8270        ],
8271        lemonchiffon: [
8272          255,
8273          250,
8274          205
8275        ],
8276        lightblue: [
8277          173,
8278          216,
8279          230
8280        ],
8281        lightcoral: [
8282          240,
8283          128,
8284          128
8285        ],
8286        lightcyan: [
8287          224,
8288          255,
8289          255
8290        ],
8291        lightgoldenrodyellow: [
8292          250,
8293          250,
8294          210
8295        ],
8296        lightgray: [
8297          211,
8298          211,
8299          211
8300        ],
8301        lightgreen: [
8302          144,
8303          238,
8304          144
8305        ],
8306        lightgrey: [
8307          211,
8308          211,
8309          211
8310        ],
8311        lightpink: [
8312          255,
8313          182,
8314          193
8315        ],
8316        lightsalmon: [
8317          255,
8318          160,
8319          122
8320        ],
8321        lightseagreen: [
8322          32,
8323          178,
8324          170
8325        ],
8326        lightskyblue: [
8327          135,
8328          206,
8329          250
8330        ],
8331        lightslategray: [
8332          119,
8333          136,
8334          153
8335        ],
8336        lightslategrey: [
8337          119,
8338          136,
8339          153
8340        ],
8341        lightsteelblue: [
8342          176,
8343          196,
8344          222
8345        ],
8346        lightyellow: [
8347          255,
8348          255,
8349          224
8350        ],
8351        lime: [
8352          0,
8353          255,
8354          0
8355        ],
8356        limegreen: [
8357          50,
8358          205,
8359          50
8360        ],
8361        linen: [
8362          250,
8363          240,
8364          230
8365        ],
8366        magenta: [
8367          255,
8368          0,
8369          255
8370        ],
8371        maroon: [
8372          128,
8373          0,
8374          0
8375        ],
8376        mediumaquamarine: [
8377          102,
8378          205,
8379          170
8380        ],
8381        mediumblue: [
8382          0,
8383          0,
8384          205
8385        ],
8386        mediumorchid: [
8387          186,
8388          85,
8389          211
8390        ],
8391        mediumpurple: [
8392          147,
8393          112,
8394          219
8395        ],
8396        mediumseagreen: [
8397          60,
8398          179,
8399          113
8400        ],
8401        mediumslateblue: [
8402          123,
8403          104,
8404          238
8405        ],
8406        mediumspringgreen: [
8407          0,
8408          250,
8409          154
8410        ],
8411        mediumturquoise: [
8412          72,
8413          209,
8414          204
8415        ],
8416        mediumvioletred: [
8417          199,
8418          21,
8419          133
8420        ],
8421        midnightblue: [
8422          25,
8423          25,
8424          112
8425        ],
8426        mintcream: [
8427          245,
8428          255,
8429          250
8430        ],
8431        mistyrose: [
8432          255,
8433          228,
8434          225
8435        ],
8436        moccasin: [
8437          255,
8438          228,
8439          181
8440        ],
8441        navajowhite: [
8442          255,
8443          222,
8444          173
8445        ],
8446        navy: [
8447          0,
8448          0,
8449          128
8450        ],
8451        oldlace: [
8452          253,
8453          245,
8454          230
8455        ],
8456        olive: [
8457          128,
8458          128,
8459          0
8460        ],
8461        olivedrab: [
8462          107,
8463          142,
8464          35
8465        ],
8466        orange: [
8467          255,
8468          165,
8469          0
8470        ],
8471        orangered: [
8472          255,
8473          69,
8474          0
8475        ],
8476        orchid: [
8477          218,
8478          112,
8479          214
8480        ],
8481        palegoldenrod: [
8482          238,
8483          232,
8484          170
8485        ],
8486        palegreen: [
8487          152,
8488          251,
8489          152
8490        ],
8491        paleturquoise: [
8492          175,
8493          238,
8494          238
8495        ],
8496        palevioletred: [
8497          219,
8498          112,
8499          147
8500        ],
8501        papayawhip: [
8502          255,
8503          239,
8504          213
8505        ],
8506        peachpuff: [
8507          255,
8508          218,
8509          185
8510        ],
8511        peru: [
8512          205,
8513          133,
8514          63
8515        ],
8516        pink: [
8517          255,
8518          192,
8519          203
8520        ],
8521        plum: [
8522          221,
8523          160,
8524          221
8525        ],
8526        powderblue: [
8527          176,
8528          224,
8529          230
8530        ],
8531        purple: [
8532          128,
8533          0,
8534          128
8535        ],
8536        rebeccapurple: [
8537          102,
8538          51,
8539          153
8540        ],
8541        red: [
8542          255,
8543          0,
8544          0
8545        ],
8546        rosybrown: [
8547          188,
8548          143,
8549          143
8550        ],
8551        royalblue: [
8552          65,
8553          105,
8554          225
8555        ],
8556        saddlebrown: [
8557          139,
8558          69,
8559          19
8560        ],
8561        salmon: [
8562          250,
8563          128,
8564          114
8565        ],
8566        sandybrown: [
8567          244,
8568          164,
8569          96
8570        ],
8571        seagreen: [
8572          46,
8573          139,
8574          87
8575        ],
8576        seashell: [
8577          255,
8578          245,
8579          238
8580        ],
8581        sienna: [
8582          160,
8583          82,
8584          45
8585        ],
8586        silver: [
8587          192,
8588          192,
8589          192
8590        ],
8591        skyblue: [
8592          135,
8593          206,
8594          235
8595        ],
8596        slateblue: [
8597          106,
8598          90,
8599          205
8600        ],
8601        slategray: [
8602          112,
8603          128,
8604          144
8605        ],
8606        slategrey: [
8607          112,
8608          128,
8609          144
8610        ],
8611        snow: [
8612          255,
8613          250,
8614          250
8615        ],
8616        springgreen: [
8617          0,
8618          255,
8619          127
8620        ],
8621        steelblue: [
8622          70,
8623          130,
8624          180
8625        ],
8626        tan: [
8627          210,
8628          180,
8629          140
8630        ],
8631        teal: [
8632          0,
8633          128,
8634          128
8635        ],
8636        thistle: [
8637          216,
8638          191,
8639          216
8640        ],
8641        tomato: [
8642          255,
8643          99,
8644          71
8645        ],
8646        turquoise: [
8647          64,
8648          224,
8649          208
8650        ],
8651        violet: [
8652          238,
8653          130,
8654          238
8655        ],
8656        wheat: [
8657          245,
8658          222,
8659          179
8660        ],
8661        white: [
8662          255,
8663          255,
8664          255
8665        ],
8666        whitesmoke: [
8667          245,
8668          245,
8669          245
8670        ],
8671        yellow: [
8672          255,
8673          255,
8674          0
8675        ],
8676        yellowgreen: [
8677          154,
8678          205,
8679          50
8680        ]
8681      };
8682    })(colorNames);
8683    return colorNames;
8684  }
8685  var hasRequiredColor;
8686  function requireColor() {
8687    if (hasRequiredColor) return color;
8688    hasRequiredColor = 1;
8689    (function(exports) {
8690      Object.defineProperty(exports, "__esModule", {
8691        value: true
8692      });
8693      function _export(target, all2) {
8694        for (var name in all2) Object.defineProperty(target, name, {
8695          enumerable: true,
8696          get: all2[name]
8697        });
8698      }
8699      _export(exports, {
8700        parseColor: function() {
8701          return parseColor;
8702        },
8703        formatColor: function() {
8704          return formatColor;
8705        }
8706      });
8707      const _colorNames = /* @__PURE__ */ _interop_require_default(requireColorNames());
8708      function _interop_require_default(obj) {
8709        return obj && obj.__esModule ? obj : {
8710          default: obj
8711        };
8712      }
8713      let HEX = /^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i;
8714      let SHORT_HEX = /^#([a-f\d])([a-f\d])([a-f\d])([a-f\d])?$/i;
8715      let VALUE = /(?:\d+|\d*\.\d+)%?/;
8716      let SEP = /(?:\s*,\s*|\s+)/;
8717      let ALPHA_SEP = /\s*[,/]\s*/;
8718      let CUSTOM_PROPERTY = /var\(--(?:[^ )]*?)(?:,(?:[^ )]*?|var\(--[^ )]*?\)))?\)/;
8719      let RGB = new RegExp(`^(rgba?)\\(\\s*(${VALUE.source}|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\s*\\)$`);
8720      let HSL = new RegExp(`^(hsla?)\\(\\s*((?:${VALUE.source})(?:deg|rad|grad|turn)?|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\s*\\)$`);
8721      function parseColor(value, { loose = false } = {}) {
8722        var _match_, _match__toString;
8723        if (typeof value !== "string") {
8724          return null;
8725        }
8726        value = value.trim();
8727        if (value === "transparent") {
8728          return {
8729            mode: "rgb",
8730            color: [
8731              "0",
8732              "0",
8733              "0"
8734            ],
8735            alpha: "0"
8736          };
8737        }
8738        if (value in _colorNames.default) {
8739          return {
8740            mode: "rgb",
8741            color: _colorNames.default[value].map((v) => v.toString())
8742          };
8743        }
8744        let hex = value.replace(SHORT_HEX, (_, r, g, b, a) => [
8745          "#",
8746          r,
8747          r,
8748          g,
8749          g,
8750          b,
8751          b,
8752          a ? a + a : ""
8753        ].join("")).match(HEX);
8754        if (hex !== null) {
8755          return {
8756            mode: "rgb",
8757            color: [
8758              parseInt(hex[1], 16),
8759              parseInt(hex[2], 16),
8760              parseInt(hex[3], 16)
8761            ].map((v) => v.toString()),
8762            alpha: hex[4] ? (parseInt(hex[4], 16) / 255).toString() : void 0
8763          };
8764        }
8765        var _value_match;
8766        let match = (_value_match = value.match(RGB)) !== null && _value_match !== void 0 ? _value_match : value.match(HSL);
8767        if (match === null) {
8768          return null;
8769        }
8770        let color2 = [
8771          match[2],
8772          match[3],
8773          match[4]
8774        ].filter(Boolean).map((v) => v.toString());
8775        if (color2.length === 2 && color2[0].startsWith("var(")) {
8776          return {
8777            mode: match[1],
8778            color: [
8779              color2[0]
8780            ],
8781            alpha: color2[1]
8782          };
8783        }
8784        if (!loose && color2.length !== 3) {
8785          return null;
8786        }
8787        if (color2.length < 3 && !color2.some((part) => /^var\(.*?\)$/.test(part))) {
8788          return null;
8789        }
8790        return {
8791          mode: match[1],
8792          color: color2,
8793          alpha: (_match_ = match[5]) === null || _match_ === void 0 ? void 0 : (_match__toString = _match_.toString) === null || _match__toString === void 0 ? void 0 : _match__toString.call(_match_)
8794        };
8795      }
8796      function formatColor({ mode, color: color2, alpha }) {
8797        let hasAlpha = alpha !== void 0;
8798        if (mode === "rgba" || mode === "hsla") {
8799          return `${mode}(${color2.join(", ")}${hasAlpha ? `, ${alpha}` : ""})`;
8800        }
8801        return `${mode}(${color2.join(" ")}${hasAlpha ? ` / ${alpha}` : ""})`;
8802      }
8803    })(color);
8804    return color;
8805  }
8806  var hasRequiredWithAlphaVariable;
8807  function requireWithAlphaVariable() {
8808    if (hasRequiredWithAlphaVariable) return withAlphaVariable;
8809    hasRequiredWithAlphaVariable = 1;
8810    (function(exports) {
8811      Object.defineProperty(exports, "__esModule", {
8812        value: true
8813      });
8814      function _export(target, all2) {
8815        for (var name in all2) Object.defineProperty(target, name, {
8816          enumerable: true,
8817          get: all2[name]
8818        });
8819      }
8820      _export(exports, {
8821        withAlphaValue: function() {
8822          return withAlphaValue;
8823        },
8824        default: function() {
8825          return withAlphaVariable2;
8826        }
8827      });
8828      const _color = requireColor();
8829      function withAlphaValue(color2, alphaValue, defaultValue) {
8830        if (typeof color2 === "function") {
8831          return color2({
8832            opacityValue: alphaValue
8833          });
8834        }
8835        let parsed = (0, _color.parseColor)(color2, {
8836          loose: true
8837        });
8838        if (parsed === null) {
8839          return defaultValue;
8840        }
8841        return (0, _color.formatColor)({
8842          ...parsed,
8843          alpha: alphaValue
8844        });
8845      }
8846      function withAlphaVariable2({ color: color2, property, variable }) {
8847        let properties = [].concat(property);
8848        if (typeof color2 === "function") {
8849          return {
8850            [variable]: "1",
8851            ...Object.fromEntries(properties.map((p) => {
8852              return [
8853                p,
8854                color2({
8855                  opacityVariable: variable,
8856                  opacityValue: `var(${variable}, 1)`
8857                })
8858              ];
8859            }))
8860          };
8861        }
8862        const parsed = (0, _color.parseColor)(color2);
8863        if (parsed === null) {
8864          return Object.fromEntries(properties.map((p) => [
8865            p,
8866            color2
8867          ]));
8868        }
8869        if (parsed.alpha !== void 0) {
8870          return Object.fromEntries(properties.map((p) => [
8871            p,
8872            color2
8873          ]));
8874        }
8875        return {
8876          [variable]: "1",
8877          ...Object.fromEntries(properties.map((p) => {
8878            return [
8879              p,
8880              (0, _color.formatColor)({
8881                ...parsed,
8882                alpha: `var(${variable}, 1)`
8883              })
8884            ];
8885          }))
8886        };
8887      }
8888    })(withAlphaVariable);
8889    return withAlphaVariable;
8890  }
8891  var dataTypes = {};
8892  var parseBoxShadowValue = {};
8893  var splitAtTopLevelOnly = {};
8894  var hasRequiredSplitAtTopLevelOnly;
8895  function requireSplitAtTopLevelOnly() {
8896    if (hasRequiredSplitAtTopLevelOnly) return splitAtTopLevelOnly;
8897    hasRequiredSplitAtTopLevelOnly = 1;
8898    (function(exports) {
8899      Object.defineProperty(exports, "__esModule", {
8900        value: true
8901      });
8902      Object.defineProperty(exports, "splitAtTopLevelOnly", {
8903        enumerable: true,
8904        get: function() {
8905          return splitAtTopLevelOnly2;
8906        }
8907      });
8908      function splitAtTopLevelOnly2(input, separator) {
8909        let stack = [];
8910        let parts = [];
8911        let lastPos = 0;
8912        let isEscaped = false;
8913        for (let idx = 0; idx < input.length; idx++) {
8914          let char = input[idx];
8915          if (stack.length === 0 && char === separator[0] && !isEscaped) {
8916            if (separator.length === 1 || input.slice(idx, idx + separator.length) === separator) {
8917              parts.push(input.slice(lastPos, idx));
8918              lastPos = idx + separator.length;
8919            }
8920          }
8921          isEscaped = isEscaped ? false : char === "\\";
8922          if (char === "(" || char === "[" || char === "{") {
8923            stack.push(char);
8924          } else if (char === ")" && stack[stack.length - 1] === "(" || char === "]" && stack[stack.length - 1] === "[" || char === "}" && stack[stack.length - 1] === "{") {
8925            stack.pop();
8926          }
8927        }
8928        parts.push(input.slice(lastPos));
8929        return parts;
8930      }
8931    })(splitAtTopLevelOnly);
8932    return splitAtTopLevelOnly;
8933  }
8934  var hasRequiredParseBoxShadowValue;
8935  function requireParseBoxShadowValue() {
8936    if (hasRequiredParseBoxShadowValue) return parseBoxShadowValue;
8937    hasRequiredParseBoxShadowValue = 1;
8938    (function(exports) {
8939      Object.defineProperty(exports, "__esModule", {
8940        value: true
8941      });
8942      function _export(target, all2) {
8943        for (var name in all2) Object.defineProperty(target, name, {
8944          enumerable: true,
8945          get: all2[name]
8946        });
8947      }
8948      _export(exports, {
8949        parseBoxShadowValue: function() {
8950          return parseBoxShadowValue2;
8951        },
8952        formatBoxShadowValue: function() {
8953          return formatBoxShadowValue;
8954        }
8955      });
8956      const _splitAtTopLevelOnly = requireSplitAtTopLevelOnly();
8957      let KEYWORDS = /* @__PURE__ */ new Set([
8958        "inset",
8959        "inherit",
8960        "initial",
8961        "revert",
8962        "unset"
8963      ]);
8964      let SPACE = /\ +(?![^(]*\))/g;
8965      let LENGTH = /^-?(\d+|\.\d+)(.*?)$/g;
8966      function parseBoxShadowValue2(input) {
8967        let shadows = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(input, ",");
8968        return shadows.map((shadow) => {
8969          let value = shadow.trim();
8970          let result = {
8971            raw: value
8972          };
8973          let parts = value.split(SPACE);
8974          let seen = /* @__PURE__ */ new Set();
8975          for (let part of parts) {
8976            LENGTH.lastIndex = 0;
8977            if (!seen.has("KEYWORD") && KEYWORDS.has(part)) {
8978              result.keyword = part;
8979              seen.add("KEYWORD");
8980            } else if (LENGTH.test(part)) {
8981              if (!seen.has("X")) {
8982                result.x = part;
8983                seen.add("X");
8984              } else if (!seen.has("Y")) {
8985                result.y = part;
8986                seen.add("Y");
8987              } else if (!seen.has("BLUR")) {
8988                result.blur = part;
8989                seen.add("BLUR");
8990              } else if (!seen.has("SPREAD")) {
8991                result.spread = part;
8992                seen.add("SPREAD");
8993              }
8994            } else {
8995              if (!result.color) {
8996                result.color = part;
8997              } else {
8998                if (!result.unknown) result.unknown = [];
8999                result.unknown.push(part);
9000              }
9001            }
9002          }
9003          result.valid = result.x !== void 0 && result.y !== void 0;
9004          return result;
9005        });
9006      }
9007      function formatBoxShadowValue(shadows) {
9008        return shadows.map((shadow) => {
9009          if (!shadow.valid) {
9010            return shadow.raw;
9011          }
9012          return [
9013            shadow.keyword,
9014            shadow.x,
9015            shadow.y,
9016            shadow.blur,
9017            shadow.spread,
9018            shadow.color
9019          ].filter(Boolean).join(" ");
9020        }).join(", ");
9021      }
9022    })(parseBoxShadowValue);
9023    return parseBoxShadowValue;
9024  }
9025  var hasRequiredDataTypes;
9026  function requireDataTypes() {
9027    if (hasRequiredDataTypes) return dataTypes;
9028    hasRequiredDataTypes = 1;
9029    (function(exports) {
9030      Object.defineProperty(exports, "__esModule", {
9031        value: true
9032      });
9033      function _export(target, all2) {
9034        for (var name in all2) Object.defineProperty(target, name, {
9035          enumerable: true,
9036          get: all2[name]
9037        });
9038      }
9039      _export(exports, {
9040        normalize: function() {
9041          return normalize2;
9042        },
9043        normalizeAttributeSelectors: function() {
9044          return normalizeAttributeSelectors;
9045        },
9046        url: function() {
9047          return url;
9048        },
9049        number: function() {
9050          return number;
9051        },
9052        percentage: function() {
9053          return percentage;
9054        },
9055        length: function() {
9056          return length;
9057        },
9058        lineWidth: function() {
9059          return lineWidth;
9060        },
9061        shadow: function() {
9062          return shadow;
9063        },
9064        color: function() {
9065          return color2;
9066        },
9067        image: function() {
9068          return image;
9069        },
9070        gradient: function() {
9071          return gradient;
9072        },
9073        position: function() {
9074          return position;
9075        },
9076        familyName: function() {
9077          return familyName;
9078        },
9079        genericName: function() {
9080          return genericName;
9081        },
9082        absoluteSize: function() {
9083          return absoluteSize;
9084        },
9085        relativeSize: function() {
9086          return relativeSize;
9087        }
9088      });
9089      const _color = requireColor();
9090      const _parseBoxShadowValue = requireParseBoxShadowValue();
9091      const _splitAtTopLevelOnly = requireSplitAtTopLevelOnly();
9092      let cssFunctions = [
9093        "min",
9094        "max",
9095        "clamp",
9096        "calc"
9097      ];
9098      function isCSSFunction(value) {
9099        return cssFunctions.some((fn) => new RegExp(`^${fn}\\(.*\\)`).test(value));
9100      }
9101      const AUTO_VAR_INJECTION_EXCEPTIONS = /* @__PURE__ */ new Set([
9102        // Concrete properties
9103        "scroll-timeline-name",
9104        "timeline-scope",
9105        "view-timeline-name",
9106        "font-palette",
9107        "anchor-name",
9108        "anchor-scope",
9109        "position-anchor",
9110        "position-try-options",
9111        // Shorthand properties
9112        "scroll-timeline",
9113        "animation-timeline",
9114        "view-timeline",
9115        "position-try"
9116      ]);
9117      function normalize2(value, context = null, isRoot = true) {
9118        let isVarException = context && AUTO_VAR_INJECTION_EXCEPTIONS.has(context.property);
9119        if (value.startsWith("--") && !isVarException) {
9120          return `var(${value})`;
9121        }
9122        if (value.includes("url(")) {
9123          return value.split(/(url\(.*?\))/g).filter(Boolean).map((part) => {
9124            if (/^url\(.*?\)$/.test(part)) {
9125              return part;
9126            }
9127            return normalize2(part, context, false);
9128          }).join("");
9129        }
9130        value = value.replace(/([^\\])_+/g, (fullMatch, characterBefore) => characterBefore + " ".repeat(fullMatch.length - 1)).replace(/^_/g, " ").replace(/\\_/g, "_");
9131        if (isRoot) {
9132          value = value.trim();
9133        }
9134        value = normalizeMathOperatorSpacing(value);
9135        return value;
9136      }
9137      function normalizeAttributeSelectors(value) {
9138        if (value.includes("=")) {
9139          value = value.replace(/(=.*)/g, (_fullMatch, match) => {
9140            if (match[1] === "'" || match[1] === '"') {
9141              return match;
9142            }
9143            if (match.length > 2) {
9144              let trailingCharacter = match[match.length - 1];
9145              if (match[match.length - 2] === " " && (trailingCharacter === "i" || trailingCharacter === "I" || trailingCharacter === "s" || trailingCharacter === "S")) {
9146                return `="${match.slice(1, -2)}" ${match[match.length - 1]}`;
9147              }
9148            }
9149            return `="${match.slice(1)}"`;
9150          });
9151        }
9152        return value;
9153      }
9154      function normalizeMathOperatorSpacing(value) {
9155        let preventFormattingInFunctions = [
9156          "theme"
9157        ];
9158        let preventFormattingKeywords = [
9159          "min-content",
9160          "max-content",
9161          "fit-content",
9162          // Env
9163          "safe-area-inset-top",
9164          "safe-area-inset-right",
9165          "safe-area-inset-bottom",
9166          "safe-area-inset-left",
9167          "titlebar-area-x",
9168          "titlebar-area-y",
9169          "titlebar-area-width",
9170          "titlebar-area-height",
9171          "keyboard-inset-top",
9172          "keyboard-inset-right",
9173          "keyboard-inset-bottom",
9174          "keyboard-inset-left",
9175          "keyboard-inset-width",
9176          "keyboard-inset-height",
9177          "radial-gradient",
9178          "linear-gradient",
9179          "conic-gradient",
9180          "repeating-radial-gradient",
9181          "repeating-linear-gradient",
9182          "repeating-conic-gradient",
9183          "anchor-size"
9184        ];
9185        return value.replace(/(calc|min|max|clamp)\(.+\)/g, (match) => {
9186          let result = "";
9187          function lastChar() {
9188            let char = result.trimEnd();
9189            return char[char.length - 1];
9190          }
9191          for (let i2 = 0; i2 < match.length; i2++) {
9192            let peek = function(word) {
9193              return word.split("").every((char2, j) => match[i2 + j] === char2);
9194            }
9194, consumeUntil = function(chars) {
9195              let minIndex = Infinity;
9196              for (let char2 of chars) {
9197                let index = match.indexOf(char2, i2);
9198                if (index !== -1 && index < minIndex) {
9199                  minIndex = index;
9200                }
9201              }
9202              let result2 = match.slice(i2, minIndex);
9203              i2 += result2.length - 1;
9204              return result2;
9205            };
9206            let char = match[i2];
9207            if (peek("var")) {
9208              result += consumeUntil([
9209                ")",
9210                ","
9211              ]);
9212            } else if (preventFormattingKeywords.some((keyword) => peek(keyword))) {
9213              let keyword = preventFormattingKeywords.find((keyword2) => peek(keyword2));
9214              result += keyword;
9215              i2 += keyword.length - 1;
9216            } else if (preventFormattingInFunctions.some((fn) => peek(fn))) {
9217              result += consumeUntil([
9218                ")"
9219              ]);
9220            } else if (peek("[")) {
9221              result += consumeUntil([
9222                "]"
9223              ]);
9224            } else if ([
9225              "+",
9226              "-",
9227              "*",
9228              "/"
9229            ].includes(char) && ![
9230              "(",
9231              "+",
9232              "-",
9233              "*",
9234              "/",
9235              ","
9236            ].includes(lastChar())) {
9237              result += ` ${char} `;
9238            } else {
9239              result += char;
9240            }
9241          }
9242          return result.replace(/\s+/g, " ");
9243        });
9244      }
9245      function url(value) {
9246        return value.startsWith("url(");
9247      }
9248      function number(value) {
9249        return !isNaN(Number(value)) || isCSSFunction(value);
9250      }
9251      function percentage(value) {
9252        return value.endsWith("%") && number(value.slice(0, -1)) || isCSSFunction(value);
9253      }
9254      let lengthUnits = [
9255        "cm",
9256        "mm",
9257        "Q",
9258        "in",
9259        "pc",
9260        "pt",
9261        "px",
9262        "em",
9263        "ex",
9264        "ch",
9265        "rem",
9266        "lh",
9267        "rlh",
9268        "vw",
9269        "vh",
9270        "vmin",
9271        "vmax",
9272        "vb",
9273        "vi",
9274        "svw",
9275        "svh",
9276        "lvw",
9277        "lvh",
9278        "dvw",
9279        "dvh",
9280        "cqw",
9281        "cqh",
9282        "cqi",
9283        "cqb",
9284        "cqmin",
9285        "cqmax"
9286      ];
9287      let lengthUnitsPattern = `(?:${lengthUnits.join("|")})`;
9288      function length(value) {
9289        return value === "0" || new RegExp(`^[+-]?[0-9]*.?[0-9]+(?:[eE][+-]?[0-9]+)?${lengthUnitsPattern}$`).test(value) || isCSSFunction(value);
9290      }
9291      let lineWidths = /* @__PURE__ */ new Set([
9292        "thin",
9293        "medium",
9294        "thick"
9295      ]);
9296      function lineWidth(value) {
9297        return lineWidths.has(value);
9298      }
9299      function shadow(value) {
9300        let parsedShadows = (0, _parseBoxShadowValue.parseBoxShadowValue)(normalize2(value));
9301        for (let parsedShadow of parsedShadows) {
9302          if (!parsedShadow.valid) {
9303            return false;
9304          }
9305        }
9306        return true;
9307      }
9308      function color2(value) {
9309        let colors2 = 0;
9310        let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, "_").every((part) => {
9311          part = normalize2(part);
9312          if (part.startsWith("var(")) return true;
9313          if ((0, _color.parseColor)(part, {
9314            loose: true
9315          }) !== null) return colors2++, true;
9316          return false;
9317        });
9318        if (!result) return false;
9319        return colors2 > 0;
9320      }
9321      function image(value) {
9322        let images = 0;
9323        let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, ",").every((part) => {
9324          part = normalize2(part);
9325          if (part.startsWith("var(")) return true;
9326          if (url(part) || gradient(part) || [
9327            "element(",
9328            "image(",
9329            "cross-fade(",
9330            "image-set("
9331          ].some((fn) => part.startsWith(fn))) {
9332            images++;
9333            return true;
9334          }
9335          return false;
9336        });
9337        if (!result) return false;
9338        return images > 0;
9339      }
9340      let gradientTypes = /* @__PURE__ */ new Set([
9341        "conic-gradient",
9342        "linear-gradient",
9343        "radial-gradient",
9344        "repeating-conic-gradient",
9345        "repeating-linear-gradient",
9346        "repeating-radial-gradient"
9347      ]);
9348      function gradient(value) {
9349        value = normalize2(value);
9350        for (let type of gradientTypes) {
9351          if (value.startsWith(`${type}(`)) {
9352            return true;
9353          }
9354        }
9355        return false;
9356      }
9357      let validPositions = /* @__PURE__ */ new Set([
9358        "center",
9359        "top",
9360        "right",
9361        "bottom",
9362        "left"
9363      ]);
9364      function position(value) {
9365        let positions = 0;
9366        let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, "_").every((part) => {
9367          part = normalize2(part);
9368          if (part.startsWith("var(")) return true;
9369          if (validPositions.has(part) || length(part) || percentage(part)) {
9370            positions++;
9371            return true;
9372          }
9373          return false;
9374        });
9375        if (!result) return false;
9376        return positions > 0;
9377      }
9378      function familyName(value) {
9379        let fonts = 0;
9380        let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, ",").every((part) => {
9381          part = normalize2(part);
9382          if (part.startsWith("var(")) return true;
9383          if (part.includes(" ")) {
9384            if (!/(['"])([^"']+)\1/g.test(part)) {
9385              return false;
9386            }
9387          }
9388          if (/^\d/g.test(part)) {
9389            return false;
9390          }
9391          fonts++;
9392          return true;
9393        });
9394        if (!result) return false;
9395        return fonts > 0;
9396      }
9397      let genericNames = /* @__PURE__ */ new Set([
9398        "serif",
9399        "sans-serif",
9400        "monospace",
9401        "cursive",
9402        "fantasy",
9403        "system-ui",
9404        "ui-serif",
9405        "ui-sans-serif",
9406        "ui-monospace",
9407        "ui-rounded",
9408        "math",
9409        "emoji",
9410        "fangsong"
9411      ]);
9412      function genericName(value) {
9413        return genericNames.has(value);
9414      }
9415      let absoluteSizes = /* @__PURE__ */ new Set([
9416        "xx-small",
9417        "x-small",
9418        "small",
9419        "medium",
9420        "large",
9421        "x-large",
9422        "xx-large",
9423        "xxx-large"
9424      ]);
9425      function absoluteSize(value) {
9426        return absoluteSizes.has(value);
9427      }
9428      let relativeSizes = /* @__PURE__ */ new Set([
9429        "larger",
9430        "smaller"
9431      ]);
9432      function relativeSize(value) {
9433        return relativeSizes.has(value);
9434      }
9435    })(dataTypes);
9436    return dataTypes;
9437  }
9438  var validateFormalSyntax = {};
9439  var hasRequiredValidateFormalSyntax;
9440  function requireValidateFormalSyntax() {
9441    if (hasRequiredValidateFormalSyntax) return validateFormalSyntax;
9442    hasRequiredValidateFormalSyntax = 1;
9443    (function(exports) {
9444      Object.defineProperty(exports, "__esModule", {
9445        value: true
9446      });
9447      Object.defineProperty(exports, "backgroundSize", {
9448        enumerable: true,
9449        get: function() {
9450          return backgroundSize;
9451        }
9452      });
9453      const _dataTypes = requireDataTypes();
9454      const _splitAtTopLevelOnly = requireSplitAtTopLevelOnly();
9455      function backgroundSize(value) {
9456        let keywordValues = [
9457          "cover",
9458          "contain"
9459        ];
9460        return (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, ",").every((part) => {
9461          let sizes = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(part, "_").filter(Boolean);
9462          if (sizes.length === 1 && keywordValues.includes(sizes[0])) return true;
9463          if (sizes.length !== 1 && sizes.length !== 2) return false;
9464          return sizes.every((size) => (0, _dataTypes.length)(size) || (0, _dataTypes.percentage)(size) || size === "auto");
9465        });
9466      }
9467    })(validateFormalSyntax);
9468    return validateFormalSyntax;
9469  }
9470  var hasRequiredPluginUtils;
9471  function requirePluginUtils() {
9472    if (hasRequiredPluginUtils) return pluginUtils;
9473    hasRequiredPluginUtils = 1;
9474    (function(exports) {
9475      Object.defineProperty(exports, "__esModule", {
9476        value: true
9477      });
9478      function _export(target, all2) {
9479        for (var name in all2) Object.defineProperty(target, name, {
9480          enumerable: true,
9481          get: all2[name]
9482        });
9483      }
9484      _export(exports, {
9485        updateAllClasses: function() {
9486          return updateAllClasses;
9487        },
9488        asValue: function() {
9489          return asValue;
9490        },
9491        parseColorFormat: function() {
9492          return parseColorFormat;
9493        },
9494        asColor: function() {
9495          return asColor;
9496        },
9497        asLookupValue: function() {
9498          return asLookupValue;
9499        },
9500        typeMap: function() {
9501          return typeMap;
9502        },
9503        coerceValue: function() {
9504          return coerceValue;
9505        },
9506        getMatchingTypes: function() {
9507          return getMatchingTypes;
9508        }
9509      });
9510      const _escapeCommas = /* @__PURE__ */ _interop_require_default(requireEscapeCommas());
9511      const _withAlphaVariable = requireWithAlphaVariable();
9512      const _dataTypes = requireDataTypes();
9513      const _negateValue = /* @__PURE__ */ _interop_require_default(requireNegateValue());
9514      const _validateFormalSyntax = requireValidateFormalSyntax();
9515      const _featureFlags = requireFeatureFlags();
9516      function _interop_require_default(obj) {
9517        return obj && obj.__esModule ? obj : {
9518          default: obj
9519        };
9520      }
9521      function updateAllClasses(selectors, updateClass) {
9522        selectors.walkClasses((sel) => {
9523          sel.value = updateClass(sel.value);
9524          if (sel.raws && sel.raws.value) {
9525            sel.raws.value = (0, _escapeCommas.default)(sel.raws.value);
9526          }
9527        });
9528      }
9529      function resolveArbitraryValue(modifier, validate) {
9530        if (!isArbitraryValue(modifier)) {
9531          return void 0;
9532        }
9533        let value = modifier.slice(1, -1);
9534        if (!validate(value)) {
9535          return void 0;
9536        }
9537        return (0, _dataTypes.normalize)(value);
9538      }
9539      function asNegativeValue(modifier, lookup = {}, validate) {
9540        let positiveValue = lookup[modifier];
9541        if (positiveValue !== void 0) {
9542          return (0, _negateValue.default)(positiveValue);
9543        }
9544        if (isArbitraryValue(modifier)) {
9545          let resolved = resolveArbitraryValue(modifier, validate);
9546          if (resolved === void 0) {
9547            return void 0;
9548          }
9549          return (0, _negateValue.default)(resolved);
9550        }
9551      }
9552      function asValue(modifier, options = {}, { validate = () => true } = {}) {
9553        var _options_values;
9554        let value = (_options_values = options.values) === null || _options_values === void 0 ? void 0 : _options_values[modifier];
9555        if (value !== void 0) {
9556          return value;
9557        }
9558        if (options.supportsNegativeValues && modifier.startsWith("-")) {
9559          return asNegativeValue(modifier.slice(1), options.values, validate);
9560        }
9561        return resolveArbitraryValue(modifier, validate);
9562      }
9563      function isArbitraryValue(input) {
9564        return input.startsWith("[") && input.endsWith("]");
9565      }
9566      function splitUtilityModifier(modifier) {
9567        let slashIdx = modifier.lastIndexOf("/");
9568        let arbitraryStartIdx = modifier.lastIndexOf("[", slashIdx);
9569        let arbitraryEndIdx = modifier.indexOf("]", slashIdx);
9570        let isNextToArbitrary = modifier[slashIdx - 1] === "]" || modifier[slashIdx + 1] === "[";
9571        if (!isNextToArbitrary) {
9572          if (arbitraryStartIdx !== -1 && arbitraryEndIdx !== -1) {
9573            if (arbitraryStartIdx < slashIdx && slashIdx < arbitraryEndIdx) {
9574              slashIdx = modifier.lastIndexOf("/", arbitraryStartIdx);
9575            }
9576          }
9577        }
9578        if (slashIdx === -1 || slashIdx === modifier.length - 1) {
9579          return [
9580            modifier,
9581            void 0
9582          ];
9583        }
9584        let arbitrary = isArbitraryValue(modifier);
9585        if (arbitrary && !modifier.includes("]/[")) {
9586          return [
9587            modifier,
9588            void 0
9589          ];
9590        }
9591        return [
9592          modifier.slice(0, slashIdx),
9593          modifier.slice(slashIdx + 1)
9594        ];
9595      }
9596      function parseColorFormat(value) {
9597        if (typeof value === "string" && value.includes("<alpha-value>")) {
9598          let oldValue = value;
9599          return ({ opacityValue = 1 }) => oldValue.replace(/<alpha-value>/g, opacityValue);
9600        }
9601        return value;
9602      }
9603      function unwrapArbitraryModifier(modifier) {
9604        return (0, _dataTypes.normalize)(modifier.slice(1, -1));
9605      }
9606      function asColor(modifier, options = {}, { tailwindConfig = {} } = {}) {
9607        var _options_values;
9608        if (((_options_values = options.values) === null || _options_values === void 0 ? void 0 : _options_values[modifier]) !== void 0) {
9609          var _options_values1;
9610          return parseColorFormat((_options_values1 = options.values) === null || _options_values1 === void 0 ? void 0 : _options_values1[modifier]);
9611        }
9612        let [color2, alpha] = splitUtilityModifier(modifier);
9613        if (alpha !== void 0) {
9614          var _options_values2, _tailwindConfig_theme, _tailwindConfig_theme_opacity;
9615          var _options_values_color;
9616          let normalizedColor = (_options_values_color = (_options_values2 = options.values) === null || _options_values2 === void 0 ? void 0 : _options_values2[color2]) !== null && _options_values_color !== void 0 ? _options_values_color : isArbitraryValue(color2) ? color2.slice(1, -1) : void 0;
9617          if (normalizedColor === void 0) {
9618            return void 0;
9619          }
9620          normalizedColor = parseColorFormat(normalizedColor);
9621          if (isArbitraryValue(alpha)) {
9622            return (0, _withAlphaVariable.withAlphaValue)(normalizedColor, unwrapArbitraryModifier(alpha));
9623          }
9624          if (((_tailwindConfig_theme = tailwindConfig.theme) === null || _tailwindConfig_theme === void 0 ? void 0 : (_tailwindConfig_theme_opacity = _tailwindConfig_theme.opacity) === null || _tailwindConfig_theme_opacity === void 0 ? void 0 : _tailwindConfig_theme_opacity[alpha]) === void 0) {
9625            return void 0;
9626          }
9627          return (0, _withAlphaVariable.withAlphaValue)(normalizedColor, tailwindConfig.theme.opacity[alpha]);
9628        }
9629        return asValue(modifier, options, {
9630          validate: _dataTypes.color
9631        });
9632      }
9633      function asLookupValue(modifier, options = {}) {
9634        var _options_values;
9635        return (_options_values = options.values) === null || _options_values === void 0 ? void 0 : _options_values[modifier];
9636      }
9637      function guess(validate) {
9638        return (modifier, options) => {
9639          return asValue(modifier, options, {
9640            validate
9641          });
9642        };
9643      }
9644      let typeMap = {
9645        any: asValue,
9646        color: asColor,
9647        url: guess(_dataTypes.url),
9648        image: guess(_dataTypes.image),
9649        length: guess(_dataTypes.length),
9650        percentage: guess(_dataTypes.percentage),
9651        position: guess(_dataTypes.position),
9652        lookup: asLookupValue,
9653        "generic-name": guess(_dataTypes.genericName),
9654        "family-name": guess(_dataTypes.familyName),
9655        number: guess(_dataTypes.number),
9656        "line-width": guess(_dataTypes.lineWidth),
9657        "absolute-size": guess(_dataTypes.absoluteSize),
9658        "relative-size": guess(_dataTypes.relativeSize),
9659        shadow: guess(_dataTypes.shadow),
9660        size: guess(_validateFormalSyntax.backgroundSize)
9661      };
9662      let supportedTypes = Object.keys(typeMap);
9663      function splitAtFirst(input, delim) {
9664        let idx = input.indexOf(delim);
9665        if (idx === -1) return [
9666          void 0,
9667          input
9668        ];
9669        return [
9670          input.slice(0, idx),
9671          input.slice(idx + 1)
9672        ];
9673      }
9674      function coerceValue(types, modifier, options, tailwindConfig) {
9675        if (options.values && modifier in options.values) {
9676          for (let { type } of types !== null && types !== void 0 ? types : []) {
9677            let result = typeMap[type](modifier, options, {
9678              tailwindConfig
9679            });
9680            if (result === void 0) {
9681              continue;
9682            }
9683            return [
9684              result,
9685              type,
9686              null
9687            ];
9688          }
9689        }
9690        if (isArbitraryValue(modifier)) {
9691          let arbitraryValue = modifier.slice(1, -1);
9692          let [explicitType, value] = splitAtFirst(arbitraryValue, ":");
9693          if (!/^[\w-_]+$/g.test(explicitType)) {
9694            value = arbitraryValue;
9695          } else if (explicitType !== void 0 && !supportedTypes.includes(explicitType)) {
9696            return [];
9697          }
9698          if (value.length > 0 && supportedTypes.includes(explicitType)) {
9699            return [
9700              asValue(`[${value}]`, options),
9701              explicitType,
9702              null
9703            ];
9704          }
9705        }
9706        let matches = getMatchingTypes(types, modifier, options, tailwindConfig);
9707        for (let match of matches) {
9708          return match;
9709        }
9710        return [];
9711      }
9712      function* getMatchingTypes(types, rawModifier, options, tailwindConfig) {
9713        let modifiersEnabled = (0, _featureFlags.flagEnabled)(tailwindConfig, "generalizedModifiers");
9714        let [modifier, utilityModifier] = splitUtilityModifier(rawModifier);
9715        let canUseUtilityModifier = modifiersEnabled && options.modifiers != null && (options.modifiers === "any" || typeof options.modifiers === "object" && (utilityModifier && isArbitraryValue(utilityModifier) || utilityModifier in options.modifiers));
9716        if (!canUseUtilityModifier) {
9717          modifier = rawModifier;
9718          utilityModifier = void 0;
9719        }
9720        if (utilityModifier !== void 0 && modifier === "") {
9721          modifier = "DEFAULT";
9722        }
9723        if (utilityModifier !== void 0) {
9724          if (typeof options.modifiers === "object") {
9725            var _options_modifiers;
9726            var _options_modifiers_utilityModifier;
9727            let configValue = (_options_modifiers_utilityModifier = (_options_modifiers = options.modifiers) === null || _options_modifiers === void 0 ? void 0 : _options_modifiers[utilityModifier]) !== null && _options_modifiers_utilityModifier !== void 0 ? _options_modifiers_utilityModifier : null;
9728            if (configValue !== null) {
9729              utilityModifier = configValue;
9730            } else if (isArbitraryValue(utilityModifier)) {
9731              utilityModifier = unwrapArbitraryModifier(utilityModifier);
9732            }
9733          }
9734        }
9735        for (let { type } of types !== null && types !== void 0 ? types : []) {
9736          let result = typeMap[type](modifier, options, {
9737            tailwindConfig
9738          });
9739          if (result === void 0) {
9740            continue;
9741          }
9742          yield [
9743            result,
9744            type,
9745            utilityModifier !== null && utilityModifier !== void 0 ? utilityModifier : null
9746          ];
9747        }
9748      }
9749    })(pluginUtils);
9750    return pluginUtils;
9751  }
9752  var toColorValue = {};
9753  var hasRequiredToColorValue;
9754  function requireToColorValue() {
9755    if (hasRequiredToColorValue) return toColorValue;
9756    hasRequiredToColorValue = 1;
9757    (function(exports) {
9758      Object.defineProperty(exports, "__esModule", {
9759        value: true
9760      });
9761      Object.defineProperty(exports, "default", {
9762        enumerable: true,
9763        get: function() {
9764          return toColorValue2;
9765        }
9766      });
9767      function toColorValue2(maybeFunction) {
9768        return typeof maybeFunction === "function" ? maybeFunction({}) : maybeFunction;
9769      }
9770    })(toColorValue);
9771    return toColorValue;
9772  }
9773  var hasRequiredResolveConfig$2;
9774  function requireResolveConfig$2() {
9775    if (hasRequiredResolveConfig$2) return resolveConfig;
9776    hasRequiredResolveConfig$2 = 1;
9777    (function(exports) {
9778      Object.defineProperty(exports, "__esModule", {
9779        value: true
9780      });
9781      Object.defineProperty(exports, "default", {
9782        enumerable: true,
9783        get: function() {
9784          return resolveConfig2;
9785        }
9786      });
9787      const _negateValue = /* @__PURE__ */ _interop_require_default(requireNegateValue());
9788      const _corePluginList = /* @__PURE__ */ _interop_require_default(requireCorePluginList());
9789      const _configurePlugins = /* @__PURE__ */ _interop_require_default(requireConfigurePlugins());
9790      const _colors = /* @__PURE__ */ _interop_require_default(requireColors());
9791      const _defaults2 = requireDefaults();
9792      const _toPath = requireToPath();
9793      const _normalizeConfig = requireNormalizeConfig();
9794      const _isPlainObject = /* @__PURE__ */ _interop_require_default(requireIsPlainObject());
9795      const _cloneDeep = requireCloneDeep();
9796      const _pluginUtils = requirePluginUtils();
9797      const _withAlphaVariable = requireWithAlphaVariable();
9798      const _toColorValue = /* @__PURE__ */ _interop_require_default(requireToColorValue());
9799      function _interop_require_default(obj) {
9800        return obj && obj.__esModule ? obj : {
9801          default: obj
9802        };
9803      }
9804      function isFunction2(input) {
9805        return typeof input === "function";
9806      }
9807      function mergeWith(target, ...sources) {
9808        let customizer = sources.pop();
9809        for (let source of sources) {
9810          for (let k in source) {
9811            let merged = customizer(target[k], source[k]);
9812            if (merged === void 0) {
9813              if ((0, _isPlainObject.default)(target[k]) && (0, _isPlainObject.default)(source[k])) {
9814                target[k] = mergeWith({}, target[k], source[k], customizer);
9815              } else {
9816                target[k] = source[k];
9817              }
9818            } else {
9819              target[k] = merged;
9820            }
9821          }
9822        }
9823        return target;
9824      }
9825      const configUtils = {
9826        colors: _colors.default,
9827        negative(scale) {
9828          return Object.keys(scale).filter((key) => scale[key] !== "0").reduce((negativeScale, key) => {
9829            let negativeValue = (0, _negateValue.default)(scale[key]);
9830            if (negativeValue !== void 0) {
9831              negativeScale[`-${key}`] = negativeValue;
9832            }
9833            return negativeScale;
9834          }, {});
9835        },
9836        breakpoints(screens) {
9837          return Object.keys(screens).filter((key) => typeof screens[key] === "string").reduce((breakpoints, key) => ({
9838            ...breakpoints,
9839            [`screen-${key}`]: screens[key]
9840          }), {});
9841        }
9842      };
9843      function value(valueToResolve, ...args) {
9844        return isFunction2(valueToResolve) ? valueToResolve(...args) : valueToResolve;
9845      }
9846      function collectExtends(items) {
9847        return items.reduce((merged, { extend: extend2 }) => {
9848          return mergeWith(merged, extend2, (mergedValue, extendValue) => {
9849            if (mergedValue === void 0) {
9850              return [
9851                extendValue
9852              ];
9853            }
9854            if (Array.isArray(mergedValue)) {
9855              return [
9856                extendValue,
9857                ...mergedValue
9858              ];
9859            }
9860            return [
9861              extendValue,
9862              mergedValue
9863            ];
9864          });
9865        }, {});
9866      }
9867      function mergeThemes(themes) {
9868        return {
9869          ...themes.reduce((merged, theme) => (0, _defaults2.defaults)(merged, theme), {}),
9870          // In order to resolve n config objects, we combine all of their `extend` properties
9871          // into arrays instead of objects so they aren't overridden.
9872          extend: collectExtends(themes)
9873        };
9874      }
9875      function mergeExtensionCustomizer(merged, value2) {
9876        if (Array.isArray(merged) && (0, _isPlainObject.default)(merged[0])) {
9877          return merged.concat(value2);
9878        }
9879        if (Array.isArray(value2) && (0, _isPlainObject.default)(value2[0]) && (0, _isPlainObject.default)(merged)) {
9880          return [
9881            merged,
9882            ...value2
9883          ];
9884        }
9885        if (Array.isArray(value2)) {
9886          return value2;
9887        }
9888        return void 0;
9889      }
9890      function mergeExtensions({ extend: extend2, ...theme }) {
9891        return mergeWith(theme, extend2, (themeValue, extensions) => {
9892          if (!isFunction2(themeValue) && !extensions.some(isFunction2)) {
9893            return mergeWith({}, themeValue, ...extensions, mergeExtensionCustomizer);
9894          }
9895          return (resolveThemePath, utils2) => mergeWith({}, ...[
9896            themeValue,
9897            ...extensions
9898          ].map((e) => value(e, resolveThemePath, utils2)), mergeExtensionCustomizer);
9899        });
9900      }
9901      function* toPaths(key) {
9902        let path = (0, _toPath.toPath)(key);
9903        if (path.length === 0) {
9904          return;
9905        }
9906        yield path;
9907        if (Array.isArray(key)) {
9908          return;
9909        }
9910        let pattern = /^(.*?)\s*\/\s*([^/]+)$/;
9911        let matches = key.match(pattern);
9912        if (matches !== null) {
9913          let [, prefix, alpha] = matches;
9914          let newPath = (0, _toPath.toPath)(prefix);
9915          newPath.alpha = alpha;
9916          yield newPath;
9917        }
9918      }
9919      function resolveFunctionKeys(object) {
9920        const resolvePath = (key, defaultValue) => {
9921          for (const path of toPaths(key)) {
9922            let index = 0;
9923            let val = object;
9924            while (val !== void 0 && val !== null && index < path.length) {
9925              val = val[path[index++]];
9926              let shouldResolveAsFn = isFunction2(val) && (path.alpha === void 0 || index <= path.length - 1);
9927              val = shouldResolveAsFn ? val(resolvePath, configUtils) : val;
9928            }
9929            if (val !== void 0) {
9930              if (path.alpha !== void 0) {
9931                let normalized = (0, _pluginUtils.parseColorFormat)(val);
9932                return (0, _withAlphaVariable.withAlphaValue)(normalized, path.alpha, (0, _toColorValue.default)(normalized));
9933              }
9934              if ((0, _isPlainObject.default)(val)) {
9935                return (0, _cloneDeep.cloneDeep)(val);
9936              }
9937              return val;
9938            }
9939          }
9940          return defaultValue;
9941        };
9942        Object.assign(resolvePath, {
9943          theme: resolvePath,
9944          ...configUtils
9945        });
9946        return Object.keys(object).reduce((resolved, key) => {
9947          resolved[key] = isFunction2(object[key]) ? object[key](resolvePath, configUtils) : object[key];
9948          return resolved;
9949        }, {});
9950      }
9951      function extractPluginConfigs(configs) {
9952        let allConfigs = [];
9953        configs.forEach((config) => {
9954          allConfigs = [
9955            ...allConfigs,
9956            config
9957          ];
9958          var _config_plugins;
9959          const plugins = (_config_plugins = config === null || config === void 0 ? void 0 : config.plugins) !== null && _config_plugins !== void 0 ? _config_plugins : [];
9960          if (plugins.length === 0) {
9961            return;
9962          }
9963          plugins.forEach((plugin) => {
9964            if (plugin.__isOptionsFunction) {
9965              plugin = plugin();
9966            }
9967            var _plugin_config;
9968            allConfigs = [
9969              ...allConfigs,
9970              ...extractPluginConfigs([
9971                (_plugin_config = plugin === null || plugin === void 0 ? void 0 : plugin.config) !== null && _plugin_config !== void 0 ? _plugin_config : {}
9972              ])
9973            ];
9974          });
9975        });
9976        return allConfigs;
9977      }
9978      function resolveCorePlugins(corePluginConfigs) {
9979        const result = [
9980          ...corePluginConfigs
9981        ].reduceRight((resolved, corePluginConfig) => {
9982          if (isFunction2(corePluginConfig)) {
9983            return corePluginConfig({
9984              corePlugins: resolved
9985            });
9986          }
9987          return (0, _configurePlugins.default)(corePluginConfig, resolved);
9988        }, _corePluginList.default);
9989        return result;
9990      }
9991      function resolvePluginLists(pluginLists) {
9992        const result = [
9993          ...pluginLists
9994        ].reduceRight((resolved, pluginList) => {
9995          return [
9996            ...resolved,
9997            ...pluginList
9998          ];
9999        }, []);
10000        return result;
10001      }
10002      function resolveConfig2(configs) {
10003        let allConfigs = [
10004          ...extractPluginConfigs(configs),
10005          {
10006            prefix: "",
10007            important: false,
10008            separator: ":"
10009          }
10010        ];
10011        var _t_theme, _c_plugins;
10012        return (0, _normalizeConfig.normalizeConfig)((0, _defaults2.defaults)({
10013          theme: resolveFunctionKeys(mergeExtensions(mergeThemes(allConfigs.map((t2) => {
10014            return (_t_theme = t2 === null || t2 === void 0 ? void 0 : t2.theme) !== null && _t_theme !== void 0 ? _t_theme : {};
10015          })))),
10016          corePlugins: resolveCorePlugins(allConfigs.map((c) => c.corePlugins)),
10017          plugins: resolvePluginLists(configs.map((c) => {
10018            return (_c_plugins = c === null || c === void 0 ? void 0 : c.plugins) !== null && _c_plugins !== void 0 ? _c_plugins : [];
10019          }))
10020        }, ...allConfigs));
10021      }
10022    })(resolveConfig);
10023    return resolveConfig;
10024  }
10025  var getAllConfigs = {};
10026  var config_full;
10027  var hasRequiredConfig_full;
10028  function requireConfig_full() {
10029    if (hasRequiredConfig_full) return config_full;
10030    hasRequiredConfig_full = 1;
10031    config_full = {
10032      content: [],
10033      presets: [],
10034      darkMode: "media",
10035      // or 'class'
10036      theme: {
10037        accentColor: ({ theme }) => ({
10038          ...theme("colors"),
10039          auto: "auto"
10040        }),
10041        animation: {
10042          none: "none",
10043          spin: "spin 1s linear infinite",
10044          ping: "ping 1s cubic-bezier(0, 0, 0.2, 1) infinite",
10045          pulse: "pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite",
10046          bounce: "bounce 1s infinite"
10047        },
10048        aria: {
10049          busy: 'busy="true"',
10050          checked: 'checked="true"',
10051          disabled: 'disabled="true"',
10052          expanded: 'expanded="true"',
10053          hidden: 'hidden="true"',
10054          pressed: 'pressed="true"',
10055          readonly: 'readonly="true"',
10056          required: 'required="true"',
10057          selected: 'selected="true"'
10058        },
10059        aspectRatio: {
10060          auto: "auto",
10061          square: "1 / 1",
10062          video: "16 / 9"
10063        },
10064        backdropBlur: ({ theme }) => theme("blur"),
10065        backdropBrightness: ({ theme }) => theme("brightness"),
10066        backdropContrast: ({ theme }) => theme("contrast"),
10067        backdropGrayscale: ({ theme }) => theme("grayscale"),
10068        backdropHueRotate: ({ theme }) => theme("hueRotate"),
10069        backdropInvert: ({ theme }) => theme("invert"),
10070        backdropOpacity: ({ theme }) => theme("opacity"),
10071        backdropSaturate: ({ theme }) => theme("saturate"),
10072        backdropSepia: ({ theme }) => theme("sepia"),
10073        backgroundColor: ({ theme }) => theme("colors"),
10074        backgroundImage: {
10075          none: "none",
10076          "gradient-to-t": "linear-gradient(to top, var(--tw-gradient-stops))",
10077          "gradient-to-tr": "linear-gradient(to top right, var(--tw-gradient-stops))",
10078          "gradient-to-r": "linear-gradient(to right, var(--tw-gradient-stops))",
10079          "gradient-to-br": "linear-gradient(to bottom right, var(--tw-gradient-stops))",
10080          "gradient-to-b": "linear-gradient(to bottom, var(--tw-gradient-stops))",
10081          "gradient-to-bl": "linear-gradient(to bottom left, var(--tw-gradient-stops))",
10082          "gradient-to-l": "linear-gradient(to left, var(--tw-gradient-stops))",
10083          "gradient-to-tl": "linear-gradient(to top left, var(--tw-gradient-stops))"
10084        },
10085        backgroundOpacity: ({ theme }) => theme("opacity"),
10086        backgroundPosition: {
10087          bottom: "bottom",
10088          center: "center",
10089          left: "left",
10090          "left-bottom": "left bottom",
10091          "left-top": "left top",
10092          right: "right",
10093          "right-bottom": "right bottom",
10094          "right-top": "right top",
10095          top: "top"
10096        },
10097        backgroundSize: {
10098          auto: "auto",
10099          cover: "cover",
10100          contain: "contain"
10101        },
10102        blur: {
10103          0: "0",
10104          none: "",
10105          sm: "4px",
10106          DEFAULT: "8px",
10107          md: "12px",
10108          lg: "16px",
10109          xl: "24px",
10110          "2xl": "40px",
10111          "3xl": "64px"
10112        },
10113        borderColor: ({ theme }) => ({
10114          ...theme("colors"),
10115          DEFAULT: theme("colors.gray.200", "currentColor")
10116        }),
10117        borderOpacity: ({ theme }) => theme("opacity"),
10118        borderRadius: {
10119          none: "0px",
10120          sm: "0.125rem",
10121          DEFAULT: "0.25rem",
10122          md: "0.375rem",
10123          lg: "0.5rem",
10124          xl: "0.75rem",
10125          "2xl": "1rem",
10126          "3xl": "1.5rem",
10127          full: "9999px"
10128        },
10129        borderSpacing: ({ theme }) => ({
10130          ...theme("spacing")
10131        }),
10132        borderWidth: {
10133          DEFAULT: "1px",
10134          0: "0px",
10135          2: "2px",
10136          4: "4px",
10137          8: "8px"
10138        },
10139        boxShadow: {
10140          sm: "0 1px 2px 0 rgb(0 0 0 / 0.05)",
10141          DEFAULT: "0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",
10142          md: "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",
10143          lg: "0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",
10144          xl: "0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)",
10145          "2xl": "0 25px 50px -12px rgb(0 0 0 / 0.25)",
10146          inner: "inset 0 2px 4px 0 rgb(0 0 0 / 0.05)",
10147          none: "none"
10148        },
10149        boxShadowColor: ({ theme }) => theme("colors"),
10150        brightness: {
10151          0: "0",
10152          50: ".5",
vendor: 12,662 bytes, lines 10153-10606
10153          75: ".75",
10154          90: ".9",
10155          95: ".95",
10156          100: "1",
10157          105: "1.05",
10158          110: "1.1",
10159          125: "1.25",
10160          150: "1.5",
10161          200: "2"
10162        },
10163        caretColor: ({ theme }) => theme("colors"),
10164        colors: ({ colors: colors2 }) => ({
10165          inherit: colors2.inherit,
10166          current: colors2.current,
10167          transparent: colors2.transparent,
10168          black: colors2.black,
10169          white: colors2.white,
10170          slate: colors2.slate,
10171          gray: colors2.gray,
10172          zinc: colors2.zinc,
10173          neutral: colors2.neutral,
10174          stone: colors2.stone,
10175          red: colors2.red,
10176          orange: colors2.orange,
10177          amber: colors2.amber,
10178          yellow: colors2.yellow,
10179          lime: colors2.lime,
10180          green: colors2.green,
10181          emerald: colors2.emerald,
10182          teal: colors2.teal,
10183          cyan: colors2.cyan,
10184          sky: colors2.sky,
10185          blue: colors2.blue,
10186          indigo: colors2.indigo,
10187          violet: colors2.violet,
10188          purple: colors2.purple,
10189          fuchsia: colors2.fuchsia,
10190          pink: colors2.pink,
10191          rose: colors2.rose
10192        }),
10193        columns: {
10194          auto: "auto",
10195          1: "1",
10196          2: "2",
10197          3: "3",
10198          4: "4",
10199          5: "5",
10200          6: "6",
10201          7: "7",
10202          8: "8",
10203          9: "9",
10204          10: "10",
10205          11: "11",
10206          12: "12",
10207          "3xs": "16rem",
10208          "2xs": "18rem",
10209          xs: "20rem",
10210          sm: "24rem",
10211          md: "28rem",
10212          lg: "32rem",
10213          xl: "36rem",
10214          "2xl": "42rem",
10215          "3xl": "48rem",
10216          "4xl": "56rem",
10217          "5xl": "64rem",
10218          "6xl": "72rem",
10219          "7xl": "80rem"
10220        },
10221        container: {},
10222        content: {
10223          none: "none"
10224        },
10225        contrast: {
10226          0: "0",
10227          50: ".5",
10228          75: ".75",
10229          100: "1",
10230          125: "1.25",
10231          150: "1.5",
10232          200: "2"
10233        },
10234        cursor: {
10235          auto: "auto",
10236          default: "default",
10237          pointer: "pointer",
10238          wait: "wait",
10239          text: "text",
10240          move: "move",
10241          help: "help",
10242          "not-allowed": "not-allowed",
10243          none: "none",
10244          "context-menu": "context-menu",
10245          progress: "progress",
10246          cell: "cell",
10247          crosshair: "crosshair",
10248          "vertical-text": "vertical-text",
10249          alias: "alias",
10250          copy: "copy",
10251          "no-drop": "no-drop",
10252          grab: "grab",
10253          grabbing: "grabbing",
10254          "all-scroll": "all-scroll",
10255          "col-resize": "col-resize",
10256          "row-resize": "row-resize",
10257          "n-resize": "n-resize",
10258          "e-resize": "e-resize",
10259          "s-resize": "s-resize",
10260          "w-resize": "w-resize",
10261          "ne-resize": "ne-resize",
10262          "nw-resize": "nw-resize",
10263          "se-resize": "se-resize",
10264          "sw-resize": "sw-resize",
10265          "ew-resize": "ew-resize",
10266          "ns-resize": "ns-resize",
10267          "nesw-resize": "nesw-resize",
10268          "nwse-resize": "nwse-resize",
10269          "zoom-in": "zoom-in",
10270          "zoom-out": "zoom-out"
10271        },
10272        divideColor: ({ theme }) => theme("borderColor"),
10273        divideOpacity: ({ theme }) => theme("borderOpacity"),
10274        divideWidth: ({ theme }) => theme("borderWidth"),
10275        dropShadow: {
10276          sm: "0 1px 1px rgb(0 0 0 / 0.05)",
10277          DEFAULT: ["0 1px 2px rgb(0 0 0 / 0.1)", "0 1px 1px rgb(0 0 0 / 0.06)"],
10278          md: ["0 4px 3px rgb(0 0 0 / 0.07)", "0 2px 2px rgb(0 0 0 / 0.06)"],
10279          lg: ["0 10px 8px rgb(0 0 0 / 0.04)", "0 4px 3px rgb(0 0 0 / 0.1)"],
10280          xl: ["0 20px 13px rgb(0 0 0 / 0.03)", "0 8px 5px rgb(0 0 0 / 0.08)"],
10281          "2xl": "0 25px 25px rgb(0 0 0 / 0.15)",
10282          none: "0 0 #0000"
10283        },
10284        fill: ({ theme }) => ({
10285          none: "none",
10286          ...theme("colors")
10287        }),
10288        flex: {
10289          1: "1 1 0%",
10290          auto: "1 1 auto",
10291          initial: "0 1 auto",
10292          none: "none"
10293        },
10294        flexBasis: ({ theme }) => ({
10295          auto: "auto",
10296          ...theme("spacing"),
10297          "1/2": "50%",
10298          "1/3": "33.333333%",
10299          "2/3": "66.666667%",
10300          "1/4": "25%",
10301          "2/4": "50%",
10302          "3/4": "75%",
10303          "1/5": "20%",
10304          "2/5": "40%",
10305          "3/5": "60%",
10306          "4/5": "80%",
10307          "1/6": "16.666667%",
10308          "2/6": "33.333333%",
10309          "3/6": "50%",
10310          "4/6": "66.666667%",
10311          "5/6": "83.333333%",
10312          "1/12": "8.333333%",
10313          "2/12": "16.666667%",
10314          "3/12": "25%",
10315          "4/12": "33.333333%",
10316          "5/12": "41.666667%",
10317          "6/12": "50%",
10318          "7/12": "58.333333%",
10319          "8/12": "66.666667%",
10320          "9/12": "75%",
10321          "10/12": "83.333333%",
10322          "11/12": "91.666667%",
10323          full: "100%"
10324        }),
10325        flexGrow: {
10326          0: "0",
10327          DEFAULT: "1"
10328        },
10329        flexShrink: {
10330          0: "0",
10331          DEFAULT: "1"
10332        },
10333        fontFamily: {
10334          sans: [
10335            "ui-sans-serif",
10336            "system-ui",
10337            "sans-serif",
10338            '"Apple Color Emoji"',
10339            '"Segoe UI Emoji"',
10340            '"Segoe UI Symbol"',
10341            '"Noto Color Emoji"'
10342          ],
10343          serif: ["ui-serif", "Georgia", "Cambria", '"Times New Roman"', "Times", "serif"],
10344          mono: [
10345            "ui-monospace",
10346            "SFMono-Regular",
10347            "Menlo",
10348            "Monaco",
10349            "Consolas",
10350            '"Liberation Mono"',
10351            '"Courier New"',
10352            "monospace"
10353          ]
10354        },
10355        fontSize: {
10356          xs: ["0.75rem", { lineHeight: "1rem" }],
10357          sm: ["0.875rem", { lineHeight: "1.25rem" }],
10358          base: ["1rem", { lineHeight: "1.5rem" }],
10359          lg: ["1.125rem", { lineHeight: "1.75rem" }],
10360          xl: ["1.25rem", { lineHeight: "1.75rem" }],
10361          "2xl": ["1.5rem", { lineHeight: "2rem" }],
10362          "3xl": ["1.875rem", { lineHeight: "2.25rem" }],
10363          "4xl": ["2.25rem", { lineHeight: "2.5rem" }],
10364          "5xl": ["3rem", { lineHeight: "1" }],
10365          "6xl": ["3.75rem", { lineHeight: "1" }],
10366          "7xl": ["4.5rem", { lineHeight: "1" }],
10367          "8xl": ["6rem", { lineHeight: "1" }],
10368          "9xl": ["8rem", { lineHeight: "1" }]
10369        },
10370        fontWeight: {
10371          thin: "100",
10372          extralight: "200",
10373          light: "300",
10374          normal: "400",
10375          medium: "500",
10376          semibold: "600",
10377          bold: "700",
10378          extrabold: "800",
10379          black: "900"
10380        },
10381        gap: ({ theme }) => theme("spacing"),
10382        gradientColorStops: ({ theme }) => theme("colors"),
10383        gradientColorStopPositions: {
10384          "0%": "0%",
10385          "5%": "5%",
10386          "10%": "10%",
10387          "15%": "15%",
10388          "20%": "20%",
10389          "25%": "25%",
10390          "30%": "30%",
10391          "35%": "35%",
10392          "40%": "40%",
10393          "45%": "45%",
10394          "50%": "50%",
10395          "55%": "55%",
10396          "60%": "60%",
10397          "65%": "65%",
10398          "70%": "70%",
10399          "75%": "75%",
10400          "80%": "80%",
10401          "85%": "85%",
10402          "90%": "90%",
10403          "95%": "95%",
10404          "100%": "100%"
10405        },
10406        grayscale: {
10407          0: "0",
10408          DEFAULT: "100%"
10409        },
10410        gridAutoColumns: {
10411          auto: "auto",
10412          min: "min-content",
10413          max: "max-content",
10414          fr: "minmax(0, 1fr)"
10415        },
10416        gridAutoRows: {
10417          auto: "auto",
10418          min: "min-content",
10419          max: "max-content",
10420          fr: "minmax(0, 1fr)"
10421        },
10422        gridColumn: {
10423          auto: "auto",
10424          "span-1": "span 1 / span 1",
10425          "span-2": "span 2 / span 2",
10426          "span-3": "span 3 / span 3",
10427          "span-4": "span 4 / span 4",
10428          "span-5": "span 5 / span 5",
10429          "span-6": "span 6 / span 6",
10430          "span-7": "span 7 / span 7",
10431          "span-8": "span 8 / span 8",
10432          "span-9": "span 9 / span 9",
10433          "span-10": "span 10 / span 10",
10434          "span-11": "span 11 / span 11",
10435          "span-12": "span 12 / span 12",
10436          "span-full": "1 / -1"
10437        },
10438        gridColumnEnd: {
10439          auto: "auto",
10440          1: "1",
10441          2: "2",
10442          3: "3",
10443          4: "4",
10444          5: "5",
10445          6: "6",
10446          7: "7",
10447          8: "8",
10448          9: "9",
10449          10: "10",
10450          11: "11",
10451          12: "12",
10452          13: "13"
10453        },
10454        gridColumnStart: {
10455          auto: "auto",
10456          1: "1",
10457          2: "2",
10458          3: "3",
10459          4: "4",
10460          5: "5",
10461          6: "6",
10462          7: "7",
10463          8: "8",
10464          9: "9",
10465          10: "10",
10466          11: "11",
10467          12: "12",
10468          13: "13"
10469        },
10470        gridRow: {
10471          auto: "auto",
10472          "span-1": "span 1 / span 1",
10473          "span-2": "span 2 / span 2",
10474          "span-3": "span 3 / span 3",
10475          "span-4": "span 4 / span 4",
10476          "span-5": "span 5 / span 5",
10477          "span-6": "span 6 / span 6",
10478          "span-7": "span 7 / span 7",
10479          "span-8": "span 8 / span 8",
10480          "span-9": "span 9 / span 9",
10481          "span-10": "span 10 / span 10",
10482          "span-11": "span 11 / span 11",
10483          "span-12": "span 12 / span 12",
10484          "span-full": "1 / -1"
10485        },
10486        gridRowEnd: {
10487          auto: "auto",
10488          1: "1",
10489          2: "2",
10490          3: "3",
10491          4: "4",
10492          5: "5",
10493          6: "6",
10494          7: "7",
10495          8: "8",
10496          9: "9",
10497          10: "10",
10498          11: "11",
10499          12: "12",
10500          13: "13"
10501        },
10502        gridRowStart: {
10503          auto: "auto",
10504          1: "1",
10505          2: "2",
10506          3: "3",
10507          4: "4",
10508          5: "5",
10509          6: "6",
10510          7: "7",
10511          8: "8",
10512          9: "9",
10513          10: "10",
10514          11: "11",
10515          12: "12",
10516          13: "13"
10517        },
10518        gridTemplateColumns: {
10519          none: "none",
10520          subgrid: "subgrid",
10521          1: "repeat(1, minmax(0, 1fr))",
10522          2: "repeat(2, minmax(0, 1fr))",
10523          3: "repeat(3, minmax(0, 1fr))",
10524          4: "repeat(4, minmax(0, 1fr))",
10525          5: "repeat(5, minmax(0, 1fr))",
10526          6: "repeat(6, minmax(0, 1fr))",
10527          7: "repeat(7, minmax(0, 1fr))",
10528          8: "repeat(8, minmax(0, 1fr))",
10529          9: "repeat(9, minmax(0, 1fr))",
10530          10: "repeat(10, minmax(0, 1fr))",
10531          11: "repeat(11, minmax(0, 1fr))",
10532          12: "repeat(12, minmax(0, 1fr))"
10533        },
10534        gridTemplateRows: {
10535          none: "none",
10536          subgrid: "subgrid",
10537          1: "repeat(1, minmax(0, 1fr))",
10538          2: "repeat(2, minmax(0, 1fr))",
10539          3: "repeat(3, minmax(0, 1fr))",
10540          4: "repeat(4, minmax(0, 1fr))",
10541          5: "repeat(5, minmax(0, 1fr))",
10542          6: "repeat(6, minmax(0, 1fr))",
10543          7: "repeat(7, minmax(0, 1fr))",
10544          8: "repeat(8, minmax(0, 1fr))",
10545          9: "repeat(9, minmax(0, 1fr))",
10546          10: "repeat(10, minmax(0, 1fr))",
10547          11: "repeat(11, minmax(0, 1fr))",
10548          12: "repeat(12, minmax(0, 1fr))"
10549        },
10550        height: ({ theme }) => ({
10551          auto: "auto",
10552          ...theme("spacing"),
10553          "1/2": "50%",
10554          "1/3": "33.333333%",
10555          "2/3": "66.666667%",
10556          "1/4": "25%",
10557          "2/4": "50%",
10558          "3/4": "75%",
10559          "1/5": "20%",
10560          "2/5": "40%",
10561          "3/5": "60%",
10562          "4/5": "80%",
10563          "1/6": "16.666667%",
10564          "2/6": "33.333333%",
10565          "3/6": "50%",
10566          "4/6": "66.666667%",
10567          "5/6": "83.333333%",
10568          full: "100%",
10569          screen: "100vh",
10570          svh: "100svh",
10571          lvh: "100lvh",
10572          dvh: "100dvh",
10573          min: "min-content",
10574          max: "max-content",
10575          fit: "fit-content"
10576        }),
10577        hueRotate: {
10578          0: "0deg",
10579          15: "15deg",
10580          30: "30deg",
10581          60: "60deg",
10582          90: "90deg",
10583          180: "180deg"
10584        },
10585        inset: ({ theme }) => ({
10586          auto: "auto",
10587          ...theme("spacing"),
10588          "1/2": "50%",
10589          "1/3": "33.333333%",
10590          "2/3": "66.666667%",
10591          "1/4": "25%",
10592          "2/4": "50%",
10593          "3/4": "75%",
10594          full: "100%"
10595        }),
10596        invert: {
10597          0: "0",
10598          DEFAULT: "100%"
10599        },
10600        keyframes: {
10601          spin: {
10602            to: {
10603              transform: "rotate(360deg)"
10604            }
10605          },
10606          ping: {
10607            "75%, 100%": {
10608              transform: "scale(2)",
10609              opacity: "0"
10610            }
10611          },
10612          pulse: {
10613            "50%": {
10614              opacity: ".5"
10615            }
10616          },
10617          bounce: {
10618            "0%, 100%": {
10619              transform: "translateY(-25%)",
10620              animationTimingFunction: "cubic-bezier(0.8,0,1,1)"
10621            },
10622            "50%": {
10623              transform: "none",
10624              animationTimingFunction: "cubic-bezier(0,0,0.2,1)"
10625            }
10626          }
10627        },
10628        letterSpacing: {
10629          tighter: "-0.05em",
10630          tight: "-0.025em",
10631          normal: "0em",
10632          wide: "0.025em",
10633          wider: "0.05em",
10634          widest: "0.1em"
10635        },
10636        lineHeight: {
10637          none: "1",
10638          tight: "1.25",
10639          snug: "1.375",
10640          normal: "1.5",
10641          relaxed: "1.625",
10642          loose: "2",
10643          3: ".75rem",
10644          4: "1rem",
10645          5: "1.25rem",
10646          6: "1.5rem",
10647          7: "1.75rem",
10648          8: "2rem",
10649          9: "2.25rem",
10650          10: "2.5rem"
10651        },
10652        listStyleType: {
10653          none: "none",
10654          disc: "disc",
10655          decimal: "decimal"
10656        },
10657        listStyleImage: {
10658          none: "none"
10659        },
10660        margin: ({ theme }) => ({
10661          auto: "auto",
10662          ...theme("spacing")
10663        }),
10664        lineClamp: {
10665          1: "1",
10666          2: "2",
10667          3: "3",
10668          4: "4",
10669          5: "5",
10670          6: "6"
10671        },
10672        maxHeight: ({ theme }) => ({
10673          ...theme("spacing"),
10674          none: "none",
10675          full: "100%",
10676          screen: "100vh",
10677          svh: "100svh",
10678          lvh: "100lvh",
10679          dvh: "100dvh",
10680          min: "min-content",
10681          max: "max-content",
10682          fit: "fit-content"
10683        }),
10684        maxWidth: ({ theme, breakpoints }) => ({
10685          ...theme("spacing"),
10686          none: "none",
10687          xs: "20rem",
10688          sm: "24rem",
10689          md: "28rem",
10690          lg: "32rem",
10691          xl: "36rem",
10692          "2xl": "42rem",
10693          "3xl": "48rem",
10694          "4xl": "56rem",
10695          "5xl": "64rem",
10696          "6xl": "72rem",
10697          "7xl": "80rem",
10698          full: "100%",
10699          min: "min-content",
10700          max: "max-content",
10701          fit: "fit-content",
10702          prose: "65ch",
10703          ...breakpoints(theme("screens"))
10704        }),
10705        minHeight: ({ theme }) => ({
10706          ...theme("spacing"),
10707          full: "100%",
10708          screen: "100vh",
10709          svh: "100svh",
10710          lvh: "100lvh",
10711          dvh: "100dvh",
10712          min: "min-content",
10713          max: "max-content",
10714          fit: "fit-content"
10715        }),
10716        minWidth: ({ theme }) => ({
10717          ...theme("spacing"),
10718          full: "100%",
10719          min: "min-content",
10720          max: "max-content",
10721          fit: "fit-content"
10722        }),
10723        objectPosition: {
10724          bottom: "bottom",
10725          center: "center",
10726          left: "left",
10727          "left-bottom": "left bottom",
10728          "left-top": "left top",
10729          right: "right",
10730          "right-bottom": "right bottom",
10731          "right-top": "right top",
10732          top: "top"
10733        },
10734        opacity: {
10735          0: "0",
10736          5: "0.05",
10737          10: "0.1",
10738          15: "0.15",
10739          20: "0.2",
10740          25: "0.25",
10741          30: "0.3",
10742          35: "0.35",
10743          40: "0.4",
10744          45: "0.45",
10745          50: "0.5",
10746          55: "0.55",
10747          60: "0.6",
10748          65: "0.65",
10749          70: "0.7",
10750          75: "0.75",
10751          80: "0.8",
10752          85: "0.85",
10753          90: "0.9",
10754          95: "0.95",
10755          100: "1"
10756        },
10757        order: {
10758          first: "-9999",
10759          last: "9999",
10760          none: "0",
10761          1: "1",
10762          2: "2",
10763          3: "3",
10764          4: "4",
10765          5: "5",
10766          6: "6",
10767          7: "7",
10768          8: "8",
10769          9: "9",
10770          10: "10",
10771          11: "11",
10772          12: "12"
10773        },
10774        outlineColor: ({ theme }) => theme("colors"),
10775        outlineOffset: {
10776          0: "0px",
10777          1: "1px",
10778          2: "2px",
10779          4: "4px",
10780          8: "8px"
10781        },
10782        outlineWidth: {
10783          0: "0px",
10784          1: "1px",
10785          2: "2px",
10786          4: "4px",
10787          8: "8px"
10788        },
10789        padding: ({ theme }) => theme("spacing"),
10790        placeholderColor: ({ theme }) => theme("colors"),
10791        placeholderOpacity: ({ theme }) => theme("opacity"),
10792        ringColor: ({ theme }) => ({
10793          DEFAULT: theme("colors.blue.500", "#3b82f6"),
10794          ...theme("colors")
10795        }),
10796        ringOffsetColor: ({ theme }) => theme("colors"),
10797        ringOffsetWidth: {
10798          0: "0px",
10799          1: "1px",
10800          2: "2px",
10801          4: "4px",
10802          8: "8px"
10803        },
10804        ringOpacity: ({ theme }) => ({
10805          DEFAULT: "0.5",
10806          ...theme("opacity")
10807        }),
10808        ringWidth: {
10809          DEFAULT: "3px",
10810          0: "0px",
10811          1: "1px",
10812          2: "2px",
10813          4: "4px",
10814          8: "8px"
10815        },
10816        rotate: {
10817          0: "0deg",
10818          1: "1deg",
10819          2: "2deg",
10820          3: "3deg",
10821          6: "6deg",
10822          12: "12deg",
10823          45: "45deg",
10824          90: "90deg",
10825          180: "180deg"
10826        },
10827        saturate: {
10828          0: "0",
10829          50: ".5",
10830          100: "1",
10831          150: "1.5",
10832          200: "2"
10833        },
10834        scale: {
10835          0: "0",
10836          50: ".5",
10837          75: ".75",
10838          90: ".9",
10839          95: ".95",
10840          100: "1",
10841          105: "1.05",
10842          110: "1.1",
10843          125: "1.25",
10844          150: "1.5"
10845        },
10846        screens: {
10847          sm: "640px",
10848          md: "768px",
10849          lg: "1024px",
10850          xl: "1280px",
10851          "2xl": "1536px"
10852        },
10853        scrollMargin: ({ theme }) => ({
10854          ...theme("spacing")
10855        }),
10856        scrollPadding: ({ theme }) => theme("spacing"),
10857        sepia: {
10858          0: "0",
10859          DEFAULT: "100%"
10860        },
10861        skew: {
10862          0: "0deg",
10863          1: "1deg",
10864          2: "2deg",
10865          3: "3deg",
10866          6: "6deg",
10867          12: "12deg"
10868        },
10869        space: ({ theme }) => ({
10870          ...theme("spacing")
10871        }),
10872        spacing: {
10873          px: "1px",
10874          0: "0px",
10875          0.5: "0.125rem",
10876          1: "0.25rem",
10877          1.5: "0.375rem",
10878          2: "0.5rem",
10879          2.5: "0.625rem",
10880          3: "0.75rem",
10881          3.5: "0.875rem",
10882          4: "1rem",
10883          5: "1.25rem",
10884          6: "1.5rem",
10885          7: "1.75rem",
10886          8: "2rem",
10887          9: "2.25rem",
10888          10: "2.5rem",
10889          11: "2.75rem",
10890          12: "3rem",
10891          14: "3.5rem",
10892          16: "4rem",
10893          20: "5rem",
10894          24: "6rem",
10895          28: "7rem",
10896          32: "8rem",
10897          36: "9rem",
10898          40: "10rem",
10899          44: "11rem",
10900          48: "12rem",
10901          52: "13rem",
10902          56: "14rem",
10903          60: "15rem",
10904          64: "16rem",
10905          72: "18rem",
10906          80: "20rem",
10907          96: "24rem"
10908        },
10909        stroke: ({ theme }) => ({
10910          none: "none",
10911          ...theme("colors")
10912        }),
10913        strokeWidth: {
10914          0: "0",
10915          1: "1",
10916          2: "2"
10917        },
10918        supports: {},
10919        data: {},
10920        textColor: ({ theme }) => theme("colors"),
10921        textDecorationColor: ({ theme }) => theme("colors"),
10922        textDecorationThickness: {
10923          auto: "auto",
10924          "from-font": "from-font",
10925          0: "0px",
10926          1: "1px",
10927          2: "2px",
10928          4: "4px",
10929          8: "8px"
10930        },
10931        textIndent: ({ theme }) => ({
10932          ...theme("spacing")
10933        }),
10934        textOpacity: ({ theme }) => theme("opacity"),
10935        textUnderlineOffset: {
10936          auto: "auto",
10937          0: "0px",
10938          1: "1px",
10939          2: "2px",
10940          4: "4px",
10941          8: "8px"
10942        },
10943        transformOrigin: {
10944          center: "center",
10945          top: "top",
10946          "top-right": "top right",
10947          right: "right",
10948          "bottom-right": "bottom right",
10949          bottom: "bottom",
10950          "bottom-left": "bottom left",
10951          left: "left",
10952          "top-left": "top left"
10953        },
10954        transitionDelay: {
10955          0: "0s",
10956          75: "75ms",
10957          100: "100ms",
10958          150: "150ms",
10959          200: "200ms",
10960          300: "300ms",
10961          500: "500ms",
10962          700: "700ms",
10963          1e3: "1000ms"
10964        },
10965        transitionDuration: {
10966          DEFAULT: "150ms",
10967          0: "0s",
10968          75: "75ms",
10969          100: "100ms",
10970          150: "150ms",
10971          200: "200ms",
10972          300: "300ms",
10973          500: "500ms",
10974          700: "700ms",
10975          1e3: "1000ms"
10976        },
10977        transitionProperty: {
10978          none: "none",
10979          all: "all",
10980          DEFAULT: "color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter",
10981          colors: "color, background-color, border-color, text-decoration-color, fill, stroke",
10982          opacity: "opacity",
10983          shadow: "box-shadow",
10984          transform: "transform"
10985        },
10986        transitionTimingFunction: {
10987          DEFAULT: "cubic-bezier(0.4, 0, 0.2, 1)",
10988          linear: "linear",
10989          in: "cubic-bezier(0.4, 0, 1, 1)",
10990          out: "cubic-bezier(0, 0, 0.2, 1)",
10991          "in-out": "cubic-bezier(0.4, 0, 0.2, 1)"
10992        },
10993        translate: ({ theme }) => ({
10994          ...theme("spacing"),
10995          "1/2": "50%",
10996          "1/3": "33.333333%",
10997          "2/3": "66.666667%",
10998          "1/4": "25%",
10999          "2/4": "50%",
11000          "3/4": "75%",
11001          full: "100%"
11002        }),
11003        size: ({ theme }) => ({
11004          auto: "auto",
11005          ...theme("spacing"),
11006          "1/2": "50%",
11007          "1/3": "33.333333%",
11008          "2/3": "66.666667%",
11009          "1/4": "25%",
11010          "2/4": "50%",
11011          "3/4": "75%",
11012          "1/5": "20%",
11013          "2/5": "40%",
11014          "3/5": "60%",
11015          "4/5": "80%",
11016          "1/6": "16.666667%",
11017          "2/6": "33.333333%",
11018          "3/6": "50%",
11019          "4/6": "66.666667%",
11020          "5/6": "83.333333%",
11021          "1/12": "8.333333%",
11022          "2/12": "16.666667%",
11023          "3/12": "25%",
11024          "4/12": "33.333333%",
11025          "5/12": "41.666667%",
11026          "6/12": "50%",
11027          "7/12": "58.333333%",
11028          "8/12": "66.666667%",
11029          "9/12": "75%",
11030          "10/12": "83.333333%",
11031          "11/12": "91.666667%",
11032          full: "100%",
11033          min: "min-content",
11034          max: "max-content",
11035          fit: "fit-content"
11036        }),
11037        width: ({ theme }) => ({
11038          auto: "auto",
11039          ...theme("spacing"),
11040          "1/2": "50%",
11041          "1/3": "33.333333%",
11042          "2/3": "66.666667%",
11043          "1/4": "25%",
11044          "2/4": "50%",
11045          "3/4": "75%",
11046          "1/5": "20%",
11047          "2/5": "40%",
11048          "3/5": "60%",
11049          "4/5": "80%",
11050          "1/6": "16.666667%",
11051          "2/6": "33.333333%",
11052          "3/6": "50%",
11053          "4/6": "66.666667%",
11054          "5/6": "83.333333%",
11055          "1/12": "8.333333%",
11056          "2/12": "16.666667%",
11057          "3/12": "25%",
11058          "4/12": "33.333333%",
11059          "5/12": "41.666667%",
11060          "6/12": "50%",
11061          "7/12": "58.333333%",
11062          "8/12": "66.666667%",
11063          "9/12": "75%",
11064          "10/12": "83.333333%",
11065          "11/12": "91.666667%",
11066          full: "100%",
11067          screen: "100vw",
11068          svw: "100svw",
11069          lvw: "100lvw",
11070          dvw: "100dvw",
11071          min: "min-content",
11072          max: "max-content",
11073          fit: "fit-content"
11074        }),
11075        willChange: {
11076          auto: "auto",
11077          scroll: "scroll-position",
11078          contents: "contents",
11079          transform: "transform"
11080        },
11081        zIndex: {
11082          auto: "auto",
11083          0: "0",
11084          10: "10",
11085          20: "20",
11086          30: "30",
11087          40: "40",
11088          50: "50"
11089        }
11090      },
11091      plugins: []
11092    };
11093    return config_full;
11094  }
11095  var hasRequiredGetAllConfigs;
11096  function requireGetAllConfigs() {
11097    if (hasRequiredGetAllConfigs) return getAllConfigs;
11098    hasRequiredGetAllConfigs = 1;
11099    (function(exports) {
11100      Object.defineProperty(exports, "__esModule", {
11101        value: true
11102      });
11103      Object.defineProperty(exports, "default", {
11104        enumerable: true,
11105        get: function() {
11106          return getAllConfigs2;
11107        }
11108      });
11109      const _configfull = /* @__PURE__ */ _interop_require_default(requireConfig_full());
11110      const _featureFlags = requireFeatureFlags();
11111      function _interop_require_default(obj) {
11112        return obj && obj.__esModule ? obj : {
11113          default: obj
11114        };
11115      }
11116      function getAllConfigs2(config) {
11117        var _config_presets;
11118        const configs = ((_config_presets = config === null || config === void 0 ? void 0 : config.presets) !== null && _config_presets !== void 0 ? _config_presets : [
11119          _configfull.default
11120        ]).slice().reverse().flatMap((preset) => getAllConfigs2(preset instanceof Function ? preset() : preset));
11121        const features = {
11122          // Add experimental configs here...
11123          respectDefaultRingColorOpacity: {
11124            theme: {
11125              ringColor: ({ theme }) => ({
11126                DEFAULT: "#3b82f67f",
11127                ...theme("colors")
11128              })
11129            }
11130          },
11131          disableColorOpacityUtilitiesByDefault: {
11132            corePlugins: {
11133              backgroundOpacity: false,
11134              borderOpacity: false,
11135              divideOpacity: false,
11136              placeholderOpacity: false,
11137              ringOpacity: false,
11138              textOpacity: false
11139            }
11140          }
11141        };
11142        const experimentals = Object.keys(features).filter((feature) => (0, _featureFlags.flagEnabled)(config, feature)).map((feature) => features[feature]);
11143        return [
11144          config,
11145          ...experimentals,
11146          ...configs
11147        ];
11148      }
11149    })(getAllConfigs);
11150    return getAllConfigs;
11151  }
11152  var hasRequiredResolveConfig$1;
11153  function requireResolveConfig$1() {
11154    if (hasRequiredResolveConfig$1) return resolveConfig$1;
11155    hasRequiredResolveConfig$1 = 1;
11156    (function(exports) {
11157      Object.defineProperty(exports, "__esModule", {
11158        value: true
11159      });
11160      Object.defineProperty(exports, "default", {
11161        enumerable: true,
11162        get: function() {
11163          return resolveConfig2;
11164        }
11165      });
11166      const _resolveConfig = /* @__PURE__ */ _interop_require_default(requireResolveConfig$2());
11167      const _getAllConfigs = /* @__PURE__ */ _interop_require_default(requireGetAllConfigs());
11168      function _interop_require_default(obj) {
11169        return obj && obj.__esModule ? obj : {
11170          default: obj
11171        };
11172      }
11173      function resolveConfig2(...configs) {
11174        let [, ...defaultConfigs] = (0, _getAllConfigs.default)(configs[0]);
11175        return (0, _resolveConfig.default)([
11176          ...configs,
11177          ...defaultConfigs
11178        ]);
11179      }
11180    })(resolveConfig$1);
11181    return resolveConfig$1;
11182  }
11183  var resolveConfig_1;
11184  var hasRequiredResolveConfig;
11185  function requireResolveConfig() {
11186    if (hasRequiredResolveConfig) return resolveConfig_1;
11187    hasRequiredResolveConfig = 1;
11188    let resolveConfig2 = requireResolveConfig$1();
11189    resolveConfig_1 = (resolveConfig2.__esModule ? resolveConfig2 : { default: resolveConfig2 }).default;
11190    return resolveConfig_1;
11191  }
11192  requireResolveConfig();
11193  class MobileMenu {
11194    constructor() {
11195      window.addEventListener(mobileMenuToggle, this.toggle.bind(this));
11196      window.addEventListener("resize", this.onResize.bind(this));
11197      this.$el = document.getElementById("mobile-menu");
11198      this.activeClass = "is-active";
11199      this.active = this.$el.classList.contains(this.activeClass);
11200      this.$listItems = this.$el.querySelectorAll(".js-mobile-menu-item");
11201      this.$listItems.forEach(($item) => {
11202        const $link = $item.querySelector(".js-mobile-menu-item-link");
11203        const $subMenu = $item.querySelector(".js-mobile-menu-sub-menu");
11204        if ($subMenu) {
11205          $link.addEventListener("click", (e) => {
11206            e.preventDefault();
11207            this.onParentButtonClick($link, $subMenu);
11208          });
11209        }
11210      });
11211    }
11212    /**
11213     * @function toggle
11214     * Toggles the mobile menu
11215     */
11216    toggle() {
11217      this.active = !this.active;
11218      this.$el.classList.toggle(this.activeClass, this.active);
11219      this.$el.setAttribute("aria-hidden", !this.active);
11220      document.body.classList.toggle("scrolling-disabled", this.active);
11221    }
11222    /**
11223     * @function onResize
11224     * Hides the mobile menu if resizing the browser
11225     * beyond mobile when the mobile menu is active
11226     */
11227    onResize() {
11228      const { lg: lg2 } = { lg: "1024px" };
11229      const size = parseInt(lg2.substring(0, lg2.length - 2));
11230      if (window.innerWidth >= size && this.active) {
11231        this.toggle();
11232      }
11233    }
11234    /**
11235     * @function onParentButtonClick
11236     * @param {HTMLAnchorElement} $link
11237     * @param {HTMLUListElement} $subMenu
11238     * Toggles the sub menu of a parent element
11239     */
11240    onParentButtonClick($link, $subMenu) {
11241      const $listItem = $link.parentElement;
11242      $listItem.classList.toggle(this.activeClass);
11243      $subMenu.setAttribute("aria-hidden", !$listItem.classList.contains(this.activeClass));
11244    }
11245  }
11246  class PartnerBenefits {
11247    constructor() {
11248      const $els = document.querySelectorAll(".js-benefits-carousel");
11249      $els.forEach(($el) => new MobileCarousel($el));
11250    }
11251  }
11252  class PartnershipSpotlight {
11253    constructor() {
11254      this.$els = document.querySelectorAll(".js-partnership-spotlight");
11255      this.$els.forEach(($el) => {
11256        const $carousel = $el.querySelector(".js-partnership-spotlight-carousel");
11257        const $prevbutton = $el.querySelector(".js-partnership-spotlight-prev");
11258        const $nextbutton = $el.querySelector(".js-partnership-spotlight-next");
11259        const carousel = new Flickity($carousel, {
11260          cellAlign: "left",
11261          contain: true,
11262          prevNextButtons: false,
11263          pageDots: false,
11264          wrapAround: true,
11265          imagesLoaded: true
11266        });
11267        if ($prevbutton) {
11268          $prevbutton.addEventListener("click", () => {
11269            carousel.previous();
11270          });
11271        }
11272        if ($nextbutton) {
11273          $nextbutton.addEventListener("click", () => {
11274            carousel.next();
11275          });
11276        }
11277      });
11278    }
11279  }
11280  class PlatformAdvantages {
11281    constructor() {
11282      const $els = document.querySelectorAll(".js-platform-advantages-carousel");
11283      $els.forEach(($el) => new MobileCarousel($el));
11284    }
11285  }
11286  class Pricing {
11287    constructor() {
11288      this.$form = document.querySelector(".js-pricing-form");
11289      if (!this.$form) return;
11290      this.$plans = this.$form.querySelectorAll(".js-pricing-plan");
11291      this.$planRadios = this.$form.querySelectorAll(".js-pricing-radio");
11292      this.$billingFrequencyRadioRadios = this.$form.querySelectorAll(".js-pricing-billing-frequency");
11293      this.$monthlyPrices = this.$form.querySelectorAll(".js-pricing-plan-monthly");
11294      this.$yearlyPrices = this.$form.querySelectorAll(".js-pricing-plan-yearly");
11295      this.$allFeatures = document.querySelectorAll(".js-pricing-features");
11296      this.$allAddOns = document.querySelectorAll(".js-pricing-add-ons");
11297      this.$addOnCheckboxes = document.querySelectorAll(".js-pricing-add-on-checkbox");
11298      this.$totalPriceContainer = document.querySelector(".js-pricing-total-price-container");
11299      this.$totalPrice = document.querySelector(".js-pricing-total-price");
11300      this.$totalPriceBeforeDiscount = document.querySelector(".js-pricing-total-price-before-discount");
11301      this.$showAllFeaturesButtons = document.querySelectorAll(".js-pricing-show-all-features");
11302      this.$featuresTable = document.querySelector(".js-pricing-features-table");
11303      this.$closeFeaturesTable = document.querySelector(".js-pricing-close-features-table");
11304      this.$menu = document.querySelector(".js-pricing-menu-list");
11305      this.$menuLinks = document.querySelectorAll(".js-pricing-menu-link");
11306      this.$currentMenuLink = document.querySelector(".js-pricing-menu-link.is-current");
11307      this.$bookDemoButton = document.querySelector(".js-pricing-book-demo-button");
11308      this.scrollCurrentMenuLinkIntoView();
11309      this.urlHashes = {
11310        plan: null,
11311        frequency: null
11312      };
11313      this.loadUrlHash();
11314      this.$plans.forEach(($plan) => {
11315        const $planRadio = $plan.querySelector(".js-pricing-radio");
11316        $plan.addEventListener("click", (e) => {
11317          e.stopPropagation();
11318          e.preventDefault();
11319          this.handlePlanClick($plan);
11320        });
11321        if ($planRadio.checked) {
11322          if (!this.urlHashes.plan) {
11323            this.urlHashes.plan = $plan.dataset.plan;
11324            $plan.classList.add("is-selected");
11325            this.handlePlanChange($plan);
11326          } else {
11327            if ($plan.dataset.plan === this.urlHashes.plan) {
11328              $plan.classList.add("is-selected");
11329              this.handlePlanChange($plan);
11330            }
11331          }
11332        }
11333      });
11334      this.$billingFrequencyRadioRadios.forEach(($billingFrequencyRadio) => {
11335        $billingFrequencyRadio.addEventListener("change", (e) => {
11336          this.handleBillingFrequencyChange(e);
11337        });
11338        if (!this.urlHashes.frequency && $billingFrequencyRadio.checked) {
11339          this.urlHashes.frequency = $billingFrequencyRadio.value;
11340          this.handleBillingFrequencyChange({ target: $billingFrequencyRadio });
11341        }
11342      });
11343      this.$addOnCheckboxes.forEach(($addOnCheckbox) => {
11344        $addOnCheckbox.addEventListener("change", this.handleAddonsChange.bind(this));
11345      });
11346      this.$showAllFeaturesButtons.forEach(($showAllFeaturesButton) => {
11347        $showAllFeaturesButton.addEventListener("click", this.handleShowAllFeaturesClick.bind(this));
11348      });
11349      this.$closeFeaturesTable.addEventListener("click", (e) => {
11350        e.preventDefault();
11351        this.closeFeaturesTable();
11352      });
11353      this.$allAddOns.forEach(($addOn) => {
11354        $addOn.addEventListener("click", (e) => {
11355          e.stopPropagation();
11356        });
11357      });
11358      window.addEventListener("keydown", (e) => {
11359        if (e.key === "Escape" || e.key === "Esc" || e.keyCode === 27) {
11360          this.closeFeaturesTable();
11361        }
11362      });
11363    }
11364    handlePlanClick($plan) {
11365      const $selectedPlanRadio = $plan.querySelector(".js-pricing-radio");
11366      this.$plans.forEach(($plan2) => {
11367        const $planRadio = $plan2.querySelector(".js-pricing-radio");
11368        if ($planRadio === $selectedPlanRadio) {
11369          if (window.innerWidth < 1024 && $selectedPlanRadio.checked) {
11370            $planRadio.checked = false;
11371            $plan2.classList.remove("is-selected");
11372          } else {
11373            $planRadio.checked = true;
11374            $plan2.classList.add("is-selected");
11375          }
11376        } else {
11377          $planRadio.checked = false;
11378          $plan2.classList.remove("is-selected");
11379        }
11380      });
11381      this.handlePlanChange($plan);
11382    }
11383    handlePlanChange($plan) {
11384      const $selectedPlanFeatures = document.querySelector(`.js-pricing-features[data-plan="${$plan.dataset.plan}"]`);
11385      const $selectedPlanAddOns = document.querySelectorAll(`.js-pricing-add-ons[data-plan="${$plan.dataset.plan}"]`);
11386      this.$allFeatures.forEach(($feature) => {
11387        $feature.classList.add("hidden");
11388      });
11389      this.$allAddOns.forEach(($addOn) => {
11390        $addOn.classList.add("hidden");
11391      });
11392      this.$addOnCheckboxes.forEach(($addOnCheckbox) => {
11393        $addOnCheckbox.checked = false;
11394      });
11395      $selectedPlanFeatures.classList.remove("hidden");
11396      if ($plan.classList.contains("is-selected")) {
11397        $selectedPlanAddOns.forEach(($selectedPlanAddOn) => {
11398          $selectedPlanAddOn.classList.remove("hidden");
11399        });
11400        this.urlHashes.plan = $plan.dataset.plan;
11401      } else {
11402        this.urlHashes.plan = void 0;
11403      }
11404      this.updateUrlHash();
11405      this.updateTotalPrice();
11406    }
11407    handleBillingFrequencyChange(e) {
11408      const { value } = e.target;
11409      this.$monthlyPrices.forEach(($monthlyPrice) => {
11410        return value === "monthly" ? $monthlyPrice.removeAttribute("style") : $monthlyPrice.style.display = "none";
11411      });
11412      this.$yearlyPrices.forEach(($yearlyPrice) => {
11413        return value === "annually" ? $yearlyPrice.removeAttribute("style") : $yearlyPrice.style.display = "none";
11414      });
11415      this.urlHashes.frequency = value;
11416      this.updateUrlHash();
11417      this.updateTotalPrice();
11418    }
11419    handleAddonsChange(e) {
11420      const $selectedPlanRadio = document.querySelector(".js-pricing-radio:checked");
11421      const selectedPlan = $selectedPlanRadio.dataset.plan;
11422      const $selectedPlanAddOns = document.querySelectorAll(`.js-pricing-add-ons[data-plan="${selectedPlan}"]`);
11423      document.querySelectorAll(`.js-pricing-add-ons[data-plan="${selectedPlan}"] .js-pricing-add-on-checkbox:checked`);
11424      $selectedPlanAddOns.forEach(($selectedPlanAddOn) => {
11425        if ($selectedPlanAddOn.dataset.allowMultiple === "false") {
11426          const $addOns = $selectedPlanAddOn.querySelectorAll(".js-pricing-add-on-checkbox");
11427          $addOns.forEach(($addOn) => {
11428            if (e.target === $addOn && $addOn.checked) {
11429              return;
11430            }
11431            $addOn.checked = false;
11432          });
11433        }
11434      });
11435      this.updateTotalPrice();
11436    }
11437    handleShowAllFeaturesClick(e) {
11438      e.stopPropagation();
11439      e.preventDefault();
11440      this.$featuresTable.classList.add("is-visible");
11441      this.$featuresTable.setAttribute("aria-hidden", false);
11442      document.body.classList.add("scrolling-disabled");
11443    }
11444    closeFeaturesTable() {
11445      this.$featuresTable.classList.remove("is-visible");
11446      this.$featuresTable.setAttribute("aria-hidden", true);
11447      document.body.classList.remove("scrolling-disabled");
11448    }
11449    updateTotalPrice() {
11450      const selectedFrequency = document.querySelector(".js-pricing-billing-frequency:checked").value;
11451      const $selectedPlanRadio = document.querySelector(".js-pricing-radio:checked");
11452      let totalPrice = 0;
11453      let totalPriceBeforeDiscount = 0;
11454      let hasSelectedAddOns = false;
11455      if (!$selectedPlanRadio) {
11456        this.$totalPriceContainer.classList.add("hidden");
11457        return;
11458      }
11459      this.$totalPriceContainer.classList.remove("hidden");
11460      const selectedPlan = $selectedPlanRadio.dataset.plan;
11461      const $selectedPlanAddOns = document.querySelectorAll(`.js-pricing-add-ons[data-plan="${selectedPlan}"]`);
11462      const $selectedPlanSelectedAddOns = document.querySelectorAll(`.js-pricing-add-ons[data-plan="${selectedPlan}"] .js-pricing-add-on-checkbox:checked`);
11463      if ($selectedPlanRadio.dataset.hasOwnProperty("isCustom")) {
11464        this.$totalPriceContainer.classList.add("hidden");
11465        this.updateBookDemoButtonUrl();
11466        return;
11467      }
11468      this.$totalPriceContainer.classList.remove("hidden");
11469      $selectedPlanAddOns.forEach(($selectedPlanAddOn) => {
11470        const $addOns = $selectedPlanAddOn.querySelectorAll(".js-pricing-add-on-checkbox");
11471        const $selectedAddOns = $selectedPlanAddOn.querySelectorAll(".js-pricing-add-on-checkbox:checked");
11472        $selectedAddOns.forEach(($selectedAddOn) => {
11473          hasSelectedAddOns = true;
11474          switch (selectedFrequency) {
11475            case "monthly":
11476              totalPrice = parseInt($selectedAddOn.dataset.totalMonthlyPrice);
11477              break;
11478            case "annually":
11479              totalPrice = parseInt($selectedAddOn.dataset.totalYearlyPrice);
11480              break;
11481          }
11482          totalPriceBeforeDiscount = parseInt($selectedAddOn.dataset.rrpPrice);
11483        });
11484        if ($selectedAddOns.length === $addOns.length) {
11485          switch (selectedFrequency) {
11486            case "monthly":
11487              totalPrice = parseInt($selectedPlanAddOn.dataset.combinedBundleTotalMonthlyPrice);
11488              break;
11489            case "annually":
11490              totalPrice = parseInt($selectedPlanAddOn.dataset.combinedBundleTotalYearlyPrice);
11491              break;
11492          }
11493          totalPriceBeforeDiscount = parseInt($selectedPlanAddOn.dataset.combinedBundleRrpPrice);
11494          return;
11495        }
11496      });
11497      if (!$selectedPlanSelectedAddOns.length) {
11498        switch (selectedFrequency) {
11499          case "monthly":
11500            totalPrice = parseInt($selectedPlanRadio.dataset.monthlyPrice);
11501            break;
11502          case "annually":
11503            totalPrice = parseInt($selectedPlanRadio.dataset.annualPrice);
11504            totalPriceBeforeDiscount = parseInt($selectedPlanRadio.dataset.monthlyPrice);
11505            break;
11506        }
11507      }
11508      switch (selectedFrequency) {
11509        case "monthly":
11510          if (hasSelectedAddOns) {
11511            this.$totalPriceBeforeDiscount.classList.remove("hidden");
11512          } else {
11513            this.$totalPriceBeforeDiscount.classList.add("hidden");
11514          }
11515          this.$totalPrice.innerHTML = `$${totalPrice.toLocaleString("en-US", {
11516            minimumFractionDigits: 0,
11517            maximumFractionDigits: 0
11518          })}`;
11519          this.$totalPriceBeforeDiscount.innerHTML = `$${totalPriceBeforeDiscount.toLocaleString("en-US", {
11520            minimumFractionDigits: 0,
11521            maximumFractionDigits: 0
11522          })}`;
11523          break;
11524        case "annually":
11525          this.$totalPriceBeforeDiscount.classList.remove("hidden");
11526          this.$totalPrice.innerHTML = `$${totalPrice.toLocaleString("en-US", {
11527            minimumFractionDigits: 0,
11528            maximumFractionDigits: 0
11529          })}`;
11530          this.$totalPriceBeforeDiscount.innerHTML = `$${totalPriceBeforeDiscount.toLocaleString("en-US", {
11531            minimumFractionDigits: 0,
11532            maximumFractionDigits: 0
11533          })}`;
11534          break;
11535      }
11536      this.updateBookDemoButtonUrl();
11537    }
11538    updateBookDemoButtonUrl() {
11539      const $selectedPlanRadio = document.querySelector(".js-pricing-radio:checked");
11540      const selectedPlan = $selectedPlanRadio.dataset.plan;
11541      const $selectedPlanSelectedAddOns = document.querySelectorAll(`.js-pricing-add-ons[data-plan="${selectedPlan}"] .js-pricing-add-on-checkbox:checked`);
11542      const addOns = [];
11543      const query = [];
11544      $selectedPlanSelectedAddOns.forEach(($selectedPlanSelectedAddOn) => {
11545        addOns.push($selectedPlanSelectedAddOn.value);
11546      });
11547      const params = {
11548        "demo_request_intent___add_ons": addOns.join(", "),
11549        "demo_request_intent___billing_frequency": this.urlHashes.frequency,
11550        "demo_request_intent___plan": selectedPlan,
11551        "demo_request_intent___product": window.site.meta.permalink
11552      };
11553      for (var key in params) {
11554        if (params[key]) {
11555          query.push(`${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`);
11556        }
11557      }
11558      this.$bookDemoButton.href = `/book-a-demo/${query.length ? "?" + query.join("&") : ""}`;
11559    }
11560    loadUrlHash() {
11561      const url = new URL(window.location.href);
11562      const hash = url.hash.replace("#/", "").split("/");
11563      const keys = Object.keys(this.urlHashes);
11564      keys.forEach((key) => {
11565        const index = hash.indexOf(key);
11566        if (index === -1) {
11567          return;
11568        }
11569        this.urlHashes[key] = hash[index + 1];
11570      });
11571      this.$plans.forEach(($plan) => {
11572        if ($plan.dataset.plan === this.urlHashes.plan) {
11573          const $planRadio = $plan.querySelector(".js-pricing-radio");
11574          $planRadio.checked = true;
11575          this.handlePlanChange($plan);
11576        }
11577      });
11578      this.$billingFrequencyRadioRadios.forEach(($billingFrequencyRadio) => {
11579        if ($billingFrequencyRadio.value === this.urlHashes.frequency) {
11580          $billingFrequencyRadio.checked = true;
11581          this.handleBillingFrequencyChange({ target: $billingFrequencyRadio });
11582        }
11583      });
11584    }
11585    updateUrlHash() {
11586      const url = new URL(window.location.href);
11587      const keys = Object.keys(this.urlHashes);
11588      let hash = "";
11589      keys.forEach((key) => {
11590        if (!this.urlHashes[key]) {
11591          return;
11592        }
11593        hash += `/${key}/${this.urlHashes[key]}`;
11594      });
11595      url.hash = hash;
11596      window.history.replaceState({}, "", url);
11597    }
11598    scrollCurrentMenuLinkIntoView() {
11599      if (!this.$currentMenuLink) return;
11600      const { left: currentLinkLeft, width: currentLinkWidth } = this.$currentMenuLink.getBoundingClientRect();
11601      const { width: menuWidth } = this.$menu.getBoundingClientRect();
11602      this.$menu.scrollLeft = currentLinkLeft + currentLinkWidth / 2 - menuWidth / 2;
11603    }
11604  }
11605  class ProductDemo {
11606    constructor() {
11607      const $els = document.querySelectorAll(".js-product-demo");
11608      $els.forEach(($el) => new Demo$1($el));
11609    }
11610  }
11611  let Demo$1 = class Demo {
11612    constructor($el) {
11613      this.$el = $el;
11614      this.$buttons = this.$el.querySelectorAll(".js-product-demo-button");
11615      this.$panels = this.$el.querySelectorAll(".js-product-demo-panel");
11616      this.$buttons.forEach(($button, index) => {
11617        $button.addEventListener("click", (e) => this.handleClick(e, index));
11618      });
11619    }
11620    handleClick(e, index) {
11621      var _a, _b, _c;
11622      e.preventDefault();
11623      this.$panels.forEach(($panel) => $panel.classList.remove("is-active"));
11624      this.$buttons.forEach(($button) => $button.classList.remove("is-active"));
11625      (_a = this.$panels[index]) == null ? void 0 : _a.classList.add("is-active");
11626      (_b = this.$buttons[index]) == null ? void 0 : _b.classList.add("is-active");
11627      if (window.innerWidth < 1024) {
11628        (_c = this.$buttons[index]) == null ? void 0 : _c.scrollIntoView({
11629          behavior: "smooth"
11630        });
11631      }
11632    }
11633  };
11634  class ProductFeaturedIntegrations {
11635    constructor() {
11636      const $els = document.querySelectorAll(".js-product-featured-ingtegrations");
11637      $els.forEach(($el) => new Carousel$c($el));
11638    }
11639  }
11640  let Carousel$c = class Carousel {
11641    constructor($el) {
11642      this.$el = $el;
11643      this.$carousel = $el.querySelector(".js-product-featured-ingtegrations-carousel");
11644      this.$prevBtn = $el.querySelector(".js-product-featured-ingtegrations-carousel-prev-btn");
11645      this.$nextBtn = $el.querySelector(".js-product-featured-ingtegrations-carousel-next-btn");
11646      this.$tabs = this.$el.querySelectorAll(".js-product-featured-ingtegrations-tab");
11647      this.$backgrounds = this.$el.querySelectorAll(".js-product-featured-integrations-background-text");
11648      this.activeClass = "is-active";
11649      this.flickity = new Flickity(this.$carousel, {
11650        prevNextButtons: false,
11651        pageDots: false,
11652        wrapAround: true,
11653        imagesLoaded: true
11654      });
11655      this.flickity.on("select", this.onSelect.bind(this));
11656      this.$prevBtn.addEventListener("click", this.handlePrevClick.bind(this));
11657      this.$nextBtn.addEventListener("click", this.handleNextClick.bind(this));
11658      this.$tabs.forEach(($tab, index) => {
11659        $tab.addEventListener("click", this.goToSlide.bind(this, $tab, index));
11660      });
11661    }
11662    handlePrevClick() {
11663      this.flickity.previous();
11664    }
11665    handleNextClick() {
11666      this.flickity.next();
11667    }
11668    goToSlide($tab, index = 0) {
11669      if (!this.flickity || !$tab) return;
11670      this.$tabs.forEach(($tab2) => $tab2.classList.remove(this.activeClass));
11671      $tab.classList.add(this.activeClass);
11672      this.flickity.select(index);
11673    }
11674    onSelect(index) {
11675      var _a, _b;
11676      this.$tabs.forEach(($tab) => $tab.classList.remove(this.activeClass));
11677      (_a = this.$tabs[index]) == null ? void 0 : _a.classList.add(this.activeClass);
11678      this.$backgrounds.forEach(($background) => $background.classList.remove(this.activeClass));
11679      (_b = this.$backgrounds[index]) == null ? void 0 : _b.classList.add(this.activeClass);
11680    }
11681  };
11682  class ProductHero {
11683    constructor() {
11684      this.$el = document.querySelector(".js-product-hero-carousel");
11685      if (!this.$el) return;
11686      this.totalSlides = this.$el.querySelectorAll(".js-product-hero-carousel-slide").length;
11687      this.init();
11688      window.addEventListener("resize", this.onResize.bind(this));
11689    }
11690    init() {
11691      if (window.innerWidth < 1024) {
11692        this.initCarousel();
11693        return;
11694      } else {
11695        if (this.totalSlides > 3) {
11696          this.initCarousel();
11697        } else {
11698          this.destroyCarousel();
11699          this.$el.classList.add("no-carousel");
11700        }
11701      }
11702    }
11703    onResize() {
11704      this.init();
11705    }
11706    initCarousel() {
11707      this.carousel = new Flickity(this.$el, {
11708        autoPlay: 4500,
11709        cellAlign: "left",
11710        imagesLoaded: true,
11711        pageDots: true,
11712        pauseAutoPlayOnHover: true,
11713        prevNextButtons: false,
11714        contain: true,
11715        wrapAround: true
11716      });
11717    }
11718    destroyCarousel() {
11719      if (this.carousel) {
11720        this.carousel.destroy();
11721      }
11722    }
11723  }
11724  class ProductImageGallery {
11725    constructor() {
11726      this.$els = document.querySelectorAll(".js-product-image-gallery");
11727      this.activeClass = "is-active";
11728      this.$els.forEach(($el) => {
11729        const $buttons = $el.querySelectorAll(".js-product-image-gallery-button");
11730        const $images = $el.querySelectorAll(".js-product-image-gallery-image");
11731        const $carousel = $el.querySelector(".js-product-image-gallery-carousel");
11732        const mobileCarousel = new MobileCarousel($carousel, {
11733          maxWidth: 768
11734        });
11735        if (mobileCarousel.carousel) {
11736          mobileCarousel.carousel.on("select", (index) => {
11737            $buttons.forEach(($button) => $button.classList.remove(this.activeClass));
11738            $buttons[index].classList.add(this.activeClass);
11739          });
11740        }
11741        const clickHandler = ($button, index) => {
11742          $buttons.forEach(($button2) => $button2.classList.remove(this.activeClass));
11743          $images.forEach(($image) => $image.classList.remove(this.activeClass));
11744          $button.classList.add(this.activeClass);
11745          $images[index].classList.add(this.activeClass);
11746          if (mobileCarousel.carousel) {
11747            mobileCarousel.carousel.select(index);
11748          }
11749        };
11750        $buttons.forEach(($button, index) => {
11751          $button.addEventListener("click", () => clickHandler($button, index));
11752        });
11753      });
11754    }
11755  }
11756  class ProductUpdatesHighlights {
11757    constructor() {
11758      const $els = document.querySelectorAll(".js-product-updates-highlights-carousel");
11759      $els.forEach(($el) => new Carousel$b($el));
11760    }
11761  }
11762  let Carousel$b = class Carousel {
11763    constructor($el) {
11764      var _a, _b;
11765      this.$el = $el;
11766      this.flickity = new Flickity($el.querySelector(".js-carousel"), {
11767        imagesLoaded: true,
11768        prevNextButtons: false,
11769        pageDots: false,
11770        contain: "true",
11771        cellAlign: "left",
11772        groupCells: true,
11773        wrapAround: true
11774      });
11775      (_a = $el.querySelector(".js-next")) == null ? void 0 : _a.addEventListener("click", () => {
11776        this.flickity.next();
11777      });
11778      (_b = $el.querySelector(".js-prev")) == null ? void 0 : _b.addEventListener("click", () => {
11779        this.flickity.previous();
11780      });
11781    }
11782  };
11783  class ProductUpdatesAll {
11784    constructor() {
11785      this.$el = document.querySelector(".js-product-updates-all");
11786      if (!this.$el) {
11787        return;
11788      }
11789      this.$topicSelect = document.querySelector(".js-product-updates-all-topic-select2");
11790      this.$topicSelect2 = jQuery(".js-product-updates-all-topic-select2-default").select2();
11791      const select2 = jQuery(this.$topicSelect).select2({
11792        theme: "okendo",
11793        closeOnSelect: false,
11794        placeholder: "All topics"
11795      });
11796      select2.on("change", this.filterByTopic.bind(this));
11797      this.$loadMoreButton = document.querySelector(".js-product-updates-load-more");
11798      this.totalPosts = document.querySelector(".js-product-updates-all").dataset.numberOfReleases;
11799      this.perPage = 10;
11800      this.showedPosts = this.perPage;
11801      this.topics = [];
11802      this.$loadMoreButton.addEventListener("click", this.loadMore.bind(this));
11803      this.showPosts();
11804      this.openPermalink();
11805    }
11806    openPermalink() {
11807      const urlParams = new URLSearchParams(window.location.search);
11808      const topics = urlParams.get("topics");
11809      if (topics) {
11810        jQuery(this.$topicSelect).val(topics.split(",")).trigger("change");
11811      }
11812    }
11813    updatePermalink(topics) {
11814      var queryParams = new URLSearchParams(window.location.search);
11815      queryParams.set("topics", topics);
11816      history.replaceState(null, null, "?" + queryParams.toString());
11817    }
11818    filterByTopic(e) {
11819      this.topics = jQuery(this.$topicSelect).select2("data").map((t2) => t2.id);
11820      this.updatePermalink(this.topics);
11821      this.showPosts();
11822    }
11823    loadMore() {
11824      this.showedPosts += this.perPage;
11825      this.showPosts();
11826    }
11827    showPosts() {
11828      let postCount = 0;
11829      let totalPosts = 0;
11830      const posts = document.querySelectorAll(".js-product-updates-all-posts > div.js-post");
11831      document.querySelectorAll(".js-month").forEach((month) => month.classList.add("hidden"));
11832      for (const post of posts) {
11833        const inPage = postCount < this.showedPosts;
11834        const topics = JSON.parse(post.dataset.topics);
11835        const inTopic = this.topics.length === 0 || this.topics.some((item) => topics.includes(item));
11836        const show = inPage && inTopic;
11837        post.classList.toggle("hidden", !show);
11838        if (show) {
11839          postCount++;
11840          document.querySelector(post.dataset.month).classList.remove("hidden");
11841        }
11842        if (inTopic) {
11843          totalPosts++;
11844        }
11845      }
11846      this.$loadMoreButton.classList.toggle("hidden", postCount >= totalPosts);
11847      document.querySelector(".js-product-updates-all-posts").classList.toggle("done", postCount >= totalPosts);
11848    }
11849  }
11850  class RelatedCustomerStories {
11851    constructor() {
11852      const $els = document.querySelectorAll(".js-related-customer-stories-carousel");
11853      $els.forEach(($el) => new Carousel$a($el));
11854    }
11855  }
11856  let Carousel$a = class Carousel {
11857    constructor($el) {
11858      this.$el = $el;
11859      this.$carousel = this.$el.querySelector(".js-related-customer-stories-carousel-carousel");
11860      this.flickity = new Flickity(this.$carousel, {
11861        imagesLoaded: true,
11862        prevNextButtons: false,
11863        pageDots: true,
11864        contain: "true",
11865        cellAlign: "left",
11866        groupCells: true
11867      });
11868    }
11869  };
11870  class ResourcesCarousel {
11871    constructor() {
11872      const $els = document.querySelectorAll(".js-resources-carousel");
11873      $els.forEach(($el) => new Carousel$9($el));
11874    }
11875  }
11876  let Carousel$9 = class Carousel {
11877    constructor($el) {
11878      this.$el = $el;
11879      this.$carousel = this.$el.querySelector(".js-resources-carousel-carousel");
11880      this.flickity = new Flickity(this.$carousel, {
11881        imagesLoaded: true,
11882        prevNextButtons: false,
11883        pageDots: true,
11884        contain: "true",
11885        cellAlign: "left",
11886        groupCells: true
11887      });
11888    }
11889  };
11890  class SocialProof {
11891    constructor() {
11892      this.$el = document.querySelector(".js-social-proof-animation");
11893      if (!this.$el) return;
11894      this.progress = 0;
11895      this.$steps = document.querySelectorAll(".js-social-proof-step");
11896      this.$progress = document.querySelector(".js-social-proof-animation-progress");
11897      this.$mobileLabels = document.querySelectorAll(".js-social-proof-mobile-label");
11898      window.addEventListener(videoLoaded, (e) => {
11899        const $parent = e.detail.el.parentElement;
11900        if ($parent.classList.contains("js-social-proof-animation")) {
11901          this.$video = $parent.querySelector("video");
11902          const interval = setInterval(() => {
11903            if (this.$video.readyState > 0) {
11904              this.watcher = requestAnimationFrame(() => this.updateProgress());
11905              clearInterval(interval);
11906            }
11907          }, 200);
11908        }
11909      });
11910    }
11911    updateProgress() {
11912      const progress = this.$video.currentTime / this.$video.duration * 100;
11913      this.$progress.style.width = `${progress}%`;
11914      this.$mobileLabels.forEach(($label) => {
11915        $label.classList.remove("is-active");
11916      });
11917      if (progress < 1) {
11918        this.$steps.forEach(($step) => {
11919          $step.classList.remove("is-active");
11920        });
11921      }
11922      if (progress > 0 && progress < 25) {
11923        this.$steps[0].classList.add("is-active");
11924        this.$mobileLabels[0].classList.add("is-active");
11925      }
11926      if (progress > 25 && progress < 55) {
11927        this.$steps[1].classList.add("is-active");
11928        this.$mobileLabels[1].classList.add("is-active");
11929      }
11930      if (progress > 55 && progress < 85) {
11931        this.$steps[2].classList.add("is-active");
11932        this.$mobileLabels[2].classList.add("is-active");
11933      }
11934      if (progress > 85) {
11935        this.$steps[3].classList.add("is-active");
11936        this.$mobileLabels[3].classList.add("is-active");
11937      }
11938      this.watcher = requestAnimationFrame(() => this.updateProgress());
11939    }
11940  }
11941  class SocialProofBoxes {
11942    constructor() {
11943      this.progress = 0;
11944      this.$boxes = document.querySelector(".js-social-proof-boxes");
11945      this.boxesCarousel = new MobileCarousel(this.$boxes);
11946    }
11947  }
11948  class TabbedContent {
11949    constructor() {
11950      this.$els = document.querySelectorAll(".js-tabbed-content");
11951      this.$els.forEach(($el) => {
11952        const $buttons = $el.querySelectorAll(".js-tabbed-content-tab-button");
11953        const $contents = $el.querySelectorAll(".js-tabbed-content-tab-content");
11954        const $videosContainer = $el.querySelector(".js-tabbed-content-videos");
11955        if ($videosContainer) {
11956          const $videoWrappers = $videosContainer.querySelectorAll(".js-tabbed-content-video-wrapper");
11957          new MobileCarousel($videosContainer);
11958          $videoWrappers.forEach(($videoWrapper) => new Video($videoWrapper));
11959        }
11960        $buttons.forEach(($button, buttonIndex) => new Tab({
11961          $buttons,
11962          $contents,
11963          buttonIndex
11964        }));
11965      });
11966    }
11967  }
11968  class Tab {
11969    constructor(options) {
11970      this.$buttons = options.$buttons;
11971      this.$contents = options.$contents;
11972      this.buttonIndex = options.buttonIndex;
11973      this.$selectedButton = this.$buttons[this.buttonIndex];
11974      this.$selectedContent = this.$contents[this.buttonIndex];
11975      this.activeClass = "is-active";
11976      this.$selectedButton.addEventListener("click", (e) => this.handleButtonClick(e));
11977    }
11978    handleButtonClick(e) {
11979      e.preventDefault();
11980      this.$buttons.forEach(($button) => {
11981        $button.classList.remove(this.activeClass);
11982      });
11983      this.$selectedButton.classList.add(this.activeClass);
11984      this.$contents.forEach(($content, contentIndex) => {
11985        $content.setAttribute("aria-hidden", "true");
11986        $content.classList.remove(this.activeClass);
11987      });
11988      this.$selectedContent.classList.add(this.activeClass);
11989      this.$selectedContent.setAttribute("aria-hidden", "false");
11990      const t2 = setTimeout(() => {
11991        window.dispatchEvent(new Event("resize"));
11992        clearTimeout(t2);
11993      }, 0);
11994    }
11995  }
11996  class Video {
11997    constructor($el) {
11998      this.$el = $el;
11999      this.playingClass = "is-playing";
12000      this.$playButton = this.$el.querySelector(".js-tabbed-content-video-button");
12001      this.$pauseButton = this.$el.querySelector(".js-tabbed-content-video-pause");
12002      this.$playButton.addEventListener("click", this.handlePlayButton.bind(this));
12003      this.$pauseButton.addEventListener("click", this.handlePauseButton.bind(this));
12004    }
12005    handlePlayButton(e) {
12006      e.preventDefault();
12007      e.stopPropagation();
12008      const $button = e.currentTarget;
12009      const $placeholderImage = $button.parentElement.querySelector(".js-tabbed-content-placeholder-image");
12010      const $video = $button.parentElement.querySelector(".js-tabbed-content-video");
12011      $video.addEventListener("ended", (event) => {
12012        $placeholderImage.classList.remove(this.playingClass);
12013        this.$pauseButton.classList.remove(this.playingClass);
12014        $button.classList.remove(this.playingClass);
12015      });
12016      $placeholderImage.classList.add(this.playingClass);
12017      $button.classList.add(this.playingClass);
12018      this.$pauseButton.classList.add(this.playingClass);
12019      $video.play();
12020    }
12021    handlePauseButton(e) {
12022      e.preventDefault();
12023      e.stopPropagation();
12024      const $button = e.currentTarget;
12025      const $placeholderImage = $button.parentElement.querySelector(".js-tabbed-content-placeholder-image");
12026      const $video = $button.parentElement.querySelector(".js-tabbed-content-video");
12027      this.$playButton.classList.remove(this.playingClass);
12028      $placeholderImage.classList.remove(this.playingClass);
12029      $button.classList.remove(this.playingClass);
12030      $video.pause();
12031      $video.currentTime = 0;
12032      $video.load();
12033    }
12034  }
12035  class TimelineCarousel {
12036    constructor() {
12037      this.$el = document.querySelector(".js-timeline");
12038      if (!this.$el) return;
12039      this.$carousel = this.$el.querySelector(".js-timeline-carousel");
12040      this.$nextButton = this.$el.querySelector(".js-timeline-next");
12041      this.$previousButton = this.$el.querySelector(".js-timeline-prev");
12042      this.$yearsButtons = this.$el.querySelectorAll(".js-timeline-year");
12043      this.$yearMobile = this.$el.querySelector(".js-timeline-year-mobile");
12044      this.carousel = new Flickity(this.$carousel, {
12045        imagesLoaded: true,
12046        prevNextButtons: false,
12047        pageDots: false,
12048        contain: true
12049      });
12050      this.carousel.on("select", this.onSelect.bind(this));
12051      this.$nextButton.addEventListener("click", this.onNext.bind(this));
12052      this.$previousButton.addEventListener("click", this.onPrev.bind(this));
12053      this.$yearsButtons.forEach(($button, index) => {
12054        $button.addEventListener("click", this.onYearClick.bind(this, $button, index));
12055      });
12056    }
12057    onSelect() {
12058      this.clearAllYears();
12059      this.$yearsButtons[this.carousel.selectedIndex].classList.add("is-active");
12060      this.$yearMobile.innerHTML = this.carousel.selectedElement.dataset.year;
12061    }
12062    onNext() {
12063      this.carousel.next();
12064    }
12065    onPrev() {
12066      this.carousel.previous();
12067    }
12068    clearAllYears() {
12069      this.$yearsButtons.forEach(($year) => $year.classList.remove("is-active"));
12070    }
12071    onYearClick($button, index) {
12072      this.clearAllYears();
12073      this.carousel.select(index);
12074    }
12075  }
12076  class WatchOurDemos {
12077    constructor() {
12078      const $els = document.querySelectorAll(".js-watch-our-demos");
12079      $els.forEach(($el) => new Demo($el));
12080    }
12081  }
12082  class Demo {
12083    constructor($el) {
12084      this.$el = $el;
12085      this.$buttons = this.$el.querySelectorAll(".js-watch-our-demos-button");
12086      this.$panels = this.$el.querySelectorAll(".js-watch-our-demos-panel");
12087      this.$iframes = this.$el.querySelectorAll("iframe");
12088      this.$buttons.forEach(($button, index) => {
12089        $button.addEventListener("click", (e) => this.handleClick(e, index));
12090      });
12091    }
12092    stopVideos() {
12093      this.$iframes.forEach(($iframe) => {
12094        $iframe.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', "*");
12095      });
12096    }
12097    handleClick(e, index) {
12098      var _a, _b, _c;
12099      e.preventDefault();
12100      this.stopVideos();
12101      this.$panels.forEach(($panel) => $panel.classList.remove("is-active"));
12102      this.$buttons.forEach(($button) => $button.classList.remove("is-active"));
12103      (_a = this.$panels[index]) == null ? void 0 : _a.classList.add("is-active");
12104      (_b = this.$buttons[index]) == null ? void 0 : _b.classList.add("is-active");
12105      if (window.innerWidth < 1024) {
12106        (_c = this.$buttons[index]) == null ? void 0 : _c.scrollIntoView({
12107          behavior: "smooth"
12108        });
12109      }
12110    }
12111  }
12112  class WebinarsCarousel {
12113    constructor() {
12114      const $els = document.querySelectorAll(".js-webinars-carousel");
12115      $els.forEach(($el) => new Carousel$8($el));
12116    }
12117  }
12118  let Carousel$8 = class Carousel {
12119    constructor($el) {
12120      this.$el = $el;
12121      this.$carousel = this.$el.querySelector(".js-webinars-carousel-carousel");
12122      this.flickity = new Flickity(this.$carousel, {
12123        imagesLoaded: true,
12124        prevNextButtons: false,
12125        pageDots: true,
12126        contain: "true",
12127        cellAlign: "left",
12128        groupCells: true
12129      });
12130    }
12131  };
12132  class WhatsNew {
12133    constructor() {
12134      const $els = document.querySelectorAll(".js-whats-new");
12135      $els.forEach(($el) => new Carousel$7($el));
12136    }
12137  }
12138  let Carousel$7 = class Carousel {
12139    constructor($el) {
12140      this.$el = $el;
12141      this.$carousel = this.$el.querySelector(".js-whats-new-carousel");
12142      this.flickity = new Flickity(this.$carousel, {
12143        imagesLoaded: true,
12144        prevNextButtons: false,
12145        pageDots: true,
12146        contain: "true",
12147        cellAlign: "left",
12148        groupCells: false
12149      });
12150    }
12151  };
12152  class WYSIWYG {
12153    constructor() {
12154      this.$header = document.querySelector(".js-header");
12155      this.$tableOfContentsLinks = document.querySelectorAll(".js-toc-link");
12156      this.$tableOfContentsLinks.forEach(($link) => {
12157        $link.addEventListener("click", (e) => {
12158          e.preventDefault();
12159          this.onTableOfContentsLinkClick($link);
12160        });
12161      });
12162    }
12163    onTableOfContentsLinkClick($link) {
12164      const offset = this.$header.offsetHeight;
12165      const gap = 20;
12166      window.scrollTo({
12167        behavior: "smooth",
12168        top: document.querySelector($link.getAttribute("href")).getBoundingClientRect().top - document.body.getBoundingClientRect().top - offset - gap
12169      });
12170    }
12171  }
12172  class HeroVideoInline {
12173    constructor() {
12174      const $els = document.querySelectorAll(".js-hero-video-inline");
12175      $els.forEach(($el) => new Carousel$6($el));
12176    }
12177  }
12178  let Carousel$6 = class Carousel {
12179    constructor($el) {
12180      $el.querySelector(".js-play-video").addEventListener("click", (e) => {
12181        e.preventDefault();
12182        $el.querySelector(".js-headshot").classList.add("md:hidden");
12183        $el.querySelector(".js-poster").classList.add("hidden");
12184        $el.querySelector(".js-video").classList.remove("hidden");
12185        $el.querySelector(".js-video").firstChild.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}', "*");
12186      });
12187    }
12188    playVideo(e) {
12189      e.preventDefault();
12190    }
12191  };
12192  class VideoTestimonials {
12193    constructor() {
12194      const $els = document.querySelectorAll(".js-video-testimonials .js-video-card");
12195      $els.forEach(($el) => new Carousel$5($el));
12196    }
12197  }
12198  let Carousel$5 = class Carousel {
12199    constructor($el) {
12200      $el.querySelector(".js-play").addEventListener("click", (e) => {
12201        e.preventDefault();
12202        $el.querySelector(".js-play").classList.add("hidden");
12203        $el.querySelector(".js-poster").classList.add("hidden");
12204        $el.querySelector(".js-video").classList.remove("hidden");
12205        $el.querySelector(".js-pause").classList.remove("hidden");
12206        $el.querySelector(".js-video").play();
12207      });
12208      $el.querySelector(".js-video").addEventListener("ended", () => {
12209        $el.querySelector(".js-play").classList.remove("hidden");
12210        $el.querySelector(".js-poster").classList.remove("hidden");
12211        $el.querySelector(".js-video").classList.add("hidden");
12212        $el.querySelector(".js-pause").classList.add("hidden");
12213      });
12214      $el.querySelector(".js-pause").addEventListener("click", (e) => {
12215        e.preventDefault();
12216        $el.querySelector(".js-play").classList.remove("hidden");
12217        $el.querySelector(".js-poster").classList.remove("hidden");
12218        $el.querySelector(".js-video").classList.add("hidden");
12219        $el.querySelector(".js-pause").classList.add("hidden");
12220        $el.querySelector(".js-video").pause();
12221      });
12222    }
12223  };
12224  class KeyTakeaways {
12225    constructor() {
12226      const $els = document.querySelectorAll(".js-key-takeaways");
12227      $els.forEach(($el) => new Carousel$4($el));
12228    }
12229  }
12230  let Carousel$4 = class Carousel {
12231    constructor($el) {
12232      this.flickity = new Flickity($el.querySelector(".js-carousel"), {
12233        imagesLoaded: true,
12234        prevNextButtons: false,
12235        pageDots: false,
12236        contain: "true",
12237        cellAlign: "center",
12238        groupCells: true
12239      });
12240      $el.querySelector(".js-next").addEventListener("click", (e) => {
12241        e.preventDefault();
12242        this.flickity.next();
12243      });
12244      $el.querySelector(".js-prev").addEventListener("click", (e) => {
12245        e.preventDefault();
12246        this.flickity.previous();
12247      });
12248    }
12249  };
12250  function _assertThisInitialized(self2) {
12251    if (self2 === void 0) {
12252      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
12253    }
12254    return self2;
12255  }
12256  function _inheritsLoose(subClass, superClass) {
12257    subClass.prototype = Object.create(superClass.prototype);
12258    subClass.prototype.constructor = subClass;
12259    subClass.__proto__ = superClass;
12260  }
12261  /*!
12262   * GSAP 3.12.5
12263   * https://gsap.com
12264   *
12265   * @license Copyright 2008-2024, GreenSock. All rights reserved.
12266   * Subject to the terms at https://gsap.com/standard-license or for
12267   * Club GSAP members, the agreement issued with that membership.
12268   * @author: Jack Doyle, [email protected]
12269  */
12270  var _config = {
12271    autoSleep: 120,
12272    force3D: "auto",
12273    nullTargetWarn: 1,
12274    units: {
12275      lineHeight: ""
12276    }
12277  }, _defaults$1 = {
12278    duration: 0.5,
12279    overwrite: false,
12280    delay: 0
12281  }, _suppressOverwrites$1, _reverting$1, _context$2, _bigNum$1 = 1e8, _tinyNum = 1 / _bigNum$1, _2PI = Math.PI * 2, _HALF_PI = _2PI / 4, _gsID = 0, _sqrt = Math.sqrt, _cos = Math.cos, _sin = Math.sin, _isString$1 = function _isString2(value) {
12282    return typeof value === "string";
12283  }, _isFunction$1 = function _isFunction2(value) {
12284    return typeof value === "function";
12285  }, _isNumber$1 = function _isNumber2(value) {
12286    return typeof value === "number";
12287  }, _isUndefined = function _isUndefined2(value) {
12288    return typeof value === "undefined";
12289  }, _isObject$1 = function _isObject2(value) {
12290    return typeof value === "object";
12291  }, _isNotFalse = function _isNotFalse2(value) {
12292    return value !== false;
12293  }, _windowExists$2 = function _windowExists2() {
12294    return typeof window !== "undefined";
12295  }, _isFuncOrString = function _isFuncOrString2(value) {
12296    return _isFunction$1(value) || _isString$1(value);
12297  }, _isTypedArray = typeof ArrayBuffer === "function" && ArrayBuffer.isView || function() {
12298  }, _isArray = Array.isArray, _strictNumExp = /(?:-?\.?\d|\.)+/gi, _numExp = /[-+=.]*\d+[.e\-+]*\d*[e\-+]*\d*/g, _numWithUnitExp = /[-+=.]*\d+[.e-]*\d*[a-z%]*/g, _complexStringNumExp = /[-+=.]*\d+\.?\d*(?:e-|e\+)?\d*/gi, _relExp = /[+-]=-?[.\d]+/, _delimitedValueExp = /[^,'"\[\]\s]+/gi, _unitExp = /^[+\-=e\s\d]*\d+[.\d]*([a-z]*|%)\s*$/i, _globalTimeline, _win$3, _c
vendor: 23,264 bytes, lines 12298-12770
12298oreInitted$2, _doc$3, _globals = {}, _installScope = {}, _coreReady, _install = function _install2(scope) {
12299    return (_installScope = _merge(scope, _globals)) && gsap$2;
12300  }, _missingPlugin = function _missingPlugin2(property, value) {
12301    return console.warn("Invalid property", property, "set to", value, "Missing plugin? gsap.registerPlugin()");
12302  }, _warn = function _warn2(message, suppress) {
12303    return !suppress && console.warn(message);
12304  }, _addGlobal = function _addGlobal2(name, obj) {
12305    return name && (_globals[name] = obj) && _installScope && (_installScope[name] = obj) || _globals;
12306  }, _emptyFunc = function _emptyFunc2() {
12307    return 0;
12308  }, _startAtRevertConfig = {
12309    suppressEvents: true,
12310    isStart: true,
12311    kill: false
12312  }, _revertConfigNoKill = {
12313    suppressEvents: true,
12314    kill: false
12315  }, _revertConfig = {
12316    suppressEvents: true
12317  }, _reservedProps = {}, _lazyTweens = [], _lazyLookup = {}, _lastRenderedFrame, _plugins = {}, _effects = {}, _nextGCFrame = 30, _harnessPlugins = [], _callbackNames = "", _harness = function _harness2(targets) {
12318    var target = targets[0], harnessPlugin, i2;
12319    _isObject$1(target) || _isFunction$1(target) || (targets = [targets]);
12320    if (!(harnessPlugin = (target._gsap || {}).harness)) {
12321      i2 = _harnessPlugins.length;
12322      while (i2-- && !_harnessPlugins[i2].targetTest(target)) {
12323      }
12324      harnessPlugin = _harnessPlugins[i2];
12325    }
12326    i2 = targets.length;
12327    while (i2--) {
12328      targets[i2] && (targets[i2]._gsap || (targets[i2]._gsap = new GSCache(targets[i2], harnessPlugin))) || targets.splice(i2, 1);
12329    }
12330    return targets;
12331  }, _getCache = function _getCache2(target) {
12332    return target._gsap || _harness(toArray(target))[0]._gsap;
12333  }, _getProperty = function _getProperty2(target, property, v) {
12334    return (v = target[property]) && _isFunction$1(v) ? target[property]() : _isUndefined(v) && target.getAttribute && target.getAttribute(property) || v;
12335  }, _forEachName = function _forEachName2(names, func) {
12336    return (names = names.split(",")).forEach(func) || names;
12337  }, _round$1 = function _round2(value) {
12338    return Math.round(value * 1e5) / 1e5 || 0;
12339  }, _roundPrecise = function _roundPrecise2(value) {
12340    return Math.round(value * 1e7) / 1e7 || 0;
12341  }, _parseRelative = function _parseRelative2(start, value) {
12342    var operator = value.charAt(0), end = parseFloat(value.substr(2));
12343    start = parseFloat(start);
12344    return operator === "+" ? start + end : operator === "-" ? start - end : operator === "*" ? start * end : start / end;
12345  }, _arrayContainsAny = function _arrayContainsAny2(toSearch, toFind) {
12346    var l = toFind.length, i2 = 0;
12347    for (; toSearch.indexOf(toFind[i2]) < 0 && ++i2 < l; ) {
12348    }
12349    return i2 < l;
12350  }, _lazyRender = function _lazyRender2() {
12351    var l = _lazyTweens.length, a = _lazyTweens.slice(0), i2, tween;
12352    _lazyLookup = {};
12353    _lazyTweens.length = 0;
12354    for (i2 = 0; i2 < l; i2++) {
12355      tween = a[i2];
12356      tween && tween._lazy && (tween.render(tween._lazy[0], tween._lazy[1], true)._lazy = 0);
12357    }
12358  }, _lazySafeRender = function _lazySafeRender2(animation, time, suppressEvents, force) {
12359    _lazyTweens.length && !_reverting$1 && _lazyRender();
12360    animation.render(time, suppressEvents, _reverting$1 && time < 0 && (animation._initted || animation._startAt));
12361    _lazyTweens.length && !_reverting$1 && _lazyRender();
12362  }, _numericIfPossible = function _numericIfPossible2(value) {
12363    var n = parseFloat(value);
12364    return (n || n === 0) && (value + "").match(_delimitedValueExp).length < 2 ? n : _isString$1(value) ? value.trim() : value;
12365  }, _passThrough$1 = function _passThrough2(p) {
12366    return p;
12367  }, _setDefaults$1 = function _setDefaults2(obj, defaults2) {
12368    for (var p in defaults2) {
12369      p in obj || (obj[p] = defaults2[p]);
12370    }
12371    return obj;
12372  }, _setKeyframeDefaults = function _setKeyframeDefaults2(excludeDuration) {
12373    return function(obj, defaults2) {
12374      for (var p in defaults2) {
12375        p in obj || p === "duration" && excludeDuration || p === "ease" || (obj[p] = defaults2[p]);
12376      }
12377    };
12378  }, _merge = function _merge2(base, toMerge) {
12379    for (var p in toMerge) {
12380      base[p] = toMerge[p];
12381    }
12382    return base;
12383  }, _mergeDeep = function _mergeDeep2(base, toMerge) {
12384    for (var p in toMerge) {
12385      p !== "__proto__" && p !== "constructor" && p !== "prototype" && (base[p] = _isObject$1(toMerge[p]) ? _mergeDeep2(base[p] || (base[p] = {}), toMerge[p]) : toMerge[p]);
12386    }
12387    return base;
12388  }, _copyExcluding = function _copyExcluding2(obj, excluding) {
12389    var copy = {}, p;
12390    for (p in obj) {
12391      p in excluding || (copy[p] = obj[p]);
12392    }
12393    return copy;
12394  }, _inheritDefaults = function _inheritDefaults2(vars) {
12395    var parent = vars.parent || _globalTimeline, func = vars.keyframes ? _setKeyframeDefaults(_isArray(vars.keyframes)) : _setDefaults$1;
12396    if (_isNotFalse(vars.inherit)) {
12397      while (parent) {
12398        func(vars, parent.vars.defaults);
12399        parent = parent.parent || parent._dp;
12400      }
12401    }
12402    return vars;
12403  }, _arraysMatch = function _arraysMatch2(a1, a2) {
12404    var i2 = a1.length, match = i2 === a2.length;
12405    while (match && i2-- && a1[i2] === a2[i2]) {
12406    }
12407    return i2 < 0;
12408  }, _addLinkedListItem = function _addLinkedListItem2(parent, child, firstProp, lastProp, sortBy) {
12409    var prev = parent[lastProp], t2;
12410    if (sortBy) {
12411      t2 = child[sortBy];
12412      while (prev && prev[sortBy] > t2) {
12413        prev = prev._prev;
12414      }
12415    }
12416    if (prev) {
12417      child._next = prev._next;
12418      prev._next = child;
12419    } else {
12420      child._next = parent[firstProp];
12421      parent[firstProp] = child;
12422    }
12423    if (child._next) {
12424      child._next._prev = child;
12425    } else {
12426      parent[lastProp] = child;
12427    }
12428    child._prev = prev;
12429    child.parent = child._dp = parent;
12430    return child;
12431  }, _removeLinkedListItem = function _removeLinkedListItem2(parent, child, firstProp, lastProp) {
12432    if (firstProp === void 0) {
12433      firstProp = "_first";
12434    }
12435    if (lastProp === void 0) {
12436      lastProp = "_last";
12437    }
12438    var prev = child._prev, next = child._next;
12439    if (prev) {
12440      prev._next = next;
12441    } else if (parent[firstProp] === child) {
12442      parent[firstProp] = next;
12443    }
12444    if (next) {
12445      next._prev = prev;
12446    } else if (parent[lastProp] === child) {
12447      parent[lastProp] = prev;
12448    }
12449    child._next = child._prev = child.parent = null;
12450  }, _removeFromParent = function _removeFromParent2(child, onlyIfParentHasAutoRemove) {
12451    child.parent && (!onlyIfParentHasAutoRemove || child.parent.autoRemoveChildren) && child.parent.remove && child.parent.remove(child);
12452    child._act = 0;
12453  }, _uncache = function _uncache2(animation, child) {
12454    if (animation && (!child || child._end > animation._dur || child._start < 0)) {
12455      var a = animation;
12456      while (a) {
12457        a._dirty = 1;
12458        a = a.parent;
12459      }
12460    }
12461    return animation;
12462  }, _recacheAncestors = function _recacheAncestors2(animation) {
12463    var parent = animation.parent;
12464    while (parent && parent.parent) {
12465      parent._dirty = 1;
12466      parent.totalDuration();
12467      parent = parent.parent;
12468    }
12469    return animation;
12470  }, _rewindStartAt = function _rewindStartAt2(tween, totalTime, suppressEvents, force) {
12471    return tween._startAt && (_reverting$1 ? tween._startAt.revert(_revertConfigNoKill) : tween.vars.immediateRender && !tween.vars.autoRevert || tween._startAt.render(totalTime, true, force));
12472  }, _hasNoPausedAncestors = function _hasNoPausedAncestors2(animation) {
12473    return !animation || animation._ts && _hasNoPausedAncestors2(animation.parent);
12474  }, _elapsedCycleDuration = function _elapsedCycleDuration2(animation) {
12475    return animation._repeat ? _animationCycle(animation._tTime, animation = animation.duration() + animation._rDelay) * animation : 0;
12476  }, _animationCycle = function _animationCycle2(tTime, cycleDuration) {
12477    var whole = Math.floor(tTime /= cycleDuration);
12478    return tTime && whole === tTime ? whole - 1 : whole;
12479  }, _parentToChildTotalTime = function _parentToChildTotalTime2(parentTime, child) {
12480    return (parentTime - child._start) * child._ts + (child._ts >= 0 ? 0 : child._dirty ? child.totalDuration() : child._tDur);
12481  }, _setEnd = function _setEnd2(animation) {
12482    return animation._end = _roundPrecise(animation._start + (animation._tDur / Math.abs(animation._ts || animation._rts || _tinyNum) || 0));
12483  }, _alignPlayhead = function _alignPlayhead2(animation, totalTime) {
12484    var parent = animation._dp;
12485    if (parent && parent.smoothChildTiming && animation._ts) {
12486      animation._start = _roundPrecise(parent._time - (animation._ts > 0 ? totalTime / animation._ts : ((animation._dirty ? animation.totalDuration() : animation._tDur) - totalTime) / -animation._ts));
12487      _setEnd(animation);
12488      parent._dirty || _uncache(parent, animation);
12489    }
12490    return animation;
12491  }, _postAddChecks = function _postAddChecks2(timeline, child) {
12492    var t2;
12493    if (child._time || !child._dur && child._initted || child._start < timeline._time && (child._dur || !child.add)) {
12494      t2 = _parentToChildTotalTime(timeline.rawTime(), child);
12495      if (!child._dur || _clamp$1(0, child.totalDuration(), t2) - child._tTime > _tinyNum) {
12496        child.render(t2, true);
12497      }
12498    }
12499    if (_uncache(timeline, child)._dp && timeline._initted && timeline._time >= timeline._dur && timeline._ts) {
12500      if (timeline._dur < timeline.duration()) {
12501        t2 = timeline;
12502        while (t2._dp) {
12503          t2.rawTime() >= 0 && t2.totalTime(t2._tTime);
12504          t2 = t2._dp;
12505        }
12506      }
12507      timeline._zTime = -1e-8;
12508    }
12509  }, _addToTimeline = function _addToTimeline2(timeline, child, position, skipChecks) {
12510    child.parent && _removeFromParent(child);
12511    child._start = _roundPrecise((_isNumber$1(position) ? position : position || timeline !== _globalTimeline ? _parsePosition$1(timeline, position, child) : timeline._time) + child._delay);
12512    child._end = _roundPrecise(child._start + (child.totalDuration() / Math.abs(child.timeScale()) || 0));
12513    _addLinkedListItem(timeline, child, "_first", "_last", timeline._sort ? "_start" : 0);
12514    _isFromOrFromStart(child) || (timeline._recent = child);
12515    skipChecks || _postAddChecks(timeline, child);
12516    timeline._ts < 0 && _alignPlayhead(timeline, timeline._tTime);
12517    return timeline;
12518  }, _scrollTrigger = function _scrollTrigger2(animation, trigger) {
12519    return (_globals.ScrollTrigger || _missingPlugin("scrollTrigger", trigger)) && _globals.ScrollTrigger.create(trigger, animation);
12520  }, _attemptInitTween = function _attemptInitTween2(tween, time, force, suppressEvents, tTime) {
12521    _initTween(tween, time, tTime);
12522    if (!tween._initted) {
12523      return 1;
12524    }
12525    if (!force && tween._pt && !_reverting$1 && (tween._dur && tween.vars.lazy !== false || !tween._dur && tween.vars.lazy) && _lastRenderedFrame !== _ticker.frame) {
12526      _lazyTweens.push(tween);
12527      tween._lazy = [tTime, suppressEvents];
12528      return 1;
12529    }
12530  }, _parentPlayheadIsBeforeStart = function _parentPlayheadIsBeforeStart2(_ref) {
12531    var parent = _ref.parent;
12532    return parent && parent._ts && parent._initted && !parent._lock && (parent.rawTime() < 0 || _parentPlayheadIsBeforeStart2(parent));
12533  }, _isFromOrFromStart = function _isFromOrFromStart2(_ref2) {
12534    var data = _ref2.data;
12535    return data === "isFromStart" || data === "isStart";
12536  }, _renderZeroDurationTween = function _renderZeroDurationTween2(tween, totalTime, suppressEvents, force) {
12537    var prevRatio = tween.ratio, ratio = totalTime < 0 || !totalTime && (!tween._start && _parentPlayheadIsBeforeStart(tween) && !(!tween._initted && _isFromOrFromStart(tween)) || (tween._ts < 0 || tween._dp._ts < 0) && !_isFromOrFromStart(tween)) ? 0 : 1, repeatDelay = tween._rDelay, tTime = 0, pt, iteration, prevIteration;
12538    if (repeatDelay && tween._repeat) {
12539      tTime = _clamp$1(0, tween._tDur, totalTime);
12540      iteration = _animationCycle(tTime, repeatDelay);
12541      tween._yoyo && iteration & 1 && (ratio = 1 - ratio);
12542      if (iteration !== _animationCycle(tween._tTime, repeatDelay)) {
12543        prevRatio = 1 - ratio;
12544        tween.vars.repeatRefresh && tween._initted && tween.invalidate();
12545      }
12546    }
12547    if (ratio !== prevRatio || _reverting$1 || force || tween._zTime === _tinyNum || !totalTime && tween._zTime) {
12548      if (!tween._initted && _attemptInitTween(tween, totalTime, force, suppressEvents, tTime)) {
12549        return;
12550      }
12551      prevIteration = tween._zTime;
12552      tween._zTime = totalTime || (suppressEvents ? _tinyNum : 0);
12553      suppressEvents || (suppressEvents = totalTime && !prevIteration);
12554      tween.ratio = ratio;
12555      tween._from && (ratio = 1 - ratio);
12556      tween._time = 0;
12557      tween._tTime = tTime;
12558      pt = tween._pt;
12559      while (pt) {
12560        pt.r(ratio, pt.d);
12561        pt = pt._next;
12562      }
12563      totalTime < 0 && _rewindStartAt(tween, totalTime, suppressEvents, true);
12564      tween._onUpdate && !suppressEvents && _callback$1(tween, "onUpdate");
12565      tTime && tween._repeat && !suppressEvents && tween.parent && _callback$1(tween, "onRepeat");
12566      if ((totalTime >= tween._tDur || totalTime < 0) && tween.ratio === ratio) {
12567        ratio && _removeFromParent(tween, 1);
12568        if (!suppressEvents && !_reverting$1) {
12569          _callback$1(tween, ratio ? "onComplete" : "onReverseComplete", true);
12570          tween._prom && tween._prom();
12571        }
12572      }
12573    } else if (!tween._zTime) {
12574      tween._zTime = totalTime;
12575    }
12576  }, _findNextPauseTween = function _findNextPauseTween2(animation, prevTime, time) {
12577    var child;
12578    if (time > prevTime) {
12579      child = animation._first;
12580      while (child && child._start <= time) {
12581        if (child.data === "isPause" && child._start > prevTime) {
12582          return child;
12583        }
12584        child = child._next;
12585      }
12586    } else {
12587      child = animation._last;
12588      while (child && child._start >= time) {
12589        if (child.data === "isPause" && child._start < prevTime) {
12590          return child;
12591        }
12592        child = child._prev;
12593      }
12594    }
12595  }, _setDuration = function _setDuration2(animation, duration, skipUncache, leavePlayhead) {
12596    var repeat = animation._repeat, dur = _roundPrecise(duration) || 0, totalProgress = animation._tTime / animation._tDur;
12597    totalProgress && !leavePlayhead && (animation._time *= dur / animation._dur);
12598    animation._dur = dur;
12599    animation._tDur = !repeat ? dur : repeat < 0 ? 1e10 : _roundPrecise(dur * (repeat + 1) + animation._rDelay * repeat);
12600    totalProgress > 0 && !leavePlayhead && _alignPlayhead(animation, animation._tTime = animation._tDur * totalProgress);
12601    animation.parent && _setEnd(animation);
12602    skipUncache || _uncache(animation.parent, animation);
12603    return animation;
12604  }, _onUpdateTotalDuration = function _onUpdateTotalDuration2(animation) {
12605    return animation instanceof Timeline ? _uncache(animation) : _setDuration(animation, animation._dur);
12606  }, _zeroPosition = {
12607    _start: 0,
12608    endTime: _emptyFunc,
12609    totalDuration: _emptyFunc
12610  }, _parsePosition$1 = function _parsePosition2(animation, position, percentAnimation) {
12611    var labels = animation.labels, recent = animation._recent || _zeroPosition, clippedDuration = animation.duration() >= _bigNum$1 ? recent.endTime(false) : animation._dur, i2, offset, isPercent;
12612    if (_isString$1(position) && (isNaN(position) || position in labels)) {
12613      offset = position.charAt(0);
12614      isPercent = position.substr(-1) === "%";
12615      i2 = position.indexOf("=");
12616      if (offset === "<" || offset === ">") {
12617        i2 >= 0 && (position = position.replace(/=/, ""));
12618        return (offset === "<" ? recent._start : recent.endTime(recent._repeat >= 0)) + (parseFloat(position.substr(1)) || 0) * (isPercent ? (i2 < 0 ? recent : percentAnimation).totalDuration() / 100 : 1);
12619      }
12620      if (i2 < 0) {
12621        position in labels || (labels[position] = clippedDuration);
12622        return labels[position];
12623      }
12624      offset = parseFloat(position.charAt(i2 - 1) + position.substr(i2 + 1));
12625      if (isPercent && percentAnimation) {
12626        offset = offset / 100 * (_isArray(percentAnimation) ? percentAnimation[0] : percentAnimation).totalDuration();
12627      }
12628      return i2 > 1 ? _parsePosition2(animation, position.substr(0, i2 - 1), percentAnimation) + offset : clippedDuration + offset;
12629    }
12630    return position == null ? clippedDuration : +position;
12631  }, _createTweenType = function _createTweenType2(type, params, timeline) {
12632    var isLegacy = _isNumber$1(params[1]), varsIndex = (isLegacy ? 2 : 1) + (type < 2 ? 0 : 1), vars = params[varsIndex], irVars, parent;
12633    isLegacy && (vars.duration = params[1]);
12634    vars.parent = timeline;
12635    if (type) {
12636      irVars = vars;
12637      parent = timeline;
12638      while (parent && !("immediateRender" in irVars)) {
12639        irVars = parent.vars.defaults || {};
12640        parent = _isNotFalse(parent.vars.inherit) && parent.parent;
12641      }
12642      vars.immediateRender = _isNotFalse(irVars.immediateRender);
12643      type < 2 ? vars.runBackwards = 1 : vars.startAt = params[varsIndex - 1];
12644    }
12645    return new Tween(params[0], vars, params[varsIndex + 1]);
12646  }, _conditionalReturn = function _conditionalReturn2(value, func) {
12647    return value || value === 0 ? func(value) : func;
12648  }, _clamp$1 = function _clamp2(min, max, value) {
12649    return value < min ? min : value > max ? max : value;
12650  }, getUnit = function getUnit2(value, v) {
12651    return !_isString$1(value) || !(v = _unitExp.exec(value)) ? "" : v[1];
12652  }, clamp = function clamp2(min, max, value) {
12653    return _conditionalReturn(value, function(v) {
12654      return _clamp$1(min, max, v);
12655    });
12656  }, _slice = [].slice, _isArrayLike = function _isArrayLike2(value, nonEmpty) {
12657    return value && _isObject$1(value) && "length" in value && (!nonEmpty && !value.length || value.length - 1 in value && _isObject$1(value[0])) && !value.nodeType && value !== _win$3;
12658  }, _flatten = function _flatten2(ar, leaveStrings, accumulator) {
12659    if (accumulator === void 0) {
12660      accumulator = [];
12661    }
12662    return ar.forEach(function(value) {
12663      var _accumulator;
12664      return _isString$1(value) && !leaveStrings || _isArrayLike(value, 1) ? (_accumulator = accumulator).push.apply(_accumulator, toArray(value)) : accumulator.push(value);
12665    }) || accumulator;
12666  }, toArray = function toArray2(value, scope, leaveStrings) {
12667    return _context$2 && !scope && _context$2.selector ? _context$2.selector(value) : _isString$1(value) && !leaveStrings && (_coreInitted$2 || !_wake()) ? _slice.call((scope || _doc$3).querySelectorAll(value), 0) : _isArray(value) ? _flatten(value, leaveStrings) : _isArrayLike(value) ? _slice.call(value, 0) : value ? [value] : [];
12668  }, selector = function selector2(value) {
12669    value = toArray(value)[0] || _warn("Invalid scope") || {};
12670    return function(v) {
12671      var el = value.current || value.nativeElement || value;
12672      return toArray(v, el.querySelectorAll ? el : el === value ? _warn("Invalid scope") || _doc$3.createElement("div") : value);
12673    };
12674  }, shuffle = function shuffle2(a) {
12675    return a.sort(function() {
12676      return 0.5 - Math.random();
12677    });
12678  }, distribute = function distribute2(v) {
12679    if (_isFunction$1(v)) {
12680      return v;
12681    }
12682    var vars = _isObject$1(v) ? v : {
12683      each: v
12684    }, ease = _parseEase(vars.ease), from = vars.from || 0, base = parseFloat(vars.base) || 0, cache = {}, isDecimal = from > 0 && from < 1, ratios = isNaN(from) || isDecimal, axis = vars.axis, ratioX = from, ratioY = from;
12685    if (_isString$1(from)) {
12686      ratioX = ratioY = {
12687        center: 0.5,
12688        edges: 0.5,
12689        end: 1
12690      }[from] || 0;
12691    } else if (!isDecimal && ratios) {
12692      ratioX = from[0];
12693      ratioY = from[1];
12694    }
12695    return function(i2, target, a) {
12696      var l = (a || vars).length, distances = cache[l], originX, originY, x, y, d, j, max, min, wrapAt;
12697      if (!distances) {
12698        wrapAt = vars.grid === "auto" ? 0 : (vars.grid || [1, _bigNum$1])[1];
12699        if (!wrapAt) {
12700          max = -1e8;
12701          while (max < (max = a[wrapAt++].getBoundingClientRect().left) && wrapAt < l) {
12702          }
12703          wrapAt < l && wrapAt--;
12704        }
12705        distances = cache[l] = [];
12706        originX = ratios ? Math.min(wrapAt, l) * ratioX - 0.5 : from % wrapAt;
12707        originY = wrapAt === _bigNum$1 ? 0 : ratios ? l * ratioY / wrapAt - 0.5 : from / wrapAt | 0;
12708        max = 0;
12709        min = _bigNum$1;
12710        for (j = 0; j < l; j++) {
12711          x = j % wrapAt - originX;
12712          y = originY - (j / wrapAt | 0);
12713          distances[j] = d = !axis ? _sqrt(x * x + y * y) : Math.abs(axis === "y" ? y : x);
12714          d > max && (max = d);
12715          d < min && (min = d);
12716        }
12717        from === "random" && shuffle(distances);
12718        distances.max = max - min;
12719        distances.min = min;
12720        distances.v = l = (parseFloat(vars.amount) || parseFloat(vars.each) * (wrapAt > l ? l - 1 : !axis ? Math.max(wrapAt, l / wrapAt) : axis === "y" ? l / wrapAt : wrapAt) || 0) * (from === "edges" ? -1 : 1);
12721        distances.b = l < 0 ? base - l : base;
12722        distances.u = getUnit(vars.amount || vars.each) || 0;
12723        ease = ease && l < 0 ? _invertEase(ease) : ease;
12724      }
12725      l = (distances[i2] - distances.min) / distances.max || 0;
12726      return _roundPrecise(distances.b + (ease ? ease(l) : l) * distances.v) + distances.u;
12727    };
12728  }, _roundModifier = function _roundModifier2(v) {
12729    var p = Math.pow(10, ((v + "").split(".")[1] || "").length);
12730    return function(raw) {
12731      var n = _roundPrecise(Math.round(parseFloat(raw) / v) * v * p);
12732      return (n - n % 1) / p + (_isNumber$1(raw) ? 0 : getUnit(raw));
12733    };
12734  }, snap = function snap2(snapTo, value) {
12735    var isArray2 = _isArray(snapTo), radius, is2D;
12736    if (!isArray2 && _isObject$1(snapTo)) {
12737      radius = isArray2 = snapTo.radius || _bigNum$1;
12738      if (snapTo.values) {
12739        snapTo = toArray(snapTo.values);
12740        if (is2D = !_isNumber$1(snapTo[0])) {
12741          radius *= radius;
12742        }
12743      } else {
12744        snapTo = _roundModifier(snapTo.increment);
12745      }
12746    }
12747    return _conditionalReturn(value, !isArray2 ? _roundModifier(snapTo) : _isFunction$1(snapTo) ? function(raw) {
12748      is2D = snapTo(raw);
12749      return Math.abs(is2D - raw) <= radius ? is2D : raw;
12750    } : function(raw) {
12751      var x = parseFloat(is2D ? raw.x : raw), y = parseFloat(is2D ? raw.y : 0), min = _bigNum$1, closest = 0, i2 = snapTo.length, dx, dy;
12752      while (i2--) {
12753        if (is2D) {
12754          dx = snapTo[i2].x - x;
12755          dy = snapTo[i2].y - y;
12756          dx = dx * dx + dy * dy;
12757        } else {
12758          dx = Math.abs(snapTo[i2] - x);
12759        }
12760        if (dx < min) {
12761          min = dx;
12762          closest = i2;
12763        }
12764      }
12765      closest = !radius || min <= radius ? snapTo[closest] : raw;
12766      return is2D || closest === raw || _isNumber$1(raw) ? closest : closest + getUnit(raw);
12767    });
12768  }, random = function random2(min, max, roundingIncrement, returnFunction) {
12769    return _conditionalReturn(_isArray(min) ? !max : roundingIncrement === true ? !!(roundingIncrement = 0) : !returnFunction, function() {
12770      return _isArray(min) ? min[~~(Math.random() * min.length)] : (roundingIncrement = roundingIncrement || 1e
vendor: 4,833 bytes, lines 12770-12882
12770-5) && (returnFunction = roundingIncrement < 1 ? Math.pow(10, (roundingIncrement + "").length - 2) : 1) && Math.floor(Math.round((min - roundingIncrement / 2 + Math.random() * (max - min + roundingIncrement * 0.99)) / roundingIncrement) * roundingIncrement * returnFunction) / returnFunction;
12771    });
12772  }, pipe = function pipe2() {
12773    for (var _len = arguments.length, functions = new Array(_len), _key = 0; _key < _len; _key++) {
12774      functions[_key] = arguments[_key];
12775    }
12776    return function(value) {
12777      return functions.reduce(function(v, f) {
12778        return f(v);
12779      }, value);
12780    };
12781  }, unitize = function unitize2(func, unit) {
12782    return function(value) {
12783      return func(parseFloat(value)) + (unit || getUnit(value));
12784    };
12785  }, normalize = function normalize2(min, max, value) {
12786    return mapRange(min, max, 0, 1, value);
12787  }, _wrapArray = function _wrapArray2(a, wrapper, value) {
12788    return _conditionalReturn(value, function(index) {
12789      return a[~~wrapper(index)];
12790    });
12791  }, wrap = function wrap2(min, max, value) {
12792    var range = max - min;
12793    return _isArray(min) ? _wrapArray(min, wrap2(0, min.length), max) : _conditionalReturn(value, function(value2) {
12794      return (range + (value2 - min) % range) % range + min;
12795    });
12796  }, wrapYoyo = function wrapYoyo2(min, max, value) {
12797    var range = max - min, total = range * 2;
12798    return _isArray(min) ? _wrapArray(min, wrapYoyo2(0, min.length - 1), max) : _conditionalReturn(value, function(value2) {
12799      value2 = (total + (value2 - min) % total) % total || 0;
12800      return min + (value2 > range ? total - value2 : value2);
12801    });
12802  }, _replaceRandom = function _replaceRandom2(value) {
12803    var prev = 0, s = "", i2, nums, end, isArray2;
12804    while (~(i2 = value.indexOf("random(", prev))) {
12805      end = value.indexOf(")", i2);
12806      isArray2 = value.charAt(i2 + 7) === "[";
12807      nums = value.substr(i2 + 7, end - i2 - 7).match(isArray2 ? _delimitedValueExp : _strictNumExp);
12808      s += value.substr(prev, i2 - prev) + random(isArray2 ? nums : +nums[0], isArray2 ? 0 : +nums[1], +nums[2] || 1e-5);
12809      prev = end + 1;
12810    }
12811    return s + value.substr(prev, value.length - prev);
12812  }, mapRange = function mapRange2(inMin, inMax, outMin, outMax, value) {
12813    var inRange = inMax - inMin, outRange = outMax - outMin;
12814    return _conditionalReturn(value, function(value2) {
12815      return outMin + ((value2 - inMin) / inRange * outRange || 0);
12816    });
12817  }, interpolate = function interpolate2(start, end, progress, mutate) {
12818    var func = isNaN(start + end) ? 0 : function(p2) {
12819      return (1 - p2) * start + p2 * end;
12820    };
12821    if (!func) {
12822      var isString2 = _isString$1(start), master = {}, p, i2, interpolators, l, il;
12823      progress === true && (mutate = 1) && (progress = null);
12824      if (isString2) {
12825        start = {
12826          p: start
12827        };
12828        end = {
12829          p: end
12830        };
12831      } else if (_isArray(start) && !_isArray(end)) {
12832        interpolators = [];
12833        l = start.length;
12834        il = l - 2;
12835        for (i2 = 1; i2 < l; i2++) {
12836          interpolators.push(interpolate2(start[i2 - 1], start[i2]));
12837        }
12838        l--;
12839        func = function func2(p2) {
12840          p2 *= l;
12841          var i3 = Math.min(il, ~~p2);
12842          return interpolators[i3](p2 - i3);
12843        };
12844        progress = end;
12845      } else if (!mutate) {
12846        start = _merge(_isArray(start) ? [] : {}, start);
12847      }
12848      if (!interpolators) {
12849        for (p in end) {
12850          _addPropTween.call(master, start, p, "get", end[p]);
12851        }
12852        func = function func2(p2) {
12853          return _renderPropTweens(p2, master) || (isString2 ? start.p : start);
12854        };
12855      }
12856    }
12857    return _conditionalReturn(progress, func);
12858  }, _getLabelInDirection = function _getLabelInDirection2(timeline, fromTime, backward) {
12859    var labels = timeline.labels, min = _bigNum$1, p, distance, label;
12860    for (p in labels) {
12861      distance = labels[p] - fromTime;
12862      if (distance < 0 === !!backward && distance && min > (distance = Math.abs(distance))) {
12863        label = p;
12864        min = distance;
12865      }
12866    }
12867    return label;
12868  }, _callback$1 = function _callback2(animation, type, executeLazyFirst) {
12869    var v = animation.vars, callback = v[type], prevContext = _context$2, context = animation._ctx, params, scope, result;
12870    if (!callback) {
12871      return;
12872    }
12873    params = v[type + "Params"];
12874    scope = v.callbackScope || animation;
12875    executeLazyFirst && _lazyTweens.length && _lazyRender();
12876    context && (_context$2 = context);
12877    result = params ? callback.apply(scope, params) : callback.call(scope);
12878    _context$2 = prevContext;
12879    return result;
12880  }, _interrupt = function _interrupt2(animation) {
12881    _removeFromParent(animation);
12882    animation.scrollTrigger && animation.scrollTrigger.kill(!!_reverting$1);
vendor: 16,808 bytes, lines 12883-13309
12883    animation.progress() < 1 && _callback$1(animation, "onInterrupt");
12884    return animation;
12885  }, _quickTween, _registerPluginQueue = [], _createPlugin = function _createPlugin2(config) {
12886    if (!config) return;
12887    config = !config.name && config["default"] || config;
12888    if (_windowExists$2() || config.headless) {
12889      var name = config.name, isFunc = _isFunction$1(config), Plugin = name && !isFunc && config.init ? function() {
12890        this._props = [];
12891      } : config, instanceDefaults = {
12892        init: _emptyFunc,
12893        render: _renderPropTweens,
12894        add: _addPropTween,
12895        kill: _killPropTweensOf,
12896        modifier: _addPluginModifier,
12897        rawVars: 0
12898      }, statics = {
12899        targetTest: 0,
12900        get: 0,
12901        getSetter: _getSetter,
12902        aliases: {},
12903        register: 0
12904      };
12905      _wake();
12906      if (config !== Plugin) {
12907        if (_plugins[name]) {
12908          return;
12909        }
12910        _setDefaults$1(Plugin, _setDefaults$1(_copyExcluding(config, instanceDefaults), statics));
12911        _merge(Plugin.prototype, _merge(instanceDefaults, _copyExcluding(config, statics)));
12912        _plugins[Plugin.prop = name] = Plugin;
12913        if (config.targetTest) {
12914          _harnessPlugins.push(Plugin);
12915          _reservedProps[name] = 1;
12916        }
12917        name = (name === "css" ? "CSS" : name.charAt(0).toUpperCase() + name.substr(1)) + "Plugin";
12918      }
12919      _addGlobal(name, Plugin);
12920      config.register && config.register(gsap$2, Plugin, PropTween);
12921    } else {
12922      _registerPluginQueue.push(config);
12923    }
12924  }, _255 = 255, _colorLookup = {
12925    aqua: [0, _255, _255],
12926    lime: [0, _255, 0],
12927    silver: [192, 192, 192],
12928    black: [0, 0, 0],
12929    maroon: [128, 0, 0],
12930    teal: [0, 128, 128],
12931    blue: [0, 0, _255],
12932    navy: [0, 0, 128],
12933    white: [_255, _255, _255],
12934    olive: [128, 128, 0],
12935    yellow: [_255, _255, 0],
12936    orange: [_255, 165, 0],
12937    gray: [128, 128, 128],
12938    purple: [128, 0, 128],
12939    green: [0, 128, 0],
12940    red: [_255, 0, 0],
12941    pink: [_255, 192, 203],
12942    cyan: [0, _255, _255],
12943    transparent: [_255, _255, _255, 0]
12944  }, _hue = function _hue2(h, m1, m2) {
12945    h += h < 0 ? 1 : h > 1 ? -1 : 0;
12946    return (h * 6 < 1 ? m1 + (m2 - m1) * h * 6 : h < 0.5 ? m2 : h * 3 < 2 ? m1 + (m2 - m1) * (2 / 3 - h) * 6 : m1) * _255 + 0.5 | 0;
12947  }, splitColor = function splitColor2(v, toHSL, forceAlpha) {
12948    var a = !v ? _colorLookup.black : _isNumber$1(v) ? [v >> 16, v >> 8 & _255, v & _255] : 0, r, g, b, h, s, l, max, min, d, wasHSL;
12949    if (!a) {
12950      if (v.substr(-1) === ",") {
12951        v = v.substr(0, v.length - 1);
12952      }
12953      if (_colorLookup[v]) {
12954        a = _colorLookup[v];
12955      } else if (v.charAt(0) === "#") {
12956        if (v.length < 6) {
12957          r = v.charAt(1);
12958          g = v.charAt(2);
12959          b = v.charAt(3);
12960          v = "#" + r + r + g + g + b + b + (v.length === 5 ? v.charAt(4) + v.charAt(4) : "");
12961        }
12962        if (v.length === 9) {
12963          a = parseInt(v.substr(1, 6), 16);
12964          return [a >> 16, a >> 8 & _255, a & _255, parseInt(v.substr(7), 16) / 255];
12965        }
12966        v = parseInt(v.substr(1), 16);
12967        a = [v >> 16, v >> 8 & _255, v & _255];
12968      } else if (v.substr(0, 3) === "hsl") {
12969        a = wasHSL = v.match(_strictNumExp);
12970        if (!toHSL) {
12971          h = +a[0] % 360 / 360;
12972          s = +a[1] / 100;
12973          l = +a[2] / 100;
12974          g = l <= 0.5 ? l * (s + 1) : l + s - l * s;
12975          r = l * 2 - g;
12976          a.length > 3 && (a[3] *= 1);
12977          a[0] = _hue(h + 1 / 3, r, g);
12978          a[1] = _hue(h, r, g);
12979          a[2] = _hue(h - 1 / 3, r, g);
12980        } else if (~v.indexOf("=")) {
12981          a = v.match(_numExp);
12982          forceAlpha && a.length < 4 && (a[3] = 1);
12983          return a;
12984        }
12985      } else {
12986        a = v.match(_strictNumExp) || _colorLookup.transparent;
12987      }
12988      a = a.map(Number);
12989    }
12990    if (toHSL && !wasHSL) {
12991      r = a[0] / _255;
12992      g = a[1] / _255;
12993      b = a[2] / _255;
12994      max = Math.max(r, g, b);
12995      min = Math.min(r, g, b);
12996      l = (max + min) / 2;
12997      if (max === min) {
12998        h = s = 0;
12999      } else {
13000        d = max - min;
13001        s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
13002        h = max === r ? (g - b) / d + (g < b ? 6 : 0) : max === g ? (b - r) / d + 2 : (r - g) / d + 4;
13003        h *= 60;
13004      }
13005      a[0] = ~~(h + 0.5);
13006      a[1] = ~~(s * 100 + 0.5);
13007      a[2] = ~~(l * 100 + 0.5);
13008    }
13009    forceAlpha && a.length < 4 && (a[3] = 1);
13010    return a;
13011  }, _colorOrderData = function _colorOrderData2(v) {
13012    var values = [], c = [], i2 = -1;
13013    v.split(_colorExp).forEach(function(v2) {
13014      var a = v2.match(_numWithUnitExp) || [];
13015      values.push.apply(values, a);
13016      c.push(i2 += a.length + 1);
13017    });
13018    values.c = c;
13019    return values;
13020  }, _formatColors = function _formatColors2(s, toHSL, orderMatchData) {
13021    var result = "", colors2 = (s + result).match(_colorExp), type = toHSL ? "hsla(" : "rgba(", i2 = 0, c, shell, d, l;
13022    if (!colors2) {
13023      return s;
13024    }
13025    colors2 = colors2.map(function(color2) {
13026      return (color2 = splitColor(color2, toHSL, 1)) && type + (toHSL ? color2[0] + "," + color2[1] + "%," + color2[2] + "%," + color2[3] : color2.join(",")) + ")";
13027    });
13028    if (orderMatchData) {
13029      d = _colorOrderData(s);
13030      c = orderMatchData.c;
13031      if (c.join(result) !== d.c.join(result)) {
13032        shell = s.replace(_colorExp, "1").split(_numWithUnitExp);
13033        l = shell.length - 1;
13034        for (; i2 < l; i2++) {
13035          result += shell[i2] + (~c.indexOf(i2) ? colors2.shift() || type + "0,0,0,0)" : (d.length ? d : colors2.length ? colors2 : orderMatchData).shift());
13036        }
13037      }
13038    }
13039    if (!shell) {
13040      shell = s.split(_colorExp);
13041      l = shell.length - 1;
13042      for (; i2 < l; i2++) {
13043        result += shell[i2] + colors2[i2];
13044      }
13045    }
13046    return result + shell[l];
13047  }, _colorExp = function() {
13048    var s = "(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#(?:[0-9a-f]{3,4}){1,2}\\b", p;
13049    for (p in _colorLookup) {
13050      s += "|" + p + "\\b";
13051    }
13052    return new RegExp(s + ")", "gi");
13053  }(), _hslExp = /hsl[a]?\(/, _colorStringFilter = function _colorStringFilter2(a) {
13054    var combined = a.join(" "), toHSL;
13055    _colorExp.lastIndex = 0;
13056    if (_colorExp.test(combined)) {
13057      toHSL = _hslExp.test(combined);
13058      a[1] = _formatColors(a[1], toHSL);
13059      a[0] = _formatColors(a[0], toHSL, _colorOrderData(a[1]));
13060      return true;
13061    }
13062  }, _tickerActive, _ticker = function() {
13063    var _getTime2 = Date.now, _lagThreshold = 500, _adjustedLag = 33, _startTime = _getTime2(), _lastUpdate = _startTime, _gap = 1e3 / 240, _nextTime = _gap, _listeners2 = [], _id, _req, _raf, _self, _delta, _i2, _tick = function _tick2(v) {
13064      var elapsed = _getTime2() - _lastUpdate, manual = v === true, overlap, dispatch, time, frame;
13065      (elapsed > _lagThreshold || elapsed < 0) && (_startTime += elapsed - _adjustedLag);
13066      _lastUpdate += elapsed;
13067      time = _lastUpdate - _startTime;
13068      overlap = time - _nextTime;
13069      if (overlap > 0 || manual) {
13070        frame = ++_self.frame;
13071        _delta = time - _self.time * 1e3;
13072        _self.time = time = time / 1e3;
13073        _nextTime += overlap + (overlap >= _gap ? 4 : _gap - overlap);
13074        dispatch = 1;
13075      }
13076      manual || (_id = _req(_tick2));
13077      if (dispatch) {
13078        for (_i2 = 0; _i2 < _listeners2.length; _i2++) {
13079          _listeners2[_i2](time, _delta, frame, v);
13080        }
13081      }
13082    };
13083    _self = {
13084      time: 0,
13085      frame: 0,
13086      tick: function tick() {
13087        _tick(true);
13088      },
13089      deltaRatio: function deltaRatio(fps) {
13090        return _delta / (1e3 / (fps || 60));
13091      },
13092      wake: function wake() {
13093        if (_coreReady) {
13094          if (!_coreInitted$2 && _windowExists$2()) {
13095            _win$3 = _coreInitted$2 = window;
13096            _doc$3 = _win$3.document || {};
13097            _globals.gsap = gsap$2;
13098            (_win$3.gsapVersions || (_win$3.gsapVersions = [])).push(gsap$2.version);
13099            _install(_installScope || _win$3.GreenSockGlobals || !_win$3.gsap && _win$3 || {});
13100            _registerPluginQueue.forEach(_createPlugin);
13101          }
13102          _raf = typeof requestAnimationFrame !== "undefined" && requestAnimationFrame;
13103          _id && _self.sleep();
13104          _req = _raf || function(f) {
13105            return setTimeout(f, _nextTime - _self.time * 1e3 + 1 | 0);
13106          };
13107          _tickerActive = 1;
13108          _tick(2);
13109        }
13110      },
13111      sleep: function sleep() {
13112        (_raf ? cancelAnimationFrame : clearTimeout)(_id);
13113        _tickerActive = 0;
13114        _req = _emptyFunc;
13115      },
13116      lagSmoothing: function lagSmoothing(threshold, adjustedLag) {
13117        _lagThreshold = threshold || Infinity;
13118        _adjustedLag = Math.min(adjustedLag || 33, _lagThreshold);
13119      },
13120      fps: function fps(_fps) {
13121        _gap = 1e3 / (_fps || 240);
13122        _nextTime = _self.time * 1e3 + _gap;
13123      },
13124      add: function add(callback, once, prioritize) {
13125        var func = once ? function(t2, d, f, v) {
13126          callback(t2, d, f, v);
13127          _self.remove(func);
13128        } : callback;
13129        _self.remove(callback);
13130        _listeners2[prioritize ? "unshift" : "push"](func);
13131        _wake();
13132        return func;
13133      },
13134      remove: function remove(callback, i2) {
13135        ~(i2 = _listeners2.indexOf(callback)) && _listeners2.splice(i2, 1) && _i2 >= i2 && _i2--;
13136      },
13137      _listeners: _listeners2
13138    };
13139    return _self;
13140  }(), _wake = function _wake2() {
13141    return !_tickerActive && _ticker.wake();
13142  }, _easeMap = {}, _customEaseExp = /^[\d.\-M][\d.\-,\s]/, _quotesExp = /["']/g, _parseObjectInString = function _parseObjectInString2(value) {
13143    var obj = {}, split = value.substr(1, value.length - 3).split(":"), key = split[0], i2 = 1, l = split.length, index, val, parsedVal;
13144    for (; i2 < l; i2++) {
13145      val = split[i2];
13146      index = i2 !== l - 1 ? val.lastIndexOf(",") : val.length;
13147      parsedVal = val.substr(0, index);
13148      obj[key] = isNaN(parsedVal) ? parsedVal.replace(_quotesExp, "").trim() : +parsedVal;
13149      key = val.substr(index + 1).trim();
13150    }
13151    return obj;
13152  }, _valueInParentheses = function _valueInParentheses2(value) {
13153    var open = value.indexOf("(") + 1, close = value.indexOf(")"), nested = value.indexOf("(", open);
13154    return value.substring(open, ~nested && nested < close ? value.indexOf(")", close + 1) : close);
13155  }, _configEaseFromString = function _configEaseFromString2(name) {
13156    var split = (name + "").split("("), ease = _easeMap[split[0]];
13157    return ease && split.length > 1 && ease.config ? ease.config.apply(null, ~name.indexOf("{") ? [_parseObjectInString(split[1])] : _valueInParentheses(name).split(",").map(_numericIfPossible)) : _easeMap._CE && _customEaseExp.test(name) ? _easeMap._CE("", name) : ease;
13158  }, _invertEase = function _invertEase2(ease) {
13159    return function(p) {
13160      return 1 - ease(1 - p);
13161    };
13162  }, _propagateYoyoEase = function _propagateYoyoEase2(timeline, isYoyo) {
13163    var child = timeline._first, ease;
13164    while (child) {
13165      if (child instanceof Timeline) {
13166        _propagateYoyoEase2(child, isYoyo);
13167      } else if (child.vars.yoyoEase && (!child._yoyo || !child._repeat) && child._yoyo !== isYoyo) {
13168        if (child.timeline) {
13169          _propagateYoyoEase2(child.timeline, isYoyo);
13170        } else {
13171          ease = child._ease;
13172          child._ease = child._yEase;
13173          child._yEase = ease;
13174          child._yoyo = isYoyo;
13175        }
13176      }
13177      child = child._next;
13178    }
13179  }, _parseEase = function _parseEase2(ease, defaultEase) {
13180    return !ease ? defaultEase : (_isFunction$1(ease) ? ease : _easeMap[ease] || _configEaseFromString(ease)) || defaultEase;
13181  }, _insertEase = function _insertEase2(names, easeIn, easeOut, easeInOut) {
13182    if (easeOut === void 0) {
13183      easeOut = function easeOut2(p) {
13184        return 1 - easeIn(1 - p);
13185      };
13186    }
13187    if (easeInOut === void 0) {
13188      easeInOut = function easeInOut2(p) {
13189        return p < 0.5 ? easeIn(p * 2) / 2 : 1 - easeIn((1 - p) * 2) / 2;
13190      };
13191    }
13192    var ease = {
13193      easeIn,
13194      easeOut,
13195      easeInOut
13196    }, lowercaseName;
13197    _forEachName(names, function(name) {
13198      _easeMap[name] = _globals[name] = ease;
13199      _easeMap[lowercaseName = name.toLowerCase()] = easeOut;
13200      for (var p in ease) {
13201        _easeMap[lowercaseName + (p === "easeIn" ? ".in" : p === "easeOut" ? ".out" : ".inOut")] = _easeMap[name + "." + p] = ease[p];
13202      }
13203    });
13204    return ease;
13205  }, _easeInOutFromOut = function _easeInOutFromOut2(easeOut) {
13206    return function(p) {
13207      return p < 0.5 ? (1 - easeOut(1 - p * 2)) / 2 : 0.5 + easeOut((p - 0.5) * 2) / 2;
13208    };
13209  }, _configElastic = function _configElastic2(type, amplitude, period) {
13210    var p1 = amplitude >= 1 ? amplitude : 1, p2 = (period || (type ? 0.3 : 0.45)) / (amplitude < 1 ? amplitude : 1), p3 = p2 / _2PI * (Math.asin(1 / p1) || 0), easeOut = function easeOut2(p) {
13211      return p === 1 ? 1 : p1 * Math.pow(2, -10 * p) * _sin((p - p3) * p2) + 1;
13212    }, ease = type === "out" ? easeOut : type === "in" ? function(p) {
13213      return 1 - easeOut(1 - p);
13214    } : _easeInOutFromOut(easeOut);
13215    p2 = _2PI / p2;
13216    ease.config = function(amplitude2, period2) {
13217      return _configElastic2(type, amplitude2, period2);
13218    };
13219    return ease;
13220  }, _configBack = function _configBack2(type, overshoot) {
13221    if (overshoot === void 0) {
13222      overshoot = 1.70158;
13223    }
13224    var easeOut = function easeOut2(p) {
13225      return p ? --p * p * ((overshoot + 1) * p + overshoot) + 1 : 0;
13226    }, ease = type === "out" ? easeOut : type === "in" ? function(p) {
13227      return 1 - easeOut(1 - p);
13228    } : _easeInOutFromOut(easeOut);
13229    ease.config = function(overshoot2) {
13230      return _configBack2(type, overshoot2);
13231    };
13232    return ease;
13233  };
13234  _forEachName("Linear,Quad,Cubic,Quart,Quint,Strong", function(name, i2) {
13235    var power = i2 < 5 ? i2 + 1 : i2;
13236    _insertEase(name + ",Power" + (power - 1), i2 ? function(p) {
13237      return Math.pow(p, power);
13238    } : function(p) {
13239      return p;
13240    }, function(p) {
13241      return 1 - Math.pow(1 - p, power);
13242    }, function(p) {
13243      return p < 0.5 ? Math.pow(p * 2, power) / 2 : 1 - Math.pow((1 - p) * 2, power) / 2;
13244    });
13245  });
13246  _easeMap.Linear.easeNone = _easeMap.none = _easeMap.Linear.easeIn;
13247  _insertEase("Elastic", _configElastic("in"), _configElastic("out"), _configElastic());
13248  (function(n, c) {
13249    var n1 = 1 / c, n2 = 2 * n1, n3 = 2.5 * n1, easeOut = function easeOut2(p) {
13250      return p < n1 ? n * p * p : p < n2 ? n * Math.pow(p - 1.5 / c, 2) + 0.75 : p < n3 ? n * (p -= 2.25 / c) * p + 0.9375 : n * Math.pow(p - 2.625 / c, 2) + 0.984375;
13251    };
13252    _insertEase("Bounce", function(p) {
13253      return 1 - easeOut(1 - p);
13254    }, easeOut);
13255  })(7.5625, 2.75);
13256  _insertEase("Expo", function(p) {
13257    return p ? Math.pow(2, 10 * (p - 1)) : 0;
13258  });
13259  _insertEase("Circ", function(p) {
13260    return -(_sqrt(1 - p * p) - 1);
13261  });
13262  _insertEase("Sine", function(p) {
13263    return p === 1 ? 1 : -_cos(p * _HALF_PI) + 1;
13264  });
13265  _insertEase("Back", _configBack("in"), _configBack("out"), _configBack());
13266  _easeMap.SteppedEase = _easeMap.steps = _globals.SteppedEase = {
13267    config: function config(steps, immediateStart) {
13268      if (steps === void 0) {
13269        steps = 1;
13270      }
13271      var p1 = 1 / steps, p2 = steps + (immediateStart ? 0 : 1), p3 = immediateStart ? 1 : 0, max = 1 - _tinyNum;
13272      return function(p) {
13273        return ((p2 * _clamp$1(0, max, p) | 0) + p3) * p1;
13274      };
13275    }
13276  };
13277  _defaults$1.ease = _easeMap["quad.out"];
13278  _forEachName("onComplete,onUpdate,onStart,onRepeat,onReverseComplete,onInterrupt", function(name) {
13279    return _callbackNames += name + "," + name + "Params,";
13280  });
13281  var GSCache = function GSCache2(target, harness) {
13282    this.id = _gsID++;
13283    target._gsap = this;
13284    this.target = target;
13285    this.harness = harness;
13286    this.get = harness ? harness.get : _getProperty;
13287    this.set = harness ? harness.getSetter : _getSetter;
13288  };
13289  var Animation = /* @__PURE__ */ function() {
13290    function Animation2(vars) {
13291      this.vars = vars;
13292      this._delay = +vars.delay || 0;
13293      if (this._repeat = vars.repeat === Infinity ? -2 : vars.repeat || 0) {
13294        this._rDelay = vars.repeatDelay || 0;
13295        this._yoyo = !!vars.yoyo || !!vars.yoyoEase;
13296      }
13297      this._ts = 1;
13298      _setDuration(this, +vars.duration, 1, 1);
13299      this.data = vars.data;
13300      if (_context$2) {
13301        this._ctx = _context$2;
13302        _context$2.data.push(this);
13303      }
13304      _tickerActive || _ticker.wake();
13305    }
13306    var _proto = Animation2.prototype;
13307    _proto.delay = function delay(value) {
13308      if (value || value === 0) {
13309        this.parent && this.parent.smoothChildTiming && this.startTime(this._start + value - this._delay);
vendor: 16,240 bytes, lines 13310-13685
13310        this._delay = value;
13311        return this;
13312      }
13313      return this._delay;
13314    };
13315    _proto.duration = function duration(value) {
13316      return arguments.length ? this.totalDuration(this._repeat > 0 ? value + (value + this._rDelay) * this._repeat : value) : this.totalDuration() && this._dur;
13317    };
13318    _proto.totalDuration = function totalDuration(value) {
13319      if (!arguments.length) {
13320        return this._tDur;
13321      }
13322      this._dirty = 0;
13323      return _setDuration(this, this._repeat < 0 ? value : (value - this._repeat * this._rDelay) / (this._repeat + 1));
13324    };
13325    _proto.totalTime = function totalTime(_totalTime, suppressEvents) {
13326      _wake();
13327      if (!arguments.length) {
13328        return this._tTime;
13329      }
13330      var parent = this._dp;
13331      if (parent && parent.smoothChildTiming && this._ts) {
13332        _alignPlayhead(this, _totalTime);
13333        !parent._dp || parent.parent || _postAddChecks(parent, this);
13334        while (parent && parent.parent) {
13335          if (parent.parent._time !== parent._start + (parent._ts >= 0 ? parent._tTime / parent._ts : (parent.totalDuration() - parent._tTime) / -parent._ts)) {
13336            parent.totalTime(parent._tTime, true);
13337          }
13338          parent = parent.parent;
13339        }
13340        if (!this.parent && this._dp.autoRemoveChildren && (this._ts > 0 && _totalTime < this._tDur || this._ts < 0 && _totalTime > 0 || !this._tDur && !_totalTime)) {
13341          _addToTimeline(this._dp, this, this._start - this._delay);
13342        }
13343      }
13344      if (this._tTime !== _totalTime || !this._dur && !suppressEvents || this._initted && Math.abs(this._zTime) === _tinyNum || !_totalTime && !this._initted && (this.add || this._ptLookup)) {
13345        this._ts || (this._pTime = _totalTime);
13346        _lazySafeRender(this, _totalTime, suppressEvents);
13347      }
13348      return this;
13349    };
13350    _proto.time = function time(value, suppressEvents) {
13351      return arguments.length ? this.totalTime(Math.min(this.totalDuration(), value + _elapsedCycleDuration(this)) % (this._dur + this._rDelay) || (value ? this._dur : 0), suppressEvents) : this._time;
13352    };
13353    _proto.totalProgress = function totalProgress(value, suppressEvents) {
13354      return arguments.length ? this.totalTime(this.totalDuration() * value, suppressEvents) : this.totalDuration() ? Math.min(1, this._tTime / this._tDur) : this.rawTime() > 0 ? 1 : 0;
13355    };
13356    _proto.progress = function progress(value, suppressEvents) {
13357      return arguments.length ? this.totalTime(this.duration() * (this._yoyo && !(this.iteration() & 1) ? 1 - value : value) + _elapsedCycleDuration(this), suppressEvents) : this.duration() ? Math.min(1, this._time / this._dur) : this.rawTime() > 0 ? 1 : 0;
13358    };
13359    _proto.iteration = function iteration(value, suppressEvents) {
13360      var cycleDuration = this.duration() + this._rDelay;
13361      return arguments.length ? this.totalTime(this._time + (value - 1) * cycleDuration, suppressEvents) : this._repeat ? _animationCycle(this._tTime, cycleDuration) + 1 : 1;
13362    };
13363    _proto.timeScale = function timeScale(value, suppressEvents) {
13364      if (!arguments.length) {
13365        return this._rts === -1e-8 ? 0 : this._rts;
13366      }
13367      if (this._rts === value) {
13368        return this;
13369      }
13370      var tTime = this.parent && this._ts ? _parentToChildTotalTime(this.parent._time, this) : this._tTime;
13371      this._rts = +value || 0;
13372      this._ts = this._ps || value === -1e-8 ? 0 : this._rts;
13373      this.totalTime(_clamp$1(-Math.abs(this._delay), this._tDur, tTime), suppressEvents !== false);
13374      _setEnd(this);
13375      return _recacheAncestors(this);
13376    };
13377    _proto.paused = function paused(value) {
13378      if (!arguments.length) {
13379        return this._ps;
13380      }
13381      if (this._ps !== value) {
13382        this._ps = value;
13383        if (value) {
13384          this._pTime = this._tTime || Math.max(-this._delay, this.rawTime());
13385          this._ts = this._act = 0;
13386        } else {
13387          _wake();
13388          this._ts = this._rts;
13389          this.totalTime(this.parent && !this.parent.smoothChildTiming ? this.rawTime() : this._tTime || this._pTime, this.progress() === 1 && Math.abs(this._zTime) !== _tinyNum && (this._tTime -= _tinyNum));
13390        }
13391      }
13392      return this;
13393    };
13394    _proto.startTime = function startTime(value) {
13395      if (arguments.length) {
13396        this._start = value;
13397        var parent = this.parent || this._dp;
13398        parent && (parent._sort || !this.parent) && _addToTimeline(parent, this, value - this._delay);
13399        return this;
13400      }
13401      return this._start;
13402    };
13403    _proto.endTime = function endTime(includeRepeats) {
13404      return this._start + (_isNotFalse(includeRepeats) ? this.totalDuration() : this.duration()) / Math.abs(this._ts || 1);
13405    };
13406    _proto.rawTime = function rawTime(wrapRepeats) {
13407      var parent = this.parent || this._dp;
13408      return !parent ? this._tTime : wrapRepeats && (!this._ts || this._repeat && this._time && this.totalProgress() < 1) ? this._tTime % (this._dur + this._rDelay) : !this._ts ? this._tTime : _parentToChildTotalTime(parent.rawTime(wrapRepeats), this);
13409    };
13410    _proto.revert = function revert(config) {
13411      if (config === void 0) {
13412        config = _revertConfig;
13413      }
13414      var prevIsReverting = _reverting$1;
13415      _reverting$1 = config;
13416      if (this._initted || this._startAt) {
13417        this.timeline && this.timeline.revert(config);
13418        this.totalTime(-0.01, config.suppressEvents);
13419      }
13420      this.data !== "nested" && config.kill !== false && this.kill();
13421      _reverting$1 = prevIsReverting;
13422      return this;
13423    };
13424    _proto.globalTime = function globalTime(rawTime) {
13425      var animation = this, time = arguments.length ? rawTime : animation.rawTime();
13426      while (animation) {
13427        time = animation._start + time / (Math.abs(animation._ts) || 1);
13428        animation = animation._dp;
13429      }
13430      return !this.parent && this._sat ? this._sat.globalTime(rawTime) : time;
13431    };
13432    _proto.repeat = function repeat(value) {
13433      if (arguments.length) {
13434        this._repeat = value === Infinity ? -2 : value;
13435        return _onUpdateTotalDuration(this);
13436      }
13437      return this._repeat === -2 ? Infinity : this._repeat;
13438    };
13439    _proto.repeatDelay = function repeatDelay(value) {
13440      if (arguments.length) {
13441        var time = this._time;
13442        this._rDelay = value;
13443        _onUpdateTotalDuration(this);
13444        return time ? this.time(time) : this;
13445      }
13446      return this._rDelay;
13447    };
13448    _proto.yoyo = function yoyo(value) {
13449      if (arguments.length) {
13450        this._yoyo = value;
13451        return this;
13452      }
13453      return this._yoyo;
13454    };
13455    _proto.seek = function seek(position, suppressEvents) {
13456      return this.totalTime(_parsePosition$1(this, position), _isNotFalse(suppressEvents));
13457    };
13458    _proto.restart = function restart(includeDelay, suppressEvents) {
13459      return this.play().totalTime(includeDelay ? -this._delay : 0, _isNotFalse(suppressEvents));
13460    };
13461    _proto.play = function play(from, suppressEvents) {
13462      from != null && this.seek(from, suppressEvents);
13463      return this.reversed(false).paused(false);
13464    };
13465    _proto.reverse = function reverse(from, suppressEvents) {
13466      from != null && this.seek(from || this.totalDuration(), suppressEvents);
13467      return this.reversed(true).paused(false);
13468    };
13469    _proto.pause = function pause(atTime, suppressEvents) {
13470      atTime != null && this.seek(atTime, suppressEvents);
13471      return this.paused(true);
13472    };
13473    _proto.resume = function resume() {
13474      return this.paused(false);
13475    };
13476    _proto.reversed = function reversed(value) {
13477      if (arguments.length) {
13478        !!value !== this.reversed() && this.timeScale(-this._rts || (value ? -1e-8 : 0));
13479        return this;
13480      }
13481      return this._rts < 0;
13482    };
13483    _proto.invalidate = function invalidate() {
13484      this._initted = this._act = 0;
13485      this._zTime = -1e-8;
13486      return this;
13487    };
13488    _proto.isActive = function isActive() {
13489      var parent = this.parent || this._dp, start = this._start, rawTime;
13490      return !!(!parent || this._ts && this._initted && parent.isActive() && (rawTime = parent.rawTime(true)) >= start && rawTime < this.endTime(true) - _tinyNum);
13491    };
13492    _proto.eventCallback = function eventCallback(type, callback, params) {
13493      var vars = this.vars;
13494      if (arguments.length > 1) {
13495        if (!callback) {
13496          delete vars[type];
13497        } else {
13498          vars[type] = callback;
13499          params && (vars[type + "Params"] = params);
13500          type === "onUpdate" && (this._onUpdate = callback);
13501        }
13502        return this;
13503      }
13504      return vars[type];
13505    };
13506    _proto.then = function then(onFulfilled) {
13507      var self2 = this;
13508      return new Promise(function(resolve) {
13509        var f = _isFunction$1(onFulfilled) ? onFulfilled : _passThrough$1, _resolve = function _resolve2() {
13510          var _then = self2.then;
13511          self2.then = null;
13512          _isFunction$1(f) && (f = f(self2)) && (f.then || f === self2) && (self2.then = _then);
13513          resolve(f);
13514          self2.then = _then;
13515        };
13516        if (self2._initted && self2.totalProgress() === 1 && self2._ts >= 0 || !self2._tTime && self2._ts < 0) {
13517          _resolve();
13518        } else {
13519          self2._prom = _resolve;
13520        }
13521      });
13522    };
13523    _proto.kill = function kill() {
13524      _interrupt(this);
13525    };
13526    return Animation2;
13527  }();
13528  _setDefaults$1(Animation.prototype, {
13529    _time: 0,
13530    _start: 0,
13531    _end: 0,
13532    _tTime: 0,
13533    _tDur: 0,
13534    _dirty: 0,
13535    _repeat: 0,
13536    _yoyo: false,
13537    parent: null,
13538    _initted: false,
13539    _rDelay: 0,
13540    _ts: 1,
13541    _dp: 0,
13542    ratio: 0,
13543    _zTime: -1e-8,
13544    _prom: 0,
13545    _ps: false,
13546    _rts: 1
13547  });
13548  var Timeline = /* @__PURE__ */ function(_Animation) {
13549    _inheritsLoose(Timeline2, _Animation);
13550    function Timeline2(vars, position) {
13551      var _this;
13552      if (vars === void 0) {
13553        vars = {};
13554      }
13555      _this = _Animation.call(this, vars) || this;
13556      _this.labels = {};
13557      _this.smoothChildTiming = !!vars.smoothChildTiming;
13558      _this.autoRemoveChildren = !!vars.autoRemoveChildren;
13559      _this._sort = _isNotFalse(vars.sortChildren);
13560      _globalTimeline && _addToTimeline(vars.parent || _globalTimeline, _assertThisInitialized(_this), position);
13561      vars.reversed && _this.reverse();
13562      vars.paused && _this.paused(true);
13563      vars.scrollTrigger && _scrollTrigger(_assertThisInitialized(_this), vars.scrollTrigger);
13564      return _this;
13565    }
13566    var _proto2 = Timeline2.prototype;
13567    _proto2.to = function to(targets, vars, position) {
13568      _createTweenType(0, arguments, this);
13569      return this;
13570    };
13571    _proto2.from = function from(targets, vars, position) {
13572      _createTweenType(1, arguments, this);
13573      return this;
13574    };
13575    _proto2.fromTo = function fromTo(targets, fromVars, toVars, position) {
13576      _createTweenType(2, arguments, this);
13577      return this;
13578    };
13579    _proto2.set = function set(targets, vars, position) {
13580      vars.duration = 0;
13581      vars.parent = this;
13582      _inheritDefaults(vars).repeatDelay || (vars.repeat = 0);
13583      vars.immediateRender = !!vars.immediateRender;
13584      new Tween(targets, vars, _parsePosition$1(this, position), 1);
13585      return this;
13586    };
13587    _proto2.call = function call(callback, params, position) {
13588      return _addToTimeline(this, Tween.delayedCall(0, callback, params), position);
13589    };
13590    _proto2.staggerTo = function staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {
13591      vars.duration = duration;
13592      vars.stagger = vars.stagger || stagger;
13593      vars.onComplete = onCompleteAll;
13594      vars.onCompleteParams = onCompleteAllParams;
13595      vars.parent = this;
13596      new Tween(targets, vars, _parsePosition$1(this, position));
13597      return this;
13598    };
13599    _proto2.staggerFrom = function staggerFrom(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {
13600      vars.runBackwards = 1;
13601      _inheritDefaults(vars).immediateRender = _isNotFalse(vars.immediateRender);
13602      return this.staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams);
13603    };
13604    _proto2.staggerFromTo = function staggerFromTo(targets, duration, fromVars, toVars, stagger, position, onCompleteAll, onCompleteAllParams) {
13605      toVars.startAt = fromVars;
13606      _inheritDefaults(toVars).immediateRender = _isNotFalse(toVars.immediateRender);
13607      return this.staggerTo(targets, duration, toVars, stagger, position, onCompleteAll, onCompleteAllParams);
13608    };
13609    _proto2.render = function render(totalTime, suppressEvents, force) {
13610      var prevTime = this._time, tDur = this._dirty ? this.totalDuration() : this._tDur, dur = this._dur, tTime = totalTime <= 0 ? 0 : _roundPrecise(totalTime), crossingStart = this._zTime < 0 !== totalTime < 0 && (this._initted || !dur), time, child, next, iteration, cycleDuration, prevPaused, pauseTween, timeScale, prevStart, prevIteration, yoyo, isYoyo;
13611      this !== _globalTimeline && tTime > tDur && totalTime >= 0 && (tTime = tDur);
13612      if (tTime !== this._tTime || force || crossingStart) {
13613        if (prevTime !== this._time && dur) {
13614          tTime += this._time - prevTime;
13615          totalTime += this._time - prevTime;
13616        }
13617        time = tTime;
13618        prevStart = this._start;
13619        timeScale = this._ts;
13620        prevPaused = !timeScale;
13621        if (crossingStart) {
13622          dur || (prevTime = this._zTime);
13623          (totalTime || !suppressEvents) && (this._zTime = totalTime);
13624        }
13625        if (this._repeat) {
13626          yoyo = this._yoyo;
13627          cycleDuration = dur + this._rDelay;
13628          if (this._repeat < -1 && totalTime < 0) {
13629            return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);
13630          }
13631          time = _roundPrecise(tTime % cycleDuration);
13632          if (tTime === tDur) {
13633            iteration = this._repeat;
13634            time = dur;
13635          } else {
13636            iteration = ~~(tTime / cycleDuration);
13637            if (iteration && iteration === tTime / cycleDuration) {
13638              time = dur;
13639              iteration--;
13640            }
13641            time > dur && (time = dur);
13642          }
13643          prevIteration = _animationCycle(this._tTime, cycleDuration);
13644          !prevTime && this._tTime && prevIteration !== iteration && this._tTime - prevIteration * cycleDuration - this._dur <= 0 && (prevIteration = iteration);
13645          if (yoyo && iteration & 1) {
13646            time = dur - time;
13647            isYoyo = 1;
13648          }
13649          if (iteration !== prevIteration && !this._lock) {
13650            var rewinding = yoyo && prevIteration & 1, doesWrap = rewinding === (yoyo && iteration & 1);
13651            iteration < prevIteration && (rewinding = !rewinding);
13652            prevTime = rewinding ? 0 : tTime % dur ? dur : tTime;
13653            this._lock = 1;
13654            this.render(prevTime || (isYoyo ? 0 : _roundPrecise(iteration * cycleDuration)), suppressEvents, !dur)._lock = 0;
13655            this._tTime = tTime;
13656            !suppressEvents && this.parent && _callback$1(this, "onRepeat");
13657            this.vars.repeatRefresh && !isYoyo && (this.invalidate()._lock = 1);
13658            if (prevTime && prevTime !== this._time || prevPaused !== !this._ts || this.vars.onRepeat && !this.parent && !this._act) {
13659              return this;
13660            }
13661            dur = this._dur;
13662            tDur = this._tDur;
13663            if (doesWrap) {
13664              this._lock = 2;
13665              prevTime = rewinding ? dur : -1e-4;
13666              this.render(prevTime, true);
13667              this.vars.repeatRefresh && !isYoyo && this.invalidate();
13668            }
13669            this._lock = 0;
13670            if (!this._ts && !prevPaused) {
13671              return this;
13672            }
13673            _propagateYoyoEase(this, isYoyo);
13674          }
13675        }
13676        if (this._hasPause && !this._forcing && this._lock < 2) {
13677          pauseTween = _findNextPauseTween(this, _roundPrecise(prevTime), _roundPrecise(time));
13678          if (pauseTween) {
13679            tTime -= time - (time = pauseTween._start);
13680          }
13681        }
13682        this._tTime = tTime;
13683        this._time = time;
13684        this._act = !timeScale;
13685        if (!this._initted) {
vendor: 2,423 bytes, lines 13686-13741
13686          this._onUpdate = this.vars.onUpdate;
13687          this._initted = 1;
13688          this._zTime = totalTime;
13689          prevTime = 0;
13690        }
13691        if (!prevTime && time && !suppressEvents && !iteration) {
13692          _callback$1(this, "onStart");
13693          if (this._tTime !== tTime) {
13694            return this;
13695          }
13696        }
13697        if (time >= prevTime && totalTime >= 0) {
13698          child = this._first;
13699          while (child) {
13700            next = child._next;
13701            if ((child._act || time >= child._start) && child._ts && pauseTween !== child) {
13702              if (child.parent !== this) {
13703                return this.render(totalTime, suppressEvents, force);
13704              }
13705              child.render(child._ts > 0 ? (time - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (time - child._start) * child._ts, suppressEvents, force);
13706              if (time !== this._time || !this._ts && !prevPaused) {
13707                pauseTween = 0;
13708                next && (tTime += this._zTime = -1e-8);
13709                break;
13710              }
13711            }
13712            child = next;
13713          }
13714        } else {
13715          child = this._last;
13716          var adjustedTime = totalTime < 0 ? totalTime : time;
13717          while (child) {
13718            next = child._prev;
13719            if ((child._act || adjustedTime <= child._end) && child._ts && pauseTween !== child) {
13720              if (child.parent !== this) {
13721                return this.render(totalTime, suppressEvents, force);
13722              }
13723              child.render(child._ts > 0 ? (adjustedTime - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (adjustedTime - child._start) * child._ts, suppressEvents, force || _reverting$1 && (child._initted || child._startAt));
13724              if (time !== this._time || !this._ts && !prevPaused) {
13725                pauseTween = 0;
13726                next && (tTime += this._zTime = adjustedTime ? -1e-8 : _tinyNum);
13727                break;
13728              }
13729            }
13730            child = next;
13731          }
13732        }
13733        if (pauseTween && !suppressEvents) {
13734          this.pause();
13735          pauseTween.render(time >= prevTime ? 0 : -1e-8)._zTime = time >= prevTime ? 1 : -1;
13736          if (this._ts) {
13737            this._start = prevStart;
13738            _setEnd(this);
13739            return this.render(totalTime, suppressEvents, force);
13740          }
13741        }
vendor: 7,936 bytes, lines 13742-13949
13742        this._onUpdate && !suppressEvents && _callback$1(this, "onUpdate", true);
13743        if (tTime === tDur && this._tTime >= this.totalDuration() || !tTime && prevTime) {
13744          if (prevStart === this._start || Math.abs(timeScale) !== Math.abs(this._ts)) {
13745            if (!this._lock) {
13746              (totalTime || !dur) && (tTime === tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1);
13747              if (!suppressEvents && !(totalTime < 0 && !prevTime) && (tTime || prevTime || !tDur)) {
13748                _callback$1(this, tTime === tDur && totalTime >= 0 ? "onComplete" : "onReverseComplete", true);
13749                this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();
13750              }
13751            }
13752          }
13753        }
13754      }
13755      return this;
13756    };
13757    _proto2.add = function add(child, position) {
13758      var _this2 = this;
13759      _isNumber$1(position) || (position = _parsePosition$1(this, position, child));
13760      if (!(child instanceof Animation)) {
13761        if (_isArray(child)) {
13762          child.forEach(function(obj) {
13763            return _this2.add(obj, position);
13764          });
13765          return this;
13766        }
13767        if (_isString$1(child)) {
13768          return this.addLabel(child, position);
13769        }
13770        if (_isFunction$1(child)) {
13771          child = Tween.delayedCall(0, child);
13772        } else {
13773          return this;
13774        }
13775      }
13776      return this !== child ? _addToTimeline(this, child, position) : this;
13777    };
13778    _proto2.getChildren = function getChildren(nested, tweens, timelines, ignoreBeforeTime) {
13779      if (nested === void 0) {
13780        nested = true;
13781      }
13782      if (tweens === void 0) {
13783        tweens = true;
13784      }
13785      if (timelines === void 0) {
13786        timelines = true;
13787      }
13788      if (ignoreBeforeTime === void 0) {
13789        ignoreBeforeTime = -1e8;
13790      }
13791      var a = [], child = this._first;
13792      while (child) {
13793        if (child._start >= ignoreBeforeTime) {
13794          if (child instanceof Tween) {
13795            tweens && a.push(child);
13796          } else {
13797            timelines && a.push(child);
13798            nested && a.push.apply(a, child.getChildren(true, tweens, timelines));
13799          }
13800        }
13801        child = child._next;
13802      }
13803      return a;
13804    };
13805    _proto2.getById = function getById(id) {
13806      var animations = this.getChildren(1, 1, 1), i2 = animations.length;
13807      while (i2--) {
13808        if (animations[i2].vars.id === id) {
13809          return animations[i2];
13810        }
13811      }
13812    };
13813    _proto2.remove = function remove(child) {
13814      if (_isString$1(child)) {
13815        return this.removeLabel(child);
13816      }
13817      if (_isFunction$1(child)) {
13818        return this.killTweensOf(child);
13819      }
13820      _removeLinkedListItem(this, child);
13821      if (child === this._recent) {
13822        this._recent = this._last;
13823      }
13824      return _uncache(this);
13825    };
13826    _proto2.totalTime = function totalTime(_totalTime2, suppressEvents) {
13827      if (!arguments.length) {
13828        return this._tTime;
13829      }
13830      this._forcing = 1;
13831      if (!this._dp && this._ts) {
13832        this._start = _roundPrecise(_ticker.time - (this._ts > 0 ? _totalTime2 / this._ts : (this.totalDuration() - _totalTime2) / -this._ts));
13833      }
13834      _Animation.prototype.totalTime.call(this, _totalTime2, suppressEvents);
13835      this._forcing = 0;
13836      return this;
13837    };
13838    _proto2.addLabel = function addLabel(label, position) {
13839      this.labels[label] = _parsePosition$1(this, position);
13840      return this;
13841    };
13842    _proto2.removeLabel = function removeLabel(label) {
13843      delete this.labels[label];
13844      return this;
13845    };
13846    _proto2.addPause = function addPause(position, callback, params) {
13847      var t2 = Tween.delayedCall(0, callback || _emptyFunc, params);
13848      t2.data = "isPause";
13849      this._hasPause = 1;
13850      return _addToTimeline(this, t2, _parsePosition$1(this, position));
13851    };
13852    _proto2.removePause = function removePause(position) {
13853      var child = this._first;
13854      position = _parsePosition$1(this, position);
13855      while (child) {
13856        if (child._start === position && child.data === "isPause") {
13857          _removeFromParent(child);
13858        }
13859        child = child._next;
13860      }
13861    };
13862    _proto2.killTweensOf = function killTweensOf(targets, props, onlyActive) {
13863      var tweens = this.getTweensOf(targets, onlyActive), i2 = tweens.length;
13864      while (i2--) {
13865        _overwritingTween !== tweens[i2] && tweens[i2].kill(targets, props);
13866      }
13867      return this;
13868    };
13869    _proto2.getTweensOf = function getTweensOf(targets, onlyActive) {
13870      var a = [], parsedTargets = toArray(targets), child = this._first, isGlobalTime = _isNumber$1(onlyActive), children;
13871      while (child) {
13872        if (child instanceof Tween) {
13873          if (_arrayContainsAny(child._targets, parsedTargets) && (isGlobalTime ? (!_overwritingTween || child._initted && child._ts) && child.globalTime(0) <= onlyActive && child.globalTime(child.totalDuration()) > onlyActive : !onlyActive || child.isActive())) {
13874            a.push(child);
13875          }
13876        } else if ((children = child.getTweensOf(parsedTargets, onlyActive)).length) {
13877          a.push.apply(a, children);
13878        }
13879        child = child._next;
13880      }
13881      return a;
13882    };
13883    _proto2.tweenTo = function tweenTo(position, vars) {
13884      vars = vars || {};
13885      var tl = this, endTime = _parsePosition$1(tl, position), _vars = vars, startAt = _vars.startAt, _onStart = _vars.onStart, onStartParams = _vars.onStartParams, immediateRender = _vars.immediateRender, initted, tween = Tween.to(tl, _setDefaults$1({
13886        ease: vars.ease || "none",
13887        lazy: false,
13888        immediateRender: false,
13889        time: endTime,
13890        overwrite: "auto",
13891        duration: vars.duration || Math.abs((endTime - (startAt && "time" in startAt ? startAt.time : tl._time)) / tl.timeScale()) || _tinyNum,
13892        onStart: function onStart() {
13893          tl.pause();
13894          if (!initted) {
13895            var duration = vars.duration || Math.abs((endTime - (startAt && "time" in startAt ? startAt.time : tl._time)) / tl.timeScale());
13896            tween._dur !== duration && _setDuration(tween, duration, 0, 1).render(tween._time, true, true);
13897            initted = 1;
13898          }
13899          _onStart && _onStart.apply(tween, onStartParams || []);
13900        }
13901      }, vars));
13902      return immediateRender ? tween.render(0) : tween;
13903    };
13904    _proto2.tweenFromTo = function tweenFromTo(fromPosition, toPosition, vars) {
13905      return this.tweenTo(toPosition, _setDefaults$1({
13906        startAt: {
13907          time: _parsePosition$1(this, fromPosition)
13908        }
13909      }, vars));
13910    };
13911    _proto2.recent = function recent() {
13912      return this._recent;
13913    };
13914    _proto2.nextLabel = function nextLabel(afterTime) {
13915      if (afterTime === void 0) {
13916        afterTime = this._time;
13917      }
13918      return _getLabelInDirection(this, _parsePosition$1(this, afterTime));
13919    };
13920    _proto2.previousLabel = function previousLabel(beforeTime) {
13921      if (beforeTime === void 0) {
13922        beforeTime = this._time;
13923      }
13924      return _getLabelInDirection(this, _parsePosition$1(this, beforeTime), 1);
13925    };
13926    _proto2.currentLabel = function currentLabel(value) {
13927      return arguments.length ? this.seek(value, true) : this.previousLabel(this._time + _tinyNum);
13928    };
13929    _proto2.shiftChildren = function shiftChildren(amount, adjustLabels, ignoreBeforeTime) {
13930      if (ignoreBeforeTime === void 0) {
13931        ignoreBeforeTime = 0;
13932      }
13933      var child = this._first, labels = this.labels, p;
13934      while (child) {
13935        if (child._start >= ignoreBeforeTime) {
13936          child._start += amount;
13937          child._end += amount;
13938        }
13939        child = child._next;
13940      }
13941      if (adjustLabels) {
13942        for (p in labels) {
13943          if (labels[p] >= ignoreBeforeTime) {
13944            labels[p] += amount;
13945          }
13946        }
13947      }
13948      return _uncache(this);
13949    };
vendor: 7,521 bytes, lines 13950-14124
13950    _proto2.invalidate = function invalidate(soft) {
13951      var child = this._first;
13952      this._lock = 0;
13953      while (child) {
13954        child.invalidate(soft);
13955        child = child._next;
13956      }
13957      return _Animation.prototype.invalidate.call(this, soft);
13958    };
13959    _proto2.clear = function clear(includeLabels) {
13960      if (includeLabels === void 0) {
13961        includeLabels = true;
13962      }
13963      var child = this._first, next;
13964      while (child) {
13965        next = child._next;
13966        this.remove(child);
13967        child = next;
13968      }
13969      this._dp && (this._time = this._tTime = this._pTime = 0);
13970      includeLabels && (this.labels = {});
13971      return _uncache(this);
13972    };
13973    _proto2.totalDuration = function totalDuration(value) {
13974      var max = 0, self2 = this, child = self2._last, prevStart = _bigNum$1, prev, start, parent;
13975      if (arguments.length) {
13976        return self2.timeScale((self2._repeat < 0 ? self2.duration() : self2.totalDuration()) / (self2.reversed() ? -value : value));
13977      }
13978      if (self2._dirty) {
13979        parent = self2.parent;
13980        while (child) {
13981          prev = child._prev;
13982          child._dirty && child.totalDuration();
13983          start = child._start;
13984          if (start > prevStart && self2._sort && child._ts && !self2._lock) {
13985            self2._lock = 1;
13986            _addToTimeline(self2, child, start - child._delay, 1)._lock = 0;
13987          } else {
13988            prevStart = start;
13989          }
13990          if (start < 0 && child._ts) {
13991            max -= start;
13992            if (!parent && !self2._dp || parent && parent.smoothChildTiming) {
13993              self2._start += start / self2._ts;
13994              self2._time -= start;
13995              self2._tTime -= start;
13996            }
13997            self2.shiftChildren(-start, false, -Infinity);
13998            prevStart = 0;
13999          }
14000          child._end > max && child._ts && (max = child._end);
14001          child = prev;
14002        }
14003        _setDuration(self2, self2 === _globalTimeline && self2._time > max ? self2._time : max, 1, 1);
14004        self2._dirty = 0;
14005      }
14006      return self2._tDur;
14007    };
14008    Timeline2.updateRoot = function updateRoot(time) {
14009      if (_globalTimeline._ts) {
14010        _lazySafeRender(_globalTimeline, _parentToChildTotalTime(time, _globalTimeline));
14011        _lastRenderedFrame = _ticker.frame;
14012      }
14013      if (_ticker.frame >= _nextGCFrame) {
14014        _nextGCFrame += _config.autoSleep || 120;
14015        var child = _globalTimeline._first;
14016        if (!child || !child._ts) {
14017          if (_config.autoSleep && _ticker._listeners.length < 2) {
14018            while (child && !child._ts) {
14019              child = child._next;
14020            }
14021            child || _ticker.sleep();
14022          }
14023        }
14024      }
14025    };
14026    return Timeline2;
14027  }(Animation);
14028  _setDefaults$1(Timeline.prototype, {
14029    _lock: 0,
14030    _hasPause: 0,
14031    _forcing: 0
14032  });
14033  var _addComplexStringPropTween = function _addComplexStringPropTween2(target, prop, start, end, setter, stringFilter, funcParam) {
14034    var pt = new PropTween(this._pt, target, prop, 0, 1, _renderComplexString, null, setter), index = 0, matchIndex = 0, result, startNums, color2, endNum, chunk, startNum, hasRandom, a;
14035    pt.b = start;
14036    pt.e = end;
14037    start += "";
14038    end += "";
14039    if (hasRandom = ~end.indexOf("random(")) {
14040      end = _replaceRandom(end);
14041    }
14042    if (stringFilter) {
14043      a = [start, end];
14044      stringFilter(a, target, prop);
14045      start = a[0];
14046      end = a[1];
14047    }
14048    startNums = start.match(_complexStringNumExp) || [];
14049    while (result = _complexStringNumExp.exec(end)) {
14050      endNum = result[0];
14051      chunk = end.substring(index, result.index);
14052      if (color2) {
14053        color2 = (color2 + 1) % 5;
14054      } else if (chunk.substr(-5) === "rgba(") {
14055        color2 = 1;
14056      }
14057      if (endNum !== startNums[matchIndex++]) {
14058        startNum = parseFloat(startNums[matchIndex - 1]) || 0;
14059        pt._pt = {
14060          _next: pt._pt,
14061          p: chunk || matchIndex === 1 ? chunk : ",",
14062          //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.
14063          s: startNum,
14064          c: endNum.charAt(1) === "=" ? _parseRelative(startNum, endNum) - startNum : parseFloat(endNum) - startNum,
14065          m: color2 && color2 < 4 ? Math.round : 0
14066        };
14067        index = _complexStringNumExp.lastIndex;
14068      }
14069    }
14070    pt.c = index < end.length ? end.substring(index, end.length) : "";
14071    pt.fp = funcParam;
14072    if (_relExp.test(end) || hasRandom) {
14073      pt.e = 0;
14074    }
14075    this._pt = pt;
14076    return pt;
14077  }, _addPropTween = function _addPropTween2(target, prop, start, end, index, targets, modifier, stringFilter, funcParam, optional) {
14078    _isFunction$1(end) && (end = end(index || 0, target, targets));
14079    var currentValue = target[prop], parsedStart = start !== "get" ? start : !_isFunction$1(currentValue) ? currentValue : funcParam ? target[prop.indexOf("set") || !_isFunction$1(target["get" + prop.substr(3)]) ? prop : "get" + prop.substr(3)](funcParam) : target[prop](), setter = !_isFunction$1(currentValue) ? _setterPlain : funcParam ? _setterFuncWithParam : _setterFunc, pt;
14080    if (_isString$1(end)) {
14081      if (~end.indexOf("random(")) {
14082        end = _replaceRandom(end);
14083      }
14084      if (end.charAt(1) === "=") {
14085        pt = _parseRelative(parsedStart, end) + (getUnit(parsedStart) || 0);
14086        if (pt || pt === 0) {
14087          end = pt;
14088        }
14089      }
14090    }
14091    if (!optional || parsedStart !== end || _forceAllPropTweens) {
14092      if (!isNaN(parsedStart * end) && end !== "") {
14093        pt = new PropTween(this._pt, target, prop, +parsedStart || 0, end - (parsedStart || 0), typeof currentValue === "boolean" ? _renderBoolean : _renderPlain, 0, setter);
14094        funcParam && (pt.fp = funcParam);
14095        modifier && pt.modifier(modifier, this, target);
14096        return this._pt = pt;
14097      }
14098      !currentValue && !(prop in target) && _missingPlugin(prop, end);
14099      return _addComplexStringPropTween.call(this, target, prop, parsedStart, end, setter, stringFilter || _config.stringFilter, funcParam);
14100    }
14101  }, _processVars = function _processVars2(vars, index, target, targets, tween) {
14102    _isFunction$1(vars) && (vars = _parseFuncOrString(vars, tween, index, target, targets));
14103    if (!_isObject$1(vars) || vars.style && vars.nodeType || _isArray(vars) || _isTypedArray(vars)) {
14104      return _isString$1(vars) ? _parseFuncOrString(vars, tween, index, target, targets) : vars;
14105    }
14106    var copy = {}, p;
14107    for (p in vars) {
14108      copy[p] = _parseFuncOrString(vars[p], tween, index, target, targets);
14109    }
14110    return copy;
14111  }, _checkPlugin = function _checkPlugin2(property, vars, tween, index, target, targets) {
14112    var plugin, pt, ptLookup, i2;
14113    if (_plugins[property] && (plugin = new _plugins[property]()).init(target, plugin.rawVars ? vars[property] : _processVars(vars[property], index, target, targets, tween), tween, index, targets) !== false) {
14114      tween._pt = pt = new PropTween(tween._pt, target, property, 0, 1, plugin.render, plugin, 0, plugin.priority);
14115      if (tween !== _quickTween) {
14116        ptLookup = tween._ptLookup[tween._targets.indexOf(target)];
14117        i2 = plugin._props.length;
14118        while (i2--) {
14119          ptLookup[plugin._props[i2]] = pt;
14120        }
14121      }
14122    }
14123    return plugin;
14124  }, _overwritingTween, _forceAllPropTweens, _initTween = function _initTween2
vendor: 4,191 bytes, lines 14124-14187
14124(tween, time, tTime) {
14125    var vars = tween.vars, ease = vars.ease, startAt = vars.startAt, immediateRender = vars.immediateRender, lazy = vars.lazy, onUpdate = vars.onUpdate, runBackwards = vars.runBackwards, yoyoEase = vars.yoyoEase, keyframes = vars.keyframes, autoRevert = vars.autoRevert, dur = tween._dur, prevStartAt = tween._startAt, targets = tween._targets, parent = tween.parent, fullTargets = parent && parent.data === "nested" ? parent.vars.targets : targets, autoOverwrite = tween._overwrite === "auto" && !_suppressOverwrites$1, tl = tween.timeline, cleanVars, i2, p, pt, target, hasPriority, gsData, harness, plugin, ptLookup, index, harnessVars, overwritten;
14126    tl && (!keyframes || !ease) && (ease = "none");
14127    tween._ease = _parseEase(ease, _defaults$1.ease);
14128    tween._yEase = yoyoEase ? _invertEase(_parseEase(yoyoEase === true ? ease : yoyoEase, _defaults$1.ease)) : 0;
14129    if (yoyoEase && tween._yoyo && !tween._repeat) {
14130      yoyoEase = tween._yEase;
14131      tween._yEase = tween._ease;
14132      tween._ease = yoyoEase;
14133    }
14134    tween._from = !tl && !!vars.runBackwards;
14135    if (!tl || keyframes && !vars.stagger) {
14136      harness = targets[0] ? _getCache(targets[0]).harness : 0;
14137      harnessVars = harness && vars[harness.prop];
14138      cleanVars = _copyExcluding(vars, _reservedProps);
14139      if (prevStartAt) {
14140        prevStartAt._zTime < 0 && prevStartAt.progress(1);
14141        time < 0 && runBackwards && immediateRender && !autoRevert ? prevStartAt.render(-1, true) : prevStartAt.revert(runBackwards && dur ? _revertConfigNoKill : _startAtRevertConfig);
14142        prevStartAt._lazy = 0;
14143      }
14144      if (startAt) {
14145        _removeFromParent(tween._startAt = Tween.set(targets, _setDefaults$1({
14146          data: "isStart",
14147          overwrite: false,
14148          parent,
14149          immediateRender: true,
14150          lazy: !prevStartAt && _isNotFalse(lazy),
14151          startAt: null,
14152          delay: 0,
14153          onUpdate: onUpdate && function() {
14154            return _callback$1(tween, "onUpdate");
14155          },
14156          stagger: 0
14157        }, startAt)));
14158        tween._startAt._dp = 0;
14159        tween._startAt._sat = tween;
14160        time < 0 && (_reverting$1 || !immediateRender && !autoRevert) && tween._startAt.revert(_revertConfigNoKill);
14161        if (immediateRender) {
14162          if (dur && time <= 0 && tTime <= 0) {
14163            time && (tween._zTime = time);
14164            return;
14165          }
14166        }
14167      } else if (runBackwards && dur) {
14168        if (!prevStartAt) {
14169          time && (immediateRender = false);
14170          p = _setDefaults$1({
14171            overwrite: false,
14172            data: "isFromStart",
14173            //we tag the tween with as "isFromStart" so that if [inside a plugin] we need to only do something at the very END of a tween, we have a way of identifying this tween as merely the one that's setting the beginning values for a "from()" tween. For example, clearProps in CSSPlugin should only get applied at the very END of a tween and without this tag, from(...{height:100, clearProps:"height", delay:1}) would wipe the height at the beginning of the tween and after 1 second, it'd kick back in.
14174            lazy: immediateRender && !prevStartAt && _isNotFalse(lazy),
14175            immediateRender,
14176            //zero-duration tweens render immediately by default, but if we're not specifically instructed to render this tween immediately, we should skip this and merely _init() to record the starting values (rendering them immediately would push them to completion which is wasteful in that case - we'd have to render(-1) immediately after)
14177            stagger: 0,
14178            parent
14179            //ensures that nested tweens that had a stagger are handled properly, like gsap.from(".class", {y: gsap.utils.wrap([-100,100]), stagger: 0.5})
14180          }, cleanVars);
14181          harnessVars && (p[harness.prop] = harnessVars);
14182          _removeFromParent(tween._startAt = Tween.set(targets, p));
14183          tween._startAt._dp = 0;
14184          tween._startAt._sat = tween;
14185          time < 0 && (_reverting$1 ? tween._startAt.revert(_revertConfigNoKill) : tween._startAt.render(-1, true));
14186          tween._zTime = time;
14187          if (!immediateRender) {
vendor: 9,637 bytes, lines 14188-14406
14188            _initTween2(tween._startAt, _tinyNum, _tinyNum);
14189          } else if (!time) {
14190            return;
14191          }
14192        }
14193      }
14194      tween._pt = tween._ptCache = 0;
14195      lazy = dur && _isNotFalse(lazy) || lazy && !dur;
14196      for (i2 = 0; i2 < targets.length; i2++) {
14197        target = targets[i2];
14198        gsData = target._gsap || _harness(targets)[i2]._gsap;
14199        tween._ptLookup[i2] = ptLookup = {};
14200        _lazyLookup[gsData.id] && _lazyTweens.length && _lazyRender();
14201        index = fullTargets === targets ? i2 : fullTargets.indexOf(target);
14202        if (harness && (plugin = new harness()).init(target, harnessVars || cleanVars, tween, index, fullTargets) !== false) {
14203          tween._pt = pt = new PropTween(tween._pt, target, plugin.name, 0, 1, plugin.render, plugin, 0, plugin.priority);
14204          plugin._props.forEach(function(name) {
14205            ptLookup[name] = pt;
14206          });
14207          plugin.priority && (hasPriority = 1);
14208        }
14209        if (!harness || harnessVars) {
14210          for (p in cleanVars) {
14211            if (_plugins[p] && (plugin = _checkPlugin(p, cleanVars, tween, index, target, fullTargets))) {
14212              plugin.priority && (hasPriority = 1);
14213            } else {
14214              ptLookup[p] = pt = _addPropTween.call(tween, target, p, "get", cleanVars[p], index, fullTargets, 0, vars.stringFilter);
14215            }
14216          }
14217        }
14218        tween._op && tween._op[i2] && tween.kill(target, tween._op[i2]);
14219        if (autoOverwrite && tween._pt) {
14220          _overwritingTween = tween;
14221          _globalTimeline.killTweensOf(target, ptLookup, tween.globalTime(time));
14222          overwritten = !tween.parent;
14223          _overwritingTween = 0;
14224        }
14225        tween._pt && lazy && (_lazyLookup[gsData.id] = 1);
14226      }
14227      hasPriority && _sortPropTweensByPriority(tween);
14228      tween._onInit && tween._onInit(tween);
14229    }
14230    tween._onUpdate = onUpdate;
14231    tween._initted = (!tween._op || tween._pt) && !overwritten;
14232    keyframes && time <= 0 && tl.render(_bigNum$1, true, true);
14233  }, _updatePropTweens = function _updatePropTweens2(tween, property, value, start, startIsRelative, ratio, time, skipRecursion) {
14234    var ptCache = (tween._pt && tween._ptCache || (tween._ptCache = {}))[property], pt, rootPT, lookup, i2;
14235    if (!ptCache) {
14236      ptCache = tween._ptCache[property] = [];
14237      lookup = tween._ptLookup;
14238      i2 = tween._targets.length;
14239      while (i2--) {
14240        pt = lookup[i2][property];
14241        if (pt && pt.d && pt.d._pt) {
14242          pt = pt.d._pt;
14243          while (pt && pt.p !== property && pt.fp !== property) {
14244            pt = pt._next;
14245          }
14246        }
14247        if (!pt) {
14248          _forceAllPropTweens = 1;
14249          tween.vars[property] = "+=0";
14250          _initTween(tween, time);
14251          _forceAllPropTweens = 0;
14252          return skipRecursion ? _warn(property + " not eligible for reset") : 1;
14253        }
14254        ptCache.push(pt);
14255      }
14256    }
14257    i2 = ptCache.length;
14258    while (i2--) {
14259      rootPT = ptCache[i2];
14260      pt = rootPT._pt || rootPT;
14261      pt.s = (start || start === 0) && !startIsRelative ? start : pt.s + (start || 0) + ratio * pt.c;
14262      pt.c = value - pt.s;
14263      rootPT.e && (rootPT.e = _round$1(value) + getUnit(rootPT.e));
14264      rootPT.b && (rootPT.b = pt.s + getUnit(rootPT.b));
14265    }
14266  }, _addAliasesToVars = function _addAliasesToVars2(targets, vars) {
14267    var harness = targets[0] ? _getCache(targets[0]).harness : 0, propertyAliases = harness && harness.aliases, copy, p, i2, aliases;
14268    if (!propertyAliases) {
14269      return vars;
14270    }
14271    copy = _merge({}, vars);
14272    for (p in propertyAliases) {
14273      if (p in copy) {
14274        aliases = propertyAliases[p].split(",");
14275        i2 = aliases.length;
14276        while (i2--) {
14277          copy[aliases[i2]] = copy[p];
14278        }
14279      }
14280    }
14281    return copy;
14282  }, _parseKeyframe = function _parseKeyframe2(prop, obj, allProps, easeEach) {
14283    var ease = obj.ease || easeEach || "power1.inOut", p, a;
14284    if (_isArray(obj)) {
14285      a = allProps[prop] || (allProps[prop] = []);
14286      obj.forEach(function(value, i2) {
14287        return a.push({
14288          t: i2 / (obj.length - 1) * 100,
14289          v: value,
14290          e: ease
14291        });
14292      });
14293    } else {
14294      for (p in obj) {
14295        a = allProps[p] || (allProps[p] = []);
14296        p === "ease" || a.push({
14297          t: parseFloat(prop),
14298          v: obj[p],
14299          e: ease
14300        });
14301      }
14302    }
14303  }, _parseFuncOrString = function _parseFuncOrString2(value, tween, i2, target, targets) {
14304    return _isFunction$1(value) ? value.call(tween, i2, target, targets) : _isString$1(value) && ~value.indexOf("random(") ? _replaceRandom(value) : value;
14305  }, _staggerTweenProps = _callbackNames + "repeat,repeatDelay,yoyo,repeatRefresh,yoyoEase,autoRevert", _staggerPropsToSkip = {};
14306  _forEachName(_staggerTweenProps + ",id,stagger,delay,duration,paused,scrollTrigger", function(name) {
14307    return _staggerPropsToSkip[name] = 1;
14308  });
14309  var Tween = /* @__PURE__ */ function(_Animation2) {
14310    _inheritsLoose(Tween2, _Animation2);
14311    function Tween2(targets, vars, position, skipInherit) {
14312      var _this3;
14313      if (typeof vars === "number") {
14314        position.duration = vars;
14315        vars = position;
14316        position = null;
14317      }
14318      _this3 = _Animation2.call(this, skipInherit ? vars : _inheritDefaults(vars)) || this;
14319      var _this3$vars = _this3.vars, duration = _this3$vars.duration, delay = _this3$vars.delay, immediateRender = _this3$vars.immediateRender, stagger = _this3$vars.stagger, overwrite = _this3$vars.overwrite, keyframes = _this3$vars.keyframes, defaults2 = _this3$vars.defaults, scrollTrigger = _this3$vars.scrollTrigger, yoyoEase = _this3$vars.yoyoEase, parent = vars.parent || _globalTimeline, parsedTargets = (_isArray(targets) || _isTypedArray(targets) ? _isNumber$1(targets[0]) : "length" in vars) ? [targets] : toArray(targets), tl, i2, copy, l, p, curTarget, staggerFunc, staggerVarsToMerge;
14320      _this3._targets = parsedTargets.length ? _harness(parsedTargets) : _warn("GSAP target " + targets + " not found. https://gsap.com", !_config.nullTargetWarn) || [];
14321      _this3._ptLookup = [];
14322      _this3._overwrite = overwrite;
14323      if (keyframes || stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {
14324        vars = _this3.vars;
14325        tl = _this3.timeline = new Timeline({
14326          data: "nested",
14327          defaults: defaults2 || {},
14328          targets: parent && parent.data === "nested" ? parent.vars.targets : parsedTargets
14329        });
14330        tl.kill();
14331        tl.parent = tl._dp = _assertThisInitialized(_this3);
14332        tl._start = 0;
14333        if (stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {
14334          l = parsedTargets.length;
14335          staggerFunc = stagger && distribute(stagger);
14336          if (_isObject$1(stagger)) {
14337            for (p in stagger) {
14338              if (~_staggerTweenProps.indexOf(p)) {
14339                staggerVarsToMerge || (staggerVarsToMerge = {});
14340                staggerVarsToMerge[p] = stagger[p];
14341              }
14342            }
14343          }
14344          for (i2 = 0; i2 < l; i2++) {
14345            copy = _copyExcluding(vars, _staggerPropsToSkip);
14346            copy.stagger = 0;
14347            yoyoEase && (copy.yoyoEase = yoyoEase);
14348            staggerVarsToMerge && _merge(copy, staggerVarsToMerge);
14349            curTarget = parsedTargets[i2];
14350            copy.duration = +_parseFuncOrString(duration, _assertThisInitialized(_this3), i2, curTarget, parsedTargets);
14351            copy.delay = (+_parseFuncOrString(delay, _assertThisInitialized(_this3), i2, curTarget, parsedTargets) || 0) - _this3._delay;
14352            if (!stagger && l === 1 && copy.delay) {
14353              _this3._delay = delay = copy.delay;
14354              _this3._start += delay;
14355              copy.delay = 0;
14356            }
14357            tl.to(curTarget, copy, staggerFunc ? staggerFunc(i2, curTarget, parsedTargets) : 0);
14358            tl._ease = _easeMap.none;
14359          }
14360          tl.duration() ? duration = delay = 0 : _this3.timeline = 0;
14361        } else if (keyframes) {
14362          _inheritDefaults(_setDefaults$1(tl.vars.defaults, {
14363            ease: "none"
14364          }));
14365          tl._ease = _parseEase(keyframes.ease || vars.ease || "none");
14366          var time = 0, a, kf, v;
14367          if (_isArray(keyframes)) {
14368            keyframes.forEach(function(frame) {
14369              return tl.to(parsedTargets, frame, ">");
14370            });
14371            tl.duration();
14372          } else {
14373            copy = {};
14374            for (p in keyframes) {
14375              p === "ease" || p === "easeEach" || _parseKeyframe(p, keyframes[p], copy, keyframes.easeEach);
14376            }
14377            for (p in copy) {
14378              a = copy[p].sort(function(a2, b) {
14379                return a2.t - b.t;
14380              });
14381              time = 0;
14382              for (i2 = 0; i2 < a.length; i2++) {
14383                kf = a[i2];
14384                v = {
14385                  ease: kf.e,
14386                  duration: (kf.t - (i2 ? a[i2 - 1].t : 0)) / 100 * duration
14387                };
14388                v[p] = kf.v;
14389                tl.to(parsedTargets, v, time);
14390                time += v.duration;
14391              }
14392            }
14393            tl.duration() < duration && tl.to({}, {
14394              duration: duration - tl.duration()
14395            });
14396          }
14397        }
14398        duration || _this3.duration(duration = tl.duration());
14399      } else {
14400        _this3.timeline = 0;
14401      }
14402      if (overwrite === true && !_suppressOverwrites$1) {
14403        _overwritingTween = _assertThisInitialized(_this3);
14404        _globalTimeline.killTweensOf(parsedTargets);
14405        _overwritingTween = 0;
14406      }
vendor: 9,376 bytes, lines 14407-14623
14407      _addToTimeline(parent, _assertThisInitialized(_this3), position);
14408      vars.reversed && _this3.reverse();
14409      vars.paused && _this3.paused(true);
14410      if (immediateRender || !duration && !keyframes && _this3._start === _roundPrecise(parent._time) && _isNotFalse(immediateRender) && _hasNoPausedAncestors(_assertThisInitialized(_this3)) && parent.data !== "nested") {
14411        _this3._tTime = -1e-8;
14412        _this3.render(Math.max(0, -delay) || 0);
14413      }
14414      scrollTrigger && _scrollTrigger(_assertThisInitialized(_this3), scrollTrigger);
14415      return _this3;
14416    }
14417    var _proto3 = Tween2.prototype;
14418    _proto3.render = function render(totalTime, suppressEvents, force) {
14419      var prevTime = this._time, tDur = this._tDur, dur = this._dur, isNegative = totalTime < 0, tTime = totalTime > tDur - _tinyNum && !isNegative ? tDur : totalTime < _tinyNum ? 0 : totalTime, time, pt, iteration, cycleDuration, prevIteration, isYoyo, ratio, timeline, yoyoEase;
14420      if (!dur) {
14421        _renderZeroDurationTween(this, totalTime, suppressEvents, force);
14422      } else if (tTime !== this._tTime || !totalTime || force || !this._initted && this._tTime || this._startAt && this._zTime < 0 !== isNegative) {
14423        time = tTime;
14424        timeline = this.timeline;
14425        if (this._repeat) {
14426          cycleDuration = dur + this._rDelay;
14427          if (this._repeat < -1 && isNegative) {
14428            return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);
14429          }
14430          time = _roundPrecise(tTime % cycleDuration);
14431          if (tTime === tDur) {
14432            iteration = this._repeat;
14433            time = dur;
14434          } else {
14435            iteration = ~~(tTime / cycleDuration);
14436            if (iteration && iteration === _roundPrecise(tTime / cycleDuration)) {
14437              time = dur;
14438              iteration--;
14439            }
14440            time > dur && (time = dur);
14441          }
14442          isYoyo = this._yoyo && iteration & 1;
14443          if (isYoyo) {
14444            yoyoEase = this._yEase;
14445            time = dur - time;
14446          }
14447          prevIteration = _animationCycle(this._tTime, cycleDuration);
14448          if (time === prevTime && !force && this._initted && iteration === prevIteration) {
14449            this._tTime = tTime;
14450            return this;
14451          }
14452          if (iteration !== prevIteration) {
14453            timeline && this._yEase && _propagateYoyoEase(timeline, isYoyo);
14454            if (this.vars.repeatRefresh && !isYoyo && !this._lock && this._time !== cycleDuration && this._initted) {
14455              this._lock = force = 1;
14456              this.render(_roundPrecise(cycleDuration * iteration), true).invalidate()._lock = 0;
14457            }
14458          }
14459        }
14460        if (!this._initted) {
14461          if (_attemptInitTween(this, isNegative ? totalTime : time, force, suppressEvents, tTime)) {
14462            this._tTime = 0;
14463            return this;
14464          }
14465          if (prevTime !== this._time && !(force && this.vars.repeatRefresh && iteration !== prevIteration)) {
14466            return this;
14467          }
14468          if (dur !== this._dur) {
14469            return this.render(totalTime, suppressEvents, force);
14470          }
14471        }
14472        this._tTime = tTime;
14473        this._time = time;
14474        if (!this._act && this._ts) {
14475          this._act = 1;
14476          this._lazy = 0;
14477        }
14478        this.ratio = ratio = (yoyoEase || this._ease)(time / dur);
14479        if (this._from) {
14480          this.ratio = ratio = 1 - ratio;
14481        }
14482        if (time && !prevTime && !suppressEvents && !iteration) {
14483          _callback$1(this, "onStart");
14484          if (this._tTime !== tTime) {
14485            return this;
14486          }
14487        }
14488        pt = this._pt;
14489        while (pt) {
14490          pt.r(ratio, pt.d);
14491          pt = pt._next;
14492        }
14493        timeline && timeline.render(totalTime < 0 ? totalTime : timeline._dur * timeline._ease(time / this._dur), suppressEvents, force) || this._startAt && (this._zTime = totalTime);
14494        if (this._onUpdate && !suppressEvents) {
14495          isNegative && _rewindStartAt(this, totalTime, suppressEvents, force);
14496          _callback$1(this, "onUpdate");
14497        }
14498        this._repeat && iteration !== prevIteration && this.vars.onRepeat && !suppressEvents && this.parent && _callback$1(this, "onRepeat");
14499        if ((tTime === this._tDur || !tTime) && this._tTime === tTime) {
14500          isNegative && !this._onUpdate && _rewindStartAt(this, totalTime, true, true);
14501          (totalTime || !dur) && (tTime === this._tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1);
14502          if (!suppressEvents && !(isNegative && !prevTime) && (tTime || prevTime || isYoyo)) {
14503            _callback$1(this, tTime === tDur ? "onComplete" : "onReverseComplete", true);
14504            this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();
14505          }
14506        }
14507      }
14508      return this;
14509    };
14510    _proto3.targets = function targets() {
14511      return this._targets;
14512    };
14513    _proto3.invalidate = function invalidate(soft) {
14514      (!soft || !this.vars.runBackwards) && (this._startAt = 0);
14515      this._pt = this._op = this._onUpdate = this._lazy = this.ratio = 0;
14516      this._ptLookup = [];
14517      this.timeline && this.timeline.invalidate(soft);
14518      return _Animation2.prototype.invalidate.call(this, soft);
14519    };
14520    _proto3.resetTo = function resetTo(property, value, start, startIsRelative, skipRecursion) {
14521      _tickerActive || _ticker.wake();
14522      this._ts || this.play();
14523      var time = Math.min(this._dur, (this._dp._time - this._start) * this._ts), ratio;
14524      this._initted || _initTween(this, time);
14525      ratio = this._ease(time / this._dur);
14526      if (_updatePropTweens(this, property, value, start, startIsRelative, ratio, time, skipRecursion)) {
14527        return this.resetTo(property, value, start, startIsRelative, 1);
14528      }
14529      _alignPlayhead(this, 0);
14530      this.parent || _addLinkedListItem(this._dp, this, "_first", "_last", this._dp._sort ? "_start" : 0);
14531      return this.render(0);
14532    };
14533    _proto3.kill = function kill(targets, vars) {
14534      if (vars === void 0) {
14535        vars = "all";
14536      }
14537      if (!targets && (!vars || vars === "all")) {
14538        this._lazy = this._pt = 0;
14539        return this.parent ? _interrupt(this) : this;
14540      }
14541      if (this.timeline) {
14542        var tDur = this.timeline.totalDuration();
14543        this.timeline.killTweensOf(targets, vars, _overwritingTween && _overwritingTween.vars.overwrite !== true)._first || _interrupt(this);
14544        this.parent && tDur !== this.timeline.totalDuration() && _setDuration(this, this._dur * this.timeline._tDur / tDur, 0, 1);
14545        return this;
14546      }
14547      var parsedTargets = this._targets, killingTargets = targets ? toArray(targets) : parsedTargets, propTweenLookup = this._ptLookup, firstPT = this._pt, overwrittenProps, curLookup, curOverwriteProps, props, p, pt, i2;
14548      if ((!vars || vars === "all") && _arraysMatch(parsedTargets, killingTargets)) {
14549        vars === "all" && (this._pt = 0);
14550        return _interrupt(this);
14551      }
14552      overwrittenProps = this._op = this._op || [];
14553      if (vars !== "all") {
14554        if (_isString$1(vars)) {
14555          p = {};
14556          _forEachName(vars, function(name) {
14557            return p[name] = 1;
14558          });
14559          vars = p;
14560        }
14561        vars = _addAliasesToVars(parsedTargets, vars);
14562      }
14563      i2 = parsedTargets.length;
14564      while (i2--) {
14565        if (~killingTargets.indexOf(parsedTargets[i2])) {
14566          curLookup = propTweenLookup[i2];
14567          if (vars === "all") {
14568            overwrittenProps[i2] = vars;
14569            props = curLookup;
14570            curOverwriteProps = {};
14571          } else {
14572            curOverwriteProps = overwrittenProps[i2] = overwrittenProps[i2] || {};
14573            props = vars;
14574          }
14575          for (p in props) {
14576            pt = curLookup && curLookup[p];
14577            if (pt) {
14578              if (!("kill" in pt.d) || pt.d.kill(p) === true) {
14579                _removeLinkedListItem(this, pt, "_pt");
14580              }
14581              delete curLookup[p];
14582            }
14583            if (curOverwriteProps !== "all") {
14584              curOverwriteProps[p] = 1;
14585            }
14586          }
14587        }
14588      }
14589      this._initted && !this._pt && firstPT && _interrupt(this);
14590      return this;
14591    };
14592    Tween2.to = function to(targets, vars) {
14593      return new Tween2(targets, vars, arguments[2]);
14594    };
14595    Tween2.from = function from(targets, vars) {
14596      return _createTweenType(1, arguments);
14597    };
14598    Tween2.delayedCall = function delayedCall(delay, callback, params, scope) {
14599      return new Tween2(callback, 0, {
14600        immediateRender: false,
14601        lazy: false,
14602        overwrite: false,
14603        delay,
14604        onComplete: callback,
14605        onReverseComplete: callback,
14606        onCompleteParams: params,
14607        onReverseCompleteParams: params,
14608        callbackScope: scope
14609      });
14610    };
14611    Tween2.fromTo = function fromTo(targets, fromVars, toVars) {
14612      return _createTweenType(2, arguments);
14613    };
14614    Tween2.set = function set(targets, vars) {
14615      vars.duration = 0;
14616      vars.repeatDelay || (vars.repeat = 0);
14617      return new Tween2(targets, vars);
14618    };
14619    Tween2.killTweensOf = function killTweensOf(targets, props, onlyActive) {
14620      return _globalTimeline.killTweensOf(targets, props, onlyActive);
14621    };
14622    return Tween2;
14623  }
vendor: 15,399 bytes, lines 14623-15038
14623(Animation);
14624  _setDefaults$1(Tween.prototype, {
14625    _targets: [],
14626    _lazy: 0,
14627    _startAt: 0,
14628    _op: 0,
14629    _onInit: 0
14630  });
14631  _forEachName("staggerTo,staggerFrom,staggerFromTo", function(name) {
14632    Tween[name] = function() {
14633      var tl = new Timeline(), params = _slice.call(arguments, 0);
14634      params.splice(name === "staggerFromTo" ? 5 : 4, 0, 0);
14635      return tl[name].apply(tl, params);
14636    };
14637  });
14638  var _setterPlain = function _setterPlain2(target, property, value) {
14639    return target[property] = value;
14640  }, _setterFunc = function _setterFunc2(target, property, value) {
14641    return target[property](value);
14642  }, _setterFuncWithParam = function _setterFuncWithParam2(target, property, value, data) {
14643    return target[property](data.fp, value);
14644  }, _setterAttribute = function _setterAttribute2(target, property, value) {
14645    return target.setAttribute(property, value);
14646  }, _getSetter = function _getSetter2(target, property) {
14647    return _isFunction$1(target[property]) ? _setterFunc : _isUndefined(target[property]) && target.setAttribute ? _setterAttribute : _setterPlain;
14648  }, _renderPlain = function _renderPlain2(ratio, data) {
14649    return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 1e6) / 1e6, data);
14650  }, _renderBoolean = function _renderBoolean2(ratio, data) {
14651    return data.set(data.t, data.p, !!(data.s + data.c * ratio), data);
14652  }, _renderComplexString = function _renderComplexString2(ratio, data) {
14653    var pt = data._pt, s = "";
14654    if (!ratio && data.b) {
14655      s = data.b;
14656    } else if (ratio === 1 && data.e) {
14657      s = data.e;
14658    } else {
14659      while (pt) {
14660        s = pt.p + (pt.m ? pt.m(pt.s + pt.c * ratio) : Math.round((pt.s + pt.c * ratio) * 1e4) / 1e4) + s;
14661        pt = pt._next;
14662      }
14663      s += data.c;
14664    }
14665    data.set(data.t, data.p, s, data);
14666  }, _renderPropTweens = function _renderPropTweens2(ratio, data) {
14667    var pt = data._pt;
14668    while (pt) {
14669      pt.r(ratio, pt.d);
14670      pt = pt._next;
14671    }
14672  }, _addPluginModifier = function _addPluginModifier2(modifier, tween, target, property) {
14673    var pt = this._pt, next;
14674    while (pt) {
14675      next = pt._next;
14676      pt.p === property && pt.modifier(modifier, tween, target);
14677      pt = next;
14678    }
14679  }, _killPropTweensOf = function _killPropTweensOf2(property) {
14680    var pt = this._pt, hasNonDependentRemaining, next;
14681    while (pt) {
14682      next = pt._next;
14683      if (pt.p === property && !pt.op || pt.op === property) {
14684        _removeLinkedListItem(this, pt, "_pt");
14685      } else if (!pt.dep) {
14686        hasNonDependentRemaining = 1;
14687      }
14688      pt = next;
14689    }
14690    return !hasNonDependentRemaining;
14691  }, _setterWithModifier = function _setterWithModifier2(target, property, value, data) {
14692    data.mSet(target, property, data.m.call(data.tween, value, data.mt), data);
14693  }, _sortPropTweensByPriority = function _sortPropTweensByPriority2(parent) {
14694    var pt = parent._pt, next, pt2, first, last;
14695    while (pt) {
14696      next = pt._next;
14697      pt2 = first;
14698      while (pt2 && pt2.pr > pt.pr) {
14699        pt2 = pt2._next;
14700      }
14701      if (pt._prev = pt2 ? pt2._prev : last) {
14702        pt._prev._next = pt;
14703      } else {
14704        first = pt;
14705      }
14706      if (pt._next = pt2) {
14707        pt2._prev = pt;
14708      } else {
14709        last = pt;
14710      }
14711      pt = next;
14712    }
14713    parent._pt = first;
14714  };
14715  var PropTween = /* @__PURE__ */ function() {
14716    function PropTween2(next, target, prop, start, change, renderer, data, setter, priority) {
14717      this.t = target;
14718      this.s = start;
14719      this.c = change;
14720      this.p = prop;
14721      this.r = renderer || _renderPlain;
14722      this.d = data || this;
14723      this.set = setter || _setterPlain;
14724      this.pr = priority || 0;
14725      this._next = next;
14726      if (next) {
14727        next._prev = this;
14728      }
14729    }
14730    var _proto4 = PropTween2.prototype;
14731    _proto4.modifier = function modifier(func, tween, target) {
14732      this.mSet = this.mSet || this.set;
14733      this.set = _setterWithModifier;
14734      this.m = func;
14735      this.mt = target;
14736      this.tween = tween;
14737    };
14738    return PropTween2;
14739  }();
14740  _forEachName(_callbackNames + "parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert,scrollTrigger", function(name) {
14741    return _reservedProps[name] = 1;
14742  });
14743  _globals.TweenMax = _globals.TweenLite = Tween;
14744  _globals.TimelineLite = _globals.TimelineMax = Timeline;
14745  _globalTimeline = new Timeline({
14746    sortChildren: false,
14747    defaults: _defaults$1,
14748    autoRemoveChildren: true,
14749    id: "root",
14750    smoothChildTiming: true
14751  });
14752  _config.stringFilter = _colorStringFilter;
14753  var _media = [], _listeners$1 = {}, _emptyArray$1 = [], _lastMediaTime = 0, _contextID = 0, _dispatch$1 = function _dispatch2(type) {
14754    return (_listeners$1[type] || _emptyArray$1).map(function(f) {
14755      return f();
14756    });
14757  }, _onMediaChange = function _onMediaChange2() {
14758    var time = Date.now(), matches = [];
14759    if (time - _lastMediaTime > 2) {
14760      _dispatch$1("matchMediaInit");
14761      _media.forEach(function(c) {
14762        var queries = c.queries, conditions = c.conditions, match, p, anyMatch, toggled;
14763        for (p in queries) {
14764          match = _win$3.matchMedia(queries[p]).matches;
14765          match && (anyMatch = 1);
14766          if (match !== conditions[p]) {
14767            conditions[p] = match;
14768            toggled = 1;
14769          }
14770        }
14771        if (toggled) {
14772          c.revert();
14773          anyMatch && matches.push(c);
14774        }
14775      });
14776      _dispatch$1("matchMediaRevert");
14777      matches.forEach(function(c) {
14778        return c.onMatch(c, function(func) {
14779          return c.add(null, func);
14780        });
14781      });
14782      _lastMediaTime = time;
14783      _dispatch$1("matchMedia");
14784    }
14785  };
14786  var Context = /* @__PURE__ */ function() {
14787    function Context2(func, scope) {
14788      this.selector = scope && selector(scope);
14789      this.data = [];
14790      this._r = [];
14791      this.isReverted = false;
14792      this.id = _contextID++;
14793      func && this.add(func);
14794    }
14795    var _proto5 = Context2.prototype;
14796    _proto5.add = function add(name, func, scope) {
14797      if (_isFunction$1(name)) {
14798        scope = func;
14799        func = name;
14800        name = _isFunction$1;
14801      }
14802      var self2 = this, f = function f2() {
14803        var prev = _context$2, prevSelector = self2.selector, result;
14804        prev && prev !== self2 && prev.data.push(self2);
14805        scope && (self2.selector = selector(scope));
14806        _context$2 = self2;
14807        result = func.apply(self2, arguments);
14808        _isFunction$1(result) && self2._r.push(result);
14809        _context$2 = prev;
14810        self2.selector = prevSelector;
14811        self2.isReverted = false;
14812        return result;
14813      };
14814      self2.last = f;
14815      return name === _isFunction$1 ? f(self2, function(func2) {
14816        return self2.add(null, func2);
14817      }) : name ? self2[name] = f : f;
14818    };
14819    _proto5.ignore = function ignore(func) {
14820      var prev = _context$2;
14821      _context$2 = null;
14822      func(this);
14823      _context$2 = prev;
14824    };
14825    _proto5.getTweens = function getTweens() {
14826      var a = [];
14827      this.data.forEach(function(e) {
14828        return e instanceof Context2 ? a.push.apply(a, e.getTweens()) : e instanceof Tween && !(e.parent && e.parent.data === "nested") && a.push(e);
14829      });
14830      return a;
14831    };
14832    _proto5.clear = function clear() {
14833      this._r.length = this.data.length = 0;
14834    };
14835    _proto5.kill = function kill(revert, matchMedia) {
14836      var _this4 = this;
14837      if (revert) {
14838        (function() {
14839          var tweens = _this4.getTweens(), i3 = _this4.data.length, t2;
14840          while (i3--) {
14841            t2 = _this4.data[i3];
14842            if (t2.data === "isFlip") {
14843              t2.revert();
14844              t2.getChildren(true, true, false).forEach(function(tween) {
14845                return tweens.splice(tweens.indexOf(tween), 1);
14846              });
14847            }
14848          }
14849          tweens.map(function(t3) {
14850            return {
14851              g: t3._dur || t3._delay || t3._sat && !t3._sat.vars.immediateRender ? t3.globalTime(0) : -Infinity,
14852              t: t3
14853            };
14854          }).sort(function(a, b) {
14855            return b.g - a.g || -Infinity;
14856          }).forEach(function(o) {
14857            return o.t.revert(revert);
14858          });
14859          i3 = _this4.data.length;
14860          while (i3--) {
14861            t2 = _this4.data[i3];
14862            if (t2 instanceof Timeline) {
14863              if (t2.data !== "nested") {
14864                t2.scrollTrigger && t2.scrollTrigger.revert();
14865                t2.kill();
14866              }
14867            } else {
14868              !(t2 instanceof Tween) && t2.revert && t2.revert(revert);
14869            }
14870          }
14871          _this4._r.forEach(function(f) {
14872            return f(revert, _this4);
14873          });
14874          _this4.isReverted = true;
14875        })();
14876      } else {
14877        this.data.forEach(function(e) {
14878          return e.kill && e.kill();
14879        });
14880      }
14881      this.clear();
14882      if (matchMedia) {
14883        var i2 = _media.length;
14884        while (i2--) {
14885          _media[i2].id === this.id && _media.splice(i2, 1);
14886        }
14887      }
14888    };
14889    _proto5.revert = function revert(config) {
14890      this.kill(config || {});
14891    };
14892    return Context2;
14893  }();
14894  var MatchMedia = /* @__PURE__ */ function() {
14895    function MatchMedia2(scope) {
14896      this.contexts = [];
14897      this.scope = scope;
14898      _context$2 && _context$2.data.push(this);
14899    }
14900    var _proto6 = MatchMedia2.prototype;
14901    _proto6.add = function add(conditions, func, scope) {
14902      _isObject$1(conditions) || (conditions = {
14903        matches: conditions
14904      });
14905      var context = new Context(0, scope || this.scope), cond = context.conditions = {}, mq, p, active;
14906      _context$2 && !context.selector && (context.selector = _context$2.selector);
14907      this.contexts.push(context);
14908      func = context.add("onMatch", func);
14909      context.queries = conditions;
14910      for (p in conditions) {
14911        if (p === "all") {
14912          active = 1;
14913        } else {
14914          mq = _win$3.matchMedia(conditions[p]);
14915          if (mq) {
14916            _media.indexOf(context) < 0 && _media.push(context);
14917            (cond[p] = mq.matches) && (active = 1);
14918            mq.addListener ? mq.addListener(_onMediaChange) : mq.addEventListener("change", _onMediaChange);
14919          }
14920        }
14921      }
14922      active && func(context, function(f) {
14923        return context.add(null, f);
14924      });
14925      return this;
14926    };
14927    _proto6.revert = function revert(config) {
14928      this.kill(config || {});
14929    };
14930    _proto6.kill = function kill(revert) {
14931      this.contexts.forEach(function(c) {
14932        return c.kill(revert, true);
14933      });
14934    };
14935    return MatchMedia2;
14936  }();
14937  var _gsap = {
14938    registerPlugin: function registerPlugin() {
14939      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
14940        args[_key2] = arguments[_key2];
14941      }
14942      args.forEach(function(config) {
14943        return _createPlugin(config);
14944      });
14945    },
14946    timeline: function timeline(vars) {
14947      return new Timeline(vars);
14948    },
14949    getTweensOf: function getTweensOf(targets, onlyActive) {
14950      return _globalTimeline.getTweensOf(targets, onlyActive);
14951    },
14952    getProperty: function getProperty(target, property, unit, uncache) {
14953      _isString$1(target) && (target = toArray(target)[0]);
14954      var getter = _getCache(target || {}).get, format = unit ? _passThrough$1 : _numericIfPossible;
14955      unit === "native" && (unit = "");
14956      return !target ? target : !property ? function(property2, unit2, uncache2) {
14957        return format((_plugins[property2] && _plugins[property2].get || getter)(target, property2, unit2, uncache2));
14958      } : format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));
14959    },
14960    quickSetter: function quickSetter(target, property, unit) {
14961      target = toArray(target);
14962      if (target.length > 1) {
14963        var setters = target.map(function(t2) {
14964          return gsap$2.quickSetter(t2, property, unit);
14965        }), l = setters.length;
14966        return function(value) {
14967          var i2 = l;
14968          while (i2--) {
14969            setters[i2](value);
14970          }
14971        };
14972      }
14973      target = target[0] || {};
14974      var Plugin = _plugins[property], cache = _getCache(target), p = cache.harness && (cache.harness.aliases || {})[property] || property, setter = Plugin ? function(value) {
14975        var p2 = new Plugin();
14976        _quickTween._pt = 0;
14977        p2.init(target, unit ? value + unit : value, _quickTween, 0, [target]);
14978        p2.render(1, p2);
14979        _quickTween._pt && _renderPropTweens(1, _quickTween);
14980      } : cache.set(target, p);
14981      return Plugin ? setter : function(value) {
14982        return setter(target, p, unit ? value + unit : value, cache, 1);
14983      };
14984    },
14985    quickTo: function quickTo(target, property, vars) {
14986      var _merge2;
14987      var tween = gsap$2.to(target, _merge((_merge2 = {}, _merge2[property] = "+=0.1", _merge2.paused = true, _merge2), vars || {})), func = function func2(value, start, startIsRelative) {
14988        return tween.resetTo(property, value, start, startIsRelative);
14989      };
14990      func.tween = tween;
14991      return func;
14992    },
14993    isTweening: function isTweening(targets) {
14994      return _globalTimeline.getTweensOf(targets, true).length > 0;
14995    },
14996    defaults: function defaults2(value) {
14997      value && value.ease && (value.ease = _parseEase(value.ease, _defaults$1.ease));
14998      return _mergeDeep(_defaults$1, value || {});
14999    },
15000    config: function config(value) {
15001      return _mergeDeep(_config, value || {});
15002    },
15003    registerEffect: function registerEffect(_ref3) {
15004      var name = _ref3.name, effect = _ref3.effect, plugins = _ref3.plugins, defaults2 = _ref3.defaults, extendTimeline = _ref3.extendTimeline;
15005      (plugins || "").split(",").forEach(function(pluginName) {
15006        return pluginName && !_plugins[pluginName] && !_globals[pluginName] && _warn(name + " effect requires " + pluginName + " plugin.");
15007      });
15008      _effects[name] = function(targets, vars, tl) {
15009        return effect(toArray(targets), _setDefaults$1(vars || {}, defaults2), tl);
15010      };
15011      if (extendTimeline) {
15012        Timeline.prototype[name] = function(targets, vars, position) {
15013          return this.add(_effects[name](targets, _isObject$1(vars) ? vars : (position = vars) && {}, this), position);
15014        };
15015      }
15016    },
15017    registerEase: function registerEase(name, ease) {
15018      _easeMap[name] = _parseEase(ease);
15019    },
15020    parseEase: function parseEase(ease, defaultEase) {
15021      return arguments.length ? _parseEase(ease, defaultEase) : _easeMap;
15022    },
15023    getById: function getById(id) {
15024      return _globalTimeline.getById(id);
15025    },
15026    exportRoot: function exportRoot(vars, includeDelayedCalls) {
15027      if (vars === void 0) {
15028        vars = {};
15029      }
15030      var tl = new Timeline(vars), child, next;
15031      tl.smoothChildTiming = _isNotFalse(vars.smoothChildTiming);
15032      _globalTimeline.remove(tl);
15033      tl._dp = 0;
15034      tl._time = tl._tTime = _globalTimeline._time;
15035      child = _globalTimeline._first;
15036      while (child) {
15037        next = child._next;
15038        if (includeDelayedCalls || !(!child._dur && child instanceof Tween && child.vars.onComplete === child._targets[0])) {
vendor: 2,335 bytes, lines 15039-15126
15039          _addToTimeline(tl, child, child._start - child._delay);
15040        }
15041        child = next;
15042      }
15043      _addToTimeline(_globalTimeline, tl, 0);
15044      return tl;
15045    },
15046    context: function context(func, scope) {
15047      return func ? new Context(func, scope) : _context$2;
15048    },
15049    matchMedia: function matchMedia(scope) {
15050      return new MatchMedia(scope);
15051    },
15052    matchMediaRefresh: function matchMediaRefresh() {
15053      return _media.forEach(function(c) {
15054        var cond = c.conditions, found, p;
15055        for (p in cond) {
15056          if (cond[p]) {
15057            cond[p] = false;
15058            found = 1;
15059          }
15060        }
15061        found && c.revert();
15062      }) || _onMediaChange();
15063    },
15064    addEventListener: function addEventListener(type, callback) {
15065      var a = _listeners$1[type] || (_listeners$1[type] = []);
15066      ~a.indexOf(callback) || a.push(callback);
15067    },
15068    removeEventListener: function removeEventListener(type, callback) {
15069      var a = _listeners$1[type], i2 = a && a.indexOf(callback);
15070      i2 >= 0 && a.splice(i2, 1);
15071    },
15072    utils: {
15073      wrap,
15074      wrapYoyo,
15075      distribute,
15076      random,
15077      snap,
15078      normalize,
15079      getUnit,
15080      clamp,
15081      splitColor,
15082      toArray,
15083      selector,
15084      mapRange,
15085      pipe,
15086      unitize,
15087      interpolate,
15088      shuffle
15089    },
15090    install: _install,
15091    effects: _effects,
15092    ticker: _ticker,
15093    updateRoot: Timeline.updateRoot,
15094    plugins: _plugins,
15095    globalTimeline: _globalTimeline,
15096    core: {
15097      PropTween,
15098      globals: _addGlobal,
15099      Tween,
15100      Timeline,
15101      Animation,
15102      getCache: _getCache,
15103      _removeLinkedListItem,
15104      reverting: function reverting() {
15105        return _reverting$1;
15106      },
15107      context: function context(toAdd) {
15108        if (toAdd && _context$2) {
15109          _context$2.data.push(toAdd);
15110          toAdd._ctx = _context$2;
15111        }
15112        return _context$2;
15113      },
15114      suppressOverwrites: function suppressOverwrites(value) {
15115        return _suppressOverwrites$1 = value;
15116      }
15117    }
15118  };
15119  _forEachName("to,from,fromTo,delayedCall,set,killTweensOf", function(name) {
15120    return _gsap[name] = Tween[name];
15121  });
15122  _ticker.add(Timeline.updateRoot);
15123  _quickTween = _gsap.to({}, {
15124    duration: 0
15125  });
15126  var _getPluginPropTween = function _getPluginPropTween2(plugin, prop
vendor: 9,530 bytes, lines 15126-15350
15126) {
15127    var pt = plugin._pt;
15128    while (pt && pt.p !== prop && pt.op !== prop && pt.fp !== prop) {
15129      pt = pt._next;
15130    }
15131    return pt;
15132  }, _addModifiers = function _addModifiers2(tween, modifiers) {
15133    var targets = tween._targets, p, i2, pt;
15134    for (p in modifiers) {
15135      i2 = targets.length;
15136      while (i2--) {
15137        pt = tween._ptLookup[i2][p];
15138        if (pt && (pt = pt.d)) {
15139          if (pt._pt) {
15140            pt = _getPluginPropTween(pt, p);
15141          }
15142          pt && pt.modifier && pt.modifier(modifiers[p], tween, targets[i2], p);
15143        }
15144      }
15145    }
15146  }, _buildModifierPlugin = function _buildModifierPlugin2(name, modifier) {
15147    return {
15148      name,
15149      rawVars: 1,
15150      //don't pre-process function-based values or "random()" strings.
15151      init: function init(target, vars, tween) {
15152        tween._onInit = function(tween2) {
15153          var temp, p;
15154          if (_isString$1(vars)) {
15155            temp = {};
15156            _forEachName(vars, function(name2) {
15157              return temp[name2] = 1;
15158            });
15159            vars = temp;
15160          }
15161          if (modifier) {
15162            temp = {};
15163            for (p in vars) {
15164              temp[p] = modifier(vars[p]);
15165            }
15166            vars = temp;
15167          }
15168          _addModifiers(tween2, vars);
15169        };
15170      }
15171    };
15172  };
15173  var gsap$2 = _gsap.registerPlugin({
15174    name: "attr",
15175    init: function init(target, vars, tween, index, targets) {
15176      var p, pt, v;
15177      this.tween = tween;
15178      for (p in vars) {
15179        v = target.getAttribute(p) || "";
15180        pt = this.add(target, "setAttribute", (v || 0) + "", vars[p], index, targets, 0, 0, p);
15181        pt.op = p;
15182        pt.b = v;
15183        this._props.push(p);
15184      }
15185    },
15186    render: function render(ratio, data) {
15187      var pt = data._pt;
15188      while (pt) {
15189        _reverting$1 ? pt.set(pt.t, pt.p, pt.b, pt) : pt.r(ratio, pt.d);
15190        pt = pt._next;
15191      }
15192    }
15193  }, {
15194    name: "endArray",
15195    init: function init(target, value) {
15196      var i2 = value.length;
15197      while (i2--) {
15198        this.add(target, i2, target[i2] || 0, value[i2], 0, 0, 0, 0, 0, 1);
15199      }
15200    }
15201  }, _buildModifierPlugin("roundProps", _roundModifier), _buildModifierPlugin("modifiers"), _buildModifierPlugin("snap", snap)) || _gsap;
15202  Tween.version = Timeline.version = gsap$2.version = "3.12.5";
15203  _coreReady = 1;
15204  _windowExists$2() && _wake();
15205  _easeMap.Power0;
15206  _easeMap.Power1;
15207  _easeMap.Power2;
15208  _easeMap.Power3;
15209  _easeMap.Power4;
15210  _easeMap.Linear;
15211  _easeMap.Quad;
15212  _easeMap.Cubic;
15213  _easeMap.Quart;
15214  _easeMap.Quint;
15215  _easeMap.Strong;
15216  _easeMap.Elastic;
15217  _easeMap.Back;
15218  _easeMap.SteppedEase;
15219  _easeMap.Bounce;
15220  _easeMap.Sine;
15221  _easeMap.Expo;
15222  _easeMap.Circ;
15223  /*!
15224   * CSSPlugin 3.12.5
15225   * https://gsap.com
15226   *
15227   * Copyright 2008-2024, GreenSock. All rights reserved.
15228   * Subject to the terms at https://gsap.com/standard-license or for
15229   * Club GSAP members, the agreement issued with that membership.
15230   * @author: Jack Doyle, [email protected]
15231  */
15232  var _win$2, _doc$2, _docElement, _pluginInitted, _tempDiv, _recentSetterPlugin, _reverting, _windowExists$1 = function _windowExists2() {
15233    return typeof window !== "undefined";
15234  }, _transformProps = {}, _RAD2DEG = 180 / Math.PI, _DEG2RAD = Math.PI / 180, _atan2 = Math.atan2, _bigNum = 1e8, _capsExp$1 = /([A-Z])/g, _horizontalExp = /(left|right|width|margin|padding|x)/i, _complexExp = /[\s,\(]\S/, _propertyAliases = {
15235    autoAlpha: "opacity,visibility",
15236    scale: "scaleX,scaleY",
15237    alpha: "opacity"
15238  }, _renderCSSProp = function _renderCSSProp2(ratio, data) {
15239    return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 1e4) / 1e4 + data.u, data);
15240  }, _renderPropWithEnd = function _renderPropWithEnd2(ratio, data) {
15241    return data.set(data.t, data.p, ratio === 1 ? data.e : Math.round((data.s + data.c * ratio) * 1e4) / 1e4 + data.u, data);
15242  }, _renderCSSPropWithBeginning = function _renderCSSPropWithBeginning2(ratio, data) {
15243    return data.set(data.t, data.p, ratio ? Math.round((data.s + data.c * ratio) * 1e4) / 1e4 + data.u : data.b, data);
15244  }, _renderRoundedCSSProp = function _renderRoundedCSSProp2(ratio, data) {
15245    var value = data.s + data.c * ratio;
15246    data.set(data.t, data.p, ~~(value + (value < 0 ? -0.5 : 0.5)) + data.u, data);
15247  }, _renderNonTweeningValue = function _renderNonTweeningValue2(ratio, data) {
15248    return data.set(data.t, data.p, ratio ? data.e : data.b, data);
15249  }, _renderNonTweeningValueOnlyAtEnd = function _renderNonTweeningValueOnlyAtEnd2(ratio, data) {
15250    return data.set(data.t, data.p, ratio !== 1 ? data.b : data.e, data);
15251  }, _setterCSSStyle = function _setterCSSStyle2(target, property, value) {
15252    return target.style[property] = value;
15253  }, _setterCSSProp = function _setterCSSProp2(target, property, value) {
15254    return target.style.setProperty(property, value);
15255  }, _setterTransform = function _setterTransform2(target, property, value) {
15256    return target._gsap[property] = value;
15257  }, _setterScale = function _setterScale2(target, property, value) {
15258    return target._gsap.scaleX = target._gsap.scaleY = value;
15259  }, _setterScaleWithRender = function _setterScaleWithRender2(target, property, value, data, ratio) {
15260    var cache = target._gsap;
15261    cache.scaleX = cache.scaleY = value;
15262    cache.renderTransform(ratio, cache);
15263  }, _setterTransformWithRender = function _setterTransformWithRender2(target, property, value, data, ratio) {
15264    var cache = target._gsap;
15265    cache[property] = value;
15266    cache.renderTransform(ratio, cache);
15267  }, _transformProp$1 = "transform", _transformOriginProp = _transformProp$1 + "Origin", _saveStyle = function _saveStyle2(property, isNotCSS) {
15268    var _this = this;
15269    var target = this.target, style = target.style, cache = target._gsap;
15270    if (property in _transformProps && style) {
15271      this.tfm = this.tfm || {};
15272      if (property !== "transform") {
15273        property = _propertyAliases[property] || property;
15274        ~property.indexOf(",") ? property.split(",").forEach(function(a) {
15275          return _this.tfm[a] = _get(target, a);
15276        }) : this.tfm[property] = cache.x ? cache[property] : _get(target, property);
15277        property === _transformOriginProp && (this.tfm.zOrigin = cache.zOrigin);
15278      } else {
15279        return _propertyAliases.transform.split(",").forEach(function(p) {
15280          return _saveStyle2.call(_this, p, isNotCSS);
15281        });
15282      }
15283      if (this.props.indexOf(_transformProp$1) >= 0) {
15284        return;
15285      }
15286      if (cache.svg) {
15287        this.svgo = target.getAttribute("data-svg-origin");
15288        this.props.push(_transformOriginProp, isNotCSS, "");
15289      }
15290      property = _transformProp$1;
15291    }
15292    (style || isNotCSS) && this.props.push(property, isNotCSS, style[property]);
15293  }, _removeIndependentTransforms = function _removeIndependentTransforms2(style) {
15294    if (style.translate) {
15295      style.removeProperty("translate");
15296      style.removeProperty("scale");
15297      style.removeProperty("rotate");
15298    }
15299  }, _revertStyle = function _revertStyle2() {
15300    var props = this.props, target = this.target, style = target.style, cache = target._gsap, i2, p;
15301    for (i2 = 0; i2 < props.length; i2 += 3) {
15302      props[i2 + 1] ? target[props[i2]] = props[i2 + 2] : props[i2 + 2] ? style[props[i2]] = props[i2 + 2] : style.removeProperty(props[i2].substr(0, 2) === "--" ? props[i2] : props[i2].replace(_capsExp$1, "-$1").toLowerCase());
15303    }
15304    if (this.tfm) {
15305      for (p in this.tfm) {
15306        cache[p] = this.tfm[p];
15307      }
15308      if (cache.svg) {
15309        cache.renderTransform();
15310        target.setAttribute("data-svg-origin", this.svgo || "");
15311      }
15312      i2 = _reverting();
15313      if ((!i2 || !i2.isStart) && !style[_transformProp$1]) {
15314        _removeIndependentTransforms(style);
15315        if (cache.zOrigin && style[_transformOriginProp]) {
15316          style[_transformOriginProp] += " " + cache.zOrigin + "px";
15317          cache.zOrigin = 0;
15318          cache.renderTransform();
15319        }
15320        cache.uncache = 1;
15321      }
15322    }
15323  }, _getStyleSaver = function _getStyleSaver2(target, properties) {
15324    var saver = {
15325      target,
15326      props: [],
15327      revert: _revertStyle,
15328      save: _saveStyle
15329    };
15330    target._gsap || gsap$2.core.getCache(target);
15331    properties && properties.split(",").forEach(function(p) {
15332      return saver.save(p);
15333    });
15334    return saver;
15335  }, _supports3D, _createElement = function _createElement2(type, ns) {
15336    var e = _doc$2.createElementNS ? _doc$2.createElementNS((ns || "http://www.w3.org/1999/xhtml").replace(/^https/, "http"), type) : _doc$2.createElement(type);
15337    return e && e.style ? e : _doc$2.createElement(type);
15338  }, _getComputedProperty = function _getComputedProperty2(target, property, skipPrefixFallback) {
15339    var cs = getComputedStyle(target);
15340    return cs[property] || cs.getPropertyValue(property.replace(_capsExp$1, "-$1").toLowerCase()) || cs.getPropertyValue(property) || !skipPrefixFallback && _getComputedProperty2(target, _checkPropPrefix(property) || property, 1) || "";
15341  }, _prefixes = "O,Moz,ms,Ms,Webkit".split(","), _checkPropPrefix = function _checkPropPrefix2(property, element, preferPrefix) {
15342    var e = element || _tempDiv, s = e.style, i2 = 5;
15343    if (property in s && !preferPrefix) {
15344      return property;
15345    }
15346    property = property.charAt(0).toUpperCase() + property.substr(1);
15347    while (i2-- && !(_prefixes[i2] + property in s)) {
15348    }
15349    return i2 < 0 ? null : (i2 === 3 ? "ms" : i2 >= 0 ? _prefixes[i2] : "") + property;
15350  }
15350, _initCore$1 = function _initCore2() {
15351    if (_windowExists$1() && window.document) {
15352      _win$2 = window;
15353      _doc$2 = _win$2.document;
15354      _docElement = _doc$2.documentElement;
15355      _tempDiv = _createElement("div") || {
15356        style: {}
15357      };
15358      _createElement("div");
15359      _transformProp$1 = _checkPropPrefix(_transformProp$1);
15360      _transformOriginProp = _transformProp$1 + "Origin";
15361      _tempDiv.style.cssText = "border-width:0;line-height:0;position:absolute;padding:0";
15362      _supports3D = !!_checkPropPrefix("perspective");
15363      _reverting = gsap$2.core.reverting;
15364      _pluginInitted = 1;
15365    }
15366  }, _getBBoxHack = function _getBBoxHack2(swapIfPossible) {
15367    var svg = _createElement("svg", this.ownerSVGElement && this.ownerSVGElement.getAttribute("xmlns") || "http://www.w3.org/2000/svg"), oldParent = this.parentNode, oldSibling = this.nextSibling, oldCSS = this.style.cssText, bbox;
15368    _docElement.appendChild(svg);
15369    svg.appendChild(this);
15370    this.style.display = "block";
15371    if (swapIfPossible) {
15372      try {
15373        bbox = this.getBBox();
15374        this._gsapBBox = this.getBBox;
15375        this.getBBox = _getBBoxHack2;
15376      } catch (e) {
15377      }
15378    } else if (this._gsapBBox) {
15379      bbox = this._gsapBBox();
15380    }
15381    if (oldParent) {
15382      if (oldSibling) {
15383        oldParent.insertBefore(this, oldSibling);
15384      } else {
15385        oldParent.appendChild(this);
15386      }
15387    }
15388    _docElement.removeChild(svg);
15389    this.style.cssText = oldCSS;
15390    return bbox;
15391  }, _getAttributeFallbacks = function _getAttributeFallbacks2(target, attributesArray) {
15392    var i2 = attributesArray.length;
15393    while (i2--) {
15394      if (target.hasAttribute(attributesArray[i2])) {
15395        return target.getAttribute(attributesArray[i2]);
15396      }
15397    }
15398  }, _getBBox = function _getBBox2(target) {
15399    var bounds;
15400    try {
15401      bounds = target.getBBox();
15402    } catch (error) {
15403      bounds = _getBBoxHack.call(target, true);
15404    }
15405    bounds && (bounds.width || bounds.height) || target.getBBox === _getBBoxHack || (bounds = _getBBoxHack.call(target, true));
15406    return bounds && !bounds.width && !bounds.x && !bounds.y ? {
15407      x: +_getAttributeFallbacks(target, ["x", "cx", "x1"]) || 0,
15408      y: +_getAttributeFallbacks(target, ["y", "cy", "y1"]) || 0,
15409      width: 0,
15410      height: 0
15411    } : bounds;
15412  }, _isSVG = function _isSVG2(e) {
15413    return !!(e.getCTM && (!e.parentNode || e.ownerSVGElement) && _getBBox(e));
15414  }, _removeProperty = function _removeProperty2(target, property) {
15415    if (property) {
15416      var style = target.style, first2Chars;
15417      if (property in _transformProps && property !== _transformOriginProp) {
15418        property = _transformProp$1;
15419      }
15420      if (style.removeProperty) {
15421        first2Chars = property.substr(0, 2);
15422        if (first2Chars === "ms" || property.substr(0, 6) === "webkit") {
15423          property = "-" + property;
15424        }
15425        style.removeProperty(first2Chars === "--" ? property : property.replace(_capsExp$1, "-$1").toLowerCase());
15426      } else {
15427        style.removeAttribute(property);
15428      }
15429    }
15430  }, _addNonTweeningPT = function _addNonTweeningPT2(plugin, target, property, beginning, end, onlySetAtEnd) {
15431    var pt = new PropTween(plugin._pt, target, property, 0, 1, onlySetAtEnd ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue);
15432    plugin._pt = pt;
15433    pt.b = beginning;
15434    pt.e = end;
15435    plugin._props.push(property);
15436    return pt;
15437  }, _nonConvertibleUnits = {
15438    deg: 1,
15439    rad: 1,
15440    turn: 1
15441  }, _nonStandardLayouts = {
15442    grid: 1,
15443    flex: 1
15444  }, _convertToUnit = function _convertToUnit2(target, property, value, unit) {
15445    var curValue = parseFloat(value) || 0, curUnit = (value + "").trim().substr((curValue + "").length) || "px", style = _tempDiv.style, horizontal = _horizontalExp.test(property), isRootSVG = target.tagName.toLowerCase() === "svg", measureProperty = (isRootSVG ? "client" : "offset") + (horizontal ? "Width" : "Height"), amount = 100, toPixels = unit === "px", toPercent = unit === "%", px, parent, cache, isSVG;
15446    if (unit === curUnit || !curValue || _nonConvertibleUnits[unit] || _nonConvertibleUnits[curUnit]) {
15447      return curValue;
15448    }
15449    curUnit !== "px" && !toPixels && (curValue = _convertToUnit2(target, property, value, "px"));
15450    isSVG = target.getCTM && _isSVG(target);
15451    if ((toPercent || curUnit === "%") && (_transformProps[property] || ~property.indexOf("adius"))) {
15452      px = isSVG ? target.getBBox()[horizontal ? "width" : "height"] : target[measureProperty];
vendor: 5,086 bytes, lines 15453-15561
15453      return _round$1(toPercent ? curValue / px * amount : curValue / 100 * px);
15454    }
15455    style[horizontal ? "width" : "height"] = amount + (toPixels ? curUnit : unit);
15456    parent = ~property.indexOf("adius") || unit === "em" && target.appendChild && !isRootSVG ? target : target.parentNode;
15457    if (isSVG) {
15458      parent = (target.ownerSVGElement || {}).parentNode;
15459    }
15460    if (!parent || parent === _doc$2 || !parent.appendChild) {
15461      parent = _doc$2.body;
15462    }
15463    cache = parent._gsap;
15464    if (cache && toPercent && cache.width && horizontal && cache.time === _ticker.time && !cache.uncache) {
15465      return _round$1(curValue / cache.width * amount);
15466    } else {
15467      if (toPercent && (property === "height" || property === "width")) {
15468        var v = target.style[property];
15469        target.style[property] = amount + unit;
15470        px = target[measureProperty];
15471        v ? target.style[property] = v : _removeProperty(target, property);
15472      } else {
15473        (toPercent || curUnit === "%") && !_nonStandardLayouts[_getComputedProperty(parent, "display")] && (style.position = _getComputedProperty(target, "position"));
15474        parent === target && (style.position = "static");
15475        parent.appendChild(_tempDiv);
15476        px = _tempDiv[measureProperty];
15477        parent.removeChild(_tempDiv);
15478        style.position = "absolute";
15479      }
15480      if (horizontal && toPercent) {
15481        cache = _getCache(parent);
15482        cache.time = _ticker.time;
15483        cache.width = parent[measureProperty];
15484      }
15485    }
15486    return _round$1(toPixels ? px * curValue / amount : px && curValue ? amount / px * curValue : 0);
15487  }, _get = function _get2(target, property, unit, uncache) {
15488    var value;
15489    _pluginInitted || _initCore$1();
15490    if (property in _propertyAliases && property !== "transform") {
15491      property = _propertyAliases[property];
15492      if (~property.indexOf(",")) {
15493        property = property.split(",")[0];
15494      }
15495    }
15496    if (_transformProps[property] && property !== "transform") {
15497      value = _parseTransform(target, uncache);
15498      value = property !== "transformOrigin" ? value[property] : value.svg ? value.origin : _firstTwoOnly(_getComputedProperty(target, _transformOriginProp)) + " " + value.zOrigin + "px";
15499    } else {
15500      value = target.style[property];
15501      if (!value || value === "auto" || uncache || ~(value + "").indexOf("calc(")) {
15502        value = _specialProps[property] && _specialProps[property](target, property, unit) || _getComputedProperty(target, property) || _getProperty(target, property) || (property === "opacity" ? 1 : 0);
15503      }
15504    }
15505    return unit && !~(value + "").trim().indexOf(" ") ? _convertToUnit(target, property, value, unit) + unit : value;
15506  }, _tweenComplexCSSString = function _tweenComplexCSSString2(target, prop, start, end) {
15507    if (!start || start === "none") {
15508      var p = _checkPropPrefix(prop, target, 1), s = p && _getComputedProperty(target, p, 1);
15509      if (s && s !== start) {
15510        prop = p;
15511        start = s;
15512      } else if (prop === "borderColor") {
15513        start = _getComputedProperty(target, "borderTopColor");
15514      }
15515    }
15516    var pt = new PropTween(this._pt, target.style, prop, 0, 1, _renderComplexString), index = 0, matchIndex = 0, a, result, startValues, startNum, color2, startValue, endValue, endNum, chunk, endUnit, startUnit, endValues;
15517    pt.b = start;
15518    pt.e = end;
15519    start += "";
15520    end += "";
15521    if (end === "auto") {
15522      startValue = target.style[prop];
15523      target.style[prop] = end;
15524      end = _getComputedProperty(target, prop) || end;
15525      startValue ? target.style[prop] = startValue : _removeProperty(target, prop);
15526    }
15527    a = [start, end];
15528    _colorStringFilter(a);
15529    start = a[0];
15530    end = a[1];
15531    startValues = start.match(_numWithUnitExp) || [];
15532    endValues = end.match(_numWithUnitExp) || [];
15533    if (endValues.length) {
15534      while (result = _numWithUnitExp.exec(end)) {
15535        endValue = result[0];
15536        chunk = end.substring(index, result.index);
15537        if (color2) {
15538          color2 = (color2 + 1) % 5;
15539        } else if (chunk.substr(-5) === "rgba(" || chunk.substr(-5) === "hsla(") {
15540          color2 = 1;
15541        }
15542        if (endValue !== (startValue = startValues[matchIndex++] || "")) {
15543          startNum = parseFloat(startValue) || 0;
15544          startUnit = startValue.substr((startNum + "").length);
15545          endValue.charAt(1) === "=" && (endValue = _parseRelative(startNum, endValue) + startUnit);
15546          endNum = parseFloat(endValue);
15547          endUnit = endValue.substr((endNum + "").length);
15548          index = _numWithUnitExp.lastIndex - endUnit.length;
15549          if (!endUnit) {
15550            endUnit = endUnit || _config.units[prop] || startUnit;
15551            if (index === end.length) {
15552              end += endUnit;
15553              pt.e += endUnit;
15554            }
15555          }
15556          if (startUnit !== endUnit) {
15557            startNum = _convertToUnit(target, prop, startValue, endUnit) || 0;
15558          }
15559          pt._pt = {
15560            _next: pt._pt,
15561            p: chunk || matchIndex === 1 ? chunk : ",",
vendor: 4,374 bytes, lines 15562-15676
15562            //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.
15563            s: startNum,
15564            c: endNum - startNum,
15565            m: color2 && color2 < 4 || prop === "zIndex" ? Math.round : 0
15566          };
15567        }
15568      }
15569      pt.c = index < end.length ? end.substring(index, end.length) : "";
15570    } else {
15571      pt.r = prop === "display" && end === "none" ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue;
15572    }
15573    _relExp.test(end) && (pt.e = 0);
15574    this._pt = pt;
15575    return pt;
15576  }, _keywordToPercent = {
15577    top: "0%",
15578    bottom: "100%",
15579    left: "0%",
15580    right: "100%",
15581    center: "50%"
15582  }, _convertKeywordsToPercentages = function _convertKeywordsToPercentages2(value) {
15583    var split = value.split(" "), x = split[0], y = split[1] || "50%";
15584    if (x === "top" || x === "bottom" || y === "left" || y === "right") {
15585      value = x;
15586      x = y;
15587      y = value;
15588    }
15589    split[0] = _keywordToPercent[x] || x;
15590    split[1] = _keywordToPercent[y] || y;
15591    return split.join(" ");
15592  }, _renderClearProps = function _renderClearProps2(ratio, data) {
15593    if (data.tween && data.tween._time === data.tween._dur) {
15594      var target = data.t, style = target.style, props = data.u, cache = target._gsap, prop, clearTransforms, i2;
15595      if (props === "all" || props === true) {
15596        style.cssText = "";
15597        clearTransforms = 1;
15598      } else {
15599        props = props.split(",");
15600        i2 = props.length;
15601        while (--i2 > -1) {
15602          prop = props[i2];
15603          if (_transformProps[prop]) {
15604            clearTransforms = 1;
15605            prop = prop === "transformOrigin" ? _transformOriginProp : _transformProp$1;
15606          }
15607          _removeProperty(target, prop);
15608        }
15609      }
15610      if (clearTransforms) {
15611        _removeProperty(target, _transformProp$1);
15612        if (cache) {
15613          cache.svg && target.removeAttribute("transform");
15614          _parseTransform(target, 1);
15615          cache.uncache = 1;
15616          _removeIndependentTransforms(style);
15617        }
15618      }
15619    }
15620  }, _specialProps = {
15621    clearProps: function clearProps(plugin, target, property, endValue, tween) {
15622      if (tween.data !== "isFromStart") {
15623        var pt = plugin._pt = new PropTween(plugin._pt, target, property, 0, 0, _renderClearProps);
15624        pt.u = endValue;
15625        pt.pr = -10;
15626        pt.tween = tween;
15627        plugin._props.push(property);
15628        return 1;
15629      }
15630    }
15631    /* className feature (about 0.4kb gzipped).
15632    , className(plugin, target, property, endValue, tween) {
15633    	let _renderClassName = (ratio, data) => {
15634    			data.css.render(ratio, data.css);
15635    			if (!ratio || ratio === 1) {
15636    				let inline = data.rmv,
15637    					target = data.t,
15638    					p;
15639    				target.setAttribute("class", ratio ? data.e : data.b);
15640    				for (p in inline) {
15641    					_removeProperty(target, p);
15642    				}
15643    			}
15644    		},
15645    		_getAllStyles = (target) => {
15646    			let styles = {},
15647    				computed = getComputedStyle(target),
15648    				p;
15649    			for (p in computed) {
15650    				if (isNaN(p) && p !== "cssText" && p !== "length") {
15651    					styles[p] = computed[p];
15652    				}
15653    			}
15654    			_setDefaults(styles, _parseTransform(target, 1));
15655    			return styles;
15656    		},
15657    		startClassList = target.getAttribute("class"),
15658    		style = target.style,
15659    		cssText = style.cssText,
15660    		cache = target._gsap,
15661    		classPT = cache.classPT,
15662    		inlineToRemoveAtEnd = {},
15663    		data = {t:target, plugin:plugin, rmv:inlineToRemoveAtEnd, b:startClassList, e:(endValue.charAt(1) !== "=") ? endValue : startClassList.replace(new RegExp("(?:\\s|^)" + endValue.substr(2) + "(?![\\w-])"), "") + ((endValue.charAt(0) === "+") ? " " + endValue.substr(2) : "")},
15664    		changingVars = {},
15665    		startVars = _getAllStyles(target),
15666    		transformRelated = /(transform|perspective)/i,
15667    		endVars, p;
15668    	if (classPT) {
15669    		classPT.r(1, classPT.d);
15670    		_removeLinkedListItem(classPT.d.plugin, classPT, "_pt");
15671    	}
15672    	target.setAttribute("class", data.e);
15673    	endVars = _getAllStyles(target, true);
15674    	target.setAttribute("class", startClassList);
15675    	for (p in endVars) {
15676    		if (endVars[p] !== startVars[p] && !transformRelated.test(p)) {
15677    			changingVars[p] = endVars[p];
15678    			if (!style[p] && style[p] !== "0") {
15679    				inlineToRemoveAtEnd[p] = 1;
15680    			}
15681    		}
15682    	}
15683    	cache.classPT = plugin._pt = new PropTween(plugin._pt, target, "className", 0, 0, _renderClassName, data, 0, -11);
15684    	if (style.cssText !== cssText) { //only apply if things change. Otherwise, in cases like a background-image that's pulled dynamically, it could cause a refresh. See https://gsap.com/forums/topic/20368-possible-gsap-bug-switching-classnames-in-chrome/.
15685    		style.cssText = cssText; //we recorded cssText before we swapped classes and ran _getAllStyles() because in cases when a className tween is overwritten, we remove all the related tweening properties from that class change (otherwise class-specific stuff can't override properties we've directly set on the target's style object due to specificity).
15686    	}
15687    	_parseTransform(target, true); //to clear the caching of transforms
15688    	data.css = new gsap.plugins.css();
15689    	data.css.init(target, changingVars, tween);
15690    	plugin._props.push(...data.css._props);
15691    	return 1;
15692    }
15693    */
15694  }, _identity2DMatrix = [1, 0, 0, 1, 0, 0], _rotationalProperties = {}, _isNullTransform = function _isNullTransform2(value) {
15695    return value === "matrix(1, 0, 0, 1, 0, 0)" || value === "none" || !value;
15696  }, _getComputedTransformMatrixAsArray = function _getComputedTransformMatrixAsArray2(target) {
15697    var matrixString = _getComputedProperty(target, _transformProp$1);
15698    return _isNullTransform(matrixString) ? _identity2DMatrix : matrixString.substr(7).match(_numExp).map(_round$1);
15699  }, _getMatrix = function _getMatrix2(target, force2D) {
15700    var cache = target._gsap || _getCache(target), style = target.style, matrix = _getComputedTransformMatrixAsArray(target), parent, nextSibling, temp, addedToDOM;
15701    if (cache.svg && target.getAttribute("transform")) {
15702      temp = target.transform.baseVal.consolidate().matrix;
15703      matrix = [temp.a, temp.b, temp.c, temp.d, temp.e, temp.f];
15704      return matrix.join(",") === "1,0,0,1,0,0" ? _identity2DMatrix : matrix;
15705    } else if (matrix === _identity2DMatrix && !target.offsetParent && target !== _docElement && !cache.svg) {
15706      temp = style.display;
15707      style.display = "block";
15708      parent = target.parentNode;
15709      if (!parent || !target.offsetParent) {
15710        addedToDOM = 1;
15711        nextSibling = target.nextElementSibling;
15712        _docElement.appendChild(target);
15713      }
15714      matrix = _getComputedTransformMatrixAsArray(target);
15715      temp ? style.display = temp : _removeProperty(target, "display");
15716      if (addedToDOM) {
15717        nextSibling ? parent.insertBefore(target, nextSibling) : parent ? parent.appendChild(target) : _docElement.removeChild(target);
15718      }
15719    }
15720    return force2D && matrix.length > 6 ? [matrix[0], matrix[1], matrix[4], matrix[5], matrix[12], matrix[13]] : matrix;
15721  }, _applySVGOrigin = function _applySVGOrigin2(target, origin2, originIsAbsolute, smooth, matrixArray, pluginToAddPropTweensTo) {
15722    var cache = target._gsap, matrix = matrixArray || _getMatrix(target, true), xOriginOld = cache.xOrigin || 0, yOriginOld = cache.yOrigin || 0, xOffsetOld = cache.xOffset || 0, yOffsetOld = cache.yOffset || 0, a = matrix[0], b = matrix[1], c = matrix[2], d = matrix[3], tx = matrix[4], ty = matrix[5], originSplit = origin2.split(" "), xOrigin = parseFloat(originSplit[0]) || 0, yOrigin = parseFloat(originSplit[1]) || 0, bounds, determinant, x, y;
15723    if (!originIsAbsolute) {
15724      bounds = _getBBox(target);
15725      xOrigin = bounds.x + (~originSplit[0].indexOf("%") ? xOrigin / 100 * boun
vendor: 12,239 bytes, lines 15725-15990
15725ds.width : xOrigin);
15726      yOrigin = bounds.y + (~(originSplit[1] || originSplit[0]).indexOf("%") ? yOrigin / 100 * bounds.height : yOrigin);
15727    } else if (matrix !== _identity2DMatrix && (determinant = a * d - b * c)) {
15728      x = xOrigin * (d / determinant) + yOrigin * (-c / determinant) + (c * ty - d * tx) / determinant;
15729      y = xOrigin * (-b / determinant) + yOrigin * (a / determinant) - (a * ty - b * tx) / determinant;
15730      xOrigin = x;
15731      yOrigin = y;
15732    }
15733    if (smooth || smooth !== false && cache.smooth) {
15734      tx = xOrigin - xOriginOld;
15735      ty = yOrigin - yOriginOld;
15736      cache.xOffset = xOffsetOld + (tx * a + ty * c) - tx;
15737      cache.yOffset = yOffsetOld + (tx * b + ty * d) - ty;
15738    } else {
15739      cache.xOffset = cache.yOffset = 0;
15740    }
15741    cache.xOrigin = xOrigin;
15742    cache.yOrigin = yOrigin;
15743    cache.smooth = !!smooth;
15744    cache.origin = origin2;
15745    cache.originIsAbsolute = !!originIsAbsolute;
15746    target.style[_transformOriginProp] = "0px 0px";
15747    if (pluginToAddPropTweensTo) {
15748      _addNonTweeningPT(pluginToAddPropTweensTo, cache, "xOrigin", xOriginOld, xOrigin);
15749      _addNonTweeningPT(pluginToAddPropTweensTo, cache, "yOrigin", yOriginOld, yOrigin);
15750      _addNonTweeningPT(pluginToAddPropTweensTo, cache, "xOffset", xOffsetOld, cache.xOffset);
15751      _addNonTweeningPT(pluginToAddPropTweensTo, cache, "yOffset", yOffsetOld, cache.yOffset);
15752    }
15753    target.setAttribute("data-svg-origin", xOrigin + " " + yOrigin);
15754  }, _parseTransform = function _parseTransform2(target, uncache) {
15755    var cache = target._gsap || new GSCache(target);
15756    if ("x" in cache && !uncache && !cache.uncache) {
15757      return cache;
15758    }
15759    var style = target.style, invertedScaleX = cache.scaleX < 0, px = "px", deg = "deg", cs = getComputedStyle(target), origin2 = _getComputedProperty(target, _transformOriginProp) || "0", x, y, z, scaleX, scaleY, rotation, rotationX, rotationY, skewX, skewY, perspective, xOrigin, yOrigin, matrix, angle, cos, sin, a, b, c, d, a12, a22, t1, t2, t3, a13, a23, a33, a42, a43, a32;
15760    x = y = z = rotation = rotationX = rotationY = skewX = skewY = perspective = 0;
15761    scaleX = scaleY = 1;
15762    cache.svg = !!(target.getCTM && _isSVG(target));
15763    if (cs.translate) {
15764      if (cs.translate !== "none" || cs.scale !== "none" || cs.rotate !== "none") {
15765        style[_transformProp$1] = (cs.translate !== "none" ? "translate3d(" + (cs.translate + " 0 0").split(" ").slice(0, 3).join(", ") + ") " : "") + (cs.rotate !== "none" ? "rotate(" + cs.rotate + ") " : "") + (cs.scale !== "none" ? "scale(" + cs.scale.split(" ").join(",") + ") " : "") + (cs[_transformProp$1] !== "none" ? cs[_transformProp$1] : "");
15766      }
15767      style.scale = style.rotate = style.translate = "none";
15768    }
15769    matrix = _getMatrix(target, cache.svg);
15770    if (cache.svg) {
15771      if (cache.uncache) {
15772        t2 = target.getBBox();
15773        origin2 = cache.xOrigin - t2.x + "px " + (cache.yOrigin - t2.y) + "px";
15774        t1 = "";
15775      } else {
15776        t1 = !uncache && target.getAttribute("data-svg-origin");
15777      }
15778      _applySVGOrigin(target, t1 || origin2, !!t1 || cache.originIsAbsolute, cache.smooth !== false, matrix);
15779    }
15780    xOrigin = cache.xOrigin || 0;
15781    yOrigin = cache.yOrigin || 0;
15782    if (matrix !== _identity2DMatrix) {
15783      a = matrix[0];
15784      b = matrix[1];
15785      c = matrix[2];
15786      d = matrix[3];
15787      x = a12 = matrix[4];
15788      y = a22 = matrix[5];
15789      if (matrix.length === 6) {
15790        scaleX = Math.sqrt(a * a + b * b);
15791        scaleY = Math.sqrt(d * d + c * c);
15792        rotation = a || b ? _atan2(b, a) * _RAD2DEG : 0;
15793        skewX = c || d ? _atan2(c, d) * _RAD2DEG + rotation : 0;
15794        skewX && (scaleY *= Math.abs(Math.cos(skewX * _DEG2RAD)));
15795        if (cache.svg) {
15796          x -= xOrigin - (xOrigin * a + yOrigin * c);
15797          y -= yOrigin - (xOrigin * b + yOrigin * d);
15798        }
15799      } else {
15800        a32 = matrix[6];
15801        a42 = matrix[7];
15802        a13 = matrix[8];
15803        a23 = matrix[9];
15804        a33 = matrix[10];
15805        a43 = matrix[11];
15806        x = matrix[12];
15807        y = matrix[13];
15808        z = matrix[14];
15809        angle = _atan2(a32, a33);
15810        rotationX = angle * _RAD2DEG;
15811        if (angle) {
15812          cos = Math.cos(-angle);
15813          sin = Math.sin(-angle);
15814          t1 = a12 * cos + a13 * sin;
15815          t2 = a22 * cos + a23 * sin;
15816          t3 = a32 * cos + a33 * sin;
15817          a13 = a12 * -sin + a13 * cos;
15818          a23 = a22 * -sin + a23 * cos;
15819          a33 = a32 * -sin + a33 * cos;
15820          a43 = a42 * -sin + a43 * cos;
15821          a12 = t1;
15822          a22 = t2;
15823          a32 = t3;
15824        }
15825        angle = _atan2(-c, a33);
15826        rotationY = angle * _RAD2DEG;
15827        if (angle) {
15828          cos = Math.cos(-angle);
15829          sin = Math.sin(-angle);
15830          t1 = a * cos - a13 * sin;
15831          t2 = b * cos - a23 * sin;
15832          t3 = c * cos - a33 * sin;
15833          a43 = d * sin + a43 * cos;
15834          a = t1;
15835          b = t2;
15836          c = t3;
15837        }
15838        angle = _atan2(b, a);
15839        rotation = angle * _RAD2DEG;
15840        if (angle) {
15841          cos = Math.cos(angle);
15842          sin = Math.sin(angle);
15843          t1 = a * cos + b * sin;
15844          t2 = a12 * cos + a22 * sin;
15845          b = b * cos - a * sin;
15846          a22 = a22 * cos - a12 * sin;
15847          a = t1;
15848          a12 = t2;
15849        }
15850        if (rotationX && Math.abs(rotationX) + Math.abs(rotation) > 359.9) {
15851          rotationX = rotation = 0;
15852          rotationY = 180 - rotationY;
15853        }
15854        scaleX = _round$1(Math.sqrt(a * a + b * b + c * c));
15855        scaleY = _round$1(Math.sqrt(a22 * a22 + a32 * a32));
15856        angle = _atan2(a12, a22);
15857        skewX = Math.abs(angle) > 2e-4 ? angle * _RAD2DEG : 0;
15858        perspective = a43 ? 1 / (a43 < 0 ? -a43 : a43) : 0;
15859      }
15860      if (cache.svg) {
15861        t1 = target.getAttribute("transform");
15862        cache.forceCSS = target.setAttribute("transform", "") || !_isNullTransform(_getComputedProperty(target, _transformProp$1));
15863        t1 && target.setAttribute("transform", t1);
15864      }
15865    }
15866    if (Math.abs(skewX) > 90 && Math.abs(skewX) < 270) {
15867      if (invertedScaleX) {
15868        scaleX *= -1;
15869        skewX += rotation <= 0 ? 180 : -180;
15870        rotation += rotation <= 0 ? 180 : -180;
15871      } else {
15872        scaleY *= -1;
15873        skewX += skewX <= 0 ? 180 : -180;
15874      }
15875    }
15876    uncache = uncache || cache.uncache;
15877    cache.x = x - ((cache.xPercent = x && (!uncache && cache.xPercent || (Math.round(target.offsetWidth / 2) === Math.round(-x) ? -50 : 0))) ? target.offsetWidth * cache.xPercent / 100 : 0) + px;
15878    cache.y = y - ((cache.yPercent = y && (!uncache && cache.yPercent || (Math.round(target.offsetHeight / 2) === Math.round(-y) ? -50 : 0))) ? target.offsetHeight * cache.yPercent / 100 : 0) + px;
15879    cache.z = z + px;
15880    cache.scaleX = _round$1(scaleX);
15881    cache.scaleY = _round$1(scaleY);
15882    cache.rotation = _round$1(rotation) + deg;
15883    cache.rotationX = _round$1(rotationX) + deg;
15884    cache.rotationY = _round$1(rotationY) + deg;
15885    cache.skewX = skewX + deg;
15886    cache.skewY = skewY + deg;
15887    cache.transformPerspective = perspective + px;
15888    if (cache.zOrigin = parseFloat(origin2.split(" ")[2]) || !uncache && cache.zOrigin || 0) {
15889      style[_transformOriginProp] = _firstTwoOnly(origin2);
15890    }
15891    cache.xOffset = cache.yOffset = 0;
15892    cache.force3D = _config.force3D;
15893    cache.renderTransform = cache.svg ? _renderSVGTransforms : _supports3D ? _renderCSSTransforms : _renderNon3DTransforms;
15894    cache.uncache = 0;
15895    return cache;
15896  }, _firstTwoOnly = function _firstTwoOnly2(value) {
15897    return (value = value.split(" "))[0] + " " + value[1];
15898  }, _addPxTranslate = function _addPxTranslate2(target, start, value) {
15899    var unit = getUnit(start);
15900    return _round$1(parseFloat(start) + parseFloat(_convertToUnit(target, "x", value + "px", unit))) + unit;
15901  }, _renderNon3DTransforms = function _renderNon3DTransforms2(ratio, cache) {
15902    cache.z = "0px";
15903    cache.rotationY = cache.rotationX = "0deg";
15904    cache.force3D = 0;
15905    _renderCSSTransforms(ratio, cache);
15906  }, _zeroDeg = "0deg", _zeroPx = "0px", _endParenthesis = ") ", _renderCSSTransforms = function _renderCSSTransforms2(ratio, cache) {
15907    var _ref = cache || this, xPercent = _ref.xPercent, yPercent = _ref.yPercent, x = _ref.x, y = _ref.y, z = _ref.z, rotation = _ref.rotation, rotationY = _ref.rotationY, rotationX = _ref.rotationX, skewX = _ref.skewX, skewY = _ref.skewY, scaleX = _ref.scaleX, scaleY = _ref.scaleY, transformPerspective = _ref.transformPerspective, force3D = _ref.force3D, target = _ref.target, zOrigin = _ref.zOrigin, transforms = "", use3D = force3D === "auto" && ratio && ratio !== 1 || force3D === true;
15908    if (zOrigin && (rotationX !== _zeroDeg || rotationY !== _zeroDeg)) {
15909      var angle = parseFloat(rotationY) * _DEG2RAD, a13 = Math.sin(angle), a33 = Math.cos(angle), cos;
15910      angle = parseFloat(rotationX) * _DEG2RAD;
15911      cos = Math.cos(angle);
15912      x = _addPxTranslate(target, x, a13 * cos * -zOrigin);
15913      y = _addPxTranslate(target, y, -Math.sin(angle) * -zOrigin);
15914      z = _addPxTranslate(target, z, a33 * cos * -zOrigin + zOrigin);
15915    }
15916    if (transformPerspective !== _zeroPx) {
15917      transforms += "perspective(" + transformPerspective + _endParenthesis;
15918    }
15919    if (xPercent || yPercent) {
15920      transforms += "translate(" + xPercent + "%, " + yPercent + "%) ";
15921    }
15922    if (use3D || x !== _zeroPx || y !== _zeroPx || z !== _zeroPx) {
15923      transforms += z !== _zeroPx || use3D ? "translate3d(" + x + ", " + y + ", " + z + ") " : "translate(" + x + ", " + y + _endParenthesis;
15924    }
15925    if (rotation !== _zeroDeg) {
15926      transforms += "rotate(" + rotation + _endParenthesis;
15927    }
15928    if (rotationY !== _zeroDeg) {
15929      transforms += "rotateY(" + rotationY + _endParenthesis;
15930    }
15931    if (rotationX !== _zeroDeg) {
15932      transforms += "rotateX(" + rotationX + _endParenthesis;
15933    }
15934    if (skewX !== _zeroDeg || skewY !== _zeroDeg) {
15935      transforms += "skew(" + skewX + ", " + skewY + _endParenthesis;
15936    }
15937    if (scaleX !== 1 || scaleY !== 1) {
15938      transforms += "scale(" + scaleX + ", " + scaleY + _endParenthesis;
15939    }
15940    target.style[_transformProp$1] = transforms || "translate(0, 0)";
15941  }, _renderSVGTransforms = function _renderSVGTransforms2(ratio, cache) {
15942    var _ref2 = cache || this, xPercent = _ref2.xPercent, yPercent = _ref2.yPercent, x = _ref2.x, y = _ref2.y, rotation = _ref2.rotation, skewX = _ref2.skewX, skewY = _ref2.skewY, scaleX = _ref2.scaleX, scaleY = _ref2.scaleY, target = _ref2.target, xOrigin = _ref2.xOrigin, yOrigin = _ref2.yOrigin, xOffset = _ref2.xOffset, yOffset = _ref2.yOffset, forceCSS = _ref2.forceCSS, tx = parseFloat(x), ty = parseFloat(y), a11, a21, a12, a22, temp;
15943    rotation = parseFloat(rotation);
15944    skewX = parseFloat(skewX);
15945    skewY = parseFloat(skewY);
15946    if (skewY) {
15947      skewY = parseFloat(skewY);
15948      skewX += skewY;
15949      rotation += skewY;
15950    }
15951    if (rotation || skewX) {
15952      rotation *= _DEG2RAD;
15953      skewX *= _DEG2RAD;
15954      a11 = Math.cos(rotation) * scaleX;
15955      a21 = Math.sin(rotation) * scaleX;
15956      a12 = Math.sin(rotation - skewX) * -scaleY;
15957      a22 = Math.cos(rotation - skewX) * scaleY;
15958      if (skewX) {
15959        skewY *= _DEG2RAD;
15960        temp = Math.tan(skewX - skewY);
15961        temp = Math.sqrt(1 + temp * temp);
15962        a12 *= temp;
15963        a22 *= temp;
15964        if (skewY) {
15965          temp = Math.tan(skewY);
15966          temp = Math.sqrt(1 + temp * temp);
15967          a11 *= temp;
15968          a21 *= temp;
15969        }
15970      }
15971      a11 = _round$1(a11);
15972      a21 = _round$1(a21);
15973      a12 = _round$1(a12);
15974      a22 = _round$1(a22);
15975    } else {
15976      a11 = scaleX;
15977      a22 = scaleY;
15978      a21 = a12 = 0;
15979    }
15980    if (tx && !~(x + "").indexOf("px") || ty && !~(y + "").indexOf("px")) {
15981      tx = _convertToUnit(target, "x", x, "px");
15982      ty = _convertToUnit(target, "y", y, "px");
15983    }
15984    if (xOrigin || yOrigin || xOffset || yOffset) {
15985      tx = _round$1(tx + xOrigin - (xOrigin * a11 + yOrigin * a12) + xOffset);
15986      ty = _round$1(ty + yOrigin - (xOrigin * a21 + yOrigin * a22) + yOffset);
15987    }
15988    if (xPercent || yPercent) {
15989      temp = target.getBBox();
15990      tx = _round$1(tx + xPercent / 100 * temp.width);
vendor: 7,134 bytes, lines 15991-16141
15991      ty = _round$1(ty + yPercent / 100 * temp.height);
15992    }
15993    temp = "matrix(" + a11 + "," + a21 + "," + a12 + "," + a22 + "," + tx + "," + ty + ")";
15994    target.setAttribute("transform", temp);
15995    forceCSS && (target.style[_transformProp$1] = temp);
15996  }, _addRotationalPropTween = function _addRotationalPropTween2(plugin, target, property, startNum, endValue) {
15997    var cap = 360, isString2 = _isString$1(endValue), endNum = parseFloat(endValue) * (isString2 && ~endValue.indexOf("rad") ? _RAD2DEG : 1), change = endNum - startNum, finalValue = startNum + change + "deg", direction, pt;
15998    if (isString2) {
15999      direction = endValue.split("_")[1];
16000      if (direction === "short") {
16001        change %= cap;
16002        if (change !== change % (cap / 2)) {
16003          change += change < 0 ? cap : -360;
16004        }
16005      }
16006      if (direction === "cw" && change < 0) {
16007        change = (change + cap * _bigNum) % cap - ~~(change / cap) * cap;
16008      } else if (direction === "ccw" && change > 0) {
16009        change = (change - cap * _bigNum) % cap - ~~(change / cap) * cap;
16010      }
16011    }
16012    plugin._pt = pt = new PropTween(plugin._pt, target, property, startNum, change, _renderPropWithEnd);
16013    pt.e = finalValue;
16014    pt.u = "deg";
16015    plugin._props.push(property);
16016    return pt;
16017  }, _assign = function _assign2(target, source) {
16018    for (var p in source) {
16019      target[p] = source[p];
16020    }
16021    return target;
16022  }, _addRawTransformPTs = function _addRawTransformPTs2(plugin, transforms, target) {
16023    var startCache = _assign({}, target._gsap), exclude = "perspective,force3D,transformOrigin,svgOrigin", style = target.style, endCache, p, startValue, endValue, startNum, endNum, startUnit, endUnit;
16024    if (startCache.svg) {
16025      startValue = target.getAttribute("transform");
16026      target.setAttribute("transform", "");
16027      style[_transformProp$1] = transforms;
16028      endCache = _parseTransform(target, 1);
16029      _removeProperty(target, _transformProp$1);
16030      target.setAttribute("transform", startValue);
16031    } else {
16032      startValue = getComputedStyle(target)[_transformProp$1];
16033      style[_transformProp$1] = transforms;
16034      endCache = _parseTransform(target, 1);
16035      style[_transformProp$1] = startValue;
16036    }
16037    for (p in _transformProps) {
16038      startValue = startCache[p];
16039      endValue = endCache[p];
16040      if (startValue !== endValue && exclude.indexOf(p) < 0) {
16041        startUnit = getUnit(startValue);
16042        endUnit = getUnit(endValue);
16043        startNum = startUnit !== endUnit ? _convertToUnit(target, p, startValue, endUnit) : parseFloat(startValue);
16044        endNum = parseFloat(endValue);
16045        plugin._pt = new PropTween(plugin._pt, endCache, p, startNum, endNum - startNum, _renderCSSProp);
16046        plugin._pt.u = endUnit || 0;
16047        plugin._props.push(p);
16048      }
16049    }
16050    _assign(endCache, startCache);
16051  };
16052  _forEachName("padding,margin,Width,Radius", function(name, index) {
16053    var t2 = "Top", r = "Right", b = "Bottom", l = "Left", props = (index < 3 ? [t2, r, b, l] : [t2 + l, t2 + r, b + r, b + l]).map(function(side) {
16054      return index < 2 ? name + side : "border" + side + name;
16055    });
16056    _specialProps[index > 1 ? "border" + name : name] = function(plugin, target, property, endValue, tween) {
16057      var a, vars;
16058      if (arguments.length < 4) {
16059        a = props.map(function(prop) {
16060          return _get(plugin, prop, property);
16061        });
16062        vars = a.join(" ");
16063        return vars.split(a[0]).length === 5 ? a[0] : vars;
16064      }
16065      a = (endValue + "").split(" ");
16066      vars = {};
16067      props.forEach(function(prop, i2) {
16068        return vars[prop] = a[i2] = a[i2] || a[(i2 - 1) / 2 | 0];
16069      });
16070      plugin.init(target, vars, tween);
16071    };
16072  });
16073  var CSSPlugin = {
16074    name: "css",
16075    register: _initCore$1,
16076    targetTest: function targetTest(target) {
16077      return target.style && target.nodeType;
16078    },
16079    init: function init(target, vars, tween, index, targets) {
16080      var props = this._props, style = target.style, startAt = tween.vars.startAt, startValue, endValue, endNum, startNum, type, specialProp, p, startUnit, endUnit, relative, isTransformRelated, transformPropTween, cache, smooth, hasPriority, inlineProps;
16081      _pluginInitted || _initCore$1();
16082      this.styles = this.styles || _getStyleSaver(target);
16083      inlineProps = this.styles.props;
16084      this.tween = tween;
16085      for (p in vars) {
16086        if (p === "autoRound") {
16087          continue;
16088        }
16089        endValue = vars[p];
16090        if (_plugins[p] && _checkPlugin(p, vars, tween, index, target, targets)) {
16091          continue;
16092        }
16093        type = typeof endValue;
16094        specialProp = _specialProps[p];
16095        if (type === "function") {
16096          endValue = endValue.call(tween, index, target, targets);
16097          type = typeof endValue;
16098        }
16099        if (type === "string" && ~endValue.indexOf("random(")) {
16100          endValue = _replaceRandom(endValue);
16101        }
16102        if (specialProp) {
16103          specialProp(this, target, p, endValue, tween) && (hasPriority = 1);
16104        } else if (p.substr(0, 2) === "--") {
16105          startValue = (getComputedStyle(target).getPropertyValue(p) + "").trim();
16106          endValue += "";
16107          _colorExp.lastIndex = 0;
16108          if (!_colorExp.test(startValue)) {
16109            startUnit = getUnit(startValue);
16110            endUnit = getUnit(endValue);
16111          }
16112          endUnit ? startUnit !== endUnit && (startValue = _convertToUnit(target, p, startValue, endUnit) + endUnit) : startUnit && (endValue += startUnit);
16113          this.add(style, "setProperty", startValue, endValue, index, targets, 0, 0, p);
16114          props.push(p);
16115          inlineProps.push(p, 0, style[p]);
16116        } else if (type !== "undefined") {
16117          if (startAt && p in startAt) {
16118            startValue = typeof startAt[p] === "function" ? startAt[p].call(tween, index, target, targets) : startAt[p];
16119            _isString$1(startValue) && ~startValue.indexOf("random(") && (startValue = _replaceRandom(startValue));
16120            getUnit(startValue + "") || startValue === "auto" || (startValue += _config.units[p] || getUnit(_get(target, p)) || "");
16121            (startValue + "").charAt(1) === "=" && (startValue = _get(target, p));
16122          } else {
16123            startValue = _get(target, p);
16124          }
16125          startNum = parseFloat(startValue);
16126          relative = type === "string" && endValue.charAt(1) === "=" && endValue.substr(0, 2);
16127          relative && (endValue = endValue.substr(2));
16128          endNum = parseFloat(endValue);
16129          if (p in _propertyAliases) {
16130            if (p === "autoAlpha") {
16131              if (startNum === 1 && _get(target, "visibility") === "hidden" && endNum) {
16132                startNum = 0;
16133              }
16134              inlineProps.push("visibility", 0, style.visibility);
16135              _addNonTweeningPT(this, style, "visibility", startNum ? "inherit" : "hidden", endNum ? "inherit" : "hidden", !endNum);
16136            }
16137            if (p !== "scale" && p !== "transform") {
16138              p = _propertyAliases[p];
16139              ~p.indexOf(",") && (p = p.split(",")[0]);
16140            }
16141          }
vendor: 5,037 bytes, lines 16142-16236
16142          isTransformRelated = p in _transformProps;
16143          if (isTransformRelated) {
16144            this.styles.save(p);
16145            if (!transformPropTween) {
16146              cache = target._gsap;
16147              cache.renderTransform && !vars.parseTransform || _parseTransform(target, vars.parseTransform);
16148              smooth = vars.smoothOrigin !== false && cache.smooth;
16149              transformPropTween = this._pt = new PropTween(this._pt, style, _transformProp$1, 0, 1, cache.renderTransform, cache, 0, -1);
16150              transformPropTween.dep = 1;
16151            }
16152            if (p === "scale") {
16153              this._pt = new PropTween(this._pt, cache, "scaleY", cache.scaleY, (relative ? _parseRelative(cache.scaleY, relative + endNum) : endNum) - cache.scaleY || 0, _renderCSSProp);
16154              this._pt.u = 0;
16155              props.push("scaleY", p);
16156              p += "X";
16157            } else if (p === "transformOrigin") {
16158              inlineProps.push(_transformOriginProp, 0, style[_transformOriginProp]);
16159              endValue = _convertKeywordsToPercentages(endValue);
16160              if (cache.svg) {
16161                _applySVGOrigin(target, endValue, 0, smooth, 0, this);
16162              } else {
16163                endUnit = parseFloat(endValue.split(" ")[2]) || 0;
16164                endUnit !== cache.zOrigin && _addNonTweeningPT(this, cache, "zOrigin", cache.zOrigin, endUnit);
16165                _addNonTweeningPT(this, style, p, _firstTwoOnly(startValue), _firstTwoOnly(endValue));
16166              }
16167              continue;
16168            } else if (p === "svgOrigin") {
16169              _applySVGOrigin(target, endValue, 1, smooth, 0, this);
16170              continue;
16171            } else if (p in _rotationalProperties) {
16172              _addRotationalPropTween(this, cache, p, startNum, relative ? _parseRelative(startNum, relative + endValue) : endValue);
16173              continue;
16174            } else if (p === "smoothOrigin") {
16175              _addNonTweeningPT(this, cache, "smooth", cache.smooth, endValue);
16176              continue;
16177            } else if (p === "force3D") {
16178              cache[p] = endValue;
16179              continue;
16180            } else if (p === "transform") {
16181              _addRawTransformPTs(this, endValue, target);
16182              continue;
16183            }
16184          } else if (!(p in style)) {
16185            p = _checkPropPrefix(p) || p;
16186          }
16187          if (isTransformRelated || (endNum || endNum === 0) && (startNum || startNum === 0) && !_complexExp.test(endValue) && p in style) {
16188            startUnit = (startValue + "").substr((startNum + "").length);
16189            endNum || (endNum = 0);
16190            endUnit = getUnit(endValue) || (p in _config.units ? _config.units[p] : startUnit);
16191            startUnit !== endUnit && (startNum = _convertToUnit(target, p, startValue, endUnit));
16192            this._pt = new PropTween(this._pt, isTransformRelated ? cache : style, p, startNum, (relative ? _parseRelative(startNum, relative + endNum) : endNum) - startNum, !isTransformRelated && (endUnit === "px" || p === "zIndex") && vars.autoRound !== false ? _renderRoundedCSSProp : _renderCSSProp);
16193            this._pt.u = endUnit || 0;
16194            if (startUnit !== endUnit && endUnit !== "%") {
16195              this._pt.b = startValue;
16196              this._pt.r = _renderCSSPropWithBeginning;
16197            }
16198          } else if (!(p in style)) {
16199            if (p in target) {
16200              this.add(target, p, startValue || target[p], relative ? relative + endValue : endValue, index, targets);
16201            } else if (p !== "parseTransform") {
16202              _missingPlugin(p, endValue);
16203              continue;
16204            }
16205          } else {
16206            _tweenComplexCSSString.call(this, target, p, startValue, relative ? relative + endValue : endValue);
16207          }
16208          isTransformRelated || (p in style ? inlineProps.push(p, 0, style[p]) : inlineProps.push(p, 1, startValue || target[p]));
16209          props.push(p);
16210        }
16211      }
16212      hasPriority && _sortPropTweensByPriority(this);
16213    },
16214    render: function render(ratio, data) {
16215      if (data.tween._time || !_reverting()) {
16216        var pt = data._pt;
16217        while (pt) {
16218          pt.r(ratio, pt.d);
16219          pt = pt._next;
16220        }
16221      } else {
16222        data.styles.revert();
16223      }
16224    },
16225    get: _get,
16226    aliases: _propertyAliases,
16227    getSetter: function getSetter(target, property, plugin) {
16228      var p = _propertyAliases[property];
16229      p && p.indexOf(",") < 0 && (property = p);
16230      return property in _transformProps && property !== _transformOriginProp && (target._gsap.x || _get(target, "x")) ? plugin && _recentSetterPlugin === plugin ? property === "scale" ? _setterScale : _setterTransform : (_recentSetterPlugin = plugin || {}) && (property === "scale" ? _setterScaleWithRender : _setterTransformWithRender) : target.style && !_isUndefined(target.style[property]) ? _setterCSSStyle : ~property.indexOf("-") ? _setterCSSProp : _getSetter(target, property);
16231    },
16232    core: {
16233      _removeProperty,
16234      _getMatrix
16235    }
16236  };
vendor: 6,103 bytes, lines 16237-16359
16237  gsap$2.utils.checkPrefix = _checkPropPrefix;
16238  gsap$2.core.getStyleSaver = _getStyleSaver;
16239  (function(positionAndScale, rotation, others, aliases) {
16240    var all2 = _forEachName(positionAndScale + "," + rotation + "," + others, function(name) {
16241      _transformProps[name] = 1;
16242    });
16243    _forEachName(rotation, function(name) {
16244      _config.units[name] = "deg";
16245      _rotationalProperties[name] = 1;
16246    });
16247    _propertyAliases[all2[13]] = positionAndScale + "," + rotation;
16248    _forEachName(aliases, function(name) {
16249      var split = name.split(":");
16250      _propertyAliases[split[1]] = all2[split[0]];
16251    });
16252  })("x,y,z,scale,scaleX,scaleY,xPercent,yPercent", "rotation,rotationX,rotationY,skewX,skewY", "transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective", "0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY");
16253  _forEachName("x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective", function(name) {
16254    _config.units[name] = "px";
16255  });
16256  gsap$2.registerPlugin(CSSPlugin);
16257  var gsapWithCSS = gsap$2.registerPlugin(CSSPlugin) || gsap$2;
16258  gsapWithCSS.core.Tween;
16259  function _defineProperties(target, props) {
16260    for (var i2 = 0; i2 < props.length; i2++) {
16261      var descriptor = props[i2];
16262      descriptor.enumerable = descriptor.enumerable || false;
16263      descriptor.configurable = true;
16264      if ("value" in descriptor) descriptor.writable = true;
16265      Object.defineProperty(target, descriptor.key, descriptor);
16266    }
16267  }
16268  function _createClass(Constructor, protoProps, staticProps) {
16269    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
16270    return Constructor;
16271  }
16272  /*!
16273   * Observer 3.12.5
16274   * https://gsap.com
16275   *
16276   * @license Copyright 2008-2024, GreenSock. All rights reserved.
16277   * Subject to the terms at https://gsap.com/standard-license or for
16278   * Club GSAP members, the agreement issued with that membership.
16279   * @author: Jack Doyle, [email protected]
16280  */
16281  var gsap$1, _coreInitted$1, _win$1, _doc$1, _docEl$1, _body$1, _isTouch, _pointerType, ScrollTrigger$1, _root$1, _normalizer$1, _eventTypes, _context$1, _getGSAP$1 = function _getGSAP2() {
16282    return gsap$1 || typeof window !== "undefined" && (gsap$1 = window.gsap) && gsap$1.registerPlugin && gsap$1;
16283  }, _startup$1 = 1, _observers = [], _scrollers = [], _proxies = [], _getTime$1 = Date.now, _bridge = function _bridge2(name, value) {
16284    return value;
16285  }, _integrate = function _integrate2() {
16286    var core2 = ScrollTrigger$1.core, data = core2.bridge || {}, scrollers = core2._scrollers, proxies = core2._proxies;
16287    scrollers.push.apply(scrollers, _scrollers);
16288    proxies.push.apply(proxies, _proxies);
16289    _scrollers = scrollers;
16290    _proxies = proxies;
16291    _bridge = function _bridge2(name, value) {
16292      return data[name](value);
16293    };
16294  }, _getProxyProp = function _getProxyProp2(element, property) {
16295    return ~_proxies.indexOf(element) && _proxies[_proxies.indexOf(element) + 1][property];
16296  }, _isViewport$1 = function _isViewport2(el) {
16297    return !!~_root$1.indexOf(el);
16298  }, _addListener$1 = function _addListener2(element, type, func, passive, capture) {
16299    return element.addEventListener(type, func, {
16300      passive: passive !== false,
16301      capture: !!capture
16302    });
16303  }, _removeListener$1 = function _removeListener2(element, type, func, capture) {
16304    return element.removeEventListener(type, func, !!capture);
16305  }, _scrollLeft = "scrollLeft", _scrollTop = "scrollTop", _onScroll$1 = function _onScroll2() {
16306    return _normalizer$1 && _normalizer$1.isPressed || _scrollers.cache++;
16307  }, _scrollCacheFunc = function _scrollCacheFunc2(f, doNotCache) {
16308    var cachingFunc = function cachingFunc2(value) {
16309      if (value || value === 0) {
16310        _startup$1 && (_win$1.history.scrollRestoration = "manual");
16311        var isNormalizing = _normalizer$1 && _normalizer$1.isPressed;
16312        value = cachingFunc2.v = Math.round(value) || (_normalizer$1 && _normalizer$1.iOS ? 1 : 0);
16313        f(value);
16314        cachingFunc2.cacheID = _scrollers.cache;
16315        isNormalizing && _bridge("ss", value);
16316      } else if (doNotCache || _scrollers.cache !== cachingFunc2.cacheID || _bridge("ref")) {
16317        cachingFunc2.cacheID = _scrollers.cache;
16318        cachingFunc2.v = f();
16319      }
16320      return cachingFunc2.v + cachingFunc2.offset;
16321    };
16322    cachingFunc.offset = 0;
16323    return f && cachingFunc;
16324  }, _horizontal = {
16325    s: _scrollLeft,
16326    p: "left",
16327    p2: "Left",
16328    os: "right",
16329    os2: "Right",
16330    d: "width",
16331    d2: "Width",
16332    a: "x",
16333    sc: _scrollCacheFunc(function(value) {
16334      return arguments.length ? _win$1.scrollTo(value, _vertical.sc()) : _win$1.pageXOffset || _doc$1[_scrollLeft] || _docEl$1[_scrollLeft] || _body$1[_scrollLeft] || 0;
16335    })
16336  }, _vertical = {
16337    s: _scrollTop,
16338    p: "top",
16339    p2: "Top",
16340    os: "bottom",
16341    os2: "Bottom",
16342    d: "height",
16343    d2: "Height",
16344    a: "y",
16345    op: _horizontal,
16346    sc: _scrollCacheFunc(function(value) {
16347      return arguments.length ? _win$1.scrollTo(_horizontal.sc(), value) : _win$1.pageYOffset || _doc$1[_scrollTop] || _docEl$1[_scrollTop] || _body$1[_scrollTop] || 0;
16348    })
16349  }, _getTarget = function _getTarget2(t2, self2) {
16350    return (self2 && self2._ctx && self2._ctx.selector || gsap$1.utils.toArray)(t2)[0] || (typeof t2 === "string" && gsap$1.config().nullTargetWarn !== false ? console.warn("Element not found:", t2) : null);
16351  }, _getScrollFunc = function _getScrollFunc2(element, _ref) {
16352    var s = _ref.s, sc = _ref.sc;
16353    _isViewport$1(element) && (element = _doc$1.scrollingElement || _docEl$1);
16354    var i2 = _scrollers.indexOf(element), offset = sc === _vertical.sc ? 1 : 2;
16355    !~i2 && (i2 = _scrollers.push(element) - 1);
16356    _scrollers[i2 + offset] || _addListener$1(element, "scroll", _onScroll$1);
16357    var prev = _scrollers[i2 + offset], func = prev || (_scrollers[i2 + offset] = _scrollCacheFunc(_getProxyProp(element, s), true) || (_isViewport$1(element) ? sc : _scrollCacheFunc(function(value) {
16358      return arguments.length ? element[s] = value : element[s];
16359    }
vendor: 6,109 bytes, lines 16359-16451
16359)));
16360    func.target = element;
16361    prev || (func.smooth = gsap$1.getProperty(element, "scrollBehavior") === "smooth");
16362    return func;
16363  }, _getVelocityProp = function _getVelocityProp2(value, minTimeRefresh, useDelta) {
16364    var v1 = value, v2 = value, t1 = _getTime$1(), t2 = t1, min = minTimeRefresh || 50, dropToZeroTime = Math.max(500, min * 3), update = function update2(value2, force) {
16365      var t3 = _getTime$1();
16366      if (force || t3 - t1 > min) {
16367        v2 = v1;
16368        v1 = value2;
16369        t2 = t1;
16370        t1 = t3;
16371      } else if (useDelta) {
16372        v1 += value2;
16373      } else {
16374        v1 = v2 + (value2 - v2) / (t3 - t2) * (t1 - t2);
16375      }
16376    }, reset = function reset2() {
16377      v2 = v1 = useDelta ? 0 : v1;
16378      t2 = t1 = 0;
16379    }, getVelocity = function getVelocity2(latestValue) {
16380      var tOld = t2, vOld = v2, t3 = _getTime$1();
16381      (latestValue || latestValue === 0) && latestValue !== v1 && update(latestValue);
16382      return t1 === t2 || t3 - t2 > dropToZeroTime ? 0 : (v1 + (useDelta ? vOld : -vOld)) / ((useDelta ? t3 : t1) - tOld) * 1e3;
16383    };
16384    return {
16385      update,
16386      reset,
16387      getVelocity
16388    };
16389  }, _getEvent = function _getEvent2(e, preventDefault) {
16390    preventDefault && !e._gsapAllow && e.preventDefault();
16391    return e.changedTouches ? e.changedTouches[0] : e;
16392  }, _getAbsoluteMax = function _getAbsoluteMax2(a) {
16393    var max = Math.max.apply(Math, a), min = Math.min.apply(Math, a);
16394    return Math.abs(max) >= Math.abs(min) ? max : min;
16395  }, _setScrollTrigger = function _setScrollTrigger2() {
16396    ScrollTrigger$1 = gsap$1.core.globals().ScrollTrigger;
16397    ScrollTrigger$1 && ScrollTrigger$1.core && _integrate();
16398  }, _initCore = function _initCore2(core2) {
16399    gsap$1 = core2 || _getGSAP$1();
16400    if (!_coreInitted$1 && gsap$1 && typeof document !== "undefined" && document.body) {
16401      _win$1 = window;
16402      _doc$1 = document;
16403      _docEl$1 = _doc$1.documentElement;
16404      _body$1 = _doc$1.body;
16405      _root$1 = [_win$1, _doc$1, _docEl$1, _body$1];
16406      gsap$1.utils.clamp;
16407      _context$1 = gsap$1.core.context || function() {
16408      };
16409      _pointerType = "onpointerenter" in _body$1 ? "pointer" : "mouse";
16410      _isTouch = Observer.isTouch = _win$1.matchMedia && _win$1.matchMedia("(hover: none), (pointer: coarse)").matches ? 1 : "ontouchstart" in _win$1 || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0 ? 2 : 0;
16411      _eventTypes = Observer.eventTypes = ("ontouchstart" in _docEl$1 ? "touchstart,touchmove,touchcancel,touchend" : !("onpointerdown" in _docEl$1) ? "mousedown,mousemove,mouseup,mouseup" : "pointerdown,pointermove,pointercancel,pointerup").split(",");
16412      setTimeout(function() {
16413        return _startup$1 = 0;
16414      }, 500);
16415      _setScrollTrigger();
16416      _coreInitted$1 = 1;
16417    }
16418    return _coreInitted$1;
16419  };
16420  _horizontal.op = _vertical;
16421  _scrollers.cache = 0;
16422  var Observer = /* @__PURE__ */ function() {
16423    function Observer2(vars) {
16424      this.init(vars);
16425    }
16426    var _proto = Observer2.prototype;
16427    _proto.init = function init(vars) {
16428      _coreInitted$1 || _initCore(gsap$1) || console.warn("Please gsap.registerPlugin(Observer)");
16429      ScrollTrigger$1 || _setScrollTrigger();
16430      var tolerance = vars.tolerance, dragMinimum = vars.dragMinimum, type = vars.type, target = vars.target, lineHeight = vars.lineHeight, debounce = vars.debounce, preventDefault = vars.preventDefault, onStop = vars.onStop, onStopDelay = vars.onStopDelay, ignore = vars.ignore, wheelSpeed = vars.wheelSpeed, event = vars.event, onDragStart = vars.onDragStart, onDragEnd = vars.onDragEnd, onDrag = vars.onDrag, onPress = vars.onPress, onRelease = vars.onRelease, onRight = vars.onRight, onLeft = vars.onLeft, onUp = vars.onUp, onDown = vars.onDown, onChangeX = vars.onChangeX, onChangeY = vars.onChangeY, onChange = vars.onChange, onToggleX = vars.onToggleX, onToggleY = vars.onToggleY, onHover = vars.onHover, onHoverEnd = vars.onHoverEnd, onMove = vars.onMove, ignoreCheck = vars.ignoreCheck, isNormalizer = vars.isNormalizer, onGestureStart = vars.onGestureStart, onGestureEnd = vars.onGestureEnd, onWheel = vars.onWheel, onEnable = vars.onEnable, onDisable = vars.onDisable, onClick = vars.onClick, scrollSpeed = vars.scrollSpeed, capture = vars.capture, allowClicks = vars.allowClicks, lockAxis = vars.lockAxis, onLockAxis = vars.onLockAxis;
16431      this.target = target = _getTarget(target) || _docEl$1;
16432      this.vars = vars;
16433      ignore && (ignore = gsap$1.utils.toArray(ignore));
16434      tolerance = tolerance || 1e-9;
16435      dragMinimum = dragMinimum || 0;
16436      wheelSpeed = wheelSpeed || 1;
16437      scrollSpeed = scrollSpeed || 1;
16438      type = type || "wheel,touch,pointer";
16439      debounce = debounce !== false;
16440      lineHeight || (lineHeight = parseFloat(_win$1.getComputedStyle(_body$1).lineHeight) || 22);
16441      var id, onStopDelayedCall, dragged, moved, wheeled, locked, axis, self2 = this, prevDeltaX = 0, prevDeltaY = 0, passive = vars.passive || !preventDefault, scrollFuncX = _getScrollFunc(target, _horizontal), scrollFuncY = _getScrollFunc(target, _vertical), scrollX = scrollFuncX(), scrollY = scrollFuncY(), limitToTouch = ~type.indexOf("touch") && !~type.indexOf("pointer") && _eventTypes[0] === "pointerdown", isViewport = _isViewport$1(target), ownerDoc = target.ownerDocument || _doc$1, deltaX = [0, 0, 0], deltaY = [0, 0, 0], onClickTime = 0, clickCapture = function clickCapture2() {
16442        return onClickTime = _getTime$1();
16443      }, _ignoreCheck = function _ignoreCheck2(e, isPointerOrTouch) {
16444        return (self2.event = e) && ignore && ~ignore.indexOf(e.target) || isPointerOrTouch && limitToTouch && e.pointerType !== "touch" || ignoreCheck && ignoreCheck(e, isPointerOrTouch);
16445      }, onStopFunc = function onStopFunc2() {
16446        self2._vx.reset();
16447        self2._vy.reset();
16448        onStopDelayedCall.pause();
16449        onStop && onStop(self2);
16450      }, update = function update2() {
16451        var dx = self2.deltaX = _getAbsoluteMax(deltaX), dy = self2.deltaY = _getAbsoluteMax(deltaY), changedX = Math.abs(dx) >= tolerance, changedY = Math.abs(dy) >= tolerance;
vendor: 9,529 bytes, lines 16452-16654
16452        onChange && (changedX || changedY) && onChange(self2, dx, dy, deltaX, deltaY);
16453        if (changedX) {
16454          onRight && self2.deltaX > 0 && onRight(self2);
16455          onLeft && self2.deltaX < 0 && onLeft(self2);
16456          onChangeX && onChangeX(self2);
16457          onToggleX && self2.deltaX < 0 !== prevDeltaX < 0 && onToggleX(self2);
16458          prevDeltaX = self2.deltaX;
16459          deltaX[0] = deltaX[1] = deltaX[2] = 0;
16460        }
16461        if (changedY) {
16462          onDown && self2.deltaY > 0 && onDown(self2);
16463          onUp && self2.deltaY < 0 && onUp(self2);
16464          onChangeY && onChangeY(self2);
16465          onToggleY && self2.deltaY < 0 !== prevDeltaY < 0 && onToggleY(self2);
16466          prevDeltaY = self2.deltaY;
16467          deltaY[0] = deltaY[1] = deltaY[2] = 0;
16468        }
16469        if (moved || dragged) {
16470          onMove && onMove(self2);
16471          if (dragged) {
16472            onDrag(self2);
16473            dragged = false;
16474          }
16475          moved = false;
16476        }
16477        locked && !(locked = false) && onLockAxis && onLockAxis(self2);
16478        if (wheeled) {
16479          onWheel(self2);
16480          wheeled = false;
16481        }
16482        id = 0;
16483      }, onDelta = function onDelta2(x, y, index) {
16484        deltaX[index] += x;
16485        deltaY[index] += y;
16486        self2._vx.update(x);
16487        self2._vy.update(y);
16488        debounce ? id || (id = requestAnimationFrame(update)) : update();
16489      }, onTouchOrPointerDelta = function onTouchOrPointerDelta2(x, y) {
16490        if (lockAxis && !axis) {
16491          self2.axis = axis = Math.abs(x) > Math.abs(y) ? "x" : "y";
16492          locked = true;
16493        }
16494        if (axis !== "y") {
16495          deltaX[2] += x;
16496          self2._vx.update(x, true);
16497        }
16498        if (axis !== "x") {
16499          deltaY[2] += y;
16500          self2._vy.update(y, true);
16501        }
16502        debounce ? id || (id = requestAnimationFrame(update)) : update();
16503      }, _onDrag = function _onDrag2(e) {
16504        if (_ignoreCheck(e, 1)) {
16505          return;
16506        }
16507        e = _getEvent(e, preventDefault);
16508        var x = e.clientX, y = e.clientY, dx = x - self2.x, dy = y - self2.y, isDragging = self2.isDragging;
16509        self2.x = x;
16510        self2.y = y;
16511        if (isDragging || Math.abs(self2.startX - x) >= dragMinimum || Math.abs(self2.startY - y) >= dragMinimum) {
16512          onDrag && (dragged = true);
16513          isDragging || (self2.isDragging = true);
16514          onTouchOrPointerDelta(dx, dy);
16515          isDragging || onDragStart && onDragStart(self2);
16516        }
16517      }, _onPress = self2.onPress = function(e) {
16518        if (_ignoreCheck(e, 1) || e && e.button) {
16519          return;
16520        }
16521        self2.axis = axis = null;
16522        onStopDelayedCall.pause();
16523        self2.isPressed = true;
16524        e = _getEvent(e);
16525        prevDeltaX = prevDeltaY = 0;
16526        self2.startX = self2.x = e.clientX;
16527        self2.startY = self2.y = e.clientY;
16528        self2._vx.reset();
16529        self2._vy.reset();
16530        _addListener$1(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, passive, true);
16531        self2.deltaX = self2.deltaY = 0;
16532        onPress && onPress(self2);
16533      }, _onRelease = self2.onRelease = function(e) {
16534        if (_ignoreCheck(e, 1)) {
16535          return;
16536        }
16537        _removeListener$1(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, true);
16538        var isTrackingDrag = !isNaN(self2.y - self2.startY), wasDragging = self2.isDragging, isDragNotClick = wasDragging && (Math.abs(self2.x - self2.startX) > 3 || Math.abs(self2.y - self2.startY) > 3), eventData = _getEvent(e);
16539        if (!isDragNotClick && isTrackingDrag) {
16540          self2._vx.reset();
16541          self2._vy.reset();
16542          if (preventDefault && allowClicks) {
16543            gsap$1.delayedCall(0.08, function() {
16544              if (_getTime$1() - onClickTime > 300 && !e.defaultPrevented) {
16545                if (e.target.click) {
16546                  e.target.click();
16547                } else if (ownerDoc.createEvent) {
16548                  var syntheticEvent = ownerDoc.createEvent("MouseEvents");
16549                  syntheticEvent.initMouseEvent("click", true, true, _win$1, 1, eventData.screenX, eventData.screenY, eventData.clientX, eventData.clientY, false, false, false, false, 0, null);
16550                  e.target.dispatchEvent(syntheticEvent);
16551                }
16552              }
16553            });
16554          }
16555        }
16556        self2.isDragging = self2.isGesturing = self2.isPressed = false;
16557        onStop && wasDragging && !isNormalizer && onStopDelayedCall.restart(true);
16558        onDragEnd && wasDragging && onDragEnd(self2);
16559        onRelease && onRelease(self2, isDragNotClick);
16560      }, _onGestureStart = function _onGestureStart2(e) {
16561        return e.touches && e.touches.length > 1 && (self2.isGesturing = true) && onGestureStart(e, self2.isDragging);
16562      }, _onGestureEnd = function _onGestureEnd2() {
16563        return (self2.isGesturing = false) || onGestureEnd(self2);
16564      }, onScroll = function onScroll2(e) {
16565        if (_ignoreCheck(e)) {
16566          return;
16567        }
16568        var x = scrollFuncX(), y = scrollFuncY();
16569        onDelta((x - scrollX) * scrollSpeed, (y - scrollY) * scrollSpeed, 1);
16570        scrollX = x;
16571        scrollY = y;
16572        onStop && onStopDelayedCall.restart(true);
16573      }, _onWheel = function _onWheel2(e) {
16574        if (_ignoreCheck(e)) {
16575          return;
16576        }
16577        e = _getEvent(e, preventDefault);
16578        onWheel && (wheeled = true);
16579        var multiplier = (e.deltaMode === 1 ? lineHeight : e.deltaMode === 2 ? _win$1.innerHeight : 1) * wheelSpeed;
16580        onDelta(e.deltaX * multiplier, e.deltaY * multiplier, 0);
16581        onStop && !isNormalizer && onStopDelayedCall.restart(true);
16582      }, _onMove = function _onMove2(e) {
16583        if (_ignoreCheck(e)) {
16584          return;
16585        }
16586        var x = e.clientX, y = e.clientY, dx = x - self2.x, dy = y - self2.y;
16587        self2.x = x;
16588        self2.y = y;
16589        moved = true;
16590        onStop && onStopDelayedCall.restart(true);
16591        (dx || dy) && onTouchOrPointerDelta(dx, dy);
16592      }, _onHover = function _onHover2(e) {
16593        self2.event = e;
16594        onHover(self2);
16595      }, _onHoverEnd = function _onHoverEnd2(e) {
16596        self2.event = e;
16597        onHoverEnd(self2);
16598      }, _onClick = function _onClick2(e) {
16599        return _ignoreCheck(e) || _getEvent(e, preventDefault) && onClick(self2);
16600      };
16601      onStopDelayedCall = self2._dc = gsap$1.delayedCall(onStopDelay || 0.25, onStopFunc).pause();
16602      self2.deltaX = self2.deltaY = 0;
16603      self2._vx = _getVelocityProp(0, 50, true);
16604      self2._vy = _getVelocityProp(0, 50, true);
16605      self2.scrollX = scrollFuncX;
16606      self2.scrollY = scrollFuncY;
16607      self2.isDragging = self2.isGesturing = self2.isPressed = false;
16608      _context$1(this);
16609      self2.enable = function(e) {
16610        if (!self2.isEnabled) {
16611          _addListener$1(isViewport ? ownerDoc : target, "scroll", _onScroll$1);
16612          type.indexOf("scroll") >= 0 && _addListener$1(isViewport ? ownerDoc : target, "scroll", onScroll, passive, capture);
16613          type.indexOf("wheel") >= 0 && _addListener$1(target, "wheel", _onWheel, passive, capture);
16614          if (type.indexOf("touch") >= 0 && _isTouch || type.indexOf("pointer") >= 0) {
16615            _addListener$1(target, _eventTypes[0], _onPress, passive, capture);
16616            _addListener$1(ownerDoc, _eventTypes[2], _onRelease);
16617            _addListener$1(ownerDoc, _eventTypes[3], _onRelease);
16618            allowClicks && _addListener$1(target, "click", clickCapture, true, true);
16619            onClick && _addListener$1(target, "click", _onClick);
16620            onGestureStart && _addListener$1(ownerDoc, "gesturestart", _onGestureStart);
16621            onGestureEnd && _addListener$1(ownerDoc, "gestureend", _onGestureEnd);
16622            onHover && _addListener$1(target, _pointerType + "enter", _onHover);
16623            onHoverEnd && _addListener$1(target, _pointerType + "leave", _onHoverEnd);
16624            onMove && _addListener$1(target, _pointerType + "move", _onMove);
16625          }
16626          self2.isEnabled = true;
16627          e && e.type && _onPress(e);
16628          onEnable && onEnable(self2);
16629        }
16630        return self2;
16631      };
16632      self2.disable = function() {
16633        if (self2.isEnabled) {
16634          _observers.filter(function(o) {
16635            return o !== self2 && _isViewport$1(o.target);
16636          }).length || _removeListener$1(isViewport ? ownerDoc : target, "scroll", _onScroll$1);
16637          if (self2.isPressed) {
16638            self2._vx.reset();
16639            self2._vy.reset();
16640            _removeListener$1(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, true);
16641          }
16642          _removeListener$1(isViewport ? ownerDoc : target, "scroll", onScroll, capture);
16643          _removeListener$1(target, "wheel", _onWheel, capture);
16644          _removeListener$1(target, _eventTypes[0], _onPress, capture);
16645          _removeListener$1(ownerDoc, _eventTypes[2], _onRelease);
16646          _removeListener$1(ownerDoc, _eventTypes[3], _onRelease);
16647          _removeListener$1(target, "click", clickCapture, true);
16648          _removeListener$1(target, "click", _onClick);
16649          _removeListener$1(ownerDoc, "gesturestart", _onGestureStart);
16650          _removeListener$1(ownerDoc, "gestureend", _onGestureEnd);
16651          _removeListener$1(target, _pointerType + "enter", _onHover);
16652          _removeListener$1(target, _pointerType + "leave", _onHoverEnd);
16653          _removeListener$1(target, _pointerType + "move", _onMove);
16654          self2.isEnabled = self2.isPressed = self2.isDragging = false;
vendor: 5,490 bytes, lines 16655-16768
16655          onDisable && onDisable(self2);
16656        }
16657      };
16658      self2.kill = self2.revert = function() {
16659        self2.disable();
16660        var i2 = _observers.indexOf(self2);
16661        i2 >= 0 && _observers.splice(i2, 1);
16662        _normalizer$1 === self2 && (_normalizer$1 = 0);
16663      };
16664      _observers.push(self2);
16665      isNormalizer && _isViewport$1(target) && (_normalizer$1 = self2);
16666      self2.enable(event);
16667    };
16668    _createClass(Observer2, [{
16669      key: "velocityX",
16670      get: function get() {
16671        return this._vx.getVelocity();
16672      }
16673    }, {
16674      key: "velocityY",
16675      get: function get() {
16676        return this._vy.getVelocity();
16677      }
16678    }]);
16679    return Observer2;
16680  }();
16681  Observer.version = "3.12.5";
16682  Observer.create = function(vars) {
16683    return new Observer(vars);
16684  };
16685  Observer.register = _initCore;
16686  Observer.getAll = function() {
16687    return _observers.slice();
16688  };
16689  Observer.getById = function(id) {
16690    return _observers.filter(function(o) {
16691      return o.vars.id === id;
16692    })[0];
16693  };
16694  _getGSAP$1() && gsap$1.registerPlugin(Observer);
16695  /*!
16696   * ScrollTrigger 3.12.5
16697   * https://gsap.com
16698   *
16699   * @license Copyright 2008-2024, GreenSock. All rights reserved.
16700   * Subject to the terms at https://gsap.com/standard-license or for
16701   * Club GSAP members, the agreement issued with that membership.
16702   * @author: Jack Doyle, [email protected]
16703  */
16704  var gsap, _coreInitted, _win, _doc, _docEl, _body, _root, _resizeDelay, _toArray, _clamp, _time2, _syncInterval, _refreshing, _pointerIsDown, _transformProp, _i, _prevWidth, _prevHeight, _autoRefresh, _sort, _suppressOverwrites, _ignoreResize, _normalizer, _ignoreMobileResize, _baseScreenHeight, _baseScreenWidth, _fixIOSBug, _context, _scrollRestoration, _div100vh, _100vh, _isReverted, _clampingMax, _limitCallbacks, _startup = 1, _getTime = Date.now, _time1 = _getTime(), _lastScrollTime = 0, _enabled = 0, _parseClamp = function _parseClamp2(value, type, self2) {
16705    var clamp2 = _isString(value) && (value.substr(0, 6) === "clamp(" || value.indexOf("max") > -1);
16706    self2["_" + type + "Clamp"] = clamp2;
16707    return clamp2 ? value.substr(6, value.length - 7) : value;
16708  }, _keepClamp = function _keepClamp2(value, clamp2) {
16709    return clamp2 && (!_isString(value) || value.substr(0, 6) !== "clamp(") ? "clamp(" + value + ")" : value;
16710  }, _rafBugFix = function _rafBugFix2() {
16711    return _enabled && requestAnimationFrame(_rafBugFix2);
16712  }, _pointerDownHandler = function _pointerDownHandler2() {
16713    return _pointerIsDown = 1;
16714  }, _pointerUpHandler = function _pointerUpHandler2() {
16715    return _pointerIsDown = 0;
16716  }, _passThrough = function _passThrough2(v) {
16717    return v;
16718  }, _round = function _round2(value) {
16719    return Math.round(value * 1e5) / 1e5 || 0;
16720  }, _windowExists = function _windowExists2() {
16721    return typeof window !== "undefined";
16722  }, _getGSAP = function _getGSAP2() {
16723    return gsap || _windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap;
16724  }, _isViewport = function _isViewport2(e) {
16725    return !!~_root.indexOf(e);
16726  }, _getViewportDimension = function _getViewportDimension2(dimensionProperty) {
16727    return (dimensionProperty === "Height" ? _100vh : _win["inner" + dimensionProperty]) || _docEl["client" + dimensionProperty] || _body["client" + dimensionProperty];
16728  }, _getBoundsFunc = function _getBoundsFunc2(element) {
16729    return _getProxyProp(element, "getBoundingClientRect") || (_isViewport(element) ? function() {
16730      _winOffsets.width = _win.innerWidth;
16731      _winOffsets.height = _100vh;
16732      return _winOffsets;
16733    } : function() {
16734      return _getBounds(element);
16735    });
16736  }, _getSizeFunc = function _getSizeFunc2(scroller, isViewport, _ref) {
16737    var d = _ref.d, d2 = _ref.d2, a = _ref.a;
16738    return (a = _getProxyProp(scroller, "getBoundingClientRect")) ? function() {
16739      return a()[d];
16740    } : function() {
16741      return (isViewport ? _getViewportDimension(d2) : scroller["client" + d2]) || 0;
16742    };
16743  }, _getOffsetsFunc = function _getOffsetsFunc2(element, isViewport) {
16744    return !isViewport || ~_proxies.indexOf(element) ? _getBoundsFunc(element) : function() {
16745      return _winOffsets;
16746    };
16747  }, _maxScroll = function _maxScroll2(element, _ref2) {
16748    var s = _ref2.s, d2 = _ref2.d2, d = _ref2.d, a = _ref2.a;
16749    return Math.max(0, (s = "scroll" + d2) && (a = _getProxyProp(element, s)) ? a() - _getBoundsFunc(element)()[d] : _isViewport(element) ? (_docEl[s] || _body[s]) - _getViewportDimension(d2) : element[s] - element["offset" + d2]);
16750  }, _iterateAutoRefresh = function _iterateAutoRefresh2(func, events) {
16751    for (var i2 = 0; i2 < _autoRefresh.length; i2 += 3) {
16752      (!events || ~events.indexOf(_autoRefresh[i2 + 1])) && func(_autoRefresh[i2], _autoRefresh[i2 + 1], _autoRefresh[i2 + 2]);
16753    }
16754  }, _isString = function _isString2(value) {
16755    return typeof value === "string";
16756  }, _isFunction = function _isFunction2(value) {
16757    return typeof value === "function";
16758  }, _isNumber = function _isNumber2(value) {
16759    return typeof value === "number";
16760  }, _isObject = function _isObject2(value) {
16761    return typeof value === "object";
16762  }, _endAnimation = function _endAnimation2(animation, reversed, pause) {
16763    return animation && animation.progress(reversed ? 0 : 1) && pause && animation.pause();
16764  }, _callback = function _callback2(self2, func) {
16765    if (self2.enabled) {
16766      var result = self2._ctx ? self2._ctx.add(function() {
16767        return func(self2);
16768      }) : func(self2);
vendor: 6,046 bytes, lines 16769-16897
16769      result && result.totalTime && (self2.callbackAnimation = result);
16770    }
16771  }, _abs = Math.abs, _left = "left", _top = "top", _right = "right", _bottom = "bottom", _width = "width", _height = "height", _Right = "Right", _Left = "Left", _Top = "Top", _Bottom = "Bottom", _padding = "padding", _margin = "margin", _Width = "Width", _Height = "Height", _px = "px", _getComputedStyle = function _getComputedStyle2(element) {
16772    return _win.getComputedStyle(element);
16773  }, _makePositionable = function _makePositionable2(element) {
16774    var position = _getComputedStyle(element).position;
16775    element.style.position = position === "absolute" || position === "fixed" ? position : "relative";
16776  }, _setDefaults = function _setDefaults2(obj, defaults2) {
16777    for (var p in defaults2) {
16778      p in obj || (obj[p] = defaults2[p]);
16779    }
16780    return obj;
16781  }, _getBounds = function _getBounds2(element, withoutTransforms) {
16782    var tween = withoutTransforms && _getComputedStyle(element)[_transformProp] !== "matrix(1, 0, 0, 1, 0, 0)" && gsap.to(element, {
16783      x: 0,
16784      y: 0,
16785      xPercent: 0,
16786      yPercent: 0,
16787      rotation: 0,
16788      rotationX: 0,
16789      rotationY: 0,
16790      scale: 1,
16791      skewX: 0,
16792      skewY: 0
16793    }).progress(1), bounds = element.getBoundingClientRect();
16794    tween && tween.progress(0).kill();
16795    return bounds;
16796  }, _getSize = function _getSize2(element, _ref3) {
16797    var d2 = _ref3.d2;
16798    return element["offset" + d2] || element["client" + d2] || 0;
16799  }, _getLabelRatioArray = function _getLabelRatioArray2(timeline) {
16800    var a = [], labels = timeline.labels, duration = timeline.duration(), p;
16801    for (p in labels) {
16802      a.push(labels[p] / duration);
16803    }
16804    return a;
16805  }, _getClosestLabel = function _getClosestLabel2(animation) {
16806    return function(value) {
16807      return gsap.utils.snap(_getLabelRatioArray(animation), value);
16808    };
16809  }, _snapDirectional = function _snapDirectional2(snapIncrementOrArray) {
16810    var snap2 = gsap.utils.snap(snapIncrementOrArray), a = Array.isArray(snapIncrementOrArray) && snapIncrementOrArray.slice(0).sort(function(a2, b) {
16811      return a2 - b;
16812    });
16813    return a ? function(value, direction, threshold) {
16814      if (threshold === void 0) {
16815        threshold = 1e-3;
16816      }
16817      var i2;
16818      if (!direction) {
16819        return snap2(value);
16820      }
16821      if (direction > 0) {
16822        value -= threshold;
16823        for (i2 = 0; i2 < a.length; i2++) {
16824          if (a[i2] >= value) {
16825            return a[i2];
16826          }
16827        }
16828        return a[i2 - 1];
16829      } else {
16830        i2 = a.length;
16831        value += threshold;
16832        while (i2--) {
16833          if (a[i2] <= value) {
16834            return a[i2];
16835          }
16836        }
16837      }
16838      return a[0];
16839    } : function(value, direction, threshold) {
16840      if (threshold === void 0) {
16841        threshold = 1e-3;
16842      }
16843      var snapped = snap2(value);
16844      return !direction || Math.abs(snapped - value) < threshold || snapped - value < 0 === direction < 0 ? snapped : snap2(direction < 0 ? value - snapIncrementOrArray : value + snapIncrementOrArray);
16845    };
16846  }, _getLabelAtDirection = function _getLabelAtDirection2(timeline) {
16847    return function(value, st) {
16848      return _snapDirectional(_getLabelRatioArray(timeline))(value, st.direction);
16849    };
16850  }, _multiListener = function _multiListener2(func, element, types, callback) {
16851    return types.split(",").forEach(function(type) {
16852      return func(element, type, callback);
16853    });
16854  }, _addListener = function _addListener2(element, type, func, nonPassive, capture) {
16855    return element.addEventListener(type, func, {
16856      passive: !nonPassive,
16857      capture: !!capture
16858    });
16859  }, _removeListener = function _removeListener2(element, type, func, capture) {
16860    return element.removeEventListener(type, func, !!capture);
16861  }, _wheelListener = function _wheelListener2(func, el, scrollFunc) {
16862    scrollFunc = scrollFunc && scrollFunc.wheelHandler;
16863    if (scrollFunc) {
16864      func(el, "wheel", scrollFunc);
16865      func(el, "touchmove", scrollFunc);
16866    }
16867  }, _markerDefaults = {
16868    startColor: "green",
16869    endColor: "red",
16870    indent: 0,
16871    fontSize: "16px",
16872    fontWeight: "normal"
16873  }, _defaults = {
16874    toggleActions: "play",
16875    anticipatePin: 0
16876  }, _keywords = {
16877    top: 0,
16878    left: 0,
16879    center: 0.5,
16880    bottom: 1,
16881    right: 1
16882  }, _offsetToPx = function _offsetToPx2(value, size) {
16883    if (_isString(value)) {
16884      var eqIndex = value.indexOf("="), relative = ~eqIndex ? +(value.charAt(eqIndex - 1) + 1) * parseFloat(value.substr(eqIndex + 1)) : 0;
16885      if (~eqIndex) {
16886        value.indexOf("%") > eqIndex && (relative *= size / 100);
16887        value = value.substr(0, eqIndex - 1);
16888      }
16889      value = relative + (value in _keywords ? _keywords[value] * size : ~value.indexOf("%") ? parseFloat(value) * size / 100 : parseFloat(value) || 0);
16890    }
16891    return value;
16892  }, _createMarker = function _createMarker2(type, name, container, direction, _ref4, offset, matchWidthEl, containerAnimation) {
16893    var startColor = _ref4.startColor, endColor = _ref4.endColor, fontSize = _ref4.fontSize, indent = _ref4.indent, fontWeight = _ref4.fontWeight;
16894    var e = _doc.createElement("div"), useFixedPosition = _isViewport(container) || _getProxyProp(container, "pinType") === "fixed", isScroller = type.indexOf("scroller") !== -1, parent = useFixedPosition ? _body : container, isStart = type.indexOf("start") !== -1, color2 = isStart ? startColor : endColor, css = "border-color:" + color2 + ";font-size:" + fontSize + ";color:" + color2 + ";font-weight:" + fontWeight + ";pointer-events:none;white-space:nowrap;font-family:sans-serif,Arial;z-index:1000;padding:4px 8px;border-width:0;border-style:solid;";
16895    css += "position:" + ((isScroller || containerAnimation) && useFixedPosition ? "fixed;" : "absolute;");
16896    (isScroller || containerAnimation || !useFixedPosition) && (css += (direction === _vertical ? _right : _bottom) + ":" + (offset + parseFloat(indent)) + "px;");
16897    matchWidthEl && (css += "box-sizing:border-box;text-align:left;
vendor: 15,246 bytes, lines 16897-17231
16897width:" + matchWidthEl.offsetWidth + "px;");
16898    e._isStart = isStart;
16899    e.setAttribute("class", "gsap-marker-" + type + (name ? " marker-" + name : ""));
16900    e.style.cssText = css;
16901    e.innerText = name || name === 0 ? type + "-" + name : type;
16902    parent.children[0] ? parent.insertBefore(e, parent.children[0]) : parent.appendChild(e);
16903    e._offset = e["offset" + direction.op.d2];
16904    _positionMarker(e, 0, direction, isStart);
16905    return e;
16906  }, _positionMarker = function _positionMarker2(marker, start, direction, flipped) {
16907    var vars = {
16908      display: "block"
16909    }, side = direction[flipped ? "os2" : "p2"], oppositeSide = direction[flipped ? "p2" : "os2"];
16910    marker._isFlipped = flipped;
16911    vars[direction.a + "Percent"] = flipped ? -100 : 0;
16912    vars[direction.a] = flipped ? "1px" : 0;
16913    vars["border" + side + _Width] = 1;
16914    vars["border" + oppositeSide + _Width] = 0;
16915    vars[direction.p] = start + "px";
16916    gsap.set(marker, vars);
16917  }, _triggers = [], _ids = {}, _rafID, _sync = function _sync2() {
16918    return _getTime() - _lastScrollTime > 34 && (_rafID || (_rafID = requestAnimationFrame(_updateAll)));
16919  }, _onScroll = function _onScroll2() {
16920    if (!_normalizer || !_normalizer.isPressed || _normalizer.startX > _body.clientWidth) {
16921      _scrollers.cache++;
16922      if (_normalizer) {
16923        _rafID || (_rafID = requestAnimationFrame(_updateAll));
16924      } else {
16925        _updateAll();
16926      }
16927      _lastScrollTime || _dispatch("scrollStart");
16928      _lastScrollTime = _getTime();
16929    }
16930  }, _setBaseDimensions = function _setBaseDimensions2() {
16931    _baseScreenWidth = _win.innerWidth;
16932    _baseScreenHeight = _win.innerHeight;
16933  }, _onResize = function _onResize2() {
16934    _scrollers.cache++;
16935    !_refreshing && !_ignoreResize && !_doc.fullscreenElement && !_doc.webkitFullscreenElement && (!_ignoreMobileResize || _baseScreenWidth !== _win.innerWidth || Math.abs(_win.innerHeight - _baseScreenHeight) > _win.innerHeight * 0.25) && _resizeDelay.restart(true);
16936  }, _listeners = {}, _emptyArray = [], _softRefresh = function _softRefresh2() {
16937    return _removeListener(ScrollTrigger, "scrollEnd", _softRefresh2) || _refreshAll(true);
16938  }, _dispatch = function _dispatch2(type) {
16939    return _listeners[type] && _listeners[type].map(function(f) {
16940      return f();
16941    }) || _emptyArray;
16942  }, _savedStyles = [], _revertRecorded = function _revertRecorded2(media) {
16943    for (var i2 = 0; i2 < _savedStyles.length; i2 += 5) {
16944      if (!media || _savedStyles[i2 + 4] && _savedStyles[i2 + 4].query === media) {
16945        _savedStyles[i2].style.cssText = _savedStyles[i2 + 1];
16946        _savedStyles[i2].getBBox && _savedStyles[i2].setAttribute("transform", _savedStyles[i2 + 2] || "");
16947        _savedStyles[i2 + 3].uncache = 1;
16948      }
16949    }
16950  }, _revertAll = function _revertAll2(kill, media) {
16951    var trigger;
16952    for (_i = 0; _i < _triggers.length; _i++) {
16953      trigger = _triggers[_i];
16954      if (trigger && (!media || trigger._ctx === media)) {
16955        if (kill) {
16956          trigger.kill(1);
16957        } else {
16958          trigger.revert(true, true);
16959        }
16960      }
16961    }
16962    _isReverted = true;
16963    media && _revertRecorded(media);
16964    media || _dispatch("revert");
16965  }, _clearScrollMemory = function _clearScrollMemory2(scrollRestoration, force) {
16966    _scrollers.cache++;
16967    (force || !_refreshingAll) && _scrollers.forEach(function(obj) {
16968      return _isFunction(obj) && obj.cacheID++ && (obj.rec = 0);
16969    });
16970    _isString(scrollRestoration) && (_win.history.scrollRestoration = _scrollRestoration = scrollRestoration);
16971  }, _refreshingAll, _refreshID = 0, _queueRefreshID, _queueRefreshAll = function _queueRefreshAll2() {
16972    if (_queueRefreshID !== _refreshID) {
16973      var id = _queueRefreshID = _refreshID;
16974      requestAnimationFrame(function() {
16975        return id === _refreshID && _refreshAll(true);
16976      });
16977    }
16978  }, _refresh100vh = function _refresh100vh2() {
16979    _body.appendChild(_div100vh);
16980    _100vh = !_normalizer && _div100vh.offsetHeight || _win.innerHeight;
16981    _body.removeChild(_div100vh);
16982  }, _hideAllMarkers = function _hideAllMarkers2(hide) {
16983    return _toArray(".gsap-marker-start, .gsap-marker-end, .gsap-marker-scroller-start, .gsap-marker-scroller-end").forEach(function(el) {
16984      return el.style.display = hide ? "none" : "block";
16985    });
16986  }, _refreshAll = function _refreshAll2(force, skipRevert) {
16987    if (_lastScrollTime && !force && !_isReverted) {
16988      _addListener(ScrollTrigger, "scrollEnd", _softRefresh);
16989      return;
16990    }
16991    _refresh100vh();
16992    _refreshingAll = ScrollTrigger.isRefreshing = true;
16993    _scrollers.forEach(function(obj) {
16994      return _isFunction(obj) && ++obj.cacheID && (obj.rec = obj());
16995    });
16996    var refreshInits = _dispatch("refreshInit");
16997    _sort && ScrollTrigger.sort();
16998    skipRevert || _revertAll();
16999    _scrollers.forEach(function(obj) {
17000      if (_isFunction(obj)) {
17001        obj.smooth && (obj.target.style.scrollBehavior = "auto");
17002        obj(0);
17003      }
17004    });
17005    _triggers.slice(0).forEach(function(t2) {
17006      return t2.refresh();
17007    });
17008    _isReverted = false;
17009    _triggers.forEach(function(t2) {
17010      if (t2._subPinOffset && t2.pin) {
17011        var prop = t2.vars.horizontal ? "offsetWidth" : "offsetHeight", original = t2.pin[prop];
17012        t2.revert(true, 1);
17013        t2.adjustPinSpacing(t2.pin[prop] - original);
17014        t2.refresh();
17015      }
17016    });
17017    _clampingMax = 1;
17018    _hideAllMarkers(true);
17019    _triggers.forEach(function(t2) {
17020      var max = _maxScroll(t2.scroller, t2._dir), endClamp = t2.vars.end === "max" || t2._endClamp && t2.end > max, startClamp = t2._startClamp && t2.start >= max;
17021      (endClamp || startClamp) && t2.setPositions(startClamp ? max - 1 : t2.start, endClamp ? Math.max(startClamp ? max : t2.start + 1, max) : t2.end, true);
17022    });
17023    _hideAllMarkers(false);
17024    _clampingMax = 0;
17025    refreshInits.forEach(function(result) {
17026      return result && result.render && result.render(-1);
17027    });
17028    _scrollers.forEach(function(obj) {
17029      if (_isFunction(obj)) {
17030        obj.smooth && requestAnimationFrame(function() {
17031          return obj.target.style.scrollBehavior = "smooth";
17032        });
17033        obj.rec && obj(obj.rec);
17034      }
17035    });
17036    _clearScrollMemory(_scrollRestoration, 1);
17037    _resizeDelay.pause();
17038    _refreshID++;
17039    _refreshingAll = 2;
17040    _updateAll(2);
17041    _triggers.forEach(function(t2) {
17042      return _isFunction(t2.vars.onRefresh) && t2.vars.onRefresh(t2);
17043    });
17044    _refreshingAll = ScrollTrigger.isRefreshing = false;
17045    _dispatch("refresh");
17046  }, _lastScroll = 0, _direction = 1, _primary, _updateAll = function _updateAll2(force) {
17047    if (force === 2 || !_refreshingAll && !_isReverted) {
17048      ScrollTrigger.isUpdating = true;
17049      _primary && _primary.update(0);
17050      var l = _triggers.length, time = _getTime(), recordVelocity = time - _time1 >= 50, scroll = l && _triggers[0].scroll();
17051      _direction = _lastScroll > scroll ? -1 : 1;
17052      _refreshingAll || (_lastScroll = scroll);
17053      if (recordVelocity) {
17054        if (_lastScrollTime && !_pointerIsDown && time - _lastScrollTime > 200) {
17055          _lastScrollTime = 0;
17056          _dispatch("scrollEnd");
17057        }
17058        _time2 = _time1;
17059        _time1 = time;
17060      }
17061      if (_direction < 0) {
17062        _i = l;
17063        while (_i-- > 0) {
17064          _triggers[_i] && _triggers[_i].update(0, recordVelocity);
17065        }
17066        _direction = 1;
17067      } else {
17068        for (_i = 0; _i < l; _i++) {
17069          _triggers[_i] && _triggers[_i].update(0, recordVelocity);
17070        }
17071      }
17072      ScrollTrigger.isUpdating = false;
17073    }
17074    _rafID = 0;
17075  }, _propNamesToCopy = [_left, _top, _bottom, _right, _margin + _Bottom, _margin + _Right, _margin + _Top, _margin + _Left, "display", "flexShrink", "float", "zIndex", "gridColumnStart", "gridColumnEnd", "gridRowStart", "gridRowEnd", "gridArea", "justifySelf", "alignSelf", "placeSelf", "order"], _stateProps = _propNamesToCopy.concat([_width, _height, "boxSizing", "max" + _Width, "max" + _Height, "position", _margin, _padding, _padding + _Top, _padding + _Right, _padding + _Bottom, _padding + _Left]), _swapPinOut = function _swapPinOut2(pin, spacer, state) {
17076    _setState(state);
17077    var cache = pin._gsap;
17078    if (cache.spacerIsNative) {
17079      _setState(cache.spacerState);
17080    } else if (pin._gsap.swappedIn) {
17081      var parent = spacer.parentNode;
17082      if (parent) {
17083        parent.insertBefore(pin, spacer);
17084        parent.removeChild(spacer);
17085      }
17086    }
17087    pin._gsap.swappedIn = false;
17088  }, _swapPinIn = function _swapPinIn2(pin, spacer, cs, spacerState) {
17089    if (!pin._gsap.swappedIn) {
17090      var i2 = _propNamesToCopy.length, spacerStyle = spacer.style, pinStyle = pin.style, p;
17091      while (i2--) {
17092        p = _propNamesToCopy[i2];
17093        spacerStyle[p] = cs[p];
17094      }
17095      spacerStyle.position = cs.position === "absolute" ? "absolute" : "relative";
17096      cs.display === "inline" && (spacerStyle.display = "inline-block");
17097      pinStyle[_bottom] = pinStyle[_right] = "auto";
17098      spacerStyle.flexBasis = cs.flexBasis || "auto";
17099      spacerStyle.overflow = "visible";
17100      spacerStyle.boxSizing = "border-box";
17101      spacerStyle[_width] = _getSize(pin, _horizontal) + _px;
17102      spacerStyle[_height] = _getSize(pin, _vertical) + _px;
17103      spacerStyle[_padding] = pinStyle[_margin] = pinStyle[_top] = pinStyle[_left] = "0";
17104      _setState(spacerState);
17105      pinStyle[_width] = pinStyle["max" + _Width] = cs[_width];
17106      pinStyle[_height] = pinStyle["max" + _Height] = cs[_height];
17107      pinStyle[_padding] = cs[_padding];
17108      if (pin.parentNode !== spacer) {
17109        pin.parentNode.insertBefore(spacer, pin);
17110        spacer.appendChild(pin);
17111      }
17112      pin._gsap.swappedIn = true;
17113    }
17114  }, _capsExp = /([A-Z])/g, _setState = function _setState2(state) {
17115    if (state) {
17116      var style = state.t.style, l = state.length, i2 = 0, p, value;
17117      (state.t._gsap || gsap.core.getCache(state.t)).uncache = 1;
17118      for (; i2 < l; i2 += 2) {
17119        value = state[i2 + 1];
17120        p = state[i2];
17121        if (value) {
17122          style[p] = value;
17123        } else if (style[p]) {
17124          style.removeProperty(p.replace(_capsExp, "-$1").toLowerCase());
17125        }
17126      }
17127    }
17128  }, _getState = function _getState2(element) {
17129    var l = _stateProps.length, style = element.style, state = [], i2 = 0;
17130    for (; i2 < l; i2++) {
17131      state.push(_stateProps[i2], style[_stateProps[i2]]);
17132    }
17133    state.t = element;
17134    return state;
17135  }, _copyState = function _copyState2(state, override, omitOffsets) {
17136    var result = [], l = state.length, i2 = omitOffsets ? 8 : 0, p;
17137    for (; i2 < l; i2 += 2) {
17138      p = state[i2];
17139      result.push(p, p in override ? override[p] : state[i2 + 1]);
17140    }
17141    result.t = state.t;
17142    return result;
17143  }, _winOffsets = {
17144    left: 0,
17145    top: 0
17146  }, _parsePosition = function _parsePosition2(value, trigger, scrollerSize, direction, scroll, marker, markerScroller, self2, scrollerBounds, borderWidth, useFixedPosition, scrollerMax, containerAnimation, clampZeroProp) {
17147    _isFunction(value) && (value = value(self2));
17148    if (_isString(value) && value.substr(0, 3) === "max") {
17149      value = scrollerMax + (value.charAt(4) === "=" ? _offsetToPx("0" + value.substr(3), scrollerSize) : 0);
17150    }
17151    var time = containerAnimation ? containerAnimation.time() : 0, p1, p2, element;
17152    containerAnimation && containerAnimation.seek(0);
17153    isNaN(value) || (value = +value);
17154    if (!_isNumber(value)) {
17155      _isFunction(trigger) && (trigger = trigger(self2));
17156      var offsets = (value || "0").split(" "), bounds, localOffset, globalOffset, display;
17157      element = _getTarget(trigger, self2) || _body;
17158      bounds = _getBounds(element) || {};
17159      if ((!bounds || !bounds.left && !bounds.top) && _getComputedStyle(element).display === "none") {
17160        display = element.style.display;
17161        element.style.display = "block";
17162        bounds = _getBounds(element);
17163        display ? element.style.display = display : element.style.removeProperty("display");
17164      }
17165      localOffset = _offsetToPx(offsets[0], bounds[direction.d]);
17166      globalOffset = _offsetToPx(offsets[1] || "0", scrollerSize);
17167      value = bounds[direction.p] - scrollerBounds[direction.p] - borderWidth + localOffset + scroll - globalOffset;
17168      markerScroller && _positionMarker(markerScroller, globalOffset, direction, scrollerSize - globalOffset < 20 || markerScroller._isStart && globalOffset > 20);
17169      scrollerSize -= scrollerSize - globalOffset;
17170    } else {
17171      containerAnimation && (value = gsap.utils.mapRange(containerAnimation.scrollTrigger.start, containerAnimation.scrollTrigger.end, 0, scrollerMax, value));
17172      markerScroller && _positionMarker(markerScroller, scrollerSize, direction, true);
17173    }
17174    if (clampZeroProp) {
17175      self2[clampZeroProp] = value || -1e-3;
17176      value < 0 && (value = 0);
17177    }
17178    if (marker) {
17179      var position = value + scrollerSize, isStart = marker._isStart;
17180      p1 = "scroll" + direction.d2;
17181      _positionMarker(marker, position, direction, isStart && position > 20 || !isStart && (useFixedPosition ? Math.max(_body[p1], _docEl[p1]) : marker.parentNode[p1]) <= position + 1);
17182      if (useFixedPosition) {
17183        scrollerBounds = _getBounds(markerScroller);
17184        useFixedPosition && (marker.style[direction.op.p] = scrollerBounds[direction.op.p] - direction.op.m - marker._offset + _px);
17185      }
17186    }
17187    if (containerAnimation && element) {
17188      p1 = _getBounds(element);
17189      containerAnimation.seek(scrollerMax);
17190      p2 = _getBounds(element);
17191      containerAnimation._caScrollDist = p1[direction.p] - p2[direction.p];
17192      value = value / containerAnimation._caScrollDist * scrollerMax;
17193    }
17194    containerAnimation && containerAnimation.seek(time);
17195    return containerAnimation ? value : Math.round(value);
17196  }, _prefixExp = /(webkit|moz|length|cssText|inset)/i, _reparent = function _reparent2(element, parent, top, left) {
17197    if (element.parentNode !== parent) {
17198      var style = element.style, p, cs;
17199      if (parent === _body) {
17200        element._stOrig = style.cssText;
17201        cs = _getComputedStyle(element);
17202        for (p in cs) {
17203          if (!+p && !_prefixExp.test(p) && cs[p] && typeof style[p] === "string" && p !== "0") {
17204            style[p] = cs[p];
17205          }
17206        }
17207        style.top = top;
17208        style.left = left;
17209      } else {
17210        style.cssText = element._stOrig;
17211      }
17212      gsap.core.getCache(element).uncache = 1;
17213      parent.appendChild(element);
17214    }
17215  }, _interruptionTracker = function _interruptionTracker2(getValueFunc, initialValue, onInterrupt) {
17216    var last1 = initialValue, last2 = last1;
17217    return function(value) {
17218      var current = Math.round(getValueFunc());
17219      if (current !== last1 && current !== last2 && Math.abs(current - last1) > 3 && Math.abs(current - last2) > 3) {
17220        value = current;
17221        onInterrupt && onInterrupt();
17222      }
17223      last2 = last1;
17224      last1 = value;
17225      return value;
17226    };
17227  }, _shiftMarker = function _shiftMarker2(marker, direction, value) {
17228    var vars = {};
17229    vars[direction.p] = "+=" + value;
17230    gsap.set(marker, vars);
17231  }, _getTweenCreator = function _getTweenCreator2(scroller, direction) {
vendor: 4,394 bytes, lines 17232-17287
17232    var getScroll = _getScrollFunc(scroller, direction), prop = "_scroll" + direction.p2, getTween = function getTween2(scrollTo, vars, initialValue, change1, change2) {
17233      var tween = getTween2.tween, onComplete = vars.onComplete, modifiers = {};
17234      initialValue = initialValue || getScroll();
17235      var checkForInterruption = _interruptionTracker(getScroll, initialValue, function() {
17236        tween.kill();
17237        getTween2.tween = 0;
17238      });
17239      change2 = change1 && change2 || 0;
17240      change1 = change1 || scrollTo - initialValue;
17241      tween && tween.kill();
17242      vars[prop] = scrollTo;
17243      vars.inherit = false;
17244      vars.modifiers = modifiers;
17245      modifiers[prop] = function() {
17246        return checkForInterruption(initialValue + change1 * tween.ratio + change2 * tween.ratio * tween.ratio);
17247      };
17248      vars.onUpdate = function() {
17249        _scrollers.cache++;
17250        getTween2.tween && _updateAll();
17251      };
17252      vars.onComplete = function() {
17253        getTween2.tween = 0;
17254        onComplete && onComplete.call(tween);
17255      };
17256      tween = getTween2.tween = gsap.to(scroller, vars);
17257      return tween;
17258    };
17259    scroller[prop] = getScroll;
17260    getScroll.wheelHandler = function() {
17261      return getTween.tween && getTween.tween.kill() && (getTween.tween = 0);
17262    };
17263    _addListener(scroller, "wheel", getScroll.wheelHandler);
17264    ScrollTrigger.isTouch && _addListener(scroller, "touchmove", getScroll.wheelHandler);
17265    return getTween;
17266  };
17267  var ScrollTrigger = /* @__PURE__ */ function() {
17268    function ScrollTrigger2(vars, animation) {
17269      _coreInitted || ScrollTrigger2.register(gsap) || console.warn("Please gsap.registerPlugin(ScrollTrigger)");
17270      _context(this);
17271      this.init(vars, animation);
17272    }
17273    var _proto = ScrollTrigger2.prototype;
17274    _proto.init = function init(vars, animation) {
17275      this.progress = this.start = 0;
17276      this.vars && this.kill(true, true);
17277      if (!_enabled) {
17278        this.update = this.refresh = this.kill = _passThrough;
17279        return;
17280      }
17281      vars = _setDefaults(_isString(vars) || _isNumber(vars) || vars.nodeType ? {
17282        trigger: vars
17283      } : vars, _defaults);
17284      var _vars = vars, onUpdate = _vars.onUpdate, toggleClass = _vars.toggleClass, id = _vars.id, onToggle = _vars.onToggle, onRefresh = _vars.onRefresh, scrub = _vars.scrub, trigger = _vars.trigger, pin = _vars.pin, pinSpacing = _vars.pinSpacing, invalidateOnRefresh = _vars.invalidateOnRefresh, anticipatePin = _vars.anticipatePin, onScrubComplete = _vars.onScrubComplete, onSnapComplete = _vars.onSnapComplete, once = _vars.once, snap2 = _vars.snap, pinReparent = _vars.pinReparent, pinSpacer = _vars.pinSpacer, containerAnimation = _vars.containerAnimation, fastScrollEnd = _vars.fastScrollEnd, preventOverlaps = _vars.preventOverlaps, direction = vars.horizontal || vars.containerAnimation && vars.horizontal !== false ? _horizontal : _vertical, isToggle = !scrub && scrub !== 0, scroller = _getTarget(vars.scroller || _win), scrollerCache = gsap.core.getCache(scroller), isViewport = _isViewport(scroller), useFixedPosition = ("pinType" in vars ? vars.pinType : _getProxyProp(scroller, "pinType") || isViewport && "fixed") === "fixed", callbacks = [vars.onEnter, vars.onLeave, vars.onEnterBack, vars.onLeaveBack], toggleActions = isToggle && vars.toggleActions.split(" "), markers = "markers" in vars ? vars.markers : _defaults.markers, borderWidth = isViewport ? 0 : parseFloat(_getComputedStyle(scroller)["border" + direction.p2 + _Width]) || 0, self2 = this, onRefreshInit = vars.onRefreshInit && function() {
17285        return vars.onRefreshInit(self2);
17286      }, getScrollerSize = _getSizeFunc(scroller, isViewport, direction), getScrollerOffsets = _getOffsetsFunc(scroller, isViewport), lastSnap = 0, lastRefresh = 0, prevProgress = 0, scrollFunc = _getScrollFunc(scroller, direction), tweenTo, pinCache, snapFunc, scroll1, scroll2, start, end, markerStart, markerEnd, markerStartTrigger, markerEndTrigger, markerVars, executingOnRefresh, change, pinOriginalState, pinActiveState, pinState, spacer, offset, pinGetter, pinSetter, pinStart, pinChange, spacingStart, spacerState, markerStartSetter, pinMoves, markerEndSetter, cs, snap1, snap22, scrubTween, scrubSmooth, snapDurClamp, snapDelayedCall, prevScroll, prevAnimProgress, caMarkerSetter, customRevertReturn;
17287      self2._startClamp = self2._endClamp = false;
vendor: 4,506 bytes, lines 17288-17369
17288      self2._dir = direction;
17289      anticipatePin *= 45;
17290      self2.scroller = scroller;
17291      self2.scroll = containerAnimation ? containerAnimation.time.bind(containerAnimation) : scrollFunc;
17292      scroll1 = scrollFunc();
17293      self2.vars = vars;
17294      animation = animation || vars.animation;
17295      if ("refreshPriority" in vars) {
17296        _sort = 1;
17297        vars.refreshPriority === -9999 && (_primary = self2);
17298      }
17299      scrollerCache.tweenScroll = scrollerCache.tweenScroll || {
17300        top: _getTweenCreator(scroller, _vertical),
17301        left: _getTweenCreator(scroller, _horizontal)
17302      };
17303      self2.tweenTo = tweenTo = scrollerCache.tweenScroll[direction.p];
17304      self2.scrubDuration = function(value) {
17305        scrubSmooth = _isNumber(value) && value;
17306        if (!scrubSmooth) {
17307          scrubTween && scrubTween.progress(1).kill();
17308          scrubTween = 0;
17309        } else {
17310          scrubTween ? scrubTween.duration(value) : scrubTween = gsap.to(animation, {
17311            ease: "expo",
17312            totalProgress: "+=0",
17313            inherit: false,
17314            duration: scrubSmooth,
17315            paused: true,
17316            onComplete: function onComplete() {
17317              return onScrubComplete && onScrubComplete(self2);
17318            }
17319          });
17320        }
17321      };
17322      if (animation) {
17323        animation.vars.lazy = false;
17324        animation._initted && !self2.isReverted || animation.vars.immediateRender !== false && vars.immediateRender !== false && animation.duration() && animation.render(0, true, true);
17325        self2.animation = animation.pause();
17326        animation.scrollTrigger = self2;
17327        self2.scrubDuration(scrub);
17328        snap1 = 0;
17329        id || (id = animation.vars.id);
17330      }
17331      if (snap2) {
17332        if (!_isObject(snap2) || snap2.push) {
17333          snap2 = {
17334            snapTo: snap2
17335          };
17336        }
17337        "scrollBehavior" in _body.style && gsap.set(isViewport ? [_body, _docEl] : scroller, {
17338          scrollBehavior: "auto"
17339        });
17340        _scrollers.forEach(function(o) {
17341          return _isFunction(o) && o.target === (isViewport ? _doc.scrollingElement || _docEl : scroller) && (o.smooth = false);
17342        });
17343        snapFunc = _isFunction(snap2.snapTo) ? snap2.snapTo : snap2.snapTo === "labels" ? _getClosestLabel(animation) : snap2.snapTo === "labelsDirectional" ? _getLabelAtDirection(animation) : snap2.directional !== false ? function(value, st) {
17344          return _snapDirectional(snap2.snapTo)(value, _getTime() - lastRefresh < 500 ? 0 : st.direction);
17345        } : gsap.utils.snap(snap2.snapTo);
17346        snapDurClamp = snap2.duration || {
17347          min: 0.1,
17348          max: 2
17349        };
17350        snapDurClamp = _isObject(snapDurClamp) ? _clamp(snapDurClamp.min, snapDurClamp.max) : _clamp(snapDurClamp, snapDurClamp);
17351        snapDelayedCall = gsap.delayedCall(snap2.delay || scrubSmooth / 2 || 0.1, function() {
17352          var scroll = scrollFunc(), refreshedRecently = _getTime() - lastRefresh < 500, tween = tweenTo.tween;
17353          if ((refreshedRecently || Math.abs(self2.getVelocity()) < 10) && !tween && !_pointerIsDown && lastSnap !== scroll) {
17354            var progress = (scroll - start) / change, totalProgress = animation && !isToggle ? animation.totalProgress() : progress, velocity = refreshedRecently ? 0 : (totalProgress - snap22) / (_getTime() - _time2) * 1e3 || 0, change1 = gsap.utils.clamp(-progress, 1 - progress, _abs(velocity / 2) * velocity / 0.185), naturalEnd = progress + (snap2.inertia === false ? 0 : change1), endValue, endScroll, _snap = snap2, onStart = _snap.onStart, _onInterrupt = _snap.onInterrupt, _onComplete = _snap.onComplete;
17355            endValue = snapFunc(naturalEnd, self2);
17356            _isNumber(endValue) || (endValue = naturalEnd);
17357            endScroll = Math.round(start + endValue * change);
17358            if (scroll <= end && scroll >= start && endScroll !== scroll) {
17359              if (tween && !tween._initted && tween.data <= _abs(endScroll - scroll)) {
17360                return;
17361              }
17362              if (snap2.inertia === false) {
17363                change1 = endValue - progress;
17364              }
17365              tweenTo(endScroll, {
17366                duration: snapDurClamp(_abs(Math.max(_abs(naturalEnd - totalProgress), _abs(endValue - totalProgress)) * 0.185 / velocity / 0.05 || 0)),
17367                ease: snap2.ease || "power3",
17368                data: _abs(endScroll - scroll),
17369                // record the distance so that if another snap tween occurs (conflict) we 
vendor: 4,212 bytes, lines 17369-17447
17369can prioritize the closest snap.
17370                onInterrupt: function onInterrupt() {
17371                  return snapDelayedCall.restart(true) && _onInterrupt && _onInterrupt(self2);
17372                },
17373                onComplete: function onComplete() {
17374                  self2.update();
17375                  lastSnap = scrollFunc();
17376                  if (animation) {
17377                    scrubTween ? scrubTween.resetTo("totalProgress", endValue, animation._tTime / animation._tDur) : animation.progress(endValue);
17378                  }
17379                  snap1 = snap22 = animation && !isToggle ? animation.totalProgress() : self2.progress;
17380                  onSnapComplete && onSnapComplete(self2);
17381                  _onComplete && _onComplete(self2);
17382                }
17383              }, scroll, change1 * change, endScroll - scroll - change1 * change);
17384              onStart && onStart(self2, tweenTo.tween);
17385            }
17386          } else if (self2.isActive && lastSnap !== scroll) {
17387            snapDelayedCall.restart(true);
17388          }
17389        }).pause();
17390      }
17391      id && (_ids[id] = self2);
17392      trigger = self2.trigger = _getTarget(trigger || pin !== true && pin);
17393      customRevertReturn = trigger && trigger._gsap && trigger._gsap.stRevert;
17394      customRevertReturn && (customRevertReturn = customRevertReturn(self2));
17395      pin = pin === true ? trigger : _getTarget(pin);
17396      _isString(toggleClass) && (toggleClass = {
17397        targets: trigger,
17398        className: toggleClass
17399      });
17400      if (pin) {
17401        pinSpacing === false || pinSpacing === _margin || (pinSpacing = !pinSpacing && pin.parentNode && pin.parentNode.style && _getComputedStyle(pin.parentNode).display === "flex" ? false : _padding);
17402        self2.pin = pin;
17403        pinCache = gsap.core.getCache(pin);
17404        if (!pinCache.spacer) {
17405          if (pinSpacer) {
17406            pinSpacer = _getTarget(pinSpacer);
17407            pinSpacer && !pinSpacer.nodeType && (pinSpacer = pinSpacer.current || pinSpacer.nativeElement);
17408            pinCache.spacerIsNative = !!pinSpacer;
17409            pinSpacer && (pinCache.spacerState = _getState(pinSpacer));
17410          }
17411          pinCache.spacer = spacer = pinSpacer || _doc.createElement("div");
17412          spacer.classList.add("pin-spacer");
17413          id && spacer.classList.add("pin-spacer-" + id);
17414          pinCache.pinState = pinOriginalState = _getState(pin);
17415        } else {
17416          pinOriginalState = pinCache.pinState;
17417        }
17418        vars.force3D !== false && gsap.set(pin, {
17419          force3D: true
17420        });
17421        self2.spacer = spacer = pinCache.spacer;
17422        cs = _getComputedStyle(pin);
17423        spacingStart = cs[pinSpacing + direction.os2];
17424        pinGetter = gsap.getProperty(pin);
17425        pinSetter = gsap.quickSetter(pin, direction.a, _px);
17426        _swapPinIn(pin, spacer, cs);
17427        pinState = _getState(pin);
17428      }
17429      if (markers) {
17430        markerVars = _isObject(markers) ? _setDefaults(markers, _markerDefaults) : _markerDefaults;
17431        markerStartTrigger = _createMarker("scroller-start", id, scroller, direction, markerVars, 0);
17432        markerEndTrigger = _createMarker("scroller-end", id, scroller, direction, markerVars, 0, markerStartTrigger);
17433        offset = markerStartTrigger["offset" + direction.op.d2];
17434        var content = _getTarget(_getProxyProp(scroller, "content") || scroller);
17435        markerStart = this.markerStart = _createMarker("start", id, content, direction, markerVars, offset, 0, containerAnimation);
17436        markerEnd = this.markerEnd = _createMarker("end", id, content, direction, markerVars, offset, 0, containerAnimation);
17437        containerAnimation && (caMarkerSetter = gsap.quickSetter([markerStart, markerEnd], direction.a, _px));
17438        if (!useFixedPosition && !(_proxies.length && _getProxyProp(scroller, "fixedMarkers") === true)) {
17439          _makePositionable(isViewport ? _body : scroller);
17440          gsap.set([markerStartTrigger, markerEndTrigger], {
17441            force3D: true
17442          });
17443          markerStartSetter = gsap.quickSetter(markerStartTrigger, direction.a, _px);
17444          markerEndSetter = gsap.quickSetter(markerEndTrigger, direction.a, _px);
17445        }
17446      }
17447      if (containerAnimation) {
vendor: 5,707 bytes, lines 17448-17550
17448        var oldOnUpdate = containerAnimation.vars.onUpdate, oldParams = containerAnimation.vars.onUpdateParams;
17449        containerAnimation.eventCallback("onUpdate", function() {
17450          self2.update(0, 0, 1);
17451          oldOnUpdate && oldOnUpdate.apply(containerAnimation, oldParams || []);
17452        });
17453      }
17454      self2.previous = function() {
17455        return _triggers[_triggers.indexOf(self2) - 1];
17456      };
17457      self2.next = function() {
17458        return _triggers[_triggers.indexOf(self2) + 1];
17459      };
17460      self2.revert = function(revert, temp) {
17461        if (!temp) {
17462          return self2.kill(true);
17463        }
17464        var r = revert !== false || !self2.enabled, prevRefreshing = _refreshing;
17465        if (r !== self2.isReverted) {
17466          if (r) {
17467            prevScroll = Math.max(scrollFunc(), self2.scroll.rec || 0);
17468            prevProgress = self2.progress;
17469            prevAnimProgress = animation && animation.progress();
17470          }
17471          markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function(m) {
17472            return m.style.display = r ? "none" : "block";
17473          });
17474          if (r) {
17475            _refreshing = self2;
17476            self2.update(r);
17477          }
17478          if (pin && (!pinReparent || !self2.isActive)) {
17479            if (r) {
17480              _swapPinOut(pin, spacer, pinOriginalState);
17481            } else {
17482              _swapPinIn(pin, spacer, _getComputedStyle(pin), spacerState);
17483            }
17484          }
17485          r || self2.update(r);
17486          _refreshing = prevRefreshing;
17487          self2.isReverted = r;
17488        }
17489      };
17490      self2.refresh = function(soft, force, position, pinOffset) {
17491        if ((_refreshing || !self2.enabled) && !force) {
17492          return;
17493        }
17494        if (pin && soft && _lastScrollTime) {
17495          _addListener(ScrollTrigger2, "scrollEnd", _softRefresh);
17496          return;
17497        }
17498        !_refreshingAll && onRefreshInit && onRefreshInit(self2);
17499        _refreshing = self2;
17500        if (tweenTo.tween && !position) {
17501          tweenTo.tween.kill();
17502          tweenTo.tween = 0;
17503        }
17504        scrubTween && scrubTween.pause();
17505        invalidateOnRefresh && animation && animation.revert({
17506          kill: false
17507        }).invalidate();
17508        self2.isReverted || self2.revert(true, true);
17509        self2._subPinOffset = false;
17510        var size = getScrollerSize(), scrollerBounds = getScrollerOffsets(), max = containerAnimation ? containerAnimation.duration() : _maxScroll(scroller, direction), isFirstRefresh = change <= 0.01, offset2 = 0, otherPinOffset = pinOffset || 0, parsedEnd = _isObject(position) ? position.end : vars.end, parsedEndTrigger = vars.endTrigger || trigger, parsedStart = _isObject(position) ? position.start : vars.start || (vars.start === 0 || !trigger ? 0 : pin ? "0 0" : "0 100%"), pinnedContainer = self2.pinnedContainer = vars.pinnedContainer && _getTarget(vars.pinnedContainer, self2), triggerIndex = trigger && Math.max(0, _triggers.indexOf(self2)) || 0, i2 = triggerIndex, cs2, bounds, scroll, isVertical, override, curTrigger, curPin, oppositeScroll, initted, revertedPins, forcedOverflow, markerStartOffset, markerEndOffset;
17511        if (markers && _isObject(position)) {
17512          markerStartOffset = gsap.getProperty(markerStartTrigger, direction.p);
17513          markerEndOffset = gsap.getProperty(markerEndTrigger, direction.p);
17514        }
17515        while (i2--) {
17516          curTrigger = _triggers[i2];
17517          curTrigger.end || curTrigger.refresh(0, 1) || (_refreshing = self2);
17518          curPin = curTrigger.pin;
17519          if (curPin && (curPin === trigger || curPin === pin || curPin === pinnedContainer) && !curTrigger.isReverted) {
17520            revertedPins || (revertedPins = []);
17521            revertedPins.unshift(curTrigger);
17522            curTrigger.revert(true, true);
17523          }
17524          if (curTrigger !== _triggers[i2]) {
17525            triggerIndex--;
17526            i2--;
17527          }
17528        }
17529        _isFunction(parsedStart) && (parsedStart = parsedStart(self2));
17530        parsedStart = _parseClamp(parsedStart, "start", self2);
17531        start = _parsePosition(parsedStart, trigger, size, direction, scrollFunc(), markerStart, markerStartTrigger, self2, scrollerBounds, borderWidth, useFixedPosition, max, containerAnimation, self2._startClamp && "_startClamp") || (pin ? -1e-3 : 0);
17532        _isFunction(parsedEnd) && (parsedEnd = parsedEnd(self2));
17533        if (_isString(parsedEnd) && !parsedEnd.indexOf("+=")) {
17534          if (~parsedEnd.indexOf(" ")) {
17535            parsedEnd = (_isString(parsedStart) ? parsedStart.split(" ")[0] : "") + parsedEnd;
17536          } else {
17537            offset2 = _offsetToPx(parsedEnd.substr(2), size);
17538            parsedEnd = _isString(parsedStart) ? parsedStart : (containerAnimation ? gsap.utils.mapRange(0, containerAnimation.duration(), containerAnimation.scrollTrigger.start, containerAnimation.scrollTrigger.end, start) : start) + offset2;
17539            parsedEndTrigger = trigger;
17540          }
17541        }
17542        parsedEnd = _parseClamp(parsedEnd, "end", self2);
17543        end = Math.max(start, _parsePosition(parsedEnd || (parsedEndTrigger ? "100% 0" : max), parsedEndTrigger, size, direction, scrollFunc() + offset2, markerEnd, markerEndTrigger, self2, scrollerBounds, borderWidth, useFixedPosition, max, containerAnimation, self2._endClamp && "_endClamp")) || -1e-3;
17544        offset2 = 0;
17545        i2 = triggerIndex;
17546        while (i2--) {
17547          curTrigger = _triggers[i2];
17548          curPin = curTrigger.pin;
17549          if (curPin && curTrigger.start - curTrigger._pinPush <= start && !containerAnimation && curTrigger.end > 0) {
17550            cs2 = curTrigger.end - (self2._startClamp ? Math.max(0, curTr
vendor: 33,972 bytes, lines 17550-18256
17550igger.start) : curTrigger.start);
17551            if ((curPin === trigger && curTrigger.start - curTrigger._pinPush < start || curPin === pinnedContainer) && isNaN(parsedStart)) {
17552              offset2 += cs2 * (1 - curTrigger.progress);
17553            }
17554            curPin === pin && (otherPinOffset += cs2);
17555          }
17556        }
17557        start += offset2;
17558        end += offset2;
17559        self2._startClamp && (self2._startClamp += offset2);
17560        if (self2._endClamp && !_refreshingAll) {
17561          self2._endClamp = end || -1e-3;
17562          end = Math.min(end, _maxScroll(scroller, direction));
17563        }
17564        change = end - start || (start -= 0.01) && 1e-3;
17565        if (isFirstRefresh) {
17566          prevProgress = gsap.utils.clamp(0, 1, gsap.utils.normalize(start, end, prevScroll));
17567        }
17568        self2._pinPush = otherPinOffset;
17569        if (markerStart && offset2) {
17570          cs2 = {};
17571          cs2[direction.a] = "+=" + offset2;
17572          pinnedContainer && (cs2[direction.p] = "-=" + scrollFunc());
17573          gsap.set([markerStart, markerEnd], cs2);
17574        }
17575        if (pin && !(_clampingMax && self2.end >= _maxScroll(scroller, direction))) {
17576          cs2 = _getComputedStyle(pin);
17577          isVertical = direction === _vertical;
17578          scroll = scrollFunc();
17579          pinStart = parseFloat(pinGetter(direction.a)) + otherPinOffset;
17580          if (!max && end > 1) {
17581            forcedOverflow = (isViewport ? _doc.scrollingElement || _docEl : scroller).style;
17582            forcedOverflow = {
17583              style: forcedOverflow,
17584              value: forcedOverflow["overflow" + direction.a.toUpperCase()]
17585            };
17586            if (isViewport && _getComputedStyle(_body)["overflow" + direction.a.toUpperCase()] !== "scroll") {
17587              forcedOverflow.style["overflow" + direction.a.toUpperCase()] = "scroll";
17588            }
17589          }
17590          _swapPinIn(pin, spacer, cs2);
17591          pinState = _getState(pin);
17592          bounds = _getBounds(pin, true);
17593          oppositeScroll = useFixedPosition && _getScrollFunc(scroller, isVertical ? _horizontal : _vertical)();
17594          if (pinSpacing) {
17595            spacerState = [pinSpacing + direction.os2, change + otherPinOffset + _px];
17596            spacerState.t = spacer;
17597            i2 = pinSpacing === _padding ? _getSize(pin, direction) + change + otherPinOffset : 0;
17598            if (i2) {
17599              spacerState.push(direction.d, i2 + _px);
17600              spacer.style.flexBasis !== "auto" && (spacer.style.flexBasis = i2 + _px);
17601            }
17602            _setState(spacerState);
17603            if (pinnedContainer) {
17604              _triggers.forEach(function(t2) {
17605                if (t2.pin === pinnedContainer && t2.vars.pinSpacing !== false) {
17606                  t2._subPinOffset = true;
17607                }
17608              });
17609            }
17610            useFixedPosition && scrollFunc(prevScroll);
17611          } else {
17612            i2 = _getSize(pin, direction);
17613            i2 && spacer.style.flexBasis !== "auto" && (spacer.style.flexBasis = i2 + _px);
17614          }
17615          if (useFixedPosition) {
17616            override = {
17617              top: bounds.top + (isVertical ? scroll - start : oppositeScroll) + _px,
17618              left: bounds.left + (isVertical ? oppositeScroll : scroll - start) + _px,
17619              boxSizing: "border-box",
17620              position: "fixed"
17621            };
17622            override[_width] = override["max" + _Width] = Math.ceil(bounds.width) + _px;
17623            override[_height] = override["max" + _Height] = Math.ceil(bounds.height) + _px;
17624            override[_margin] = override[_margin + _Top] = override[_margin + _Right] = override[_margin + _Bottom] = override[_margin + _Left] = "0";
17625            override[_padding] = cs2[_padding];
17626            override[_padding + _Top] = cs2[_padding + _Top];
17627            override[_padding + _Right] = cs2[_padding + _Right];
17628            override[_padding + _Bottom] = cs2[_padding + _Bottom];
17629            override[_padding + _Left] = cs2[_padding + _Left];
17630            pinActiveState = _copyState(pinOriginalState, override, pinReparent);
17631            _refreshingAll && scrollFunc(0);
17632          }
17633          if (animation) {
17634            initted = animation._initted;
17635            _suppressOverwrites(1);
17636            animation.render(animation.duration(), true, true);
17637            pinChange = pinGetter(direction.a) - pinStart + change + otherPinOffset;
17638            pinMoves = Math.abs(change - pinChange) > 1;
17639            useFixedPosition && pinMoves && pinActiveState.splice(pinActiveState.length - 2, 2);
17640            animation.render(0, true, true);
17641            initted || animation.invalidate(true);
17642            animation.parent || animation.totalTime(animation.totalTime());
17643            _suppressOverwrites(0);
17644          } else {
17645            pinChange = change;
17646          }
17647          forcedOverflow && (forcedOverflow.value ? forcedOverflow.style["overflow" + direction.a.toUpperCase()] = forcedOverflow.value : forcedOverflow.style.removeProperty("overflow-" + direction.a));
17648        } else if (trigger && scrollFunc() && !containerAnimation) {
17649          bounds = trigger.parentNode;
17650          while (bounds && bounds !== _body) {
17651            if (bounds._pinOffset) {
17652              start -= bounds._pinOffset;
17653              end -= bounds._pinOffset;
17654            }
17655            bounds = bounds.parentNode;
17656          }
17657        }
17658        revertedPins && revertedPins.forEach(function(t2) {
17659          return t2.revert(false, true);
17660        });
17661        self2.start = start;
17662        self2.end = end;
17663        scroll1 = scroll2 = _refreshingAll ? prevScroll : scrollFunc();
17664        if (!containerAnimation && !_refreshingAll) {
17665          scroll1 < prevScroll && scrollFunc(prevScroll);
17666          self2.scroll.rec = 0;
17667        }
17668        self2.revert(false, true);
17669        lastRefresh = _getTime();
17670        if (snapDelayedCall) {
17671          lastSnap = -1;
17672          snapDelayedCall.restart(true);
17673        }
17674        _refreshing = 0;
17675        animation && isToggle && (animation._initted || prevAnimProgress) && animation.progress() !== prevAnimProgress && animation.progress(prevAnimProgress || 0, true).render(animation.time(), true, true);
17676        if (isFirstRefresh || prevProgress !== self2.progress || containerAnimation || invalidateOnRefresh) {
17677          animation && !isToggle && animation.totalProgress(containerAnimation && start < -1e-3 && !prevProgress ? gsap.utils.normalize(start, end, 0) : prevProgress, true);
17678          self2.progress = isFirstRefresh || (scroll1 - start) / change === prevProgress ? 0 : prevProgress;
17679        }
17680        pin && pinSpacing && (spacer._pinOffset = Math.round(self2.progress * pinChange));
17681        scrubTween && scrubTween.invalidate();
17682        if (!isNaN(markerStartOffset)) {
17683          markerStartOffset -= gsap.getProperty(markerStartTrigger, direction.p);
17684          markerEndOffset -= gsap.getProperty(markerEndTrigger, direction.p);
17685          _shiftMarker(markerStartTrigger, direction, markerStartOffset);
17686          _shiftMarker(markerStart, direction, markerStartOffset - (pinOffset || 0));
17687          _shiftMarker(markerEndTrigger, direction, markerEndOffset);
17688          _shiftMarker(markerEnd, direction, markerEndOffset - (pinOffset || 0));
17689        }
17690        isFirstRefresh && !_refreshingAll && self2.update();
17691        if (onRefresh && !_refreshingAll && !executingOnRefresh) {
17692          executingOnRefresh = true;
17693          onRefresh(self2);
17694          executingOnRefresh = false;
17695        }
17696      };
17697      self2.getVelocity = function() {
17698        return (scrollFunc() - scroll2) / (_getTime() - _time2) * 1e3 || 0;
17699      };
17700      self2.endAnimation = function() {
17701        _endAnimation(self2.callbackAnimation);
17702        if (animation) {
17703          scrubTween ? scrubTween.progress(1) : !animation.paused() ? _endAnimation(animation, animation.reversed()) : isToggle || _endAnimation(animation, self2.direction < 0, 1);
17704        }
17705      };
17706      self2.labelToScroll = function(label) {
17707        return animation && animation.labels && (start || self2.refresh() || start) + animation.labels[label] / animation.duration() * change || 0;
17708      };
17709      self2.getTrailing = function(name) {
17710        var i2 = _triggers.indexOf(self2), a = self2.direction > 0 ? _triggers.slice(0, i2).reverse() : _triggers.slice(i2 + 1);
17711        return (_isString(name) ? a.filter(function(t2) {
17712          return t2.vars.preventOverlaps === name;
17713        }) : a).filter(function(t2) {
17714          return self2.direction > 0 ? t2.end <= start : t2.start >= end;
17715        });
17716      };
17717      self2.update = function(reset, recordVelocity, forceFake) {
17718        if (containerAnimation && !forceFake && !reset) {
17719          return;
17720        }
17721        var scroll = _refreshingAll === true ? prevScroll : self2.scroll(), p = reset ? 0 : (scroll - start) / change, clipped = p < 0 ? 0 : p > 1 ? 1 : p || 0, prevProgress2 = self2.progress, isActive, wasActive, toggleState, action, stateChanged, toggled, isAtMax, isTakingAction;
17722        if (recordVelocity) {
17723          scroll2 = scroll1;
17724          scroll1 = containerAnimation ? scrollFunc() : scroll;
17725          if (snap2) {
17726            snap22 = snap1;
17727            snap1 = animation && !isToggle ? animation.totalProgress() : clipped;
17728          }
17729        }
17730        if (anticipatePin && pin && !_refreshing && !_startup && _lastScrollTime) {
17731          if (!clipped && start < scroll + (scroll - scroll2) / (_getTime() - _time2) * anticipatePin) {
17732            clipped = 1e-4;
17733          } else if (clipped === 1 && end > scroll + (scroll - scroll2) / (_getTime() - _time2) * anticipatePin) {
17734            clipped = 0.9999;
17735          }
17736        }
17737        if (clipped !== prevProgress2 && self2.enabled) {
17738          isActive = self2.isActive = !!clipped && clipped < 1;
17739          wasActive = !!prevProgress2 && prevProgress2 < 1;
17740          toggled = isActive !== wasActive;
17741          stateChanged = toggled || !!clipped !== !!prevProgress2;
17742          self2.direction = clipped > prevProgress2 ? 1 : -1;
17743          self2.progress = clipped;
17744          if (stateChanged && !_refreshing) {
17745            toggleState = clipped && !prevProgress2 ? 0 : clipped === 1 ? 1 : prevProgress2 === 1 ? 2 : 3;
17746            if (isToggle) {
17747              action = !toggled && toggleActions[toggleState + 1] !== "none" && toggleActions[toggleState + 1] || toggleActions[toggleState];
17748              isTakingAction = animation && (action === "complete" || action === "reset" || action in animation);
17749            }
17750          }
17751          preventOverlaps && (toggled || isTakingAction) && (isTakingAction || scrub || !animation) && (_isFunction(preventOverlaps) ? preventOverlaps(self2) : self2.getTrailing(preventOverlaps).forEach(function(t2) {
17752            return t2.endAnimation();
17753          }));
17754          if (!isToggle) {
17755            if (scrubTween && !_refreshing && !_startup) {
17756              scrubTween._dp._time - scrubTween._start !== scrubTween._time && scrubTween.render(scrubTween._dp._time - scrubTween._start);
17757              if (scrubTween.resetTo) {
17758                scrubTween.resetTo("totalProgress", clipped, animation._tTime / animation._tDur);
17759              } else {
17760                scrubTween.vars.totalProgress = clipped;
17761                scrubTween.invalidate().restart();
17762              }
17763            } else if (animation) {
17764              animation.totalProgress(clipped, !!(_refreshing && (lastRefresh || reset)));
17765            }
17766          }
17767          if (pin) {
17768            reset && pinSpacing && (spacer.style[pinSpacing + direction.os2] = spacingStart);
17769            if (!useFixedPosition) {
17770              pinSetter(_round(pinStart + pinChange * clipped));
17771            } else if (stateChanged) {
17772              isAtMax = !reset && clipped > prevProgress2 && end + 1 > scroll && scroll + 1 >= _maxScroll(scroller, direction);
17773              if (pinReparent) {
17774                if (!reset && (isActive || isAtMax)) {
17775                  var bounds = _getBounds(pin, true), _offset = scroll - start;
17776                  _reparent(pin, _body, bounds.top + (direction === _vertical ? _offset : 0) + _px, bounds.left + (direction === _vertical ? 0 : _offset) + _px);
17777                } else {
17778                  _reparent(pin, spacer);
17779                }
17780              }
17781              _setState(isActive || isAtMax ? pinActiveState : pinState);
17782              pinMoves && clipped < 1 && isActive || pinSetter(pinStart + (clipped === 1 && !isAtMax ? pinChange : 0));
17783            }
17784          }
17785          snap2 && !tweenTo.tween && !_refreshing && !_startup && snapDelayedCall.restart(true);
17786          toggleClass && (toggled || once && clipped && (clipped < 1 || !_limitCallbacks)) && _toArray(toggleClass.targets).forEach(function(el) {
17787            return el.classList[isActive || once ? "add" : "remove"](toggleClass.className);
17788          });
17789          onUpdate && !isToggle && !reset && onUpdate(self2);
17790          if (stateChanged && !_refreshing) {
17791            if (isToggle) {
17792              if (isTakingAction) {
17793                if (action === "complete") {
17794                  animation.pause().totalProgress(1);
17795                } else if (action === "reset") {
17796                  animation.restart(true).pause();
17797                } else if (action === "restart") {
17798                  animation.restart(true);
17799                } else {
17800                  animation[action]();
17801                }
17802              }
17803              onUpdate && onUpdate(self2);
17804            }
17805            if (toggled || !_limitCallbacks) {
17806              onToggle && toggled && _callback(self2, onToggle);
17807              callbacks[toggleState] && _callback(self2, callbacks[toggleState]);
17808              once && (clipped === 1 ? self2.kill(false, 1) : callbacks[toggleState] = 0);
17809              if (!toggled) {
17810                toggleState = clipped === 1 ? 1 : 3;
17811                callbacks[toggleState] && _callback(self2, callbacks[toggleState]);
17812              }
17813            }
17814            if (fastScrollEnd && !isActive && Math.abs(self2.getVelocity()) > (_isNumber(fastScrollEnd) ? fastScrollEnd : 2500)) {
17815              _endAnimation(self2.callbackAnimation);
17816              scrubTween ? scrubTween.progress(1) : _endAnimation(animation, action === "reverse" ? 1 : !clipped, 1);
17817            }
17818          } else if (isToggle && onUpdate && !_refreshing) {
17819            onUpdate(self2);
17820          }
17821        }
17822        if (markerEndSetter) {
17823          var n = containerAnimation ? scroll / containerAnimation.duration() * (containerAnimation._caScrollDist || 0) : scroll;
17824          markerStartSetter(n + (markerStartTrigger._isFlipped ? 1 : 0));
17825          markerEndSetter(n);
17826        }
17827        caMarkerSetter && caMarkerSetter(-scroll / containerAnimation.duration() * (containerAnimation._caScrollDist || 0));
17828      };
17829      self2.enable = function(reset, refresh) {
17830        if (!self2.enabled) {
17831          self2.enabled = true;
17832          _addListener(scroller, "resize", _onResize);
17833          isViewport || _addListener(scroller, "scroll", _onScroll);
17834          onRefreshInit && _addListener(ScrollTrigger2, "refreshInit", onRefreshInit);
17835          if (reset !== false) {
17836            self2.progress = prevProgress = 0;
17837            scroll1 = scroll2 = lastSnap = scrollFunc();
17838          }
17839          refresh !== false && self2.refresh();
17840        }
17841      };
17842      self2.getTween = function(snap3) {
17843        return snap3 && tweenTo ? tweenTo.tween : scrubTween;
17844      };
17845      self2.setPositions = function(newStart, newEnd, keepClamp, pinOffset) {
17846        if (containerAnimation) {
17847          var st = containerAnimation.scrollTrigger, duration = containerAnimation.duration(), _change = st.end - st.start;
17848          newStart = st.start + _change * newStart / duration;
17849          newEnd = st.start + _change * newEnd / duration;
17850        }
17851        self2.refresh(false, false, {
17852          start: _keepClamp(newStart, keepClamp && !!self2._startClamp),
17853          end: _keepClamp(newEnd, keepClamp && !!self2._endClamp)
17854        }, pinOffset);
17855        self2.update();
17856      };
17857      self2.adjustPinSpacing = function(amount) {
17858        if (spacerState && amount) {
17859          var i2 = spacerState.indexOf(direction.d) + 1;
17860          spacerState[i2] = parseFloat(spacerState[i2]) + amount + _px;
17861          spacerState[1] = parseFloat(spacerState[1]) + amount + _px;
17862          _setState(spacerState);
17863        }
17864      };
17865      self2.disable = function(reset, allowAnimation) {
17866        if (self2.enabled) {
17867          reset !== false && self2.revert(true, true);
17868          self2.enabled = self2.isActive = false;
17869          allowAnimation || scrubTween && scrubTween.pause();
17870          prevScroll = 0;
17871          pinCache && (pinCache.uncache = 1);
17872          onRefreshInit && _removeListener(ScrollTrigger2, "refreshInit", onRefreshInit);
17873          if (snapDelayedCall) {
17874            snapDelayedCall.pause();
17875            tweenTo.tween && tweenTo.tween.kill() && (tweenTo.tween = 0);
17876          }
17877          if (!isViewport) {
17878            var i2 = _triggers.length;
17879            while (i2--) {
17880              if (_triggers[i2].scroller === scroller && _triggers[i2] !== self2) {
17881                return;
17882              }
17883            }
17884            _removeListener(scroller, "resize", _onResize);
17885            isViewport || _removeListener(scroller, "scroll", _onScroll);
17886          }
17887        }
17888      };
17889      self2.kill = function(revert, allowAnimation) {
17890        self2.disable(revert, allowAnimation);
17891        scrubTween && !allowAnimation && scrubTween.kill();
17892        id && delete _ids[id];
17893        var i2 = _triggers.indexOf(self2);
17894        i2 >= 0 && _triggers.splice(i2, 1);
17895        i2 === _i && _direction > 0 && _i--;
17896        i2 = 0;
17897        _triggers.forEach(function(t2) {
17898          return t2.scroller === self2.scroller && (i2 = 1);
17899        });
17900        i2 || _refreshingAll || (self2.scroll.rec = 0);
17901        if (animation) {
17902          animation.scrollTrigger = null;
17903          revert && animation.revert({
17904            kill: false
17905          });
17906          allowAnimation || animation.kill();
17907        }
17908        markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function(m) {
17909          return m.parentNode && m.parentNode.removeChild(m);
17910        });
17911        _primary === self2 && (_primary = 0);
17912        if (pin) {
17913          pinCache && (pinCache.uncache = 1);
17914          i2 = 0;
17915          _triggers.forEach(function(t2) {
17916            return t2.pin === pin && i2++;
17917          });
17918          i2 || (pinCache.spacer = 0);
17919        }
17920        vars.onKill && vars.onKill(self2);
17921      };
17922      _triggers.push(self2);
17923      self2.enable(false, false);
17924      customRevertReturn && customRevertReturn(self2);
17925      if (animation && animation.add && !change) {
17926        var updateFunc = self2.update;
17927        self2.update = function() {
17928          self2.update = updateFunc;
17929          start || end || self2.refresh();
17930        };
17931        gsap.delayedCall(0.01, self2.update);
17932        change = 0.01;
17933        start = end = 0;
17934      } else {
17935        self2.refresh();
17936      }
17937      pin && _queueRefreshAll();
17938    };
17939    ScrollTrigger2.register = function register(core2) {
17940      if (!_coreInitted) {
17941        gsap = core2 || _getGSAP();
17942        _windowExists() && window.document && ScrollTrigger2.enable();
17943        _coreInitted = _enabled;
17944      }
17945      return _coreInitted;
17946    };
17947    ScrollTrigger2.defaults = function defaults2(config) {
17948      if (config) {
17949        for (var p in config) {
17950          _defaults[p] = config[p];
17951        }
17952      }
17953      return _defaults;
17954    };
17955    ScrollTrigger2.disable = function disable(reset, kill) {
17956      _enabled = 0;
17957      _triggers.forEach(function(trigger) {
17958        return trigger[kill ? "kill" : "disable"](reset);
17959      });
17960      _removeListener(_win, "wheel", _onScroll);
17961      _removeListener(_doc, "scroll", _onScroll);
17962      clearInterval(_syncInterval);
17963      _removeListener(_doc, "touchcancel", _passThrough);
17964      _removeListener(_body, "touchstart", _passThrough);
17965      _multiListener(_removeListener, _doc, "pointerdown,touchstart,mousedown", _pointerDownHandler);
17966      _multiListener(_removeListener, _doc, "pointerup,touchend,mouseup", _pointerUpHandler);
17967      _resizeDelay.kill();
17968      _iterateAutoRefresh(_removeListener);
17969      for (var i2 = 0; i2 < _scrollers.length; i2 += 3) {
17970        _wheelListener(_removeListener, _scrollers[i2], _scrollers[i2 + 1]);
17971        _wheelListener(_removeListener, _scrollers[i2], _scrollers[i2 + 2]);
17972      }
17973    };
17974    ScrollTrigger2.enable = function enable() {
17975      _win = window;
17976      _doc = document;
17977      _docEl = _doc.documentElement;
17978      _body = _doc.body;
17979      if (gsap) {
17980        _toArray = gsap.utils.toArray;
17981        _clamp = gsap.utils.clamp;
17982        _context = gsap.core.context || _passThrough;
17983        _suppressOverwrites = gsap.core.suppressOverwrites || _passThrough;
17984        _scrollRestoration = _win.history.scrollRestoration || "auto";
17985        _lastScroll = _win.pageYOffset;
17986        gsap.core.globals("ScrollTrigger", ScrollTrigger2);
17987        if (_body) {
17988          _enabled = 1;
17989          _div100vh = document.createElement("div");
17990          _div100vh.style.height = "100vh";
17991          _div100vh.style.position = "absolute";
17992          _refresh100vh();
17993          _rafBugFix();
17994          Observer.register(gsap);
17995          ScrollTrigger2.isTouch = Observer.isTouch;
17996          _fixIOSBug = Observer.isTouch && /(iPad|iPhone|iPod|Mac)/g.test(navigator.userAgent);
17997          _ignoreMobileResize = Observer.isTouch === 1;
17998          _addListener(_win, "wheel", _onScroll);
17999          _root = [_win, _doc, _docEl, _body];
18000          if (gsap.matchMedia) {
18001            ScrollTrigger2.matchMedia = function(vars) {
18002              var mm = gsap.matchMedia(), p;
18003              for (p in vars) {
18004                mm.add(p, vars[p]);
18005              }
18006              return mm;
18007            };
18008            gsap.addEventListener("matchMediaInit", function() {
18009              return _revertAll();
18010            });
18011            gsap.addEventListener("matchMediaRevert", function() {
18012              return _revertRecorded();
18013            });
18014            gsap.addEventListener("matchMedia", function() {
18015              _refreshAll(0, 1);
18016              _dispatch("matchMedia");
18017            });
18018            gsap.matchMedia("(orientation: portrait)", function() {
18019              _setBaseDimensions();
18020              return _setBaseDimensions;
18021            });
18022          } else {
18023            console.warn("Requires GSAP 3.11.0 or later");
18024          }
18025          _setBaseDimensions();
18026          _addListener(_doc, "scroll", _onScroll);
18027          var bodyStyle = _body.style, border = bodyStyle.borderTopStyle, AnimationProto = gsap.core.Animation.prototype, bounds, i2;
18028          AnimationProto.revert || Object.defineProperty(AnimationProto, "revert", {
18029            value: function value() {
18030              return this.time(-0.01, true);
18031            }
18032          });
18033          bodyStyle.borderTopStyle = "solid";
18034          bounds = _getBounds(_body);
18035          _vertical.m = Math.round(bounds.top + _vertical.sc()) || 0;
18036          _horizontal.m = Math.round(bounds.left + _horizontal.sc()) || 0;
18037          border ? bodyStyle.borderTopStyle = border : bodyStyle.removeProperty("border-top-style");
18038          _syncInterval = setInterval(_sync, 250);
18039          gsap.delayedCall(0.5, function() {
18040            return _startup = 0;
18041          });
18042          _addListener(_doc, "touchcancel", _passThrough);
18043          _addListener(_body, "touchstart", _passThrough);
18044          _multiListener(_addListener, _doc, "pointerdown,touchstart,mousedown", _pointerDownHandler);
18045          _multiListener(_addListener, _doc, "pointerup,touchend,mouseup", _pointerUpHandler);
18046          _transformProp = gsap.utils.checkPrefix("transform");
18047          _stateProps.push(_transformProp);
18048          _coreInitted = _getTime();
18049          _resizeDelay = gsap.delayedCall(0.2, _refreshAll).pause();
18050          _autoRefresh = [_doc, "visibilitychange", function() {
18051            var w = _win.innerWidth, h = _win.innerHeight;
18052            if (_doc.hidden) {
18053              _prevWidth = w;
18054              _prevHeight = h;
18055            } else if (_prevWidth !== w || _prevHeight !== h) {
18056              _onResize();
18057            }
18058          }, _doc, "DOMContentLoaded", _refreshAll, _win, "load", _refreshAll, _win, "resize", _onResize];
18059          _iterateAutoRefresh(_addListener);
18060          _triggers.forEach(function(trigger) {
18061            return trigger.enable(0, 1);
18062          });
18063          for (i2 = 0; i2 < _scrollers.length; i2 += 3) {
18064            _wheelListener(_removeListener, _scrollers[i2], _scrollers[i2 + 1]);
18065            _wheelListener(_removeListener, _scrollers[i2], _scrollers[i2 + 2]);
18066          }
18067        }
18068      }
18069    };
18070    ScrollTrigger2.config = function config(vars) {
18071      "limitCallbacks" in vars && (_limitCallbacks = !!vars.limitCallbacks);
18072      var ms = vars.syncInterval;
18073      ms && clearInterval(_syncInterval) || (_syncInterval = ms) && setInterval(_sync, ms);
18074      "ignoreMobileResize" in vars && (_ignoreMobileResize = ScrollTrigger2.isTouch === 1 && vars.ignoreMobileResize);
18075      if ("autoRefreshEvents" in vars) {
18076        _iterateAutoRefresh(_removeListener) || _iterateAutoRefresh(_addListener, vars.autoRefreshEvents || "none");
18077        _ignoreResize = (vars.autoRefreshEvents + "").indexOf("resize") === -1;
18078      }
18079    };
18080    ScrollTrigger2.scrollerProxy = function scrollerProxy(target, vars) {
18081      var t2 = _getTarget(target), i2 = _scrollers.indexOf(t2), isViewport = _isViewport(t2);
18082      if (~i2) {
18083        _scrollers.splice(i2, isViewport ? 6 : 2);
18084      }
18085      if (vars) {
18086        isViewport ? _proxies.unshift(_win, vars, _body, vars, _docEl, vars) : _proxies.unshift(t2, vars);
18087      }
18088    };
18089    ScrollTrigger2.clearMatchMedia = function clearMatchMedia(query) {
18090      _triggers.forEach(function(t2) {
18091        return t2._ctx && t2._ctx.query === query && t2._ctx.kill(true, true);
18092      });
18093    };
18094    ScrollTrigger2.isInViewport = function isInViewport(element, ratio, horizontal) {
18095      var bounds = (_isString(element) ? _getTarget(element) : element).getBoundingClientRect(), offset = bounds[horizontal ? _width : _height] * ratio || 0;
18096      return horizontal ? bounds.right - offset > 0 && bounds.left + offset < _win.innerWidth : bounds.bottom - offset > 0 && bounds.top + offset < _win.innerHeight;
18097    };
18098    ScrollTrigger2.positionInViewport = function positionInViewport(element, referencePoint, horizontal) {
18099      _isString(element) && (element = _getTarget(element));
18100      var bounds = element.getBoundingClientRect(), size = bounds[horizontal ? _width : _height], offset = referencePoint == null ? size / 2 : referencePoint in _keywords ? _keywords[referencePoint] * size : ~referencePoint.indexOf("%") ? parseFloat(referencePoint) * size / 100 : parseFloat(referencePoint) || 0;
18101      return horizontal ? (bounds.left + offset) / _win.innerWidth : (bounds.top + offset) / _win.innerHeight;
18102    };
18103    ScrollTrigger2.killAll = function killAll(allowListeners) {
18104      _triggers.slice(0).forEach(function(t2) {
18105        return t2.vars.id !== "ScrollSmoother" && t2.kill();
18106      });
18107      if (allowListeners !== true) {
18108        var listeners = _listeners.killAll || [];
18109        _listeners = {};
18110        listeners.forEach(function(f) {
18111          return f();
18112        });
18113      }
18114    };
18115    return ScrollTrigger2;
18116  }();
18117  ScrollTrigger.version = "3.12.5";
18118  ScrollTrigger.saveStyles = function(targets) {
18119    return targets ? _toArray(targets).forEach(function(target) {
18120      if (target && target.style) {
18121        var i2 = _savedStyles.indexOf(target);
18122        i2 >= 0 && _savedStyles.splice(i2, 5);
18123        _savedStyles.push(target, target.style.cssText, target.getBBox && target.getAttribute("transform"), gsap.core.getCache(target), _context());
18124      }
18125    }) : _savedStyles;
18126  };
18127  ScrollTrigger.revert = function(soft, media) {
18128    return _revertAll(!soft, media);
18129  };
18130  ScrollTrigger.create = function(vars, animation) {
18131    return new ScrollTrigger(vars, animation);
18132  };
18133  ScrollTrigger.refresh = function(safe) {
18134    return safe ? _onResize() : (_coreInitted || ScrollTrigger.register()) && _refreshAll(true);
18135  };
18136  ScrollTrigger.update = function(force) {
18137    return ++_scrollers.cache && _updateAll(force === true ? 2 : 0);
18138  };
18139  ScrollTrigger.clearScrollMemory = _clearScrollMemory;
18140  ScrollTrigger.maxScroll = function(element, horizontal) {
18141    return _maxScroll(element, horizontal ? _horizontal : _vertical);
18142  };
18143  ScrollTrigger.getScrollFunc = function(element, horizontal) {
18144    return _getScrollFunc(_getTarget(element), horizontal ? _horizontal : _vertical);
18145  };
18146  ScrollTrigger.getById = function(id) {
18147    return _ids[id];
18148  };
18149  ScrollTrigger.getAll = function() {
18150    return _triggers.filter(function(t2) {
18151      return t2.vars.id !== "ScrollSmoother";
18152    });
18153  };
18154  ScrollTrigger.isScrolling = function() {
18155    return !!_lastScrollTime;
18156  };
18157  ScrollTrigger.snapDirectional = _snapDirectional;
18158  ScrollTrigger.addEventListener = function(type, callback) {
18159    var a = _listeners[type] || (_listeners[type] = []);
18160    ~a.indexOf(callback) || a.push(callback);
18161  };
18162  ScrollTrigger.removeEventListener = function(type, callback) {
18163    var a = _listeners[type], i2 = a && a.indexOf(callback);
18164    i2 >= 0 && a.splice(i2, 1);
18165  };
18166  ScrollTrigger.batch = function(targets, vars) {
18167    var result = [], varsCopy = {}, interval = vars.interval || 0.016, batchMax = vars.batchMax || 1e9, proxyCallback = function proxyCallback2(type, callback) {
18168      var elements = [], triggers = [], delay = gsap.delayedCall(interval, function() {
18169        callback(elements, triggers);
18170        elements = [];
18171        triggers = [];
18172      }).pause();
18173      return function(self2) {
18174        elements.length || delay.restart(true);
18175        elements.push(self2.trigger);
18176        triggers.push(self2);
18177        batchMax <= elements.length && delay.progress(1);
18178      };
18179    }, p;
18180    for (p in vars) {
18181      varsCopy[p] = p.substr(0, 2) === "on" && _isFunction(vars[p]) && p !== "onRefreshInit" ? proxyCallback(p, vars[p]) : vars[p];
18182    }
18183    if (_isFunction(batchMax)) {
18184      batchMax = batchMax();
18185      _addListener(ScrollTrigger, "refresh", function() {
18186        return batchMax = vars.batchMax();
18187      });
18188    }
18189    _toArray(targets).forEach(function(target) {
18190      var config = {};
18191      for (p in varsCopy) {
18192        config[p] = varsCopy[p];
18193      }
18194      config.trigger = target;
18195      result.push(ScrollTrigger.create(config));
18196    });
18197    return result;
18198  };
18199  var _clampScrollAndGetDurationMultiplier = function _clampScrollAndGetDurationMultiplier2(scrollFunc, current, end, max) {
18200    current > max ? scrollFunc(max) : current < 0 && scrollFunc(0);
18201    return end > max ? (max - current) / (end - current) : end < 0 ? current / (current - end) : 1;
18202  }, _allowNativePanning = function _allowNativePanning2(target, direction) {
18203    if (direction === true) {
18204      target.style.removeProperty("touch-action");
18205    } else {
18206      target.style.touchAction = direction === true ? "auto" : direction ? "pan-" + direction + (Observer.isTouch ? " pinch-zoom" : "") : "none";
18207    }
18208    target === _docEl && _allowNativePanning2(_body, direction);
18209  }, _overflow = {
18210    auto: 1,
18211    scroll: 1
18212  }, _nestedScroll = function _nestedScroll2(_ref5) {
18213    var event = _ref5.event, target = _ref5.target, axis = _ref5.axis;
18214    var node = (event.changedTouches ? event.changedTouches[0] : event).target, cache = node._gsap || gsap.core.getCache(node), time = _getTime(), cs;
18215    if (!cache._isScrollT || time - cache._isScrollT > 2e3) {
18216      while (node && node !== _body && (node.scrollHeight <= node.clientHeight && node.scrollWidth <= node.clientWidth || !(_overflow[(cs = _getComputedStyle(node)).overflowY] || _overflow[cs.overflowX]))) {
18217        node = node.parentNode;
18218      }
18219      cache._isScroll = node && node !== target && !_isViewport(node) && (_overflow[(cs = _getComputedStyle(node)).overflowY] || _overflow[cs.overflowX]);
18220      cache._isScrollT = time;
18221    }
18222    if (cache._isScroll || axis === "x") {
18223      event.stopPropagation();
18224      event._gsapAllow = true;
18225    }
18226  }, _inputObserver = function _inputObserver2(target, type, inputs, nested) {
18227    return Observer.create({
18228      target,
18229      capture: true,
18230      debounce: false,
18231      lockAxis: true,
18232      type,
18233      onWheel: nested = nested && _nestedScroll,
18234      onPress: nested,
18235      onDrag: nested,
18236      onScroll: nested,
18237      onEnable: function onEnable() {
18238        return inputs && _addListener(_doc, Observer.eventTypes[0], _captureInputs, false, true);
18239      },
18240      onDisable: function onDisable() {
18241        return _removeListener(_doc, Observer.eventTypes[0], _captureInputs, true);
18242      }
18243    });
18244  }, _inputExp = /(input|label|select|textarea)/i, _inputIsFocused, _captureInputs = function _captureInputs2(e) {
18245    var isInput = _inputExp.test(e.target.tagName);
18246    if (isInput || _inputIsFocused) {
18247      e._gsapAllow = true;
18248      _inputIsFocused = isInput;
18249    }
18250  }, _getScrollNormalizer = function _getScrollNormalizer2(vars) {
18251    _isObject(vars) || (vars = {});
18252    vars.preventDefault = vars.isNormalizer = vars.allowClicks = true;
18253    vars.type || (vars.type = "wheel,touch");
18254    vars.debounce = !!vars.debounce;
18255    vars.id = vars.id || "normalizer";
18256    var _vars2 = vars, normalizeScrollX = _vars2.normalizeScrollX, momentum = _vars2.momentum, allowNestedScroll = _vars2.allowNestedScroll, onRelease = _vars2.onRelease, self2, maxY, target = _getTarget(vars.target) || _docEl, smoother = gsap.core.globals().ScrollSmoother, smootherInstance = smoother && smoother.get(), content = _fixIOSBug && (vars.content && _getTarget(vars.content) || smootherInstance && vars.content !== false && !smootherInstance.smooth() && smootherInstance.content()), scrollFuncY = _getScrollFunc(target, _vertical), scrollFuncX = _getScrollFunc(target, _horizontal), scale = 1, initialScale = (Observer.isTouch && _win.visualVie
vendor: 4,249 bytes, lines 18256-18339
18256wport ? _win.visualViewport.scale * _win.visualViewport.width : _win.outerWidth) / _win.innerWidth, wheelRefresh = 0, resolveMomentumDuration = _isFunction(momentum) ? function() {
18257      return momentum(self2);
18258    } : function() {
18259      return momentum || 2.8;
18260    }, lastRefreshID, skipTouchMove, inputObserver = _inputObserver(target, vars.type, true, allowNestedScroll), resumeTouchMove = function resumeTouchMove2() {
18261      return skipTouchMove = false;
18262    }, scrollClampX = _passThrough, scrollClampY = _passThrough, updateClamps = function updateClamps2() {
18263      maxY = _maxScroll(target, _vertical);
18264      scrollClampY = _clamp(_fixIOSBug ? 1 : 0, maxY);
18265      normalizeScrollX && (scrollClampX = _clamp(0, _maxScroll(target, _horizontal)));
18266      lastRefreshID = _refreshID;
18267    }, removeContentOffset = function removeContentOffset2() {
18268      content._gsap.y = _round(parseFloat(content._gsap.y) + scrollFuncY.offset) + "px";
18269      content.style.transform = "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, " + parseFloat(content._gsap.y) + ", 0, 1)";
18270      scrollFuncY.offset = scrollFuncY.cacheID = 0;
18271    }, ignoreDrag = function ignoreDrag2() {
18272      if (skipTouchMove) {
18273        requestAnimationFrame(resumeTouchMove);
18274        var offset = _round(self2.deltaY / 2), scroll = scrollClampY(scrollFuncY.v - offset);
18275        if (content && scroll !== scrollFuncY.v + scrollFuncY.offset) {
18276          scrollFuncY.offset = scroll - scrollFuncY.v;
18277          var y = _round((parseFloat(content && content._gsap.y) || 0) - scrollFuncY.offset);
18278          content.style.transform = "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, " + y + ", 0, 1)";
18279          content._gsap.y = y + "px";
18280          scrollFuncY.cacheID = _scrollers.cache;
18281          _updateAll();
18282        }
18283        return true;
18284      }
18285      scrollFuncY.offset && removeContentOffset();
18286      skipTouchMove = true;
18287    }, tween, startScrollX, startScrollY, onStopDelayedCall, onResize = function onResize2() {
18288      updateClamps();
18289      if (tween.isActive() && tween.vars.scrollY > maxY) {
18290        scrollFuncY() > maxY ? tween.progress(1) && scrollFuncY(maxY) : tween.resetTo("scrollY", maxY);
18291      }
18292    };
18293    content && gsap.set(content, {
18294      y: "+=0"
18295    });
18296    vars.ignoreCheck = function(e) {
18297      return _fixIOSBug && e.type === "touchmove" && ignoreDrag() || scale > 1.05 && e.type !== "touchstart" || self2.isGesturing || e.touches && e.touches.length > 1;
18298    };
18299    vars.onPress = function() {
18300      skipTouchMove = false;
18301      var prevScale = scale;
18302      scale = _round((_win.visualViewport && _win.visualViewport.scale || 1) / initialScale);
18303      tween.pause();
18304      prevScale !== scale && _allowNativePanning(target, scale > 1.01 ? true : normalizeScrollX ? false : "x");
18305      startScrollX = scrollFuncX();
18306      startScrollY = scrollFuncY();
18307      updateClamps();
18308      lastRefreshID = _refreshID;
18309    };
18310    vars.onRelease = vars.onGestureStart = function(self3, wasDragging) {
18311      scrollFuncY.offset && removeContentOffset();
18312      if (!wasDragging) {
18313        onStopDelayedCall.restart(true);
18314      } else {
18315        _scrollers.cache++;
18316        var dur = resolveMomentumDuration(), currentScroll, endScroll;
18317        if (normalizeScrollX) {
18318          currentScroll = scrollFuncX();
18319          endScroll = currentScroll + dur * 0.05 * -self3.velocityX / 0.227;
18320          dur *= _clampScrollAndGetDurationMultiplier(scrollFuncX, currentScroll, endScroll, _maxScroll(target, _horizontal));
18321          tween.vars.scrollX = scrollClampX(endScroll);
18322        }
18323        currentScroll = scrollFuncY();
18324        endScroll = currentScroll + dur * 0.05 * -self3.velocityY / 0.227;
18325        dur *= _clampScrollAndGetDurationMultiplier(scrollFuncY, currentScroll, endScroll, _maxScroll(target, _vertical));
18326        tween.vars.scrollY = scrollClampY(endScroll);
18327        tween.invalidate().duration(dur).play(0.01);
18328        if (_fixIOSBug && tween.vars.scrollY >= maxY || currentScroll >= maxY - 1) {
18329          gsap.to({}, {
18330            onUpdate: onResize,
18331            duration: dur
18332          });
18333        }
18334      }
18335      onRelease && onRelease(self3);
18336    };
18337    vars.onWheel = function() {
18338      tween._ts && tween.pause();
18339      if (_getTime() - wheelRefresh > 1e3) {
18340        lastRefreshID = 0;
18341        wheelRefresh = _getTime();
18342      }
18343    };
18344    vars.onChange = function(self3, dx, dy, xArray, yArray) {
18345      _refreshID !== lastRefreshID && updateClamps();
18346      dx && normalizeScrollX && scrollFuncX(scrollClampX(xArray[2] === dx ? startScrollX + (self3.startX - self3.x) : scrollFuncX() + dx - xArray[1]));
18347      if (dy) {
18348        scrollFuncY.offset && removeContentOffset();
18349        var isTouch = yArray[2] === dy, y = isTouch ? startScrollY + self3.startY - self3.y : scrollFuncY() + dy - yArray[1], yClamped = scrollClampY(y);
18350        isTouch && y !== yClamped && (startScrollY += yClamped - y);
18351        scrollFuncY(yClamped);
18352      }
18353      (dy || dx) && _updateAll();
18354    };
18355    vars.onEnable = function() {
18356      _allowNativePanning(target, normalizeScrollX ? false : "x");
18357      ScrollTrigger.addEventListener("refresh", onResize);
18358      _addListener(_win, "resize", onResize);
18359      if (scrollFuncY.smooth) {
18360        scrollFuncY.target.style.scrollBehavior = "auto";
18361        scrollFuncY.smooth = scrollFuncX.smooth = false;
18362      }
18363      inputObserver.enable();
18364    };
18365    vars.onDisable = function() {
18366      _allowNativePanning(target, true);
18367      _removeListener(_win, "resize", onResize);
18368      ScrollTrigger.removeEventListener("refresh", onResize);
18369      inputObserver.kill();
18370    };
18371    vars.lockAxis = vars.lockAxis !== false;
18372    self2 = new Observer(vars);
18373    self2.iOS = _fixIOSBug;
18374    _fixIOSBug && !scrollFuncY() && scrollFuncY(1);
18375    _fixIOSBug && gsap.ticker.add(_passThrough);
18376    onStopDelayedCall = self2._dc;
18377    tween = gsap.to(self2, {
18378      ease: "power4",
18379      paused: true,
18380      inherit: false,
18381      scrollX: normalizeScrollX ? "+=0.1" : "+=0",
18382      scrollY: "+=0.1",
18383      modifiers: {
18384        scrollY: _interruptionTracker(scrollFuncY, scrollFuncY(), function() {
18385          return tween.pause();
18386        })
18387      },
18388      onUpdate: _updateAll,
18389      onComplete: onStopDelayedCall.vars.onComplete
18390    });
18391    return self2;
18392  };
18393  ScrollTrigger.sort = function(func) {
18394    return _triggers.sort(func || function(a, b) {
18395      return (a.vars.refreshPriority || 0) * -1e6 + a.start - (b.start + (b.vars.refreshPriority || 0) * -1e6);
18396    });
18397  };
18398  ScrollTrigger.observe = function(vars) {
18399    return new Observer(vars);
18400  };
18401  ScrollTrigger.normalizeScroll = function(vars) {
18402    if (typeof vars === "undefined") {
18403      return _normalizer;
18404    }
18405    if (vars === true && _normalizer) {
18406      return _normalizer.enable();
18407    }
18408    if (vars === false) {
18409      _normalizer && _normalizer.kill();
18410      _normalizer = vars;
18411      return;
18412    }
18413    var normalizer = vars instanceof Observer ? vars : _getScrollNormalizer(vars);
18414    _normalizer && _normalizer.target === normalizer.target && _normalizer.kill();
18415    _isViewport(normalizer.target) && (_normalizer = normalizer);
18416    return normalizer;
18417  };
18418  ScrollTrigger.core = {
18419    // smaller file size way to leverage in ScrollSmoother and Observer
18420    _getVelocityProp,
18421    _inputObserver,
18422    _scrollers,
18423    _proxies,
18424    bridge: {
18425      // when normalizeScroll sets the scroll position (ss = setScroll)
18426      ss: function ss() {
18427        _lastScrollTime || _dispatch("scrollStart");
18428        _lastScrollTime = _getTime();
18429      },
18430      // a way to get the _refreshing value in Observer
18431      ref: function ref() {
18432        return _refreshing;
18433      }
18434    }
18435  };
18436  _getGSAP() && gsap.registerPlugin(ScrollTrigger);
18437  gsapWithCSS.registerPlugin(ScrollTrigger);
18438  class LoyaltyHero {
18439    constructor() {
18440      this.$el = document.querySelector(".js-loyalty-hero");
18441      if (!this.$el) {
18442        return;
18443      }
18444      this.$stage = this.$el.querySelector(".js-loyalty-hero-stage");
18445      this.$video = this.$el.querySelector(".js-loyalty-hero-video");
18446      this.$logo = this.$el.querySelector(".js-loyalty-hero-logo");
18447      this.$title = this.$el.querySelector(".js-loyalty-hero-title");
18448      this.$cta = this.$el.querySelector(".js-loyalty-hero-cta");
18449      this.animate();
18450    }
18451    animate() {
18452      gsapWithCSS.set(this.$background, { opacity: 0 });
18453      gsapWithCSS.set(this.$logo, { opacity: 0 });
18454      gsapWithCSS.set(this.$title, { opacity: 0 });
18455      const timeline = gsapWithCSS.timeline({
18456        scrollTrigger: {
18457          trigger: this.$el,
18458          scrub: true,
18459          start: "top top",
18460          end: "bottom -250%",
18461          duration: 10
18462        }
18463      });
18464      timeline.fromTo(
18465        this.$stage,
18466        {
18467          yPercent: 0
18468        },
18469        {
18470          yPercent: -50,
18471          duration: 1,
18472          opacity: 0,
18473          ease: "expo.out"
18474        }
18475      );
18476      gsapWithCSS.fromTo(
18477        this.$background,
18478        {
18479          scale: 1.5,
18480          opacity: 0
18481        },
18482        {
18483          opacity: 1,
18484          scale: 1,
18485          duration: 2,
18486          ease: "expo.out"
18487        }
18488      );
18489      gsapWithCSS.fromTo(
18490        this.$logo,
18491        {
18492          y: 50,
18493          opacity: 0
18494        },
18495        {
18496          y: 0,
18497          opacity: 1,
18498          duration: 1,
18499          delay: 0.25,
18500          ease: "expo.out"
18501        }
18502      );
18503      gsapWithCSS.fromTo(
18504        this.$title,
18505        {
18506          y: 50,
18507          opacity: 0
18508        },
18509        {
18510          y: 0,
18511          opacity: 1,
18512          duration: 1,
18513          delay: 0.35,
18514          ease: "expo.out"
18515        }
18516      );
18517      gsapWithCSS.fromTo(
18518        this.$cta,
18519        {
18520          y: 50,
18521          opacity: 0
18522        },
18523        {
18524          y: 0,
18525          opacity: 1,
18526          duration: 1,
18527          delay: 0.45,
18528          ease: "expo.out"
18529        }
18530      );
18531    }
18532  }
18533  gsapWithCSS.registerPlugin(ScrollTrigger);
18534  class LoyaltyDisplays {
18535    constructor() {
18536      this.$el = document.querySelector(".js-loyalty-displays");
18537      if (!this.$el) {
18538        return;
18539      }
18540      this.$container = this.$el.querySelector(".js-loyalty-displays-container");
18541      this.$tabs = this.$el.querySelector(".js-loyalty-displays-tabs");
18542      this.$tabButtons = this.$el.querySelectorAll("button[data-tab]");
18543      this.$tabContents = this.$el.querySelectorAll("figure[data-tab-content]");
18544      this.$tabButtons.forEach(($button) => {
18545        $button.addEventListener("click", () => this.onTabClick($button));
18546      });
18547      this.animate();
18548      this.setupTabs();
18549    }
18550    onTabClick($button) {
18551      this.$tabButtons.forEach(($button2) => {
18552        $button2.classList.remove("is-active");
18553      });
18554      const tab = $button.dataset.tab;
18555      $button.classList.add("is-active");
18556      this.$tabContents.forEach(($content) => {
18557        const contentTab = $content.dataset.tabContent;
18558        if (contentTab === tab) {
18559          $content.classList.add("is-active");
18560          $content.setAttribute("aria-hidden", false);
18561        } else {
18562          $content.classList.remove("is-active");
18563          $content.setAttribute("aria-hidden", true);
18564        }
18565      });
18566    }
18567    setupTabs() {
18568      this.$tabContents.forEach(($content, index) => {
18569        if (index === 0) {
18570          $content.classList.add("is-active");
18571          $content.setAttribute("aria-hidden", false);
18572        } else {
18573          $content.classList.remove("is-active");
18574          $content.setAttribute("aria-hidden", true);
18575        }
18576      });
18577    }
18578    animate() {
18579      const $container = this.$el.querySelector(".js-loyalty-displays-container");
18580      const $tabs = this.$el.querySelector(".js-loyalty-displays-tabs");
18581      const timeline = gsapWithCSS.timeline({
18582        scrollTrigger: {
18583          trigger: this.$el,
18584          scrub: true,
18585          end: "bottom 50%"
18586        }
18587      });
18588      timeline.from($container, {
18589        y: "-100px",
18590        opacity: 50,
18591        scale: 1.5,
18592        ease: "expo.out",
18593        duration: 2
18594      }).from(
18595        $tabs,
18596        {
18597          y: "0",
18598          opacity: 25,
18599          ease: "expo.out",
18600          duration: 2
18601        },
18602        "-=1.5"
18603      );
18604    }
18605  }
18606  gsapWithCSS.registerPlugin(ScrollTrigger);
18607  class LoyaltyEarningRules {
18608    constructor() {
18609      this.$el = document.querySelector(".js-loyalty-earning-rules");
18610      if (!this.$el) {
18611        return;
18612      }
18613      this.$background = this.$el.querySelector(".js-loyalty-earning-rules-bg");
18614      this.$title = this.$el.querySelector(".js-loyalty-earning-rules-title");
18615      this.$description = this.$el.querySelector(
18616        ".js-loyalty-earning-rules-description"
18617      );
18618      this.$stage = this.$el.querySelector(".js-loyalty-earning-rules-stage");
18619      this.$placeholderItems = this.$el.querySelectorAll(
18620        ".js-loyalty-earning-rules-placeholder-item"
18621      );
18622      this.$items = this.$el.querySelectorAll(".js-loyalty-earning-rules-item");
18623      this.$itemsToAnimate = this.$el.querySelectorAll(
18624        ".js-loyalty-earning-rules-item:not(.-no-animate)"
18625      );
18626      this.$itemsNoAnimate = this.$el.querySelectorAll(
18627        ".js-loyalty-earning-rules-item.-no-animate"
18628      );
18629      this.boxWidth = this.$el.querySelector(
18630        ".js-loyalty-earning-rules-box"
18631      ).offsetWidth;
18632      this.animate();
18633    }
18634    animate() {
18635      const introTimeline = gsapWithCSS.timeline({
18636        scrollTrigger: {
18637          trigger: this.$el,
18638          scrub: true,
18639          end: window.innerWidth > 1024 && window.innerHeight > 1e3 ? "+=3000" : "bottom 50%",
18640          pin: window.innerWidth > 1024 && window.innerHeight > 1e3,
18641          anticipatePin: 1
18642        }
18643      });
18644      this.$itemsToAnimate.forEach(($item, index) => {
18645        this.radomiseItem($item, index);
18646      });
18647      this.$itemsNoAnimate.forEach(($item, index) => {
18648        gsapWithCSS.set($item, {
18649          opacity: Math.random() * (1 - 0.2) + 0.2
18650        });
18651      });
18652      introTimeline.fromTo(
18653        this.$stage,
18654        {
18655          scale: 0.75,
18656          opacity: 0.5
18657        },
18658        {
18659          scale: 1,
18660          opacity: 1,
18661          duration: 4,
18662          ease: "expo.out"
18663        },
18664        "-=3.5"
18665      ).fromTo(
18666        this.$placeholderItems,
18667        {
18668          opacity: 0.5,
18669          scale: 0
18670        },
18671        {
18672          opacity: 1,
18673          scale: 1,
18674          duration: 2,
18675          ease: "expo.out"
18676        },
18677        "-=3.5"
18678      ).to(
18679        this.$itemsToAnimate,
18680        {
18681          opacity: 1,
18682          duration: 0.5,
18683          ease: "expo.out"
18684        },
18685        "-=4"
18686      ).to(
18687        this.shuffle(this.$itemsToAnimate),
18688        {
18689          x: 0,
18690          y: 0,
18691          opacity: 1,
18692          stagger: 0.05,
18693          duration: 2,
18694          ease: "expo.out"
18695        },
18696        "-=3"
18697      ).to(
18698        this.$itemsNoAnimate,
18699        {
18700          opacity: 1,
18701          duration: 2,
18702          ease: "expo.out"
18703        },
18704        "-=3"
18705      ).to(
18706        this.$placeholderItems,
18707        {
18708          opacity: 0,
18709          duration: 2,
18710          ease: "expo.out"
18711        },
18712        "-=2"
18713      );
18714    }
18715    radomiseItem($item, index, isExtras = false) {
18716      if (index % 2 === 0) {
18717        gsapWithCSS.set($item, {
18718          x: `-${Math.random() * (this.boxWidth / 2) + this.boxWidth / 2}px`,
18719          y: `${Math.random() * 40 - 20}px`,
18720          opacity: Math.random() * (1 - 0.2) + 0.2
18721        });
18722      } else {
18723        gsapWithCSS.set($item, {
18724          x: `${Math.random() * (this.boxWidth / 2) + this.boxWidth / 2}px`,
18725          y: `${Math.random() * 40 - 20}px`,
18726          opacity: Math.random() * (1 - 0.2) + 0.2
18727        });
18728      }
18729    }
18730    shuffle(nodeList) {
18731      const array = Array.from(nodeList);
18732      for (let i2 = array.length - 1; i2 > 0; i2--) {
18733        const j = Math.floor(Math.random() * (i2 + 1));
18734        [array[i2], array[j]] = [array[j], array[i2]];
18735      }
18736      return array;
18737    }
18738  }
18739  class LoyaltyFeatures {
18740    constructor() {
18741      this.$el = document.querySelector(".js-loyalty-features");
18742      if (!this.$el) {
18743        return;
18744      }
18745    }
18746  }
18747  class LoyaltyLandingPage {
18748    constructor() {
18749      this.$el = document.querySelector(".js-loyalty-landing-page");
18750      if (!this.$el) {
18751        return;
18752      }
18753      this.state = "mobile";
18754      this.$mobileImage = this.$el.querySelector(
18755        ".js-loyalty-landing-page-mobile-image"
18756      );
18757      this.$desktopImage = this.$el.querySelector(
18758        ".js-loyalty-landing-page-desktop-image"
18759      );
18760      this.$toggle = this.$el.querySelector(".js-loyalty-landing-page-toggle");
18761      this.$toggle.addEventListener("click", this.toggle.bind(this));
18762      this.updateState(true);
18763    }
18764    toggle() {
18765      this.$toggle.classList.toggle("is-active");
18766      this.updateState();
18767    }
18768    updateState(firstRun = false) {
18769      if (firstRun) {
18770        this.$mobileImage.classList.remove("is-hidden");
18771        this.$desktopImage.classList.add("is-hidden");
18772        return;
18773      }
18774      if (this.state === "mobile") {
18775        this.$mobileImage.classList.add("is-hidden");
18776        this.$desktopImage.classList.remove("is-hidden");
18777        this.state = "desktop";
18778      } else {
18779        this.$mobileImage.classList.remove("is-hidden");
18780        this.$desktopImage.classList.add("is-hidden");
18781        this.state = "mobile";
18782      }
18783    }
18784  }
18785  class LoyaltyOnSite {
18786    constructor() {
18787      this.$el = document.querySelector(".js-loyalty-on-site");
18788      if (!this.$el) {
18789        return;
18790      }
18791    }
18792  }
18793  gsapWithCSS.registerPlugin(ScrollTrigger);
18794  class LoyaltyRedemptionRules {
18795    constructor() {
18796      this.$el = document.querySelector(".js-loyalty-redemption-rules");
18797      if (!this.$el) {
18798        return;
18799      }
18800      this.$title = this.$el.querySelector(".js-loyalty-redemption-rules-title");
18801      this.$description = this.$el.querySelector(
18802        ".js-loyalty-redemption-rules-description"
18803      );
18804      this.$stage = this.$el.querySelector(".js-loyalty-redemption-rules-stage");
18805      this.$stageItems = this.$stage.querySelectorAll(
18806        ".js-loyalty-redemption-rules-stage-item"
18807      );
18808      this.isMobile = window.innerWidth <= 1024;
18809      this.animate();
18810    }
18811    animate() {
18812      const timelineOptions = {
18813        scrollTrigger: {
18814          trigger: this.$el,
18815          scrub: true,
18816          pin: !this.isMobile,
18817          end: "+=3000"
18818        }
18819      };
18820      if (this.isMobile) {
18821        timelineOptions.scrollTrigger.end = "bottom 100%";
18822      }
18823      const timeline = gsapWithCSS.timeline(timelineOptions);
18824      const offset = 158;
18825      timeline.fromTo(
18826        this.$title,
18827        {
18828          opacity: 0.5
18829        },
18830        {
18831          opacity: 1,
18832          duration: 2,
18833          ease: "expo.out"
18834        }
18835      ).fromTo(
18836        this.$description,
18837        {
18838          opacity: 0.5
18839        },
18840        {
18841          opacity: 1,
18842          duration: 2,
18843          ease: "expo.out"
18844        },
18845        "-=2"
18846      );
18847      if (this.isMobile) {
18848        timeline.fromTo(
18849          this.$stage,
18850          {
18851            opacity: 0
18852          },
18853          {
18854            opacity: 1,
18855            duration: 2,
18856            ease: "expo.out"
18857          },
18858          "-=3"
18859        );
18860      } else {
18861        timeline.fromTo(
18862          this.$stage,
18863          {
18864            opacity: 0.5
18865          },
18866          {
18867            opacity: 1,
18868            duration: 1,
18869            ease: "expo.out"
18870          },
18871          "0"
18872        );
18873        timeline.fromTo(
18874          this.$stage,
18875          {
18876            // move the stage to the center of the screen
18877            x: this.$stage.getBoundingClientRect().width / 2 + offset
18878          },
18879          {
18880            x: -this.$stage.getBoundingClientRect().width / 2 - offset,
18881            duration: 2
18882          },
18883          "-=1.5"
18884        );
18885      }
18886    }
18887  }
18888  class LoyaltyReporting {
18889    constructor() {
18890      this.$el = document.querySelector(".js-loyalty-reporting");
18891      if (!this.$el) {
18892        return;
18893      }
18894      this.$tabButtons = this.$el.querySelectorAll(
18895        ".js-loyalty-reporting-tab-button"
18896      );
18897      this.$galleryImages = this.$el.querySelectorAll(
18898        ".js-loyalty-reporting-gallery img"
18899      );
18900      this.timer = null;
18901      this.selectedIndex = 0;
18902      this.duration = 2e3;
18903      this.$tabButtons.forEach(($tab, index) => {
18904        const $progress = $tab.querySelector(
18905          ".js-loyalty-reporting-tab-button-progress"
18906        );
18907        $progress.addEventListener("animationend", () => {
18908          const $nextTab = this.$tabButtons[index + 1];
18909          if (!$nextTab) {
18910            this.$tabButtons[0].click();
18911          } else {
18912            $nextTab.click();
18913          }
18914        });
18915        $tab.addEventListener("click", () => {
18916          this.hideAllImages();
18917          this.hideAllTabs();
18918          $tab.classList.add("is-active");
18919          this.$galleryImages[index].classList.add("is-active");
18920        });
18921      });
18922    }
18923    hideAllTabs() {
18924      this.$tabButtons.forEach((tab) => {
18925        tab.classList.remove("is-active");
18926      });
18927    }
18928    hideAllImages() {
18929      this.$galleryImages.forEach((image) => {
18930        image.classList.remove("is-active");
18931      });
18932    }
18933  }
18934  gsapWithCSS.registerPlugin(ScrollTrigger);
18935  class LoyaltyVIPTiers {
18936    constructor() {
18937      this.$el = document.querySelector(".js-loyalty-vip-tiers");
18938      if (!this.$el) {
18939        return;
18940      }
18941      this.$title = this.$el.querySelector(".js-loyalty-vip-tiers-title");
18942      this.$description = this.$el.querySelector(
18943        ".js-loyalty-vip-tiers-description"
18944      );
18945      this.$track = this.$el.querySelector(".js-loyalty-vip-tiers-track");
18946      this.$items = this.$el.querySelectorAll(".js-loyalty-vip-tiers-item");
18947      this.$stage = this.$el.querySelector(".js-loyalty-vip-tiers-stage");
18948      this.$tick1 = this.$el.querySelector(".js-loyalty-vip-tiers-item-tick-1");
18949      this.$tick2 = this.$el.querySelector(".js-loyalty-vip-tiers-item-tick-2");
18950      this.$tick3 = this.$el.querySelector(".js-loyalty-vip-tiers-item-tick-3");
18951      this.$tick4 = this.$el.querySelector(".js-loyalty-vip-tiers-item-tick-4");
18952      this.$frame1 = this.$el.querySelector(".js-loyalty-vip-tiers-frame-1");
18953      this.$frame2 = this.$el.querySelector(".js-loyalty-vip-tiers-frame-2");
18954      this.$frame3 = this.$el.querySelector(".js-loyalty-vip-tiers-frame-3");
18955      this.$frame4 = this.$el.querySelector(".js-loyalty-vip-tiers-frame-4");
18956      this.ticks = [this.$tick1, this.$tick2, this.$tick3, this.$tick4];
18957      this.frames = [this.$frame1, this.$frame2, this.$frame3, this.$frame4];
18958      this.animate();
18959    }
18960    animate() {
18961      const timeline = gsapWithCSS.timeline({
18962        scrollTrigger: {
18963          trigger: this.$el,
18964          pin: window.innerWidth > 1024,
18965          scrub: true,
18966          end: window.innerWidth > 1024 ? "+=500" : void 0,
18967          anticipatePin: 1
18968        }
18969      });
18970      timeline.fromTo(
18971        this.$track,
18972        {
18973          height: "0%"
18974        },
18975        {
18976          delay: 10,
18977          height: "100%",
18978          duration: 40,
18979          ease: "expo.out"
18980        }
18981      ).fromTo(
18982        this.ticks,
18983        {
18984          scale: 0
18985        },
18986        {
18987          scale: 1,
18988          duration: 10,
18989          stagger: 5,
18990          ease: "expo.out"
18991        },
18992        "-=40"
18993      ).fromTo(
18994        this.frames,
18995        {
18996          opacity: 0
18997        },
18998        {
18999          opacity: 1,
19000          duration: 10,
19001          stagger: 5,
19002          ease: "expo.out"
19003        },
19004        "-=40"
19005      );
19006    }
19007  }
19008  class LoyaltySlideshow {
19009    constructor() {
19010      const $els = document.querySelectorAll(".js-loyalty-slideshow-slider");
19011      $els.forEach(($el) => new Carousel$3($el));
19012    }
19013  }
19014  let Carousel$3 = class Carousel {
19015    constructor($el) {
19016      this.$el = $el;
19017      this.carousel = new Flickity(this.$el, {
19018        cellAlign: "center",
19019        prevNextButtons: false,
19020        pageDots: true,
19021        wrapAround: true,
19022        imagesLoaded: true,
19023        draggable: false
19024      });
19025    }
19026  };
19027  function detectIE() {
19028    const isIE = (
19029      /*@cc_on!@*/
19030      !!document.documentMode
19031    );
19032    const isEdge = !isIE && !!window.StyleMedia;
19033    if (isIE) {
19034      document.body.classList.add("ie-11");
19035    }
19036    if (isEdge) {
19037      document.body.classList.add("ie-edge");
19038    }
19039  }
19040  function enableJS() {
19041    document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/, "");
19042  }
19043  class CampaignQuotes {
19044    constructor() {
19045      const $els = document.querySelectorAll(".js-campaign-quotes");
19046      $els.forEach(($el) => new Carousel$2($el));
19047    }
19048  }
19049  let Carousel$2 = class Carousel {
19050    constructor($el) {
19051      this.flickity = new Flickity($el.querySelector(".js-carousel"), {
19052        imagesLoaded: true,
19053        prevNextButtons: false,
19054        pageDots: false,
19055        contain: "true",
19056        cellAlign: "center",
19057        groupCells: true
19058      });
19059      $el.querySelector(".js-next").addEventListener("click", (e) => {
19060        e.preventDefault();
19061        this.flickity.next();
19062      });
19063      $el.querySelector(".js-prev").addEventListener("click", (e) => {
19064        e.preventDefault();
19065        this.flickity.previous();
19066      });
19067    }
19068  };
19069  class Horizontal {
19070    constructor() {
19071      const $els = document.querySelectorAll(".js-horizontal");
19072      $els.forEach(($el) => new ReadMore($el));
19073    }
19074  }
19075  class ReadMore {
19076    constructor($el) {
19077      this.$text = $el.querySelector(".js-text");
19078      this.$readMore = $el.querySelector(".js-read-more");
19079      this.$readLess = $el.querySelector(".js-read-less");
19080      this.$readMore.addEventListener("click", (e) => {
19081        e.preventDefault();
19082        this.$text.ariaExpanded = true;
19083      });
19084      this.$readLess.addEventListener("click", (e) => {
19085        e.preventDefault();
19086        this.$text.ariaExpanded = false;
19087      });
19088    }
19089  }
19090  class LongformContent {
19091    constructor() {
19092      const $els = document.querySelectorAll(".js-longform-content");
19093      $els.forEach(($el) => new InlineVideo$1($el));
19094    }
19095  }
19096  let InlineVideo$1 = class InlineVideo {
19097    constructor($el) {
19098      this.$video = $el.querySelector(".js-video");
19099      this.$play = $el.querySelector(".js-play");
19100      if (!this.$play) return;
19101      this.$play.addEventListener("click", (e) => {
19102        e.preventDefault();
19103        this.$play.classList.add("hidden");
19104        this.$video.classList.remove("hidden");
19105        this.$video.firstChild.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}', "*");
19106      });
19107    }
19108  };
19109  class InspirationGallery {
19110    constructor() {
19111      const $els = document.querySelectorAll(".js-inspiration-gallery");
19112      $els.forEach(($el) => new Carousel$1($el));
19113    }
19114  }
19115  let Carousel$1 = class Carousel {
19116    constructor($el) {
19117      var _a, _b;
19118      this.activeClass = "is-active";
19119      this.$tabs = $el.querySelectorAll(".js-tab");
19120      this.$carousel = $el.querySelector(".js-carousel");
19121      this.$nextBtn = $el.querySelector(".js-next-btn");
19122      this.$prevBtn = $el.querySelector(".js-prev-btn");
19123      this.flickity = new Flickity(this.$carousel, {
19124        imagesLoaded: true,
19125        prevNextButtons: false,
19126        pageDots: false,
19127        percentPosition: false,
19128        wrapAround: true
19129      });
19130      this.flickity.on("select", this.onSelect.bind(this));
19131      (_a = this.$nextBtn) == null ? void 0 : _a.addEventListener("click", this.next.bind(this));
19132      (_b = this.$prevBtn) == null ? void 0 : _b.addEventListener("click", this.prev.bind(this));
19133      this.$tabs.forEach(($tab, index) => {
19134        $tab.addEventListener("click", this.goToSlide.bind(this, $tab, index));
19135      });
19136    }
19137    /**
19138     * @function next
19139     * @param {Event} e
19140     * @returns void
19141     * Goes to next slide in carousel
19142     */
19143    next(e) {
19144      if (!this.flickity) return;
19145      e.preventDefault();
19146      this.flickity.next();
19147    }
19148    /**
19149     * @function prev
19150     * @param {Event} e
19151     * @returns void
19152     * Goes to previous slide in carousel
19153     */
19154    prev(e) {
19155      if (!this.flickity) return;
19156      e.preventDefault();
19157      this.flickity.previous();
19158    }
19159    /**
19160     * @function goToSlide
19161     * @param {HTMLButtonElement} $tab tab that has been clicked
19162     * @param {Number} index slide index
19163     * @returns void
19164     * Goes to specific slide in carousel based on index
19165     */
19166    goToSlide($tab, index = 0) {
19167      if (!this.flickity || !$tab) return;
19168      this.$tabs.forEach(($tab2) => $tab2.ariaSelected = false);
19169      $tab.ariaSelected = true;
19170      this.flickity.select(index);
19171    }
19172    /**
19173     * @function onSelect
19174     * @param {Number} index
19175     * Fired when the Flickity slide changes
19176     */
19177    onSelect(index) {
19178      this.$tabs.forEach(($tab) => $tab.ariaSelected = false);
19179      this.$tabs[index] && (this.$tabs[index].ariaSelected = true);
19180    }
19181  };
19182  class StepperStickyNav {
19183    constructor() {
19184      document.querySelectorAll(".js-stepper-sticky-nav").forEach(($el) => new StepsElement($el));
19185    }
19186  }
19187  class StepsElement {
19188    constructor($el) {
19189      __publicField(this, "MIN_DESKTOP_WIDTH", 1024);
19190      this.$el = $el;
19191      this.$progressBar = this.$el.querySelector(".js-steps-progress-bar");
19192      this.$container = this.$el.querySelector(".js-steps-progress-container");
19193      this.$steps = [...this.$el.querySelectorAll(".js-steps-bar-step")];
19194      this.buildLeftPoints();
19195      window.addEventListener("scroll", this.scroll.bind(this));
19196      window.addEventListener("resize", this.resize.bind(this));
19197    }
19198    buildLeftPoints() {
19199      const { width } = this.$container.getBoundingClientRect();
19200      const { offsetWidth } = document.body;
19201      this.leftPoints = this.$steps.map(($step) => {
19202        const { left } = $step.getBoundingClientRect();
19203        let percentage = left / offsetWidth * 100;
19204        if (window.innerWidth < this.MIN_DESKTOP_WIDTH) {
19205          percentage = left / (width + offsetWidth) * 100;
19206        }
19207        const el = document.getElementById($step.href.split("#")[1]);
19208        const y = el.offsetTop;
19209        return {
19210          $step,
19211          el,
19212          y,
19213          percentage
19214        };
19215      });
19216    }
19217    scroll() {
19218      var _a, _b;
19219      const viewportTop = document.body.scrollTop + document.documentElement.scrollTop + window.innerHeight;
19220      for (const point of this.leftPoints) {
19221        point.$step.toggleAttribute("data-passed", viewportTop >= point.y);
19222      }
19223      for (const [i2, point] of this.leftPoints.entries()) {
19224        const nextY = ((_a = this.leftPoints[i2 + 1]) == null ? void 0 : _a.y) || Infinity;
19225        point.$step.ariaSelected = viewportTop >= point.y && viewportTop < nextY;
19226      }
19227      const lastIndex = this.leftPoints.findLastIndex((point) => viewportTop >= point.y);
19228      const percentageBar = ((_b = this.leftPoints[lastIndex + 1]) == null ? void 0 : _b.percentage) ?? 100;
19229      const percentageOffset = this.leftPoints[lastIndex].percentage;
19230      this.$progressBar.style.width = `${percentageBar}%`;
19231      if (window.innerWidth < this.MIN_DESKTOP_WIDTH) {
19232        this.$container.style.transform = `translateX(-${percentageOffset}%)`;
19233      }
19234    }
19235    resize() {
19236      this.$container.style.transform = `translateX(0)`;
19237      this.buildLeftPoints();
19238    }
19239  }
19240  class Stats {
19241    constructor() {
19242      const $els = document.querySelectorAll(".js-stats");
19243      $els.forEach(($el) => new Carousel($el));
19244    }
19245  }
19246  class Carousel {
19247    constructor($el) {
19248      this.flickity = new Flickity($el.querySelector(".js-carousel"), {
19249        imagesLoaded: true,
19250        prevNextButtons: false,
19251        pageDots: false,
19252        contain: "true",
19253        cellAlign: "center",
19254        groupCells: true,
19255        watchCSS: true
19256      });
19257      $el.querySelector(".js-next").addEventListener("click", (e) => {
19258        e.preventDefault();
19259        this.flickity.next();
19260      });
19261      $el.querySelector(".js-prev").addEventListener("click", (e) => {
19262        e.preventDefault();
19263        this.flickity.previous();
19264      });
19265    }
19266  }
19267  class TextCalloutSections {
19268    constructor() {
19269      this.$el = document.querySelector(".js-text-callout-sections");
19270      if (!this.$el) {
19271        return;
19272      }
19273      this.$loadMoreButton = this.$el.querySelector(".js-load-more");
19274      this.$grid = this.$el.querySelector(".js-grid");
19275      if (!this.$loadMoreButton || !this.$grid) {
19276        return;
19277      }
19278      this.$loadMoreButton.addEventListener("click", this.loadMore.bind(this));
19279    }
19280    loadMore() {
19281      this.$grid.classList.add("done");
19282      this.$loadMoreButton.classList.add("hidden");
19283    }
19284  }
19285  class ProductFeaturedImage {
19286    constructor() {
19287      const $els = document.querySelectorAll(".js-qr-product-featured-image");
19288      $els.forEach(($el) => new InlineVideo($el));
19289    }
19290  }
19291  class InlineVideo {
19292    constructor($el) {
19293      this.$video = $el.querySelector(".js-video");
19294      this.$play = $el.querySelector(".js-play");
19295      if (!this.$play) return;
19296      this.$play.addEventListener("click", (e) => {
19297        e.preventDefault();
19298        this.$play.classList.add("hidden");
19299        this.$video.classList.remove("hidden");
19300        this.$video.firstChild.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}', "*");
19301      });
19302    }
19303  }
19304  class App {
19305    constructor() {
19306      detectIE();
19307      enableJS();
19308      new Accordion();
19309      new Analytics();
19310      new OkendoIntercom();
19311      new Tilt();
19312      new Anchor();
19313      new Modal();
19314      new AccordionContent();
19315      new Animations();
19316      new ArticleListing();
19317      new BecomePartnerForm();
19318      new BookDemo();
19319      new BookDemoForm();
19320      new BookNowForm();
19321      new Callouts();
19322      new CarouselContent();
19323      new CaseStudiesListing();
19324      new ClientTestimonialGrid();
19325      new Countdown();
19326      new CustomerImpact();
19327      new CustomerStoryVideos();
19328      new FeaturedMerchants();
19329      new Hamburger();
19330      new HiringProcess();
19331      new InspirationListing();
19332      new JoinUs();
19333      new LandingPageHero();
19334      new LogoTicker();
19335      new MobileMenu();
19336      new PartnerBenefits();
19337      new PartnershipSpotlight();
19338      new PlatformAdvantages();
19339      new Pricing();
19340      new ProductDemo();
19341      new ProductFeaturedIntegrations();
19342      new ProductHero();
19343      new ProductImageGallery();
19344      new ProductUpdatesHighlights();
19345      new ProductUpdatesAll();
19346      new RelatedCustomerStories();
19347      new ResourcesCarousel();
19348      new SocialProof();
19349      new SocialProofBoxes();
19350      new Steps();
19351      new TabbedContent();
19352      new TimelineCarousel();
19353      new WatchOurDemos();
19354      new WebinarsCarousel();
19355      new WhatsNew();
19356      new WYSIWYG();
19357      new HeroVideoInline();
19358      new VideoTestimonials();
19359      new CampaignQuotes();
19360      new KeyTakeaways();
19361      new Horizontal();
19362      new LongformContent();
19363      new InspirationGallery();
19364      new StepperStickyNav();
19365      new Stats();
19366      new TextCalloutSections();
19367      new ProductFeaturedImage();
19368      new LoyaltyHero();
19369      new LoyaltyDisplays();
19370      new LoyaltyEarningRules();
19371      new LoyaltyFeatures();
19372      new LoyaltyLandingPage();
19373      new LoyaltyOnSite();
19374      new LoyaltyRedemptionRules();
19375      new LoyaltyReporting();
19376      new LoyaltyVIPTiers();
19377      new LoyaltySlideshow();
19378    }
19379  }
19380  document.addEventListener("DOMContentLoaded", () => new App());
19381})();
19382//# sourceMappingURL=index-legacy.js.map

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