diff --git a/.vite/deps/@fancyapps_ui.js b/.vite/deps/@fancyapps_ui.js
new file mode 100644
index 0000000..7cf70ed
--- /dev/null
+++ b/.vite/deps/@fancyapps_ui.js
@@ -0,0 +1,3081 @@
+import "./chunk-5WRI5ZAA.js";
+
+// node_modules/@fancyapps/ui/dist/index.esm.js
+var t = (t2, e2 = 1e4) => (t2 = parseFloat(t2 + "") || 0, Math.round((t2 + Number.EPSILON) * e2) / e2);
+var e = function(t2) {
+ if (!(t2 && t2 instanceof Element && t2.offsetParent)) return false;
+ const e2 = t2.scrollHeight > t2.clientHeight, i2 = window.getComputedStyle(t2).overflowY, n2 = -1 !== i2.indexOf("hidden"), s2 = -1 !== i2.indexOf("visible");
+ return e2 && !n2 && !s2;
+};
+var i = function(t2, n2 = void 0) {
+ return !(!t2 || t2 === document.body || n2 && t2 === n2) && (e(t2) ? t2 : i(t2.parentElement, n2));
+};
+var n = function(t2) {
+ var e2 = new DOMParser().parseFromString(t2, "text/html").body;
+ if (e2.childElementCount > 1) {
+ for (var i2 = document.createElement("div"); e2.firstChild; ) i2.appendChild(e2.firstChild);
+ return i2;
+ }
+ return e2.firstChild;
+};
+var s = (t2) => `${t2 || ""}`.split(" ").filter((t3) => !!t3);
+var o = (t2, e2, i2) => {
+ t2 && s(e2).forEach((e3) => {
+ t2.classList.toggle(e3, i2 || false);
+ });
+};
+var a = class {
+ constructor(t2) {
+ Object.defineProperty(this, "pageX", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "pageY", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "clientX", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "clientY", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "id", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "time", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "nativePointer", { enumerable: true, configurable: true, writable: true, value: void 0 }), this.nativePointer = t2, this.pageX = t2.pageX, this.pageY = t2.pageY, this.clientX = t2.clientX, this.clientY = t2.clientY, this.id = self.Touch && t2 instanceof Touch ? t2.identifier : -1, this.time = Date.now();
+ }
+};
+var r = { passive: false };
+var l = class {
+ constructor(t2, { start: e2 = () => true, move: i2 = () => {
+ }, end: n2 = () => {
+ } }) {
+ Object.defineProperty(this, "element", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "startCallback", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "moveCallback", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "endCallback", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "currentPointers", { enumerable: true, configurable: true, writable: true, value: [] }), Object.defineProperty(this, "startPointers", { enumerable: true, configurable: true, writable: true, value: [] }), this.element = t2, this.startCallback = e2, this.moveCallback = i2, this.endCallback = n2;
+ for (const t3 of ["onPointerStart", "onTouchStart", "onMove", "onTouchEnd", "onPointerEnd", "onWindowBlur"]) this[t3] = this[t3].bind(this);
+ this.element.addEventListener("mousedown", this.onPointerStart, r), this.element.addEventListener("touchstart", this.onTouchStart, r), this.element.addEventListener("touchmove", this.onMove, r), this.element.addEventListener("touchend", this.onTouchEnd), this.element.addEventListener("touchcancel", this.onTouchEnd);
+ }
+ onPointerStart(t2) {
+ if (!t2.buttons || 0 !== t2.button) return;
+ const e2 = new a(t2);
+ this.currentPointers.some((t3) => t3.id === e2.id) || this.triggerPointerStart(e2, t2) && (window.addEventListener("mousemove", this.onMove), window.addEventListener("mouseup", this.onPointerEnd), window.addEventListener("blur", this.onWindowBlur));
+ }
+ onTouchStart(t2) {
+ for (const e2 of Array.from(t2.changedTouches || [])) this.triggerPointerStart(new a(e2), t2);
+ window.addEventListener("blur", this.onWindowBlur);
+ }
+ onMove(t2) {
+ const e2 = this.currentPointers.slice(), i2 = "changedTouches" in t2 ? Array.from(t2.changedTouches || []).map((t3) => new a(t3)) : [new a(t2)], n2 = [];
+ for (const t3 of i2) {
+ const e3 = this.currentPointers.findIndex((e4) => e4.id === t3.id);
+ e3 < 0 || (n2.push(t3), this.currentPointers[e3] = t3);
+ }
+ n2.length && this.moveCallback(t2, this.currentPointers.slice(), e2);
+ }
+ onPointerEnd(t2) {
+ t2.buttons > 0 && 0 !== t2.button || (this.triggerPointerEnd(t2, new a(t2)), window.removeEventListener("mousemove", this.onMove), window.removeEventListener("mouseup", this.onPointerEnd), window.removeEventListener("blur", this.onWindowBlur));
+ }
+ onTouchEnd(t2) {
+ for (const e2 of Array.from(t2.changedTouches || [])) this.triggerPointerEnd(t2, new a(e2));
+ }
+ triggerPointerStart(t2, e2) {
+ return !!this.startCallback(e2, t2, this.currentPointers.slice()) && (this.currentPointers.push(t2), this.startPointers.push(t2), true);
+ }
+ triggerPointerEnd(t2, e2) {
+ const i2 = this.currentPointers.findIndex((t3) => t3.id === e2.id);
+ i2 < 0 || (this.currentPointers.splice(i2, 1), this.startPointers.splice(i2, 1), this.endCallback(t2, e2, this.currentPointers.slice()));
+ }
+ onWindowBlur() {
+ this.clear();
+ }
+ clear() {
+ for (; this.currentPointers.length; ) {
+ const t2 = this.currentPointers[this.currentPointers.length - 1];
+ this.currentPointers.splice(this.currentPointers.length - 1, 1), this.startPointers.splice(this.currentPointers.length - 1, 1), this.endCallback(new Event("touchend", { bubbles: true, cancelable: true, clientX: t2.clientX, clientY: t2.clientY }), t2, this.currentPointers.slice());
+ }
+ }
+ stop() {
+ this.element.removeEventListener("mousedown", this.onPointerStart, r), this.element.removeEventListener("touchstart", this.onTouchStart, r), this.element.removeEventListener("touchmove", this.onMove, r), this.element.removeEventListener("touchend", this.onTouchEnd), this.element.removeEventListener("touchcancel", this.onTouchEnd), window.removeEventListener("mousemove", this.onMove), window.removeEventListener("mouseup", this.onPointerEnd), window.removeEventListener("blur", this.onWindowBlur);
+ }
+};
+function c(t2, e2) {
+ return e2 ? Math.sqrt(Math.pow(e2.clientX - t2.clientX, 2) + Math.pow(e2.clientY - t2.clientY, 2)) : 0;
+}
+function h(t2, e2) {
+ return e2 ? { clientX: (t2.clientX + e2.clientX) / 2, clientY: (t2.clientY + e2.clientY) / 2 } : t2;
+}
+var d = (t2) => "object" == typeof t2 && null !== t2 && t2.constructor === Object && "[object Object]" === Object.prototype.toString.call(t2);
+var u = (t2, ...e2) => {
+ const i2 = e2.length;
+ for (let n2 = 0; n2 < i2; n2++) {
+ const i3 = e2[n2] || {};
+ Object.entries(i3).forEach(([e3, i4]) => {
+ const n3 = Array.isArray(i4) ? [] : {};
+ t2[e3] || Object.assign(t2, { [e3]: n3 }), d(i4) ? Object.assign(t2[e3], u(n3, i4)) : Array.isArray(i4) ? Object.assign(t2, { [e3]: [...i4] }) : Object.assign(t2, { [e3]: i4 });
+ });
+ }
+ return t2;
+};
+var p = function(t2, e2) {
+ return t2.split(".").reduce((t3, e3) => "object" == typeof t3 ? t3[e3] : void 0, e2);
+};
+var f = class {
+ constructor(t2 = {}) {
+ Object.defineProperty(this, "options", { enumerable: true, configurable: true, writable: true, value: t2 }), Object.defineProperty(this, "events", { enumerable: true, configurable: true, writable: true, value: /* @__PURE__ */ new Map() }), this.setOptions(t2);
+ for (const t3 of Object.getOwnPropertyNames(Object.getPrototypeOf(this))) t3.startsWith("on") && "function" == typeof this[t3] && (this[t3] = this[t3].bind(this));
+ }
+ setOptions(t2) {
+ this.options = t2 ? u({}, this.constructor.defaults, t2) : {};
+ for (const [t3, e2] of Object.entries(this.option("on") || {})) this.on(t3, e2);
+ }
+ option(t2, ...e2) {
+ let i2 = p(t2, this.options);
+ return i2 && "function" == typeof i2 && (i2 = i2.call(this, this, ...e2)), i2;
+ }
+ optionFor(t2, e2, i2, ...n2) {
+ let s2 = p(e2, t2);
+ var o2;
+ "string" != typeof (o2 = s2) || isNaN(o2) || isNaN(parseFloat(o2)) || (s2 = parseFloat(s2)), "true" === s2 && (s2 = true), "false" === s2 && (s2 = false), s2 && "function" == typeof s2 && (s2 = s2.call(this, this, t2, ...n2));
+ let a2 = p(e2, this.options);
+ return a2 && "function" == typeof a2 ? s2 = a2.call(this, this, t2, ...n2, s2) : void 0 === s2 && (s2 = a2), void 0 === s2 ? i2 : s2;
+ }
+ cn(t2) {
+ const e2 = this.options.classes;
+ return e2 && e2[t2] || "";
+ }
+ localize(t2, e2 = []) {
+ t2 = String(t2).replace(/\{\{(\w+).?(\w+)?\}\}/g, (t3, e3, i2) => {
+ let n2 = "";
+ return i2 ? n2 = this.option(`${e3[0] + e3.toLowerCase().substring(1)}.l10n.${i2}`) : e3 && (n2 = this.option(`l10n.${e3}`)), n2 || (n2 = t3), n2;
+ });
+ for (let i2 = 0; i2 < e2.length; i2++) t2 = t2.split(e2[i2][0]).join(e2[i2][1]);
+ return t2 = t2.replace(/\{\{(.*?)\}\}/g, (t3, e3) => e3);
+ }
+ on(t2, e2) {
+ let i2 = [];
+ "string" == typeof t2 ? i2 = t2.split(" ") : Array.isArray(t2) && (i2 = t2), this.events || (this.events = /* @__PURE__ */ new Map()), i2.forEach((t3) => {
+ let i3 = this.events.get(t3);
+ i3 || (this.events.set(t3, []), i3 = []), i3.includes(e2) || i3.push(e2), this.events.set(t3, i3);
+ });
+ }
+ off(t2, e2) {
+ let i2 = [];
+ "string" == typeof t2 ? i2 = t2.split(" ") : Array.isArray(t2) && (i2 = t2), i2.forEach((t3) => {
+ const i3 = this.events.get(t3);
+ if (Array.isArray(i3)) {
+ const t4 = i3.indexOf(e2);
+ t4 > -1 && i3.splice(t4, 1);
+ }
+ });
+ }
+ emit(t2, ...e2) {
+ [...this.events.get(t2) || []].forEach((t3) => t3(this, ...e2)), "*" !== t2 && this.emit("*", t2, ...e2);
+ }
+};
+Object.defineProperty(f, "version", { enumerable: true, configurable: true, writable: true, value: "5.0.36" }), Object.defineProperty(f, "defaults", { enumerable: true, configurable: true, writable: true, value: {} });
+var g = class extends f {
+ constructor(t2 = {}) {
+ super(t2), Object.defineProperty(this, "plugins", { enumerable: true, configurable: true, writable: true, value: {} });
+ }
+ attachPlugins(t2 = {}) {
+ const e2 = /* @__PURE__ */ new Map();
+ for (const [i2, n2] of Object.entries(t2)) {
+ const t3 = this.option(i2), s2 = this.plugins[i2];
+ s2 || false === t3 ? s2 && false === t3 && (s2.detach(), delete this.plugins[i2]) : e2.set(i2, new n2(this, t3 || {}));
+ }
+ for (const [t3, i2] of e2) this.plugins[t3] = i2, i2.attach();
+ }
+ detachPlugins(t2) {
+ t2 = t2 || Object.keys(this.plugins);
+ for (const e2 of t2) {
+ const t3 = this.plugins[e2];
+ t3 && t3.detach(), delete this.plugins[e2];
+ }
+ return this.emit("detachPlugins"), this;
+ }
+};
+var m;
+!function(t2) {
+ t2[t2.Init = 0] = "Init", t2[t2.Error = 1] = "Error", t2[t2.Ready = 2] = "Ready", t2[t2.Panning = 3] = "Panning", t2[t2.Mousemove = 4] = "Mousemove", t2[t2.Destroy = 5] = "Destroy";
+}(m || (m = {}));
+var v = ["a", "b", "c", "d", "e", "f"];
+var b = { PANUP: "Move up", PANDOWN: "Move down", PANLEFT: "Move left", PANRIGHT: "Move right", ZOOMIN: "Zoom in", ZOOMOUT: "Zoom out", TOGGLEZOOM: "Toggle zoom level", TOGGLE1TO1: "Toggle zoom level", ITERATEZOOM: "Toggle zoom level", ROTATECCW: "Rotate counterclockwise", ROTATECW: "Rotate clockwise", FLIPX: "Flip horizontally", FLIPY: "Flip vertically", FITX: "Fit horizontally", FITY: "Fit vertically", RESET: "Reset", TOGGLEFS: "Toggle fullscreen" };
+var y = { content: null, width: "auto", height: "auto", panMode: "drag", touch: true, dragMinThreshold: 3, lockAxis: false, mouseMoveFactor: 1, mouseMoveFriction: 0.12, zoom: true, pinchToZoom: true, panOnlyZoomed: "auto", minScale: 1, maxScale: 2, friction: 0.25, dragFriction: 0.35, decelFriction: 0.05, click: "toggleZoom", dblClick: false, wheel: "zoom", wheelLimit: 7, spinner: true, bounds: "auto", infinite: false, rubberband: true, bounce: true, maxVelocity: 75, transformParent: false, classes: { content: "f-panzoom__content", isLoading: "is-loading", canZoomIn: "can-zoom_in", canZoomOut: "can-zoom_out", isDraggable: "is-draggable", isDragging: "is-dragging", inFullscreen: "in-fullscreen", htmlHasFullscreen: "with-panzoom-in-fullscreen" }, l10n: b };
+var w = ' ';
+var x = '
' + w + w + "
";
+var E = (t2) => t2 && null !== t2 && t2 instanceof Element && "nodeType" in t2;
+var S = (t2, e2) => {
+ t2 && s(e2).forEach((e3) => {
+ t2.classList.remove(e3);
+ });
+};
+var P = (t2, e2) => {
+ t2 && s(e2).forEach((e3) => {
+ t2.classList.add(e3);
+ });
+};
+var C = { a: 1, b: 0, c: 0, d: 1, e: 0, f: 0 };
+var T = 1e5;
+var M = 1e4;
+var O = "mousemove";
+var A = "drag";
+var L = "content";
+var z = "auto";
+var R = null;
+var k = null;
+var I = class _I extends g {
+ get fits() {
+ return this.contentRect.width - this.contentRect.fitWidth < 1 && this.contentRect.height - this.contentRect.fitHeight < 1;
+ }
+ get isTouchDevice() {
+ return null === k && (k = window.matchMedia("(hover: none)").matches), k;
+ }
+ get isMobile() {
+ return null === R && (R = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent)), R;
+ }
+ get panMode() {
+ return this.options.panMode !== O || this.isTouchDevice ? A : O;
+ }
+ get panOnlyZoomed() {
+ const t2 = this.options.panOnlyZoomed;
+ return t2 === z ? this.isTouchDevice : t2;
+ }
+ get isInfinite() {
+ return this.option("infinite");
+ }
+ get angle() {
+ return 180 * Math.atan2(this.current.b, this.current.a) / Math.PI || 0;
+ }
+ get targetAngle() {
+ return 180 * Math.atan2(this.target.b, this.target.a) / Math.PI || 0;
+ }
+ get scale() {
+ const { a: t2, b: e2 } = this.current;
+ return Math.sqrt(t2 * t2 + e2 * e2) || 1;
+ }
+ get targetScale() {
+ const { a: t2, b: e2 } = this.target;
+ return Math.sqrt(t2 * t2 + e2 * e2) || 1;
+ }
+ get minScale() {
+ return this.option("minScale") || 1;
+ }
+ get fullScale() {
+ const { contentRect: t2 } = this;
+ return t2.fullWidth / t2.fitWidth || 1;
+ }
+ get maxScale() {
+ return this.fullScale * (this.option("maxScale") || 1) || 1;
+ }
+ get coverScale() {
+ const { containerRect: t2, contentRect: e2 } = this, i2 = Math.max(t2.height / e2.fitHeight, t2.width / e2.fitWidth) || 1;
+ return Math.min(this.fullScale, i2);
+ }
+ get isScaling() {
+ return Math.abs(this.targetScale - this.scale) > 1e-5 && !this.isResting;
+ }
+ get isContentLoading() {
+ const t2 = this.content;
+ return !!(t2 && t2 instanceof HTMLImageElement) && !t2.complete;
+ }
+ get isResting() {
+ if (this.isBouncingX || this.isBouncingY) return false;
+ for (const t2 of v) {
+ const e2 = "e" == t2 || "f" === t2 ? 1e-4 : 1e-5;
+ if (Math.abs(this.target[t2] - this.current[t2]) > e2) return false;
+ }
+ return !(!this.ignoreBounds && !this.checkBounds().inBounds);
+ }
+ constructor(t2, e2 = {}, i2 = {}) {
+ var s2;
+ if (super(e2), Object.defineProperty(this, "pointerTracker", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "resizeObserver", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "updateTimer", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "clickTimer", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "rAF", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "isTicking", { enumerable: true, configurable: true, writable: true, value: false }), Object.defineProperty(this, "ignoreBounds", { enumerable: true, configurable: true, writable: true, value: false }), Object.defineProperty(this, "isBouncingX", { enumerable: true, configurable: true, writable: true, value: false }), Object.defineProperty(this, "isBouncingY", { enumerable: true, configurable: true, writable: true, value: false }), Object.defineProperty(this, "clicks", { enumerable: true, configurable: true, writable: true, value: 0 }), Object.defineProperty(this, "trackingPoints", { enumerable: true, configurable: true, writable: true, value: [] }), Object.defineProperty(this, "pwt", { enumerable: true, configurable: true, writable: true, value: 0 }), Object.defineProperty(this, "cwd", { enumerable: true, configurable: true, writable: true, value: 0 }), Object.defineProperty(this, "pmme", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "friction", { enumerable: true, configurable: true, writable: true, value: 0 }), Object.defineProperty(this, "state", { enumerable: true, configurable: true, writable: true, value: m.Init }), Object.defineProperty(this, "isDragging", { enumerable: true, configurable: true, writable: true, value: false }), Object.defineProperty(this, "container", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "content", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "spinner", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "containerRect", { enumerable: true, configurable: true, writable: true, value: { width: 0, height: 0, innerWidth: 0, innerHeight: 0 } }), Object.defineProperty(this, "contentRect", { enumerable: true, configurable: true, writable: true, value: { top: 0, right: 0, bottom: 0, left: 0, fullWidth: 0, fullHeight: 0, fitWidth: 0, fitHeight: 0, width: 0, height: 0 } }), Object.defineProperty(this, "dragStart", { enumerable: true, configurable: true, writable: true, value: { x: 0, y: 0, top: 0, left: 0, time: 0 } }), Object.defineProperty(this, "dragOffset", { enumerable: true, configurable: true, writable: true, value: { x: 0, y: 0, time: 0 } }), Object.defineProperty(this, "current", { enumerable: true, configurable: true, writable: true, value: Object.assign({}, C) }), Object.defineProperty(this, "target", { enumerable: true, configurable: true, writable: true, value: Object.assign({}, C) }), Object.defineProperty(this, "velocity", { enumerable: true, configurable: true, writable: true, value: { a: 0, b: 0, c: 0, d: 0, e: 0, f: 0 } }), Object.defineProperty(this, "lockedAxis", { enumerable: true, configurable: true, writable: true, value: false }), !t2) throw new Error("Container Element Not Found");
+ this.container = t2, this.initContent(), this.attachPlugins(Object.assign(Object.assign({}, _I.Plugins), i2)), this.emit("attachPlugins"), this.emit("init");
+ const o2 = this.content;
+ if (o2.addEventListener("load", this.onLoad), o2.addEventListener("error", this.onError), this.isContentLoading) {
+ if (this.option("spinner")) {
+ t2.classList.add(this.cn("isLoading"));
+ const e3 = n(x);
+ !t2.contains(o2) || o2.parentElement instanceof HTMLPictureElement ? this.spinner = t2.appendChild(e3) : this.spinner = (null === (s2 = o2.parentElement) || void 0 === s2 ? void 0 : s2.insertBefore(e3, o2)) || null;
+ }
+ this.emit("beforeLoad");
+ } else queueMicrotask(() => {
+ this.enable();
+ });
+ }
+ initContent() {
+ const { container: t2 } = this, e2 = this.cn(L);
+ let i2 = this.option(L) || t2.querySelector(`.${e2}`);
+ if (i2 || (i2 = t2.querySelector("img,picture") || t2.firstElementChild, i2 && P(i2, e2)), i2 instanceof HTMLPictureElement && (i2 = i2.querySelector("img")), !i2) throw new Error("No content found");
+ this.content = i2;
+ }
+ onLoad() {
+ const { spinner: t2, container: e2, state: i2 } = this;
+ t2 && (t2.remove(), this.spinner = null), this.option("spinner") && e2.classList.remove(this.cn("isLoading")), this.emit("afterLoad"), i2 === m.Init ? this.enable() : this.updateMetrics();
+ }
+ onError() {
+ this.state !== m.Destroy && (this.spinner && (this.spinner.remove(), this.spinner = null), this.stop(), this.detachEvents(), this.state = m.Error, this.emit("error"));
+ }
+ getNextScale(t2) {
+ const { fullScale: e2, targetScale: i2, coverScale: n2, maxScale: s2, minScale: o2 } = this;
+ let a2 = o2;
+ switch (t2) {
+ case "toggleMax":
+ a2 = i2 - o2 < 0.5 * (s2 - o2) ? s2 : o2;
+ break;
+ case "toggleCover":
+ a2 = i2 - o2 < 0.5 * (n2 - o2) ? n2 : o2;
+ break;
+ case "toggleZoom":
+ a2 = i2 - o2 < 0.5 * (e2 - o2) ? e2 : o2;
+ break;
+ case "iterateZoom":
+ let t3 = [1, e2, s2].sort((t4, e3) => t4 - e3), r2 = t3.findIndex((t4) => t4 > i2 + 1e-5);
+ a2 = t3[r2] || 1;
+ }
+ return a2;
+ }
+ attachObserver() {
+ var t2;
+ const e2 = () => {
+ const { container: t3, containerRect: e3 } = this;
+ return Math.abs(e3.width - t3.getBoundingClientRect().width) > 0.1 || Math.abs(e3.height - t3.getBoundingClientRect().height) > 0.1;
+ };
+ this.resizeObserver || void 0 === window.ResizeObserver || (this.resizeObserver = new ResizeObserver(() => {
+ this.updateTimer || (e2() ? (this.onResize(), this.isMobile && (this.updateTimer = setTimeout(() => {
+ e2() && this.onResize(), this.updateTimer = null;
+ }, 500))) : this.updateTimer && (clearTimeout(this.updateTimer), this.updateTimer = null));
+ })), null === (t2 = this.resizeObserver) || void 0 === t2 || t2.observe(this.container);
+ }
+ detachObserver() {
+ var t2;
+ null === (t2 = this.resizeObserver) || void 0 === t2 || t2.disconnect();
+ }
+ attachEvents() {
+ const { container: t2 } = this;
+ t2.addEventListener("click", this.onClick, { passive: false, capture: false }), t2.addEventListener("wheel", this.onWheel, { passive: false }), this.pointerTracker = new l(t2, { start: this.onPointerDown, move: this.onPointerMove, end: this.onPointerUp }), document.addEventListener(O, this.onMouseMove);
+ }
+ detachEvents() {
+ var t2;
+ const { container: e2 } = this;
+ e2.removeEventListener("click", this.onClick, { passive: false, capture: false }), e2.removeEventListener("wheel", this.onWheel, { passive: false }), null === (t2 = this.pointerTracker) || void 0 === t2 || t2.stop(), this.pointerTracker = null, document.removeEventListener(O, this.onMouseMove), document.removeEventListener("keydown", this.onKeydown, true), this.clickTimer && (clearTimeout(this.clickTimer), this.clickTimer = null), this.updateTimer && (clearTimeout(this.updateTimer), this.updateTimer = null);
+ }
+ animate() {
+ this.setTargetForce();
+ const t2 = this.friction, e2 = this.option("maxVelocity");
+ for (const i2 of v) t2 ? (this.velocity[i2] *= 1 - t2, e2 && !this.isScaling && (this.velocity[i2] = Math.max(Math.min(this.velocity[i2], e2), -1 * e2)), this.current[i2] += this.velocity[i2]) : this.current[i2] = this.target[i2];
+ this.setTransform(), this.setEdgeForce(), !this.isResting || this.isDragging ? this.rAF = requestAnimationFrame(() => this.animate()) : this.stop("current");
+ }
+ setTargetForce() {
+ for (const t2 of v) "e" === t2 && this.isBouncingX || "f" === t2 && this.isBouncingY || (this.velocity[t2] = (1 / (1 - this.friction) - 1) * (this.target[t2] - this.current[t2]));
+ }
+ checkBounds(t2 = 0, e2 = 0) {
+ const { current: i2 } = this, n2 = i2.e + t2, s2 = i2.f + e2, o2 = this.getBounds(), { x: a2, y: r2 } = o2, l2 = a2.min, c2 = a2.max, h2 = r2.min, d2 = r2.max;
+ let u2 = 0, p2 = 0;
+ return l2 !== 1 / 0 && n2 < l2 ? u2 = l2 - n2 : c2 !== 1 / 0 && n2 > c2 && (u2 = c2 - n2), h2 !== 1 / 0 && s2 < h2 ? p2 = h2 - s2 : d2 !== 1 / 0 && s2 > d2 && (p2 = d2 - s2), Math.abs(u2) < 1e-4 && (u2 = 0), Math.abs(p2) < 1e-4 && (p2 = 0), Object.assign(Object.assign({}, o2), { xDiff: u2, yDiff: p2, inBounds: !u2 && !p2 });
+ }
+ clampTargetBounds() {
+ const { target: t2 } = this, { x: e2, y: i2 } = this.getBounds();
+ e2.min !== 1 / 0 && (t2.e = Math.max(t2.e, e2.min)), e2.max !== 1 / 0 && (t2.e = Math.min(t2.e, e2.max)), i2.min !== 1 / 0 && (t2.f = Math.max(t2.f, i2.min)), i2.max !== 1 / 0 && (t2.f = Math.min(t2.f, i2.max));
+ }
+ calculateContentDim(t2 = this.current) {
+ const { content: e2, contentRect: i2 } = this, { fitWidth: n2, fitHeight: s2, fullWidth: o2, fullHeight: a2 } = i2;
+ let r2 = o2, l2 = a2;
+ if (this.option("zoom") || 0 !== this.angle) {
+ const i3 = !(e2 instanceof HTMLImageElement) && ("none" === window.getComputedStyle(e2).maxWidth || "none" === window.getComputedStyle(e2).maxHeight), c2 = i3 ? o2 : n2, h2 = i3 ? a2 : s2, d2 = this.getMatrix(t2), u2 = new DOMPoint(0, 0).matrixTransform(d2), p2 = new DOMPoint(0 + c2, 0).matrixTransform(d2), f2 = new DOMPoint(0 + c2, 0 + h2).matrixTransform(d2), g2 = new DOMPoint(0, 0 + h2).matrixTransform(d2), m2 = Math.abs(f2.x - u2.x), v2 = Math.abs(f2.y - u2.y), b2 = Math.abs(g2.x - p2.x), y2 = Math.abs(g2.y - p2.y);
+ r2 = Math.max(m2, b2), l2 = Math.max(v2, y2);
+ }
+ return { contentWidth: r2, contentHeight: l2 };
+ }
+ setEdgeForce() {
+ if (this.ignoreBounds || this.isDragging || this.panMode === O || this.targetScale < this.scale) return this.isBouncingX = false, void (this.isBouncingY = false);
+ const { target: t2 } = this, { x: e2, y: i2, xDiff: n2, yDiff: s2 } = this.checkBounds();
+ const o2 = this.option("maxVelocity");
+ let a2 = this.velocity.e, r2 = this.velocity.f;
+ 0 !== n2 ? (this.isBouncingX = true, n2 * a2 <= 0 ? a2 += 0.14 * n2 : (a2 = 0.14 * n2, e2.min !== 1 / 0 && (this.target.e = Math.max(t2.e, e2.min)), e2.max !== 1 / 0 && (this.target.e = Math.min(t2.e, e2.max))), o2 && (a2 = Math.max(Math.min(a2, o2), -1 * o2))) : this.isBouncingX = false, 0 !== s2 ? (this.isBouncingY = true, s2 * r2 <= 0 ? r2 += 0.14 * s2 : (r2 = 0.14 * s2, i2.min !== 1 / 0 && (this.target.f = Math.max(t2.f, i2.min)), i2.max !== 1 / 0 && (this.target.f = Math.min(t2.f, i2.max))), o2 && (r2 = Math.max(Math.min(r2, o2), -1 * o2))) : this.isBouncingY = false, this.isBouncingX && (this.velocity.e = a2), this.isBouncingY && (this.velocity.f = r2);
+ }
+ enable() {
+ const { content: t2 } = this, e2 = new DOMMatrixReadOnly(window.getComputedStyle(t2).transform);
+ for (const t3 of v) this.current[t3] = this.target[t3] = e2[t3];
+ this.updateMetrics(), this.attachObserver(), this.attachEvents(), this.state = m.Ready, this.emit("ready");
+ }
+ onClick(t2) {
+ var e2;
+ "click" === t2.type && 0 === t2.detail && (this.dragOffset.x = 0, this.dragOffset.y = 0), this.isDragging && (null === (e2 = this.pointerTracker) || void 0 === e2 || e2.clear(), this.trackingPoints = [], this.startDecelAnim());
+ const i2 = t2.target;
+ if (!i2 || t2.defaultPrevented) return;
+ if (i2.hasAttribute("disabled")) return t2.preventDefault(), void t2.stopPropagation();
+ if ((() => {
+ const t3 = window.getSelection();
+ return t3 && "Range" === t3.type;
+ })() && !i2.closest("button")) return;
+ const n2 = i2.closest("[data-panzoom-action]"), s2 = i2.closest("[data-panzoom-change]"), o2 = n2 || s2, a2 = o2 && E(o2) ? o2.dataset : null;
+ if (a2) {
+ const e3 = a2.panzoomChange, i3 = a2.panzoomAction;
+ if ((e3 || i3) && t2.preventDefault(), e3) {
+ let t3 = {};
+ try {
+ t3 = JSON.parse(e3);
+ } catch (t4) {
+ console && console.warn("The given data was not valid JSON");
+ }
+ return void this.applyChange(t3);
+ }
+ if (i3) return void (this[i3] && this[i3]());
+ }
+ if (Math.abs(this.dragOffset.x) > 3 || Math.abs(this.dragOffset.y) > 3) return t2.preventDefault(), void t2.stopPropagation();
+ if (i2.closest("[data-fancybox]")) return;
+ const r2 = this.content.getBoundingClientRect(), l2 = this.dragStart;
+ if (l2.time && !this.canZoomOut() && (Math.abs(r2.x - l2.x) > 2 || Math.abs(r2.y - l2.y) > 2)) return;
+ this.dragStart.time = 0;
+ const c2 = (e3) => {
+ this.option("zoom", t2) && e3 && "string" == typeof e3 && /(iterateZoom)|(toggle(Zoom|Full|Cover|Max)|(zoomTo(Fit|Cover|Max)))/.test(e3) && "function" == typeof this[e3] && (t2.preventDefault(), this[e3]({ event: t2 }));
+ }, h2 = this.option("click", t2), d2 = this.option("dblClick", t2);
+ d2 ? (this.clicks++, 1 == this.clicks && (this.clickTimer = setTimeout(() => {
+ 1 === this.clicks ? (this.emit("click", t2), !t2.defaultPrevented && h2 && c2(h2)) : (this.emit("dblClick", t2), t2.defaultPrevented || c2(d2)), this.clicks = 0, this.clickTimer = null;
+ }, 350))) : (this.emit("click", t2), !t2.defaultPrevented && h2 && c2(h2));
+ }
+ addTrackingPoint(t2) {
+ const e2 = this.trackingPoints.filter((t3) => t3.time > Date.now() - 100);
+ e2.push(t2), this.trackingPoints = e2;
+ }
+ onPointerDown(t2, e2, i2) {
+ var n2;
+ if (false === this.option("touch", t2)) return false;
+ this.pwt = 0, this.dragOffset = { x: 0, y: 0, time: 0 }, this.trackingPoints = [];
+ const s2 = this.content.getBoundingClientRect();
+ if (this.dragStart = { x: s2.x, y: s2.y, top: s2.top, left: s2.left, time: Date.now() }, this.clickTimer) return false;
+ if (this.panMode === O && this.targetScale > 1) return t2.preventDefault(), t2.stopPropagation(), false;
+ const o2 = t2.composedPath()[0];
+ if (!i2.length) {
+ if (["TEXTAREA", "OPTION", "INPUT", "SELECT", "VIDEO", "IFRAME"].includes(o2.nodeName) || o2.closest("[contenteditable],[data-selectable],[data-draggable],[data-clickable],[data-panzoom-change],[data-panzoom-action]")) return false;
+ null === (n2 = window.getSelection()) || void 0 === n2 || n2.removeAllRanges();
+ }
+ if ("mousedown" === t2.type) ["A", "BUTTON"].includes(o2.nodeName) || t2.preventDefault();
+ else if (Math.abs(this.velocity.a) > 0.3) return false;
+ return this.target.e = this.current.e, this.target.f = this.current.f, this.stop(), this.isDragging || (this.isDragging = true, this.addTrackingPoint(e2), this.emit("touchStart", t2)), true;
+ }
+ onPointerMove(e2, n2, s2) {
+ if (false === this.option("touch", e2)) return;
+ if (!this.isDragging) return;
+ if (n2.length < 2 && this.panOnlyZoomed && t(this.targetScale) <= t(this.minScale)) return;
+ if (this.emit("touchMove", e2), e2.defaultPrevented) return;
+ this.addTrackingPoint(n2[0]);
+ const { content: o2 } = this, a2 = h(s2[0], s2[1]), r2 = h(n2[0], n2[1]);
+ let l2 = 0, d2 = 0;
+ if (n2.length > 1) {
+ const t2 = o2.getBoundingClientRect();
+ l2 = a2.clientX - t2.left - 0.5 * t2.width, d2 = a2.clientY - t2.top - 0.5 * t2.height;
+ }
+ const u2 = c(s2[0], s2[1]), p2 = c(n2[0], n2[1]);
+ let f2 = u2 ? p2 / u2 : 1, g2 = r2.clientX - a2.clientX, m2 = r2.clientY - a2.clientY;
+ this.dragOffset.x += g2, this.dragOffset.y += m2, this.dragOffset.time = Date.now() - this.dragStart.time;
+ let v2 = t(this.targetScale) === t(this.minScale) && this.option("lockAxis");
+ if (v2 && !this.lockedAxis) if ("xy" === v2 || "y" === v2 || "touchmove" === e2.type) {
+ if (Math.abs(this.dragOffset.x) < 6 && Math.abs(this.dragOffset.y) < 6) return void e2.preventDefault();
+ const t2 = Math.abs(180 * Math.atan2(this.dragOffset.y, this.dragOffset.x) / Math.PI);
+ this.lockedAxis = t2 > 45 && t2 < 135 ? "y" : "x", this.dragOffset.x = 0, this.dragOffset.y = 0, g2 = 0, m2 = 0;
+ } else this.lockedAxis = v2;
+ if (i(e2.target, this.content) && (v2 = "x", this.dragOffset.y = 0), v2 && "xy" !== v2 && this.lockedAxis !== v2 && t(this.targetScale) === t(this.minScale)) return;
+ e2.cancelable && e2.preventDefault(), this.container.classList.add(this.cn("isDragging"));
+ const b2 = this.checkBounds(g2, m2);
+ this.option("rubberband") ? ("x" !== this.isInfinite && (b2.xDiff > 0 && g2 < 0 || b2.xDiff < 0 && g2 > 0) && (g2 *= Math.max(0, 0.5 - Math.abs(0.75 / this.contentRect.fitWidth * b2.xDiff))), "y" !== this.isInfinite && (b2.yDiff > 0 && m2 < 0 || b2.yDiff < 0 && m2 > 0) && (m2 *= Math.max(0, 0.5 - Math.abs(0.75 / this.contentRect.fitHeight * b2.yDiff)))) : (b2.xDiff && (g2 = 0), b2.yDiff && (m2 = 0));
+ const y2 = this.targetScale, w2 = this.minScale, x2 = this.maxScale;
+ y2 < 0.5 * w2 && (f2 = Math.max(f2, w2)), y2 > 1.5 * x2 && (f2 = Math.min(f2, x2)), "y" === this.lockedAxis && t(y2) === t(w2) && (g2 = 0), "x" === this.lockedAxis && t(y2) === t(w2) && (m2 = 0), this.applyChange({ originX: l2, originY: d2, panX: g2, panY: m2, scale: f2, friction: this.option("dragFriction"), ignoreBounds: true });
+ }
+ onPointerUp(t2, e2, n2) {
+ if (n2.length) return this.dragOffset.x = 0, this.dragOffset.y = 0, void (this.trackingPoints = []);
+ this.container.classList.remove(this.cn("isDragging")), this.isDragging && (this.addTrackingPoint(e2), this.panOnlyZoomed && this.contentRect.width - this.contentRect.fitWidth < 1 && this.contentRect.height - this.contentRect.fitHeight < 1 && (this.trackingPoints = []), i(t2.target, this.content) && "y" === this.lockedAxis && (this.trackingPoints = []), this.emit("touchEnd", t2), this.isDragging = false, this.lockedAxis = false, this.state !== m.Destroy && (t2.defaultPrevented || this.startDecelAnim()));
+ }
+ startDecelAnim() {
+ var e2;
+ const i2 = this.isScaling;
+ this.rAF && (cancelAnimationFrame(this.rAF), this.rAF = null), this.isBouncingX = false, this.isBouncingY = false;
+ for (const t2 of v) this.velocity[t2] = 0;
+ this.target.e = this.current.e, this.target.f = this.current.f, S(this.container, "is-scaling"), S(this.container, "is-animating"), this.isTicking = false;
+ const { trackingPoints: n2 } = this, s2 = n2[0], o2 = n2[n2.length - 1];
+ let a2 = 0, r2 = 0, l2 = 0;
+ o2 && s2 && (a2 = o2.clientX - s2.clientX, r2 = o2.clientY - s2.clientY, l2 = o2.time - s2.time);
+ const c2 = (null === (e2 = window.visualViewport) || void 0 === e2 ? void 0 : e2.scale) || 1;
+ 1 !== c2 && (a2 *= c2, r2 *= c2);
+ let h2 = 0, d2 = 0, u2 = 0, p2 = 0, f2 = this.option("decelFriction");
+ const g2 = this.targetScale;
+ if (l2 > 0) {
+ u2 = Math.abs(a2) > 3 ? a2 / (l2 / 30) : 0, p2 = Math.abs(r2) > 3 ? r2 / (l2 / 30) : 0;
+ const t2 = this.option("maxVelocity");
+ t2 && (u2 = Math.max(Math.min(u2, t2), -1 * t2), p2 = Math.max(Math.min(p2, t2), -1 * t2));
+ }
+ u2 && (h2 = u2 / (1 / (1 - f2) - 1)), p2 && (d2 = p2 / (1 / (1 - f2) - 1)), ("y" === this.option("lockAxis") || "xy" === this.option("lockAxis") && "y" === this.lockedAxis && t(g2) === this.minScale) && (h2 = u2 = 0), ("x" === this.option("lockAxis") || "xy" === this.option("lockAxis") && "x" === this.lockedAxis && t(g2) === this.minScale) && (d2 = p2 = 0);
+ const m2 = this.dragOffset.x, b2 = this.dragOffset.y, y2 = this.option("dragMinThreshold") || 0;
+ Math.abs(m2) < y2 && Math.abs(b2) < y2 && (h2 = d2 = 0, u2 = p2 = 0), (this.option("zoom") && (g2 < this.minScale - 1e-5 || g2 > this.maxScale + 1e-5) || i2 && !h2 && !d2) && (f2 = 0.35), this.applyChange({ panX: h2, panY: d2, friction: f2 }), this.emit("decel", u2, p2, m2, b2);
+ }
+ onWheel(t2) {
+ var e2 = [-t2.deltaX || 0, -t2.deltaY || 0, -t2.detail || 0].reduce(function(t3, e3) {
+ return Math.abs(e3) > Math.abs(t3) ? e3 : t3;
+ });
+ const i2 = Math.max(-1, Math.min(1, e2));
+ if (this.emit("wheel", t2, i2), this.panMode === O) return;
+ if (t2.defaultPrevented) return;
+ const n2 = this.option("wheel");
+ "pan" === n2 ? (t2.preventDefault(), this.panOnlyZoomed && !this.canZoomOut() || this.applyChange({ panX: 2 * -t2.deltaX, panY: 2 * -t2.deltaY, bounce: false })) : "zoom" === n2 && false !== this.option("zoom") && this.zoomWithWheel(t2);
+ }
+ onMouseMove(t2) {
+ this.panWithMouse(t2);
+ }
+ onKeydown(t2) {
+ "Escape" === t2.key && this.toggleFS();
+ }
+ onResize() {
+ this.updateMetrics(), this.checkBounds().inBounds || this.requestTick();
+ }
+ setTransform() {
+ this.emit("beforeTransform");
+ const { current: e2, target: i2, content: n2, contentRect: s2 } = this, o2 = Object.assign({}, C);
+ for (const n3 of v) {
+ const s3 = "e" == n3 || "f" === n3 ? M : T;
+ o2[n3] = t(e2[n3], s3), Math.abs(i2[n3] - e2[n3]) < ("e" == n3 || "f" === n3 ? 0.51 : 1e-3) && (e2[n3] = i2[n3]);
+ }
+ let { a: a2, b: r2, c: l2, d: c2, e: h2, f: d2 } = o2, u2 = `matrix(${a2}, ${r2}, ${l2}, ${c2}, ${h2}, ${d2})`, p2 = n2.parentElement instanceof HTMLPictureElement ? n2.parentElement : n2;
+ if (this.option("transformParent") && (p2 = p2.parentElement || p2), p2.style.transform === u2) return;
+ p2.style.transform = u2;
+ const { contentWidth: f2, contentHeight: g2 } = this.calculateContentDim();
+ s2.width = f2, s2.height = g2, this.emit("afterTransform");
+ }
+ updateMetrics(e2 = false) {
+ var i2;
+ if (!this || this.state === m.Destroy) return;
+ if (this.isContentLoading) return;
+ const n2 = Math.max(1, (null === (i2 = window.visualViewport) || void 0 === i2 ? void 0 : i2.scale) || 1), { container: s2, content: o2 } = this, a2 = o2 instanceof HTMLImageElement, r2 = s2.getBoundingClientRect(), l2 = getComputedStyle(this.container);
+ let c2 = r2.width * n2, h2 = r2.height * n2;
+ const d2 = parseFloat(l2.paddingTop) + parseFloat(l2.paddingBottom), u2 = c2 - (parseFloat(l2.paddingLeft) + parseFloat(l2.paddingRight)), p2 = h2 - d2;
+ this.containerRect = { width: c2, height: h2, innerWidth: u2, innerHeight: p2 };
+ const f2 = parseFloat(o2.dataset.width || "") || ((t2) => {
+ let e3 = 0;
+ return e3 = t2 instanceof HTMLImageElement ? t2.naturalWidth : t2 instanceof SVGElement ? t2.width.baseVal.value : Math.max(t2.offsetWidth, t2.scrollWidth), e3 || 0;
+ })(o2), g2 = parseFloat(o2.dataset.height || "") || ((t2) => {
+ let e3 = 0;
+ return e3 = t2 instanceof HTMLImageElement ? t2.naturalHeight : t2 instanceof SVGElement ? t2.height.baseVal.value : Math.max(t2.offsetHeight, t2.scrollHeight), e3 || 0;
+ })(o2);
+ let v2 = this.option("width", f2) || z, b2 = this.option("height", g2) || z;
+ const y2 = v2 === z, w2 = b2 === z;
+ "number" != typeof v2 && (v2 = f2), "number" != typeof b2 && (b2 = g2), y2 && (v2 = f2 * (b2 / g2)), w2 && (b2 = g2 / (f2 / v2));
+ let x2 = o2.parentElement instanceof HTMLPictureElement ? o2.parentElement : o2;
+ this.option("transformParent") && (x2 = x2.parentElement || x2);
+ const E2 = x2.getAttribute("style") || "";
+ x2.style.setProperty("transform", "none", "important"), a2 && (x2.style.width = "", x2.style.height = ""), x2.offsetHeight;
+ const S2 = o2.getBoundingClientRect();
+ let P2 = S2.width * n2, C2 = S2.height * n2, T2 = P2, M2 = C2;
+ P2 = Math.min(P2, v2), C2 = Math.min(C2, b2), a2 ? { width: P2, height: C2 } = ((t2, e3, i3, n3) => {
+ const s3 = i3 / t2, o3 = n3 / e3, a3 = Math.min(s3, o3);
+ return { width: t2 *= a3, height: e3 *= a3 };
+ })(v2, b2, P2, C2) : (P2 = Math.min(P2, v2), C2 = Math.min(C2, b2));
+ let O2 = 0.5 * (M2 - C2), A2 = 0.5 * (T2 - P2);
+ this.contentRect = Object.assign(Object.assign({}, this.contentRect), { top: S2.top - r2.top + O2, bottom: r2.bottom - S2.bottom + O2, left: S2.left - r2.left + A2, right: r2.right - S2.right + A2, fitWidth: P2, fitHeight: C2, width: P2, height: C2, fullWidth: v2, fullHeight: b2 }), x2.style.cssText = E2, a2 && (x2.style.width = `${P2}px`, x2.style.height = `${C2}px`), this.setTransform(), true !== e2 && this.emit("refresh"), this.ignoreBounds || (t(this.targetScale) < t(this.minScale) ? this.zoomTo(this.minScale, { friction: 0 }) : this.targetScale > this.maxScale ? this.zoomTo(this.maxScale, { friction: 0 }) : this.state === m.Init || this.checkBounds().inBounds || this.requestTick()), this.updateControls();
+ }
+ calculateBounds() {
+ const { contentWidth: e2, contentHeight: i2 } = this.calculateContentDim(this.target), { targetScale: n2, lockedAxis: s2 } = this, { fitWidth: o2, fitHeight: a2 } = this.contentRect;
+ let r2 = 0, l2 = 0, c2 = 0, h2 = 0;
+ const d2 = this.option("infinite");
+ if (true === d2 || s2 && d2 === s2) r2 = -1 / 0, c2 = 1 / 0, l2 = -1 / 0, h2 = 1 / 0;
+ else {
+ let { containerRect: s3, contentRect: d3 } = this, u2 = t(o2 * n2, M), p2 = t(a2 * n2, M), { innerWidth: f2, innerHeight: g2 } = s3;
+ if (s3.width === u2 && (f2 = s3.width), s3.width === p2 && (g2 = s3.height), e2 > f2) {
+ c2 = 0.5 * (e2 - f2), r2 = -1 * c2;
+ let t2 = 0.5 * (d3.right - d3.left);
+ r2 += t2, c2 += t2;
+ }
+ if (o2 > f2 && e2 < f2 && (r2 -= 0.5 * (o2 - f2), c2 -= 0.5 * (o2 - f2)), i2 > g2) {
+ h2 = 0.5 * (i2 - g2), l2 = -1 * h2;
+ let t2 = 0.5 * (d3.bottom - d3.top);
+ l2 += t2, h2 += t2;
+ }
+ a2 > g2 && i2 < g2 && (r2 -= 0.5 * (a2 - g2), c2 -= 0.5 * (a2 - g2));
+ }
+ return { x: { min: r2, max: c2 }, y: { min: l2, max: h2 } };
+ }
+ getBounds() {
+ const t2 = this.option("bounds");
+ return t2 !== z ? t2 : this.calculateBounds();
+ }
+ updateControls() {
+ const e2 = this, i2 = e2.container, { panMode: n2, contentRect: s2, targetScale: a2, minScale: r2 } = e2;
+ let l2 = r2, c2 = e2.option("click") || false;
+ c2 && (l2 = e2.getNextScale(c2));
+ let h2 = e2.canZoomIn(), d2 = e2.canZoomOut(), u2 = n2 === A && !!this.option("touch"), p2 = d2 && u2;
+ if (u2 && (t(a2) < t(r2) && !this.panOnlyZoomed && (p2 = true), (t(s2.width, 1) > t(s2.fitWidth, 1) || t(s2.height, 1) > t(s2.fitHeight, 1)) && (p2 = true)), t(s2.width * a2, 1) < t(s2.fitWidth, 1) && (p2 = false), n2 === O && (p2 = false), o(i2, this.cn("isDraggable"), p2), !this.option("zoom")) return;
+ let f2 = h2 && t(l2) > t(a2), g2 = !f2 && !p2 && d2 && t(l2) < t(a2);
+ o(i2, this.cn("canZoomIn"), f2), o(i2, this.cn("canZoomOut"), g2);
+ for (const t2 of i2.querySelectorAll("[data-panzoom-action]")) {
+ let e3 = false, i3 = false;
+ switch (t2.dataset.panzoomAction) {
+ case "zoomIn":
+ h2 ? e3 = true : i3 = true;
+ break;
+ case "zoomOut":
+ d2 ? e3 = true : i3 = true;
+ break;
+ case "toggleZoom":
+ case "iterateZoom":
+ h2 || d2 ? e3 = true : i3 = true;
+ const n3 = t2.querySelector("g");
+ n3 && (n3.style.display = h2 ? "" : "none");
+ }
+ e3 ? (t2.removeAttribute("disabled"), t2.removeAttribute("tabindex")) : i3 && (t2.setAttribute("disabled", ""), t2.setAttribute("tabindex", "-1"));
+ }
+ }
+ panTo({ x: t2 = this.target.e, y: e2 = this.target.f, scale: i2 = this.targetScale, friction: n2 = this.option("friction"), angle: s2 = 0, originX: o2 = 0, originY: a2 = 0, flipX: r2 = false, flipY: l2 = false, ignoreBounds: c2 = false }) {
+ this.state !== m.Destroy && this.applyChange({ panX: t2 - this.target.e, panY: e2 - this.target.f, scale: i2 / this.targetScale, angle: s2, originX: o2, originY: a2, friction: n2, flipX: r2, flipY: l2, ignoreBounds: c2 });
+ }
+ applyChange({ panX: e2 = 0, panY: i2 = 0, scale: n2 = 1, angle: s2 = 0, originX: o2 = -this.current.e, originY: a2 = -this.current.f, friction: r2 = this.option("friction"), flipX: l2 = false, flipY: c2 = false, ignoreBounds: h2 = false, bounce: d2 = this.option("bounce") }) {
+ const u2 = this.state;
+ if (u2 === m.Destroy) return;
+ this.rAF && (cancelAnimationFrame(this.rAF), this.rAF = null), this.friction = r2 || 0, this.ignoreBounds = h2;
+ const { current: p2 } = this, f2 = p2.e, g2 = p2.f, b2 = this.getMatrix(this.target);
+ let y2 = new DOMMatrix().translate(f2, g2).translate(o2, a2).translate(e2, i2);
+ if (this.option("zoom")) {
+ if (!h2) {
+ const t2 = this.targetScale, e3 = this.minScale, i3 = this.maxScale;
+ t2 * n2 < e3 && (n2 = e3 / t2), t2 * n2 > i3 && (n2 = i3 / t2);
+ }
+ y2 = y2.scale(n2);
+ }
+ y2 = y2.translate(-o2, -a2).translate(-f2, -g2).multiply(b2), s2 && (y2 = y2.rotate(s2)), l2 && (y2 = y2.scale(-1, 1)), c2 && (y2 = y2.scale(1, -1));
+ for (const e3 of v) "e" !== e3 && "f" !== e3 && (y2[e3] > this.minScale + 1e-5 || y2[e3] < this.minScale - 1e-5) ? this.target[e3] = y2[e3] : this.target[e3] = t(y2[e3], M);
+ (this.targetScale < this.scale || Math.abs(n2 - 1) > 0.1 || this.panMode === O || false === d2) && !h2 && this.clampTargetBounds(), u2 === m.Init ? this.animate() : this.isResting || (this.state = m.Panning, this.requestTick());
+ }
+ stop(t2 = false) {
+ if (this.state === m.Init || this.state === m.Destroy) return;
+ const e2 = this.isTicking;
+ this.rAF && (cancelAnimationFrame(this.rAF), this.rAF = null), this.isBouncingX = false, this.isBouncingY = false;
+ for (const e3 of v) this.velocity[e3] = 0, "current" === t2 ? this.current[e3] = this.target[e3] : "target" === t2 && (this.target[e3] = this.current[e3]);
+ this.setTransform(), S(this.container, "is-scaling"), S(this.container, "is-animating"), this.isTicking = false, this.state = m.Ready, e2 && (this.emit("endAnimation"), this.updateControls());
+ }
+ requestTick() {
+ this.isTicking || (this.emit("startAnimation"), this.updateControls(), P(this.container, "is-animating"), this.isScaling && P(this.container, "is-scaling")), this.isTicking = true, this.rAF || (this.rAF = requestAnimationFrame(() => this.animate()));
+ }
+ panWithMouse(e2, i2 = this.option("mouseMoveFriction")) {
+ if (this.pmme = e2, this.panMode !== O || !e2) return;
+ if (t(this.targetScale) <= t(this.minScale)) return;
+ this.emit("mouseMove", e2);
+ const { container: n2, containerRect: s2, contentRect: o2 } = this, a2 = s2.width, r2 = s2.height, l2 = n2.getBoundingClientRect(), c2 = (e2.clientX || 0) - l2.left, h2 = (e2.clientY || 0) - l2.top;
+ let { contentWidth: d2, contentHeight: u2 } = this.calculateContentDim(this.target);
+ const p2 = this.option("mouseMoveFactor");
+ p2 > 1 && (d2 !== a2 && (d2 *= p2), u2 !== r2 && (u2 *= p2));
+ let f2 = 0.5 * (d2 - a2) - c2 / a2 * 100 / 100 * (d2 - a2);
+ f2 += 0.5 * (o2.right - o2.left);
+ let g2 = 0.5 * (u2 - r2) - h2 / r2 * 100 / 100 * (u2 - r2);
+ g2 += 0.5 * (o2.bottom - o2.top), this.applyChange({ panX: f2 - this.target.e, panY: g2 - this.target.f, friction: i2 });
+ }
+ zoomWithWheel(e2) {
+ if (this.state === m.Destroy || this.state === m.Init) return;
+ const i2 = Date.now();
+ if (i2 - this.pwt < 45) return void e2.preventDefault();
+ this.pwt = i2;
+ var n2 = [-e2.deltaX || 0, -e2.deltaY || 0, -e2.detail || 0].reduce(function(t2, e3) {
+ return Math.abs(e3) > Math.abs(t2) ? e3 : t2;
+ });
+ const s2 = Math.max(-1, Math.min(1, n2)), { targetScale: o2, maxScale: a2, minScale: r2 } = this;
+ let l2 = o2 * (100 + 45 * s2) / 100;
+ t(l2) < t(r2) && t(o2) <= t(r2) ? (this.cwd += Math.abs(s2), l2 = r2) : t(l2) > t(a2) && t(o2) >= t(a2) ? (this.cwd += Math.abs(s2), l2 = a2) : (this.cwd = 0, l2 = Math.max(Math.min(l2, a2), r2)), this.cwd > this.option("wheelLimit") || (e2.preventDefault(), t(l2) !== t(o2) && this.zoomTo(l2, { event: e2 }));
+ }
+ canZoomIn() {
+ return this.option("zoom") && (t(this.contentRect.width, 1) < t(this.contentRect.fitWidth, 1) || t(this.targetScale) < t(this.maxScale));
+ }
+ canZoomOut() {
+ return this.option("zoom") && t(this.targetScale) > t(this.minScale);
+ }
+ zoomIn(t2 = 1.25, e2) {
+ this.zoomTo(this.targetScale * t2, e2);
+ }
+ zoomOut(t2 = 0.8, e2) {
+ this.zoomTo(this.targetScale * t2, e2);
+ }
+ zoomToFit(t2) {
+ this.zoomTo("fit", t2);
+ }
+ zoomToCover(t2) {
+ this.zoomTo("cover", t2);
+ }
+ zoomToFull(t2) {
+ this.zoomTo("full", t2);
+ }
+ zoomToMax(t2) {
+ this.zoomTo("max", t2);
+ }
+ toggleZoom(t2) {
+ this.zoomTo(this.getNextScale("toggleZoom"), t2);
+ }
+ toggleMax(t2) {
+ this.zoomTo(this.getNextScale("toggleMax"), t2);
+ }
+ toggleCover(t2) {
+ this.zoomTo(this.getNextScale("toggleCover"), t2);
+ }
+ iterateZoom(t2) {
+ this.zoomTo("next", t2);
+ }
+ zoomTo(t2 = 1, { friction: e2 = z, originX: i2 = z, originY: n2 = z, event: s2 } = {}) {
+ if (this.isContentLoading || this.state === m.Destroy) return;
+ const { targetScale: o2, fullScale: a2, maxScale: r2, coverScale: l2 } = this;
+ if (this.stop(), this.panMode === O && (s2 = this.pmme || s2), s2 || i2 === z || n2 === z) {
+ const t3 = this.content.getBoundingClientRect(), e3 = this.container.getBoundingClientRect(), o3 = s2 ? s2.clientX : e3.left + 0.5 * e3.width, a3 = s2 ? s2.clientY : e3.top + 0.5 * e3.height;
+ i2 = o3 - t3.left - 0.5 * t3.width, n2 = a3 - t3.top - 0.5 * t3.height;
+ }
+ let c2 = 1;
+ "number" == typeof t2 ? c2 = t2 : "full" === t2 ? c2 = a2 : "cover" === t2 ? c2 = l2 : "max" === t2 ? c2 = r2 : "fit" === t2 ? c2 = 1 : "next" === t2 && (c2 = this.getNextScale("iterateZoom")), c2 = c2 / o2 || 1, e2 = e2 === z ? c2 > 1 ? 0.15 : 0.25 : e2, this.applyChange({ scale: c2, originX: i2, originY: n2, friction: e2 }), s2 && this.panMode === O && this.panWithMouse(s2, e2);
+ }
+ rotateCCW() {
+ this.applyChange({ angle: -90 });
+ }
+ rotateCW() {
+ this.applyChange({ angle: 90 });
+ }
+ flipX() {
+ this.applyChange({ flipX: true });
+ }
+ flipY() {
+ this.applyChange({ flipY: true });
+ }
+ fitX() {
+ this.stop("target");
+ const { containerRect: t2, contentRect: e2, target: i2 } = this;
+ this.applyChange({ panX: 0.5 * t2.width - (e2.left + 0.5 * e2.fitWidth) - i2.e, panY: 0.5 * t2.height - (e2.top + 0.5 * e2.fitHeight) - i2.f, scale: t2.width / e2.fitWidth / this.targetScale, originX: 0, originY: 0, ignoreBounds: true });
+ }
+ fitY() {
+ this.stop("target");
+ const { containerRect: t2, contentRect: e2, target: i2 } = this;
+ this.applyChange({ panX: 0.5 * t2.width - (e2.left + 0.5 * e2.fitWidth) - i2.e, panY: 0.5 * t2.innerHeight - (e2.top + 0.5 * e2.fitHeight) - i2.f, scale: t2.height / e2.fitHeight / this.targetScale, originX: 0, originY: 0, ignoreBounds: true });
+ }
+ toggleFS() {
+ const { container: t2 } = this, e2 = this.cn("inFullscreen"), i2 = this.cn("htmlHasFullscreen");
+ t2.classList.toggle(e2);
+ const n2 = t2.classList.contains(e2);
+ n2 ? (document.documentElement.classList.add(i2), document.addEventListener("keydown", this.onKeydown, true)) : (document.documentElement.classList.remove(i2), document.removeEventListener("keydown", this.onKeydown, true)), this.updateMetrics(), this.emit(n2 ? "enterFS" : "exitFS");
+ }
+ getMatrix(t2 = this.current) {
+ const { a: e2, b: i2, c: n2, d: s2, e: o2, f: a2 } = t2;
+ return new DOMMatrix([e2, i2, n2, s2, o2, a2]);
+ }
+ reset(t2) {
+ if (this.state !== m.Init && this.state !== m.Destroy) {
+ this.stop("current");
+ for (const t3 of v) this.target[t3] = C[t3];
+ this.target.a = this.minScale, this.target.d = this.minScale, this.clampTargetBounds(), this.isResting || (this.friction = void 0 === t2 ? this.option("friction") : t2, this.state = m.Panning, this.requestTick());
+ }
+ }
+ destroy() {
+ this.stop(), this.state = m.Destroy, this.detachEvents(), this.detachObserver();
+ const { container: t2, content: e2 } = this, i2 = this.option("classes") || {};
+ for (const e3 of Object.values(i2)) t2.classList.remove(e3 + "");
+ e2 && (e2.removeEventListener("load", this.onLoad), e2.removeEventListener("error", this.onError)), this.detachPlugins();
+ }
+};
+Object.defineProperty(I, "defaults", { enumerable: true, configurable: true, writable: true, value: y }), Object.defineProperty(I, "Plugins", { enumerable: true, configurable: true, writable: true, value: {} });
+var D = function(t2, e2) {
+ let i2 = true;
+ return (...n2) => {
+ i2 && (i2 = false, t2(...n2), setTimeout(() => {
+ i2 = true;
+ }, e2));
+ };
+};
+var F = (t2, e2) => {
+ let i2 = [];
+ return t2.childNodes.forEach((t3) => {
+ t3.nodeType !== Node.ELEMENT_NODE || e2 && !t3.matches(e2) || i2.push(t3);
+ }), i2;
+};
+var j = { viewport: null, track: null, enabled: true, slides: [], axis: "x", transition: "fade", preload: 1, slidesPerPage: "auto", initialPage: 0, friction: 0.12, Panzoom: { decelFriction: 0.12 }, center: true, infinite: true, fill: true, dragFree: false, adaptiveHeight: false, direction: "ltr", classes: { container: "f-carousel", viewport: "f-carousel__viewport", track: "f-carousel__track", slide: "f-carousel__slide", isLTR: "is-ltr", isRTL: "is-rtl", isHorizontal: "is-horizontal", isVertical: "is-vertical", inTransition: "in-transition", isSelected: "is-selected" }, l10n: { NEXT: "Next slide", PREV: "Previous slide", GOTO: "Go to slide #%d" } };
+var B;
+!function(t2) {
+ t2[t2.Init = 0] = "Init", t2[t2.Ready = 1] = "Ready", t2[t2.Destroy = 2] = "Destroy";
+}(B || (B = {}));
+var H = (t2) => {
+ if ("string" == typeof t2 || t2 instanceof HTMLElement) t2 = { html: t2 };
+ else {
+ const e2 = t2.thumb;
+ void 0 !== e2 && ("string" == typeof e2 && (t2.thumbSrc = e2), e2 instanceof HTMLImageElement && (t2.thumbEl = e2, t2.thumbElSrc = e2.src, t2.thumbSrc = e2.src), delete t2.thumb);
+ }
+ return Object.assign({ html: "", el: null, isDom: false, class: "", customClass: "", index: -1, dim: 0, gap: 0, pos: 0, transition: false }, t2);
+};
+var N = (t2 = {}) => Object.assign({ index: -1, slides: [], dim: 0, pos: -1 }, t2);
+var _ = class extends f {
+ constructor(t2, e2) {
+ super(e2), Object.defineProperty(this, "instance", { enumerable: true, configurable: true, writable: true, value: t2 });
+ }
+ attach() {
+ }
+ detach() {
+ }
+};
+var $ = { classes: { list: "f-carousel__dots", isDynamic: "is-dynamic", hasDots: "has-dots", dot: "f-carousel__dot", isBeforePrev: "is-before-prev", isPrev: "is-prev", isCurrent: "is-current", isNext: "is-next", isAfterNext: "is-after-next" }, dotTpl: ' ', dynamicFrom: 11, maxCount: 1 / 0, minCount: 2 };
+var W = class extends _ {
+ constructor() {
+ super(...arguments), Object.defineProperty(this, "isDynamic", { enumerable: true, configurable: true, writable: true, value: false }), Object.defineProperty(this, "list", { enumerable: true, configurable: true, writable: true, value: null });
+ }
+ onRefresh() {
+ this.refresh();
+ }
+ build() {
+ let t2 = this.list;
+ if (!t2) {
+ t2 = document.createElement("ul"), P(t2, this.cn("list")), t2.setAttribute("role", "tablist");
+ const e2 = this.instance.container;
+ e2.appendChild(t2), P(e2, this.cn("hasDots")), this.list = t2;
+ }
+ return t2;
+ }
+ refresh() {
+ var t2;
+ const e2 = this.instance.pages.length, i2 = Math.min(2, this.option("minCount")), n2 = Math.max(2e3, this.option("maxCount")), s2 = this.option("dynamicFrom");
+ if (e2 < i2 || e2 > n2) return void this.cleanup();
+ const a2 = "number" == typeof s2 && e2 > 5 && e2 >= s2, r2 = !this.list || this.isDynamic !== a2 || this.list.children.length !== e2;
+ r2 && this.cleanup();
+ const l2 = this.build();
+ if (o(l2, this.cn("isDynamic"), !!a2), r2) for (let t3 = 0; t3 < e2; t3++) l2.append(this.createItem(t3));
+ let c2, h2 = 0;
+ for (const e3 of [...l2.children]) {
+ const i3 = h2 === this.instance.page;
+ i3 && (c2 = e3), o(e3, this.cn("isCurrent"), i3), null === (t2 = e3.children[0]) || void 0 === t2 || t2.setAttribute("aria-selected", i3 ? "true" : "false");
+ for (const t3 of ["isBeforePrev", "isPrev", "isNext", "isAfterNext"]) S(e3, this.cn(t3));
+ h2++;
+ }
+ if (c2 = c2 || l2.firstChild, a2 && c2) {
+ const t3 = c2.previousElementSibling, e3 = t3 && t3.previousElementSibling;
+ P(t3, this.cn("isPrev")), P(e3, this.cn("isBeforePrev"));
+ const i3 = c2.nextElementSibling, n3 = i3 && i3.nextElementSibling;
+ P(i3, this.cn("isNext")), P(n3, this.cn("isAfterNext"));
+ }
+ this.isDynamic = a2;
+ }
+ createItem(t2 = 0) {
+ var e2;
+ const i2 = document.createElement("li");
+ i2.setAttribute("role", "presentation");
+ const s2 = n(this.instance.localize(this.option("dotTpl"), [["%d", t2 + 1]]).replace(/\%i/g, t2 + ""));
+ return i2.appendChild(s2), null === (e2 = i2.children[0]) || void 0 === e2 || e2.setAttribute("role", "tab"), i2;
+ }
+ cleanup() {
+ this.list && (this.list.remove(), this.list = null), this.isDynamic = false, S(this.instance.container, this.cn("hasDots"));
+ }
+ attach() {
+ this.instance.on(["refresh", "change"], this.onRefresh);
+ }
+ detach() {
+ this.instance.off(["refresh", "change"], this.onRefresh), this.cleanup();
+ }
+};
+Object.defineProperty(W, "defaults", { enumerable: true, configurable: true, writable: true, value: $ });
+var X = "disabled";
+var q = "next";
+var Y = "prev";
+var V = class extends _ {
+ constructor() {
+ super(...arguments), Object.defineProperty(this, "container", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "prev", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "next", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "isDom", { enumerable: true, configurable: true, writable: true, value: false });
+ }
+ onRefresh() {
+ const t2 = this.instance, e2 = t2.pages.length, i2 = t2.page;
+ if (e2 < 2) return void this.cleanup();
+ this.build();
+ let n2 = this.prev, s2 = this.next;
+ n2 && s2 && (n2.removeAttribute(X), s2.removeAttribute(X), t2.isInfinite || (i2 <= 0 && n2.setAttribute(X, ""), i2 >= e2 - 1 && s2.setAttribute(X, "")));
+ }
+ addBtn(t2) {
+ var e2;
+ const i2 = this.instance, n2 = document.createElement("button");
+ n2.setAttribute("tabindex", "0"), n2.setAttribute("title", i2.localize(`{{${t2.toUpperCase()}}}`)), P(n2, this.cn("button") + " " + this.cn(t2 === q ? "isNext" : "isPrev"));
+ const s2 = i2.isRTL ? t2 === q ? Y : q : t2;
+ var o2;
+ return n2.innerHTML = i2.localize(this.option(`${s2}Tpl`)), n2.dataset[`carousel${o2 = t2, o2 ? o2.match("^[a-z]") ? o2.charAt(0).toUpperCase() + o2.substring(1) : o2 : ""}`] = "true", null === (e2 = this.container) || void 0 === e2 || e2.appendChild(n2), n2;
+ }
+ build() {
+ const t2 = this.instance.container, e2 = this.cn("container");
+ let { container: i2, prev: n2, next: s2 } = this;
+ i2 || (i2 = t2.querySelector("." + e2), this.isDom = !!i2), i2 || (i2 = document.createElement("div"), P(i2, e2), t2.appendChild(i2)), this.container = i2, s2 || (s2 = i2.querySelector("[data-carousel-next]")), s2 || (s2 = this.addBtn(q)), this.next = s2, n2 || (n2 = i2.querySelector("[data-carousel-prev]")), n2 || (n2 = this.addBtn(Y)), this.prev = n2;
+ }
+ cleanup() {
+ this.isDom || (this.prev && this.prev.remove(), this.next && this.next.remove(), this.container && this.container.remove()), this.prev = null, this.next = null, this.container = null, this.isDom = false;
+ }
+ attach() {
+ this.instance.on(["refresh", "change"], this.onRefresh);
+ }
+ detach() {
+ this.instance.off(["refresh", "change"], this.onRefresh), this.cleanup();
+ }
+};
+Object.defineProperty(V, "defaults", { enumerable: true, configurable: true, writable: true, value: { classes: { container: "f-carousel__nav", button: "f-button", isNext: "is-next", isPrev: "is-prev" }, nextTpl: ' ', prevTpl: ' ' } });
+var Z = class extends _ {
+ constructor() {
+ super(...arguments), Object.defineProperty(this, "selectedIndex", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "target", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "nav", { enumerable: true, configurable: true, writable: true, value: null });
+ }
+ addAsTargetFor(t2) {
+ this.target = this.instance, this.nav = t2, this.attachEvents();
+ }
+ addAsNavFor(t2) {
+ this.nav = this.instance, this.target = t2, this.attachEvents();
+ }
+ attachEvents() {
+ const { nav: t2, target: e2 } = this;
+ t2 && e2 && (t2.options.initialSlide = e2.options.initialPage, t2.state === B.Ready ? this.onNavReady(t2) : t2.on("ready", this.onNavReady), e2.state === B.Ready ? this.onTargetReady(e2) : e2.on("ready", this.onTargetReady));
+ }
+ onNavReady(t2) {
+ t2.on("createSlide", this.onNavCreateSlide), t2.on("Panzoom.click", this.onNavClick), t2.on("Panzoom.touchEnd", this.onNavTouch), this.onTargetChange();
+ }
+ onTargetReady(t2) {
+ t2.on("change", this.onTargetChange), t2.on("Panzoom.refresh", this.onTargetChange), this.onTargetChange();
+ }
+ onNavClick(t2, e2, i2) {
+ this.onNavTouch(t2, t2.panzoom, i2);
+ }
+ onNavTouch(t2, e2, i2) {
+ var n2, s2;
+ if (Math.abs(e2.dragOffset.x) > 3 || Math.abs(e2.dragOffset.y) > 3) return;
+ const o2 = i2.target, { nav: a2, target: r2 } = this;
+ if (!a2 || !r2 || !o2) return;
+ const l2 = o2.closest("[data-index]");
+ if (i2.stopPropagation(), i2.preventDefault(), !l2) return;
+ const c2 = parseInt(l2.dataset.index || "", 10) || 0, h2 = r2.getPageForSlide(c2), d2 = a2.getPageForSlide(c2);
+ a2.slideTo(d2), r2.slideTo(h2, { friction: (null === (s2 = null === (n2 = this.nav) || void 0 === n2 ? void 0 : n2.plugins) || void 0 === s2 ? void 0 : s2.Sync.option("friction")) || 0 }), this.markSelectedSlide(c2);
+ }
+ onNavCreateSlide(t2, e2) {
+ e2.index === this.selectedIndex && this.markSelectedSlide(e2.index);
+ }
+ onTargetChange() {
+ var t2, e2;
+ const { target: i2, nav: n2 } = this;
+ if (!i2 || !n2) return;
+ if (n2.state !== B.Ready || i2.state !== B.Ready) return;
+ const s2 = null === (e2 = null === (t2 = i2.pages[i2.page]) || void 0 === t2 ? void 0 : t2.slides[0]) || void 0 === e2 ? void 0 : e2.index, o2 = n2.getPageForSlide(s2);
+ this.markSelectedSlide(s2), n2.slideTo(o2, null === n2.prevPage && null === i2.prevPage ? { friction: 0 } : void 0);
+ }
+ markSelectedSlide(t2) {
+ const e2 = this.nav;
+ e2 && e2.state === B.Ready && (this.selectedIndex = t2, [...e2.slides].map((e3) => {
+ e3.el && e3.el.classList[e3.index === t2 ? "add" : "remove"]("is-nav-selected");
+ }));
+ }
+ attach() {
+ const t2 = this;
+ let e2 = t2.options.target, i2 = t2.options.nav;
+ e2 ? t2.addAsNavFor(e2) : i2 && t2.addAsTargetFor(i2);
+ }
+ detach() {
+ const t2 = this, e2 = t2.nav, i2 = t2.target;
+ e2 && (e2.off("ready", t2.onNavReady), e2.off("createSlide", t2.onNavCreateSlide), e2.off("Panzoom.click", t2.onNavClick), e2.off("Panzoom.touchEnd", t2.onNavTouch)), t2.nav = null, i2 && (i2.off("ready", t2.onTargetReady), i2.off("refresh", t2.onTargetChange), i2.off("change", t2.onTargetChange)), t2.target = null;
+ }
+};
+Object.defineProperty(Z, "defaults", { enumerable: true, configurable: true, writable: true, value: { friction: 0.35 } });
+var U = { Navigation: V, Dots: W, Sync: Z };
+var G = "animationend";
+var K = "isSelected";
+var J = "slide";
+var Q = class _Q extends g {
+ get axis() {
+ return this.isHorizontal ? "e" : "f";
+ }
+ get isEnabled() {
+ return this.state === B.Ready;
+ }
+ get isInfinite() {
+ let t2 = false;
+ const { contentDim: e2, viewportDim: i2, pages: n2, slides: s2 } = this, o2 = s2[0];
+ return n2.length >= 2 && o2 && e2 + o2.dim >= i2 && (t2 = this.option("infinite")), t2;
+ }
+ get isRTL() {
+ return "rtl" === this.option("direction");
+ }
+ get isHorizontal() {
+ return "x" === this.option("axis");
+ }
+ constructor(t2, e2 = {}, i2 = {}) {
+ if (super(), Object.defineProperty(this, "bp", { enumerable: true, configurable: true, writable: true, value: "" }), Object.defineProperty(this, "lp", { enumerable: true, configurable: true, writable: true, value: 0 }), Object.defineProperty(this, "userOptions", { enumerable: true, configurable: true, writable: true, value: {} }), Object.defineProperty(this, "userPlugins", { enumerable: true, configurable: true, writable: true, value: {} }), Object.defineProperty(this, "state", { enumerable: true, configurable: true, writable: true, value: B.Init }), Object.defineProperty(this, "page", { enumerable: true, configurable: true, writable: true, value: 0 }), Object.defineProperty(this, "prevPage", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "container", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "viewport", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "track", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "slides", { enumerable: true, configurable: true, writable: true, value: [] }), Object.defineProperty(this, "pages", { enumerable: true, configurable: true, writable: true, value: [] }), Object.defineProperty(this, "panzoom", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "inTransition", { enumerable: true, configurable: true, writable: true, value: /* @__PURE__ */ new Set() }), Object.defineProperty(this, "contentDim", { enumerable: true, configurable: true, writable: true, value: 0 }), Object.defineProperty(this, "viewportDim", { enumerable: true, configurable: true, writable: true, value: 0 }), "string" == typeof t2 && (t2 = document.querySelector(t2)), !t2 || !E(t2)) throw new Error("No Element found");
+ this.container = t2, this.slideNext = D(this.slideNext.bind(this), 150), this.slidePrev = D(this.slidePrev.bind(this), 150), this.userOptions = e2, this.userPlugins = i2, queueMicrotask(() => {
+ this.processOptions();
+ });
+ }
+ processOptions() {
+ var t2, e2;
+ const i2 = u({}, _Q.defaults, this.userOptions);
+ let n2 = "";
+ const s2 = i2.breakpoints;
+ if (s2 && d(s2)) for (const [t3, e3] of Object.entries(s2)) window.matchMedia(t3).matches && d(e3) && (n2 += t3, u(i2, e3));
+ n2 === this.bp && this.state !== B.Init || (this.bp = n2, this.state === B.Ready && (i2.initialSlide = (null === (e2 = null === (t2 = this.pages[this.page]) || void 0 === t2 ? void 0 : t2.slides[0]) || void 0 === e2 ? void 0 : e2.index) || 0), this.state !== B.Init && this.destroy(), super.setOptions(i2), false === this.option("enabled") ? this.attachEvents() : setTimeout(() => {
+ this.init();
+ }, 0));
+ }
+ init() {
+ this.state = B.Init, this.emit("init"), this.attachPlugins(Object.assign(Object.assign({}, _Q.Plugins), this.userPlugins)), this.emit("attachPlugins"), this.initLayout(), this.initSlides(), this.updateMetrics(), this.setInitialPosition(), this.initPanzoom(), this.attachEvents(), this.state = B.Ready, this.emit("ready");
+ }
+ initLayout() {
+ const { container: t2 } = this, e2 = this.option("classes");
+ P(t2, this.cn("container")), o(t2, e2.isLTR, !this.isRTL), o(t2, e2.isRTL, this.isRTL), o(t2, e2.isVertical, !this.isHorizontal), o(t2, e2.isHorizontal, this.isHorizontal);
+ let i2 = this.option("viewport") || t2.querySelector(`.${e2.viewport}`);
+ i2 || (i2 = document.createElement("div"), P(i2, e2.viewport), i2.append(...F(t2, `.${e2.slide}`)), t2.prepend(i2)), i2.addEventListener("scroll", this.onScroll);
+ let n2 = this.option("track") || t2.querySelector(`.${e2.track}`);
+ n2 || (n2 = document.createElement("div"), P(n2, e2.track), n2.append(...Array.from(i2.childNodes))), n2.setAttribute("aria-live", "polite"), i2.contains(n2) || i2.prepend(n2), this.viewport = i2, this.track = n2, this.emit("initLayout");
+ }
+ initSlides() {
+ const { track: t2 } = this;
+ if (!t2) return;
+ const e2 = [...this.slides], i2 = [];
+ [...F(t2, `.${this.cn(J)}`)].forEach((t3) => {
+ if (E(t3)) {
+ const e3 = H({ el: t3, isDom: true, index: this.slides.length });
+ i2.push(e3);
+ }
+ });
+ for (let t3 of [...this.option("slides", []) || [], ...e2]) i2.push(H(t3));
+ this.slides = i2;
+ for (let t3 = 0; t3 < this.slides.length; t3++) this.slides[t3].index = t3;
+ for (const t3 of i2) this.emit("beforeInitSlide", t3, t3.index), this.emit("initSlide", t3, t3.index);
+ this.emit("initSlides");
+ }
+ setInitialPage() {
+ const t2 = this.option("initialSlide");
+ this.page = "number" == typeof t2 ? this.getPageForSlide(t2) : parseInt(this.option("initialPage", 0) + "", 10) || 0;
+ }
+ setInitialPosition() {
+ const { track: t2, pages: e2, isHorizontal: i2 } = this;
+ if (!t2 || !e2.length) return;
+ let n2 = this.page;
+ e2[n2] || (this.page = n2 = 0);
+ const s2 = (e2[n2].pos || 0) * (this.isRTL && i2 ? 1 : -1), o2 = i2 ? `${s2}px` : "0", a2 = i2 ? "0" : `${s2}px`;
+ t2.style.transform = `translate3d(${o2}, ${a2}, 0) scale(1)`, this.option("adaptiveHeight") && this.setViewportHeight();
+ }
+ initPanzoom() {
+ this.panzoom && (this.panzoom.destroy(), this.panzoom = null);
+ const t2 = this.option("Panzoom") || {};
+ this.panzoom = new I(this.viewport, u({}, { content: this.track, zoom: false, panOnlyZoomed: false, lockAxis: this.isHorizontal ? "x" : "y", infinite: this.isInfinite, click: false, dblClick: false, touch: (t3) => !(this.pages.length < 2 && !t3.options.infinite), bounds: () => this.getBounds(), maxVelocity: (t3) => Math.abs(t3.target[this.axis] - t3.current[this.axis]) < 2 * this.viewportDim ? 100 : 0 }, t2)), this.panzoom.on("*", (t3, e2, ...i2) => {
+ this.emit(`Panzoom.${e2}`, t3, ...i2);
+ }), this.panzoom.on("decel", this.onDecel), this.panzoom.on("refresh", this.onRefresh), this.panzoom.on("beforeTransform", this.onBeforeTransform), this.panzoom.on("endAnimation", this.onEndAnimation);
+ }
+ attachEvents() {
+ const t2 = this.container;
+ t2 && (t2.addEventListener("click", this.onClick, { passive: false, capture: false }), t2.addEventListener("slideTo", this.onSlideTo)), window.addEventListener("resize", this.onResize);
+ }
+ createPages() {
+ let t2 = [];
+ const { contentDim: e2, viewportDim: i2 } = this;
+ let n2 = this.option("slidesPerPage");
+ n2 = ("auto" === n2 || e2 <= i2) && false !== this.option("fill") ? 1 / 0 : parseFloat(n2 + "");
+ let s2 = 0, o2 = 0, a2 = 0;
+ for (const e3 of this.slides) (!t2.length || o2 + e3.dim - i2 > 0.05 || a2 >= n2) && (t2.push(N()), s2 = t2.length - 1, o2 = 0, a2 = 0), t2[s2].slides.push(e3), o2 += e3.dim + e3.gap, a2++;
+ return t2;
+ }
+ processPages() {
+ const e2 = this.pages, { contentDim: i2, viewportDim: n2, isInfinite: s2 } = this, o2 = this.option("center"), a2 = this.option("fill"), r2 = a2 && o2 && i2 > n2 && !s2;
+ if (e2.forEach((t2, e3) => {
+ var s3;
+ t2.index = e3, t2.pos = (null === (s3 = t2.slides[0]) || void 0 === s3 ? void 0 : s3.pos) || 0, t2.dim = 0;
+ for (const [e4, i3] of t2.slides.entries()) t2.dim += i3.dim, e4 < t2.slides.length - 1 && (t2.dim += i3.gap);
+ r2 && t2.pos + 0.5 * t2.dim < 0.5 * n2 ? t2.pos = 0 : r2 && t2.pos + 0.5 * t2.dim >= i2 - 0.5 * n2 ? t2.pos = i2 - n2 : o2 && (t2.pos += -0.5 * (n2 - t2.dim));
+ }), e2.forEach((e3) => {
+ a2 && !s2 && i2 > n2 && (e3.pos = Math.max(e3.pos, 0), e3.pos = Math.min(e3.pos, i2 - n2)), e3.pos = t(e3.pos, 1e3), e3.dim = t(e3.dim, 1e3), Math.abs(e3.pos) <= 0.1 && (e3.pos = 0);
+ }), s2) return e2;
+ const l2 = [];
+ let c2;
+ return e2.forEach((t2) => {
+ const e3 = Object.assign({}, t2);
+ c2 && e3.pos === c2.pos ? (c2.dim += e3.dim, c2.slides = [...c2.slides, ...e3.slides]) : (e3.index = l2.length, c2 = e3, l2.push(e3));
+ }), l2;
+ }
+ getPageFromIndex(t2 = 0) {
+ const e2 = this.pages.length;
+ let i2;
+ return t2 = parseInt((t2 || 0).toString()) || 0, i2 = this.isInfinite ? (t2 % e2 + e2) % e2 : Math.max(Math.min(t2, e2 - 1), 0), i2;
+ }
+ getSlideMetrics(e2) {
+ var i2, n2;
+ const s2 = this.isHorizontal ? "width" : "height";
+ let o2 = 0, a2 = 0, r2 = e2.el;
+ const l2 = !(!r2 || r2.parentNode);
+ if (r2 ? o2 = parseFloat(r2.dataset[s2] || "") || 0 : (r2 = document.createElement("div"), r2.style.visibility = "hidden", (this.track || document.body).prepend(r2)), P(r2, this.cn(J) + " " + e2.class + " " + e2.customClass), o2) r2.style[s2] = `${o2}px`, r2.style["width" === s2 ? "height" : "width"] = "";
+ else {
+ l2 && (this.track || document.body).prepend(r2), o2 = r2.getBoundingClientRect()[s2] * Math.max(1, (null === (i2 = window.visualViewport) || void 0 === i2 ? void 0 : i2.scale) || 1);
+ let t2 = r2[this.isHorizontal ? "offsetWidth" : "offsetHeight"];
+ t2 - 1 > o2 && (o2 = t2);
+ }
+ const c2 = getComputedStyle(r2);
+ return "content-box" === c2.boxSizing && (this.isHorizontal ? (o2 += parseFloat(c2.paddingLeft) || 0, o2 += parseFloat(c2.paddingRight) || 0) : (o2 += parseFloat(c2.paddingTop) || 0, o2 += parseFloat(c2.paddingBottom) || 0)), a2 = parseFloat(c2[this.isHorizontal ? "marginRight" : "marginBottom"]) || 0, l2 ? null === (n2 = r2.parentElement) || void 0 === n2 || n2.removeChild(r2) : e2.el || r2.remove(), { dim: t(o2, 1e3), gap: t(a2, 1e3) };
+ }
+ getBounds() {
+ const { isInfinite: t2, isRTL: e2, isHorizontal: i2, pages: n2 } = this;
+ let s2 = { min: 0, max: 0 };
+ if (t2) s2 = { min: -1 / 0, max: 1 / 0 };
+ else if (n2.length) {
+ const t3 = n2[0].pos, o2 = n2[n2.length - 1].pos;
+ s2 = e2 && i2 ? { min: t3, max: o2 } : { min: -1 * o2, max: -1 * t3 };
+ }
+ return { x: i2 ? s2 : { min: 0, max: 0 }, y: i2 ? { min: 0, max: 0 } : s2 };
+ }
+ repositionSlides() {
+ let e2, { isHorizontal: i2, isRTL: n2, isInfinite: s2, viewport: o2, viewportDim: a2, contentDim: r2, page: l2, pages: c2, slides: h2, panzoom: d2 } = this, u2 = 0, p2 = 0, f2 = 0, g2 = 0;
+ d2 ? g2 = -1 * d2.current[this.axis] : c2[l2] && (g2 = c2[l2].pos || 0), e2 = i2 ? n2 ? "right" : "left" : "top", n2 && i2 && (g2 *= -1);
+ for (const i3 of h2) {
+ const n3 = i3.el;
+ n3 ? ("top" === e2 ? (n3.style.right = "", n3.style.left = "") : n3.style.top = "", i3.index !== u2 ? n3.style[e2] = 0 === p2 ? "" : `${t(p2, 1e3)}px` : n3.style[e2] = "", f2 += i3.dim + i3.gap, u2++) : p2 += i3.dim + i3.gap;
+ }
+ if (s2 && f2 && o2) {
+ let n3 = getComputedStyle(o2), s3 = "padding", l3 = i2 ? "Right" : "Bottom", c3 = parseFloat(n3[s3 + (i2 ? "Left" : "Top")]);
+ g2 -= c3, a2 += c3, a2 += parseFloat(n3[s3 + l3]);
+ for (const i3 of h2) i3.el && (t(i3.pos) < t(a2) && t(i3.pos + i3.dim + i3.gap) < t(g2) && t(g2) > t(r2 - a2) && (i3.el.style[e2] = `${t(p2 + f2, 1e3)}px`), t(i3.pos + i3.gap) >= t(r2 - a2) && t(i3.pos) > t(g2 + a2) && t(g2) < t(a2) && (i3.el.style[e2] = `-${t(f2, 1e3)}px`));
+ }
+ let m2, v2, b2 = [...this.inTransition];
+ if (b2.length > 1 && (m2 = c2[b2[0]], v2 = c2[b2[1]]), m2 && v2) {
+ let i3 = 0;
+ for (const n3 of h2) n3.el ? this.inTransition.has(n3.index) && m2.slides.indexOf(n3) < 0 && (n3.el.style[e2] = `${t(i3 + (m2.pos - v2.pos), 1e3)}px`) : i3 += n3.dim + n3.gap;
+ }
+ }
+ createSlideEl(t2) {
+ const { track: e2, slides: i2 } = this;
+ if (!e2 || !t2) return;
+ if (t2.el && t2.el.parentNode) return;
+ const n2 = t2.el || document.createElement("div");
+ P(n2, this.cn(J)), P(n2, t2.class), P(n2, t2.customClass);
+ const s2 = t2.html;
+ s2 && (s2 instanceof HTMLElement ? n2.appendChild(s2) : n2.innerHTML = t2.html + "");
+ const o2 = [];
+ i2.forEach((t3, e3) => {
+ t3.el && o2.push(e3);
+ });
+ const a2 = t2.index;
+ let r2 = null;
+ if (o2.length) {
+ r2 = i2[o2.reduce((t3, e3) => Math.abs(e3 - a2) < Math.abs(t3 - a2) ? e3 : t3)];
+ }
+ const l2 = r2 && r2.el && r2.el.parentNode ? r2.index < t2.index ? r2.el.nextSibling : r2.el : null;
+ e2.insertBefore(n2, e2.contains(l2) ? l2 : null), t2.el = n2, this.emit("createSlide", t2);
+ }
+ removeSlideEl(t2, e2 = false) {
+ const i2 = null == t2 ? void 0 : t2.el;
+ if (!i2 || !i2.parentNode) return;
+ const n2 = this.cn(K);
+ if (i2.classList.contains(n2) && (S(i2, n2), this.emit("unselectSlide", t2)), t2.isDom && !e2) return i2.removeAttribute("aria-hidden"), i2.removeAttribute("data-index"), void (i2.style.left = "");
+ this.emit("removeSlide", t2);
+ const s2 = new CustomEvent(G);
+ i2.dispatchEvent(s2), t2.el && (t2.el.remove(), t2.el = null);
+ }
+ transitionTo(t2 = 0, e2 = this.option("transition")) {
+ var i2, n2, s2, o2;
+ if (!e2) return false;
+ const a2 = this.page, { pages: r2, panzoom: l2 } = this;
+ t2 = parseInt((t2 || 0).toString()) || 0;
+ const c2 = this.getPageFromIndex(t2);
+ if (!l2 || !r2[c2] || r2.length < 2 || Math.abs(((null === (n2 = null === (i2 = r2[a2]) || void 0 === i2 ? void 0 : i2.slides[0]) || void 0 === n2 ? void 0 : n2.dim) || 0) - this.viewportDim) > 1) return false;
+ let h2 = t2 > a2 ? 1 : -1;
+ this.isInfinite && (0 === a2 && t2 === r2.length - 1 && (h2 = -1), a2 === r2.length - 1 && 0 === t2 && (h2 = 1));
+ const d2 = r2[c2].pos * (this.isRTL ? 1 : -1);
+ if (a2 === c2 && Math.abs(d2 - l2.target[this.axis]) < 1) return false;
+ this.clearTransitions();
+ const u2 = l2.isResting;
+ P(this.container, this.cn("inTransition"));
+ const p2 = (null === (s2 = r2[a2]) || void 0 === s2 ? void 0 : s2.slides[0]) || null, f2 = (null === (o2 = r2[c2]) || void 0 === o2 ? void 0 : o2.slides[0]) || null;
+ this.inTransition.add(f2.index), this.createSlideEl(f2);
+ let g2 = p2.el, m2 = f2.el;
+ u2 || e2 === J || (e2 = "fadeFast", g2 = null);
+ const v2 = this.isRTL ? "next" : "prev", b2 = this.isRTL ? "prev" : "next";
+ return g2 && (this.inTransition.add(p2.index), p2.transition = e2, g2.addEventListener(G, this.onAnimationEnd), g2.classList.add(`f-${e2}Out`, `to-${h2 > 0 ? b2 : v2}`)), m2 && (f2.transition = e2, m2.addEventListener(G, this.onAnimationEnd), m2.classList.add(`f-${e2}In`, `from-${h2 > 0 ? v2 : b2}`)), l2.current[this.axis] = d2, l2.target[this.axis] = d2, l2.requestTick(), this.onChange(c2), true;
+ }
+ manageSlideVisiblity() {
+ const t2 = /* @__PURE__ */ new Set(), e2 = /* @__PURE__ */ new Set(), i2 = this.getVisibleSlides(parseFloat(this.option("preload", 0) + "") || 0);
+ for (const n2 of this.slides) i2.has(n2) ? t2.add(n2) : e2.add(n2);
+ for (const e3 of this.inTransition) t2.add(this.slides[e3]);
+ for (const e3 of t2) this.createSlideEl(e3), this.lazyLoadSlide(e3);
+ for (const i3 of e2) t2.has(i3) || this.removeSlideEl(i3);
+ this.markSelectedSlides(), this.repositionSlides();
+ }
+ markSelectedSlides() {
+ if (!this.pages[this.page] || !this.pages[this.page].slides) return;
+ const t2 = "aria-hidden";
+ let e2 = this.cn(K);
+ if (e2) for (const i2 of this.slides) {
+ const n2 = i2.el;
+ n2 && (n2.dataset.index = `${i2.index}`, n2.classList.contains("f-thumbs__slide") ? this.getVisibleSlides(0).has(i2) ? n2.removeAttribute(t2) : n2.setAttribute(t2, "true") : this.pages[this.page].slides.includes(i2) ? (n2.classList.contains(e2) || (P(n2, e2), this.emit("selectSlide", i2)), n2.removeAttribute(t2)) : (n2.classList.contains(e2) && (S(n2, e2), this.emit("unselectSlide", i2)), n2.setAttribute(t2, "true")));
+ }
+ }
+ flipInfiniteTrack() {
+ const { axis: t2, isHorizontal: e2, isInfinite: i2, isRTL: n2, viewportDim: s2, contentDim: o2 } = this, a2 = this.panzoom;
+ if (!a2 || !i2) return;
+ let r2 = a2.current[t2], l2 = a2.target[t2] - r2, c2 = 0, h2 = 0.5 * s2;
+ n2 && e2 ? (r2 < -h2 && (c2 = -1, r2 += o2), r2 > o2 - h2 && (c2 = 1, r2 -= o2)) : (r2 > h2 && (c2 = 1, r2 -= o2), r2 < -o2 + h2 && (c2 = -1, r2 += o2)), c2 && (a2.current[t2] = r2, a2.target[t2] = r2 + l2);
+ }
+ lazyLoadImg(t2, e2) {
+ const i2 = this, s2 = "f-fadeIn", o2 = "is-preloading";
+ let a2 = false, r2 = null;
+ const l2 = () => {
+ a2 || (a2 = true, r2 && (r2.remove(), r2 = null), S(e2, o2), e2.complete && (P(e2, s2), setTimeout(() => {
+ S(e2, s2);
+ }, 350)), this.option("adaptiveHeight") && t2.el && this.pages[this.page].slides.indexOf(t2) > -1 && (i2.updateMetrics(), i2.setViewportHeight()), this.emit("load", t2));
+ };
+ P(e2, o2), e2.src = e2.dataset.lazySrcset || e2.dataset.lazySrc || "", delete e2.dataset.lazySrc, delete e2.dataset.lazySrcset, e2.addEventListener("error", () => {
+ l2();
+ }), e2.addEventListener("load", () => {
+ l2();
+ }), setTimeout(() => {
+ const i3 = e2.parentNode;
+ i3 && t2.el && (e2.complete ? l2() : a2 || (r2 = n(x), i3.insertBefore(r2, e2)));
+ }, 300);
+ }
+ lazyLoadSlide(t2) {
+ const e2 = t2 && t2.el;
+ if (!e2) return;
+ const i2 = /* @__PURE__ */ new Set();
+ let n2 = Array.from(e2.querySelectorAll("[data-lazy-src],[data-lazy-srcset]"));
+ e2.dataset.lazySrc && n2.push(e2), n2.map((t3) => {
+ t3 instanceof HTMLImageElement ? i2.add(t3) : t3 instanceof HTMLElement && t3.dataset.lazySrc && (t3.style.backgroundImage = `url('${t3.dataset.lazySrc}')`, delete t3.dataset.lazySrc);
+ });
+ for (const e3 of i2) this.lazyLoadImg(t2, e3);
+ }
+ onAnimationEnd(t2) {
+ var e2;
+ const i2 = t2.target, n2 = i2 ? parseInt(i2.dataset.index || "", 10) || 0 : -1, s2 = this.slides[n2], o2 = t2.animationName;
+ if (!i2 || !s2 || !o2) return;
+ const a2 = !!this.inTransition.has(n2) && s2.transition;
+ a2 && o2.substring(0, a2.length + 2) === `f-${a2}` && this.inTransition.delete(n2), this.inTransition.size || this.clearTransitions(), n2 === this.page && (null === (e2 = this.panzoom) || void 0 === e2 ? void 0 : e2.isResting) && this.emit("settle");
+ }
+ onDecel(t2, e2 = 0, i2 = 0, n2 = 0, s2 = 0) {
+ if (this.option("dragFree")) return void this.setPageFromPosition();
+ const { isRTL: o2, isHorizontal: a2, axis: r2, pages: l2 } = this, c2 = l2.length, h2 = Math.abs(Math.atan2(i2, e2) / (Math.PI / 180));
+ let d2 = 0;
+ if (d2 = h2 > 45 && h2 < 135 ? a2 ? 0 : i2 : a2 ? e2 : 0, !c2) return;
+ let u2 = this.page, p2 = o2 && a2 ? 1 : -1;
+ const f2 = t2.current[r2] * p2;
+ let { pageIndex: g2 } = this.getPageFromPosition(f2);
+ Math.abs(d2) > 5 ? (l2[u2].dim < document.documentElement["client" + (this.isHorizontal ? "Width" : "Height")] - 1 && (u2 = g2), u2 = o2 && a2 ? d2 < 0 ? u2 - 1 : u2 + 1 : d2 < 0 ? u2 + 1 : u2 - 1) : u2 = 0 === n2 && 0 === s2 ? u2 : g2, this.slideTo(u2, { transition: false, friction: t2.option("decelFriction") });
+ }
+ onClick(t2) {
+ const e2 = t2.target, i2 = e2 && E(e2) ? e2.dataset : null;
+ let n2, s2;
+ i2 && (void 0 !== i2.carouselPage ? (s2 = "slideTo", n2 = i2.carouselPage) : void 0 !== i2.carouselNext ? s2 = "slideNext" : void 0 !== i2.carouselPrev && (s2 = "slidePrev")), s2 ? (t2.preventDefault(), t2.stopPropagation(), e2 && !e2.hasAttribute("disabled") && this[s2](n2)) : this.emit("click", t2);
+ }
+ onSlideTo(t2) {
+ const e2 = t2.detail || 0;
+ this.slideTo(this.getPageForSlide(e2), { friction: 0 });
+ }
+ onChange(t2, e2 = 0) {
+ const i2 = this.page;
+ this.prevPage = i2, this.page = t2, this.option("adaptiveHeight") && this.setViewportHeight(), t2 !== i2 && (this.markSelectedSlides(), this.emit("change", t2, i2, e2));
+ }
+ onRefresh() {
+ let t2 = this.contentDim, e2 = this.viewportDim;
+ this.updateMetrics(), this.contentDim === t2 && this.viewportDim === e2 || this.slideTo(this.page, { friction: 0, transition: false });
+ }
+ onScroll() {
+ var t2;
+ null === (t2 = this.viewport) || void 0 === t2 || t2.scroll(0, 0);
+ }
+ onResize() {
+ this.option("breakpoints") && this.processOptions();
+ }
+ onBeforeTransform(t2) {
+ this.lp !== t2.current[this.axis] && (this.flipInfiniteTrack(), this.manageSlideVisiblity()), this.lp = t2.current.e;
+ }
+ onEndAnimation() {
+ this.inTransition.size || this.emit("settle");
+ }
+ reInit(t2 = null, e2 = null) {
+ this.destroy(), this.state = B.Init, this.prevPage = null, this.userOptions = t2 || this.userOptions, this.userPlugins = e2 || this.userPlugins, this.processOptions();
+ }
+ slideTo(t2 = 0, { friction: e2 = this.option("friction"), transition: i2 = this.option("transition") } = {}) {
+ if (this.state === B.Destroy) return;
+ t2 = parseInt((t2 || 0).toString()) || 0;
+ const n2 = this.getPageFromIndex(t2), { axis: s2, isHorizontal: o2, isRTL: a2, pages: r2, panzoom: l2 } = this, c2 = r2.length, h2 = a2 && o2 ? 1 : -1;
+ if (!l2 || !c2) return;
+ if (this.page !== n2) {
+ const e3 = new Event("beforeChange", { bubbles: true, cancelable: true });
+ if (this.emit("beforeChange", e3, t2), e3.defaultPrevented) return;
+ }
+ if (this.transitionTo(t2, i2)) return;
+ let d2 = r2[n2].pos;
+ if (this.isInfinite) {
+ const e3 = this.contentDim, i3 = l2.target[s2] * h2;
+ if (2 === c2) d2 += e3 * Math.floor(parseFloat(t2 + "") / 2);
+ else {
+ d2 = [d2, d2 - e3, d2 + e3].reduce(function(t3, e4) {
+ return Math.abs(e4 - i3) < Math.abs(t3 - i3) ? e4 : t3;
+ });
+ }
+ }
+ d2 *= h2, Math.abs(l2.target[s2] - d2) < 1 || (l2.panTo({ x: o2 ? d2 : 0, y: o2 ? 0 : d2, friction: e2 }), this.onChange(n2));
+ }
+ slideToClosest(t2) {
+ if (this.panzoom) {
+ const { pageIndex: e2 } = this.getPageFromPosition();
+ this.slideTo(e2, t2);
+ }
+ }
+ slideNext() {
+ this.slideTo(this.page + 1);
+ }
+ slidePrev() {
+ this.slideTo(this.page - 1);
+ }
+ clearTransitions() {
+ this.inTransition.clear(), S(this.container, this.cn("inTransition"));
+ const t2 = ["to-prev", "to-next", "from-prev", "from-next"];
+ for (const e2 of this.slides) {
+ const i2 = e2.el;
+ if (i2) {
+ i2.removeEventListener(G, this.onAnimationEnd), i2.classList.remove(...t2);
+ const n2 = e2.transition;
+ n2 && i2.classList.remove(`f-${n2}Out`, `f-${n2}In`);
+ }
+ }
+ this.manageSlideVisiblity();
+ }
+ addSlide(t2, e2) {
+ var i2, n2, s2, o2;
+ const a2 = this.panzoom, r2 = (null === (i2 = this.pages[this.page]) || void 0 === i2 ? void 0 : i2.pos) || 0, l2 = (null === (n2 = this.pages[this.page]) || void 0 === n2 ? void 0 : n2.dim) || 0, c2 = this.contentDim < this.viewportDim;
+ let h2 = Array.isArray(e2) ? e2 : [e2];
+ const d2 = [];
+ for (const t3 of h2) d2.push(H(t3));
+ this.slides.splice(t2, 0, ...d2);
+ for (let t3 = 0; t3 < this.slides.length; t3++) this.slides[t3].index = t3;
+ for (const t3 of d2) this.emit("beforeInitSlide", t3, t3.index);
+ if (this.page >= t2 && (this.page += d2.length), this.updateMetrics(), a2) {
+ const e3 = (null === (s2 = this.pages[this.page]) || void 0 === s2 ? void 0 : s2.pos) || 0, i3 = (null === (o2 = this.pages[this.page]) || void 0 === o2 ? void 0 : o2.dim) || 0, n3 = this.pages.length || 1, h3 = this.isRTL ? l2 - i3 : i3 - l2, d3 = this.isRTL ? r2 - e3 : e3 - r2;
+ c2 && 1 === n3 ? (t2 <= this.page && (a2.current[this.axis] -= h3, a2.target[this.axis] -= h3), a2.panTo({ [this.isHorizontal ? "x" : "y"]: -1 * e3 })) : d3 && t2 <= this.page && (a2.target[this.axis] -= d3, a2.current[this.axis] -= d3, a2.requestTick());
+ }
+ for (const t3 of d2) this.emit("initSlide", t3, t3.index);
+ }
+ prependSlide(t2) {
+ this.addSlide(0, t2);
+ }
+ appendSlide(t2) {
+ this.addSlide(this.slides.length, t2);
+ }
+ removeSlide(t2) {
+ const e2 = this.slides.length;
+ t2 = (t2 % e2 + e2) % e2;
+ const i2 = this.slides[t2];
+ if (i2) {
+ this.removeSlideEl(i2, true), this.slides.splice(t2, 1);
+ for (let t3 = 0; t3 < this.slides.length; t3++) this.slides[t3].index = t3;
+ this.updateMetrics(), this.slideTo(this.page, { friction: 0, transition: false }), this.emit("destroySlide", i2);
+ }
+ }
+ updateMetrics() {
+ const { panzoom: e2, viewport: i2, track: n2, slides: s2, isHorizontal: o2, isInfinite: a2 } = this;
+ if (!n2) return;
+ const r2 = o2 ? "width" : "height", l2 = o2 ? "offsetWidth" : "offsetHeight";
+ if (i2) {
+ let e3 = Math.max(i2[l2], t(i2.getBoundingClientRect()[r2], 1e3)), n3 = getComputedStyle(i2), s3 = "padding", a3 = o2 ? "Right" : "Bottom";
+ e3 -= parseFloat(n3[s3 + (o2 ? "Left" : "Top")]) + parseFloat(n3[s3 + a3]), this.viewportDim = e3;
+ }
+ let c2, h2 = 0;
+ for (const [e3, i3] of s2.entries()) {
+ let n3 = 0, o3 = 0;
+ !i3.el && c2 ? (n3 = c2.dim, o3 = c2.gap) : ({ dim: n3, gap: o3 } = this.getSlideMetrics(i3), c2 = i3), n3 = t(n3, 1e3), o3 = t(o3, 1e3), i3.dim = n3, i3.gap = o3, i3.pos = h2, h2 += n3, (a2 || e3 < s2.length - 1) && (h2 += o3);
+ }
+ h2 = t(h2, 1e3), this.contentDim = h2, e2 && (e2.contentRect[r2] = h2, e2.contentRect[o2 ? "fullWidth" : "fullHeight"] = h2), this.pages = this.createPages(), this.pages = this.processPages(), this.state === B.Init && this.setInitialPage(), this.page = Math.max(0, Math.min(this.page, this.pages.length - 1)), this.manageSlideVisiblity(), this.emit("refresh");
+ }
+ getProgress(e2, i2 = false, n2 = false) {
+ void 0 === e2 && (e2 = this.page);
+ const s2 = this, o2 = s2.panzoom, a2 = s2.contentDim, r2 = s2.pages[e2] || 0;
+ if (!r2 || !o2) return e2 > this.page ? -1 : 1;
+ let l2 = -1 * o2.current.e, c2 = t((l2 - r2.pos) / (1 * r2.dim), 1e3), h2 = c2, d2 = c2;
+ this.isInfinite && true !== n2 && (h2 = t((l2 - r2.pos + a2) / (1 * r2.dim), 1e3), d2 = t((l2 - r2.pos - a2) / (1 * r2.dim), 1e3));
+ let u2 = [c2, h2, d2].reduce(function(t2, e3) {
+ return Math.abs(e3) < Math.abs(t2) ? e3 : t2;
+ });
+ return i2 ? u2 : u2 > 1 ? 1 : u2 < -1 ? -1 : u2;
+ }
+ setViewportHeight() {
+ const { page: t2, pages: e2, viewport: i2, isHorizontal: n2 } = this;
+ if (!i2 || !e2[t2]) return;
+ let s2 = 0;
+ n2 && this.track && (this.track.style.height = "auto", e2[t2].slides.forEach((t3) => {
+ t3.el && (s2 = Math.max(s2, t3.el.offsetHeight));
+ })), i2.style.height = s2 ? `${s2}px` : "";
+ }
+ getPageForSlide(t2) {
+ for (const e2 of this.pages) for (const i2 of e2.slides) if (i2.index === t2) return e2.index;
+ return -1;
+ }
+ getVisibleSlides(t2 = 0) {
+ var e2;
+ const i2 = /* @__PURE__ */ new Set();
+ let { panzoom: n2, contentDim: s2, viewportDim: o2, pages: a2, page: r2 } = this;
+ if (o2) {
+ s2 = s2 + (null === (e2 = this.slides[this.slides.length - 1]) || void 0 === e2 ? void 0 : e2.gap) || 0;
+ let l2 = 0;
+ l2 = n2 && n2.state !== m.Init && n2.state !== m.Destroy ? -1 * n2.current[this.axis] : a2[r2] && a2[r2].pos || 0, this.isInfinite && (l2 -= Math.floor(l2 / s2) * s2), this.isRTL && this.isHorizontal && (l2 *= -1);
+ const c2 = l2 - o2 * t2, h2 = l2 + o2 * (t2 + 1), d2 = this.isInfinite ? [-1, 0, 1] : [0];
+ for (const t3 of this.slides) for (const e3 of d2) {
+ const n3 = t3.pos + e3 * s2, o3 = n3 + t3.dim + t3.gap;
+ n3 < h2 && o3 > c2 && i2.add(t3);
+ }
+ }
+ return i2;
+ }
+ getPageFromPosition(t2) {
+ const { viewportDim: e2, contentDim: i2, slides: n2, pages: s2, panzoom: o2 } = this, a2 = s2.length, r2 = n2.length, l2 = n2[0], c2 = n2[r2 - 1], h2 = this.option("center");
+ let d2 = 0, u2 = 0, p2 = 0, f2 = void 0 === t2 ? -1 * ((null == o2 ? void 0 : o2.target[this.axis]) || 0) : t2;
+ h2 && (f2 += 0.5 * e2), this.isInfinite ? (f2 < l2.pos - 0.5 * c2.gap && (f2 -= i2, p2 = -1), f2 > c2.pos + c2.dim + 0.5 * c2.gap && (f2 -= i2, p2 = 1)) : f2 = Math.max(l2.pos || 0, Math.min(f2, c2.pos));
+ let g2 = c2, m2 = n2.find((t3) => {
+ const e3 = t3.pos - 0.5 * g2.gap, i3 = t3.pos + t3.dim + 0.5 * t3.gap;
+ return g2 = t3, f2 >= e3 && f2 < i3;
+ });
+ return m2 || (m2 = c2), u2 = this.getPageForSlide(m2.index), d2 = u2 + p2 * a2, { page: d2, pageIndex: u2 };
+ }
+ setPageFromPosition() {
+ const { pageIndex: t2 } = this.getPageFromPosition();
+ this.onChange(t2);
+ }
+ destroy() {
+ if ([B.Destroy].includes(this.state)) return;
+ this.state = B.Destroy;
+ const { container: t2, viewport: e2, track: i2, slides: n2, panzoom: s2 } = this, o2 = this.option("classes");
+ t2.removeEventListener("click", this.onClick, { passive: false, capture: false }), t2.removeEventListener("slideTo", this.onSlideTo), window.removeEventListener("resize", this.onResize), s2 && (s2.destroy(), this.panzoom = null), n2 && n2.forEach((t3) => {
+ this.removeSlideEl(t3);
+ }), this.detachPlugins(), e2 && (e2.removeEventListener("scroll", this.onScroll), e2.offsetParent && i2 && i2.offsetParent && e2.replaceWith(...i2.childNodes));
+ for (const [e3, i3] of Object.entries(o2)) "container" !== e3 && i3 && t2.classList.remove(i3);
+ this.track = null, this.viewport = null, this.page = 0, this.slides = [];
+ const a2 = this.events.get("ready");
+ this.events = /* @__PURE__ */ new Map(), a2 && this.events.set("ready", a2);
+ }
+};
+Object.defineProperty(Q, "Panzoom", { enumerable: true, configurable: true, writable: true, value: I }), Object.defineProperty(Q, "defaults", { enumerable: true, configurable: true, writable: true, value: j }), Object.defineProperty(Q, "Plugins", { enumerable: true, configurable: true, writable: true, value: U });
+var tt = function(t2) {
+ if (!E(t2)) return 0;
+ const e2 = window.scrollY, i2 = window.innerHeight, n2 = e2 + i2, s2 = t2.getBoundingClientRect(), o2 = s2.y + e2, a2 = s2.height, r2 = o2 + a2;
+ if (e2 > r2 || n2 < o2) return 0;
+ if (e2 < o2 && n2 > r2) return 100;
+ if (o2 < e2 && r2 > n2) return 100;
+ let l2 = a2;
+ o2 < e2 && (l2 -= e2 - o2), r2 > n2 && (l2 -= r2 - n2);
+ const c2 = l2 / i2 * 100;
+ return Math.round(c2);
+};
+var et = !("undefined" == typeof window || !window.document || !window.document.createElement);
+var it;
+var nt = ["a[href]", "area[href]", 'input:not([disabled]):not([type="hidden"]):not([aria-hidden])', "select:not([disabled]):not([aria-hidden])", "textarea:not([disabled]):not([aria-hidden])", "button:not([disabled]):not([aria-hidden]):not(.fancybox-focus-guard)", "iframe", "object", "embed", "video", "audio", "[contenteditable]", '[tabindex]:not([tabindex^="-"]):not([disabled]):not([aria-hidden])'].join(",");
+var st = (t2) => {
+ if (t2 && et) {
+ void 0 === it && document.createElement("div").focus({ get preventScroll() {
+ return it = true, false;
+ } });
+ try {
+ if (it) t2.focus({ preventScroll: true });
+ else {
+ const e2 = window.scrollY || document.body.scrollTop, i2 = window.scrollX || document.body.scrollLeft;
+ t2.focus(), document.body.scrollTo({ top: e2, left: i2, behavior: "auto" });
+ }
+ } catch (t3) {
+ }
+ }
+};
+var ot = () => {
+ const t2 = document;
+ let e2, i2 = "", n2 = "", s2 = "";
+ return t2.fullscreenEnabled ? (i2 = "requestFullscreen", n2 = "exitFullscreen", s2 = "fullscreenElement") : t2.webkitFullscreenEnabled && (i2 = "webkitRequestFullscreen", n2 = "webkitExitFullscreen", s2 = "webkitFullscreenElement"), i2 && (e2 = { request: function(e3 = t2.documentElement) {
+ return "webkitRequestFullscreen" === i2 ? e3[i2](Element.ALLOW_KEYBOARD_INPUT) : e3[i2]();
+ }, exit: function() {
+ return t2[s2] && t2[n2]();
+ }, isFullscreen: function() {
+ return t2[s2];
+ } }), e2;
+};
+var at = { animated: true, autoFocus: true, backdropClick: "close", Carousel: { classes: { container: "fancybox__carousel", viewport: "fancybox__viewport", track: "fancybox__track", slide: "fancybox__slide" } }, closeButton: "auto", closeExisting: false, commonCaption: false, compact: () => window.matchMedia("(max-width: 578px), (max-height: 578px)").matches, contentClick: "toggleZoom", contentDblClick: false, defaultType: "image", defaultDisplay: "flex", dragToClose: true, Fullscreen: { autoStart: false }, groupAll: false, groupAttr: "data-fancybox", hideClass: "f-fadeOut", hideScrollbar: true, idle: 3500, keyboard: { Escape: "close", Delete: "close", Backspace: "close", PageUp: "next", PageDown: "prev", ArrowUp: "prev", ArrowDown: "next", ArrowRight: "next", ArrowLeft: "prev" }, l10n: Object.assign(Object.assign({}, b), { CLOSE: "Close", NEXT: "Next", PREV: "Previous", MODAL: "You can close this modal content with the ESC key", ERROR: "Something Went Wrong, Please Try Again Later", IMAGE_ERROR: "Image Not Found", ELEMENT_NOT_FOUND: "HTML Element Not Found", AJAX_NOT_FOUND: "Error Loading AJAX : Not Found", AJAX_FORBIDDEN: "Error Loading AJAX : Forbidden", IFRAME_ERROR: "Error Loading Page", TOGGLE_ZOOM: "Toggle zoom level", TOGGLE_THUMBS: "Toggle thumbnails", TOGGLE_SLIDESHOW: "Toggle slideshow", TOGGLE_FULLSCREEN: "Toggle full-screen mode", DOWNLOAD: "Download" }), parentEl: null, placeFocusBack: true, showClass: "f-zoomInUp", startIndex: 0, tpl: { closeButton: ' ', main: '' }, trapFocus: true, wheel: "zoom" };
+var rt;
+var lt;
+!function(t2) {
+ t2[t2.Init = 0] = "Init", t2[t2.Ready = 1] = "Ready", t2[t2.Closing = 2] = "Closing", t2[t2.CustomClosing = 3] = "CustomClosing", t2[t2.Destroy = 4] = "Destroy";
+}(rt || (rt = {})), function(t2) {
+ t2[t2.Loading = 0] = "Loading", t2[t2.Opening = 1] = "Opening", t2[t2.Ready = 2] = "Ready", t2[t2.Closing = 3] = "Closing";
+}(lt || (lt = {}));
+var ct = "";
+var ht = false;
+var dt = false;
+var ut = null;
+var pt = () => {
+ let t2 = "", e2 = "";
+ const i2 = Oe.getInstance();
+ if (i2) {
+ const n2 = i2.carousel, s2 = i2.getSlide();
+ if (n2 && s2) {
+ let o2 = s2.slug || void 0, a2 = s2.triggerEl || void 0;
+ e2 = o2 || (i2.option("slug") || ""), !e2 && a2 && a2.dataset && (e2 = a2.dataset.fancybox || ""), e2 && "true" !== e2 && (t2 = "#" + e2 + (!o2 && n2.slides.length > 1 ? "-" + (s2.index + 1) : ""));
+ }
+ }
+ return { hash: t2, slug: e2, index: 1 };
+};
+var ft = () => {
+ const t2 = new URL(document.URL).hash, e2 = t2.slice(1).split("-"), i2 = e2[e2.length - 1], n2 = i2 && /^\+?\d+$/.test(i2) && parseInt(e2.pop() || "1", 10) || 1;
+ return { hash: t2, slug: e2.join("-"), index: n2 };
+};
+var gt = () => {
+ const { slug: t2, index: e2 } = ft();
+ if (!t2) return;
+ let i2 = document.querySelector(`[data-slug="${t2}"]`);
+ if (i2 && i2.dispatchEvent(new CustomEvent("click", { bubbles: true, cancelable: true })), Oe.getInstance()) return;
+ const n2 = document.querySelectorAll(`[data-fancybox="${t2}"]`);
+ n2.length && (i2 = n2[e2 - 1], i2 && i2.dispatchEvent(new CustomEvent("click", { bubbles: true, cancelable: true })));
+};
+var mt = () => {
+ if (false === Oe.defaults.Hash) return;
+ const t2 = Oe.getInstance();
+ if (false === (null == t2 ? void 0 : t2.options.Hash)) return;
+ const { slug: e2, index: i2 } = ft(), { slug: n2 } = pt();
+ t2 && (e2 === n2 ? t2.jumpTo(i2 - 1) : (ht = true, t2.close())), gt();
+};
+var vt = () => {
+ ut && clearTimeout(ut), queueMicrotask(() => {
+ mt();
+ });
+};
+var bt = () => {
+ window.addEventListener("hashchange", vt, false), setTimeout(() => {
+ mt();
+ }, 500);
+};
+et && (/complete|interactive|loaded/.test(document.readyState) ? bt() : document.addEventListener("DOMContentLoaded", bt));
+var yt = "is-zooming-in";
+var wt = class extends _ {
+ onCreateSlide(t2, e2, i2) {
+ const n2 = this.instance.optionFor(i2, "src") || "";
+ i2.el && "image" === i2.type && "string" == typeof n2 && this.setImage(i2, n2);
+ }
+ onRemoveSlide(t2, e2, i2) {
+ i2.panzoom && i2.panzoom.destroy(), i2.panzoom = void 0, i2.imageEl = void 0;
+ }
+ onChange(t2, e2, i2, n2) {
+ S(this.instance.container, yt);
+ for (const t3 of e2.slides) {
+ const e3 = t3.panzoom;
+ e3 && t3.index !== i2 && e3.reset(0.35);
+ }
+ }
+ onClose() {
+ var t2;
+ const e2 = this.instance, i2 = e2.container, n2 = e2.getSlide();
+ if (!i2 || !i2.parentElement || !n2) return;
+ const { el: s2, contentEl: o2, panzoom: a2, thumbElSrc: r2 } = n2;
+ if (!s2 || !r2 || !o2 || !a2 || a2.isContentLoading || a2.state === m.Init || a2.state === m.Destroy) return;
+ a2.updateMetrics();
+ let l2 = this.getZoomInfo(n2);
+ if (!l2) return;
+ this.instance.state = rt.CustomClosing, i2.classList.remove(yt), i2.classList.add("is-zooming-out"), o2.style.backgroundImage = `url('${r2}')`;
+ const c2 = i2.getBoundingClientRect();
+ 1 === ((null === (t2 = window.visualViewport) || void 0 === t2 ? void 0 : t2.scale) || 1) && Object.assign(i2.style, { position: "absolute", top: `${i2.offsetTop + window.scrollY}px`, left: `${i2.offsetLeft + window.scrollX}px`, bottom: "auto", right: "auto", width: `${c2.width}px`, height: `${c2.height}px`, overflow: "hidden" });
+ const { x: h2, y: d2, scale: u2, opacity: p2 } = l2;
+ if (p2) {
+ const t3 = ((t4, e3, i3, n3) => {
+ const s3 = e3 - t4, o3 = n3 - i3;
+ return (e4) => i3 + ((e4 - t4) / s3 * o3 || 0);
+ })(a2.scale, u2, 1, 0);
+ a2.on("afterTransform", () => {
+ o2.style.opacity = t3(a2.scale) + "";
+ });
+ }
+ a2.on("endAnimation", () => {
+ e2.destroy();
+ }), a2.target.a = u2, a2.target.b = 0, a2.target.c = 0, a2.target.d = u2, a2.panTo({ x: h2, y: d2, scale: u2, friction: p2 ? 0.2 : 0.33, ignoreBounds: true }), a2.isResting && e2.destroy();
+ }
+ setImage(t2, e2) {
+ const i2 = this.instance;
+ t2.src = e2, this.process(t2, e2).then((e3) => {
+ const { contentEl: n2, imageEl: s2, thumbElSrc: o2, el: a2 } = t2;
+ if (i2.isClosing() || !n2 || !s2) return;
+ n2.offsetHeight;
+ const r2 = !!i2.isOpeningSlide(t2) && this.getZoomInfo(t2);
+ if (this.option("protected") && a2) {
+ a2.addEventListener("contextmenu", (t4) => {
+ t4.preventDefault();
+ });
+ const t3 = document.createElement("div");
+ P(t3, "fancybox-protected"), n2.appendChild(t3);
+ }
+ if (o2 && r2) {
+ const s3 = e3.contentRect, a3 = Math.max(s3.fullWidth, s3.fullHeight);
+ let c2 = null;
+ !r2.opacity && a3 > 1200 && (c2 = document.createElement("img"), P(c2, "fancybox-ghost"), c2.src = o2, n2.appendChild(c2));
+ const h2 = () => {
+ c2 && (P(c2, "f-fadeFastOut"), setTimeout(() => {
+ c2 && (c2.remove(), c2 = null);
+ }, 200));
+ };
+ (l2 = o2, new Promise((t3, e4) => {
+ const i3 = new Image();
+ i3.onload = t3, i3.onerror = e4, i3.src = l2;
+ })).then(() => {
+ i2.hideLoading(t2), t2.state = lt.Opening, this.instance.emit("reveal", t2), this.zoomIn(t2).then(() => {
+ h2(), this.instance.done(t2);
+ }, () => {
+ }), c2 && setTimeout(() => {
+ h2();
+ }, a3 > 2500 ? 800 : 200);
+ }, () => {
+ i2.hideLoading(t2), i2.revealContent(t2);
+ });
+ } else {
+ const n3 = this.optionFor(t2, "initialSize"), s3 = this.optionFor(t2, "zoom"), o3 = { event: i2.prevMouseMoveEvent || i2.options.event, friction: s3 ? 0.12 : 0 };
+ let a3 = i2.optionFor(t2, "showClass") || void 0, r3 = true;
+ i2.isOpeningSlide(t2) && ("full" === n3 ? e3.zoomToFull(o3) : "cover" === n3 ? e3.zoomToCover(o3) : "max" === n3 ? e3.zoomToMax(o3) : r3 = false, e3.stop("current")), r3 && a3 && (a3 = e3.isDragging ? "f-fadeIn" : ""), i2.hideLoading(t2), i2.revealContent(t2, a3);
+ }
+ var l2;
+ }, () => {
+ i2.setError(t2, "{{IMAGE_ERROR}}");
+ });
+ }
+ process(t2, e2) {
+ return new Promise((i2, s2) => {
+ var o2;
+ const a2 = this.instance, r2 = t2.el;
+ a2.clearContent(t2), a2.showLoading(t2);
+ let l2 = this.optionFor(t2, "content");
+ if ("string" == typeof l2 && (l2 = n(l2)), !l2 || !E(l2)) {
+ if (l2 = document.createElement("img"), l2 instanceof HTMLImageElement) {
+ let i3 = "", n2 = t2.caption;
+ i3 = "string" == typeof n2 && n2 ? n2.replace(/<[^>]+>/gi, "").substring(0, 1e3) : `Image ${t2.index + 1} of ${(null === (o2 = a2.carousel) || void 0 === o2 ? void 0 : o2.pages.length) || 1}`, l2.src = e2 || "", l2.alt = i3, l2.draggable = false, t2.srcset && l2.setAttribute("srcset", t2.srcset), this.instance.isOpeningSlide(t2) && (l2.fetchPriority = "high");
+ }
+ t2.sizes && l2.setAttribute("sizes", t2.sizes);
+ }
+ P(l2, "fancybox-image"), t2.imageEl = l2, a2.setContent(t2, l2, false);
+ t2.panzoom = new I(r2, u({ transformParent: true }, this.option("Panzoom") || {}, { content: l2, width: (e3, i3) => a2.optionFor(t2, "width", "auto", i3) || "auto", height: (e3, i3) => a2.optionFor(t2, "height", "auto", i3) || "auto", wheel: () => {
+ const t3 = a2.option("wheel");
+ return ("zoom" === t3 || "pan" == t3) && t3;
+ }, click: (e3, i3) => {
+ var n2, s3;
+ if (a2.isCompact || a2.isClosing()) return false;
+ if (t2.index !== (null === (n2 = a2.getSlide()) || void 0 === n2 ? void 0 : n2.index)) return false;
+ if (i3) {
+ const t3 = i3.composedPath()[0];
+ if (["A", "BUTTON", "TEXTAREA", "OPTION", "INPUT", "SELECT", "VIDEO"].includes(t3.nodeName)) return false;
+ }
+ let o3 = !i3 || i3.target && (null === (s3 = t2.contentEl) || void 0 === s3 ? void 0 : s3.contains(i3.target));
+ return a2.option(o3 ? "contentClick" : "backdropClick") || false;
+ }, dblClick: () => a2.isCompact ? "toggleZoom" : a2.option("contentDblClick") || false, spinner: false, panOnlyZoomed: true, wheelLimit: 1 / 0, on: { ready: (t3) => {
+ i2(t3);
+ }, error: () => {
+ s2();
+ }, destroy: () => {
+ s2();
+ } } }));
+ });
+ }
+ zoomIn(t2) {
+ return new Promise((e2, i2) => {
+ const n2 = this.instance, s2 = n2.container, { panzoom: o2, contentEl: a2, el: r2 } = t2;
+ o2 && o2.updateMetrics();
+ const l2 = this.getZoomInfo(t2);
+ if (!(l2 && r2 && a2 && o2 && s2)) return void i2();
+ const { x: c2, y: h2, scale: d2, opacity: u2 } = l2, p2 = () => {
+ t2.state !== lt.Closing && (u2 && (a2.style.opacity = Math.max(Math.min(1, 1 - (1 - o2.scale) / (1 - d2)), 0) + ""), o2.scale >= 1 && o2.scale > o2.targetScale - 0.1 && e2(o2));
+ }, f2 = (t3) => {
+ (t3.scale < 0.99 || t3.scale > 1.01) && !t3.isDragging || (S(s2, yt), a2.style.opacity = "", t3.off("endAnimation", f2), t3.off("touchStart", f2), t3.off("afterTransform", p2), e2(t3));
+ };
+ o2.on("endAnimation", f2), o2.on("touchStart", f2), o2.on("afterTransform", p2), o2.on(["error", "destroy"], () => {
+ i2();
+ }), o2.panTo({ x: c2, y: h2, scale: d2, friction: 0, ignoreBounds: true }), o2.stop("current");
+ const g2 = { event: "mousemove" === o2.panMode ? n2.prevMouseMoveEvent || n2.options.event : void 0 }, m2 = this.optionFor(t2, "initialSize");
+ P(s2, yt), n2.hideLoading(t2), "full" === m2 ? o2.zoomToFull(g2) : "cover" === m2 ? o2.zoomToCover(g2) : "max" === m2 ? o2.zoomToMax(g2) : o2.reset(0.172);
+ });
+ }
+ getZoomInfo(t2) {
+ const { el: e2, imageEl: i2, thumbEl: n2, panzoom: s2 } = t2, o2 = this.instance, a2 = o2.container;
+ if (!e2 || !i2 || !n2 || !s2 || tt(n2) < 3 || !this.optionFor(t2, "zoom") || !a2 || o2.state === rt.Destroy) return false;
+ if ("0" === getComputedStyle(a2).getPropertyValue("--f-images-zoom")) return false;
+ const r2 = window.visualViewport || null;
+ if (1 !== (r2 ? r2.scale : 1)) return false;
+ let { top: l2, left: c2, width: h2, height: d2 } = n2.getBoundingClientRect(), { top: u2, left: p2, fitWidth: f2, fitHeight: g2 } = s2.contentRect;
+ if (!(h2 && d2 && f2 && g2)) return false;
+ const m2 = s2.container.getBoundingClientRect();
+ p2 += m2.left, u2 += m2.top;
+ const v2 = -1 * (p2 + 0.5 * f2 - (c2 + 0.5 * h2)), b2 = -1 * (u2 + 0.5 * g2 - (l2 + 0.5 * d2)), y2 = h2 / f2;
+ let w2 = this.option("zoomOpacity") || false;
+ return "auto" === w2 && (w2 = Math.abs(h2 / d2 - f2 / g2) > 0.1), { x: v2, y: b2, scale: y2, opacity: w2 };
+ }
+ attach() {
+ const t2 = this, e2 = t2.instance;
+ e2.on("Carousel.change", t2.onChange), e2.on("Carousel.createSlide", t2.onCreateSlide), e2.on("Carousel.removeSlide", t2.onRemoveSlide), e2.on("close", t2.onClose);
+ }
+ detach() {
+ const t2 = this, e2 = t2.instance;
+ e2.off("Carousel.change", t2.onChange), e2.off("Carousel.createSlide", t2.onCreateSlide), e2.off("Carousel.removeSlide", t2.onRemoveSlide), e2.off("close", t2.onClose);
+ }
+};
+Object.defineProperty(wt, "defaults", { enumerable: true, configurable: true, writable: true, value: { initialSize: "fit", Panzoom: { maxScale: 1 }, protected: false, zoom: true, zoomOpacity: "auto" } }), "function" == typeof SuppressedError && SuppressedError;
+var xt = "html";
+var Et = "image";
+var St = "map";
+var Pt = "youtube";
+var Ct = "vimeo";
+var Tt = "html5video";
+var Mt = (t2, e2 = {}) => {
+ const i2 = new URL(t2), n2 = new URLSearchParams(i2.search), s2 = new URLSearchParams();
+ for (const [t3, i3] of [...n2, ...Object.entries(e2)]) {
+ let e3 = i3 + "";
+ if ("t" === t3) {
+ let t4 = e3.match(/((\d*)m)?(\d*)s?/);
+ t4 && s2.set("start", 60 * parseInt(t4[2] || "0") + parseInt(t4[3] || "0") + "");
+ } else s2.set(t3, e3);
+ }
+ let o2 = s2 + "", a2 = t2.match(/#t=((.*)?\d+s)/);
+ return a2 && (o2 += `#t=${a2[1]}`), o2;
+};
+var Ot = { ajax: null, autoSize: true, iframeAttr: { allow: "autoplay; fullscreen", scrolling: "auto" }, preload: true, videoAutoplay: true, videoRatio: 16 / 9, videoTpl: `
+ Sorry, your browser doesn't support embedded videos. `, videoFormat: "", vimeo: { byline: 1, color: "00adef", controls: 1, dnt: 1, muted: 0 }, youtube: { controls: 1, enablejsapi: 1, nocookie: 1, rel: 0, fs: 1 } };
+var At = ["image", "html", "ajax", "inline", "clone", "iframe", "map", "pdf", "html5video", "youtube", "vimeo"];
+var Lt = class extends _ {
+ onBeforeInitSlide(t2, e2, i2) {
+ this.processType(i2);
+ }
+ onCreateSlide(t2, e2, i2) {
+ this.setContent(i2);
+ }
+ onClearContent(t2, e2) {
+ e2.xhr && (e2.xhr.abort(), e2.xhr = null);
+ const i2 = e2.iframeEl;
+ i2 && (i2.onload = i2.onerror = null, i2.src = "//about:blank", e2.iframeEl = null);
+ const n2 = e2.contentEl, s2 = e2.placeholderEl;
+ if ("inline" === e2.type && n2 && s2) n2.classList.remove("fancybox__content"), "none" !== getComputedStyle(n2).getPropertyValue("display") && (n2.style.display = "none"), setTimeout(() => {
+ s2 && (n2 && s2.parentNode && s2.parentNode.insertBefore(n2, s2), s2.remove());
+ }, 0), e2.contentEl = void 0, e2.placeholderEl = void 0;
+ else for (; e2.el && e2.el.firstChild; ) e2.el.removeChild(e2.el.firstChild);
+ }
+ onSelectSlide(t2, e2, i2) {
+ i2.state === lt.Ready && this.playVideo();
+ }
+ onUnselectSlide(t2, e2, i2) {
+ var n2, s2;
+ if (i2.type === Tt) {
+ try {
+ null === (s2 = null === (n2 = i2.el) || void 0 === n2 ? void 0 : n2.querySelector("video")) || void 0 === s2 || s2.pause();
+ } catch (t3) {
+ }
+ return;
+ }
+ let o2;
+ i2.type === Ct ? o2 = { method: "pause", value: "true" } : i2.type === Pt && (o2 = { event: "command", func: "pauseVideo" }), o2 && i2.iframeEl && i2.iframeEl.contentWindow && i2.iframeEl.contentWindow.postMessage(JSON.stringify(o2), "*"), i2.poller && clearTimeout(i2.poller);
+ }
+ onDone(t2, e2) {
+ t2.isCurrentSlide(e2) && !t2.isClosing() && this.playVideo();
+ }
+ onRefresh(t2, e2) {
+ e2.slides.forEach((t3) => {
+ t3.el && (this.resizeIframe(t3), this.setAspectRatio(t3));
+ });
+ }
+ onMessage(t2) {
+ try {
+ let e2 = JSON.parse(t2.data);
+ if ("https://player.vimeo.com" === t2.origin) {
+ if ("ready" === e2.event) for (let e3 of Array.from(document.getElementsByClassName("fancybox__iframe"))) e3 instanceof HTMLIFrameElement && e3.contentWindow === t2.source && (e3.dataset.ready = "true");
+ } else if (t2.origin.match(/^https:\/\/(www.)?youtube(-nocookie)?.com$/) && "onReady" === e2.event) {
+ const t3 = document.getElementById(e2.id);
+ t3 && (t3.dataset.ready = "true");
+ }
+ } catch (t3) {
+ }
+ }
+ loadAjaxContent(t2) {
+ const e2 = this.instance.optionFor(t2, "src") || "";
+ this.instance.showLoading(t2);
+ const i2 = this.instance, n2 = new XMLHttpRequest();
+ i2.showLoading(t2), n2.onreadystatechange = function() {
+ n2.readyState === XMLHttpRequest.DONE && i2.state === rt.Ready && (i2.hideLoading(t2), 200 === n2.status ? i2.setContent(t2, n2.responseText) : i2.setError(t2, 404 === n2.status ? "{{AJAX_NOT_FOUND}}" : "{{AJAX_FORBIDDEN}}"));
+ };
+ const s2 = t2.ajax || null;
+ n2.open(s2 ? "POST" : "GET", e2 + ""), n2.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"), n2.setRequestHeader("X-Requested-With", "XMLHttpRequest"), n2.send(s2), t2.xhr = n2;
+ }
+ setInlineContent(t2) {
+ let e2 = null;
+ if (E(t2.src)) e2 = t2.src;
+ else if ("string" == typeof t2.src) {
+ const i2 = t2.src.split("#", 2).pop();
+ e2 = i2 ? document.getElementById(i2) : null;
+ }
+ if (e2) {
+ if ("clone" === t2.type || e2.closest(".fancybox__slide")) {
+ e2 = e2.cloneNode(true);
+ const i2 = e2.dataset.animationName;
+ i2 && (e2.classList.remove(i2), delete e2.dataset.animationName);
+ let n2 = e2.getAttribute("id");
+ n2 = n2 ? `${n2}--clone` : `clone-${this.instance.id}-${t2.index}`, e2.setAttribute("id", n2);
+ } else if (e2.parentNode) {
+ const i2 = document.createElement("div");
+ i2.classList.add("fancybox-placeholder"), e2.parentNode.insertBefore(i2, e2), t2.placeholderEl = i2;
+ }
+ this.instance.setContent(t2, e2);
+ } else this.instance.setError(t2, "{{ELEMENT_NOT_FOUND}}");
+ }
+ setIframeContent(t2) {
+ const { src: e2, el: i2 } = t2;
+ if (!e2 || "string" != typeof e2 || !i2) return;
+ i2.classList.add("is-loading");
+ const n2 = this.instance, s2 = document.createElement("iframe");
+ s2.className = "fancybox__iframe", s2.setAttribute("id", `fancybox__iframe_${n2.id}_${t2.index}`);
+ for (const [e3, i3] of Object.entries(this.optionFor(t2, "iframeAttr") || {})) s2.setAttribute(e3, i3);
+ s2.onerror = () => {
+ n2.setError(t2, "{{IFRAME_ERROR}}");
+ }, t2.iframeEl = s2;
+ const o2 = this.optionFor(t2, "preload");
+ if ("iframe" !== t2.type || false === o2) return s2.setAttribute("src", t2.src + ""), n2.setContent(t2, s2, false), this.resizeIframe(t2), void n2.revealContent(t2);
+ n2.showLoading(t2), s2.onload = () => {
+ if (!s2.src.length) return;
+ const e3 = "true" !== s2.dataset.ready;
+ s2.dataset.ready = "true", this.resizeIframe(t2), e3 ? n2.revealContent(t2) : n2.hideLoading(t2);
+ }, s2.setAttribute("src", e2), n2.setContent(t2, s2, false);
+ }
+ resizeIframe(t2) {
+ const { type: e2, iframeEl: i2 } = t2;
+ if (e2 === Pt || e2 === Ct) return;
+ const n2 = null == i2 ? void 0 : i2.parentElement;
+ if (!i2 || !n2) return;
+ let s2 = t2.autoSize;
+ void 0 === s2 && (s2 = this.optionFor(t2, "autoSize"));
+ let o2 = t2.width || 0, a2 = t2.height || 0;
+ o2 && a2 && (s2 = false);
+ const r2 = n2 && n2.style;
+ if (false !== t2.preload && false !== s2 && r2) try {
+ const t3 = window.getComputedStyle(n2), e3 = parseFloat(t3.paddingLeft) + parseFloat(t3.paddingRight), s3 = parseFloat(t3.paddingTop) + parseFloat(t3.paddingBottom), l2 = i2.contentWindow;
+ if (l2) {
+ const t4 = l2.document, i3 = t4.getElementsByTagName(xt)[0], n3 = t4.body;
+ r2.width = "", n3.style.overflow = "hidden", o2 = o2 || i3.scrollWidth + e3, r2.width = `${o2}px`, n3.style.overflow = "", r2.flex = "0 0 auto", r2.height = `${n3.scrollHeight}px`, a2 = i3.scrollHeight + s3;
+ }
+ } catch (t3) {
+ }
+ if (o2 || a2) {
+ const t3 = { flex: "0 1 auto", width: "", height: "" };
+ o2 && "auto" !== o2 && (t3.width = `${o2}px`), a2 && "auto" !== a2 && (t3.height = `${a2}px`), Object.assign(r2, t3);
+ }
+ }
+ playVideo() {
+ const t2 = this.instance.getSlide();
+ if (!t2) return;
+ const { el: e2 } = t2;
+ if (!e2 || !e2.offsetParent) return;
+ if (!this.optionFor(t2, "videoAutoplay")) return;
+ if (t2.type === Tt) try {
+ const t3 = e2.querySelector("video");
+ if (t3) {
+ const e3 = t3.play();
+ void 0 !== e3 && e3.then(() => {
+ }).catch((e4) => {
+ t3.muted = true, t3.play();
+ });
+ }
+ } catch (t3) {
+ }
+ if (t2.type !== Pt && t2.type !== Ct) return;
+ const i2 = () => {
+ if (t2.iframeEl && t2.iframeEl.contentWindow) {
+ let e3;
+ if ("true" === t2.iframeEl.dataset.ready) return e3 = t2.type === Pt ? { event: "command", func: "playVideo" } : { method: "play", value: "true" }, e3 && t2.iframeEl.contentWindow.postMessage(JSON.stringify(e3), "*"), void (t2.poller = void 0);
+ t2.type === Pt && (e3 = { event: "listening", id: t2.iframeEl.getAttribute("id") }, t2.iframeEl.contentWindow.postMessage(JSON.stringify(e3), "*"));
+ }
+ t2.poller = setTimeout(i2, 250);
+ };
+ i2();
+ }
+ processType(t2) {
+ if (t2.html) return t2.type = xt, t2.src = t2.html, void (t2.html = "");
+ const e2 = this.instance.optionFor(t2, "src", "");
+ if (!e2 || "string" != typeof e2) return;
+ let i2 = t2.type, n2 = null;
+ if (n2 = e2.match(/(youtube\.com|youtu\.be|youtube\-nocookie\.com)\/(?:watch\?(?:.*&)?v=|v\/|u\/|shorts\/|embed\/?)?(videoseries\?list=(?:.*)|[\w-]{11}|\?listType=(?:.*)&list=(?:.*))(?:.*)/i)) {
+ const s2 = this.optionFor(t2, Pt), { nocookie: o2 } = s2, a2 = function(t3, e3) {
+ var i3 = {};
+ for (var n3 in t3) Object.prototype.hasOwnProperty.call(t3, n3) && e3.indexOf(n3) < 0 && (i3[n3] = t3[n3]);
+ if (null != t3 && "function" == typeof Object.getOwnPropertySymbols) {
+ var s3 = 0;
+ for (n3 = Object.getOwnPropertySymbols(t3); s3 < n3.length; s3++) e3.indexOf(n3[s3]) < 0 && Object.prototype.propertyIsEnumerable.call(t3, n3[s3]) && (i3[n3[s3]] = t3[n3[s3]]);
+ }
+ return i3;
+ }(s2, ["nocookie"]), r2 = `www.youtube${o2 ? "-nocookie" : ""}.com`, l2 = Mt(e2, a2), c2 = encodeURIComponent(n2[2]);
+ t2.videoId = c2, t2.src = `https://${r2}/embed/${c2}?${l2}`, t2.thumbSrc = t2.thumbSrc || `https://i.ytimg.com/vi/${c2}/mqdefault.jpg`, i2 = Pt;
+ } else if (n2 = e2.match(/^.+vimeo.com\/(?:\/)?([\d]+)((\/|\?h=)([a-z0-9]+))?(.*)?/)) {
+ const s2 = Mt(e2, this.optionFor(t2, Ct)), o2 = encodeURIComponent(n2[1]), a2 = n2[4] || "";
+ t2.videoId = o2, t2.src = `https://player.vimeo.com/video/${o2}?${a2 ? `h=${a2}${s2 ? "&" : ""}` : ""}${s2}`, i2 = Ct;
+ }
+ if (!i2 && t2.triggerEl) {
+ const e3 = t2.triggerEl.dataset.type;
+ At.includes(e3) && (i2 = e3);
+ }
+ i2 || "string" == typeof e2 && ("#" === e2.charAt(0) ? i2 = "inline" : (n2 = e2.match(/\.(mp4|mov|ogv|webm)((\?|#).*)?$/i)) ? (i2 = Tt, t2.videoFormat = t2.videoFormat || "video/" + ("ogv" === n2[1] ? "ogg" : n2[1])) : e2.match(/(^data:image\/[a-z0-9+\/=]*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\?|#).*)?$)/i) ? i2 = Et : e2.match(/\.(pdf)((\?|#).*)?$/i) && (i2 = "pdf")), (n2 = e2.match(/(?:maps\.)?google\.([a-z]{2,3}(?:\.[a-z]{2})?)\/(?:(?:(?:maps\/(?:place\/(?:.*)\/)?\@(.*),(\d+.?\d+?)z))|(?:\?ll=))(.*)?/i)) ? (t2.src = `https://maps.google.${n2[1]}/?ll=${(n2[2] ? n2[2] + "&z=" + Math.floor(parseFloat(n2[3])) + (n2[4] ? n2[4].replace(/^\//, "&") : "") : n2[4] + "").replace(/\?/, "&")}&output=${n2[4] && n2[4].indexOf("layer=c") > 0 ? "svembed" : "embed"}`, i2 = St) : (n2 = e2.match(/(?:maps\.)?google\.([a-z]{2,3}(?:\.[a-z]{2})?)\/(?:maps\/search\/)(.*)/i)) && (t2.src = `https://maps.google.${n2[1]}/maps?q=${n2[2].replace("query=", "q=").replace("api=1", "")}&output=embed`, i2 = St), i2 = i2 || this.instance.option("defaultType"), t2.type = i2, i2 === Et && (t2.thumbSrc = t2.thumbSrc || t2.src);
+ }
+ setContent(t2) {
+ const e2 = this.instance.optionFor(t2, "src") || "";
+ if (t2 && t2.type && e2) {
+ switch (t2.type) {
+ case xt:
+ this.instance.setContent(t2, e2);
+ break;
+ case Tt:
+ const i2 = this.option("videoTpl");
+ i2 && this.instance.setContent(t2, i2.replace(/\{\{src\}\}/gi, e2 + "").replace(/\{\{format\}\}/gi, this.optionFor(t2, "videoFormat") || "").replace(/\{\{poster\}\}/gi, t2.poster || t2.thumbSrc || ""));
+ break;
+ case "inline":
+ case "clone":
+ this.setInlineContent(t2);
+ break;
+ case "ajax":
+ this.loadAjaxContent(t2);
+ break;
+ case "pdf":
+ case St:
+ case Pt:
+ case Ct:
+ t2.preload = false;
+ case "iframe":
+ this.setIframeContent(t2);
+ }
+ this.setAspectRatio(t2);
+ }
+ }
+ setAspectRatio(t2) {
+ const e2 = t2.contentEl;
+ if (!(t2.el && e2 && t2.type && [Pt, Ct, Tt].includes(t2.type))) return;
+ let i2, n2 = t2.width || "auto", s2 = t2.height || "auto";
+ if ("auto" === n2 || "auto" === s2) {
+ i2 = this.optionFor(t2, "videoRatio");
+ const e3 = (i2 + "").match(/(\d+)\s*\/\s?(\d+)/);
+ i2 = e3 && e3.length > 2 ? parseFloat(e3[1]) / parseFloat(e3[2]) : parseFloat(i2 + "");
+ } else n2 && s2 && (i2 = n2 / s2);
+ if (!i2) return;
+ e2.style.aspectRatio = "", e2.style.width = "", e2.style.height = "", e2.offsetHeight;
+ const o2 = e2.getBoundingClientRect(), a2 = o2.width || 1, r2 = o2.height || 1;
+ e2.style.aspectRatio = i2 + "", i2 < a2 / r2 ? (s2 = "auto" === s2 ? r2 : Math.min(r2, s2), e2.style.width = "auto", e2.style.height = `${s2}px`) : (n2 = "auto" === n2 ? a2 : Math.min(a2, n2), e2.style.width = `${n2}px`, e2.style.height = "auto");
+ }
+ attach() {
+ const t2 = this, e2 = t2.instance;
+ e2.on("Carousel.beforeInitSlide", t2.onBeforeInitSlide), e2.on("Carousel.createSlide", t2.onCreateSlide), e2.on("Carousel.selectSlide", t2.onSelectSlide), e2.on("Carousel.unselectSlide", t2.onUnselectSlide), e2.on("Carousel.Panzoom.refresh", t2.onRefresh), e2.on("done", t2.onDone), e2.on("clearContent", t2.onClearContent), window.addEventListener("message", t2.onMessage);
+ }
+ detach() {
+ const t2 = this, e2 = t2.instance;
+ e2.off("Carousel.beforeInitSlide", t2.onBeforeInitSlide), e2.off("Carousel.createSlide", t2.onCreateSlide), e2.off("Carousel.selectSlide", t2.onSelectSlide), e2.off("Carousel.unselectSlide", t2.onUnselectSlide), e2.off("Carousel.Panzoom.refresh", t2.onRefresh), e2.off("done", t2.onDone), e2.off("clearContent", t2.onClearContent), window.removeEventListener("message", t2.onMessage);
+ }
+};
+Object.defineProperty(Lt, "defaults", { enumerable: true, configurable: true, writable: true, value: Ot });
+var zt = "play";
+var Rt = "pause";
+var kt = "ready";
+var It = class extends _ {
+ constructor() {
+ super(...arguments), Object.defineProperty(this, "state", { enumerable: true, configurable: true, writable: true, value: kt }), Object.defineProperty(this, "inHover", { enumerable: true, configurable: true, writable: true, value: false }), Object.defineProperty(this, "timer", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "progressBar", { enumerable: true, configurable: true, writable: true, value: null });
+ }
+ get isActive() {
+ return this.state !== kt;
+ }
+ onReady(t2) {
+ this.option("autoStart") && (t2.isInfinite || t2.page < t2.pages.length - 1) && this.start();
+ }
+ onChange() {
+ this.removeProgressBar(), this.pause();
+ }
+ onSettle() {
+ this.resume();
+ }
+ onVisibilityChange() {
+ "visible" === document.visibilityState ? this.resume() : this.pause();
+ }
+ onMouseEnter() {
+ this.inHover = true, this.pause();
+ }
+ onMouseLeave() {
+ var t2;
+ this.inHover = false, (null === (t2 = this.instance.panzoom) || void 0 === t2 ? void 0 : t2.isResting) && this.resume();
+ }
+ onTimerEnd() {
+ const t2 = this.instance;
+ "play" === this.state && (t2.isInfinite || t2.page !== t2.pages.length - 1 ? t2.slideNext() : t2.slideTo(0));
+ }
+ removeProgressBar() {
+ this.progressBar && (this.progressBar.remove(), this.progressBar = null);
+ }
+ createProgressBar() {
+ var t2;
+ if (!this.option("showProgress")) return null;
+ this.removeProgressBar();
+ const e2 = this.instance, i2 = (null === (t2 = e2.pages[e2.page]) || void 0 === t2 ? void 0 : t2.slides) || [];
+ let n2 = this.option("progressParentEl");
+ if (n2 || (n2 = (1 === i2.length ? i2[0].el : null) || e2.viewport), !n2) return null;
+ const s2 = document.createElement("div");
+ return P(s2, "f-progress"), n2.prepend(s2), this.progressBar = s2, s2.offsetHeight, s2;
+ }
+ set() {
+ const t2 = this, e2 = t2.instance;
+ if (e2.pages.length < 2) return;
+ if (t2.timer) return;
+ const i2 = t2.option("timeout");
+ t2.state = zt, P(e2.container, "has-autoplay");
+ let n2 = t2.createProgressBar();
+ n2 && (n2.style.transitionDuration = `${i2}ms`, n2.style.transform = "scaleX(1)"), t2.timer = setTimeout(() => {
+ t2.timer = null, t2.inHover || t2.onTimerEnd();
+ }, i2), t2.emit("set");
+ }
+ clear() {
+ const t2 = this;
+ t2.timer && (clearTimeout(t2.timer), t2.timer = null), t2.removeProgressBar();
+ }
+ start() {
+ const t2 = this;
+ if (t2.set(), t2.state !== kt) {
+ if (t2.option("pauseOnHover")) {
+ const e2 = t2.instance.container;
+ e2.addEventListener("mouseenter", t2.onMouseEnter, false), e2.addEventListener("mouseleave", t2.onMouseLeave, false);
+ }
+ document.addEventListener("visibilitychange", t2.onVisibilityChange, false), t2.emit("start");
+ }
+ }
+ stop() {
+ const t2 = this, e2 = t2.state, i2 = t2.instance.container;
+ t2.clear(), t2.state = kt, i2.removeEventListener("mouseenter", t2.onMouseEnter, false), i2.removeEventListener("mouseleave", t2.onMouseLeave, false), document.removeEventListener("visibilitychange", t2.onVisibilityChange, false), S(i2, "has-autoplay"), e2 !== kt && t2.emit("stop");
+ }
+ pause() {
+ const t2 = this;
+ t2.state === zt && (t2.state = Rt, t2.clear(), t2.emit(Rt));
+ }
+ resume() {
+ const t2 = this, e2 = t2.instance;
+ if (e2.isInfinite || e2.page !== e2.pages.length - 1) if (t2.state !== zt) {
+ if (t2.state === Rt && !t2.inHover) {
+ const e3 = new Event("resume", { bubbles: true, cancelable: true });
+ t2.emit("resume", e3), e3.defaultPrevented || t2.set();
+ }
+ } else t2.set();
+ else t2.stop();
+ }
+ toggle() {
+ this.state === zt || this.state === Rt ? this.stop() : this.start();
+ }
+ attach() {
+ const t2 = this, e2 = t2.instance;
+ e2.on("ready", t2.onReady), e2.on("Panzoom.startAnimation", t2.onChange), e2.on("Panzoom.endAnimation", t2.onSettle), e2.on("Panzoom.touchMove", t2.onChange);
+ }
+ detach() {
+ const t2 = this, e2 = t2.instance;
+ e2.off("ready", t2.onReady), e2.off("Panzoom.startAnimation", t2.onChange), e2.off("Panzoom.endAnimation", t2.onSettle), e2.off("Panzoom.touchMove", t2.onChange), t2.stop();
+ }
+};
+Object.defineProperty(It, "defaults", { enumerable: true, configurable: true, writable: true, value: { autoStart: true, pauseOnHover: true, progressParentEl: null, showProgress: true, timeout: 3e3 } });
+var Dt = class extends _ {
+ constructor() {
+ super(...arguments), Object.defineProperty(this, "ref", { enumerable: true, configurable: true, writable: true, value: null });
+ }
+ onPrepare(t2) {
+ const e2 = t2.carousel;
+ if (!e2) return;
+ const i2 = t2.container;
+ i2 && (e2.options.Autoplay = u({ autoStart: false }, this.option("Autoplay") || {}, { pauseOnHover: false, timeout: this.option("timeout"), progressParentEl: () => this.option("progressParentEl") || null, on: { start: () => {
+ t2.emit("startSlideshow");
+ }, set: (e3) => {
+ var n2;
+ i2.classList.add("has-slideshow"), (null === (n2 = t2.getSlide()) || void 0 === n2 ? void 0 : n2.state) !== lt.Ready && e3.pause();
+ }, stop: () => {
+ i2.classList.remove("has-slideshow"), t2.isCompact || t2.endIdle(), t2.emit("endSlideshow");
+ }, resume: (e3, i3) => {
+ var n2, s2, o2;
+ !i3 || !i3.cancelable || (null === (n2 = t2.getSlide()) || void 0 === n2 ? void 0 : n2.state) === lt.Ready && (null === (o2 = null === (s2 = t2.carousel) || void 0 === s2 ? void 0 : s2.panzoom) || void 0 === o2 ? void 0 : o2.isResting) || i3.preventDefault();
+ } } }), e2.attachPlugins({ Autoplay: It }), this.ref = e2.plugins.Autoplay);
+ }
+ onReady(t2) {
+ const e2 = t2.carousel, i2 = this.ref;
+ i2 && e2 && this.option("playOnStart") && (e2.isInfinite || e2.page < e2.pages.length - 1) && i2.start();
+ }
+ onDone(t2, e2) {
+ const i2 = this.ref, n2 = t2.carousel;
+ if (!i2 || !n2) return;
+ const s2 = e2.panzoom;
+ s2 && s2.on("startAnimation", () => {
+ t2.isCurrentSlide(e2) && i2.stop();
+ }), t2.isCurrentSlide(e2) && i2.resume();
+ }
+ onKeydown(t2, e2) {
+ var i2;
+ const n2 = this.ref;
+ n2 && e2 === this.option("key") && "BUTTON" !== (null === (i2 = document.activeElement) || void 0 === i2 ? void 0 : i2.nodeName) && n2.toggle();
+ }
+ attach() {
+ const t2 = this, e2 = t2.instance;
+ e2.on("Carousel.init", t2.onPrepare), e2.on("Carousel.ready", t2.onReady), e2.on("done", t2.onDone), e2.on("keydown", t2.onKeydown);
+ }
+ detach() {
+ const t2 = this, e2 = t2.instance;
+ e2.off("Carousel.init", t2.onPrepare), e2.off("Carousel.ready", t2.onReady), e2.off("done", t2.onDone), e2.off("keydown", t2.onKeydown);
+ }
+};
+Object.defineProperty(Dt, "defaults", { enumerable: true, configurable: true, writable: true, value: { key: " ", playOnStart: false, progressParentEl: (t2) => {
+ var e2;
+ return (null === (e2 = t2.instance.container) || void 0 === e2 ? void 0 : e2.querySelector(".fancybox__toolbar [data-fancybox-toggle-slideshow]")) || t2.instance.container;
+}, timeout: 3e3 } });
+var Ft = { classes: { container: "f-thumbs f-carousel__thumbs", viewport: "f-thumbs__viewport", track: "f-thumbs__track", slide: "f-thumbs__slide", isResting: "is-resting", isSelected: "is-selected", isLoading: "is-loading", hasThumbs: "has-thumbs" }, minCount: 2, parentEl: null, thumbTpl: ' ', type: "modern" };
+var jt;
+!function(t2) {
+ t2[t2.Init = 0] = "Init", t2[t2.Ready = 1] = "Ready", t2[t2.Hidden = 2] = "Hidden";
+}(jt || (jt = {}));
+var Bt = "isResting";
+var Ht = "thumbWidth";
+var Nt = "thumbHeight";
+var _t = "thumbClipWidth";
+var $t = class extends _ {
+ constructor() {
+ super(...arguments), Object.defineProperty(this, "type", { enumerable: true, configurable: true, writable: true, value: "modern" }), Object.defineProperty(this, "container", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "track", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "carousel", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "thumbWidth", { enumerable: true, configurable: true, writable: true, value: 0 }), Object.defineProperty(this, "thumbClipWidth", { enumerable: true, configurable: true, writable: true, value: 0 }), Object.defineProperty(this, "thumbHeight", { enumerable: true, configurable: true, writable: true, value: 0 }), Object.defineProperty(this, "thumbGap", { enumerable: true, configurable: true, writable: true, value: 0 }), Object.defineProperty(this, "thumbExtraGap", { enumerable: true, configurable: true, writable: true, value: 0 }), Object.defineProperty(this, "state", { enumerable: true, configurable: true, writable: true, value: jt.Init });
+ }
+ get isModern() {
+ return "modern" === this.type;
+ }
+ onInitSlide(t2, e2) {
+ const i2 = e2.el ? e2.el.dataset : void 0;
+ i2 && (e2.thumbSrc = i2.thumbSrc || e2.thumbSrc || "", e2[_t] = parseFloat(i2[_t] || "") || e2[_t] || 0, e2[Nt] = parseFloat(i2.thumbHeight || "") || e2[Nt] || 0), this.addSlide(e2);
+ }
+ onInitSlides() {
+ this.build();
+ }
+ onChange() {
+ var t2;
+ if (!this.isModern) return;
+ const e2 = this.container, i2 = this.instance, n2 = i2.panzoom, s2 = this.carousel, a2 = s2 ? s2.panzoom : null, r2 = i2.page;
+ if (n2 && s2 && a2) {
+ if (n2.isDragging) {
+ S(e2, this.cn(Bt));
+ let n3 = (null === (t2 = s2.pages[r2]) || void 0 === t2 ? void 0 : t2.pos) || 0;
+ n3 += i2.getProgress(r2) * (this[_t] + this.thumbGap);
+ let o2 = a2.getBounds();
+ -1 * n3 > o2.x.min && -1 * n3 < o2.x.max && a2.panTo({ x: -1 * n3, friction: 0.12 });
+ } else o(e2, this.cn(Bt), n2.isResting);
+ this.shiftModern();
+ }
+ }
+ onRefresh() {
+ this.updateProps();
+ for (const t2 of this.instance.slides || []) this.resizeModernSlide(t2);
+ this.shiftModern();
+ }
+ isDisabled() {
+ const t2 = this.option("minCount") || 0;
+ if (t2) {
+ const e3 = this.instance;
+ let i2 = 0;
+ for (const t3 of e3.slides || []) t3.thumbSrc && i2++;
+ if (i2 < t2) return true;
+ }
+ const e2 = this.option("type");
+ return ["modern", "classic"].indexOf(e2) < 0;
+ }
+ getThumb(t2) {
+ const e2 = this.option("thumbTpl") || "";
+ return { html: this.instance.localize(e2, [["%i", t2.index], ["%d", t2.index + 1], ["%s", t2.thumbSrc || "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"]]) };
+ }
+ addSlide(t2) {
+ const e2 = this.carousel;
+ e2 && e2.addSlide(t2.index, this.getThumb(t2));
+ }
+ getSlides() {
+ const t2 = [];
+ for (const e2 of this.instance.slides || []) t2.push(this.getThumb(e2));
+ return t2;
+ }
+ resizeModernSlide(t2) {
+ this.isModern && (t2[Ht] = t2[_t] && t2[Nt] ? Math.round(this[Nt] * (t2[_t] / t2[Nt])) : this[Ht]);
+ }
+ updateProps() {
+ const t2 = this.container;
+ if (!t2) return;
+ const e2 = (e3) => parseFloat(getComputedStyle(t2).getPropertyValue("--f-thumb-" + e3)) || 0;
+ this.thumbGap = e2("gap"), this.thumbExtraGap = e2("extra-gap"), this[Ht] = e2("width") || 40, this[_t] = e2("clip-width") || 40, this[Nt] = e2("height") || 40;
+ }
+ build() {
+ const t2 = this;
+ if (t2.state !== jt.Init) return;
+ if (t2.isDisabled()) return void t2.emit("disabled");
+ const e2 = t2.instance, i2 = e2.container, n2 = t2.getSlides(), s2 = t2.option("type");
+ t2.type = s2;
+ const o2 = t2.option("parentEl"), a2 = t2.cn("container"), r2 = t2.cn("track");
+ let l2 = null == o2 ? void 0 : o2.querySelector("." + a2);
+ l2 || (l2 = document.createElement("div"), P(l2, a2), o2 ? o2.appendChild(l2) : i2.after(l2)), P(l2, `is-${s2}`), P(i2, t2.cn("hasThumbs")), t2.container = l2, t2.updateProps();
+ let c2 = l2.querySelector("." + r2);
+ c2 || (c2 = document.createElement("div"), P(c2, t2.cn("track")), l2.appendChild(c2)), t2.track = c2;
+ const h2 = u({}, { track: c2, infinite: false, center: true, fill: "classic" === s2, dragFree: true, slidesPerPage: 1, transition: false, preload: 0.25, friction: 0.12, Panzoom: { maxVelocity: 0 }, Dots: false, Navigation: false, classes: { container: "f-thumbs", viewport: "f-thumbs__viewport", track: "f-thumbs__track", slide: "f-thumbs__slide" } }, t2.option("Carousel") || {}, { Sync: { target: e2 }, slides: n2 }), d2 = new e2.constructor(l2, h2);
+ d2.on("createSlide", (e3, i3) => {
+ t2.setProps(i3.index), t2.emit("createSlide", i3, i3.el);
+ }), d2.on("ready", () => {
+ t2.shiftModern(), t2.emit("ready");
+ }), d2.on("refresh", () => {
+ t2.shiftModern();
+ }), d2.on("Panzoom.click", (e3, i3, n3) => {
+ t2.onClick(n3);
+ }), t2.carousel = d2, t2.state = jt.Ready;
+ }
+ onClick(t2) {
+ t2.preventDefault(), t2.stopPropagation();
+ const e2 = this.instance, { pages: i2, page: n2 } = e2, s2 = (t3) => {
+ if (t3) {
+ const e3 = t3.closest("[data-carousel-index]");
+ if (e3) return [parseInt(e3.dataset.carouselIndex || "", 10) || 0, e3];
+ }
+ return [-1, void 0];
+ }, o2 = (t3, e3) => {
+ const i3 = document.elementFromPoint(t3, e3);
+ return i3 ? s2(i3) : [-1, void 0];
+ };
+ let [a2, r2] = s2(t2.target);
+ if (a2 > -1) return;
+ const l2 = this[_t], c2 = t2.clientX, h2 = t2.clientY;
+ let [d2, u2] = o2(c2 - l2, h2), [p2, f2] = o2(c2 + l2, h2);
+ u2 && f2 ? (a2 = Math.abs(c2 - u2.getBoundingClientRect().right) < Math.abs(c2 - f2.getBoundingClientRect().left) ? d2 : p2, a2 === n2 && (a2 = a2 === d2 ? p2 : d2)) : u2 ? a2 = d2 : f2 && (a2 = p2), a2 > -1 && i2[a2] && e2.slideTo(a2);
+ }
+ getShift(t2) {
+ var e2;
+ const i2 = this, { instance: n2 } = i2, s2 = i2.carousel;
+ if (!n2 || !s2) return 0;
+ const o2 = i2[Ht], a2 = i2[_t], r2 = i2.thumbGap, l2 = i2.thumbExtraGap;
+ if (!(null === (e2 = s2.slides[t2]) || void 0 === e2 ? void 0 : e2.el)) return 0;
+ const c2 = 0.5 * (o2 - a2), h2 = n2.pages.length - 1;
+ let d2 = n2.getProgress(0), u2 = n2.getProgress(h2), p2 = n2.getProgress(t2, false, true), f2 = 0, g2 = c2 + l2 + r2;
+ const m2 = d2 < 0 && d2 > -1, v2 = u2 > 0 && u2 < 1;
+ return 0 === t2 ? (f2 = g2 * Math.abs(d2), v2 && 1 === d2 && (f2 -= g2 * Math.abs(u2))) : t2 === h2 ? (f2 = g2 * Math.abs(u2) * -1, m2 && -1 === u2 && (f2 += g2 * Math.abs(d2))) : m2 || v2 ? (f2 = -1 * g2, f2 += g2 * Math.abs(d2), f2 += g2 * (1 - Math.abs(u2))) : f2 = g2 * p2, f2;
+ }
+ setProps(e2) {
+ var i2;
+ const n2 = this;
+ if (!n2.isModern) return;
+ const { instance: s2 } = n2, o2 = n2.carousel;
+ if (s2 && o2) {
+ const a2 = null === (i2 = o2.slides[e2]) || void 0 === i2 ? void 0 : i2.el;
+ if (a2 && a2.childNodes.length) {
+ let i3 = t(1 - Math.abs(s2.getProgress(e2))), o3 = t(n2.getShift(e2));
+ a2.style.setProperty("--progress", i3 ? i3 + "" : ""), a2.style.setProperty("--shift", o3 + "");
+ }
+ }
+ }
+ shiftModern() {
+ const t2 = this;
+ if (!t2.isModern) return;
+ const { instance: e2, track: i2 } = t2, n2 = e2.panzoom, s2 = t2.carousel;
+ if (!(e2 && i2 && n2 && s2)) return;
+ if (n2.state === m.Init || n2.state === m.Destroy) return;
+ for (const i3 of e2.slides) t2.setProps(i3.index);
+ let o2 = (t2[_t] + t2.thumbGap) * (s2.slides.length || 0);
+ i2.style.setProperty("--width", o2 + "");
+ }
+ cleanup() {
+ const t2 = this;
+ t2.carousel && t2.carousel.destroy(), t2.carousel = null, t2.container && t2.container.remove(), t2.container = null, t2.track && t2.track.remove(), t2.track = null, t2.state = jt.Init, S(t2.instance.container, t2.cn("hasThumbs"));
+ }
+ attach() {
+ const t2 = this, e2 = t2.instance;
+ e2.on("initSlide", t2.onInitSlide), e2.state === B.Init ? e2.on("initSlides", t2.onInitSlides) : t2.onInitSlides(), e2.on(["change", "Panzoom.afterTransform"], t2.onChange), e2.on("Panzoom.refresh", t2.onRefresh);
+ }
+ detach() {
+ const t2 = this, e2 = t2.instance;
+ e2.off("initSlide", t2.onInitSlide), e2.off("initSlides", t2.onInitSlides), e2.off(["change", "Panzoom.afterTransform"], t2.onChange), e2.off("Panzoom.refresh", t2.onRefresh), t2.cleanup();
+ }
+};
+Object.defineProperty($t, "defaults", { enumerable: true, configurable: true, writable: true, value: Ft });
+var Wt = Object.assign(Object.assign({}, Ft), { key: "t", showOnStart: true, parentEl: null });
+var Xt = "is-masked";
+var qt = "aria-hidden";
+var Yt = class extends _ {
+ constructor() {
+ super(...arguments), Object.defineProperty(this, "ref", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "hidden", { enumerable: true, configurable: true, writable: true, value: false });
+ }
+ get isEnabled() {
+ const t2 = this.ref;
+ return t2 && !t2.isDisabled();
+ }
+ get isHidden() {
+ return this.hidden;
+ }
+ onClick(t2, e2) {
+ e2.stopPropagation();
+ }
+ onCreateSlide(t2, e2) {
+ var i2, n2, s2;
+ const o2 = (null === (s2 = null === (n2 = null === (i2 = this.instance) || void 0 === i2 ? void 0 : i2.carousel) || void 0 === n2 ? void 0 : n2.slides[e2.index]) || void 0 === s2 ? void 0 : s2.type) || "", a2 = e2.el;
+ if (a2 && o2) {
+ let t3 = `for-${o2}`;
+ ["video", "youtube", "vimeo", "html5video"].includes(o2) && (t3 += " for-video"), P(a2, t3);
+ }
+ }
+ onInit() {
+ var t2;
+ const e2 = this, i2 = e2.instance, n2 = i2.carousel;
+ if (e2.ref || !n2) return;
+ const s2 = e2.option("parentEl") || i2.footer || i2.container;
+ if (!s2) return;
+ const o2 = u({}, e2.options, { parentEl: s2, classes: { container: "f-thumbs fancybox__thumbs" }, Carousel: { Sync: { friction: i2.option("Carousel.friction") || 0 } }, on: { ready: (t3) => {
+ const i3 = t3.container;
+ i3 && this.hidden && (e2.refresh(), i3.style.transition = "none", e2.hide(), i3.offsetHeight, queueMicrotask(() => {
+ i3.style.transition = "", e2.show();
+ }));
+ } } });
+ o2.Carousel = o2.Carousel || {}, o2.Carousel.on = u((null === (t2 = e2.options.Carousel) || void 0 === t2 ? void 0 : t2.on) || {}, { click: this.onClick, createSlide: this.onCreateSlide }), n2.options.Thumbs = o2, n2.attachPlugins({ Thumbs: $t }), e2.ref = n2.plugins.Thumbs, e2.option("showOnStart") || (e2.ref.state = jt.Hidden, e2.hidden = true);
+ }
+ onResize() {
+ var t2;
+ const e2 = null === (t2 = this.ref) || void 0 === t2 ? void 0 : t2.container;
+ e2 && (e2.style.maxHeight = "");
+ }
+ onKeydown(t2, e2) {
+ const i2 = this.option("key");
+ i2 && i2 === e2 && this.toggle();
+ }
+ toggle() {
+ const t2 = this.ref;
+ if (t2 && !t2.isDisabled()) return t2.state === jt.Hidden ? (t2.state = jt.Init, void t2.build()) : void (this.hidden ? this.show() : this.hide());
+ }
+ show() {
+ const t2 = this.ref;
+ if (!t2 || t2.isDisabled()) return;
+ const e2 = t2.container;
+ e2 && (this.refresh(), e2.offsetHeight, e2.removeAttribute(qt), e2.classList.remove(Xt), this.hidden = false);
+ }
+ hide() {
+ const t2 = this.ref, e2 = t2 && t2.container;
+ e2 && (this.refresh(), e2.offsetHeight, e2.classList.add(Xt), e2.setAttribute(qt, "true")), this.hidden = true;
+ }
+ refresh() {
+ const t2 = this.ref;
+ if (!t2 || !t2.state) return;
+ const e2 = t2.container, i2 = (null == e2 ? void 0 : e2.firstChild) || null;
+ e2 && i2 && i2.childNodes.length && (e2.style.maxHeight = `${i2.getBoundingClientRect().height}px`);
+ }
+ attach() {
+ const t2 = this, e2 = t2.instance;
+ e2.state === rt.Init ? e2.on("Carousel.init", t2.onInit) : t2.onInit(), e2.on("resize", t2.onResize), e2.on("keydown", t2.onKeydown);
+ }
+ detach() {
+ var t2;
+ const e2 = this, i2 = e2.instance;
+ i2.off("Carousel.init", e2.onInit), i2.off("resize", e2.onResize), i2.off("keydown", e2.onKeydown), null === (t2 = i2.carousel) || void 0 === t2 || t2.detachPlugins(["Thumbs"]), e2.ref = null;
+ }
+};
+Object.defineProperty(Yt, "defaults", { enumerable: true, configurable: true, writable: true, value: Wt });
+var Vt = { panLeft: { icon: ' ', change: { panX: -100 } }, panRight: { icon: ' ', change: { panX: 100 } }, panUp: { icon: ' ', change: { panY: -100 } }, panDown: { icon: ' ', change: { panY: 100 } }, zoomIn: { icon: ' ', action: "zoomIn" }, zoomOut: { icon: ' ', action: "zoomOut" }, toggle1to1: { icon: ' ', action: "toggleZoom" }, toggleZoom: { icon: ' ', action: "toggleZoom" }, iterateZoom: { icon: ' ', action: "iterateZoom" }, rotateCCW: { icon: ' ', action: "rotateCCW" }, rotateCW: { icon: ' ', action: "rotateCW" }, flipX: { icon: ' ', action: "flipX" }, flipY: { icon: ' ', action: "flipY" }, fitX: { icon: ' ', action: "fitX" }, fitY: { icon: ' ', action: "fitY" }, reset: { icon: ' ', action: "reset" }, toggleFS: { icon: ' ', action: "toggleFS" } };
+var Zt;
+!function(t2) {
+ t2[t2.Init = 0] = "Init", t2[t2.Ready = 1] = "Ready", t2[t2.Disabled = 2] = "Disabled";
+}(Zt || (Zt = {}));
+var Ut = { absolute: "auto", display: { left: ["infobar"], middle: [], right: ["iterateZoom", "slideshow", "fullscreen", "thumbs", "close"] }, enabled: "auto", items: { infobar: { tpl: ' /
' }, download: { tpl: ' ' }, prev: { tpl: ' ' }, next: { tpl: ' ' }, slideshow: { tpl: ' ' }, fullscreen: { tpl: ' ' }, thumbs: { tpl: ' ' }, close: { tpl: ' ' } }, parentEl: null };
+var Gt = { tabindex: "-1", width: "24", height: "24", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" };
+var Kt = "has-toolbar";
+var Jt = "fancybox__toolbar";
+var Qt = class extends _ {
+ constructor() {
+ super(...arguments), Object.defineProperty(this, "state", { enumerable: true, configurable: true, writable: true, value: Zt.Init }), Object.defineProperty(this, "container", { enumerable: true, configurable: true, writable: true, value: null });
+ }
+ onReady(t2) {
+ var e2;
+ if (!t2.carousel) return;
+ let i2 = this.option("display"), n2 = this.option("absolute"), s2 = this.option("enabled");
+ if ("auto" === s2) {
+ const t3 = this.instance.carousel;
+ let e3 = 0;
+ if (t3) for (const i3 of t3.slides) (i3.panzoom || "image" === i3.type) && e3++;
+ e3 || (s2 = false);
+ }
+ s2 || (i2 = void 0);
+ let o2 = 0;
+ const a2 = { left: [], middle: [], right: [] };
+ if (i2) for (const t3 of ["left", "middle", "right"]) for (const n3 of i2[t3]) {
+ const i3 = this.createEl(n3);
+ i3 && (null === (e2 = a2[t3]) || void 0 === e2 || e2.push(i3), o2++);
+ }
+ let r2 = null;
+ if (o2 && (r2 = this.createContainer()), r2) {
+ for (const [t3, e3] of Object.entries(a2)) {
+ const i3 = document.createElement("div");
+ P(i3, Jt + "__column is-" + t3);
+ for (const t4 of e3) i3.appendChild(t4);
+ "auto" !== n2 || "middle" !== t3 || e3.length || (n2 = true), r2.appendChild(i3);
+ }
+ true === n2 && P(r2, "is-absolute"), this.state = Zt.Ready, this.onRefresh();
+ } else this.state = Zt.Disabled;
+ }
+ onClick(t2) {
+ var e2, i2;
+ const n2 = this.instance, s2 = n2.getSlide(), o2 = null == s2 ? void 0 : s2.panzoom, a2 = t2.target, r2 = a2 && E(a2) ? a2.dataset : null;
+ if (!r2) return;
+ if (void 0 !== r2.fancyboxToggleThumbs) return t2.preventDefault(), t2.stopPropagation(), void (null === (e2 = n2.plugins.Thumbs) || void 0 === e2 || e2.toggle());
+ if (void 0 !== r2.fancyboxToggleFullscreen) return t2.preventDefault(), t2.stopPropagation(), void this.instance.toggleFullscreen();
+ if (void 0 !== r2.fancyboxToggleSlideshow) {
+ t2.preventDefault(), t2.stopPropagation();
+ const e3 = null === (i2 = n2.carousel) || void 0 === i2 ? void 0 : i2.plugins.Autoplay;
+ let s3 = e3.isActive;
+ return o2 && "mousemove" === o2.panMode && !s3 && o2.reset(), void (s3 ? e3.stop() : e3.start());
+ }
+ const l2 = r2.panzoomAction, c2 = r2.panzoomChange;
+ if ((c2 || l2) && (t2.preventDefault(), t2.stopPropagation()), c2) {
+ let t3 = {};
+ try {
+ t3 = JSON.parse(c2);
+ } catch (t4) {
+ }
+ o2 && o2.applyChange(t3);
+ } else l2 && o2 && o2[l2] && o2[l2]();
+ }
+ onChange() {
+ this.onRefresh();
+ }
+ onRefresh() {
+ if (this.instance.isClosing()) return;
+ const t2 = this.container;
+ if (!t2) return;
+ const e2 = this.instance.getSlide();
+ if (!e2 || e2.state !== lt.Ready) return;
+ const i2 = e2 && !e2.error && e2.panzoom;
+ for (const e3 of t2.querySelectorAll("[data-panzoom-action]")) i2 ? (e3.removeAttribute("disabled"), e3.removeAttribute("tabindex")) : (e3.setAttribute("disabled", ""), e3.setAttribute("tabindex", "-1"));
+ let n2 = i2 && i2.canZoomIn(), s2 = i2 && i2.canZoomOut();
+ for (const e3 of t2.querySelectorAll('[data-panzoom-action="zoomIn"]')) n2 ? (e3.removeAttribute("disabled"), e3.removeAttribute("tabindex")) : (e3.setAttribute("disabled", ""), e3.setAttribute("tabindex", "-1"));
+ for (const e3 of t2.querySelectorAll('[data-panzoom-action="zoomOut"]')) s2 ? (e3.removeAttribute("disabled"), e3.removeAttribute("tabindex")) : (e3.setAttribute("disabled", ""), e3.setAttribute("tabindex", "-1"));
+ for (const e3 of t2.querySelectorAll('[data-panzoom-action="toggleZoom"],[data-panzoom-action="iterateZoom"]')) {
+ s2 || n2 ? (e3.removeAttribute("disabled"), e3.removeAttribute("tabindex")) : (e3.setAttribute("disabled", ""), e3.setAttribute("tabindex", "-1"));
+ const t3 = e3.querySelector("g");
+ t3 && (t3.style.display = n2 ? "" : "none");
+ }
+ }
+ onDone(t2, e2) {
+ var i2;
+ null === (i2 = e2.panzoom) || void 0 === i2 || i2.on("afterTransform", () => {
+ this.instance.isCurrentSlide(e2) && this.onRefresh();
+ }), this.instance.isCurrentSlide(e2) && this.onRefresh();
+ }
+ createContainer() {
+ const t2 = this.instance.container;
+ if (!t2) return null;
+ const e2 = this.option("parentEl") || t2;
+ let i2 = e2.querySelector("." + Jt);
+ return i2 || (i2 = document.createElement("div"), P(i2, Jt), e2.prepend(i2)), i2.addEventListener("click", this.onClick, { passive: false, capture: true }), t2 && P(t2, Kt), this.container = i2, i2;
+ }
+ createEl(t2) {
+ const e2 = this.instance, i2 = e2.carousel;
+ if (!i2) return null;
+ if ("toggleFS" === t2) return null;
+ if ("fullscreen" === t2 && !ot()) return null;
+ let s2 = null;
+ const o2 = i2.slides.length || 0;
+ let a2 = 0, r2 = 0;
+ for (const t3 of i2.slides) (t3.panzoom || "image" === t3.type) && a2++, ("image" === t3.type || t3.downloadSrc) && r2++;
+ if (o2 < 2 && ["infobar", "prev", "next"].includes(t2)) return s2;
+ if (void 0 !== Vt[t2] && !a2) return null;
+ if ("download" === t2 && !r2) return null;
+ if ("thumbs" === t2) {
+ const t3 = e2.plugins.Thumbs;
+ if (!t3 || !t3.isEnabled) return null;
+ }
+ if ("slideshow" === t2) {
+ if (!i2.plugins.Autoplay || o2 < 2) return null;
+ }
+ if (void 0 !== Vt[t2]) {
+ const e3 = Vt[t2];
+ s2 = document.createElement("button"), s2.setAttribute("title", this.instance.localize(`{{${t2.toUpperCase()}}}`)), P(s2, "f-button"), e3.action && (s2.dataset.panzoomAction = e3.action), e3.change && (s2.dataset.panzoomChange = JSON.stringify(e3.change)), s2.appendChild(n(this.instance.localize(e3.icon)));
+ } else {
+ const e3 = (this.option("items") || [])[t2];
+ e3 && (s2 = n(this.instance.localize(e3.tpl)), "function" == typeof e3.click && s2.addEventListener("click", (t3) => {
+ t3.preventDefault(), t3.stopPropagation(), "function" == typeof e3.click && e3.click.call(this, this, t3);
+ }));
+ }
+ const l2 = null == s2 ? void 0 : s2.querySelector("svg");
+ if (l2) for (const [t3, e3] of Object.entries(Gt)) l2.getAttribute(t3) || l2.setAttribute(t3, String(e3));
+ return s2;
+ }
+ removeContainer() {
+ const t2 = this.container;
+ t2 && t2.remove(), this.container = null, this.state = Zt.Disabled;
+ const e2 = this.instance.container;
+ e2 && S(e2, Kt);
+ }
+ attach() {
+ const t2 = this, e2 = t2.instance;
+ e2.on("Carousel.initSlides", t2.onReady), e2.on("done", t2.onDone), e2.on(["reveal", "Carousel.change"], t2.onChange), t2.onReady(t2.instance);
+ }
+ detach() {
+ const t2 = this, e2 = t2.instance;
+ e2.off("Carousel.initSlides", t2.onReady), e2.off("done", t2.onDone), e2.off(["reveal", "Carousel.change"], t2.onChange), t2.removeContainer();
+ }
+};
+Object.defineProperty(Qt, "defaults", { enumerable: true, configurable: true, writable: true, value: Ut });
+var te = { Hash: class extends _ {
+ onReady() {
+ ht = false;
+ }
+ onChange(t2) {
+ ut && clearTimeout(ut);
+ const { hash: e2 } = pt(), { hash: i2 } = ft(), n2 = t2.isOpeningSlide(t2.getSlide());
+ n2 && (ct = i2 === e2 ? "" : i2), e2 && e2 !== i2 && (ut = setTimeout(() => {
+ try {
+ if (t2.state === rt.Ready) {
+ let t3 = "replaceState";
+ n2 && !dt && (t3 = "pushState", dt = true), window.history[t3]({}, document.title, window.location.pathname + window.location.search + e2);
+ }
+ } catch (t3) {
+ }
+ }, 300));
+ }
+ onClose(t2) {
+ if (ut && clearTimeout(ut), !ht && dt) return dt = false, ht = false, void window.history.back();
+ if (!ht) try {
+ window.history.replaceState({}, document.title, window.location.pathname + window.location.search + (ct || ""));
+ } catch (t3) {
+ }
+ }
+ attach() {
+ const t2 = this.instance;
+ t2.on("ready", this.onReady), t2.on(["Carousel.ready", "Carousel.change"], this.onChange), t2.on("close", this.onClose);
+ }
+ detach() {
+ const t2 = this.instance;
+ t2.off("ready", this.onReady), t2.off(["Carousel.ready", "Carousel.change"], this.onChange), t2.off("close", this.onClose);
+ }
+ static parseURL() {
+ return ft();
+ }
+ static startFromUrl() {
+ gt();
+ }
+ static destroy() {
+ window.removeEventListener("hashchange", vt, false);
+ }
+}, Html: Lt, Images: wt, Slideshow: Dt, Thumbs: Yt, Toolbar: Qt };
+var ee = "with-fancybox";
+var ie = "hide-scrollbar";
+var ne = "--fancybox-scrollbar-compensate";
+var se = "--fancybox-body-margin";
+var oe = "aria-hidden";
+var ae = "is-using-tab";
+var re = "is-animated";
+var le = "is-compact";
+var ce = "is-loading";
+var he = "is-opening";
+var de = "has-caption";
+var ue = "disabled";
+var pe = "tabindex";
+var fe = "download";
+var ge = "href";
+var me = "src";
+var ve = (t2) => "string" == typeof t2;
+var be = function() {
+ var t2 = window.getSelection();
+ return !!t2 && "Range" === t2.type;
+};
+var ye;
+var we = null;
+var xe = null;
+var Ee = 0;
+var Se = 0;
+var Pe = 0;
+var Ce = 0;
+var Te = /* @__PURE__ */ new Map();
+var Me = 0;
+var Oe = class _Oe extends g {
+ get isIdle() {
+ return this.idle;
+ }
+ get isCompact() {
+ return this.option("compact");
+ }
+ constructor(t2 = [], e2 = {}, i2 = {}) {
+ super(e2), Object.defineProperty(this, "userSlides", { enumerable: true, configurable: true, writable: true, value: [] }), Object.defineProperty(this, "userPlugins", { enumerable: true, configurable: true, writable: true, value: {} }), Object.defineProperty(this, "idle", { enumerable: true, configurable: true, writable: true, value: false }), Object.defineProperty(this, "idleTimer", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "clickTimer", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "pwt", { enumerable: true, configurable: true, writable: true, value: 0 }), Object.defineProperty(this, "ignoreFocusChange", { enumerable: true, configurable: true, writable: true, value: false }), Object.defineProperty(this, "startedFs", { enumerable: true, configurable: true, writable: true, value: false }), Object.defineProperty(this, "state", { enumerable: true, configurable: true, writable: true, value: rt.Init }), Object.defineProperty(this, "id", { enumerable: true, configurable: true, writable: true, value: 0 }), Object.defineProperty(this, "container", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "caption", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "footer", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "carousel", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "lastFocus", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "prevMouseMoveEvent", { enumerable: true, configurable: true, writable: true, value: void 0 }), ye || (ye = ot()), this.id = e2.id || ++Me, Te.set(this.id, this), this.userSlides = t2, this.userPlugins = i2, queueMicrotask(() => {
+ this.init();
+ });
+ }
+ init() {
+ if (this.state === rt.Destroy) return;
+ this.state = rt.Init, this.attachPlugins(Object.assign(Object.assign({}, _Oe.Plugins), this.userPlugins)), this.emit("init"), this.emit("attachPlugins"), true === this.option("hideScrollbar") && (() => {
+ if (!et) return;
+ const t3 = document, e2 = t3.body, i2 = t3.documentElement;
+ if (e2.classList.contains(ie)) return;
+ let n2 = window.innerWidth - i2.getBoundingClientRect().width;
+ const s2 = parseFloat(window.getComputedStyle(e2).marginRight);
+ n2 < 0 && (n2 = 0), i2.style.setProperty(ne, `${n2}px`), s2 && e2.style.setProperty(se, `${s2}px`), e2.classList.add(ie);
+ })(), this.initLayout(), this.scale();
+ const t2 = () => {
+ this.initCarousel(this.userSlides), this.state = rt.Ready, this.attachEvents(), this.emit("ready"), setTimeout(() => {
+ this.container && this.container.setAttribute(oe, "false");
+ }, 16);
+ };
+ this.option("Fullscreen.autoStart") && ye && !ye.isFullscreen() ? ye.request().then(() => {
+ this.startedFs = true, t2();
+ }).catch(() => t2()) : t2();
+ }
+ initLayout() {
+ var t2, e2;
+ const i2 = this.option("parentEl") || document.body, s2 = n(this.localize(this.option("tpl.main") || ""));
+ if (s2) {
+ if (s2.setAttribute("id", `fancybox-${this.id}`), s2.setAttribute("aria-label", this.localize("{{MODAL}}")), s2.classList.toggle(le, this.isCompact), P(s2, this.option("mainClass") || ""), P(s2, he), this.container = s2, this.footer = s2.querySelector(".fancybox__footer"), i2.appendChild(s2), P(document.documentElement, ee), we && xe || (we = document.createElement("span"), P(we, "fancybox-focus-guard"), we.setAttribute(pe, "0"), we.setAttribute(oe, "true"), we.setAttribute("aria-label", "Focus guard"), xe = we.cloneNode(), null === (t2 = s2.parentElement) || void 0 === t2 || t2.insertBefore(we, s2), null === (e2 = s2.parentElement) || void 0 === e2 || e2.append(xe)), s2.addEventListener("mousedown", (t3) => {
+ Ee = t3.pageX, Se = t3.pageY, S(s2, ae);
+ }), this.option("closeExisting")) for (const t3 of Te.values()) t3.id !== this.id && t3.close();
+ else this.option("animated") && (P(s2, re), setTimeout(() => {
+ this.isClosing() || S(s2, re);
+ }, 350));
+ this.emit("initLayout");
+ }
+ }
+ initCarousel(t2) {
+ const i2 = this.container;
+ if (!i2) return;
+ const n2 = i2.querySelector(".fancybox__carousel");
+ if (!n2) return;
+ const s2 = this.carousel = new Q(n2, u({}, { slides: t2, transition: "fade", Panzoom: { lockAxis: this.option("dragToClose") ? "xy" : "x", infinite: !!this.option("dragToClose") && "y" }, Dots: false, Navigation: { classes: { container: "fancybox__nav", button: "f-button", isNext: "is-next", isPrev: "is-prev" } }, initialPage: this.option("startIndex"), l10n: this.option("l10n") }, this.option("Carousel") || {}));
+ s2.on("*", (t3, e2, ...i3) => {
+ this.emit(`Carousel.${e2}`, t3, ...i3);
+ }), s2.on(["ready", "change"], () => {
+ this.manageCaption();
+ }), this.on("Carousel.removeSlide", (t3, e2, i3) => {
+ this.clearContent(i3), i3.state = void 0;
+ }), s2.on("Panzoom.touchStart", () => {
+ var t3, e2;
+ this.isCompact || this.endIdle(), (null === (t3 = document.activeElement) || void 0 === t3 ? void 0 : t3.closest(".f-thumbs")) && (null === (e2 = this.container) || void 0 === e2 || e2.focus());
+ }), s2.on("settle", () => {
+ this.idleTimer || this.isCompact || !this.option("idle") || this.setIdle(), this.option("autoFocus") && !this.isClosing && this.checkFocus();
+ }), this.option("dragToClose") && (s2.on("Panzoom.afterTransform", (t3, i3) => {
+ const n3 = this.getSlide();
+ if (n3 && e(n3.el)) return;
+ const s3 = this.container;
+ if (s3) {
+ const t4 = Math.abs(i3.current.f), e2 = t4 < 1 ? "" : Math.max(0.5, Math.min(1, 1 - t4 / i3.contentRect.fitHeight * 1.5));
+ s3.style.setProperty("--fancybox-ts", e2 ? "0s" : ""), s3.style.setProperty("--fancybox-opacity", e2 + "");
+ }
+ }), s2.on("Panzoom.touchEnd", (t3, i3, n3) => {
+ var s3;
+ const o2 = this.getSlide();
+ if (o2 && e(o2.el)) return;
+ if (i3.isMobile && document.activeElement && -1 !== ["TEXTAREA", "INPUT"].indexOf(null === (s3 = document.activeElement) || void 0 === s3 ? void 0 : s3.nodeName)) return;
+ const a2 = Math.abs(i3.dragOffset.y);
+ "y" === i3.lockedAxis && (a2 >= 200 || a2 >= 50 && i3.dragOffset.time < 300) && (n3 && n3.cancelable && n3.preventDefault(), this.close(n3, "f-throwOut" + (i3.current.f < 0 ? "Up" : "Down")));
+ })), s2.on("change", (t3) => {
+ var e2;
+ let i3 = null === (e2 = this.getSlide()) || void 0 === e2 ? void 0 : e2.triggerEl;
+ if (i3) {
+ const e3 = new CustomEvent("slideTo", { bubbles: true, cancelable: true, detail: t3.page });
+ i3.dispatchEvent(e3);
+ }
+ }), s2.on(["refresh", "change"], (t3) => {
+ const e2 = this.container;
+ if (!e2) return;
+ for (const i4 of e2.querySelectorAll("[data-fancybox-current-index]")) i4.innerHTML = t3.page + 1;
+ for (const i4 of e2.querySelectorAll("[data-fancybox-count]")) i4.innerHTML = t3.pages.length;
+ if (!t3.isInfinite) {
+ for (const i4 of e2.querySelectorAll("[data-fancybox-next]")) t3.page < t3.pages.length - 1 ? (i4.removeAttribute(ue), i4.removeAttribute(pe)) : (i4.setAttribute(ue, ""), i4.setAttribute(pe, "-1"));
+ for (const i4 of e2.querySelectorAll("[data-fancybox-prev]")) t3.page > 0 ? (i4.removeAttribute(ue), i4.removeAttribute(pe)) : (i4.setAttribute(ue, ""), i4.setAttribute(pe, "-1"));
+ }
+ const i3 = this.getSlide();
+ if (!i3) return;
+ let n3 = i3.downloadSrc || "";
+ n3 || "image" !== i3.type || i3.error || !ve(i3[me]) || (n3 = i3[me]);
+ for (const t4 of e2.querySelectorAll("[data-fancybox-download]")) {
+ const e3 = i3.downloadFilename;
+ n3 ? (t4.removeAttribute(ue), t4.removeAttribute(pe), t4.setAttribute(ge, n3), t4.setAttribute(fe, e3 || n3), t4.setAttribute("target", "_blank")) : (t4.setAttribute(ue, ""), t4.setAttribute(pe, "-1"), t4.removeAttribute(ge), t4.removeAttribute(fe));
+ }
+ }), this.emit("initCarousel");
+ }
+ attachEvents() {
+ const t2 = this, e2 = t2.container;
+ if (!e2) return;
+ e2.addEventListener("click", t2.onClick, { passive: false, capture: false }), e2.addEventListener("wheel", t2.onWheel, { passive: false, capture: false }), document.addEventListener("keydown", t2.onKeydown, { passive: false, capture: true }), document.addEventListener("visibilitychange", t2.onVisibilityChange, false), document.addEventListener("mousemove", t2.onMousemove), t2.option("trapFocus") && document.addEventListener("focus", t2.onFocus, true), window.addEventListener("resize", t2.onResize);
+ const i2 = window.visualViewport;
+ i2 && (i2.addEventListener("scroll", t2.onResize), i2.addEventListener("resize", t2.onResize));
+ }
+ detachEvents() {
+ const t2 = this, e2 = t2.container;
+ if (!e2) return;
+ document.removeEventListener("keydown", t2.onKeydown, { passive: false, capture: true }), e2.removeEventListener("wheel", t2.onWheel, { passive: false, capture: false }), e2.removeEventListener("click", t2.onClick, { passive: false, capture: false }), document.removeEventListener("mousemove", t2.onMousemove), window.removeEventListener("resize", t2.onResize);
+ const i2 = window.visualViewport;
+ i2 && (i2.removeEventListener("resize", t2.onResize), i2.removeEventListener("scroll", t2.onResize)), document.removeEventListener("visibilitychange", t2.onVisibilityChange, false), document.removeEventListener("focus", t2.onFocus, true);
+ }
+ scale() {
+ const t2 = this.container;
+ if (!t2) return;
+ const e2 = window.visualViewport, i2 = Math.max(1, (null == e2 ? void 0 : e2.scale) || 1);
+ let n2 = "", s2 = "", o2 = "";
+ if (e2 && i2 > 1) {
+ let t3 = `${e2.offsetLeft}px`, a2 = `${e2.offsetTop}px`;
+ n2 = e2.width * i2 + "px", s2 = e2.height * i2 + "px", o2 = `translate3d(${t3}, ${a2}, 0) scale(${1 / i2})`;
+ }
+ t2.style.transform = o2, t2.style.width = n2, t2.style.height = s2;
+ }
+ onClick(t2) {
+ var e2;
+ const { container: i2, isCompact: n2 } = this;
+ if (!i2 || this.isClosing()) return;
+ !n2 && this.option("idle") && this.resetIdle();
+ const s2 = t2.composedPath()[0];
+ if (s2.closest(".fancybox-spinner") || s2.closest("[data-fancybox-close]")) return t2.preventDefault(), void this.close(t2);
+ if (s2.closest("[data-fancybox-prev]")) return t2.preventDefault(), void this.prev();
+ if (s2.closest("[data-fancybox-next]")) return t2.preventDefault(), void this.next();
+ if ("click" === t2.type && 0 === t2.detail) return;
+ if (Math.abs(t2.pageX - Ee) > 30 || Math.abs(t2.pageY - Se) > 30) return;
+ const o2 = document.activeElement;
+ if (be() && o2 && i2.contains(o2)) return;
+ if (n2 && "image" === (null === (e2 = this.getSlide()) || void 0 === e2 ? void 0 : e2.type)) return void (this.clickTimer ? (clearTimeout(this.clickTimer), this.clickTimer = null) : this.clickTimer = setTimeout(() => {
+ this.toggleIdle(), this.clickTimer = null;
+ }, 350));
+ if (this.emit("click", t2), t2.defaultPrevented) return;
+ let a2 = false;
+ if (s2.closest(".fancybox__content")) {
+ if (o2) {
+ if (o2.closest("[contenteditable]")) return;
+ s2.matches(nt) || o2.blur();
+ }
+ if (be()) return;
+ a2 = this.option("contentClick");
+ } else s2.closest(".fancybox__carousel") && !s2.matches(nt) && (a2 = this.option("backdropClick"));
+ "close" === a2 ? (t2.preventDefault(), this.close(t2)) : "next" === a2 ? (t2.preventDefault(), this.next()) : "prev" === a2 && (t2.preventDefault(), this.prev());
+ }
+ onWheel(t2) {
+ const e2 = t2.target;
+ let n2 = this.option("wheel", t2);
+ e2.closest(".fancybox__thumbs") && (n2 = "slide");
+ const s2 = "slide" === n2, o2 = [-t2.deltaX || 0, -t2.deltaY || 0, -t2.detail || 0].reduce(function(t3, e3) {
+ return Math.abs(e3) > Math.abs(t3) ? e3 : t3;
+ }), a2 = Math.max(-1, Math.min(1, o2)), r2 = Date.now();
+ this.pwt && r2 - this.pwt < 300 ? s2 && t2.preventDefault() : (this.pwt = r2, this.emit("wheel", t2, a2), t2.defaultPrevented || ("close" === n2 ? (t2.preventDefault(), this.close(t2)) : "slide" === n2 && (i(e2) || (t2.preventDefault(), this[a2 > 0 ? "prev" : "next"]()))));
+ }
+ onScroll() {
+ window.scrollTo(Pe, Ce);
+ }
+ onKeydown(t2) {
+ if (!this.isTopmost()) return;
+ this.isCompact || !this.option("idle") || this.isClosing() || this.resetIdle();
+ const e2 = t2.key, i2 = this.option("keyboard");
+ if (!i2) return;
+ const n2 = t2.composedPath()[0], s2 = document.activeElement && document.activeElement.classList, o2 = s2 && s2.contains("f-button") || n2.dataset.carouselPage || n2.dataset.carouselIndex;
+ if ("Escape" !== e2 && !o2 && E(n2)) {
+ if (n2.isContentEditable || -1 !== ["TEXTAREA", "OPTION", "INPUT", "SELECT", "VIDEO"].indexOf(n2.nodeName)) return;
+ }
+ if ("Tab" === t2.key ? P(this.container, ae) : S(this.container, ae), t2.ctrlKey || t2.altKey || t2.shiftKey) return;
+ this.emit("keydown", e2, t2);
+ const a2 = i2[e2];
+ a2 && "function" == typeof this[a2] && (t2.preventDefault(), this[a2]());
+ }
+ onResize() {
+ const t2 = this.container;
+ if (!t2) return;
+ const e2 = this.isCompact;
+ t2.classList.toggle(le, e2), this.manageCaption(this.getSlide()), this.isCompact ? this.clearIdle() : this.endIdle(), this.scale(), this.emit("resize");
+ }
+ onFocus(t2) {
+ this.isTopmost() && this.checkFocus(t2);
+ }
+ onMousemove(t2) {
+ this.prevMouseMoveEvent = t2, !this.isCompact && this.option("idle") && this.resetIdle();
+ }
+ onVisibilityChange() {
+ "visible" === document.visibilityState ? this.checkFocus() : this.endIdle();
+ }
+ manageCloseBtn(t2) {
+ const e2 = this.optionFor(t2, "closeButton") || false;
+ if ("auto" === e2) {
+ const t3 = this.plugins.Toolbar;
+ if (t3 && t3.state === Zt.Ready) return;
+ }
+ if (!e2) return;
+ if (!t2.contentEl || t2.closeBtnEl) return;
+ const i2 = this.option("tpl.closeButton");
+ if (i2) {
+ const e3 = n(this.localize(i2));
+ t2.closeBtnEl = t2.contentEl.appendChild(e3), t2.el && P(t2.el, "has-close-btn");
+ }
+ }
+ manageCaption(t2 = void 0) {
+ var e2, i2;
+ const n2 = "fancybox__caption", s2 = this.container;
+ if (!s2) return;
+ S(s2, de);
+ const o2 = this.isCompact || this.option("commonCaption"), a2 = !o2;
+ if (this.caption && this.stop(this.caption), a2 && this.caption && (this.caption.remove(), this.caption = null), o2 && !this.caption) for (const t3 of (null === (e2 = this.carousel) || void 0 === e2 ? void 0 : e2.slides) || []) t3.captionEl && (t3.captionEl.remove(), t3.captionEl = void 0, S(t3.el, de), null === (i2 = t3.el) || void 0 === i2 || i2.removeAttribute("aria-labelledby"));
+ if (t2 || (t2 = this.getSlide()), !t2 || o2 && !this.isCurrentSlide(t2)) return;
+ const r2 = t2.el;
+ let l2 = this.optionFor(t2, "caption", "");
+ if (!l2) return void (o2 && this.caption && this.animate(this.caption, "f-fadeOut", () => {
+ this.caption && (this.caption.innerHTML = "");
+ }));
+ let c2 = null;
+ if (a2) {
+ if (c2 = t2.captionEl || null, r2 && !c2) {
+ const e3 = n2 + `_${this.id}_${t2.index}`;
+ c2 = document.createElement("div"), P(c2, n2), c2.setAttribute("id", e3), t2.captionEl = r2.appendChild(c2), P(r2, de), r2.setAttribute("aria-labelledby", e3);
+ }
+ } else {
+ if (c2 = this.caption, c2 || (c2 = s2.querySelector("." + n2)), !c2) {
+ c2 = document.createElement("div"), c2.dataset.fancyboxCaption = "", P(c2, n2);
+ (this.footer || s2).prepend(c2);
+ }
+ P(s2, de), this.caption = c2;
+ }
+ c2 && (c2.innerHTML = "", ve(l2) || "number" == typeof l2 ? c2.innerHTML = l2 + "" : l2 instanceof HTMLElement && c2.appendChild(l2));
+ }
+ checkFocus(t2) {
+ this.focus(t2);
+ }
+ focus(t2) {
+ var e2;
+ if (this.ignoreFocusChange) return;
+ const i2 = document.activeElement || null, n2 = (null == t2 ? void 0 : t2.target) || null, s2 = this.container, o2 = null === (e2 = this.carousel) || void 0 === e2 ? void 0 : e2.viewport;
+ if (!s2 || !o2) return;
+ if (!t2 && i2 && s2.contains(i2)) return;
+ const a2 = this.getSlide(), r2 = a2 && a2.state === lt.Ready ? a2.el : null;
+ if (!r2 || r2.contains(i2) || s2 === i2) return;
+ t2 && t2.cancelable && t2.preventDefault(), this.ignoreFocusChange = true;
+ const l2 = Array.from(s2.querySelectorAll(nt));
+ let c2 = [], h2 = null;
+ for (let t3 of l2) {
+ const e3 = !t3.offsetParent || !!t3.closest('[aria-hidden="true"]'), i3 = r2 && r2.contains(t3), n3 = !o2.contains(t3);
+ if (t3 === s2 || (i3 || n3) && !e3) {
+ c2.push(t3);
+ const e4 = t3.dataset.origTabindex;
+ void 0 !== e4 && e4 && (t3.tabIndex = parseFloat(e4)), t3.removeAttribute("data-orig-tabindex"), !t3.hasAttribute("autoFocus") && h2 || (h2 = t3);
+ } else {
+ const e4 = void 0 === t3.dataset.origTabindex ? t3.getAttribute("tabindex") || "" : t3.dataset.origTabindex;
+ e4 && (t3.dataset.origTabindex = e4), t3.tabIndex = -1;
+ }
+ }
+ let d2 = null;
+ t2 ? (!n2 || c2.indexOf(n2) < 0) && (d2 = h2 || s2, c2.length && (i2 === xe ? d2 = c2[0] : this.lastFocus !== s2 && i2 !== we || (d2 = c2[c2.length - 1]))) : d2 = a2 && "image" === a2.type ? s2 : h2 || s2, d2 && st(d2), this.lastFocus = document.activeElement, this.ignoreFocusChange = false;
+ }
+ next() {
+ const t2 = this.carousel;
+ t2 && t2.pages.length > 1 && t2.slideNext();
+ }
+ prev() {
+ const t2 = this.carousel;
+ t2 && t2.pages.length > 1 && t2.slidePrev();
+ }
+ jumpTo(...t2) {
+ this.carousel && this.carousel.slideTo(...t2);
+ }
+ isTopmost() {
+ var t2;
+ return (null === (t2 = _Oe.getInstance()) || void 0 === t2 ? void 0 : t2.id) == this.id;
+ }
+ animate(t2 = null, e2 = "", i2) {
+ if (!t2 || !e2) return void (i2 && i2());
+ this.stop(t2);
+ const n2 = (s2) => {
+ s2.target === t2 && t2.dataset.animationName && (t2.removeEventListener("animationend", n2), delete t2.dataset.animationName, i2 && i2(), S(t2, e2));
+ };
+ t2.dataset.animationName = e2, t2.addEventListener("animationend", n2), P(t2, e2);
+ }
+ stop(t2) {
+ t2 && t2.dispatchEvent(new CustomEvent("animationend", { bubbles: false, cancelable: true, currentTarget: t2 }));
+ }
+ setContent(t2, e2 = "", i2 = true) {
+ if (this.isClosing()) return;
+ const s2 = t2.el;
+ if (!s2) return;
+ let o2 = null;
+ if (E(e2) ? o2 = e2 : (o2 = n(e2 + ""), E(o2) || (o2 = document.createElement("div"), o2.innerHTML = e2 + "")), ["img", "picture", "iframe", "video", "audio"].includes(o2.nodeName.toLowerCase())) {
+ const t3 = document.createElement("div");
+ t3.appendChild(o2), o2 = t3;
+ }
+ E(o2) && t2.filter && !t2.error && (o2 = o2.querySelector(t2.filter)), o2 && E(o2) ? (P(o2, "fancybox__content"), t2.id && o2.setAttribute("id", t2.id), s2.classList.add(`has-${t2.error ? "error" : t2.type || "unknown"}`), s2.prepend(o2), "none" === o2.style.display && (o2.style.display = ""), "none" === getComputedStyle(o2).getPropertyValue("display") && (o2.style.display = t2.display || this.option("defaultDisplay") || "flex"), t2.contentEl = o2, i2 && this.revealContent(t2), this.manageCloseBtn(t2), this.manageCaption(t2)) : this.setError(t2, "{{ELEMENT_NOT_FOUND}}");
+ }
+ revealContent(t2, e2) {
+ const i2 = t2.el, n2 = t2.contentEl;
+ i2 && n2 && (this.emit("reveal", t2), this.hideLoading(t2), t2.state = lt.Opening, (e2 = this.isOpeningSlide(t2) ? void 0 === e2 ? this.optionFor(t2, "showClass") : e2 : "f-fadeIn") ? this.animate(n2, e2, () => {
+ this.done(t2);
+ }) : this.done(t2));
+ }
+ done(t2) {
+ this.isClosing() || (t2.state = lt.Ready, this.emit("done", t2), P(t2.el, "is-done"), this.isCurrentSlide(t2) && this.option("autoFocus") && queueMicrotask(() => {
+ var e2;
+ null === (e2 = t2.panzoom) || void 0 === e2 || e2.updateControls(), this.option("autoFocus") && this.focus();
+ }), this.isOpeningSlide(t2) && (S(this.container, he), !this.isCompact && this.option("idle") && this.setIdle()));
+ }
+ isCurrentSlide(t2) {
+ const e2 = this.getSlide();
+ return !(!t2 || !e2) && e2.index === t2.index;
+ }
+ isOpeningSlide(t2) {
+ var e2, i2;
+ return null === (null === (e2 = this.carousel) || void 0 === e2 ? void 0 : e2.prevPage) && t2 && t2.index === (null === (i2 = this.getSlide()) || void 0 === i2 ? void 0 : i2.index);
+ }
+ showLoading(t2) {
+ t2.state = lt.Loading;
+ const e2 = t2.el;
+ if (!e2) return;
+ P(e2, ce), this.emit("loading", t2), t2.spinnerEl || setTimeout(() => {
+ if (!this.isClosing() && !t2.spinnerEl && t2.state === lt.Loading) {
+ let i2 = n(x);
+ P(i2, "fancybox-spinner"), t2.spinnerEl = i2, e2.prepend(i2), this.animate(i2, "f-fadeIn");
+ }
+ }, 250);
+ }
+ hideLoading(t2) {
+ const e2 = t2.el;
+ if (!e2) return;
+ const i2 = t2.spinnerEl;
+ this.isClosing() ? null == i2 || i2.remove() : (S(e2, ce), i2 && this.animate(i2, "f-fadeOut", () => {
+ i2.remove();
+ }), t2.state === lt.Loading && (this.emit("loaded", t2), t2.state = lt.Ready));
+ }
+ setError(t2, e2) {
+ if (this.isClosing()) return;
+ const i2 = new Event("error", { bubbles: true, cancelable: true });
+ if (this.emit("error", i2, t2), i2.defaultPrevented) return;
+ t2.error = e2, this.hideLoading(t2), this.clearContent(t2);
+ const n2 = document.createElement("div");
+ n2.classList.add("fancybox-error"), n2.innerHTML = this.localize(e2 || "{{ERROR}}
"), this.setContent(t2, n2);
+ }
+ clearContent(t2) {
+ if (void 0 === t2.state) return;
+ this.emit("clearContent", t2), t2.contentEl && (t2.contentEl.remove(), t2.contentEl = void 0);
+ const e2 = t2.el;
+ e2 && (S(e2, "has-error"), S(e2, "has-unknown"), S(e2, `has-${t2.type || "unknown"}`)), t2.closeBtnEl && t2.closeBtnEl.remove(), t2.closeBtnEl = void 0, t2.captionEl && t2.captionEl.remove(), t2.captionEl = void 0, t2.spinnerEl && t2.spinnerEl.remove(), t2.spinnerEl = void 0;
+ }
+ getSlide() {
+ var t2;
+ const e2 = this.carousel;
+ return (null === (t2 = null == e2 ? void 0 : e2.pages[null == e2 ? void 0 : e2.page]) || void 0 === t2 ? void 0 : t2.slides[0]) || void 0;
+ }
+ close(t2, e2) {
+ if (this.isClosing()) return;
+ const i2 = new Event("shouldClose", { bubbles: true, cancelable: true });
+ if (this.emit("shouldClose", i2, t2), i2.defaultPrevented) return;
+ t2 && t2.cancelable && (t2.preventDefault(), t2.stopPropagation());
+ const n2 = () => {
+ this.proceedClose(t2, e2);
+ };
+ this.startedFs && ye && ye.isFullscreen() ? Promise.resolve(ye.exit()).then(() => n2()) : n2();
+ }
+ clearIdle() {
+ this.idleTimer && clearTimeout(this.idleTimer), this.idleTimer = null;
+ }
+ setIdle(t2 = false) {
+ const e2 = () => {
+ this.clearIdle(), this.idle = true, P(this.container, "is-idle"), this.emit("setIdle");
+ };
+ if (this.clearIdle(), !this.isClosing()) if (t2) e2();
+ else {
+ const t3 = this.option("idle");
+ t3 && (this.idleTimer = setTimeout(e2, t3));
+ }
+ }
+ endIdle() {
+ this.clearIdle(), this.idle && !this.isClosing() && (this.idle = false, S(this.container, "is-idle"), this.emit("endIdle"));
+ }
+ resetIdle() {
+ this.endIdle(), this.setIdle();
+ }
+ toggleIdle() {
+ this.idle ? this.endIdle() : this.setIdle(true);
+ }
+ toggleFullscreen() {
+ ye && (ye.isFullscreen() ? ye.exit() : ye.request().then(() => {
+ this.startedFs = true;
+ }));
+ }
+ isClosing() {
+ return [rt.Closing, rt.CustomClosing, rt.Destroy].includes(this.state);
+ }
+ proceedClose(t2, e2) {
+ var i2, n2;
+ this.state = rt.Closing, this.clearIdle(), this.detachEvents();
+ const s2 = this.container, o2 = this.carousel, a2 = this.getSlide(), r2 = a2 && this.option("placeFocusBack") ? a2.triggerEl || this.option("triggerEl") : null;
+ if (r2 && (tt(r2) ? st(r2) : r2.focus()), s2 && (S(s2, he), P(s2, "is-closing"), s2.setAttribute(oe, "true"), this.option("animated") && P(s2, re), s2.style.pointerEvents = "none"), o2) {
+ o2.clearTransitions(), null === (i2 = o2.panzoom) || void 0 === i2 || i2.destroy(), null === (n2 = o2.plugins.Navigation) || void 0 === n2 || n2.detach();
+ for (const t3 of o2.slides) {
+ t3.state = lt.Closing, this.hideLoading(t3);
+ const e3 = t3.contentEl;
+ e3 && this.stop(e3);
+ const i3 = null == t3 ? void 0 : t3.panzoom;
+ i3 && (i3.stop(), i3.detachEvents(), i3.detachObserver()), this.isCurrentSlide(t3) || o2.emit("removeSlide", t3);
+ }
+ }
+ Pe = window.scrollX, Ce = window.scrollY, window.addEventListener("scroll", this.onScroll), this.emit("close", t2), this.state !== rt.CustomClosing ? (void 0 === e2 && a2 && (e2 = this.optionFor(a2, "hideClass")), e2 && a2 ? (this.animate(a2.contentEl, e2, () => {
+ o2 && o2.emit("removeSlide", a2);
+ }), setTimeout(() => {
+ this.destroy();
+ }, 500)) : this.destroy()) : setTimeout(() => {
+ this.destroy();
+ }, 500);
+ }
+ destroy() {
+ var t2;
+ if (this.state === rt.Destroy) return;
+ window.removeEventListener("scroll", this.onScroll), this.state = rt.Destroy, null === (t2 = this.carousel) || void 0 === t2 || t2.destroy();
+ const e2 = this.container;
+ e2 && e2.remove(), Te.delete(this.id);
+ const i2 = _Oe.getInstance();
+ i2 ? i2.focus() : (we && (we.remove(), we = null), xe && (xe.remove(), xe = null), S(document.documentElement, ee), (() => {
+ if (!et) return;
+ const t3 = document, e3 = t3.body;
+ e3.classList.remove(ie), e3.style.setProperty(se, ""), t3.documentElement.style.setProperty(ne, "");
+ })(), this.emit("destroy"));
+ }
+ static bind(t2, e2, i2) {
+ if (!et) return;
+ let n2, s2 = "", o2 = {};
+ if (void 0 === t2 ? n2 = document.body : ve(t2) ? (n2 = document.body, s2 = t2, "object" == typeof e2 && (o2 = e2 || {})) : (n2 = t2, ve(e2) && (s2 = e2), "object" == typeof i2 && (o2 = i2 || {})), !n2 || !E(n2)) return;
+ s2 = s2 || "[data-fancybox]";
+ const a2 = _Oe.openers.get(n2) || /* @__PURE__ */ new Map();
+ a2.set(s2, o2), _Oe.openers.set(n2, a2), 1 === a2.size && n2.addEventListener("click", _Oe.fromEvent);
+ }
+ static unbind(t2, e2) {
+ let i2, n2 = "";
+ if (ve(t2) ? (i2 = document.body, n2 = t2) : (i2 = t2, ve(e2) && (n2 = e2)), !i2) return;
+ const s2 = _Oe.openers.get(i2);
+ s2 && n2 && s2.delete(n2), n2 && s2 || (_Oe.openers.delete(i2), i2.removeEventListener("click", _Oe.fromEvent));
+ }
+ static destroy() {
+ let t2;
+ for (; t2 = _Oe.getInstance(); ) t2.destroy();
+ for (const t3 of _Oe.openers.keys()) t3.removeEventListener("click", _Oe.fromEvent);
+ _Oe.openers = /* @__PURE__ */ new Map();
+ }
+ static fromEvent(t2) {
+ if (t2.defaultPrevented) return;
+ if (t2.button && 0 !== t2.button) return;
+ if (t2.ctrlKey || t2.metaKey || t2.shiftKey) return;
+ let e2 = t2.composedPath()[0];
+ const i2 = e2.closest("[data-fancybox-trigger]");
+ if (i2) {
+ const t3 = i2.dataset.fancyboxTrigger || "", n3 = document.querySelectorAll(`[data-fancybox="${t3}"]`), s3 = parseInt(i2.dataset.fancyboxIndex || "", 10) || 0;
+ e2 = n3[s3] || e2;
+ }
+ if (!(e2 && e2 instanceof Element)) return;
+ let n2, s2, o2, a2;
+ if ([..._Oe.openers].reverse().find(([t3, i3]) => !(!t3.contains(e2) || ![...i3].reverse().find(([i4, r3]) => {
+ let l3 = e2.closest(i4);
+ return !!l3 && (n2 = t3, s2 = i4, o2 = l3, a2 = r3, true);
+ }))), !n2 || !s2 || !o2) return;
+ a2 = a2 || {}, t2.preventDefault(), e2 = o2;
+ let r2 = [], l2 = u({}, at, a2);
+ l2.event = t2, l2.triggerEl = e2, l2.delegate = i2;
+ const c2 = l2.groupAll, h2 = l2.groupAttr, d2 = h2 && e2 ? e2.getAttribute(`${h2}`) : "";
+ if ((!e2 || d2 || c2) && (r2 = [].slice.call(n2.querySelectorAll(s2))), e2 && !c2 && (r2 = d2 ? r2.filter((t3) => t3.getAttribute(`${h2}`) === d2) : [e2]), !r2.length) return;
+ const p2 = _Oe.getInstance();
+ return p2 && p2.options.triggerEl && r2.indexOf(p2.options.triggerEl) > -1 ? void 0 : (e2 && (l2.startIndex = r2.indexOf(e2)), _Oe.fromNodes(r2, l2));
+ }
+ static fromSelector(t2, e2, i2) {
+ let n2 = null, s2 = "", o2 = {};
+ if (ve(t2) ? (n2 = document.body, s2 = t2, "object" == typeof e2 && (o2 = e2 || {})) : t2 instanceof HTMLElement && ve(e2) && (n2 = t2, s2 = e2, "object" == typeof i2 && (o2 = i2 || {})), !n2 || !s2) return false;
+ const a2 = _Oe.openers.get(n2);
+ return !!a2 && (o2 = u({}, a2.get(s2) || {}, o2), !!o2 && _Oe.fromNodes(Array.from(n2.querySelectorAll(s2)), o2));
+ }
+ static fromNodes(t2, e2) {
+ e2 = u({}, at, e2 || {});
+ const i2 = [];
+ for (const n2 of t2) {
+ const t3 = n2.dataset || {}, s2 = t3[me] || n2.getAttribute(ge) || n2.getAttribute("currentSrc") || n2.getAttribute(me) || void 0;
+ let o2;
+ const a2 = e2.delegate;
+ let r2;
+ a2 && i2.length === e2.startIndex && (o2 = a2 instanceof HTMLImageElement ? a2 : a2.querySelector("img:not([aria-hidden])")), o2 || (o2 = n2 instanceof HTMLImageElement ? n2 : n2.querySelector("img:not([aria-hidden])")), o2 && (r2 = o2.currentSrc || o2[me] || void 0, !r2 && o2.dataset && (r2 = o2.dataset.lazySrc || o2.dataset[me] || void 0));
+ const l2 = { src: s2, triggerEl: n2, thumbEl: o2, thumbElSrc: r2, thumbSrc: r2 };
+ for (const e3 in t3) {
+ let i3 = t3[e3] + "";
+ i3 = "false" !== i3 && ("true" === i3 || i3), l2[e3] = i3;
+ }
+ i2.push(l2);
+ }
+ return new _Oe(i2, e2);
+ }
+ static getInstance(t2) {
+ if (t2) return Te.get(t2);
+ return Array.from(Te.values()).reverse().find((t3) => !t3.isClosing() && t3) || null;
+ }
+ static getSlide() {
+ var t2;
+ return (null === (t2 = _Oe.getInstance()) || void 0 === t2 ? void 0 : t2.getSlide()) || null;
+ }
+ static show(t2 = [], e2 = {}) {
+ return new _Oe(t2, e2);
+ }
+ static next() {
+ const t2 = _Oe.getInstance();
+ t2 && t2.next();
+ }
+ static prev() {
+ const t2 = _Oe.getInstance();
+ t2 && t2.prev();
+ }
+ static close(t2 = true, ...e2) {
+ if (t2) for (const t3 of Te.values()) t3.close(...e2);
+ else {
+ const t3 = _Oe.getInstance();
+ t3 && t3.close(...e2);
+ }
+ }
+};
+Object.defineProperty(Oe, "version", { enumerable: true, configurable: true, writable: true, value: "5.0.36" }), Object.defineProperty(Oe, "defaults", { enumerable: true, configurable: true, writable: true, value: at }), Object.defineProperty(Oe, "Plugins", { enumerable: true, configurable: true, writable: true, value: te }), Object.defineProperty(Oe, "openers", { enumerable: true, configurable: true, writable: true, value: /* @__PURE__ */ new Map() });
+export {
+ Q as Carousel,
+ Oe as Fancybox,
+ I as Panzoom
+};
+//# sourceMappingURL=@fancyapps_ui.js.map
diff --git a/.vite/deps/@fancyapps_ui.js.map b/.vite/deps/@fancyapps_ui.js.map
new file mode 100644
index 0000000..adb25b4
--- /dev/null
+++ b/.vite/deps/@fancyapps_ui.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/@fancyapps/ui/dist/index.esm.js"],
+ "sourcesContent": ["const t=(t,e=1e4)=>(t=parseFloat(t+\"\")||0,Math.round((t+Number.EPSILON)*e)/e),e=function(t){if(!(t&&t instanceof Element&&t.offsetParent))return!1;const e=t.scrollHeight>t.clientHeight,i=window.getComputedStyle(t).overflowY,n=-1!==i.indexOf(\"hidden\"),s=-1!==i.indexOf(\"visible\");return e&&!n&&!s},i=function(t,n=void 0){return!(!t||t===document.body||n&&t===n)&&(e(t)?t:i(t.parentElement,n))},n=function(t){var e=(new DOMParser).parseFromString(t,\"text/html\").body;if(e.childElementCount>1){for(var i=document.createElement(\"div\");e.firstChild;)i.appendChild(e.firstChild);return i}return e.firstChild},s=t=>`${t||\"\"}`.split(\" \").filter((t=>!!t)),o=(t,e,i)=>{t&&s(e).forEach((e=>{t.classList.toggle(e,i||!1)}))};class a{constructor(t){Object.defineProperty(this,\"pageX\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"pageY\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"clientX\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"clientY\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"id\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"time\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"nativePointer\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.nativePointer=t,this.pageX=t.pageX,this.pageY=t.pageY,this.clientX=t.clientX,this.clientY=t.clientY,this.id=self.Touch&&t instanceof Touch?t.identifier:-1,this.time=Date.now()}}const r={passive:!1};class l{constructor(t,{start:e=(()=>!0),move:i=(()=>{}),end:n=(()=>{})}){Object.defineProperty(this,\"element\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"startCallback\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"moveCallback\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"endCallback\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"currentPointers\",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,\"startPointers\",{enumerable:!0,configurable:!0,writable:!0,value:[]}),this.element=t,this.startCallback=e,this.moveCallback=i,this.endCallback=n;for(const t of[\"onPointerStart\",\"onTouchStart\",\"onMove\",\"onTouchEnd\",\"onPointerEnd\",\"onWindowBlur\"])this[t]=this[t].bind(this);this.element.addEventListener(\"mousedown\",this.onPointerStart,r),this.element.addEventListener(\"touchstart\",this.onTouchStart,r),this.element.addEventListener(\"touchmove\",this.onMove,r),this.element.addEventListener(\"touchend\",this.onTouchEnd),this.element.addEventListener(\"touchcancel\",this.onTouchEnd)}onPointerStart(t){if(!t.buttons||0!==t.button)return;const e=new a(t);this.currentPointers.some((t=>t.id===e.id))||this.triggerPointerStart(e,t)&&(window.addEventListener(\"mousemove\",this.onMove),window.addEventListener(\"mouseup\",this.onPointerEnd),window.addEventListener(\"blur\",this.onWindowBlur))}onTouchStart(t){for(const e of Array.from(t.changedTouches||[]))this.triggerPointerStart(new a(e),t);window.addEventListener(\"blur\",this.onWindowBlur)}onMove(t){const e=this.currentPointers.slice(),i=\"changedTouches\"in t?Array.from(t.changedTouches||[]).map((t=>new a(t))):[new a(t)],n=[];for(const t of i){const e=this.currentPointers.findIndex((e=>e.id===t.id));e<0||(n.push(t),this.currentPointers[e]=t)}n.length&&this.moveCallback(t,this.currentPointers.slice(),e)}onPointerEnd(t){t.buttons>0&&0!==t.button||(this.triggerPointerEnd(t,new a(t)),window.removeEventListener(\"mousemove\",this.onMove),window.removeEventListener(\"mouseup\",this.onPointerEnd),window.removeEventListener(\"blur\",this.onWindowBlur))}onTouchEnd(t){for(const e of Array.from(t.changedTouches||[]))this.triggerPointerEnd(t,new a(e))}triggerPointerStart(t,e){return!!this.startCallback(e,t,this.currentPointers.slice())&&(this.currentPointers.push(t),this.startPointers.push(t),!0)}triggerPointerEnd(t,e){const i=this.currentPointers.findIndex((t=>t.id===e.id));i<0||(this.currentPointers.splice(i,1),this.startPointers.splice(i,1),this.endCallback(t,e,this.currentPointers.slice()))}onWindowBlur(){this.clear()}clear(){for(;this.currentPointers.length;){const t=this.currentPointers[this.currentPointers.length-1];this.currentPointers.splice(this.currentPointers.length-1,1),this.startPointers.splice(this.currentPointers.length-1,1),this.endCallback(new Event(\"touchend\",{bubbles:!0,cancelable:!0,clientX:t.clientX,clientY:t.clientY}),t,this.currentPointers.slice())}}stop(){this.element.removeEventListener(\"mousedown\",this.onPointerStart,r),this.element.removeEventListener(\"touchstart\",this.onTouchStart,r),this.element.removeEventListener(\"touchmove\",this.onMove,r),this.element.removeEventListener(\"touchend\",this.onTouchEnd),this.element.removeEventListener(\"touchcancel\",this.onTouchEnd),window.removeEventListener(\"mousemove\",this.onMove),window.removeEventListener(\"mouseup\",this.onPointerEnd),window.removeEventListener(\"blur\",this.onWindowBlur)}}function c(t,e){return e?Math.sqrt(Math.pow(e.clientX-t.clientX,2)+Math.pow(e.clientY-t.clientY,2)):0}function h(t,e){return e?{clientX:(t.clientX+e.clientX)/2,clientY:(t.clientY+e.clientY)/2}:t}const d=t=>\"object\"==typeof t&&null!==t&&t.constructor===Object&&\"[object Object]\"===Object.prototype.toString.call(t),u=(t,...e)=>{const i=e.length;for(let n=0;n{const n=Array.isArray(i)?[]:{};t[e]||Object.assign(t,{[e]:n}),d(i)?Object.assign(t[e],u(n,i)):Array.isArray(i)?Object.assign(t,{[e]:[...i]}):Object.assign(t,{[e]:i})}))}return t},p=function(t,e){return t.split(\".\").reduce(((t,e)=>\"object\"==typeof t?t[e]:void 0),e)};class f{constructor(t={}){Object.defineProperty(this,\"options\",{enumerable:!0,configurable:!0,writable:!0,value:t}),Object.defineProperty(this,\"events\",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),this.setOptions(t);for(const t of Object.getOwnPropertyNames(Object.getPrototypeOf(this)))t.startsWith(\"on\")&&\"function\"==typeof this[t]&&(this[t]=this[t].bind(this))}setOptions(t){this.options=t?u({},this.constructor.defaults,t):{};for(const[t,e]of Object.entries(this.option(\"on\")||{}))this.on(t,e)}option(t,...e){let i=p(t,this.options);return i&&\"function\"==typeof i&&(i=i.call(this,this,...e)),i}optionFor(t,e,i,...n){let s=p(e,t);var o;\"string\"!=typeof(o=s)||isNaN(o)||isNaN(parseFloat(o))||(s=parseFloat(s)),\"true\"===s&&(s=!0),\"false\"===s&&(s=!1),s&&\"function\"==typeof s&&(s=s.call(this,this,t,...n));let a=p(e,this.options);return a&&\"function\"==typeof a?s=a.call(this,this,t,...n,s):void 0===s&&(s=a),void 0===s?i:s}cn(t){const e=this.options.classes;return e&&e[t]||\"\"}localize(t,e=[]){t=String(t).replace(/\\{\\{(\\w+).?(\\w+)?\\}\\}/g,((t,e,i)=>{let n=\"\";return i?n=this.option(`${e[0]+e.toLowerCase().substring(1)}.l10n.${i}`):e&&(n=this.option(`l10n.${e}`)),n||(n=t),n}));for(let i=0;ie))}on(t,e){let i=[];\"string\"==typeof t?i=t.split(\" \"):Array.isArray(t)&&(i=t),this.events||(this.events=new Map),i.forEach((t=>{let i=this.events.get(t);i||(this.events.set(t,[]),i=[]),i.includes(e)||i.push(e),this.events.set(t,i)}))}off(t,e){let i=[];\"string\"==typeof t?i=t.split(\" \"):Array.isArray(t)&&(i=t),i.forEach((t=>{const i=this.events.get(t);if(Array.isArray(i)){const t=i.indexOf(e);t>-1&&i.splice(t,1)}}))}emit(t,...e){[...this.events.get(t)||[]].forEach((t=>t(this,...e))),\"*\"!==t&&this.emit(\"*\",t,...e)}}Object.defineProperty(f,\"version\",{enumerable:!0,configurable:!0,writable:!0,value:\"5.0.36\"}),Object.defineProperty(f,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:{}});class g extends f{constructor(t={}){super(t),Object.defineProperty(this,\"plugins\",{enumerable:!0,configurable:!0,writable:!0,value:{}})}attachPlugins(t={}){const e=new Map;for(const[i,n]of Object.entries(t)){const t=this.option(i),s=this.plugins[i];s||!1===t?s&&!1===t&&(s.detach(),delete this.plugins[i]):e.set(i,new n(this,t||{}))}for(const[t,i]of e)this.plugins[t]=i,i.attach()}detachPlugins(t){t=t||Object.keys(this.plugins);for(const e of t){const t=this.plugins[e];t&&t.detach(),delete this.plugins[e]}return this.emit(\"detachPlugins\"),this}}var m;!function(t){t[t.Init=0]=\"Init\",t[t.Error=1]=\"Error\",t[t.Ready=2]=\"Ready\",t[t.Panning=3]=\"Panning\",t[t.Mousemove=4]=\"Mousemove\",t[t.Destroy=5]=\"Destroy\"}(m||(m={}));const v=[\"a\",\"b\",\"c\",\"d\",\"e\",\"f\"],b={PANUP:\"Move up\",PANDOWN:\"Move down\",PANLEFT:\"Move left\",PANRIGHT:\"Move right\",ZOOMIN:\"Zoom in\",ZOOMOUT:\"Zoom out\",TOGGLEZOOM:\"Toggle zoom level\",TOGGLE1TO1:\"Toggle zoom level\",ITERATEZOOM:\"Toggle zoom level\",ROTATECCW:\"Rotate counterclockwise\",ROTATECW:\"Rotate clockwise\",FLIPX:\"Flip horizontally\",FLIPY:\"Flip vertically\",FITX:\"Fit horizontally\",FITY:\"Fit vertically\",RESET:\"Reset\",TOGGLEFS:\"Toggle fullscreen\"},y={content:null,width:\"auto\",height:\"auto\",panMode:\"drag\",touch:!0,dragMinThreshold:3,lockAxis:!1,mouseMoveFactor:1,mouseMoveFriction:.12,zoom:!0,pinchToZoom:!0,panOnlyZoomed:\"auto\",minScale:1,maxScale:2,friction:.25,dragFriction:.35,decelFriction:.05,click:\"toggleZoom\",dblClick:!1,wheel:\"zoom\",wheelLimit:7,spinner:!0,bounds:\"auto\",infinite:!1,rubberband:!0,bounce:!0,maxVelocity:75,transformParent:!1,classes:{content:\"f-panzoom__content\",isLoading:\"is-loading\",canZoomIn:\"can-zoom_in\",canZoomOut:\"can-zoom_out\",isDraggable:\"is-draggable\",isDragging:\"is-dragging\",inFullscreen:\"in-fullscreen\",htmlHasFullscreen:\"with-panzoom-in-fullscreen\"},l10n:b},w=' ',x=''+w+w+\"
\",E=t=>t&&null!==t&&t instanceof Element&&\"nodeType\"in t,S=(t,e)=>{t&&s(e).forEach((e=>{t.classList.remove(e)}))},P=(t,e)=>{t&&s(e).forEach((e=>{t.classList.add(e)}))},C={a:1,b:0,c:0,d:1,e:0,f:0},T=1e5,M=1e4,O=\"mousemove\",A=\"drag\",L=\"content\",z=\"auto\";let R=null,k=null;class I extends g{get fits(){return this.contentRect.width-this.contentRect.fitWidth<1&&this.contentRect.height-this.contentRect.fitHeight<1}get isTouchDevice(){return null===k&&(k=window.matchMedia(\"(hover: none)\").matches),k}get isMobile(){return null===R&&(R=/iPhone|iPad|iPod|Android/i.test(navigator.userAgent)),R}get panMode(){return this.options.panMode!==O||this.isTouchDevice?A:O}get panOnlyZoomed(){const t=this.options.panOnlyZoomed;return t===z?this.isTouchDevice:t}get isInfinite(){return this.option(\"infinite\")}get angle(){return 180*Math.atan2(this.current.b,this.current.a)/Math.PI||0}get targetAngle(){return 180*Math.atan2(this.target.b,this.target.a)/Math.PI||0}get scale(){const{a:t,b:e}=this.current;return Math.sqrt(t*t+e*e)||1}get targetScale(){const{a:t,b:e}=this.target;return Math.sqrt(t*t+e*e)||1}get minScale(){return this.option(\"minScale\")||1}get fullScale(){const{contentRect:t}=this;return t.fullWidth/t.fitWidth||1}get maxScale(){return this.fullScale*(this.option(\"maxScale\")||1)||1}get coverScale(){const{containerRect:t,contentRect:e}=this,i=Math.max(t.height/e.fitHeight,t.width/e.fitWidth)||1;return Math.min(this.fullScale,i)}get isScaling(){return Math.abs(this.targetScale-this.scale)>1e-5&&!this.isResting}get isContentLoading(){const t=this.content;return!!(t&&t instanceof HTMLImageElement)&&!t.complete}get isResting(){if(this.isBouncingX||this.isBouncingY)return!1;for(const t of v){const e=\"e\"==t||\"f\"===t?1e-4:1e-5;if(Math.abs(this.target[t]-this.current[t])>e)return!1}return!(!this.ignoreBounds&&!this.checkBounds().inBounds)}constructor(t,e={},i={}){var s;if(super(e),Object.defineProperty(this,\"pointerTracker\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"resizeObserver\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"updateTimer\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"clickTimer\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"rAF\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"isTicking\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,\"ignoreBounds\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,\"isBouncingX\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,\"isBouncingY\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,\"clicks\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"trackingPoints\",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,\"pwt\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"cwd\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"pmme\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"friction\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"state\",{enumerable:!0,configurable:!0,writable:!0,value:m.Init}),Object.defineProperty(this,\"isDragging\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,\"container\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"content\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"spinner\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"containerRect\",{enumerable:!0,configurable:!0,writable:!0,value:{width:0,height:0,innerWidth:0,innerHeight:0}}),Object.defineProperty(this,\"contentRect\",{enumerable:!0,configurable:!0,writable:!0,value:{top:0,right:0,bottom:0,left:0,fullWidth:0,fullHeight:0,fitWidth:0,fitHeight:0,width:0,height:0}}),Object.defineProperty(this,\"dragStart\",{enumerable:!0,configurable:!0,writable:!0,value:{x:0,y:0,top:0,left:0,time:0}}),Object.defineProperty(this,\"dragOffset\",{enumerable:!0,configurable:!0,writable:!0,value:{x:0,y:0,time:0}}),Object.defineProperty(this,\"current\",{enumerable:!0,configurable:!0,writable:!0,value:Object.assign({},C)}),Object.defineProperty(this,\"target\",{enumerable:!0,configurable:!0,writable:!0,value:Object.assign({},C)}),Object.defineProperty(this,\"velocity\",{enumerable:!0,configurable:!0,writable:!0,value:{a:0,b:0,c:0,d:0,e:0,f:0}}),Object.defineProperty(this,\"lockedAxis\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),!t)throw new Error(\"Container Element Not Found\");this.container=t,this.initContent(),this.attachPlugins(Object.assign(Object.assign({},I.Plugins),i)),this.emit(\"attachPlugins\"),this.emit(\"init\");const o=this.content;if(o.addEventListener(\"load\",this.onLoad),o.addEventListener(\"error\",this.onError),this.isContentLoading){if(this.option(\"spinner\")){t.classList.add(this.cn(\"isLoading\"));const e=n(x);!t.contains(o)||o.parentElement instanceof HTMLPictureElement?this.spinner=t.appendChild(e):this.spinner=(null===(s=o.parentElement)||void 0===s?void 0:s.insertBefore(e,o))||null}this.emit(\"beforeLoad\")}else queueMicrotask((()=>{this.enable()}))}initContent(){const{container:t}=this,e=this.cn(L);let i=this.option(L)||t.querySelector(`.${e}`);if(i||(i=t.querySelector(\"img,picture\")||t.firstElementChild,i&&P(i,e)),i instanceof HTMLPictureElement&&(i=i.querySelector(\"img\")),!i)throw new Error(\"No content found\");this.content=i}onLoad(){const{spinner:t,container:e,state:i}=this;t&&(t.remove(),this.spinner=null),this.option(\"spinner\")&&e.classList.remove(this.cn(\"isLoading\")),this.emit(\"afterLoad\"),i===m.Init?this.enable():this.updateMetrics()}onError(){this.state!==m.Destroy&&(this.spinner&&(this.spinner.remove(),this.spinner=null),this.stop(),this.detachEvents(),this.state=m.Error,this.emit(\"error\"))}getNextScale(t){const{fullScale:e,targetScale:i,coverScale:n,maxScale:s,minScale:o}=this;let a=o;switch(t){case\"toggleMax\":a=i-o<.5*(s-o)?s:o;break;case\"toggleCover\":a=i-o<.5*(n-o)?n:o;break;case\"toggleZoom\":a=i-o<.5*(e-o)?e:o;break;case\"iterateZoom\":let t=[1,e,s].sort(((t,e)=>t-e)),r=t.findIndex((t=>t>i+1e-5));a=t[r]||1}return a}attachObserver(){var t;const e=()=>{const{container:t,containerRect:e}=this;return Math.abs(e.width-t.getBoundingClientRect().width)>.1||Math.abs(e.height-t.getBoundingClientRect().height)>.1};this.resizeObserver||void 0===window.ResizeObserver||(this.resizeObserver=new ResizeObserver((()=>{this.updateTimer||(e()?(this.onResize(),this.isMobile&&(this.updateTimer=setTimeout((()=>{e()&&this.onResize(),this.updateTimer=null}),500))):this.updateTimer&&(clearTimeout(this.updateTimer),this.updateTimer=null))}))),null===(t=this.resizeObserver)||void 0===t||t.observe(this.container)}detachObserver(){var t;null===(t=this.resizeObserver)||void 0===t||t.disconnect()}attachEvents(){const{container:t}=this;t.addEventListener(\"click\",this.onClick,{passive:!1,capture:!1}),t.addEventListener(\"wheel\",this.onWheel,{passive:!1}),this.pointerTracker=new l(t,{start:this.onPointerDown,move:this.onPointerMove,end:this.onPointerUp}),document.addEventListener(O,this.onMouseMove)}detachEvents(){var t;const{container:e}=this;e.removeEventListener(\"click\",this.onClick,{passive:!1,capture:!1}),e.removeEventListener(\"wheel\",this.onWheel,{passive:!1}),null===(t=this.pointerTracker)||void 0===t||t.stop(),this.pointerTracker=null,document.removeEventListener(O,this.onMouseMove),document.removeEventListener(\"keydown\",this.onKeydown,!0),this.clickTimer&&(clearTimeout(this.clickTimer),this.clickTimer=null),this.updateTimer&&(clearTimeout(this.updateTimer),this.updateTimer=null)}animate(){this.setTargetForce();const t=this.friction,e=this.option(\"maxVelocity\");for(const i of v)t?(this.velocity[i]*=1-t,e&&!this.isScaling&&(this.velocity[i]=Math.max(Math.min(this.velocity[i],e),-1*e)),this.current[i]+=this.velocity[i]):this.current[i]=this.target[i];this.setTransform(),this.setEdgeForce(),!this.isResting||this.isDragging?this.rAF=requestAnimationFrame((()=>this.animate())):this.stop(\"current\")}setTargetForce(){for(const t of v)\"e\"===t&&this.isBouncingX||\"f\"===t&&this.isBouncingY||(this.velocity[t]=(1/(1-this.friction)-1)*(this.target[t]-this.current[t]))}checkBounds(t=0,e=0){const{current:i}=this,n=i.e+t,s=i.f+e,o=this.getBounds(),{x:a,y:r}=o,l=a.min,c=a.max,h=r.min,d=r.max;let u=0,p=0;return l!==1/0&&nc&&(u=c-n),h!==1/0&&sd&&(p=d-s),Math.abs(u)<1e-4&&(u=0),Math.abs(p)<1e-4&&(p=0),Object.assign(Object.assign({},o),{xDiff:u,yDiff:p,inBounds:!u&&!p})}clampTargetBounds(){const{target:t}=this,{x:e,y:i}=this.getBounds();e.min!==1/0&&(t.e=Math.max(t.e,e.min)),e.max!==1/0&&(t.e=Math.min(t.e,e.max)),i.min!==1/0&&(t.f=Math.max(t.f,i.min)),i.max!==1/0&&(t.f=Math.min(t.f,i.max))}calculateContentDim(t=this.current){const{content:e,contentRect:i}=this,{fitWidth:n,fitHeight:s,fullWidth:o,fullHeight:a}=i;let r=o,l=a;if(this.option(\"zoom\")||0!==this.angle){const i=!(e instanceof HTMLImageElement)&&(\"none\"===window.getComputedStyle(e).maxWidth||\"none\"===window.getComputedStyle(e).maxHeight),c=i?o:n,h=i?a:s,d=this.getMatrix(t),u=new DOMPoint(0,0).matrixTransform(d),p=new DOMPoint(0+c,0).matrixTransform(d),f=new DOMPoint(0+c,0+h).matrixTransform(d),g=new DOMPoint(0,0+h).matrixTransform(d),m=Math.abs(f.x-u.x),v=Math.abs(f.y-u.y),b=Math.abs(g.x-p.x),y=Math.abs(g.y-p.y);r=Math.max(m,b),l=Math.max(v,y)}return{contentWidth:r,contentHeight:l}}setEdgeForce(){if(this.ignoreBounds||this.isDragging||this.panMode===O||this.targetScale{const t=window.getSelection();return t&&\"Range\"===t.type})()&&!i.closest(\"button\"))return;const n=i.closest(\"[data-panzoom-action]\"),s=i.closest(\"[data-panzoom-change]\"),o=n||s,a=o&&E(o)?o.dataset:null;if(a){const e=a.panzoomChange,i=a.panzoomAction;if((e||i)&&t.preventDefault(),e){let t={};try{t=JSON.parse(e)}catch(t){console&&console.warn(\"The given data was not valid JSON\")}return void this.applyChange(t)}if(i)return void(this[i]&&this[i]())}if(Math.abs(this.dragOffset.x)>3||Math.abs(this.dragOffset.y)>3)return t.preventDefault(),void t.stopPropagation();if(i.closest(\"[data-fancybox]\"))return;const r=this.content.getBoundingClientRect(),l=this.dragStart;if(l.time&&!this.canZoomOut()&&(Math.abs(r.x-l.x)>2||Math.abs(r.y-l.y)>2))return;this.dragStart.time=0;const c=e=>{this.option(\"zoom\",t)&&e&&\"string\"==typeof e&&/(iterateZoom)|(toggle(Zoom|Full|Cover|Max)|(zoomTo(Fit|Cover|Max)))/.test(e)&&\"function\"==typeof this[e]&&(t.preventDefault(),this[e]({event:t}))},h=this.option(\"click\",t),d=this.option(\"dblClick\",t);d?(this.clicks++,1==this.clicks&&(this.clickTimer=setTimeout((()=>{1===this.clicks?(this.emit(\"click\",t),!t.defaultPrevented&&h&&c(h)):(this.emit(\"dblClick\",t),t.defaultPrevented||c(d)),this.clicks=0,this.clickTimer=null}),350))):(this.emit(\"click\",t),!t.defaultPrevented&&h&&c(h))}addTrackingPoint(t){const e=this.trackingPoints.filter((t=>t.time>Date.now()-100));e.push(t),this.trackingPoints=e}onPointerDown(t,e,i){var n;if(!1===this.option(\"touch\",t))return!1;this.pwt=0,this.dragOffset={x:0,y:0,time:0},this.trackingPoints=[];const s=this.content.getBoundingClientRect();if(this.dragStart={x:s.x,y:s.y,top:s.top,left:s.left,time:Date.now()},this.clickTimer)return!1;if(this.panMode===O&&this.targetScale>1)return t.preventDefault(),t.stopPropagation(),!1;const o=t.composedPath()[0];if(!i.length){if([\"TEXTAREA\",\"OPTION\",\"INPUT\",\"SELECT\",\"VIDEO\",\"IFRAME\"].includes(o.nodeName)||o.closest(\"[contenteditable],[data-selectable],[data-draggable],[data-clickable],[data-panzoom-change],[data-panzoom-action]\"))return!1;null===(n=window.getSelection())||void 0===n||n.removeAllRanges()}if(\"mousedown\"===t.type)[\"A\",\"BUTTON\"].includes(o.nodeName)||t.preventDefault();else if(Math.abs(this.velocity.a)>.3)return!1;return this.target.e=this.current.e,this.target.f=this.current.f,this.stop(),this.isDragging||(this.isDragging=!0,this.addTrackingPoint(e),this.emit(\"touchStart\",t)),!0}onPointerMove(e,n,s){if(!1===this.option(\"touch\",e))return;if(!this.isDragging)return;if(n.length<2&&this.panOnlyZoomed&&t(this.targetScale)<=t(this.minScale))return;if(this.emit(\"touchMove\",e),e.defaultPrevented)return;this.addTrackingPoint(n[0]);const{content:o}=this,a=h(s[0],s[1]),r=h(n[0],n[1]);let l=0,d=0;if(n.length>1){const t=o.getBoundingClientRect();l=a.clientX-t.left-.5*t.width,d=a.clientY-t.top-.5*t.height}const u=c(s[0],s[1]),p=c(n[0],n[1]);let f=u?p/u:1,g=r.clientX-a.clientX,m=r.clientY-a.clientY;this.dragOffset.x+=g,this.dragOffset.y+=m,this.dragOffset.time=Date.now()-this.dragStart.time;let v=t(this.targetScale)===t(this.minScale)&&this.option(\"lockAxis\");if(v&&!this.lockedAxis)if(\"xy\"===v||\"y\"===v||\"touchmove\"===e.type){if(Math.abs(this.dragOffset.x)<6&&Math.abs(this.dragOffset.y)<6)return void e.preventDefault();const t=Math.abs(180*Math.atan2(this.dragOffset.y,this.dragOffset.x)/Math.PI);this.lockedAxis=t>45&&t<135?\"y\":\"x\",this.dragOffset.x=0,this.dragOffset.y=0,g=0,m=0}else this.lockedAxis=v;if(i(e.target,this.content)&&(v=\"x\",this.dragOffset.y=0),v&&\"xy\"!==v&&this.lockedAxis!==v&&t(this.targetScale)===t(this.minScale))return;e.cancelable&&e.preventDefault(),this.container.classList.add(this.cn(\"isDragging\"));const b=this.checkBounds(g,m);this.option(\"rubberband\")?(\"x\"!==this.isInfinite&&(b.xDiff>0&&g<0||b.xDiff<0&&g>0)&&(g*=Math.max(0,.5-Math.abs(.75/this.contentRect.fitWidth*b.xDiff))),\"y\"!==this.isInfinite&&(b.yDiff>0&&m<0||b.yDiff<0&&m>0)&&(m*=Math.max(0,.5-Math.abs(.75/this.contentRect.fitHeight*b.yDiff)))):(b.xDiff&&(g=0),b.yDiff&&(m=0));const y=this.targetScale,w=this.minScale,x=this.maxScale;y<.5*w&&(f=Math.max(f,w)),y>1.5*x&&(f=Math.min(f,x)),\"y\"===this.lockedAxis&&t(y)===t(w)&&(g=0),\"x\"===this.lockedAxis&&t(y)===t(w)&&(m=0),this.applyChange({originX:l,originY:d,panX:g,panY:m,scale:f,friction:this.option(\"dragFriction\"),ignoreBounds:!0})}onPointerUp(t,e,n){if(n.length)return this.dragOffset.x=0,this.dragOffset.y=0,void(this.trackingPoints=[]);this.container.classList.remove(this.cn(\"isDragging\")),this.isDragging&&(this.addTrackingPoint(e),this.panOnlyZoomed&&this.contentRect.width-this.contentRect.fitWidth<1&&this.contentRect.height-this.contentRect.fitHeight<1&&(this.trackingPoints=[]),i(t.target,this.content)&&\"y\"===this.lockedAxis&&(this.trackingPoints=[]),this.emit(\"touchEnd\",t),this.isDragging=!1,this.lockedAxis=!1,this.state!==m.Destroy&&(t.defaultPrevented||this.startDecelAnim()))}startDecelAnim(){var e;const i=this.isScaling;this.rAF&&(cancelAnimationFrame(this.rAF),this.rAF=null),this.isBouncingX=!1,this.isBouncingY=!1;for(const t of v)this.velocity[t]=0;this.target.e=this.current.e,this.target.f=this.current.f,S(this.container,\"is-scaling\"),S(this.container,\"is-animating\"),this.isTicking=!1;const{trackingPoints:n}=this,s=n[0],o=n[n.length-1];let a=0,r=0,l=0;o&&s&&(a=o.clientX-s.clientX,r=o.clientY-s.clientY,l=o.time-s.time);const c=(null===(e=window.visualViewport)||void 0===e?void 0:e.scale)||1;1!==c&&(a*=c,r*=c);let h=0,d=0,u=0,p=0,f=this.option(\"decelFriction\");const g=this.targetScale;if(l>0){u=Math.abs(a)>3?a/(l/30):0,p=Math.abs(r)>3?r/(l/30):0;const t=this.option(\"maxVelocity\");t&&(u=Math.max(Math.min(u,t),-1*t),p=Math.max(Math.min(p,t),-1*t))}u&&(h=u/(1/(1-f)-1)),p&&(d=p/(1/(1-f)-1)),(\"y\"===this.option(\"lockAxis\")||\"xy\"===this.option(\"lockAxis\")&&\"y\"===this.lockedAxis&&t(g)===this.minScale)&&(h=u=0),(\"x\"===this.option(\"lockAxis\")||\"xy\"===this.option(\"lockAxis\")&&\"x\"===this.lockedAxis&&t(g)===this.minScale)&&(d=p=0);const m=this.dragOffset.x,b=this.dragOffset.y,y=this.option(\"dragMinThreshold\")||0;Math.abs(m)this.maxScale+1e-5)||i&&!h&&!d)&&(f=.35),this.applyChange({panX:h,panY:d,friction:f}),this.emit(\"decel\",u,p,m,b)}onWheel(t){var e=[-t.deltaX||0,-t.deltaY||0,-t.detail||0].reduce((function(t,e){return Math.abs(e)>Math.abs(t)?e:t}));const i=Math.max(-1,Math.min(1,e));if(this.emit(\"wheel\",t,i),this.panMode===O)return;if(t.defaultPrevented)return;const n=this.option(\"wheel\");\"pan\"===n?(t.preventDefault(),this.panOnlyZoomed&&!this.canZoomOut()||this.applyChange({panX:2*-t.deltaX,panY:2*-t.deltaY,bounce:!1})):\"zoom\"===n&&!1!==this.option(\"zoom\")&&this.zoomWithWheel(t)}onMouseMove(t){this.panWithMouse(t)}onKeydown(t){\"Escape\"===t.key&&this.toggleFS()}onResize(){this.updateMetrics(),this.checkBounds().inBounds||this.requestTick()}setTransform(){this.emit(\"beforeTransform\");const{current:e,target:i,content:n,contentRect:s}=this,o=Object.assign({},C);for(const n of v){const s=\"e\"==n||\"f\"===n?M:T;o[n]=t(e[n],s),Math.abs(i[n]-e[n])<(\"e\"==n||\"f\"===n?.51:.001)&&(e[n]=i[n])}let{a:a,b:r,c:l,d:c,e:h,f:d}=o,u=`matrix(${a}, ${r}, ${l}, ${c}, ${h}, ${d})`,p=n.parentElement instanceof HTMLPictureElement?n.parentElement:n;if(this.option(\"transformParent\")&&(p=p.parentElement||p),p.style.transform===u)return;p.style.transform=u;const{contentWidth:f,contentHeight:g}=this.calculateContentDim();s.width=f,s.height=g,this.emit(\"afterTransform\")}updateMetrics(e=!1){var i;if(!this||this.state===m.Destroy)return;if(this.isContentLoading)return;const n=Math.max(1,(null===(i=window.visualViewport)||void 0===i?void 0:i.scale)||1),{container:s,content:o}=this,a=o instanceof HTMLImageElement,r=s.getBoundingClientRect(),l=getComputedStyle(this.container);let c=r.width*n,h=r.height*n;const d=parseFloat(l.paddingTop)+parseFloat(l.paddingBottom),u=c-(parseFloat(l.paddingLeft)+parseFloat(l.paddingRight)),p=h-d;this.containerRect={width:c,height:h,innerWidth:u,innerHeight:p};const f=parseFloat(o.dataset.width||\"\")||(t=>{let e=0;return e=t instanceof HTMLImageElement?t.naturalWidth:t instanceof SVGElement?t.width.baseVal.value:Math.max(t.offsetWidth,t.scrollWidth),e||0})(o),g=parseFloat(o.dataset.height||\"\")||(t=>{let e=0;return e=t instanceof HTMLImageElement?t.naturalHeight:t instanceof SVGElement?t.height.baseVal.value:Math.max(t.offsetHeight,t.scrollHeight),e||0})(o);let v=this.option(\"width\",f)||z,b=this.option(\"height\",g)||z;const y=v===z,w=b===z;\"number\"!=typeof v&&(v=f),\"number\"!=typeof b&&(b=g),y&&(v=f*(b/g)),w&&(b=g/(f/v));let x=o.parentElement instanceof HTMLPictureElement?o.parentElement:o;this.option(\"transformParent\")&&(x=x.parentElement||x);const E=x.getAttribute(\"style\")||\"\";x.style.setProperty(\"transform\",\"none\",\"important\"),a&&(x.style.width=\"\",x.style.height=\"\"),x.offsetHeight;const S=o.getBoundingClientRect();let P=S.width*n,C=S.height*n,T=P,M=C;P=Math.min(P,v),C=Math.min(C,b),a?({width:P,height:C}=((t,e,i,n)=>{const s=i/t,o=n/e,a=Math.min(s,o);return{width:t*=a,height:e*=a}})(v,b,P,C)):(P=Math.min(P,v),C=Math.min(C,b));let O=.5*(M-C),A=.5*(T-P);this.contentRect=Object.assign(Object.assign({},this.contentRect),{top:S.top-r.top+O,bottom:r.bottom-S.bottom+O,left:S.left-r.left+A,right:r.right-S.right+A,fitWidth:P,fitHeight:C,width:P,height:C,fullWidth:v,fullHeight:b}),x.style.cssText=E,a&&(x.style.width=`${P}px`,x.style.height=`${C}px`),this.setTransform(),!0!==e&&this.emit(\"refresh\"),this.ignoreBounds||(t(this.targetScale)this.maxScale?this.zoomTo(this.maxScale,{friction:0}):this.state===m.Init||this.checkBounds().inBounds||this.requestTick()),this.updateControls()}calculateBounds(){const{contentWidth:e,contentHeight:i}=this.calculateContentDim(this.target),{targetScale:n,lockedAxis:s}=this,{fitWidth:o,fitHeight:a}=this.contentRect;let r=0,l=0,c=0,h=0;const d=this.option(\"infinite\");if(!0===d||s&&d===s)r=-1/0,c=1/0,l=-1/0,h=1/0;else{let{containerRect:s,contentRect:d}=this,u=t(o*n,M),p=t(a*n,M),{innerWidth:f,innerHeight:g}=s;if(s.width===u&&(f=s.width),s.width===p&&(g=s.height),e>f){c=.5*(e-f),r=-1*c;let t=.5*(d.right-d.left);r+=t,c+=t}if(o>f&&eg){h=.5*(i-g),l=-1*h;let t=.5*(d.bottom-d.top);l+=t,h+=t}a>g&&it(s.fitWidth,1)||t(s.height,1)>t(s.fitHeight,1))&&(p=!0)),t(s.width*a,1)t(a),g=!f&&!p&&d&&t(l)i&&(n=i/t)}y=y.scale(n)}y=y.translate(-o,-a).translate(-f,-g).multiply(b),s&&(y=y.rotate(s)),l&&(y=y.scale(-1,1)),c&&(y=y.scale(1,-1));for(const e of v)\"e\"!==e&&\"f\"!==e&&(y[e]>this.minScale+1e-5||y[e].1||this.panMode===O||!1===d)&&!h&&this.clampTargetBounds(),u===m.Init?this.animate():this.isResting||(this.state=m.Panning,this.requestTick())}stop(t=!1){if(this.state===m.Init||this.state===m.Destroy)return;const e=this.isTicking;this.rAF&&(cancelAnimationFrame(this.rAF),this.rAF=null),this.isBouncingX=!1,this.isBouncingY=!1;for(const e of v)this.velocity[e]=0,\"current\"===t?this.current[e]=this.target[e]:\"target\"===t&&(this.target[e]=this.current[e]);this.setTransform(),S(this.container,\"is-scaling\"),S(this.container,\"is-animating\"),this.isTicking=!1,this.state=m.Ready,e&&(this.emit(\"endAnimation\"),this.updateControls())}requestTick(){this.isTicking||(this.emit(\"startAnimation\"),this.updateControls(),P(this.container,\"is-animating\"),this.isScaling&&P(this.container,\"is-scaling\")),this.isTicking=!0,this.rAF||(this.rAF=requestAnimationFrame((()=>this.animate())))}panWithMouse(e,i=this.option(\"mouseMoveFriction\")){if(this.pmme=e,this.panMode!==O||!e)return;if(t(this.targetScale)<=t(this.minScale))return;this.emit(\"mouseMove\",e);const{container:n,containerRect:s,contentRect:o}=this,a=s.width,r=s.height,l=n.getBoundingClientRect(),c=(e.clientX||0)-l.left,h=(e.clientY||0)-l.top;let{contentWidth:d,contentHeight:u}=this.calculateContentDim(this.target);const p=this.option(\"mouseMoveFactor\");p>1&&(d!==a&&(d*=p),u!==r&&(u*=p));let f=.5*(d-a)-c/a*100/100*(d-a);f+=.5*(o.right-o.left);let g=.5*(u-r)-h/r*100/100*(u-r);g+=.5*(o.bottom-o.top),this.applyChange({panX:f-this.target.e,panY:g-this.target.f,friction:i})}zoomWithWheel(e){if(this.state===m.Destroy||this.state===m.Init)return;const i=Date.now();if(i-this.pwt<45)return void e.preventDefault();this.pwt=i;var n=[-e.deltaX||0,-e.deltaY||0,-e.detail||0].reduce((function(t,e){return Math.abs(e)>Math.abs(t)?e:t}));const s=Math.max(-1,Math.min(1,n)),{targetScale:o,maxScale:a,minScale:r}=this;let l=o*(100+45*s)/100;t(l)t(a)&&t(o)>=t(a)?(this.cwd+=Math.abs(s),l=a):(this.cwd=0,l=Math.max(Math.min(l,a),r)),this.cwd>this.option(\"wheelLimit\")||(e.preventDefault(),t(l)!==t(o)&&this.zoomTo(l,{event:e}))}canZoomIn(){return this.option(\"zoom\")&&(t(this.contentRect.width,1)t(this.minScale)}zoomIn(t=1.25,e){this.zoomTo(this.targetScale*t,e)}zoomOut(t=.8,e){this.zoomTo(this.targetScale*t,e)}zoomToFit(t){this.zoomTo(\"fit\",t)}zoomToCover(t){this.zoomTo(\"cover\",t)}zoomToFull(t){this.zoomTo(\"full\",t)}zoomToMax(t){this.zoomTo(\"max\",t)}toggleZoom(t){this.zoomTo(this.getNextScale(\"toggleZoom\"),t)}toggleMax(t){this.zoomTo(this.getNextScale(\"toggleMax\"),t)}toggleCover(t){this.zoomTo(this.getNextScale(\"toggleCover\"),t)}iterateZoom(t){this.zoomTo(\"next\",t)}zoomTo(t=1,{friction:e=z,originX:i=z,originY:n=z,event:s}={}){if(this.isContentLoading||this.state===m.Destroy)return;const{targetScale:o,fullScale:a,maxScale:r,coverScale:l}=this;if(this.stop(),this.panMode===O&&(s=this.pmme||s),s||i===z||n===z){const t=this.content.getBoundingClientRect(),e=this.container.getBoundingClientRect(),o=s?s.clientX:e.left+.5*e.width,a=s?s.clientY:e.top+.5*e.height;i=o-t.left-.5*t.width,n=a-t.top-.5*t.height}let c=1;\"number\"==typeof t?c=t:\"full\"===t?c=a:\"cover\"===t?c=l:\"max\"===t?c=r:\"fit\"===t?c=1:\"next\"===t&&(c=this.getNextScale(\"iterateZoom\")),c=c/o||1,e=e===z?c>1?.15:.25:e,this.applyChange({scale:c,originX:i,originY:n,friction:e}),s&&this.panMode===O&&this.panWithMouse(s,e)}rotateCCW(){this.applyChange({angle:-90})}rotateCW(){this.applyChange({angle:90})}flipX(){this.applyChange({flipX:!0})}flipY(){this.applyChange({flipY:!0})}fitX(){this.stop(\"target\");const{containerRect:t,contentRect:e,target:i}=this;this.applyChange({panX:.5*t.width-(e.left+.5*e.fitWidth)-i.e,panY:.5*t.height-(e.top+.5*e.fitHeight)-i.f,scale:t.width/e.fitWidth/this.targetScale,originX:0,originY:0,ignoreBounds:!0})}fitY(){this.stop(\"target\");const{containerRect:t,contentRect:e,target:i}=this;this.applyChange({panX:.5*t.width-(e.left+.5*e.fitWidth)-i.e,panY:.5*t.innerHeight-(e.top+.5*e.fitHeight)-i.f,scale:t.height/e.fitHeight/this.targetScale,originX:0,originY:0,ignoreBounds:!0})}toggleFS(){const{container:t}=this,e=this.cn(\"inFullscreen\"),i=this.cn(\"htmlHasFullscreen\");t.classList.toggle(e);const n=t.classList.contains(e);n?(document.documentElement.classList.add(i),document.addEventListener(\"keydown\",this.onKeydown,!0)):(document.documentElement.classList.remove(i),document.removeEventListener(\"keydown\",this.onKeydown,!0)),this.updateMetrics(),this.emit(n?\"enterFS\":\"exitFS\")}getMatrix(t=this.current){const{a:e,b:i,c:n,d:s,e:o,f:a}=t;return new DOMMatrix([e,i,n,s,o,a])}reset(t){if(this.state!==m.Init&&this.state!==m.Destroy){this.stop(\"current\");for(const t of v)this.target[t]=C[t];this.target.a=this.minScale,this.target.d=this.minScale,this.clampTargetBounds(),this.isResting||(this.friction=void 0===t?this.option(\"friction\"):t,this.state=m.Panning,this.requestTick())}}destroy(){this.stop(),this.state=m.Destroy,this.detachEvents(),this.detachObserver();const{container:t,content:e}=this,i=this.option(\"classes\")||{};for(const e of Object.values(i))t.classList.remove(e+\"\");e&&(e.removeEventListener(\"load\",this.onLoad),e.removeEventListener(\"error\",this.onError)),this.detachPlugins()}}Object.defineProperty(I,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:y}),Object.defineProperty(I,\"Plugins\",{enumerable:!0,configurable:!0,writable:!0,value:{}});const D=function(t,e){let i=!0;return(...n)=>{i&&(i=!1,t(...n),setTimeout((()=>{i=!0}),e))}},F=(t,e)=>{let i=[];return t.childNodes.forEach((t=>{t.nodeType!==Node.ELEMENT_NODE||e&&!t.matches(e)||i.push(t)})),i},j={viewport:null,track:null,enabled:!0,slides:[],axis:\"x\",transition:\"fade\",preload:1,slidesPerPage:\"auto\",initialPage:0,friction:.12,Panzoom:{decelFriction:.12},center:!0,infinite:!0,fill:!0,dragFree:!1,adaptiveHeight:!1,direction:\"ltr\",classes:{container:\"f-carousel\",viewport:\"f-carousel__viewport\",track:\"f-carousel__track\",slide:\"f-carousel__slide\",isLTR:\"is-ltr\",isRTL:\"is-rtl\",isHorizontal:\"is-horizontal\",isVertical:\"is-vertical\",inTransition:\"in-transition\",isSelected:\"is-selected\"},l10n:{NEXT:\"Next slide\",PREV:\"Previous slide\",GOTO:\"Go to slide #%d\"}};var B;!function(t){t[t.Init=0]=\"Init\",t[t.Ready=1]=\"Ready\",t[t.Destroy=2]=\"Destroy\"}(B||(B={}));const H=t=>{if(\"string\"==typeof t||t instanceof HTMLElement)t={html:t};else{const e=t.thumb;void 0!==e&&(\"string\"==typeof e&&(t.thumbSrc=e),e instanceof HTMLImageElement&&(t.thumbEl=e,t.thumbElSrc=e.src,t.thumbSrc=e.src),delete t.thumb)}return Object.assign({html:\"\",el:null,isDom:!1,class:\"\",customClass:\"\",index:-1,dim:0,gap:0,pos:0,transition:!1},t)},N=(t={})=>Object.assign({index:-1,slides:[],dim:0,pos:-1},t);class _ extends f{constructor(t,e){super(e),Object.defineProperty(this,\"instance\",{enumerable:!0,configurable:!0,writable:!0,value:t})}attach(){}detach(){}}const $={classes:{list:\"f-carousel__dots\",isDynamic:\"is-dynamic\",hasDots:\"has-dots\",dot:\"f-carousel__dot\",isBeforePrev:\"is-before-prev\",isPrev:\"is-prev\",isCurrent:\"is-current\",isNext:\"is-next\",isAfterNext:\"is-after-next\"},dotTpl:' ',dynamicFrom:11,maxCount:1/0,minCount:2};class W extends _{constructor(){super(...arguments),Object.defineProperty(this,\"isDynamic\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,\"list\",{enumerable:!0,configurable:!0,writable:!0,value:null})}onRefresh(){this.refresh()}build(){let t=this.list;if(!t){t=document.createElement(\"ul\"),P(t,this.cn(\"list\")),t.setAttribute(\"role\",\"tablist\");const e=this.instance.container;e.appendChild(t),P(e,this.cn(\"hasDots\")),this.list=t}return t}refresh(){var t;const e=this.instance.pages.length,i=Math.min(2,this.option(\"minCount\")),n=Math.max(2e3,this.option(\"maxCount\")),s=this.option(\"dynamicFrom\");if(en)return void this.cleanup();const a=\"number\"==typeof s&&e>5&&e>=s,r=!this.list||this.isDynamic!==a||this.list.children.length!==e;r&&this.cleanup();const l=this.build();if(o(l,this.cn(\"isDynamic\"),!!a),r)for(let t=0;t=e-1&&s.setAttribute(X,\"\")))}addBtn(t){var e;const i=this.instance,n=document.createElement(\"button\");n.setAttribute(\"tabindex\",\"0\"),n.setAttribute(\"title\",i.localize(`{{${t.toUpperCase()}}}`)),P(n,this.cn(\"button\")+\" \"+this.cn(t===q?\"isNext\":\"isPrev\"));const s=i.isRTL?t===q?Y:q:t;var o;return n.innerHTML=i.localize(this.option(`${s}Tpl`)),n.dataset[`carousel${o=t,o?o.match(\"^[a-z]\")?o.charAt(0).toUpperCase()+o.substring(1):o:\"\"}`]=\"true\",null===(e=this.container)||void 0===e||e.appendChild(n),n}build(){const t=this.instance.container,e=this.cn(\"container\");let{container:i,prev:n,next:s}=this;i||(i=t.querySelector(\".\"+e),this.isDom=!!i),i||(i=document.createElement(\"div\"),P(i,e),t.appendChild(i)),this.container=i,s||(s=i.querySelector(\"[data-carousel-next]\")),s||(s=this.addBtn(q)),this.next=s,n||(n=i.querySelector(\"[data-carousel-prev]\")),n||(n=this.addBtn(Y)),this.prev=n}cleanup(){this.isDom||(this.prev&&this.prev.remove(),this.next&&this.next.remove(),this.container&&this.container.remove()),this.prev=null,this.next=null,this.container=null,this.isDom=!1}attach(){this.instance.on([\"refresh\",\"change\"],this.onRefresh)}detach(){this.instance.off([\"refresh\",\"change\"],this.onRefresh),this.cleanup()}}Object.defineProperty(V,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:{classes:{container:\"f-carousel__nav\",button:\"f-button\",isNext:\"is-next\",isPrev:\"is-prev\"},nextTpl:' ',prevTpl:' '}});class Z extends _{constructor(){super(...arguments),Object.defineProperty(this,\"selectedIndex\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"target\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"nav\",{enumerable:!0,configurable:!0,writable:!0,value:null})}addAsTargetFor(t){this.target=this.instance,this.nav=t,this.attachEvents()}addAsNavFor(t){this.nav=this.instance,this.target=t,this.attachEvents()}attachEvents(){const{nav:t,target:e}=this;t&&e&&(t.options.initialSlide=e.options.initialPage,t.state===B.Ready?this.onNavReady(t):t.on(\"ready\",this.onNavReady),e.state===B.Ready?this.onTargetReady(e):e.on(\"ready\",this.onTargetReady))}onNavReady(t){t.on(\"createSlide\",this.onNavCreateSlide),t.on(\"Panzoom.click\",this.onNavClick),t.on(\"Panzoom.touchEnd\",this.onNavTouch),this.onTargetChange()}onTargetReady(t){t.on(\"change\",this.onTargetChange),t.on(\"Panzoom.refresh\",this.onTargetChange),this.onTargetChange()}onNavClick(t,e,i){this.onNavTouch(t,t.panzoom,i)}onNavTouch(t,e,i){var n,s;if(Math.abs(e.dragOffset.x)>3||Math.abs(e.dragOffset.y)>3)return;const o=i.target,{nav:a,target:r}=this;if(!a||!r||!o)return;const l=o.closest(\"[data-index]\");if(i.stopPropagation(),i.preventDefault(),!l)return;const c=parseInt(l.dataset.index||\"\",10)||0,h=r.getPageForSlide(c),d=a.getPageForSlide(c);a.slideTo(d),r.slideTo(h,{friction:(null===(s=null===(n=this.nav)||void 0===n?void 0:n.plugins)||void 0===s?void 0:s.Sync.option(\"friction\"))||0}),this.markSelectedSlide(c)}onNavCreateSlide(t,e){e.index===this.selectedIndex&&this.markSelectedSlide(e.index)}onTargetChange(){var t,e;const{target:i,nav:n}=this;if(!i||!n)return;if(n.state!==B.Ready||i.state!==B.Ready)return;const s=null===(e=null===(t=i.pages[i.page])||void 0===t?void 0:t.slides[0])||void 0===e?void 0:e.index,o=n.getPageForSlide(s);this.markSelectedSlide(s),n.slideTo(o,null===n.prevPage&&null===i.prevPage?{friction:0}:void 0)}markSelectedSlide(t){const e=this.nav;e&&e.state===B.Ready&&(this.selectedIndex=t,[...e.slides].map((e=>{e.el&&e.el.classList[e.index===t?\"add\":\"remove\"](\"is-nav-selected\")})))}attach(){const t=this;let e=t.options.target,i=t.options.nav;e?t.addAsNavFor(e):i&&t.addAsTargetFor(i)}detach(){const t=this,e=t.nav,i=t.target;e&&(e.off(\"ready\",t.onNavReady),e.off(\"createSlide\",t.onNavCreateSlide),e.off(\"Panzoom.click\",t.onNavClick),e.off(\"Panzoom.touchEnd\",t.onNavTouch)),t.nav=null,i&&(i.off(\"ready\",t.onTargetReady),i.off(\"refresh\",t.onTargetChange),i.off(\"change\",t.onTargetChange)),t.target=null}}Object.defineProperty(Z,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:{friction:.35}});const U={Navigation:V,Dots:W,Sync:Z},G=\"animationend\",K=\"isSelected\",J=\"slide\";class Q extends g{get axis(){return this.isHorizontal?\"e\":\"f\"}get isEnabled(){return this.state===B.Ready}get isInfinite(){let t=!1;const{contentDim:e,viewportDim:i,pages:n,slides:s}=this,o=s[0];return n.length>=2&&o&&e+o.dim>=i&&(t=this.option(\"infinite\")),t}get isRTL(){return\"rtl\"===this.option(\"direction\")}get isHorizontal(){return\"x\"===this.option(\"axis\")}constructor(t,e={},i={}){if(super(),Object.defineProperty(this,\"bp\",{enumerable:!0,configurable:!0,writable:!0,value:\"\"}),Object.defineProperty(this,\"lp\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"userOptions\",{enumerable:!0,configurable:!0,writable:!0,value:{}}),Object.defineProperty(this,\"userPlugins\",{enumerable:!0,configurable:!0,writable:!0,value:{}}),Object.defineProperty(this,\"state\",{enumerable:!0,configurable:!0,writable:!0,value:B.Init}),Object.defineProperty(this,\"page\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"prevPage\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"container\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"viewport\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"track\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"slides\",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,\"pages\",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,\"panzoom\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"inTransition\",{enumerable:!0,configurable:!0,writable:!0,value:new Set}),Object.defineProperty(this,\"contentDim\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"viewportDim\",{enumerable:!0,configurable:!0,writable:!0,value:0}),\"string\"==typeof t&&(t=document.querySelector(t)),!t||!E(t))throw new Error(\"No Element found\");this.container=t,this.slideNext=D(this.slideNext.bind(this),150),this.slidePrev=D(this.slidePrev.bind(this),150),this.userOptions=e,this.userPlugins=i,queueMicrotask((()=>{this.processOptions()}))}processOptions(){var t,e;const i=u({},Q.defaults,this.userOptions);let n=\"\";const s=i.breakpoints;if(s&&d(s))for(const[t,e]of Object.entries(s))window.matchMedia(t).matches&&d(e)&&(n+=t,u(i,e));n===this.bp&&this.state!==B.Init||(this.bp=n,this.state===B.Ready&&(i.initialSlide=(null===(e=null===(t=this.pages[this.page])||void 0===t?void 0:t.slides[0])||void 0===e?void 0:e.index)||0),this.state!==B.Init&&this.destroy(),super.setOptions(i),!1===this.option(\"enabled\")?this.attachEvents():setTimeout((()=>{this.init()}),0))}init(){this.state=B.Init,this.emit(\"init\"),this.attachPlugins(Object.assign(Object.assign({},Q.Plugins),this.userPlugins)),this.emit(\"attachPlugins\"),this.initLayout(),this.initSlides(),this.updateMetrics(),this.setInitialPosition(),this.initPanzoom(),this.attachEvents(),this.state=B.Ready,this.emit(\"ready\")}initLayout(){const{container:t}=this,e=this.option(\"classes\");P(t,this.cn(\"container\")),o(t,e.isLTR,!this.isRTL),o(t,e.isRTL,this.isRTL),o(t,e.isVertical,!this.isHorizontal),o(t,e.isHorizontal,this.isHorizontal);let i=this.option(\"viewport\")||t.querySelector(`.${e.viewport}`);i||(i=document.createElement(\"div\"),P(i,e.viewport),i.append(...F(t,`.${e.slide}`)),t.prepend(i)),i.addEventListener(\"scroll\",this.onScroll);let n=this.option(\"track\")||t.querySelector(`.${e.track}`);n||(n=document.createElement(\"div\"),P(n,e.track),n.append(...Array.from(i.childNodes))),n.setAttribute(\"aria-live\",\"polite\"),i.contains(n)||i.prepend(n),this.viewport=i,this.track=n,this.emit(\"initLayout\")}initSlides(){const{track:t}=this;if(!t)return;const e=[...this.slides],i=[];[...F(t,`.${this.cn(J)}`)].forEach((t=>{if(E(t)){const e=H({el:t,isDom:!0,index:this.slides.length});i.push(e)}}));for(let t of[...this.option(\"slides\",[])||[],...e])i.push(H(t));this.slides=i;for(let t=0;t!(this.pages.length<2&&!t.options.infinite),bounds:()=>this.getBounds(),maxVelocity:t=>Math.abs(t.target[this.axis]-t.current[this.axis])<2*this.viewportDim?100:0},t)),this.panzoom.on(\"*\",((t,e,...i)=>{this.emit(`Panzoom.${e}`,t,...i)})),this.panzoom.on(\"decel\",this.onDecel),this.panzoom.on(\"refresh\",this.onRefresh),this.panzoom.on(\"beforeTransform\",this.onBeforeTransform),this.panzoom.on(\"endAnimation\",this.onEndAnimation)}attachEvents(){const t=this.container;t&&(t.addEventListener(\"click\",this.onClick,{passive:!1,capture:!1}),t.addEventListener(\"slideTo\",this.onSlideTo)),window.addEventListener(\"resize\",this.onResize)}createPages(){let t=[];const{contentDim:e,viewportDim:i}=this;let n=this.option(\"slidesPerPage\");n=(\"auto\"===n||e<=i)&&!1!==this.option(\"fill\")?1/0:parseFloat(n+\"\");let s=0,o=0,a=0;for(const e of this.slides)(!t.length||o+e.dim-i>.05||a>=n)&&(t.push(N()),s=t.length-1,o=0,a=0),t[s].slides.push(e),o+=e.dim+e.gap,a++;return t}processPages(){const e=this.pages,{contentDim:i,viewportDim:n,isInfinite:s}=this,o=this.option(\"center\"),a=this.option(\"fill\"),r=a&&o&&i>n&&!s;if(e.forEach(((t,e)=>{var s;t.index=e,t.pos=(null===(s=t.slides[0])||void 0===s?void 0:s.pos)||0,t.dim=0;for(const[e,i]of t.slides.entries())t.dim+=i.dim,e=i-.5*n?t.pos=i-n:o&&(t.pos+=-.5*(n-t.dim))})),e.forEach((e=>{a&&!s&&i>n&&(e.pos=Math.max(e.pos,0),e.pos=Math.min(e.pos,i-n)),e.pos=t(e.pos,1e3),e.dim=t(e.dim,1e3),Math.abs(e.pos)<=.1&&(e.pos=0)})),s)return e;const l=[];let c;return e.forEach((t=>{const e=Object.assign({},t);c&&e.pos===c.pos?(c.dim+=e.dim,c.slides=[...c.slides,...e.slides]):(e.index=l.length,c=e,l.push(e))})),l}getPageFromIndex(t=0){const e=this.pages.length;let i;return t=parseInt((t||0).toString())||0,i=this.isInfinite?(t%e+e)%e:Math.max(Math.min(t,e-1),0),i}getSlideMetrics(e){var i,n;const s=this.isHorizontal?\"width\":\"height\";let o=0,a=0,r=e.el;const l=!(!r||r.parentNode);if(r?o=parseFloat(r.dataset[s]||\"\")||0:(r=document.createElement(\"div\"),r.style.visibility=\"hidden\",(this.track||document.body).prepend(r)),P(r,this.cn(J)+\" \"+e.class+\" \"+e.customClass),o)r.style[s]=`${o}px`,r.style[\"width\"===s?\"height\":\"width\"]=\"\";else{l&&(this.track||document.body).prepend(r),o=r.getBoundingClientRect()[s]*Math.max(1,(null===(i=window.visualViewport)||void 0===i?void 0:i.scale)||1);let t=r[this.isHorizontal?\"offsetWidth\":\"offsetHeight\"];t-1>o&&(o=t)}const c=getComputedStyle(r);return\"content-box\"===c.boxSizing&&(this.isHorizontal?(o+=parseFloat(c.paddingLeft)||0,o+=parseFloat(c.paddingRight)||0):(o+=parseFloat(c.paddingTop)||0,o+=parseFloat(c.paddingBottom)||0)),a=parseFloat(c[this.isHorizontal?\"marginRight\":\"marginBottom\"])||0,l?null===(n=r.parentElement)||void 0===n||n.removeChild(r):e.el||r.remove(),{dim:t(o,1e3),gap:t(a,1e3)}}getBounds(){const{isInfinite:t,isRTL:e,isHorizontal:i,pages:n}=this;let s={min:0,max:0};if(t)s={min:-1/0,max:1/0};else if(n.length){const t=n[0].pos,o=n[n.length-1].pos;s=e&&i?{min:t,max:o}:{min:-1*o,max:-1*t}}return{x:i?s:{min:0,max:0},y:i?{min:0,max:0}:s}}repositionSlides(){let e,{isHorizontal:i,isRTL:n,isInfinite:s,viewport:o,viewportDim:a,contentDim:r,page:l,pages:c,slides:h,panzoom:d}=this,u=0,p=0,f=0,g=0;d?g=-1*d.current[this.axis]:c[l]&&(g=c[l].pos||0),e=i?n?\"right\":\"left\":\"top\",n&&i&&(g*=-1);for(const i of h){const n=i.el;n?(\"top\"===e?(n.style.right=\"\",n.style.left=\"\"):n.style.top=\"\",i.index!==u?n.style[e]=0===p?\"\":`${t(p,1e3)}px`:n.style[e]=\"\",f+=i.dim+i.gap,u++):p+=i.dim+i.gap}if(s&&f&&o){let n=getComputedStyle(o),s=\"padding\",l=i?\"Right\":\"Bottom\",c=parseFloat(n[s+(i?\"Left\":\"Top\")]);g-=c,a+=c,a+=parseFloat(n[s+l]);for(const i of h)i.el&&(t(i.pos)t(r-a)&&(i.el.style[e]=`${t(p+f,1e3)}px`),t(i.pos+i.gap)>=t(r-a)&&t(i.pos)>t(g+a)&&t(g)1&&(m=c[b[0]],v=c[b[1]]),m&&v){let i=0;for(const n of h)n.el?this.inTransition.has(n.index)&&m.slides.indexOf(n)<0&&(n.el.style[e]=`${t(i+(m.pos-v.pos),1e3)}px`):i+=n.dim+n.gap}}createSlideEl(t){const{track:e,slides:i}=this;if(!e||!t)return;if(t.el&&t.el.parentNode)return;const n=t.el||document.createElement(\"div\");P(n,this.cn(J)),P(n,t.class),P(n,t.customClass);const s=t.html;s&&(s instanceof HTMLElement?n.appendChild(s):n.innerHTML=t.html+\"\");const o=[];i.forEach(((t,e)=>{t.el&&o.push(e)}));const a=t.index;let r=null;if(o.length){r=i[o.reduce(((t,e)=>Math.abs(e-a)1)return!1;let h=t>a?1:-1;this.isInfinite&&(0===a&&t===r.length-1&&(h=-1),a===r.length-1&&0===t&&(h=1));const d=r[c].pos*(this.isRTL?1:-1);if(a===c&&Math.abs(d-l.target[this.axis])<1)return!1;this.clearTransitions();const u=l.isResting;P(this.container,this.cn(\"inTransition\"));const p=(null===(s=r[a])||void 0===s?void 0:s.slides[0])||null,f=(null===(o=r[c])||void 0===o?void 0:o.slides[0])||null;this.inTransition.add(f.index),this.createSlideEl(f);let g=p.el,m=f.el;u||e===J||(e=\"fadeFast\",g=null);const v=this.isRTL?\"next\":\"prev\",b=this.isRTL?\"prev\":\"next\";return g&&(this.inTransition.add(p.index),p.transition=e,g.addEventListener(G,this.onAnimationEnd),g.classList.add(`f-${e}Out`,`to-${h>0?b:v}`)),m&&(f.transition=e,m.addEventListener(G,this.onAnimationEnd),m.classList.add(`f-${e}In`,`from-${h>0?v:b}`)),l.current[this.axis]=d,l.target[this.axis]=d,l.requestTick(),this.onChange(c),!0}manageSlideVisiblity(){const t=new Set,e=new Set,i=this.getVisibleSlides(parseFloat(this.option(\"preload\",0)+\"\")||0);for(const n of this.slides)i.has(n)?t.add(n):e.add(n);for(const e of this.inTransition)t.add(this.slides[e]);for(const e of t)this.createSlideEl(e),this.lazyLoadSlide(e);for(const i of e)t.has(i)||this.removeSlideEl(i);this.markSelectedSlides(),this.repositionSlides()}markSelectedSlides(){if(!this.pages[this.page]||!this.pages[this.page].slides)return;const t=\"aria-hidden\";let e=this.cn(K);if(e)for(const i of this.slides){const n=i.el;n&&(n.dataset.index=`${i.index}`,n.classList.contains(\"f-thumbs__slide\")?this.getVisibleSlides(0).has(i)?n.removeAttribute(t):n.setAttribute(t,\"true\"):this.pages[this.page].slides.includes(i)?(n.classList.contains(e)||(P(n,e),this.emit(\"selectSlide\",i)),n.removeAttribute(t)):(n.classList.contains(e)&&(S(n,e),this.emit(\"unselectSlide\",i)),n.setAttribute(t,\"true\")))}}flipInfiniteTrack(){const{axis:t,isHorizontal:e,isInfinite:i,isRTL:n,viewportDim:s,contentDim:o}=this,a=this.panzoom;if(!a||!i)return;let r=a.current[t],l=a.target[t]-r,c=0,h=.5*s;n&&e?(r<-h&&(c=-1,r+=o),r>o-h&&(c=1,r-=o)):(r>h&&(c=1,r-=o),r<-o+h&&(c=-1,r+=o)),c&&(a.current[t]=r,a.target[t]=r+l)}lazyLoadImg(t,e){const i=this,s=\"f-fadeIn\",o=\"is-preloading\";let a=!1,r=null;const l=()=>{a||(a=!0,r&&(r.remove(),r=null),S(e,o),e.complete&&(P(e,s),setTimeout((()=>{S(e,s)}),350)),this.option(\"adaptiveHeight\")&&t.el&&this.pages[this.page].slides.indexOf(t)>-1&&(i.updateMetrics(),i.setViewportHeight()),this.emit(\"load\",t))};P(e,o),e.src=e.dataset.lazySrcset||e.dataset.lazySrc||\"\",delete e.dataset.lazySrc,delete e.dataset.lazySrcset,e.addEventListener(\"error\",(()=>{l()})),e.addEventListener(\"load\",(()=>{l()})),setTimeout((()=>{const i=e.parentNode;i&&t.el&&(e.complete?l():a||(r=n(x),i.insertBefore(r,e)))}),300)}lazyLoadSlide(t){const e=t&&t.el;if(!e)return;const i=new Set;let n=Array.from(e.querySelectorAll(\"[data-lazy-src],[data-lazy-srcset]\"));e.dataset.lazySrc&&n.push(e),n.map((t=>{t instanceof HTMLImageElement?i.add(t):t instanceof HTMLElement&&t.dataset.lazySrc&&(t.style.backgroundImage=`url('${t.dataset.lazySrc}')`,delete t.dataset.lazySrc)}));for(const e of i)this.lazyLoadImg(t,e)}onAnimationEnd(t){var e;const i=t.target,n=i?parseInt(i.dataset.index||\"\",10)||0:-1,s=this.slides[n],o=t.animationName;if(!i||!s||!o)return;const a=!!this.inTransition.has(n)&&s.transition;a&&o.substring(0,a.length+2)===`f-${a}`&&this.inTransition.delete(n),this.inTransition.size||this.clearTransitions(),n===this.page&&(null===(e=this.panzoom)||void 0===e?void 0:e.isResting)&&this.emit(\"settle\")}onDecel(t,e=0,i=0,n=0,s=0){if(this.option(\"dragFree\"))return void this.setPageFromPosition();const{isRTL:o,isHorizontal:a,axis:r,pages:l}=this,c=l.length,h=Math.abs(Math.atan2(i,e)/(Math.PI/180));let d=0;if(d=h>45&&h<135?a?0:i:a?e:0,!c)return;let u=this.page,p=o&&a?1:-1;const f=t.current[r]*p;let{pageIndex:g}=this.getPageFromPosition(f);Math.abs(d)>5?(l[u].dim=t&&(this.page+=d.length),this.updateMetrics(),a){const e=(null===(s=this.pages[this.page])||void 0===s?void 0:s.pos)||0,i=(null===(o=this.pages[this.page])||void 0===o?void 0:o.dim)||0,n=this.pages.length||1,h=this.isRTL?l-i:i-l,d=this.isRTL?r-e:e-r;c&&1===n?(t<=this.page&&(a.current[this.axis]-=h,a.target[this.axis]-=h),a.panTo({[this.isHorizontal?\"x\":\"y\"]:-1*e})):d&&t<=this.page&&(a.target[this.axis]-=d,a.current[this.axis]-=d,a.requestTick())}for(const t of d)this.emit(\"initSlide\",t,t.index)}prependSlide(t){this.addSlide(0,t)}appendSlide(t){this.addSlide(this.slides.length,t)}removeSlide(t){const e=this.slides.length;t=(t%e+e)%e;const i=this.slides[t];if(i){this.removeSlideEl(i,!0),this.slides.splice(t,1);for(let t=0;tthis.page?-1:1;let l=-1*o.current.e,c=t((l-r.pos)/(1*r.dim),1e3),h=c,d=c;this.isInfinite&&!0!==n&&(h=t((l-r.pos+a)/(1*r.dim),1e3),d=t((l-r.pos-a)/(1*r.dim),1e3));let u=[c,h,d].reduce((function(t,e){return Math.abs(e)1?1:u<-1?-1:u}setViewportHeight(){const{page:t,pages:e,viewport:i,isHorizontal:n}=this;if(!i||!e[t])return;let s=0;n&&this.track&&(this.track.style.height=\"auto\",e[t].slides.forEach((t=>{t.el&&(s=Math.max(s,t.el.offsetHeight))}))),i.style.height=s?`${s}px`:\"\"}getPageForSlide(t){for(const e of this.pages)for(const i of e.slides)if(i.index===t)return e.index;return-1}getVisibleSlides(t=0){var e;const i=new Set;let{panzoom:n,contentDim:s,viewportDim:o,pages:a,page:r}=this;if(o){s=s+(null===(e=this.slides[this.slides.length-1])||void 0===e?void 0:e.gap)||0;let l=0;l=n&&n.state!==m.Init&&n.state!==m.Destroy?-1*n.current[this.axis]:a[r]&&a[r].pos||0,this.isInfinite&&(l-=Math.floor(l/s)*s),this.isRTL&&this.isHorizontal&&(l*=-1);const c=l-o*t,h=l+o*(t+1),d=this.isInfinite?[-1,0,1]:[0];for(const t of this.slides)for(const e of d){const n=t.pos+e*s,o=n+t.dim+t.gap;nc&&i.add(t)}}return i}getPageFromPosition(t){const{viewportDim:e,contentDim:i,slides:n,pages:s,panzoom:o}=this,a=s.length,r=n.length,l=n[0],c=n[r-1],h=this.option(\"center\");let d=0,u=0,p=0,f=void 0===t?-1*((null==o?void 0:o.target[this.axis])||0):t;h&&(f+=.5*e),this.isInfinite?(fc.pos+c.dim+.5*c.gap&&(f-=i,p=1)):f=Math.max(l.pos||0,Math.min(f,c.pos));let g=c,m=n.find((t=>{const e=t.pos-.5*g.gap,i=t.pos+t.dim+.5*t.gap;return g=t,f>=e&&f{this.removeSlideEl(t)})),this.detachPlugins(),e&&(e.removeEventListener(\"scroll\",this.onScroll),e.offsetParent&&i&&i.offsetParent&&e.replaceWith(...i.childNodes));for(const[e,i]of Object.entries(o))\"container\"!==e&&i&&t.classList.remove(i);this.track=null,this.viewport=null,this.page=0,this.slides=[];const a=this.events.get(\"ready\");this.events=new Map,a&&this.events.set(\"ready\",a)}}Object.defineProperty(Q,\"Panzoom\",{enumerable:!0,configurable:!0,writable:!0,value:I}),Object.defineProperty(Q,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:j}),Object.defineProperty(Q,\"Plugins\",{enumerable:!0,configurable:!0,writable:!0,value:U});const tt=function(t){if(!E(t))return 0;const e=window.scrollY,i=window.innerHeight,n=e+i,s=t.getBoundingClientRect(),o=s.y+e,a=s.height,r=o+a;if(e>r||nr)return 100;if(on)return 100;let l=a;on&&(l-=r-n);const c=l/i*100;return Math.round(c)},et=!(\"undefined\"==typeof window||!window.document||!window.document.createElement);let it;const nt=[\"a[href]\",\"area[href]\",'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\"select:not([disabled]):not([aria-hidden])\",\"textarea:not([disabled]):not([aria-hidden])\",\"button:not([disabled]):not([aria-hidden]):not(.fancybox-focus-guard)\",\"iframe\",\"object\",\"embed\",\"video\",\"audio\",\"[contenteditable]\",'[tabindex]:not([tabindex^=\"-\"]):not([disabled]):not([aria-hidden])'].join(\",\"),st=t=>{if(t&&et){void 0===it&&document.createElement(\"div\").focus({get preventScroll(){return it=!0,!1}});try{if(it)t.focus({preventScroll:!0});else{const e=window.scrollY||document.body.scrollTop,i=window.scrollX||document.body.scrollLeft;t.focus(),document.body.scrollTo({top:e,left:i,behavior:\"auto\"})}}catch(t){}}},ot=()=>{const t=document;let e,i=\"\",n=\"\",s=\"\";return t.fullscreenEnabled?(i=\"requestFullscreen\",n=\"exitFullscreen\",s=\"fullscreenElement\"):t.webkitFullscreenEnabled&&(i=\"webkitRequestFullscreen\",n=\"webkitExitFullscreen\",s=\"webkitFullscreenElement\"),i&&(e={request:function(e=t.documentElement){return\"webkitRequestFullscreen\"===i?e[i](Element.ALLOW_KEYBOARD_INPUT):e[i]()},exit:function(){return t[s]&&t[n]()},isFullscreen:function(){return t[s]}}),e},at={animated:!0,autoFocus:!0,backdropClick:\"close\",Carousel:{classes:{container:\"fancybox__carousel\",viewport:\"fancybox__viewport\",track:\"fancybox__track\",slide:\"fancybox__slide\"}},closeButton:\"auto\",closeExisting:!1,commonCaption:!1,compact:()=>window.matchMedia(\"(max-width: 578px), (max-height: 578px)\").matches,contentClick:\"toggleZoom\",contentDblClick:!1,defaultType:\"image\",defaultDisplay:\"flex\",dragToClose:!0,Fullscreen:{autoStart:!1},groupAll:!1,groupAttr:\"data-fancybox\",hideClass:\"f-fadeOut\",hideScrollbar:!0,idle:3500,keyboard:{Escape:\"close\",Delete:\"close\",Backspace:\"close\",PageUp:\"next\",PageDown:\"prev\",ArrowUp:\"prev\",ArrowDown:\"next\",ArrowRight:\"next\",ArrowLeft:\"prev\"},l10n:Object.assign(Object.assign({},b),{CLOSE:\"Close\",NEXT:\"Next\",PREV:\"Previous\",MODAL:\"You can close this modal content with the ESC key\",ERROR:\"Something Went Wrong, Please Try Again Later\",IMAGE_ERROR:\"Image Not Found\",ELEMENT_NOT_FOUND:\"HTML Element Not Found\",AJAX_NOT_FOUND:\"Error Loading AJAX : Not Found\",AJAX_FORBIDDEN:\"Error Loading AJAX : Forbidden\",IFRAME_ERROR:\"Error Loading Page\",TOGGLE_ZOOM:\"Toggle zoom level\",TOGGLE_THUMBS:\"Toggle thumbnails\",TOGGLE_SLIDESHOW:\"Toggle slideshow\",TOGGLE_FULLSCREEN:\"Toggle full-screen mode\",DOWNLOAD:\"Download\"}),parentEl:null,placeFocusBack:!0,showClass:\"f-zoomInUp\",startIndex:0,tpl:{closeButton:' ',main:''},trapFocus:!0,wheel:\"zoom\"};var rt,lt;!function(t){t[t.Init=0]=\"Init\",t[t.Ready=1]=\"Ready\",t[t.Closing=2]=\"Closing\",t[t.CustomClosing=3]=\"CustomClosing\",t[t.Destroy=4]=\"Destroy\"}(rt||(rt={})),function(t){t[t.Loading=0]=\"Loading\",t[t.Opening=1]=\"Opening\",t[t.Ready=2]=\"Ready\",t[t.Closing=3]=\"Closing\"}(lt||(lt={}));let ct=\"\",ht=!1,dt=!1,ut=null;const pt=()=>{let t=\"\",e=\"\";const i=Oe.getInstance();if(i){const n=i.carousel,s=i.getSlide();if(n&&s){let o=s.slug||void 0,a=s.triggerEl||void 0;e=o||(i.option(\"slug\")||\"\"),!e&&a&&a.dataset&&(e=a.dataset.fancybox||\"\"),e&&\"true\"!==e&&(t=\"#\"+e+(!o&&n.slides.length>1?\"-\"+(s.index+1):\"\"))}}return{hash:t,slug:e,index:1}},ft=()=>{const t=new URL(document.URL).hash,e=t.slice(1).split(\"-\"),i=e[e.length-1],n=i&&/^\\+?\\d+$/.test(i)&&parseInt(e.pop()||\"1\",10)||1;return{hash:t,slug:e.join(\"-\"),index:n}},gt=()=>{const{slug:t,index:e}=ft();if(!t)return;let i=document.querySelector(`[data-slug=\"${t}\"]`);if(i&&i.dispatchEvent(new CustomEvent(\"click\",{bubbles:!0,cancelable:!0})),Oe.getInstance())return;const n=document.querySelectorAll(`[data-fancybox=\"${t}\"]`);n.length&&(i=n[e-1],i&&i.dispatchEvent(new CustomEvent(\"click\",{bubbles:!0,cancelable:!0})))},mt=()=>{if(!1===Oe.defaults.Hash)return;const t=Oe.getInstance();if(!1===(null==t?void 0:t.options.Hash))return;const{slug:e,index:i}=ft(),{slug:n}=pt();t&&(e===n?t.jumpTo(i-1):(ht=!0,t.close())),gt()},vt=()=>{ut&&clearTimeout(ut),queueMicrotask((()=>{mt()}))},bt=()=>{window.addEventListener(\"hashchange\",vt,!1),setTimeout((()=>{mt()}),500)};et&&(/complete|interactive|loaded/.test(document.readyState)?bt():document.addEventListener(\"DOMContentLoaded\",bt));const yt=\"is-zooming-in\";class wt extends _{onCreateSlide(t,e,i){const n=this.instance.optionFor(i,\"src\")||\"\";i.el&&\"image\"===i.type&&\"string\"==typeof n&&this.setImage(i,n)}onRemoveSlide(t,e,i){i.panzoom&&i.panzoom.destroy(),i.panzoom=void 0,i.imageEl=void 0}onChange(t,e,i,n){S(this.instance.container,yt);for(const t of e.slides){const e=t.panzoom;e&&t.index!==i&&e.reset(.35)}}onClose(){var t;const e=this.instance,i=e.container,n=e.getSlide();if(!i||!i.parentElement||!n)return;const{el:s,contentEl:o,panzoom:a,thumbElSrc:r}=n;if(!s||!r||!o||!a||a.isContentLoading||a.state===m.Init||a.state===m.Destroy)return;a.updateMetrics();let l=this.getZoomInfo(n);if(!l)return;this.instance.state=rt.CustomClosing,i.classList.remove(yt),i.classList.add(\"is-zooming-out\"),o.style.backgroundImage=`url('${r}')`;const c=i.getBoundingClientRect();1===((null===(t=window.visualViewport)||void 0===t?void 0:t.scale)||1)&&Object.assign(i.style,{position:\"absolute\",top:`${i.offsetTop+window.scrollY}px`,left:`${i.offsetLeft+window.scrollX}px`,bottom:\"auto\",right:\"auto\",width:`${c.width}px`,height:`${c.height}px`,overflow:\"hidden\"});const{x:h,y:d,scale:u,opacity:p}=l;if(p){const t=((t,e,i,n)=>{const s=e-t,o=n-i;return e=>i+((e-t)/s*o||0)})(a.scale,u,1,0);a.on(\"afterTransform\",(()=>{o.style.opacity=t(a.scale)+\"\"}))}a.on(\"endAnimation\",(()=>{e.destroy()})),a.target.a=u,a.target.b=0,a.target.c=0,a.target.d=u,a.panTo({x:h,y:d,scale:u,friction:p?.2:.33,ignoreBounds:!0}),a.isResting&&e.destroy()}setImage(t,e){const i=this.instance;t.src=e,this.process(t,e).then((e=>{const{contentEl:n,imageEl:s,thumbElSrc:o,el:a}=t;if(i.isClosing()||!n||!s)return;n.offsetHeight;const r=!!i.isOpeningSlide(t)&&this.getZoomInfo(t);if(this.option(\"protected\")&&a){a.addEventListener(\"contextmenu\",(t=>{t.preventDefault()}));const t=document.createElement(\"div\");P(t,\"fancybox-protected\"),n.appendChild(t)}if(o&&r){const s=e.contentRect,a=Math.max(s.fullWidth,s.fullHeight);let c=null;!r.opacity&&a>1200&&(c=document.createElement(\"img\"),P(c,\"fancybox-ghost\"),c.src=o,n.appendChild(c));const h=()=>{c&&(P(c,\"f-fadeFastOut\"),setTimeout((()=>{c&&(c.remove(),c=null)}),200))};(l=o,new Promise(((t,e)=>{const i=new Image;i.onload=t,i.onerror=e,i.src=l}))).then((()=>{i.hideLoading(t),t.state=lt.Opening,this.instance.emit(\"reveal\",t),this.zoomIn(t).then((()=>{h(),this.instance.done(t)}),(()=>{})),c&&setTimeout((()=>{h()}),a>2500?800:200)}),(()=>{i.hideLoading(t),i.revealContent(t)}))}else{const n=this.optionFor(t,\"initialSize\"),s=this.optionFor(t,\"zoom\"),o={event:i.prevMouseMoveEvent||i.options.event,friction:s?.12:0};let a=i.optionFor(t,\"showClass\")||void 0,r=!0;i.isOpeningSlide(t)&&(\"full\"===n?e.zoomToFull(o):\"cover\"===n?e.zoomToCover(o):\"max\"===n?e.zoomToMax(o):r=!1,e.stop(\"current\")),r&&a&&(a=e.isDragging?\"f-fadeIn\":\"\"),i.hideLoading(t),i.revealContent(t,a)}var l}),(()=>{i.setError(t,\"{{IMAGE_ERROR}}\")}))}process(t,e){return new Promise(((i,s)=>{var o;const a=this.instance,r=t.el;a.clearContent(t),a.showLoading(t);let l=this.optionFor(t,\"content\");if(\"string\"==typeof l&&(l=n(l)),!l||!E(l)){if(l=document.createElement(\"img\"),l instanceof HTMLImageElement){let i=\"\",n=t.caption;i=\"string\"==typeof n&&n?n.replace(/<[^>]+>/gi,\"\").substring(0,1e3):`Image ${t.index+1} of ${(null===(o=a.carousel)||void 0===o?void 0:o.pages.length)||1}`,l.src=e||\"\",l.alt=i,l.draggable=!1,t.srcset&&l.setAttribute(\"srcset\",t.srcset),this.instance.isOpeningSlide(t)&&(l.fetchPriority=\"high\")}t.sizes&&l.setAttribute(\"sizes\",t.sizes)}P(l,\"fancybox-image\"),t.imageEl=l,a.setContent(t,l,!1);t.panzoom=new I(r,u({transformParent:!0},this.option(\"Panzoom\")||{},{content:l,width:(e,i)=>a.optionFor(t,\"width\",\"auto\",i)||\"auto\",height:(e,i)=>a.optionFor(t,\"height\",\"auto\",i)||\"auto\",wheel:()=>{const t=a.option(\"wheel\");return(\"zoom\"===t||\"pan\"==t)&&t},click:(e,i)=>{var n,s;if(a.isCompact||a.isClosing())return!1;if(t.index!==(null===(n=a.getSlide())||void 0===n?void 0:n.index))return!1;if(i){const t=i.composedPath()[0];if([\"A\",\"BUTTON\",\"TEXTAREA\",\"OPTION\",\"INPUT\",\"SELECT\",\"VIDEO\"].includes(t.nodeName))return!1}let o=!i||i.target&&(null===(s=t.contentEl)||void 0===s?void 0:s.contains(i.target));return a.option(o?\"contentClick\":\"backdropClick\")||!1},dblClick:()=>a.isCompact?\"toggleZoom\":a.option(\"contentDblClick\")||!1,spinner:!1,panOnlyZoomed:!0,wheelLimit:1/0,on:{ready:t=>{i(t)},error:()=>{s()},destroy:()=>{s()}}}))}))}zoomIn(t){return new Promise(((e,i)=>{const n=this.instance,s=n.container,{panzoom:o,contentEl:a,el:r}=t;o&&o.updateMetrics();const l=this.getZoomInfo(t);if(!(l&&r&&a&&o&&s))return void i();const{x:c,y:h,scale:d,opacity:u}=l,p=()=>{t.state!==lt.Closing&&(u&&(a.style.opacity=Math.max(Math.min(1,1-(1-o.scale)/(1-d)),0)+\"\"),o.scale>=1&&o.scale>o.targetScale-.1&&e(o))},f=t=>{(t.scale<.99||t.scale>1.01)&&!t.isDragging||(S(s,yt),a.style.opacity=\"\",t.off(\"endAnimation\",f),t.off(\"touchStart\",f),t.off(\"afterTransform\",p),e(t))};o.on(\"endAnimation\",f),o.on(\"touchStart\",f),o.on(\"afterTransform\",p),o.on([\"error\",\"destroy\"],(()=>{i()})),o.panTo({x:c,y:h,scale:d,friction:0,ignoreBounds:!0}),o.stop(\"current\");const g={event:\"mousemove\"===o.panMode?n.prevMouseMoveEvent||n.options.event:void 0},m=this.optionFor(t,\"initialSize\");P(s,yt),n.hideLoading(t),\"full\"===m?o.zoomToFull(g):\"cover\"===m?o.zoomToCover(g):\"max\"===m?o.zoomToMax(g):o.reset(.172)}))}getZoomInfo(t){const{el:e,imageEl:i,thumbEl:n,panzoom:s}=t,o=this.instance,a=o.container;if(!e||!i||!n||!s||tt(n)<3||!this.optionFor(t,\"zoom\")||!a||o.state===rt.Destroy)return!1;if(\"0\"===getComputedStyle(a).getPropertyValue(\"--f-images-zoom\"))return!1;const r=window.visualViewport||null;if(1!==(r?r.scale:1))return!1;let{top:l,left:c,width:h,height:d}=n.getBoundingClientRect(),{top:u,left:p,fitWidth:f,fitHeight:g}=s.contentRect;if(!(h&&d&&f&&g))return!1;const m=s.container.getBoundingClientRect();p+=m.left,u+=m.top;const v=-1*(p+.5*f-(c+.5*h)),b=-1*(u+.5*g-(l+.5*d)),y=h/f;let w=this.option(\"zoomOpacity\")||!1;return\"auto\"===w&&(w=Math.abs(h/d-f/g)>.1),{x:v,y:b,scale:y,opacity:w}}attach(){const t=this,e=t.instance;e.on(\"Carousel.change\",t.onChange),e.on(\"Carousel.createSlide\",t.onCreateSlide),e.on(\"Carousel.removeSlide\",t.onRemoveSlide),e.on(\"close\",t.onClose)}detach(){const t=this,e=t.instance;e.off(\"Carousel.change\",t.onChange),e.off(\"Carousel.createSlide\",t.onCreateSlide),e.off(\"Carousel.removeSlide\",t.onRemoveSlide),e.off(\"close\",t.onClose)}}Object.defineProperty(wt,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:{initialSize:\"fit\",Panzoom:{maxScale:1},protected:!1,zoom:!0,zoomOpacity:\"auto\"}}),\"function\"==typeof SuppressedError&&SuppressedError;const xt=\"html\",Et=\"image\",St=\"map\",Pt=\"youtube\",Ct=\"vimeo\",Tt=\"html5video\",Mt=(t,e={})=>{const i=new URL(t),n=new URLSearchParams(i.search),s=new URLSearchParams;for(const[t,i]of[...n,...Object.entries(e)]){let e=i+\"\";if(\"t\"===t){let t=e.match(/((\\d*)m)?(\\d*)s?/);t&&s.set(\"start\",60*parseInt(t[2]||\"0\")+parseInt(t[3]||\"0\")+\"\")}else s.set(t,e)}let o=s+\"\",a=t.match(/#t=((.*)?\\d+s)/);return a&&(o+=`#t=${a[1]}`),o},Ot={ajax:null,autoSize:!0,iframeAttr:{allow:\"autoplay; fullscreen\",scrolling:\"auto\"},preload:!0,videoAutoplay:!0,videoRatio:16/9,videoTpl:'\\n Sorry, your browser doesn\\'t support embedded videos. ',videoFormat:\"\",vimeo:{byline:1,color:\"00adef\",controls:1,dnt:1,muted:0},youtube:{controls:1,enablejsapi:1,nocookie:1,rel:0,fs:1}},At=[\"image\",\"html\",\"ajax\",\"inline\",\"clone\",\"iframe\",\"map\",\"pdf\",\"html5video\",\"youtube\",\"vimeo\"];class Lt extends _{onBeforeInitSlide(t,e,i){this.processType(i)}onCreateSlide(t,e,i){this.setContent(i)}onClearContent(t,e){e.xhr&&(e.xhr.abort(),e.xhr=null);const i=e.iframeEl;i&&(i.onload=i.onerror=null,i.src=\"//about:blank\",e.iframeEl=null);const n=e.contentEl,s=e.placeholderEl;if(\"inline\"===e.type&&n&&s)n.classList.remove(\"fancybox__content\"),\"none\"!==getComputedStyle(n).getPropertyValue(\"display\")&&(n.style.display=\"none\"),setTimeout((()=>{s&&(n&&s.parentNode&&s.parentNode.insertBefore(n,s),s.remove())}),0),e.contentEl=void 0,e.placeholderEl=void 0;else for(;e.el&&e.el.firstChild;)e.el.removeChild(e.el.firstChild)}onSelectSlide(t,e,i){i.state===lt.Ready&&this.playVideo()}onUnselectSlide(t,e,i){var n,s;if(i.type===Tt){try{null===(s=null===(n=i.el)||void 0===n?void 0:n.querySelector(\"video\"))||void 0===s||s.pause()}catch(t){}return}let o;i.type===Ct?o={method:\"pause\",value:\"true\"}:i.type===Pt&&(o={event:\"command\",func:\"pauseVideo\"}),o&&i.iframeEl&&i.iframeEl.contentWindow&&i.iframeEl.contentWindow.postMessage(JSON.stringify(o),\"*\"),i.poller&&clearTimeout(i.poller)}onDone(t,e){t.isCurrentSlide(e)&&!t.isClosing()&&this.playVideo()}onRefresh(t,e){e.slides.forEach((t=>{t.el&&(this.resizeIframe(t),this.setAspectRatio(t))}))}onMessage(t){try{let e=JSON.parse(t.data);if(\"https://player.vimeo.com\"===t.origin){if(\"ready\"===e.event)for(let e of Array.from(document.getElementsByClassName(\"fancybox__iframe\")))e instanceof HTMLIFrameElement&&e.contentWindow===t.source&&(e.dataset.ready=\"true\")}else if(t.origin.match(/^https:\\/\\/(www.)?youtube(-nocookie)?.com$/)&&\"onReady\"===e.event){const t=document.getElementById(e.id);t&&(t.dataset.ready=\"true\")}}catch(t){}}loadAjaxContent(t){const e=this.instance.optionFor(t,\"src\")||\"\";this.instance.showLoading(t);const i=this.instance,n=new XMLHttpRequest;i.showLoading(t),n.onreadystatechange=function(){n.readyState===XMLHttpRequest.DONE&&i.state===rt.Ready&&(i.hideLoading(t),200===n.status?i.setContent(t,n.responseText):i.setError(t,404===n.status?\"{{AJAX_NOT_FOUND}}\":\"{{AJAX_FORBIDDEN}}\"))};const s=t.ajax||null;n.open(s?\"POST\":\"GET\",e+\"\"),n.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded\"),n.setRequestHeader(\"X-Requested-With\",\"XMLHttpRequest\"),n.send(s),t.xhr=n}setInlineContent(t){let e=null;if(E(t.src))e=t.src;else if(\"string\"==typeof t.src){const i=t.src.split(\"#\",2).pop();e=i?document.getElementById(i):null}if(e){if(\"clone\"===t.type||e.closest(\".fancybox__slide\")){e=e.cloneNode(!0);const i=e.dataset.animationName;i&&(e.classList.remove(i),delete e.dataset.animationName);let n=e.getAttribute(\"id\");n=n?`${n}--clone`:`clone-${this.instance.id}-${t.index}`,e.setAttribute(\"id\",n)}else if(e.parentNode){const i=document.createElement(\"div\");i.classList.add(\"fancybox-placeholder\"),e.parentNode.insertBefore(i,e),t.placeholderEl=i}this.instance.setContent(t,e)}else this.instance.setError(t,\"{{ELEMENT_NOT_FOUND}}\")}setIframeContent(t){const{src:e,el:i}=t;if(!e||\"string\"!=typeof e||!i)return;i.classList.add(\"is-loading\");const n=this.instance,s=document.createElement(\"iframe\");s.className=\"fancybox__iframe\",s.setAttribute(\"id\",`fancybox__iframe_${n.id}_${t.index}`);for(const[e,i]of Object.entries(this.optionFor(t,\"iframeAttr\")||{}))s.setAttribute(e,i);s.onerror=()=>{n.setError(t,\"{{IFRAME_ERROR}}\")},t.iframeEl=s;const o=this.optionFor(t,\"preload\");if(\"iframe\"!==t.type||!1===o)return s.setAttribute(\"src\",t.src+\"\"),n.setContent(t,s,!1),this.resizeIframe(t),void n.revealContent(t);n.showLoading(t),s.onload=()=>{if(!s.src.length)return;const e=\"true\"!==s.dataset.ready;s.dataset.ready=\"true\",this.resizeIframe(t),e?n.revealContent(t):n.hideLoading(t)},s.setAttribute(\"src\",e),n.setContent(t,s,!1)}resizeIframe(t){const{type:e,iframeEl:i}=t;if(e===Pt||e===Ct)return;const n=null==i?void 0:i.parentElement;if(!i||!n)return;let s=t.autoSize;void 0===s&&(s=this.optionFor(t,\"autoSize\"));let o=t.width||0,a=t.height||0;o&&a&&(s=!1);const r=n&&n.style;if(!1!==t.preload&&!1!==s&&r)try{const t=window.getComputedStyle(n),e=parseFloat(t.paddingLeft)+parseFloat(t.paddingRight),s=parseFloat(t.paddingTop)+parseFloat(t.paddingBottom),l=i.contentWindow;if(l){const t=l.document,i=t.getElementsByTagName(xt)[0],n=t.body;r.width=\"\",n.style.overflow=\"hidden\",o=o||i.scrollWidth+e,r.width=`${o}px`,n.style.overflow=\"\",r.flex=\"0 0 auto\",r.height=`${n.scrollHeight}px`,a=i.scrollHeight+s}}catch(t){}if(o||a){const t={flex:\"0 1 auto\",width:\"\",height:\"\"};o&&\"auto\"!==o&&(t.width=`${o}px`),a&&\"auto\"!==a&&(t.height=`${a}px`),Object.assign(r,t)}}playVideo(){const t=this.instance.getSlide();if(!t)return;const{el:e}=t;if(!e||!e.offsetParent)return;if(!this.optionFor(t,\"videoAutoplay\"))return;if(t.type===Tt)try{const t=e.querySelector(\"video\");if(t){const e=t.play();void 0!==e&&e.then((()=>{})).catch((e=>{t.muted=!0,t.play()}))}}catch(t){}if(t.type!==Pt&&t.type!==Ct)return;const i=()=>{if(t.iframeEl&&t.iframeEl.contentWindow){let e;if(\"true\"===t.iframeEl.dataset.ready)return e=t.type===Pt?{event:\"command\",func:\"playVideo\"}:{method:\"play\",value:\"true\"},e&&t.iframeEl.contentWindow.postMessage(JSON.stringify(e),\"*\"),void(t.poller=void 0);t.type===Pt&&(e={event:\"listening\",id:t.iframeEl.getAttribute(\"id\")},t.iframeEl.contentWindow.postMessage(JSON.stringify(e),\"*\"))}t.poller=setTimeout(i,250)};i()}processType(t){if(t.html)return t.type=xt,t.src=t.html,void(t.html=\"\");const e=this.instance.optionFor(t,\"src\",\"\");if(!e||\"string\"!=typeof e)return;let i=t.type,n=null;if(n=e.match(/(youtube\\.com|youtu\\.be|youtube\\-nocookie\\.com)\\/(?:watch\\?(?:.*&)?v=|v\\/|u\\/|shorts\\/|embed\\/?)?(videoseries\\?list=(?:.*)|[\\w-]{11}|\\?listType=(?:.*)&list=(?:.*))(?:.*)/i)){const s=this.optionFor(t,Pt),{nocookie:o}=s,a=function(t,e){var i={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(i[n]=t[n]);if(null!=t&&\"function\"==typeof Object.getOwnPropertySymbols){var s=0;for(n=Object.getOwnPropertySymbols(t);s0?\"svembed\":\"embed\"}`,i=St):(n=e.match(/(?:maps\\.)?google\\.([a-z]{2,3}(?:\\.[a-z]{2})?)\\/(?:maps\\/search\\/)(.*)/i))&&(t.src=`https://maps.google.${n[1]}/maps?q=${n[2].replace(\"query=\",\"q=\").replace(\"api=1\",\"\")}&output=embed`,i=St),i=i||this.instance.option(\"defaultType\"),t.type=i,i===Et&&(t.thumbSrc=t.thumbSrc||t.src)}setContent(t){const e=this.instance.optionFor(t,\"src\")||\"\";if(t&&t.type&&e){switch(t.type){case xt:this.instance.setContent(t,e);break;case Tt:const i=this.option(\"videoTpl\");i&&this.instance.setContent(t,i.replace(/\\{\\{src\\}\\}/gi,e+\"\").replace(/\\{\\{format\\}\\}/gi,this.optionFor(t,\"videoFormat\")||\"\").replace(/\\{\\{poster\\}\\}/gi,t.poster||t.thumbSrc||\"\"));break;case\"inline\":case\"clone\":this.setInlineContent(t);break;case\"ajax\":this.loadAjaxContent(t);break;case\"pdf\":case St:case Pt:case Ct:t.preload=!1;case\"iframe\":this.setIframeContent(t)}this.setAspectRatio(t)}}setAspectRatio(t){const e=t.contentEl;if(!(t.el&&e&&t.type&&[Pt,Ct,Tt].includes(t.type)))return;let i,n=t.width||\"auto\",s=t.height||\"auto\";if(\"auto\"===n||\"auto\"===s){i=this.optionFor(t,\"videoRatio\");const e=(i+\"\").match(/(\\d+)\\s*\\/\\s?(\\d+)/);i=e&&e.length>2?parseFloat(e[1])/parseFloat(e[2]):parseFloat(i+\"\")}else n&&s&&(i=n/s);if(!i)return;e.style.aspectRatio=\"\",e.style.width=\"\",e.style.height=\"\",e.offsetHeight;const o=e.getBoundingClientRect(),a=o.width||1,r=o.height||1;e.style.aspectRatio=i+\"\",i{t.timer=null,t.inHover||t.onTimerEnd()}),i),t.emit(\"set\")}clear(){const t=this;t.timer&&(clearTimeout(t.timer),t.timer=null),t.removeProgressBar()}start(){const t=this;if(t.set(),t.state!==kt){if(t.option(\"pauseOnHover\")){const e=t.instance.container;e.addEventListener(\"mouseenter\",t.onMouseEnter,!1),e.addEventListener(\"mouseleave\",t.onMouseLeave,!1)}document.addEventListener(\"visibilitychange\",t.onVisibilityChange,!1),t.emit(\"start\")}}stop(){const t=this,e=t.state,i=t.instance.container;t.clear(),t.state=kt,i.removeEventListener(\"mouseenter\",t.onMouseEnter,!1),i.removeEventListener(\"mouseleave\",t.onMouseLeave,!1),document.removeEventListener(\"visibilitychange\",t.onVisibilityChange,!1),S(i,\"has-autoplay\"),e!==kt&&t.emit(\"stop\")}pause(){const t=this;t.state===zt&&(t.state=Rt,t.clear(),t.emit(Rt))}resume(){const t=this,e=t.instance;if(e.isInfinite||e.page!==e.pages.length-1)if(t.state!==zt){if(t.state===Rt&&!t.inHover){const e=new Event(\"resume\",{bubbles:!0,cancelable:!0});t.emit(\"resume\",e),e.defaultPrevented||t.set()}}else t.set();else t.stop()}toggle(){this.state===zt||this.state===Rt?this.stop():this.start()}attach(){const t=this,e=t.instance;e.on(\"ready\",t.onReady),e.on(\"Panzoom.startAnimation\",t.onChange),e.on(\"Panzoom.endAnimation\",t.onSettle),e.on(\"Panzoom.touchMove\",t.onChange)}detach(){const t=this,e=t.instance;e.off(\"ready\",t.onReady),e.off(\"Panzoom.startAnimation\",t.onChange),e.off(\"Panzoom.endAnimation\",t.onSettle),e.off(\"Panzoom.touchMove\",t.onChange),t.stop()}}Object.defineProperty(It,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:{autoStart:!0,pauseOnHover:!0,progressParentEl:null,showProgress:!0,timeout:3e3}});class Dt extends _{constructor(){super(...arguments),Object.defineProperty(this,\"ref\",{enumerable:!0,configurable:!0,writable:!0,value:null})}onPrepare(t){const e=t.carousel;if(!e)return;const i=t.container;i&&(e.options.Autoplay=u({autoStart:!1},this.option(\"Autoplay\")||{},{pauseOnHover:!1,timeout:this.option(\"timeout\"),progressParentEl:()=>this.option(\"progressParentEl\")||null,on:{start:()=>{t.emit(\"startSlideshow\")},set:e=>{var n;i.classList.add(\"has-slideshow\"),(null===(n=t.getSlide())||void 0===n?void 0:n.state)!==lt.Ready&&e.pause()},stop:()=>{i.classList.remove(\"has-slideshow\"),t.isCompact||t.endIdle(),t.emit(\"endSlideshow\")},resume:(e,i)=>{var n,s,o;!i||!i.cancelable||(null===(n=t.getSlide())||void 0===n?void 0:n.state)===lt.Ready&&(null===(o=null===(s=t.carousel)||void 0===s?void 0:s.panzoom)||void 0===o?void 0:o.isResting)||i.preventDefault()}}}),e.attachPlugins({Autoplay:It}),this.ref=e.plugins.Autoplay)}onReady(t){const e=t.carousel,i=this.ref;i&&e&&this.option(\"playOnStart\")&&(e.isInfinite||e.page{t.isCurrentSlide(e)&&i.stop()})),t.isCurrentSlide(e)&&i.resume()}onKeydown(t,e){var i;const n=this.ref;n&&e===this.option(\"key\")&&\"BUTTON\"!==(null===(i=document.activeElement)||void 0===i?void 0:i.nodeName)&&n.toggle()}attach(){const t=this,e=t.instance;e.on(\"Carousel.init\",t.onPrepare),e.on(\"Carousel.ready\",t.onReady),e.on(\"done\",t.onDone),e.on(\"keydown\",t.onKeydown)}detach(){const t=this,e=t.instance;e.off(\"Carousel.init\",t.onPrepare),e.off(\"Carousel.ready\",t.onReady),e.off(\"done\",t.onDone),e.off(\"keydown\",t.onKeydown)}}Object.defineProperty(Dt,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:{key:\" \",playOnStart:!1,progressParentEl:t=>{var e;return(null===(e=t.instance.container)||void 0===e?void 0:e.querySelector(\".fancybox__toolbar [data-fancybox-toggle-slideshow]\"))||t.instance.container},timeout:3e3}});const Ft={classes:{container:\"f-thumbs f-carousel__thumbs\",viewport:\"f-thumbs__viewport\",track:\"f-thumbs__track\",slide:\"f-thumbs__slide\",isResting:\"is-resting\",isSelected:\"is-selected\",isLoading:\"is-loading\",hasThumbs:\"has-thumbs\"},minCount:2,parentEl:null,thumbTpl:' ',type:\"modern\"};var jt;!function(t){t[t.Init=0]=\"Init\",t[t.Ready=1]=\"Ready\",t[t.Hidden=2]=\"Hidden\"}(jt||(jt={}));const Bt=\"isResting\",Ht=\"thumbWidth\",Nt=\"thumbHeight\",_t=\"thumbClipWidth\";let $t=class extends _{constructor(){super(...arguments),Object.defineProperty(this,\"type\",{enumerable:!0,configurable:!0,writable:!0,value:\"modern\"}),Object.defineProperty(this,\"container\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"track\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"carousel\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"thumbWidth\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"thumbClipWidth\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"thumbHeight\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"thumbGap\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"thumbExtraGap\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"state\",{enumerable:!0,configurable:!0,writable:!0,value:jt.Init})}get isModern(){return\"modern\"===this.type}onInitSlide(t,e){const i=e.el?e.el.dataset:void 0;i&&(e.thumbSrc=i.thumbSrc||e.thumbSrc||\"\",e[_t]=parseFloat(i[_t]||\"\")||e[_t]||0,e[Nt]=parseFloat(i.thumbHeight||\"\")||e[Nt]||0),this.addSlide(e)}onInitSlides(){this.build()}onChange(){var t;if(!this.isModern)return;const e=this.container,i=this.instance,n=i.panzoom,s=this.carousel,a=s?s.panzoom:null,r=i.page;if(n&&s&&a){if(n.isDragging){S(e,this.cn(Bt));let n=(null===(t=s.pages[r])||void 0===t?void 0:t.pos)||0;n+=i.getProgress(r)*(this[_t]+this.thumbGap);let o=a.getBounds();-1*n>o.x.min&&-1*nparseFloat(getComputedStyle(t).getPropertyValue(\"--f-thumb-\"+e))||0;this.thumbGap=e(\"gap\"),this.thumbExtraGap=e(\"extra-gap\"),this[Ht]=e(\"width\")||40,this[_t]=e(\"clip-width\")||40,this[Nt]=e(\"height\")||40}build(){const t=this;if(t.state!==jt.Init)return;if(t.isDisabled())return void t.emit(\"disabled\");const e=t.instance,i=e.container,n=t.getSlides(),s=t.option(\"type\");t.type=s;const o=t.option(\"parentEl\"),a=t.cn(\"container\"),r=t.cn(\"track\");let l=null==o?void 0:o.querySelector(\".\"+a);l||(l=document.createElement(\"div\"),P(l,a),o?o.appendChild(l):i.after(l)),P(l,`is-${s}`),P(i,t.cn(\"hasThumbs\")),t.container=l,t.updateProps();let c=l.querySelector(\".\"+r);c||(c=document.createElement(\"div\"),P(c,t.cn(\"track\")),l.appendChild(c)),t.track=c;const h=u({},{track:c,infinite:!1,center:!0,fill:\"classic\"===s,dragFree:!0,slidesPerPage:1,transition:!1,preload:.25,friction:.12,Panzoom:{maxVelocity:0},Dots:!1,Navigation:!1,classes:{container:\"f-thumbs\",viewport:\"f-thumbs__viewport\",track:\"f-thumbs__track\",slide:\"f-thumbs__slide\"}},t.option(\"Carousel\")||{},{Sync:{target:e},slides:n}),d=new e.constructor(l,h);d.on(\"createSlide\",((e,i)=>{t.setProps(i.index),t.emit(\"createSlide\",i,i.el)})),d.on(\"ready\",(()=>{t.shiftModern(),t.emit(\"ready\")})),d.on(\"refresh\",(()=>{t.shiftModern()})),d.on(\"Panzoom.click\",((e,i,n)=>{t.onClick(n)})),t.carousel=d,t.state=jt.Ready}onClick(t){t.preventDefault(),t.stopPropagation();const e=this.instance,{pages:i,page:n}=e,s=t=>{if(t){const e=t.closest(\"[data-carousel-index]\");if(e)return[parseInt(e.dataset.carouselIndex||\"\",10)||0,e]}return[-1,void 0]},o=(t,e)=>{const i=document.elementFromPoint(t,e);return i?s(i):[-1,void 0]};let[a,r]=s(t.target);if(a>-1)return;const l=this[_t],c=t.clientX,h=t.clientY;let[d,u]=o(c-l,h),[p,f]=o(c+l,h);u&&f?(a=Math.abs(c-u.getBoundingClientRect().right)-1&&i[a]&&e.slideTo(a)}getShift(t){var e;const i=this,{instance:n}=i,s=i.carousel;if(!n||!s)return 0;const o=i[Ht],a=i[_t],r=i.thumbGap,l=i.thumbExtraGap;if(!(null===(e=s.slides[t])||void 0===e?void 0:e.el))return 0;const c=.5*(o-a),h=n.pages.length-1;let d=n.getProgress(0),u=n.getProgress(h),p=n.getProgress(t,!1,!0),f=0,g=c+l+r;const m=d<0&&d>-1,v=u>0&&u<1;return 0===t?(f=g*Math.abs(d),v&&1===d&&(f-=g*Math.abs(u))):t===h?(f=g*Math.abs(u)*-1,m&&-1===u&&(f+=g*Math.abs(d))):m||v?(f=-1*g,f+=g*Math.abs(d),f+=g*(1-Math.abs(u))):f=g*p,f}setProps(e){var i;const n=this;if(!n.isModern)return;const{instance:s}=n,o=n.carousel;if(s&&o){const a=null===(i=o.slides[e])||void 0===i?void 0:i.el;if(a&&a.childNodes.length){let i=t(1-Math.abs(s.getProgress(e))),o=t(n.getShift(e));a.style.setProperty(\"--progress\",i?i+\"\":\"\"),a.style.setProperty(\"--shift\",o+\"\")}}}shiftModern(){const t=this;if(!t.isModern)return;const{instance:e,track:i}=t,n=e.panzoom,s=t.carousel;if(!(e&&i&&n&&s))return;if(n.state===m.Init||n.state===m.Destroy)return;for(const i of e.slides)t.setProps(i.index);let o=(t[_t]+t.thumbGap)*(s.slides.length||0);i.style.setProperty(\"--width\",o+\"\")}cleanup(){const t=this;t.carousel&&t.carousel.destroy(),t.carousel=null,t.container&&t.container.remove(),t.container=null,t.track&&t.track.remove(),t.track=null,t.state=jt.Init,S(t.instance.container,t.cn(\"hasThumbs\"))}attach(){const t=this,e=t.instance;e.on(\"initSlide\",t.onInitSlide),e.state===B.Init?e.on(\"initSlides\",t.onInitSlides):t.onInitSlides(),e.on([\"change\",\"Panzoom.afterTransform\"],t.onChange),e.on(\"Panzoom.refresh\",t.onRefresh)}detach(){const t=this,e=t.instance;e.off(\"initSlide\",t.onInitSlide),e.off(\"initSlides\",t.onInitSlides),e.off([\"change\",\"Panzoom.afterTransform\"],t.onChange),e.off(\"Panzoom.refresh\",t.onRefresh),t.cleanup()}};Object.defineProperty($t,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:Ft});const Wt=Object.assign(Object.assign({},Ft),{key:\"t\",showOnStart:!0,parentEl:null}),Xt=\"is-masked\",qt=\"aria-hidden\";class Yt extends _{constructor(){super(...arguments),Object.defineProperty(this,\"ref\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"hidden\",{enumerable:!0,configurable:!0,writable:!0,value:!1})}get isEnabled(){const t=this.ref;return t&&!t.isDisabled()}get isHidden(){return this.hidden}onClick(t,e){e.stopPropagation()}onCreateSlide(t,e){var i,n,s;const o=(null===(s=null===(n=null===(i=this.instance)||void 0===i?void 0:i.carousel)||void 0===n?void 0:n.slides[e.index])||void 0===s?void 0:s.type)||\"\",a=e.el;if(a&&o){let t=`for-${o}`;[\"video\",\"youtube\",\"vimeo\",\"html5video\"].includes(o)&&(t+=\" for-video\"),P(a,t)}}onInit(){var t;const e=this,i=e.instance,n=i.carousel;if(e.ref||!n)return;const s=e.option(\"parentEl\")||i.footer||i.container;if(!s)return;const o=u({},e.options,{parentEl:s,classes:{container:\"f-thumbs fancybox__thumbs\"},Carousel:{Sync:{friction:i.option(\"Carousel.friction\")||0}},on:{ready:t=>{const i=t.container;i&&this.hidden&&(e.refresh(),i.style.transition=\"none\",e.hide(),i.offsetHeight,queueMicrotask((()=>{i.style.transition=\"\",e.show()})))}}});o.Carousel=o.Carousel||{},o.Carousel.on=u((null===(t=e.options.Carousel)||void 0===t?void 0:t.on)||{},{click:this.onClick,createSlide:this.onCreateSlide}),n.options.Thumbs=o,n.attachPlugins({Thumbs:$t}),e.ref=n.plugins.Thumbs,e.option(\"showOnStart\")||(e.ref.state=jt.Hidden,e.hidden=!0)}onResize(){var t;const e=null===(t=this.ref)||void 0===t?void 0:t.container;e&&(e.style.maxHeight=\"\")}onKeydown(t,e){const i=this.option(\"key\");i&&i===e&&this.toggle()}toggle(){const t=this.ref;if(t&&!t.isDisabled())return t.state===jt.Hidden?(t.state=jt.Init,void t.build()):void(this.hidden?this.show():this.hide())}show(){const t=this.ref;if(!t||t.isDisabled())return;const e=t.container;e&&(this.refresh(),e.offsetHeight,e.removeAttribute(qt),e.classList.remove(Xt),this.hidden=!1)}hide(){const t=this.ref,e=t&&t.container;e&&(this.refresh(),e.offsetHeight,e.classList.add(Xt),e.setAttribute(qt,\"true\")),this.hidden=!0}refresh(){const t=this.ref;if(!t||!t.state)return;const e=t.container,i=(null==e?void 0:e.firstChild)||null;e&&i&&i.childNodes.length&&(e.style.maxHeight=`${i.getBoundingClientRect().height}px`)}attach(){const t=this,e=t.instance;e.state===rt.Init?e.on(\"Carousel.init\",t.onInit):t.onInit(),e.on(\"resize\",t.onResize),e.on(\"keydown\",t.onKeydown)}detach(){var t;const e=this,i=e.instance;i.off(\"Carousel.init\",e.onInit),i.off(\"resize\",e.onResize),i.off(\"keydown\",e.onKeydown),null===(t=i.carousel)||void 0===t||t.detachPlugins([\"Thumbs\"]),e.ref=null}}Object.defineProperty(Yt,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:Wt});const Vt={panLeft:{icon:' ',change:{panX:-100}},panRight:{icon:' ',change:{panX:100}},panUp:{icon:' ',change:{panY:-100}},panDown:{icon:' ',change:{panY:100}},zoomIn:{icon:' ',action:\"zoomIn\"},zoomOut:{icon:' ',action:\"zoomOut\"},toggle1to1:{icon:' ',action:\"toggleZoom\"},toggleZoom:{icon:' ',action:\"toggleZoom\"},iterateZoom:{icon:' ',action:\"iterateZoom\"},rotateCCW:{icon:' ',action:\"rotateCCW\"},rotateCW:{icon:' ',action:\"rotateCW\"},flipX:{icon:' ',action:\"flipX\"},flipY:{icon:' ',action:\"flipY\"},fitX:{icon:' ',action:\"fitX\"},fitY:{icon:' ',action:\"fitY\"},reset:{icon:' ',action:\"reset\"},toggleFS:{icon:' ',action:\"toggleFS\"}};var Zt;!function(t){t[t.Init=0]=\"Init\",t[t.Ready=1]=\"Ready\",t[t.Disabled=2]=\"Disabled\"}(Zt||(Zt={}));const Ut={absolute:\"auto\",display:{left:[\"infobar\"],middle:[],right:[\"iterateZoom\",\"slideshow\",\"fullscreen\",\"thumbs\",\"close\"]},enabled:\"auto\",items:{infobar:{tpl:' /
'},download:{tpl:' '},prev:{tpl:' '},next:{tpl:' '},slideshow:{tpl:' '},fullscreen:{tpl:' '},thumbs:{tpl:' '},close:{tpl:' '}},parentEl:null},Gt={tabindex:\"-1\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\",xmlns:\"http://www.w3.org/2000/svg\"},Kt=\"has-toolbar\",Jt=\"fancybox__toolbar\";class Qt extends _{constructor(){super(...arguments),Object.defineProperty(this,\"state\",{enumerable:!0,configurable:!0,writable:!0,value:Zt.Init}),Object.defineProperty(this,\"container\",{enumerable:!0,configurable:!0,writable:!0,value:null})}onReady(t){var e;if(!t.carousel)return;let i=this.option(\"display\"),n=this.option(\"absolute\"),s=this.option(\"enabled\");if(\"auto\"===s){const t=this.instance.carousel;let e=0;if(t)for(const i of t.slides)(i.panzoom||\"image\"===i.type)&&e++;e||(s=!1)}s||(i=void 0);let o=0;const a={left:[],middle:[],right:[]};if(i)for(const t of[\"left\",\"middle\",\"right\"])for(const n of i[t]){const i=this.createEl(n);i&&(null===(e=a[t])||void 0===e||e.push(i),o++)}let r=null;if(o&&(r=this.createContainer()),r){for(const[t,e]of Object.entries(a)){const i=document.createElement(\"div\");P(i,Jt+\"__column is-\"+t);for(const t of e)i.appendChild(t);\"auto\"!==n||\"middle\"!==t||e.length||(n=!0),r.appendChild(i)}!0===n&&P(r,\"is-absolute\"),this.state=Zt.Ready,this.onRefresh()}else this.state=Zt.Disabled}onClick(t){var e,i;const n=this.instance,s=n.getSlide(),o=null==s?void 0:s.panzoom,a=t.target,r=a&&E(a)?a.dataset:null;if(!r)return;if(void 0!==r.fancyboxToggleThumbs)return t.preventDefault(),t.stopPropagation(),void(null===(e=n.plugins.Thumbs)||void 0===e||e.toggle());if(void 0!==r.fancyboxToggleFullscreen)return t.preventDefault(),t.stopPropagation(),void this.instance.toggleFullscreen();if(void 0!==r.fancyboxToggleSlideshow){t.preventDefault(),t.stopPropagation();const e=null===(i=n.carousel)||void 0===i?void 0:i.plugins.Autoplay;let s=e.isActive;return o&&\"mousemove\"===o.panMode&&!s&&o.reset(),void(s?e.stop():e.start())}const l=r.panzoomAction,c=r.panzoomChange;if((c||l)&&(t.preventDefault(),t.stopPropagation()),c){let t={};try{t=JSON.parse(c)}catch(t){}o&&o.applyChange(t)}else l&&o&&o[l]&&o[l]()}onChange(){this.onRefresh()}onRefresh(){if(this.instance.isClosing())return;const t=this.container;if(!t)return;const e=this.instance.getSlide();if(!e||e.state!==lt.Ready)return;const i=e&&!e.error&&e.panzoom;for(const e of t.querySelectorAll(\"[data-panzoom-action]\"))i?(e.removeAttribute(\"disabled\"),e.removeAttribute(\"tabindex\")):(e.setAttribute(\"disabled\",\"\"),e.setAttribute(\"tabindex\",\"-1\"));let n=i&&i.canZoomIn(),s=i&&i.canZoomOut();for(const e of t.querySelectorAll('[data-panzoom-action=\"zoomIn\"]'))n?(e.removeAttribute(\"disabled\"),e.removeAttribute(\"tabindex\")):(e.setAttribute(\"disabled\",\"\"),e.setAttribute(\"tabindex\",\"-1\"));for(const e of t.querySelectorAll('[data-panzoom-action=\"zoomOut\"]'))s?(e.removeAttribute(\"disabled\"),e.removeAttribute(\"tabindex\")):(e.setAttribute(\"disabled\",\"\"),e.setAttribute(\"tabindex\",\"-1\"));for(const e of t.querySelectorAll('[data-panzoom-action=\"toggleZoom\"],[data-panzoom-action=\"iterateZoom\"]')){s||n?(e.removeAttribute(\"disabled\"),e.removeAttribute(\"tabindex\")):(e.setAttribute(\"disabled\",\"\"),e.setAttribute(\"tabindex\",\"-1\"));const t=e.querySelector(\"g\");t&&(t.style.display=n?\"\":\"none\")}}onDone(t,e){var i;null===(i=e.panzoom)||void 0===i||i.on(\"afterTransform\",(()=>{this.instance.isCurrentSlide(e)&&this.onRefresh()})),this.instance.isCurrentSlide(e)&&this.onRefresh()}createContainer(){const t=this.instance.container;if(!t)return null;const e=this.option(\"parentEl\")||t;let i=e.querySelector(\".\"+Jt);return i||(i=document.createElement(\"div\"),P(i,Jt),e.prepend(i)),i.addEventListener(\"click\",this.onClick,{passive:!1,capture:!0}),t&&P(t,Kt),this.container=i,i}createEl(t){const e=this.instance,i=e.carousel;if(!i)return null;if(\"toggleFS\"===t)return null;if(\"fullscreen\"===t&&!ot())return null;let s=null;const o=i.slides.length||0;let a=0,r=0;for(const t of i.slides)(t.panzoom||\"image\"===t.type)&&a++,(\"image\"===t.type||t.downloadSrc)&&r++;if(o<2&&[\"infobar\",\"prev\",\"next\"].includes(t))return s;if(void 0!==Vt[t]&&!a)return null;if(\"download\"===t&&!r)return null;if(\"thumbs\"===t){const t=e.plugins.Thumbs;if(!t||!t.isEnabled)return null}if(\"slideshow\"===t){if(!i.plugins.Autoplay||o<2)return null}if(void 0!==Vt[t]){const e=Vt[t];s=document.createElement(\"button\"),s.setAttribute(\"title\",this.instance.localize(`{{${t.toUpperCase()}}}`)),P(s,\"f-button\"),e.action&&(s.dataset.panzoomAction=e.action),e.change&&(s.dataset.panzoomChange=JSON.stringify(e.change)),s.appendChild(n(this.instance.localize(e.icon)))}else{const e=(this.option(\"items\")||[])[t];e&&(s=n(this.instance.localize(e.tpl)),\"function\"==typeof e.click&&s.addEventListener(\"click\",(t=>{t.preventDefault(),t.stopPropagation(),\"function\"==typeof e.click&&e.click.call(this,this,t)})))}const l=null==s?void 0:s.querySelector(\"svg\");if(l)for(const[t,e]of Object.entries(Gt))l.getAttribute(t)||l.setAttribute(t,String(e));return s}removeContainer(){const t=this.container;t&&t.remove(),this.container=null,this.state=Zt.Disabled;const e=this.instance.container;e&&S(e,Kt)}attach(){const t=this,e=t.instance;e.on(\"Carousel.initSlides\",t.onReady),e.on(\"done\",t.onDone),e.on([\"reveal\",\"Carousel.change\"],t.onChange),t.onReady(t.instance)}detach(){const t=this,e=t.instance;e.off(\"Carousel.initSlides\",t.onReady),e.off(\"done\",t.onDone),e.off([\"reveal\",\"Carousel.change\"],t.onChange),t.removeContainer()}}Object.defineProperty(Qt,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:Ut});const te={Hash:class extends _{onReady(){ht=!1}onChange(t){ut&&clearTimeout(ut);const{hash:e}=pt(),{hash:i}=ft(),n=t.isOpeningSlide(t.getSlide());n&&(ct=i===e?\"\":i),e&&e!==i&&(ut=setTimeout((()=>{try{if(t.state===rt.Ready){let t=\"replaceState\";n&&!dt&&(t=\"pushState\",dt=!0),window.history[t]({},document.title,window.location.pathname+window.location.search+e)}}catch(t){}}),300))}onClose(t){if(ut&&clearTimeout(ut),!ht&&dt)return dt=!1,ht=!1,void window.history.back();if(!ht)try{window.history.replaceState({},document.title,window.location.pathname+window.location.search+(ct||\"\"))}catch(t){}}attach(){const t=this.instance;t.on(\"ready\",this.onReady),t.on([\"Carousel.ready\",\"Carousel.change\"],this.onChange),t.on(\"close\",this.onClose)}detach(){const t=this.instance;t.off(\"ready\",this.onReady),t.off([\"Carousel.ready\",\"Carousel.change\"],this.onChange),t.off(\"close\",this.onClose)}static parseURL(){return ft()}static startFromUrl(){gt()}static destroy(){window.removeEventListener(\"hashchange\",vt,!1)}},Html:Lt,Images:wt,Slideshow:Dt,Thumbs:Yt,Toolbar:Qt},ee=\"with-fancybox\",ie=\"hide-scrollbar\",ne=\"--fancybox-scrollbar-compensate\",se=\"--fancybox-body-margin\",oe=\"aria-hidden\",ae=\"is-using-tab\",re=\"is-animated\",le=\"is-compact\",ce=\"is-loading\",he=\"is-opening\",de=\"has-caption\",ue=\"disabled\",pe=\"tabindex\",fe=\"download\",ge=\"href\",me=\"src\",ve=t=>\"string\"==typeof t,be=function(){var t=window.getSelection();return!!t&&\"Range\"===t.type};let ye,we=null,xe=null,Ee=0,Se=0,Pe=0,Ce=0;const Te=new Map;let Me=0;class Oe extends g{get isIdle(){return this.idle}get isCompact(){return this.option(\"compact\")}constructor(t=[],e={},i={}){super(e),Object.defineProperty(this,\"userSlides\",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,\"userPlugins\",{enumerable:!0,configurable:!0,writable:!0,value:{}}),Object.defineProperty(this,\"idle\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,\"idleTimer\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"clickTimer\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"pwt\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"ignoreFocusChange\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,\"startedFs\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,\"state\",{enumerable:!0,configurable:!0,writable:!0,value:rt.Init}),Object.defineProperty(this,\"id\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"container\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"caption\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"footer\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"carousel\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"lastFocus\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"prevMouseMoveEvent\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),ye||(ye=ot()),this.id=e.id||++Me,Te.set(this.id,this),this.userSlides=t,this.userPlugins=i,queueMicrotask((()=>{this.init()}))}init(){if(this.state===rt.Destroy)return;this.state=rt.Init,this.attachPlugins(Object.assign(Object.assign({},Oe.Plugins),this.userPlugins)),this.emit(\"init\"),this.emit(\"attachPlugins\"),!0===this.option(\"hideScrollbar\")&&(()=>{if(!et)return;const t=document,e=t.body,i=t.documentElement;if(e.classList.contains(ie))return;let n=window.innerWidth-i.getBoundingClientRect().width;const s=parseFloat(window.getComputedStyle(e).marginRight);n<0&&(n=0),i.style.setProperty(ne,`${n}px`),s&&e.style.setProperty(se,`${s}px`),e.classList.add(ie)})(),this.initLayout(),this.scale();const t=()=>{this.initCarousel(this.userSlides),this.state=rt.Ready,this.attachEvents(),this.emit(\"ready\"),setTimeout((()=>{this.container&&this.container.setAttribute(oe,\"false\")}),16)};this.option(\"Fullscreen.autoStart\")&&ye&&!ye.isFullscreen()?ye.request().then((()=>{this.startedFs=!0,t()})).catch((()=>t())):t()}initLayout(){var t,e;const i=this.option(\"parentEl\")||document.body,s=n(this.localize(this.option(\"tpl.main\")||\"\"));if(s){if(s.setAttribute(\"id\",`fancybox-${this.id}`),s.setAttribute(\"aria-label\",this.localize(\"{{MODAL}}\")),s.classList.toggle(le,this.isCompact),P(s,this.option(\"mainClass\")||\"\"),P(s,he),this.container=s,this.footer=s.querySelector(\".fancybox__footer\"),i.appendChild(s),P(document.documentElement,ee),we&&xe||(we=document.createElement(\"span\"),P(we,\"fancybox-focus-guard\"),we.setAttribute(pe,\"0\"),we.setAttribute(oe,\"true\"),we.setAttribute(\"aria-label\",\"Focus guard\"),xe=we.cloneNode(),null===(t=s.parentElement)||void 0===t||t.insertBefore(we,s),null===(e=s.parentElement)||void 0===e||e.append(xe)),s.addEventListener(\"mousedown\",(t=>{Ee=t.pageX,Se=t.pageY,S(s,ae)})),this.option(\"closeExisting\"))for(const t of Te.values())t.id!==this.id&&t.close();else this.option(\"animated\")&&(P(s,re),setTimeout((()=>{this.isClosing()||S(s,re)}),350));this.emit(\"initLayout\")}}initCarousel(t){const i=this.container;if(!i)return;const n=i.querySelector(\".fancybox__carousel\");if(!n)return;const s=this.carousel=new Q(n,u({},{slides:t,transition:\"fade\",Panzoom:{lockAxis:this.option(\"dragToClose\")?\"xy\":\"x\",infinite:!!this.option(\"dragToClose\")&&\"y\"},Dots:!1,Navigation:{classes:{container:\"fancybox__nav\",button:\"f-button\",isNext:\"is-next\",isPrev:\"is-prev\"}},initialPage:this.option(\"startIndex\"),l10n:this.option(\"l10n\")},this.option(\"Carousel\")||{}));s.on(\"*\",((t,e,...i)=>{this.emit(`Carousel.${e}`,t,...i)})),s.on([\"ready\",\"change\"],(()=>{this.manageCaption()})),this.on(\"Carousel.removeSlide\",((t,e,i)=>{this.clearContent(i),i.state=void 0})),s.on(\"Panzoom.touchStart\",(()=>{var t,e;this.isCompact||this.endIdle(),(null===(t=document.activeElement)||void 0===t?void 0:t.closest(\".f-thumbs\"))&&(null===(e=this.container)||void 0===e||e.focus())})),s.on(\"settle\",(()=>{this.idleTimer||this.isCompact||!this.option(\"idle\")||this.setIdle(),this.option(\"autoFocus\")&&!this.isClosing&&this.checkFocus()})),this.option(\"dragToClose\")&&(s.on(\"Panzoom.afterTransform\",((t,i)=>{const n=this.getSlide();if(n&&e(n.el))return;const s=this.container;if(s){const t=Math.abs(i.current.f),e=t<1?\"\":Math.max(.5,Math.min(1,1-t/i.contentRect.fitHeight*1.5));s.style.setProperty(\"--fancybox-ts\",e?\"0s\":\"\"),s.style.setProperty(\"--fancybox-opacity\",e+\"\")}})),s.on(\"Panzoom.touchEnd\",((t,i,n)=>{var s;const o=this.getSlide();if(o&&e(o.el))return;if(i.isMobile&&document.activeElement&&-1!==[\"TEXTAREA\",\"INPUT\"].indexOf(null===(s=document.activeElement)||void 0===s?void 0:s.nodeName))return;const a=Math.abs(i.dragOffset.y);\"y\"===i.lockedAxis&&(a>=200||a>=50&&i.dragOffset.time<300)&&(n&&n.cancelable&&n.preventDefault(),this.close(n,\"f-throwOut\"+(i.current.f<0?\"Up\":\"Down\")))}))),s.on(\"change\",(t=>{var e;let i=null===(e=this.getSlide())||void 0===e?void 0:e.triggerEl;if(i){const e=new CustomEvent(\"slideTo\",{bubbles:!0,cancelable:!0,detail:t.page});i.dispatchEvent(e)}})),s.on([\"refresh\",\"change\"],(t=>{const e=this.container;if(!e)return;for(const i of e.querySelectorAll(\"[data-fancybox-current-index]\"))i.innerHTML=t.page+1;for(const i of e.querySelectorAll(\"[data-fancybox-count]\"))i.innerHTML=t.pages.length;if(!t.isInfinite){for(const i of e.querySelectorAll(\"[data-fancybox-next]\"))t.page0?(i.removeAttribute(ue),i.removeAttribute(pe)):(i.setAttribute(ue,\"\"),i.setAttribute(pe,\"-1\"))}const i=this.getSlide();if(!i)return;let n=i.downloadSrc||\"\";n||\"image\"!==i.type||i.error||!ve(i[me])||(n=i[me]);for(const t of e.querySelectorAll(\"[data-fancybox-download]\")){const e=i.downloadFilename;n?(t.removeAttribute(ue),t.removeAttribute(pe),t.setAttribute(ge,n),t.setAttribute(fe,e||n),t.setAttribute(\"target\",\"_blank\")):(t.setAttribute(ue,\"\"),t.setAttribute(pe,\"-1\"),t.removeAttribute(ge),t.removeAttribute(fe))}})),this.emit(\"initCarousel\")}attachEvents(){const t=this,e=t.container;if(!e)return;e.addEventListener(\"click\",t.onClick,{passive:!1,capture:!1}),e.addEventListener(\"wheel\",t.onWheel,{passive:!1,capture:!1}),document.addEventListener(\"keydown\",t.onKeydown,{passive:!1,capture:!0}),document.addEventListener(\"visibilitychange\",t.onVisibilityChange,!1),document.addEventListener(\"mousemove\",t.onMousemove),t.option(\"trapFocus\")&&document.addEventListener(\"focus\",t.onFocus,!0),window.addEventListener(\"resize\",t.onResize);const i=window.visualViewport;i&&(i.addEventListener(\"scroll\",t.onResize),i.addEventListener(\"resize\",t.onResize))}detachEvents(){const t=this,e=t.container;if(!e)return;document.removeEventListener(\"keydown\",t.onKeydown,{passive:!1,capture:!0}),e.removeEventListener(\"wheel\",t.onWheel,{passive:!1,capture:!1}),e.removeEventListener(\"click\",t.onClick,{passive:!1,capture:!1}),document.removeEventListener(\"mousemove\",t.onMousemove),window.removeEventListener(\"resize\",t.onResize);const i=window.visualViewport;i&&(i.removeEventListener(\"resize\",t.onResize),i.removeEventListener(\"scroll\",t.onResize)),document.removeEventListener(\"visibilitychange\",t.onVisibilityChange,!1),document.removeEventListener(\"focus\",t.onFocus,!0)}scale(){const t=this.container;if(!t)return;const e=window.visualViewport,i=Math.max(1,(null==e?void 0:e.scale)||1);let n=\"\",s=\"\",o=\"\";if(e&&i>1){let t=`${e.offsetLeft}px`,a=`${e.offsetTop}px`;n=e.width*i+\"px\",s=e.height*i+\"px\",o=`translate3d(${t}, ${a}, 0) scale(${1/i})`}t.style.transform=o,t.style.width=n,t.style.height=s}onClick(t){var e;const{container:i,isCompact:n}=this;if(!i||this.isClosing())return;!n&&this.option(\"idle\")&&this.resetIdle();const s=t.composedPath()[0];if(s.closest(\".fancybox-spinner\")||s.closest(\"[data-fancybox-close]\"))return t.preventDefault(),void this.close(t);if(s.closest(\"[data-fancybox-prev]\"))return t.preventDefault(),void this.prev();if(s.closest(\"[data-fancybox-next]\"))return t.preventDefault(),void this.next();if(\"click\"===t.type&&0===t.detail)return;if(Math.abs(t.pageX-Ee)>30||Math.abs(t.pageY-Se)>30)return;const o=document.activeElement;if(be()&&o&&i.contains(o))return;if(n&&\"image\"===(null===(e=this.getSlide())||void 0===e?void 0:e.type))return void(this.clickTimer?(clearTimeout(this.clickTimer),this.clickTimer=null):this.clickTimer=setTimeout((()=>{this.toggleIdle(),this.clickTimer=null}),350));if(this.emit(\"click\",t),t.defaultPrevented)return;let a=!1;if(s.closest(\".fancybox__content\")){if(o){if(o.closest(\"[contenteditable]\"))return;s.matches(nt)||o.blur()}if(be())return;a=this.option(\"contentClick\")}else s.closest(\".fancybox__carousel\")&&!s.matches(nt)&&(a=this.option(\"backdropClick\"));\"close\"===a?(t.preventDefault(),this.close(t)):\"next\"===a?(t.preventDefault(),this.next()):\"prev\"===a&&(t.preventDefault(),this.prev())}onWheel(t){const e=t.target;let n=this.option(\"wheel\",t);e.closest(\".fancybox__thumbs\")&&(n=\"slide\");const s=\"slide\"===n,o=[-t.deltaX||0,-t.deltaY||0,-t.detail||0].reduce((function(t,e){return Math.abs(e)>Math.abs(t)?e:t})),a=Math.max(-1,Math.min(1,o)),r=Date.now();this.pwt&&r-this.pwt<300?s&&t.preventDefault():(this.pwt=r,this.emit(\"wheel\",t,a),t.defaultPrevented||(\"close\"===n?(t.preventDefault(),this.close(t)):\"slide\"===n&&(i(e)||(t.preventDefault(),this[a>0?\"prev\":\"next\"]()))))}onScroll(){window.scrollTo(Pe,Ce)}onKeydown(t){if(!this.isTopmost())return;this.isCompact||!this.option(\"idle\")||this.isClosing()||this.resetIdle();const e=t.key,i=this.option(\"keyboard\");if(!i)return;const n=t.composedPath()[0],s=document.activeElement&&document.activeElement.classList,o=s&&s.contains(\"f-button\")||n.dataset.carouselPage||n.dataset.carouselIndex;if(\"Escape\"!==e&&!o&&E(n)){if(n.isContentEditable||-1!==[\"TEXTAREA\",\"OPTION\",\"INPUT\",\"SELECT\",\"VIDEO\"].indexOf(n.nodeName))return}if(\"Tab\"===t.key?P(this.container,ae):S(this.container,ae),t.ctrlKey||t.altKey||t.shiftKey)return;this.emit(\"keydown\",e,t);const a=i[e];a&&\"function\"==typeof this[a]&&(t.preventDefault(),this[a]())}onResize(){const t=this.container;if(!t)return;const e=this.isCompact;t.classList.toggle(le,e),this.manageCaption(this.getSlide()),this.isCompact?this.clearIdle():this.endIdle(),this.scale(),this.emit(\"resize\")}onFocus(t){this.isTopmost()&&this.checkFocus(t)}onMousemove(t){this.prevMouseMoveEvent=t,!this.isCompact&&this.option(\"idle\")&&this.resetIdle()}onVisibilityChange(){\"visible\"===document.visibilityState?this.checkFocus():this.endIdle()}manageCloseBtn(t){const e=this.optionFor(t,\"closeButton\")||!1;if(\"auto\"===e){const t=this.plugins.Toolbar;if(t&&t.state===Zt.Ready)return}if(!e)return;if(!t.contentEl||t.closeBtnEl)return;const i=this.option(\"tpl.closeButton\");if(i){const e=n(this.localize(i));t.closeBtnEl=t.contentEl.appendChild(e),t.el&&P(t.el,\"has-close-btn\")}}manageCaption(t=void 0){var e,i;const n=\"fancybox__caption\",s=this.container;if(!s)return;S(s,de);const o=this.isCompact||this.option(\"commonCaption\"),a=!o;if(this.caption&&this.stop(this.caption),a&&this.caption&&(this.caption.remove(),this.caption=null),o&&!this.caption)for(const t of(null===(e=this.carousel)||void 0===e?void 0:e.slides)||[])t.captionEl&&(t.captionEl.remove(),t.captionEl=void 0,S(t.el,de),null===(i=t.el)||void 0===i||i.removeAttribute(\"aria-labelledby\"));if(t||(t=this.getSlide()),!t||o&&!this.isCurrentSlide(t))return;const r=t.el;let l=this.optionFor(t,\"caption\",\"\");if(!l)return void(o&&this.caption&&this.animate(this.caption,\"f-fadeOut\",(()=>{this.caption&&(this.caption.innerHTML=\"\")})));let c=null;if(a){if(c=t.captionEl||null,r&&!c){const e=n+`_${this.id}_${t.index}`;c=document.createElement(\"div\"),P(c,n),c.setAttribute(\"id\",e),t.captionEl=r.appendChild(c),P(r,de),r.setAttribute(\"aria-labelledby\",e)}}else{if(c=this.caption,c||(c=s.querySelector(\".\"+n)),!c){c=document.createElement(\"div\"),c.dataset.fancyboxCaption=\"\",P(c,n);(this.footer||s).prepend(c)}P(s,de),this.caption=c}c&&(c.innerHTML=\"\",ve(l)||\"number\"==typeof l?c.innerHTML=l+\"\":l instanceof HTMLElement&&c.appendChild(l))}checkFocus(t){this.focus(t)}focus(t){var e;if(this.ignoreFocusChange)return;const i=document.activeElement||null,n=(null==t?void 0:t.target)||null,s=this.container,o=null===(e=this.carousel)||void 0===e?void 0:e.viewport;if(!s||!o)return;if(!t&&i&&s.contains(i))return;const a=this.getSlide(),r=a&&a.state===lt.Ready?a.el:null;if(!r||r.contains(i)||s===i)return;t&&t.cancelable&&t.preventDefault(),this.ignoreFocusChange=!0;const l=Array.from(s.querySelectorAll(nt));let c=[],h=null;for(let t of l){const e=!t.offsetParent||!!t.closest('[aria-hidden=\"true\"]'),i=r&&r.contains(t),n=!o.contains(t);if(t===s||(i||n)&&!e){c.push(t);const e=t.dataset.origTabindex;void 0!==e&&e&&(t.tabIndex=parseFloat(e)),t.removeAttribute(\"data-orig-tabindex\"),!t.hasAttribute(\"autoFocus\")&&h||(h=t)}else{const e=void 0===t.dataset.origTabindex?t.getAttribute(\"tabindex\")||\"\":t.dataset.origTabindex;e&&(t.dataset.origTabindex=e),t.tabIndex=-1}}let d=null;t?(!n||c.indexOf(n)<0)&&(d=h||s,c.length&&(i===xe?d=c[0]:this.lastFocus!==s&&i!==we||(d=c[c.length-1]))):d=a&&\"image\"===a.type?s:h||s,d&&st(d),this.lastFocus=document.activeElement,this.ignoreFocusChange=!1}next(){const t=this.carousel;t&&t.pages.length>1&&t.slideNext()}prev(){const t=this.carousel;t&&t.pages.length>1&&t.slidePrev()}jumpTo(...t){this.carousel&&this.carousel.slideTo(...t)}isTopmost(){var t;return(null===(t=Oe.getInstance())||void 0===t?void 0:t.id)==this.id}animate(t=null,e=\"\",i){if(!t||!e)return void(i&&i());this.stop(t);const n=s=>{s.target===t&&t.dataset.animationName&&(t.removeEventListener(\"animationend\",n),delete t.dataset.animationName,i&&i(),S(t,e))};t.dataset.animationName=e,t.addEventListener(\"animationend\",n),P(t,e)}stop(t){t&&t.dispatchEvent(new CustomEvent(\"animationend\",{bubbles:!1,cancelable:!0,currentTarget:t}))}setContent(t,e=\"\",i=!0){if(this.isClosing())return;const s=t.el;if(!s)return;let o=null;if(E(e)?o=e:(o=n(e+\"\"),E(o)||(o=document.createElement(\"div\"),o.innerHTML=e+\"\")),[\"img\",\"picture\",\"iframe\",\"video\",\"audio\"].includes(o.nodeName.toLowerCase())){const t=document.createElement(\"div\");t.appendChild(o),o=t}E(o)&&t.filter&&!t.error&&(o=o.querySelector(t.filter)),o&&E(o)?(P(o,\"fancybox__content\"),t.id&&o.setAttribute(\"id\",t.id),s.classList.add(`has-${t.error?\"error\":t.type||\"unknown\"}`),s.prepend(o),\"none\"===o.style.display&&(o.style.display=\"\"),\"none\"===getComputedStyle(o).getPropertyValue(\"display\")&&(o.style.display=t.display||this.option(\"defaultDisplay\")||\"flex\"),t.contentEl=o,i&&this.revealContent(t),this.manageCloseBtn(t),this.manageCaption(t)):this.setError(t,\"{{ELEMENT_NOT_FOUND}}\")}revealContent(t,e){const i=t.el,n=t.contentEl;i&&n&&(this.emit(\"reveal\",t),this.hideLoading(t),t.state=lt.Opening,(e=this.isOpeningSlide(t)?void 0===e?this.optionFor(t,\"showClass\"):e:\"f-fadeIn\")?this.animate(n,e,(()=>{this.done(t)})):this.done(t))}done(t){this.isClosing()||(t.state=lt.Ready,this.emit(\"done\",t),P(t.el,\"is-done\"),this.isCurrentSlide(t)&&this.option(\"autoFocus\")&&queueMicrotask((()=>{var e;null===(e=t.panzoom)||void 0===e||e.updateControls(),this.option(\"autoFocus\")&&this.focus()})),this.isOpeningSlide(t)&&(S(this.container,he),!this.isCompact&&this.option(\"idle\")&&this.setIdle()))}isCurrentSlide(t){const e=this.getSlide();return!(!t||!e)&&e.index===t.index}isOpeningSlide(t){var e,i;return null===(null===(e=this.carousel)||void 0===e?void 0:e.prevPage)&&t&&t.index===(null===(i=this.getSlide())||void 0===i?void 0:i.index)}showLoading(t){t.state=lt.Loading;const e=t.el;if(!e)return;P(e,ce),this.emit(\"loading\",t),t.spinnerEl||setTimeout((()=>{if(!this.isClosing()&&!t.spinnerEl&&t.state===lt.Loading){let i=n(x);P(i,\"fancybox-spinner\"),t.spinnerEl=i,e.prepend(i),this.animate(i,\"f-fadeIn\")}}),250)}hideLoading(t){const e=t.el;if(!e)return;const i=t.spinnerEl;this.isClosing()?null==i||i.remove():(S(e,ce),i&&this.animate(i,\"f-fadeOut\",(()=>{i.remove()})),t.state===lt.Loading&&(this.emit(\"loaded\",t),t.state=lt.Ready))}setError(t,e){if(this.isClosing())return;const i=new Event(\"error\",{bubbles:!0,cancelable:!0});if(this.emit(\"error\",i,t),i.defaultPrevented)return;t.error=e,this.hideLoading(t),this.clearContent(t);const n=document.createElement(\"div\");n.classList.add(\"fancybox-error\"),n.innerHTML=this.localize(e||\"{{ERROR}}
\"),this.setContent(t,n)}clearContent(t){if(void 0===t.state)return;this.emit(\"clearContent\",t),t.contentEl&&(t.contentEl.remove(),t.contentEl=void 0);const e=t.el;e&&(S(e,\"has-error\"),S(e,\"has-unknown\"),S(e,`has-${t.type||\"unknown\"}`)),t.closeBtnEl&&t.closeBtnEl.remove(),t.closeBtnEl=void 0,t.captionEl&&t.captionEl.remove(),t.captionEl=void 0,t.spinnerEl&&t.spinnerEl.remove(),t.spinnerEl=void 0}getSlide(){var t;const e=this.carousel;return(null===(t=null==e?void 0:e.pages[null==e?void 0:e.page])||void 0===t?void 0:t.slides[0])||void 0}close(t,e){if(this.isClosing())return;const i=new Event(\"shouldClose\",{bubbles:!0,cancelable:!0});if(this.emit(\"shouldClose\",i,t),i.defaultPrevented)return;t&&t.cancelable&&(t.preventDefault(),t.stopPropagation());const n=()=>{this.proceedClose(t,e)};this.startedFs&&ye&&ye.isFullscreen()?Promise.resolve(ye.exit()).then((()=>n())):n()}clearIdle(){this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=null}setIdle(t=!1){const e=()=>{this.clearIdle(),this.idle=!0,P(this.container,\"is-idle\"),this.emit(\"setIdle\")};if(this.clearIdle(),!this.isClosing())if(t)e();else{const t=this.option(\"idle\");t&&(this.idleTimer=setTimeout(e,t))}}endIdle(){this.clearIdle(),this.idle&&!this.isClosing()&&(this.idle=!1,S(this.container,\"is-idle\"),this.emit(\"endIdle\"))}resetIdle(){this.endIdle(),this.setIdle()}toggleIdle(){this.idle?this.endIdle():this.setIdle(!0)}toggleFullscreen(){ye&&(ye.isFullscreen()?ye.exit():ye.request().then((()=>{this.startedFs=!0})))}isClosing(){return[rt.Closing,rt.CustomClosing,rt.Destroy].includes(this.state)}proceedClose(t,e){var i,n;this.state=rt.Closing,this.clearIdle(),this.detachEvents();const s=this.container,o=this.carousel,a=this.getSlide(),r=a&&this.option(\"placeFocusBack\")?a.triggerEl||this.option(\"triggerEl\"):null;if(r&&(tt(r)?st(r):r.focus()),s&&(S(s,he),P(s,\"is-closing\"),s.setAttribute(oe,\"true\"),this.option(\"animated\")&&P(s,re),s.style.pointerEvents=\"none\"),o){o.clearTransitions(),null===(i=o.panzoom)||void 0===i||i.destroy(),null===(n=o.plugins.Navigation)||void 0===n||n.detach();for(const t of o.slides){t.state=lt.Closing,this.hideLoading(t);const e=t.contentEl;e&&this.stop(e);const i=null==t?void 0:t.panzoom;i&&(i.stop(),i.detachEvents(),i.detachObserver()),this.isCurrentSlide(t)||o.emit(\"removeSlide\",t)}}Pe=window.scrollX,Ce=window.scrollY,window.addEventListener(\"scroll\",this.onScroll),this.emit(\"close\",t),this.state!==rt.CustomClosing?(void 0===e&&a&&(e=this.optionFor(a,\"hideClass\")),e&&a?(this.animate(a.contentEl,e,(()=>{o&&o.emit(\"removeSlide\",a)})),setTimeout((()=>{this.destroy()}),500)):this.destroy()):setTimeout((()=>{this.destroy()}),500)}destroy(){var t;if(this.state===rt.Destroy)return;window.removeEventListener(\"scroll\",this.onScroll),this.state=rt.Destroy,null===(t=this.carousel)||void 0===t||t.destroy();const e=this.container;e&&e.remove(),Te.delete(this.id);const i=Oe.getInstance();i?i.focus():(we&&(we.remove(),we=null),xe&&(xe.remove(),xe=null),S(document.documentElement,ee),(()=>{if(!et)return;const t=document,e=t.body;e.classList.remove(ie),e.style.setProperty(se,\"\"),t.documentElement.style.setProperty(ne,\"\")})(),this.emit(\"destroy\"))}static bind(t,e,i){if(!et)return;let n,s=\"\",o={};if(void 0===t?n=document.body:ve(t)?(n=document.body,s=t,\"object\"==typeof e&&(o=e||{})):(n=t,ve(e)&&(s=e),\"object\"==typeof i&&(o=i||{})),!n||!E(n))return;s=s||\"[data-fancybox]\";const a=Oe.openers.get(n)||new Map;a.set(s,o),Oe.openers.set(n,a),1===a.size&&n.addEventListener(\"click\",Oe.fromEvent)}static unbind(t,e){let i,n=\"\";if(ve(t)?(i=document.body,n=t):(i=t,ve(e)&&(n=e)),!i)return;const s=Oe.openers.get(i);s&&n&&s.delete(n),n&&s||(Oe.openers.delete(i),i.removeEventListener(\"click\",Oe.fromEvent))}static destroy(){let t;for(;t=Oe.getInstance();)t.destroy();for(const t of Oe.openers.keys())t.removeEventListener(\"click\",Oe.fromEvent);Oe.openers=new Map}static fromEvent(t){if(t.defaultPrevented)return;if(t.button&&0!==t.button)return;if(t.ctrlKey||t.metaKey||t.shiftKey)return;let e=t.composedPath()[0];const i=e.closest(\"[data-fancybox-trigger]\");if(i){const t=i.dataset.fancyboxTrigger||\"\",n=document.querySelectorAll(`[data-fancybox=\"${t}\"]`),s=parseInt(i.dataset.fancyboxIndex||\"\",10)||0;e=n[s]||e}if(!(e&&e instanceof Element))return;let n,s,o,a;if([...Oe.openers].reverse().find((([t,i])=>!(!t.contains(e)||![...i].reverse().find((([i,r])=>{let l=e.closest(i);return!!l&&(n=t,s=i,o=l,a=r,!0)}))))),!n||!s||!o)return;a=a||{},t.preventDefault(),e=o;let r=[],l=u({},at,a);l.event=t,l.triggerEl=e,l.delegate=i;const c=l.groupAll,h=l.groupAttr,d=h&&e?e.getAttribute(`${h}`):\"\";if((!e||d||c)&&(r=[].slice.call(n.querySelectorAll(s))),e&&!c&&(r=d?r.filter((t=>t.getAttribute(`${h}`)===d)):[e]),!r.length)return;const p=Oe.getInstance();return p&&p.options.triggerEl&&r.indexOf(p.options.triggerEl)>-1?void 0:(e&&(l.startIndex=r.indexOf(e)),Oe.fromNodes(r,l))}static fromSelector(t,e,i){let n=null,s=\"\",o={};if(ve(t)?(n=document.body,s=t,\"object\"==typeof e&&(o=e||{})):t instanceof HTMLElement&&ve(e)&&(n=t,s=e,\"object\"==typeof i&&(o=i||{})),!n||!s)return!1;const a=Oe.openers.get(n);return!!a&&(o=u({},a.get(s)||{},o),!!o&&Oe.fromNodes(Array.from(n.querySelectorAll(s)),o))}static fromNodes(t,e){e=u({},at,e||{});const i=[];for(const n of t){const t=n.dataset||{},s=t[me]||n.getAttribute(ge)||n.getAttribute(\"currentSrc\")||n.getAttribute(me)||void 0;let o;const a=e.delegate;let r;a&&i.length===e.startIndex&&(o=a instanceof HTMLImageElement?a:a.querySelector(\"img:not([aria-hidden])\")),o||(o=n instanceof HTMLImageElement?n:n.querySelector(\"img:not([aria-hidden])\")),o&&(r=o.currentSrc||o[me]||void 0,!r&&o.dataset&&(r=o.dataset.lazySrc||o.dataset[me]||void 0));const l={src:s,triggerEl:n,thumbEl:o,thumbElSrc:r,thumbSrc:r};for(const e in t){let i=t[e]+\"\";i=\"false\"!==i&&(\"true\"===i||i),l[e]=i}i.push(l)}return new Oe(i,e)}static getInstance(t){if(t)return Te.get(t);return Array.from(Te.values()).reverse().find((t=>!t.isClosing()&&t))||null}static getSlide(){var t;return(null===(t=Oe.getInstance())||void 0===t?void 0:t.getSlide())||null}static show(t=[],e={}){return new Oe(t,e)}static next(){const t=Oe.getInstance();t&&t.next()}static prev(){const t=Oe.getInstance();t&&t.prev()}static close(t=!0,...e){if(t)for(const t of Te.values())t.close(...e);else{const t=Oe.getInstance();t&&t.close(...e)}}}Object.defineProperty(Oe,\"version\",{enumerable:!0,configurable:!0,writable:!0,value:\"5.0.36\"}),Object.defineProperty(Oe,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:at}),Object.defineProperty(Oe,\"Plugins\",{enumerable:!0,configurable:!0,writable:!0,value:te}),Object.defineProperty(Oe,\"openers\",{enumerable:!0,configurable:!0,writable:!0,value:new Map});export{Q as Carousel,Oe as Fancybox,I as Panzoom};\n"],
+ "mappings": ";;;AAAA,IAAM,IAAE,CAACA,IAAEC,KAAE,SAAOD,KAAE,WAAWA,KAAE,EAAE,KAAG,GAAE,KAAK,OAAOA,KAAE,OAAO,WAASC,EAAC,IAAEA;AAA3E,IAA8E,IAAE,SAASD,IAAE;AAAC,MAAG,EAAEA,MAAGA,cAAa,WAASA,GAAE,cAAc,QAAM;AAAG,QAAMC,KAAED,GAAE,eAAaA,GAAE,cAAaE,KAAE,OAAO,iBAAiBF,EAAC,EAAE,WAAUG,KAAE,OAAKD,GAAE,QAAQ,QAAQ,GAAEE,KAAE,OAAKF,GAAE,QAAQ,SAAS;AAAE,SAAOD,MAAG,CAACE,MAAG,CAACC;AAAC;AAAvS,IAAyS,IAAE,SAASJ,IAAEG,KAAE,QAAO;AAAC,SAAM,EAAE,CAACH,MAAGA,OAAI,SAAS,QAAMG,MAAGH,OAAIG,QAAK,EAAEH,EAAC,IAAEA,KAAE,EAAEA,GAAE,eAAcG,EAAC;AAAE;AAAvY,IAAyY,IAAE,SAASH,IAAE;AAAC,MAAIC,KAAG,IAAI,YAAW,gBAAgBD,IAAE,WAAW,EAAE;AAAK,MAAGC,GAAE,oBAAkB,GAAE;AAAC,aAAQC,KAAE,SAAS,cAAc,KAAK,GAAED,GAAE,aAAY,CAAAC,GAAE,YAAYD,GAAE,UAAU;AAAE,WAAOC;AAAA,EAAC;AAAC,SAAOD,GAAE;AAAU;AAAzlB,IAA2lB,IAAE,CAAAD,OAAG,GAAGA,MAAG,EAAE,GAAG,MAAM,GAAG,EAAE,OAAQ,CAAAA,OAAG,CAAC,CAACA,EAAE;AAAroB,IAAuoB,IAAE,CAACA,IAAEC,IAAEC,OAAI;AAAC,EAAAF,MAAG,EAAEC,EAAC,EAAE,QAAS,CAAAA,OAAG;AAAC,IAAAD,GAAE,UAAU,OAAOC,IAAEC,MAAG,KAAE;AAAA,EAAC,CAAE;AAAC;AAAE,IAAM,IAAN,MAAO;AAAA,EAAC,YAAYF,IAAE;AAAC,WAAO,eAAe,MAAK,SAAQ,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,OAAM,CAAC,GAAE,OAAO,eAAe,MAAK,SAAQ,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,OAAM,CAAC,GAAE,OAAO,eAAe,MAAK,WAAU,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,OAAM,CAAC,GAAE,OAAO,eAAe,MAAK,WAAU,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,OAAM,CAAC,GAAE,OAAO,eAAe,MAAK,MAAK,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,OAAM,CAAC,GAAE,OAAO,eAAe,MAAK,QAAO,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,OAAM,CAAC,GAAE,OAAO,eAAe,MAAK,iBAAgB,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,OAAM,CAAC,GAAE,KAAK,gBAAcA,IAAE,KAAK,QAAMA,GAAE,OAAM,KAAK,QAAMA,GAAE,OAAM,KAAK,UAAQA,GAAE,SAAQ,KAAK,UAAQA,GAAE,SAAQ,KAAK,KAAG,KAAK,SAAOA,cAAa,QAAMA,GAAE,aAAW,IAAG,KAAK,OAAK,KAAK,IAAI;AAAA,EAAC;AAAC;AAAC,IAAM,IAAE,EAAC,SAAQ,MAAE;AAAE,IAAM,IAAN,MAAO;AAAA,EAAC,YAAYA,IAAE,EAAC,OAAMC,KAAG,MAAI,MAAI,MAAKC,KAAG,MAAI;AAAA,EAAC,GAAG,KAAIC,KAAG,MAAI;AAAA,EAAC,EAAE,GAAE;AAAC,WAAO,eAAe,MAAK,WAAU,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,OAAM,CAAC,GAAE,OAAO,eAAe,MAAK,iBAAgB,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,OAAM,CAAC,GAAE,OAAO,eAAe,MAAK,gBAAe,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,OAAM,CAAC,GAAE,OAAO,eAAe,MAAK,eAAc,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,OAAM,CAAC,GAAE,OAAO,eAAe,MAAK,mBAAkB,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,CAAC,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,iBAAgB,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,CAAC,EAAC,CAAC,GAAE,KAAK,UAAQH,IAAE,KAAK,gBAAcC,IAAE,KAAK,eAAaC,IAAE,KAAK,cAAYC;AAAE,eAAUH,MAAI,CAAC,kBAAiB,gBAAe,UAAS,cAAa,gBAAe,cAAc,EAAE,MAAKA,EAAC,IAAE,KAAKA,EAAC,EAAE,KAAK,IAAI;AAAE,SAAK,QAAQ,iBAAiB,aAAY,KAAK,gBAAe,CAAC,GAAE,KAAK,QAAQ,iBAAiB,cAAa,KAAK,cAAa,CAAC,GAAE,KAAK,QAAQ,iBAAiB,aAAY,KAAK,QAAO,CAAC,GAAE,KAAK,QAAQ,iBAAiB,YAAW,KAAK,UAAU,GAAE,KAAK,QAAQ,iBAAiB,eAAc,KAAK,UAAU;AAAA,EAAC;AAAA,EAAC,eAAeA,IAAE;AAAC,QAAG,CAACA,GAAE,WAAS,MAAIA,GAAE,OAAO;AAAO,UAAMC,KAAE,IAAI,EAAED,EAAC;AAAE,SAAK,gBAAgB,KAAM,CAAAA,OAAGA,GAAE,OAAKC,GAAE,EAAG,KAAG,KAAK,oBAAoBA,IAAED,EAAC,MAAI,OAAO,iBAAiB,aAAY,KAAK,MAAM,GAAE,OAAO,iBAAiB,WAAU,KAAK,YAAY,GAAE,OAAO,iBAAiB,QAAO,KAAK,YAAY;AAAA,EAAE;AAAA,EAAC,aAAaA,IAAE;AAAC,eAAUC,MAAK,MAAM,KAAKD,GAAE,kBAAgB,CAAC,CAAC,EAAE,MAAK,oBAAoB,IAAI,EAAEC,EAAC,GAAED,EAAC;AAAE,WAAO,iBAAiB,QAAO,KAAK,YAAY;AAAA,EAAC;AAAA,EAAC,OAAOA,IAAE;AAAC,UAAMC,KAAE,KAAK,gBAAgB,MAAM,GAAEC,KAAE,oBAAmBF,KAAE,MAAM,KAAKA,GAAE,kBAAgB,CAAC,CAAC,EAAE,IAAK,CAAAA,OAAG,IAAI,EAAEA,EAAC,CAAE,IAAE,CAAC,IAAI,EAAEA,EAAC,CAAC,GAAEG,KAAE,CAAC;AAAE,eAAUH,MAAKE,IAAE;AAAC,YAAMD,KAAE,KAAK,gBAAgB,UAAW,CAAAA,OAAGA,GAAE,OAAKD,GAAE,EAAG;AAAE,MAAAC,KAAE,MAAIE,GAAE,KAAKH,EAAC,GAAE,KAAK,gBAAgBC,EAAC,IAAED;AAAA,IAAE;AAAC,IAAAG,GAAE,UAAQ,KAAK,aAAaH,IAAE,KAAK,gBAAgB,MAAM,GAAEC,EAAC;AAAA,EAAC;AAAA,EAAC,aAAaD,IAAE;AAAC,IAAAA,GAAE,UAAQ,KAAG,MAAIA,GAAE,WAAS,KAAK,kBAAkBA,IAAE,IAAI,EAAEA,EAAC,CAAC,GAAE,OAAO,oBAAoB,aAAY,KAAK,MAAM,GAAE,OAAO,oBAAoB,WAAU,KAAK,YAAY,GAAE,OAAO,oBAAoB,QAAO,KAAK,YAAY;AAAA,EAAE;AAAA,EAAC,WAAWA,IAAE;AAAC,eAAUC,MAAK,MAAM,KAAKD,GAAE,kBAAgB,CAAC,CAAC,EAAE,MAAK,kBAAkBA,IAAE,IAAI,EAAEC,EAAC,CAAC;AAAA,EAAC;AAAA,EAAC,oBAAoBD,IAAEC,IAAE;AAAC,WAAM,CAAC,CAAC,KAAK,cAAcA,IAAED,IAAE,KAAK,gBAAgB,MAAM,CAAC,MAAI,KAAK,gBAAgB,KAAKA,EAAC,GAAE,KAAK,cAAc,KAAKA,EAAC,GAAE;AAAA,EAAG;AAAA,EAAC,kBAAkBA,IAAEC,IAAE;AAAC,UAAMC,KAAE,KAAK,gBAAgB,UAAW,CAAAF,OAAGA,GAAE,OAAKC,GAAE,EAAG;AAAE,IAAAC,KAAE,MAAI,KAAK,gBAAgB,OAAOA,IAAE,CAAC,GAAE,KAAK,cAAc,OAAOA,IAAE,CAAC,GAAE,KAAK,YAAYF,IAAEC,IAAE,KAAK,gBAAgB,MAAM,CAAC;AAAA,EAAE;AAAA,EAAC,eAAc;AAAC,SAAK,MAAM;AAAA,EAAC;AAAA,EAAC,QAAO;AAAC,WAAK,KAAK,gBAAgB,UAAQ;AAAC,YAAMD,KAAE,KAAK,gBAAgB,KAAK,gBAAgB,SAAO,CAAC;AAAE,WAAK,gBAAgB,OAAO,KAAK,gBAAgB,SAAO,GAAE,CAAC,GAAE,KAAK,cAAc,OAAO,KAAK,gBAAgB,SAAO,GAAE,CAAC,GAAE,KAAK,YAAY,IAAI,MAAM,YAAW,EAAC,SAAQ,MAAG,YAAW,MAAG,SAAQA,GAAE,SAAQ,SAAQA,GAAE,QAAO,CAAC,GAAEA,IAAE,KAAK,gBAAgB,MAAM,CAAC;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,OAAM;AAAC,SAAK,QAAQ,oBAAoB,aAAY,KAAK,gBAAe,CAAC,GAAE,KAAK,QAAQ,oBAAoB,cAAa,KAAK,cAAa,CAAC,GAAE,KAAK,QAAQ,oBAAoB,aAAY,KAAK,QAAO,CAAC,GAAE,KAAK,QAAQ,oBAAoB,YAAW,KAAK,UAAU,GAAE,KAAK,QAAQ,oBAAoB,eAAc,KAAK,UAAU,GAAE,OAAO,oBAAoB,aAAY,KAAK,MAAM,GAAE,OAAO,oBAAoB,WAAU,KAAK,YAAY,GAAE,OAAO,oBAAoB,QAAO,KAAK,YAAY;AAAA,EAAC;AAAC;AAAC,SAAS,EAAEA,IAAEC,IAAE;AAAC,SAAOA,KAAE,KAAK,KAAK,KAAK,IAAIA,GAAE,UAAQD,GAAE,SAAQ,CAAC,IAAE,KAAK,IAAIC,GAAE,UAAQD,GAAE,SAAQ,CAAC,CAAC,IAAE;AAAC;AAAC,SAAS,EAAEA,IAAEC,IAAE;AAAC,SAAOA,KAAE,EAAC,UAASD,GAAE,UAAQC,GAAE,WAAS,GAAE,UAASD,GAAE,UAAQC,GAAE,WAAS,EAAC,IAAED;AAAC;AAAC,IAAM,IAAE,CAAAA,OAAG,YAAU,OAAOA,MAAG,SAAOA,MAAGA,GAAE,gBAAc,UAAQ,sBAAoB,OAAO,UAAU,SAAS,KAAKA,EAAC;AAArH,IAAuH,IAAE,CAACA,OAAKC,OAAI;AAAC,QAAMC,KAAED,GAAE;AAAO,WAAQE,KAAE,GAAEA,KAAED,IAAEC,MAAI;AAAC,UAAMD,KAAED,GAAEE,EAAC,KAAG,CAAC;AAAE,WAAO,QAAQD,EAAC,EAAE,QAAS,CAAC,CAACD,IAAEC,EAAC,MAAI;AAAC,YAAMC,KAAE,MAAM,QAAQD,EAAC,IAAE,CAAC,IAAE,CAAC;AAAE,MAAAF,GAAEC,EAAC,KAAG,OAAO,OAAOD,IAAE,EAAC,CAACC,EAAC,GAAEE,GAAC,CAAC,GAAE,EAAED,EAAC,IAAE,OAAO,OAAOF,GAAEC,EAAC,GAAE,EAAEE,IAAED,EAAC,CAAC,IAAE,MAAM,QAAQA,EAAC,IAAE,OAAO,OAAOF,IAAE,EAAC,CAACC,EAAC,GAAE,CAAC,GAAGC,EAAC,EAAC,CAAC,IAAE,OAAO,OAAOF,IAAE,EAAC,CAACC,EAAC,GAAEC,GAAC,CAAC;AAAA,IAAC,CAAE;AAAA,EAAC;AAAC,SAAOF;AAAC;AAAjZ,IAAmZ,IAAE,SAASA,IAAEC,IAAE;AAAC,SAAOD,GAAE,MAAM,GAAG,EAAE,OAAQ,CAACA,IAAEC,OAAI,YAAU,OAAOD,KAAEA,GAAEC,EAAC,IAAE,QAAQA,EAAC;AAAC;AAAE,IAAM,IAAN,MAAO;AAAA,EAAC,YAAYD,KAAE,CAAC,GAAE;AAAC,WAAO,eAAe,MAAK,WAAU,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAMA,GAAC,CAAC,GAAE,OAAO,eAAe,MAAK,UAAS,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,oBAAI,MAAG,CAAC,GAAE,KAAK,WAAWA,EAAC;AAAE,eAAUA,MAAK,OAAO,oBAAoB,OAAO,eAAe,IAAI,CAAC,EAAE,CAAAA,GAAE,WAAW,IAAI,KAAG,cAAY,OAAO,KAAKA,EAAC,MAAI,KAAKA,EAAC,IAAE,KAAKA,EAAC,EAAE,KAAK,IAAI;AAAA,EAAE;AAAA,EAAC,WAAWA,IAAE;AAAC,SAAK,UAAQA,KAAE,EAAE,CAAC,GAAE,KAAK,YAAY,UAASA,EAAC,IAAE,CAAC;AAAE,eAAS,CAACA,IAAEC,EAAC,KAAI,OAAO,QAAQ,KAAK,OAAO,IAAI,KAAG,CAAC,CAAC,EAAE,MAAK,GAAGD,IAAEC,EAAC;AAAA,EAAC;AAAA,EAAC,OAAOD,OAAKC,IAAE;AAAC,QAAIC,KAAE,EAAEF,IAAE,KAAK,OAAO;AAAE,WAAOE,MAAG,cAAY,OAAOA,OAAIA,KAAEA,GAAE,KAAK,MAAK,MAAK,GAAGD,EAAC,IAAGC;AAAA,EAAC;AAAA,EAAC,UAAUF,IAAEC,IAAEC,OAAKC,IAAE;AAAC,QAAIC,KAAE,EAAEH,IAAED,EAAC;AAAE,QAAIK;AAAE,gBAAU,QAAOA,KAAED,OAAI,MAAMC,EAAC,KAAG,MAAM,WAAWA,EAAC,CAAC,MAAID,KAAE,WAAWA,EAAC,IAAG,WAASA,OAAIA,KAAE,OAAI,YAAUA,OAAIA,KAAE,QAAIA,MAAG,cAAY,OAAOA,OAAIA,KAAEA,GAAE,KAAK,MAAK,MAAKJ,IAAE,GAAGG,EAAC;AAAG,QAAIG,KAAE,EAAEL,IAAE,KAAK,OAAO;AAAE,WAAOK,MAAG,cAAY,OAAOA,KAAEF,KAAEE,GAAE,KAAK,MAAK,MAAKN,IAAE,GAAGG,IAAEC,EAAC,IAAE,WAASA,OAAIA,KAAEE,KAAG,WAASF,KAAEF,KAAEE;AAAA,EAAC;AAAA,EAAC,GAAGJ,IAAE;AAAC,UAAMC,KAAE,KAAK,QAAQ;AAAQ,WAAOA,MAAGA,GAAED,EAAC,KAAG;AAAA,EAAE;AAAA,EAAC,SAASA,IAAEC,KAAE,CAAC,GAAE;AAAC,IAAAD,KAAE,OAAOA,EAAC,EAAE,QAAQ,0BAA0B,CAACA,IAAEC,IAAEC,OAAI;AAAC,UAAIC,KAAE;AAAG,aAAOD,KAAEC,KAAE,KAAK,OAAO,GAAGF,GAAE,CAAC,IAAEA,GAAE,YAAY,EAAE,UAAU,CAAC,CAAC,SAASC,EAAC,EAAE,IAAED,OAAIE,KAAE,KAAK,OAAO,QAAQF,EAAC,EAAE,IAAGE,OAAIA,KAAEH,KAAGG;AAAA,IAAC,CAAE;AAAE,aAAQD,KAAE,GAAEA,KAAED,GAAE,QAAOC,KAAI,CAAAF,KAAEA,GAAE,MAAMC,GAAEC,EAAC,EAAE,CAAC,CAAC,EAAE,KAAKD,GAAEC,EAAC,EAAE,CAAC,CAAC;AAAE,WAAOF,KAAEA,GAAE,QAAQ,kBAAkB,CAACA,IAAEC,OAAIA,EAAE;AAAA,EAAC;AAAA,EAAC,GAAGD,IAAEC,IAAE;AAAC,QAAIC,KAAE,CAAC;AAAE,gBAAU,OAAOF,KAAEE,KAAEF,GAAE,MAAM,GAAG,IAAE,MAAM,QAAQA,EAAC,MAAIE,KAAEF,KAAG,KAAK,WAAS,KAAK,SAAO,oBAAI,QAAKE,GAAE,QAAS,CAAAF,OAAG;AAAC,UAAIE,KAAE,KAAK,OAAO,IAAIF,EAAC;AAAE,MAAAE,OAAI,KAAK,OAAO,IAAIF,IAAE,CAAC,CAAC,GAAEE,KAAE,CAAC,IAAGA,GAAE,SAASD,EAAC,KAAGC,GAAE,KAAKD,EAAC,GAAE,KAAK,OAAO,IAAID,IAAEE,EAAC;AAAA,IAAC,CAAE;AAAA,EAAC;AAAA,EAAC,IAAIF,IAAEC,IAAE;AAAC,QAAIC,KAAE,CAAC;AAAE,gBAAU,OAAOF,KAAEE,KAAEF,GAAE,MAAM,GAAG,IAAE,MAAM,QAAQA,EAAC,MAAIE,KAAEF,KAAGE,GAAE,QAAS,CAAAF,OAAG;AAAC,YAAME,KAAE,KAAK,OAAO,IAAIF,EAAC;AAAE,UAAG,MAAM,QAAQE,EAAC,GAAE;AAAC,cAAMF,KAAEE,GAAE,QAAQD,EAAC;AAAE,QAAAD,KAAE,MAAIE,GAAE,OAAOF,IAAE,CAAC;AAAA,MAAC;AAAA,IAAC,CAAE;AAAA,EAAC;AAAA,EAAC,KAAKA,OAAKC,IAAE;AAAC,KAAC,GAAG,KAAK,OAAO,IAAID,EAAC,KAAG,CAAC,CAAC,EAAE,QAAS,CAAAA,OAAGA,GAAE,MAAK,GAAGC,EAAC,CAAE,GAAE,QAAMD,MAAG,KAAK,KAAK,KAAIA,IAAE,GAAGC,EAAC;AAAA,EAAC;AAAC;AAAC,OAAO,eAAe,GAAE,WAAU,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,SAAQ,CAAC,GAAE,OAAO,eAAe,GAAE,YAAW,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,CAAC,EAAC,CAAC;AAAE,IAAM,IAAN,cAAgB,EAAC;AAAA,EAAC,YAAYD,KAAE,CAAC,GAAE;AAAC,UAAMA,EAAC,GAAE,OAAO,eAAe,MAAK,WAAU,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,CAAC,EAAC,CAAC;AAAA,EAAC;AAAA,EAAC,cAAcA,KAAE,CAAC,GAAE;AAAC,UAAMC,KAAE,oBAAI;AAAI,eAAS,CAACC,IAAEC,EAAC,KAAI,OAAO,QAAQH,EAAC,GAAE;AAAC,YAAMA,KAAE,KAAK,OAAOE,EAAC,GAAEE,KAAE,KAAK,QAAQF,EAAC;AAAE,MAAAE,MAAG,UAAKJ,KAAEI,MAAG,UAAKJ,OAAII,GAAE,OAAO,GAAE,OAAO,KAAK,QAAQF,EAAC,KAAGD,GAAE,IAAIC,IAAE,IAAIC,GAAE,MAAKH,MAAG,CAAC,CAAC,CAAC;AAAA,IAAC;AAAC,eAAS,CAACA,IAAEE,EAAC,KAAID,GAAE,MAAK,QAAQD,EAAC,IAAEE,IAAEA,GAAE,OAAO;AAAA,EAAC;AAAA,EAAC,cAAcF,IAAE;AAAC,IAAAA,KAAEA,MAAG,OAAO,KAAK,KAAK,OAAO;AAAE,eAAUC,MAAKD,IAAE;AAAC,YAAMA,KAAE,KAAK,QAAQC,EAAC;AAAE,MAAAD,MAAGA,GAAE,OAAO,GAAE,OAAO,KAAK,QAAQC,EAAC;AAAA,IAAC;AAAC,WAAO,KAAK,KAAK,eAAe,GAAE;AAAA,EAAI;AAAC;AAAC,IAAI;AAAE,CAAC,SAASD,IAAE;AAAC,EAAAA,GAAEA,GAAE,OAAK,CAAC,IAAE,QAAOA,GAAEA,GAAE,QAAM,CAAC,IAAE,SAAQA,GAAEA,GAAE,QAAM,CAAC,IAAE,SAAQA,GAAEA,GAAE,UAAQ,CAAC,IAAE,WAAUA,GAAEA,GAAE,YAAU,CAAC,IAAE,aAAYA,GAAEA,GAAE,UAAQ,CAAC,IAAE;AAAS,EAAE,MAAI,IAAE,CAAC,EAAE;AAAE,IAAM,IAAE,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAhC,IAAkC,IAAE,EAAC,OAAM,WAAU,SAAQ,aAAY,SAAQ,aAAY,UAAS,cAAa,QAAO,WAAU,SAAQ,YAAW,YAAW,qBAAoB,YAAW,qBAAoB,aAAY,qBAAoB,WAAU,2BAA0B,UAAS,oBAAmB,OAAM,qBAAoB,OAAM,mBAAkB,MAAK,oBAAmB,MAAK,kBAAiB,OAAM,SAAQ,UAAS,oBAAmB;AAA/b,IAAic,IAAE,EAAC,SAAQ,MAAK,OAAM,QAAO,QAAO,QAAO,SAAQ,QAAO,OAAM,MAAG,kBAAiB,GAAE,UAAS,OAAG,iBAAgB,GAAE,mBAAkB,MAAI,MAAK,MAAG,aAAY,MAAG,eAAc,QAAO,UAAS,GAAE,UAAS,GAAE,UAAS,MAAI,cAAa,MAAI,eAAc,MAAI,OAAM,cAAa,UAAS,OAAG,OAAM,QAAO,YAAW,GAAE,SAAQ,MAAG,QAAO,QAAO,UAAS,OAAG,YAAW,MAAG,QAAO,MAAG,aAAY,IAAG,iBAAgB,OAAG,SAAQ,EAAC,SAAQ,sBAAqB,WAAU,cAAa,WAAU,eAAc,YAAW,gBAAe,aAAY,gBAAe,YAAW,eAAc,cAAa,iBAAgB,mBAAkB,6BAA4B,GAAE,MAAK,EAAC;AAA3kC,IAA6kC,IAAE;AAA/kC,IAA0nC,IAAE,qDAAmD,IAAE,IAAE;AAAnrC,IAAksC,IAAE,CAAAA,OAAGA,MAAG,SAAOA,MAAGA,cAAa,WAAS,cAAaA;AAAvvC,IAAyvC,IAAE,CAACA,IAAEC,OAAI;AAAC,EAAAD,MAAG,EAAEC,EAAC,EAAE,QAAS,CAAAA,OAAG;AAAC,IAAAD,GAAE,UAAU,OAAOC,EAAC;AAAA,EAAC,CAAE;AAAC;AAAhzC,IAAkzC,IAAE,CAACD,IAAEC,OAAI;AAAC,EAAAD,MAAG,EAAEC,EAAC,EAAE,QAAS,CAAAA,OAAG;AAAC,IAAAD,GAAE,UAAU,IAAIC,EAAC;AAAA,EAAC,CAAE;AAAC;AAAt2C,IAAw2C,IAAE,EAAC,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,EAAC;AAAl4C,IAAo4C,IAAE;AAAt4C,IAA04C,IAAE;AAA54C,IAAg5C,IAAE;AAAl5C,IAA85C,IAAE;AAAh6C,IAAu6C,IAAE;AAAz6C,IAAm7C,IAAE;AAAO,IAAI,IAAE;AAAN,IAAW,IAAE;AAAK,IAAM,IAAN,MAAM,WAAU,EAAC;AAAA,EAAC,IAAI,OAAM;AAAC,WAAO,KAAK,YAAY,QAAM,KAAK,YAAY,WAAS,KAAG,KAAK,YAAY,SAAO,KAAK,YAAY,YAAU;AAAA,EAAC;AAAA,EAAC,IAAI,gBAAe;AAAC,WAAO,SAAO,MAAI,IAAE,OAAO,WAAW,eAAe,EAAE,UAAS;AAAA,EAAC;AAAA,EAAC,IAAI,WAAU;AAAC,WAAO,SAAO,MAAI,IAAE,4BAA4B,KAAK,UAAU,SAAS,IAAG;AAAA,EAAC;AAAA,EAAC,IAAI,UAAS;AAAC,WAAO,KAAK,QAAQ,YAAU,KAAG,KAAK,gBAAc,IAAE;AAAA,EAAC;AAAA,EAAC,IAAI,gBAAe;AAAC,UAAMD,KAAE,KAAK,QAAQ;AAAc,WAAOA,OAAI,IAAE,KAAK,gBAAcA;AAAA,EAAC;AAAA,EAAC,IAAI,aAAY;AAAC,WAAO,KAAK,OAAO,UAAU;AAAA,EAAC;AAAA,EAAC,IAAI,QAAO;AAAC,WAAO,MAAI,KAAK,MAAM,KAAK,QAAQ,GAAE,KAAK,QAAQ,CAAC,IAAE,KAAK,MAAI;AAAA,EAAC;AAAA,EAAC,IAAI,cAAa;AAAC,WAAO,MAAI,KAAK,MAAM,KAAK,OAAO,GAAE,KAAK,OAAO,CAAC,IAAE,KAAK,MAAI;AAAA,EAAC;AAAA,EAAC,IAAI,QAAO;AAAC,UAAK,EAAC,GAAEA,IAAE,GAAEC,GAAC,IAAE,KAAK;AAAQ,WAAO,KAAK,KAAKD,KAAEA,KAAEC,KAAEA,EAAC,KAAG;AAAA,EAAC;AAAA,EAAC,IAAI,cAAa;AAAC,UAAK,EAAC,GAAED,IAAE,GAAEC,GAAC,IAAE,KAAK;AAAO,WAAO,KAAK,KAAKD,KAAEA,KAAEC,KAAEA,EAAC,KAAG;AAAA,EAAC;AAAA,EAAC,IAAI,WAAU;AAAC,WAAO,KAAK,OAAO,UAAU,KAAG;AAAA,EAAC;AAAA,EAAC,IAAI,YAAW;AAAC,UAAK,EAAC,aAAYD,GAAC,IAAE;AAAK,WAAOA,GAAE,YAAUA,GAAE,YAAU;AAAA,EAAC;AAAA,EAAC,IAAI,WAAU;AAAC,WAAO,KAAK,aAAW,KAAK,OAAO,UAAU,KAAG,MAAI;AAAA,EAAC;AAAA,EAAC,IAAI,aAAY;AAAC,UAAK,EAAC,eAAcA,IAAE,aAAYC,GAAC,IAAE,MAAKC,KAAE,KAAK,IAAIF,GAAE,SAAOC,GAAE,WAAUD,GAAE,QAAMC,GAAE,QAAQ,KAAG;AAAE,WAAO,KAAK,IAAI,KAAK,WAAUC,EAAC;AAAA,EAAC;AAAA,EAAC,IAAI,YAAW;AAAC,WAAO,KAAK,IAAI,KAAK,cAAY,KAAK,KAAK,IAAE,QAAM,CAAC,KAAK;AAAA,EAAS;AAAA,EAAC,IAAI,mBAAkB;AAAC,UAAMF,KAAE,KAAK;AAAQ,WAAM,CAAC,EAAEA,MAAGA,cAAa,qBAAmB,CAACA,GAAE;AAAA,EAAQ;AAAA,EAAC,IAAI,YAAW;AAAC,QAAG,KAAK,eAAa,KAAK,YAAY,QAAM;AAAG,eAAUA,MAAK,GAAE;AAAC,YAAMC,KAAE,OAAKD,MAAG,QAAMA,KAAE,OAAK;AAAK,UAAG,KAAK,IAAI,KAAK,OAAOA,EAAC,IAAE,KAAK,QAAQA,EAAC,CAAC,IAAEC,GAAE,QAAM;AAAA,IAAE;AAAC,WAAM,EAAE,CAAC,KAAK,gBAAc,CAAC,KAAK,YAAY,EAAE;AAAA,EAAS;AAAA,EAAC,YAAYD,IAAEC,KAAE,CAAC,GAAEC,KAAE,CAAC,GAAE;AAAC,QAAIE;AAAE,QAAG,MAAMH,EAAC,GAAE,OAAO,eAAe,MAAK,kBAAiB,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,kBAAiB,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,eAAc,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,cAAa,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,OAAM,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,aAAY,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,MAAE,CAAC,GAAE,OAAO,eAAe,MAAK,gBAAe,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,MAAE,CAAC,GAAE,OAAO,eAAe,MAAK,eAAc,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,MAAE,CAAC,GAAE,OAAO,eAAe,MAAK,eAAc,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,MAAE,CAAC,GAAE,OAAO,eAAe,MAAK,UAAS,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,kBAAiB,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,CAAC,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,OAAM,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,OAAM,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,QAAO,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,OAAM,CAAC,GAAE,OAAO,eAAe,MAAK,YAAW,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,SAAQ,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAE,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,cAAa,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,MAAE,CAAC,GAAE,OAAO,eAAe,MAAK,aAAY,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,OAAM,CAAC,GAAE,OAAO,eAAe,MAAK,WAAU,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,OAAM,CAAC,GAAE,OAAO,eAAe,MAAK,WAAU,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,iBAAgB,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,OAAM,GAAE,QAAO,GAAE,YAAW,GAAE,aAAY,EAAC,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,eAAc,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,KAAI,GAAE,OAAM,GAAE,QAAO,GAAE,MAAK,GAAE,WAAU,GAAE,YAAW,GAAE,UAAS,GAAE,WAAU,GAAE,OAAM,GAAE,QAAO,EAAC,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,aAAY,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,GAAE,GAAE,GAAE,GAAE,KAAI,GAAE,MAAK,GAAE,MAAK,EAAC,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,cAAa,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,GAAE,GAAE,GAAE,GAAE,MAAK,EAAC,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,WAAU,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,OAAO,OAAO,CAAC,GAAE,CAAC,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,UAAS,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,OAAO,OAAO,CAAC,GAAE,CAAC,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,YAAW,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,EAAC,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,cAAa,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,MAAE,CAAC,GAAE,CAACD,GAAE,OAAM,IAAI,MAAM,6BAA6B;AAAE,SAAK,YAAUA,IAAE,KAAK,YAAY,GAAE,KAAK,cAAc,OAAO,OAAO,OAAO,OAAO,CAAC,GAAE,GAAE,OAAO,GAAEE,EAAC,CAAC,GAAE,KAAK,KAAK,eAAe,GAAE,KAAK,KAAK,MAAM;AAAE,UAAMG,KAAE,KAAK;AAAQ,QAAGA,GAAE,iBAAiB,QAAO,KAAK,MAAM,GAAEA,GAAE,iBAAiB,SAAQ,KAAK,OAAO,GAAE,KAAK,kBAAiB;AAAC,UAAG,KAAK,OAAO,SAAS,GAAE;AAAC,QAAAL,GAAE,UAAU,IAAI,KAAK,GAAG,WAAW,CAAC;AAAE,cAAMC,KAAE,EAAE,CAAC;AAAE,SAACD,GAAE,SAASK,EAAC,KAAGA,GAAE,yBAAyB,qBAAmB,KAAK,UAAQL,GAAE,YAAYC,EAAC,IAAE,KAAK,WAAS,UAAQG,KAAEC,GAAE,kBAAgB,WAASD,KAAE,SAAOA,GAAE,aAAaH,IAAEI,EAAC,MAAI;AAAA,MAAI;AAAC,WAAK,KAAK,YAAY;AAAA,IAAC,MAAM,gBAAgB,MAAI;AAAC,WAAK,OAAO;AAAA,IAAC,CAAE;AAAA,EAAC;AAAA,EAAC,cAAa;AAAC,UAAK,EAAC,WAAUL,GAAC,IAAE,MAAKC,KAAE,KAAK,GAAG,CAAC;AAAE,QAAIC,KAAE,KAAK,OAAO,CAAC,KAAGF,GAAE,cAAc,IAAIC,EAAC,EAAE;AAAE,QAAGC,OAAIA,KAAEF,GAAE,cAAc,aAAa,KAAGA,GAAE,mBAAkBE,MAAG,EAAEA,IAAED,EAAC,IAAGC,cAAa,uBAAqBA,KAAEA,GAAE,cAAc,KAAK,IAAG,CAACA,GAAE,OAAM,IAAI,MAAM,kBAAkB;AAAE,SAAK,UAAQA;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,UAAK,EAAC,SAAQF,IAAE,WAAUC,IAAE,OAAMC,GAAC,IAAE;AAAK,IAAAF,OAAIA,GAAE,OAAO,GAAE,KAAK,UAAQ,OAAM,KAAK,OAAO,SAAS,KAAGC,GAAE,UAAU,OAAO,KAAK,GAAG,WAAW,CAAC,GAAE,KAAK,KAAK,WAAW,GAAEC,OAAI,EAAE,OAAK,KAAK,OAAO,IAAE,KAAK,cAAc;AAAA,EAAC;AAAA,EAAC,UAAS;AAAC,SAAK,UAAQ,EAAE,YAAU,KAAK,YAAU,KAAK,QAAQ,OAAO,GAAE,KAAK,UAAQ,OAAM,KAAK,KAAK,GAAE,KAAK,aAAa,GAAE,KAAK,QAAM,EAAE,OAAM,KAAK,KAAK,OAAO;AAAA,EAAE;AAAA,EAAC,aAAaF,IAAE;AAAC,UAAK,EAAC,WAAUC,IAAE,aAAYC,IAAE,YAAWC,IAAE,UAASC,IAAE,UAASC,GAAC,IAAE;AAAK,QAAIC,KAAED;AAAE,YAAOL,IAAE;AAAA,MAAC,KAAI;AAAY,QAAAM,KAAEJ,KAAEG,KAAE,OAAID,KAAEC,MAAGD,KAAEC;AAAE;AAAA,MAAM,KAAI;AAAc,QAAAC,KAAEJ,KAAEG,KAAE,OAAIF,KAAEE,MAAGF,KAAEE;AAAE;AAAA,MAAM,KAAI;AAAa,QAAAC,KAAEJ,KAAEG,KAAE,OAAIJ,KAAEI,MAAGJ,KAAEI;AAAE;AAAA,MAAM,KAAI;AAAc,YAAIL,KAAE,CAAC,GAAEC,IAAEG,EAAC,EAAE,KAAM,CAACJ,IAAEC,OAAID,KAAEC,EAAE,GAAEM,KAAEP,GAAE,UAAW,CAAAA,OAAGA,KAAEE,KAAE,IAAK;AAAE,QAAAI,KAAEN,GAAEO,EAAC,KAAG;AAAA,IAAC;AAAC,WAAOD;AAAA,EAAC;AAAA,EAAC,iBAAgB;AAAC,QAAIN;AAAE,UAAMC,KAAE,MAAI;AAAC,YAAK,EAAC,WAAUD,IAAE,eAAcC,GAAC,IAAE;AAAK,aAAO,KAAK,IAAIA,GAAE,QAAMD,GAAE,sBAAsB,EAAE,KAAK,IAAE,OAAI,KAAK,IAAIC,GAAE,SAAOD,GAAE,sBAAsB,EAAE,MAAM,IAAE;AAAA,IAAE;AAAE,SAAK,kBAAgB,WAAS,OAAO,mBAAiB,KAAK,iBAAe,IAAI,eAAgB,MAAI;AAAC,WAAK,gBAAcC,GAAE,KAAG,KAAK,SAAS,GAAE,KAAK,aAAW,KAAK,cAAY,WAAY,MAAI;AAAC,QAAAA,GAAE,KAAG,KAAK,SAAS,GAAE,KAAK,cAAY;AAAA,MAAI,GAAG,GAAG,MAAI,KAAK,gBAAc,aAAa,KAAK,WAAW,GAAE,KAAK,cAAY;AAAA,IAAM,CAAE,IAAG,UAAQD,KAAE,KAAK,mBAAiB,WAASA,MAAGA,GAAE,QAAQ,KAAK,SAAS;AAAA,EAAC;AAAA,EAAC,iBAAgB;AAAC,QAAIA;AAAE,cAAQA,KAAE,KAAK,mBAAiB,WAASA,MAAGA,GAAE,WAAW;AAAA,EAAC;AAAA,EAAC,eAAc;AAAC,UAAK,EAAC,WAAUA,GAAC,IAAE;AAAK,IAAAA,GAAE,iBAAiB,SAAQ,KAAK,SAAQ,EAAC,SAAQ,OAAG,SAAQ,MAAE,CAAC,GAAEA,GAAE,iBAAiB,SAAQ,KAAK,SAAQ,EAAC,SAAQ,MAAE,CAAC,GAAE,KAAK,iBAAe,IAAI,EAAEA,IAAE,EAAC,OAAM,KAAK,eAAc,MAAK,KAAK,eAAc,KAAI,KAAK,YAAW,CAAC,GAAE,SAAS,iBAAiB,GAAE,KAAK,WAAW;AAAA,EAAC;AAAA,EAAC,eAAc;AAAC,QAAIA;AAAE,UAAK,EAAC,WAAUC,GAAC,IAAE;AAAK,IAAAA,GAAE,oBAAoB,SAAQ,KAAK,SAAQ,EAAC,SAAQ,OAAG,SAAQ,MAAE,CAAC,GAAEA,GAAE,oBAAoB,SAAQ,KAAK,SAAQ,EAAC,SAAQ,MAAE,CAAC,GAAE,UAAQD,KAAE,KAAK,mBAAiB,WAASA,MAAGA,GAAE,KAAK,GAAE,KAAK,iBAAe,MAAK,SAAS,oBAAoB,GAAE,KAAK,WAAW,GAAE,SAAS,oBAAoB,WAAU,KAAK,WAAU,IAAE,GAAE,KAAK,eAAa,aAAa,KAAK,UAAU,GAAE,KAAK,aAAW,OAAM,KAAK,gBAAc,aAAa,KAAK,WAAW,GAAE,KAAK,cAAY;AAAA,EAAK;AAAA,EAAC,UAAS;AAAC,SAAK,eAAe;AAAE,UAAMA,KAAE,KAAK,UAASC,KAAE,KAAK,OAAO,aAAa;AAAE,eAAUC,MAAK,EAAE,CAAAF,MAAG,KAAK,SAASE,EAAC,KAAG,IAAEF,IAAEC,MAAG,CAAC,KAAK,cAAY,KAAK,SAASC,EAAC,IAAE,KAAK,IAAI,KAAK,IAAI,KAAK,SAASA,EAAC,GAAED,EAAC,GAAE,KAAGA,EAAC,IAAG,KAAK,QAAQC,EAAC,KAAG,KAAK,SAASA,EAAC,KAAG,KAAK,QAAQA,EAAC,IAAE,KAAK,OAAOA,EAAC;AAAE,SAAK,aAAa,GAAE,KAAK,aAAa,GAAE,CAAC,KAAK,aAAW,KAAK,aAAW,KAAK,MAAI,sBAAuB,MAAI,KAAK,QAAQ,CAAE,IAAE,KAAK,KAAK,SAAS;AAAA,EAAC;AAAA,EAAC,iBAAgB;AAAC,eAAUF,MAAK,EAAE,SAAMA,MAAG,KAAK,eAAa,QAAMA,MAAG,KAAK,gBAAc,KAAK,SAASA,EAAC,KAAG,KAAG,IAAE,KAAK,YAAU,MAAI,KAAK,OAAOA,EAAC,IAAE,KAAK,QAAQA,EAAC;AAAA,EAAG;AAAA,EAAC,YAAYA,KAAE,GAAEC,KAAE,GAAE;AAAC,UAAK,EAAC,SAAQC,GAAC,IAAE,MAAKC,KAAED,GAAE,IAAEF,IAAEI,KAAEF,GAAE,IAAED,IAAEI,KAAE,KAAK,UAAU,GAAE,EAAC,GAAEC,IAAE,GAAEC,GAAC,IAAEF,IAAEG,KAAEF,GAAE,KAAIG,KAAEH,GAAE,KAAII,KAAEH,GAAE,KAAII,KAAEJ,GAAE;AAAI,QAAIK,KAAE,GAAEC,KAAE;AAAE,WAAOL,OAAI,IAAE,KAAGL,KAAEK,KAAEI,KAAEJ,KAAEL,KAAEM,OAAI,IAAE,KAAGN,KAAEM,OAAIG,KAAEH,KAAEN,KAAGO,OAAI,IAAE,KAAGN,KAAEM,KAAEG,KAAEH,KAAEN,KAAEO,OAAI,IAAE,KAAGP,KAAEO,OAAIE,KAAEF,KAAEP,KAAG,KAAK,IAAIQ,EAAC,IAAE,SAAOA,KAAE,IAAG,KAAK,IAAIC,EAAC,IAAE,SAAOA,KAAE,IAAG,OAAO,OAAO,OAAO,OAAO,CAAC,GAAER,EAAC,GAAE,EAAC,OAAMO,IAAE,OAAMC,IAAE,UAAS,CAACD,MAAG,CAACC,GAAC,CAAC;AAAA,EAAC;AAAA,EAAC,oBAAmB;AAAC,UAAK,EAAC,QAAOb,GAAC,IAAE,MAAK,EAAC,GAAEC,IAAE,GAAEC,GAAC,IAAE,KAAK,UAAU;AAAE,IAAAD,GAAE,QAAM,IAAE,MAAID,GAAE,IAAE,KAAK,IAAIA,GAAE,GAAEC,GAAE,GAAG,IAAGA,GAAE,QAAM,IAAE,MAAID,GAAE,IAAE,KAAK,IAAIA,GAAE,GAAEC,GAAE,GAAG,IAAGC,GAAE,QAAM,IAAE,MAAIF,GAAE,IAAE,KAAK,IAAIA,GAAE,GAAEE,GAAE,GAAG,IAAGA,GAAE,QAAM,IAAE,MAAIF,GAAE,IAAE,KAAK,IAAIA,GAAE,GAAEE,GAAE,GAAG;AAAA,EAAE;AAAA,EAAC,oBAAoBF,KAAE,KAAK,SAAQ;AAAC,UAAK,EAAC,SAAQC,IAAE,aAAYC,GAAC,IAAE,MAAK,EAAC,UAASC,IAAE,WAAUC,IAAE,WAAUC,IAAE,YAAWC,GAAC,IAAEJ;AAAE,QAAIK,KAAEF,IAAEG,KAAEF;AAAE,QAAG,KAAK,OAAO,MAAM,KAAG,MAAI,KAAK,OAAM;AAAC,YAAMJ,KAAE,EAAED,cAAa,sBAAoB,WAAS,OAAO,iBAAiBA,EAAC,EAAE,YAAU,WAAS,OAAO,iBAAiBA,EAAC,EAAE,YAAWQ,KAAEP,KAAEG,KAAEF,IAAEO,KAAER,KAAEI,KAAEF,IAAEO,KAAE,KAAK,UAAUX,EAAC,GAAEY,KAAE,IAAI,SAAS,GAAE,CAAC,EAAE,gBAAgBD,EAAC,GAAEE,KAAE,IAAI,SAAS,IAAEJ,IAAE,CAAC,EAAE,gBAAgBE,EAAC,GAAEG,KAAE,IAAI,SAAS,IAAEL,IAAE,IAAEC,EAAC,EAAE,gBAAgBC,EAAC,GAAEI,KAAE,IAAI,SAAS,GAAE,IAAEL,EAAC,EAAE,gBAAgBC,EAAC,GAAEK,KAAE,KAAK,IAAIF,GAAE,IAAEF,GAAE,CAAC,GAAEK,KAAE,KAAK,IAAIH,GAAE,IAAEF,GAAE,CAAC,GAAEM,KAAE,KAAK,IAAIH,GAAE,IAAEF,GAAE,CAAC,GAAEM,KAAE,KAAK,IAAIJ,GAAE,IAAEF,GAAE,CAAC;AAAE,MAAAN,KAAE,KAAK,IAAIS,IAAEE,EAAC,GAAEV,KAAE,KAAK,IAAIS,IAAEE,EAAC;AAAA,IAAC;AAAC,WAAM,EAAC,cAAaZ,IAAE,eAAcC,GAAC;AAAA,EAAC;AAAA,EAAC,eAAc;AAAC,QAAG,KAAK,gBAAc,KAAK,cAAY,KAAK,YAAU,KAAG,KAAK,cAAY,KAAK,MAAM,QAAO,KAAK,cAAY,OAAG,MAAK,KAAK,cAAY;AAAI,UAAK,EAAC,QAAOR,GAAC,IAAE,MAAK,EAAC,GAAEC,IAAE,GAAEC,IAAE,OAAMC,IAAE,OAAMC,GAAC,IAAE,KAAK,YAAY;AAAE,UAAMC,KAAE,KAAK,OAAO,aAAa;AAAE,QAAIC,KAAE,KAAK,SAAS,GAAEC,KAAE,KAAK,SAAS;AAAE,UAAIJ,MAAG,KAAK,cAAY,MAAGA,KAAEG,MAAG,IAAEA,MAAG,OAAIH,MAAGG,KAAE,OAAIH,IAAEF,GAAE,QAAM,IAAE,MAAI,KAAK,OAAO,IAAE,KAAK,IAAID,GAAE,GAAEC,GAAE,GAAG,IAAGA,GAAE,QAAM,IAAE,MAAI,KAAK,OAAO,IAAE,KAAK,IAAID,GAAE,GAAEC,GAAE,GAAG,KAAII,OAAIC,KAAE,KAAK,IAAI,KAAK,IAAIA,IAAED,EAAC,GAAE,KAAGA,EAAC,MAAI,KAAK,cAAY,OAAG,MAAID,MAAG,KAAK,cAAY,MAAGA,KAAEG,MAAG,IAAEA,MAAG,OAAIH,MAAGG,KAAE,OAAIH,IAAEF,GAAE,QAAM,IAAE,MAAI,KAAK,OAAO,IAAE,KAAK,IAAIF,GAAE,GAAEE,GAAE,GAAG,IAAGA,GAAE,QAAM,IAAE,MAAI,KAAK,OAAO,IAAE,KAAK,IAAIF,GAAE,GAAEE,GAAE,GAAG,KAAIG,OAAIE,KAAE,KAAK,IAAI,KAAK,IAAIA,IAAEF,EAAC,GAAE,KAAGA,EAAC,MAAI,KAAK,cAAY,OAAG,KAAK,gBAAc,KAAK,SAAS,IAAEC,KAAG,KAAK,gBAAc,KAAK,SAAS,IAAEC;AAAA,EAAE;AAAA,EAAC,SAAQ;AAAC,UAAK,EAAC,SAAQP,GAAC,IAAE,MAAKC,KAAE,IAAI,kBAAkB,OAAO,iBAAiBD,EAAC,EAAE,SAAS;AAAE,eAAUA,MAAK,EAAE,MAAK,QAAQA,EAAC,IAAE,KAAK,OAAOA,EAAC,IAAEC,GAAED,EAAC;AAAE,SAAK,cAAc,GAAE,KAAK,eAAe,GAAE,KAAK,aAAa,GAAE,KAAK,QAAM,EAAE,OAAM,KAAK,KAAK,OAAO;AAAA,EAAC;AAAA,EAAC,QAAQA,IAAE;AAAC,QAAIC;AAAE,gBAAUD,GAAE,QAAM,MAAIA,GAAE,WAAS,KAAK,WAAW,IAAE,GAAE,KAAK,WAAW,IAAE,IAAG,KAAK,eAAa,UAAQC,KAAE,KAAK,mBAAiB,WAASA,MAAGA,GAAE,MAAM,GAAE,KAAK,iBAAe,CAAC,GAAE,KAAK,eAAe;AAAG,UAAMC,KAAEF,GAAE;AAAO,QAAG,CAACE,MAAGF,GAAE,iBAAiB;AAAO,QAAGE,GAAE,aAAa,UAAU,EAAE,QAAOF,GAAE,eAAe,GAAE,KAAKA,GAAE,gBAAgB;AAAE,SAAI,MAAI;AAAC,YAAMA,KAAE,OAAO,aAAa;AAAE,aAAOA,MAAG,YAAUA,GAAE;AAAA,IAAI,GAAG,KAAG,CAACE,GAAE,QAAQ,QAAQ,EAAE;AAAO,UAAMC,KAAED,GAAE,QAAQ,uBAAuB,GAAEE,KAAEF,GAAE,QAAQ,uBAAuB,GAAEG,KAAEF,MAAGC,IAAEE,KAAED,MAAG,EAAEA,EAAC,IAAEA,GAAE,UAAQ;AAAK,QAAGC,IAAE;AAAC,YAAML,KAAEK,GAAE,eAAcJ,KAAEI,GAAE;AAAc,WAAIL,MAAGC,OAAIF,GAAE,eAAe,GAAEC,IAAE;AAAC,YAAID,KAAE,CAAC;AAAE,YAAG;AAAC,UAAAA,KAAE,KAAK,MAAMC,EAAC;AAAA,QAAC,SAAOD,IAAE;AAAC,qBAAS,QAAQ,KAAK,mCAAmC;AAAA,QAAC;AAAC,eAAO,KAAK,KAAK,YAAYA,EAAC;AAAA,MAAC;AAAC,UAAGE,GAAE,QAAO,MAAK,KAAKA,EAAC,KAAG,KAAKA,EAAC,EAAE;AAAA,IAAE;AAAC,QAAG,KAAK,IAAI,KAAK,WAAW,CAAC,IAAE,KAAG,KAAK,IAAI,KAAK,WAAW,CAAC,IAAE,EAAE,QAAOF,GAAE,eAAe,GAAE,KAAKA,GAAE,gBAAgB;AAAE,QAAGE,GAAE,QAAQ,iBAAiB,EAAE;AAAO,UAAMK,KAAE,KAAK,QAAQ,sBAAsB,GAAEC,KAAE,KAAK;AAAU,QAAGA,GAAE,QAAM,CAAC,KAAK,WAAW,MAAI,KAAK,IAAID,GAAE,IAAEC,GAAE,CAAC,IAAE,KAAG,KAAK,IAAID,GAAE,IAAEC,GAAE,CAAC,IAAE,GAAG;AAAO,SAAK,UAAU,OAAK;AAAE,UAAMC,KAAE,CAAAR,OAAG;AAAC,WAAK,OAAO,QAAOD,EAAC,KAAGC,MAAG,YAAU,OAAOA,MAAG,sEAAsE,KAAKA,EAAC,KAAG,cAAY,OAAO,KAAKA,EAAC,MAAID,GAAE,eAAe,GAAE,KAAKC,EAAC,EAAE,EAAC,OAAMD,GAAC,CAAC;AAAA,IAAE,GAAEU,KAAE,KAAK,OAAO,SAAQV,EAAC,GAAEW,KAAE,KAAK,OAAO,YAAWX,EAAC;AAAE,IAAAW,MAAG,KAAK,UAAS,KAAG,KAAK,WAAS,KAAK,aAAW,WAAY,MAAI;AAAC,YAAI,KAAK,UAAQ,KAAK,KAAK,SAAQX,EAAC,GAAE,CAACA,GAAE,oBAAkBU,MAAGD,GAAEC,EAAC,MAAI,KAAK,KAAK,YAAWV,EAAC,GAAEA,GAAE,oBAAkBS,GAAEE,EAAC,IAAG,KAAK,SAAO,GAAE,KAAK,aAAW;AAAA,IAAI,GAAG,GAAG,OAAK,KAAK,KAAK,SAAQX,EAAC,GAAE,CAACA,GAAE,oBAAkBU,MAAGD,GAAEC,EAAC;AAAA,EAAE;AAAA,EAAC,iBAAiBV,IAAE;AAAC,UAAMC,KAAE,KAAK,eAAe,OAAQ,CAAAD,OAAGA,GAAE,OAAK,KAAK,IAAI,IAAE,GAAI;AAAE,IAAAC,GAAE,KAAKD,EAAC,GAAE,KAAK,iBAAeC;AAAA,EAAC;AAAA,EAAC,cAAcD,IAAEC,IAAEC,IAAE;AAAC,QAAIC;AAAE,QAAG,UAAK,KAAK,OAAO,SAAQH,EAAC,EAAE,QAAM;AAAG,SAAK,MAAI,GAAE,KAAK,aAAW,EAAC,GAAE,GAAE,GAAE,GAAE,MAAK,EAAC,GAAE,KAAK,iBAAe,CAAC;AAAE,UAAMI,KAAE,KAAK,QAAQ,sBAAsB;AAAE,QAAG,KAAK,YAAU,EAAC,GAAEA,GAAE,GAAE,GAAEA,GAAE,GAAE,KAAIA,GAAE,KAAI,MAAKA,GAAE,MAAK,MAAK,KAAK,IAAI,EAAC,GAAE,KAAK,WAAW,QAAM;AAAG,QAAG,KAAK,YAAU,KAAG,KAAK,cAAY,EAAE,QAAOJ,GAAE,eAAe,GAAEA,GAAE,gBAAgB,GAAE;AAAG,UAAMK,KAAEL,GAAE,aAAa,EAAE,CAAC;AAAE,QAAG,CAACE,GAAE,QAAO;AAAC,UAAG,CAAC,YAAW,UAAS,SAAQ,UAAS,SAAQ,QAAQ,EAAE,SAASG,GAAE,QAAQ,KAAGA,GAAE,QAAQ,mHAAmH,EAAE,QAAM;AAAG,gBAAQF,KAAE,OAAO,aAAa,MAAI,WAASA,MAAGA,GAAE,gBAAgB;AAAA,IAAC;AAAC,QAAG,gBAAcH,GAAE,KAAK,EAAC,KAAI,QAAQ,EAAE,SAASK,GAAE,QAAQ,KAAGL,GAAE,eAAe;AAAA,aAAU,KAAK,IAAI,KAAK,SAAS,CAAC,IAAE,IAAG,QAAM;AAAG,WAAO,KAAK,OAAO,IAAE,KAAK,QAAQ,GAAE,KAAK,OAAO,IAAE,KAAK,QAAQ,GAAE,KAAK,KAAK,GAAE,KAAK,eAAa,KAAK,aAAW,MAAG,KAAK,iBAAiBC,EAAC,GAAE,KAAK,KAAK,cAAaD,EAAC,IAAG;AAAA,EAAE;AAAA,EAAC,cAAcC,IAAEE,IAAEC,IAAE;AAAC,QAAG,UAAK,KAAK,OAAO,SAAQH,EAAC,EAAE;AAAO,QAAG,CAAC,KAAK,WAAW;AAAO,QAAGE,GAAE,SAAO,KAAG,KAAK,iBAAe,EAAE,KAAK,WAAW,KAAG,EAAE,KAAK,QAAQ,EAAE;AAAO,QAAG,KAAK,KAAK,aAAYF,EAAC,GAAEA,GAAE,iBAAiB;AAAO,SAAK,iBAAiBE,GAAE,CAAC,CAAC;AAAE,UAAK,EAAC,SAAQE,GAAC,IAAE,MAAKC,KAAE,EAAEF,GAAE,CAAC,GAAEA,GAAE,CAAC,CAAC,GAAEG,KAAE,EAAEJ,GAAE,CAAC,GAAEA,GAAE,CAAC,CAAC;AAAE,QAAIK,KAAE,GAAEG,KAAE;AAAE,QAAGR,GAAE,SAAO,GAAE;AAAC,YAAMH,KAAEK,GAAE,sBAAsB;AAAE,MAAAG,KAAEF,GAAE,UAAQN,GAAE,OAAK,MAAGA,GAAE,OAAMW,KAAEL,GAAE,UAAQN,GAAE,MAAI,MAAGA,GAAE;AAAA,IAAM;AAAC,UAAMY,KAAE,EAAER,GAAE,CAAC,GAAEA,GAAE,CAAC,CAAC,GAAES,KAAE,EAAEV,GAAE,CAAC,GAAEA,GAAE,CAAC,CAAC;AAAE,QAAIW,KAAEF,KAAEC,KAAED,KAAE,GAAEG,KAAER,GAAE,UAAQD,GAAE,SAAQU,KAAET,GAAE,UAAQD,GAAE;AAAQ,SAAK,WAAW,KAAGS,IAAE,KAAK,WAAW,KAAGC,IAAE,KAAK,WAAW,OAAK,KAAK,IAAI,IAAE,KAAK,UAAU;AAAK,QAAIC,KAAE,EAAE,KAAK,WAAW,MAAI,EAAE,KAAK,QAAQ,KAAG,KAAK,OAAO,UAAU;AAAE,QAAGA,MAAG,CAAC,KAAK,WAAW,KAAG,SAAOA,MAAG,QAAMA,MAAG,gBAAchB,GAAE,MAAK;AAAC,UAAG,KAAK,IAAI,KAAK,WAAW,CAAC,IAAE,KAAG,KAAK,IAAI,KAAK,WAAW,CAAC,IAAE,EAAE,QAAO,KAAKA,GAAE,eAAe;AAAE,YAAMD,KAAE,KAAK,IAAI,MAAI,KAAK,MAAM,KAAK,WAAW,GAAE,KAAK,WAAW,CAAC,IAAE,KAAK,EAAE;AAAE,WAAK,aAAWA,KAAE,MAAIA,KAAE,MAAI,MAAI,KAAI,KAAK,WAAW,IAAE,GAAE,KAAK,WAAW,IAAE,GAAEe,KAAE,GAAEC,KAAE;AAAA,IAAC,MAAM,MAAK,aAAWC;AAAE,QAAG,EAAEhB,GAAE,QAAO,KAAK,OAAO,MAAIgB,KAAE,KAAI,KAAK,WAAW,IAAE,IAAGA,MAAG,SAAOA,MAAG,KAAK,eAAaA,MAAG,EAAE,KAAK,WAAW,MAAI,EAAE,KAAK,QAAQ,EAAE;AAAO,IAAAhB,GAAE,cAAYA,GAAE,eAAe,GAAE,KAAK,UAAU,UAAU,IAAI,KAAK,GAAG,YAAY,CAAC;AAAE,UAAMiB,KAAE,KAAK,YAAYH,IAAEC,EAAC;AAAE,SAAK,OAAO,YAAY,KAAG,QAAM,KAAK,eAAaE,GAAE,QAAM,KAAGH,KAAE,KAAGG,GAAE,QAAM,KAAGH,KAAE,OAAKA,MAAG,KAAK,IAAI,GAAE,MAAG,KAAK,IAAI,OAAI,KAAK,YAAY,WAASG,GAAE,KAAK,CAAC,IAAG,QAAM,KAAK,eAAaA,GAAE,QAAM,KAAGF,KAAE,KAAGE,GAAE,QAAM,KAAGF,KAAE,OAAKA,MAAG,KAAK,IAAI,GAAE,MAAG,KAAK,IAAI,OAAI,KAAK,YAAY,YAAUE,GAAE,KAAK,CAAC,OAAKA,GAAE,UAAQH,KAAE,IAAGG,GAAE,UAAQF,KAAE;AAAI,UAAMG,KAAE,KAAK,aAAYC,KAAE,KAAK,UAASC,KAAE,KAAK;AAAS,IAAAF,KAAE,MAAGC,OAAIN,KAAE,KAAK,IAAIA,IAAEM,EAAC,IAAGD,KAAE,MAAIE,OAAIP,KAAE,KAAK,IAAIA,IAAEO,EAAC,IAAG,QAAM,KAAK,cAAY,EAAEF,EAAC,MAAI,EAAEC,EAAC,MAAIL,KAAE,IAAG,QAAM,KAAK,cAAY,EAAEI,EAAC,MAAI,EAAEC,EAAC,MAAIJ,KAAE,IAAG,KAAK,YAAY,EAAC,SAAQR,IAAE,SAAQG,IAAE,MAAKI,IAAE,MAAKC,IAAE,OAAMF,IAAE,UAAS,KAAK,OAAO,cAAc,GAAE,cAAa,KAAE,CAAC;AAAA,EAAC;AAAA,EAAC,YAAYd,IAAEC,IAAEE,IAAE;AAAC,QAAGA,GAAE,OAAO,QAAO,KAAK,WAAW,IAAE,GAAE,KAAK,WAAW,IAAE,GAAE,MAAK,KAAK,iBAAe,CAAC;AAAG,SAAK,UAAU,UAAU,OAAO,KAAK,GAAG,YAAY,CAAC,GAAE,KAAK,eAAa,KAAK,iBAAiBF,EAAC,GAAE,KAAK,iBAAe,KAAK,YAAY,QAAM,KAAK,YAAY,WAAS,KAAG,KAAK,YAAY,SAAO,KAAK,YAAY,YAAU,MAAI,KAAK,iBAAe,CAAC,IAAG,EAAED,GAAE,QAAO,KAAK,OAAO,KAAG,QAAM,KAAK,eAAa,KAAK,iBAAe,CAAC,IAAG,KAAK,KAAK,YAAWA,EAAC,GAAE,KAAK,aAAW,OAAG,KAAK,aAAW,OAAG,KAAK,UAAQ,EAAE,YAAUA,GAAE,oBAAkB,KAAK,eAAe;AAAA,EAAG;AAAA,EAAC,iBAAgB;AAAC,QAAIC;AAAE,UAAMC,KAAE,KAAK;AAAU,SAAK,QAAM,qBAAqB,KAAK,GAAG,GAAE,KAAK,MAAI,OAAM,KAAK,cAAY,OAAG,KAAK,cAAY;AAAG,eAAUF,MAAK,EAAE,MAAK,SAASA,EAAC,IAAE;AAAE,SAAK,OAAO,IAAE,KAAK,QAAQ,GAAE,KAAK,OAAO,IAAE,KAAK,QAAQ,GAAE,EAAE,KAAK,WAAU,YAAY,GAAE,EAAE,KAAK,WAAU,cAAc,GAAE,KAAK,YAAU;AAAG,UAAK,EAAC,gBAAeG,GAAC,IAAE,MAAKC,KAAED,GAAE,CAAC,GAAEE,KAAEF,GAAEA,GAAE,SAAO,CAAC;AAAE,QAAIG,KAAE,GAAEC,KAAE,GAAEC,KAAE;AAAE,IAAAH,MAAGD,OAAIE,KAAED,GAAE,UAAQD,GAAE,SAAQG,KAAEF,GAAE,UAAQD,GAAE,SAAQI,KAAEH,GAAE,OAAKD,GAAE;AAAM,UAAMK,MAAG,UAAQR,KAAE,OAAO,mBAAiB,WAASA,KAAE,SAAOA,GAAE,UAAQ;AAAE,UAAIQ,OAAIH,MAAGG,IAAEF,MAAGE;AAAG,QAAIC,KAAE,GAAEC,KAAE,GAAEC,KAAE,GAAEC,KAAE,GAAEC,KAAE,KAAK,OAAO,eAAe;AAAE,UAAMC,KAAE,KAAK;AAAY,QAAGP,KAAE,GAAE;AAAC,MAAAI,KAAE,KAAK,IAAIN,EAAC,IAAE,IAAEA,MAAGE,KAAE,MAAI,GAAEK,KAAE,KAAK,IAAIN,EAAC,IAAE,IAAEA,MAAGC,KAAE,MAAI;AAAE,YAAMR,KAAE,KAAK,OAAO,aAAa;AAAE,MAAAA,OAAIY,KAAE,KAAK,IAAI,KAAK,IAAIA,IAAEZ,EAAC,GAAE,KAAGA,EAAC,GAAEa,KAAE,KAAK,IAAI,KAAK,IAAIA,IAAEb,EAAC,GAAE,KAAGA,EAAC;AAAA,IAAE;AAAC,IAAAY,OAAIF,KAAEE,MAAG,KAAG,IAAEE,MAAG,KAAID,OAAIF,KAAEE,MAAG,KAAG,IAAEC,MAAG,MAAK,QAAM,KAAK,OAAO,UAAU,KAAG,SAAO,KAAK,OAAO,UAAU,KAAG,QAAM,KAAK,cAAY,EAAEC,EAAC,MAAI,KAAK,cAAYL,KAAEE,KAAE,KAAI,QAAM,KAAK,OAAO,UAAU,KAAG,SAAO,KAAK,OAAO,UAAU,KAAG,QAAM,KAAK,cAAY,EAAEG,EAAC,MAAI,KAAK,cAAYJ,KAAEE,KAAE;AAAG,UAAMG,KAAE,KAAK,WAAW,GAAEE,KAAE,KAAK,WAAW,GAAEC,KAAE,KAAK,OAAO,kBAAkB,KAAG;AAAE,SAAK,IAAIH,EAAC,IAAEG,MAAG,KAAK,IAAID,EAAC,IAAEC,OAAIT,KAAEC,KAAE,GAAEC,KAAEC,KAAE,KAAI,KAAK,OAAO,MAAM,MAAIE,KAAE,KAAK,WAAS,QAAMA,KAAE,KAAK,WAAS,SAAOb,MAAG,CAACQ,MAAG,CAACC,QAAKG,KAAE,OAAK,KAAK,YAAY,EAAC,MAAKJ,IAAE,MAAKC,IAAE,UAASG,GAAC,CAAC,GAAE,KAAK,KAAK,SAAQF,IAAEC,IAAEG,IAAEE,EAAC;AAAA,EAAC;AAAA,EAAC,QAAQlB,IAAE;AAAC,QAAIC,KAAE,CAAC,CAACD,GAAE,UAAQ,GAAE,CAACA,GAAE,UAAQ,GAAE,CAACA,GAAE,UAAQ,CAAC,EAAE,OAAQ,SAASA,IAAEC,IAAE;AAAC,aAAO,KAAK,IAAIA,EAAC,IAAE,KAAK,IAAID,EAAC,IAAEC,KAAED;AAAA,IAAC,CAAE;AAAE,UAAME,KAAE,KAAK,IAAI,IAAG,KAAK,IAAI,GAAED,EAAC,CAAC;AAAE,QAAG,KAAK,KAAK,SAAQD,IAAEE,EAAC,GAAE,KAAK,YAAU,EAAE;AAAO,QAAGF,GAAE,iBAAiB;AAAO,UAAMG,KAAE,KAAK,OAAO,OAAO;AAAE,cAAQA,MAAGH,GAAE,eAAe,GAAE,KAAK,iBAAe,CAAC,KAAK,WAAW,KAAG,KAAK,YAAY,EAAC,MAAK,IAAE,CAACA,GAAE,QAAO,MAAK,IAAE,CAACA,GAAE,QAAO,QAAO,MAAE,CAAC,KAAG,WAASG,MAAG,UAAK,KAAK,OAAO,MAAM,KAAG,KAAK,cAAcH,EAAC;AAAA,EAAC;AAAA,EAAC,YAAYA,IAAE;AAAC,SAAK,aAAaA,EAAC;AAAA,EAAC;AAAA,EAAC,UAAUA,IAAE;AAAC,iBAAWA,GAAE,OAAK,KAAK,SAAS;AAAA,EAAC;AAAA,EAAC,WAAU;AAAC,SAAK,cAAc,GAAE,KAAK,YAAY,EAAE,YAAU,KAAK,YAAY;AAAA,EAAC;AAAA,EAAC,eAAc;AAAC,SAAK,KAAK,iBAAiB;AAAE,UAAK,EAAC,SAAQC,IAAE,QAAOC,IAAE,SAAQC,IAAE,aAAYC,GAAC,IAAE,MAAKC,KAAE,OAAO,OAAO,CAAC,GAAE,CAAC;AAAE,eAAUF,MAAK,GAAE;AAAC,YAAMC,KAAE,OAAKD,MAAG,QAAMA,KAAE,IAAE;AAAE,MAAAE,GAAEF,EAAC,IAAE,EAAEF,GAAEE,EAAC,GAAEC,EAAC,GAAE,KAAK,IAAIF,GAAEC,EAAC,IAAEF,GAAEE,EAAC,CAAC,KAAG,OAAKA,MAAG,QAAMA,KAAE,OAAI,UAAQF,GAAEE,EAAC,IAAED,GAAEC,EAAC;AAAA,IAAE;AAAC,QAAG,EAAC,GAAEG,IAAE,GAAEC,IAAE,GAAEC,IAAE,GAAEC,IAAE,GAAEC,IAAE,GAAEC,GAAC,IAAEN,IAAEO,KAAE,UAAUN,EAAC,KAAKC,EAAC,KAAKC,EAAC,KAAKC,EAAC,KAAKC,EAAC,KAAKC,EAAC,KAAIE,KAAEV,GAAE,yBAAyB,qBAAmBA,GAAE,gBAAcA;AAAE,QAAG,KAAK,OAAO,iBAAiB,MAAIU,KAAEA,GAAE,iBAAeA,KAAGA,GAAE,MAAM,cAAYD,GAAE;AAAO,IAAAC,GAAE,MAAM,YAAUD;AAAE,UAAK,EAAC,cAAaE,IAAE,eAAcC,GAAC,IAAE,KAAK,oBAAoB;AAAE,IAAAX,GAAE,QAAMU,IAAEV,GAAE,SAAOW,IAAE,KAAK,KAAK,gBAAgB;AAAA,EAAC;AAAA,EAAC,cAAcd,KAAE,OAAG;AAAC,QAAIC;AAAE,QAAG,CAAC,QAAM,KAAK,UAAQ,EAAE,QAAQ;AAAO,QAAG,KAAK,iBAAiB;AAAO,UAAMC,KAAE,KAAK,IAAI,IAAG,UAAQD,KAAE,OAAO,mBAAiB,WAASA,KAAE,SAAOA,GAAE,UAAQ,CAAC,GAAE,EAAC,WAAUE,IAAE,SAAQC,GAAC,IAAE,MAAKC,KAAED,cAAa,kBAAiBE,KAAEH,GAAE,sBAAsB,GAAEI,KAAE,iBAAiB,KAAK,SAAS;AAAE,QAAIC,KAAEF,GAAE,QAAMJ,IAAEO,KAAEH,GAAE,SAAOJ;AAAE,UAAMQ,KAAE,WAAWH,GAAE,UAAU,IAAE,WAAWA,GAAE,aAAa,GAAEI,KAAEH,MAAG,WAAWD,GAAE,WAAW,IAAE,WAAWA,GAAE,YAAY,IAAGK,KAAEH,KAAEC;AAAE,SAAK,gBAAc,EAAC,OAAMF,IAAE,QAAOC,IAAE,YAAWE,IAAE,aAAYC,GAAC;AAAE,UAAMC,KAAE,WAAWT,GAAE,QAAQ,SAAO,EAAE,MAAI,CAAAL,OAAG;AAAC,UAAIC,KAAE;AAAE,aAAOA,KAAED,cAAa,mBAAiBA,GAAE,eAAaA,cAAa,aAAWA,GAAE,MAAM,QAAQ,QAAM,KAAK,IAAIA,GAAE,aAAYA,GAAE,WAAW,GAAEC,MAAG;AAAA,IAAC,GAAGI,EAAC,GAAEU,KAAE,WAAWV,GAAE,QAAQ,UAAQ,EAAE,MAAI,CAAAL,OAAG;AAAC,UAAIC,KAAE;AAAE,aAAOA,KAAED,cAAa,mBAAiBA,GAAE,gBAAcA,cAAa,aAAWA,GAAE,OAAO,QAAQ,QAAM,KAAK,IAAIA,GAAE,cAAaA,GAAE,YAAY,GAAEC,MAAG;AAAA,IAAC,GAAGI,EAAC;AAAE,QAAIY,KAAE,KAAK,OAAO,SAAQH,EAAC,KAAG,GAAEI,KAAE,KAAK,OAAO,UAASH,EAAC,KAAG;AAAE,UAAMI,KAAEF,OAAI,GAAEG,KAAEF,OAAI;AAAE,gBAAU,OAAOD,OAAIA,KAAEH,KAAG,YAAU,OAAOI,OAAIA,KAAEH,KAAGI,OAAIF,KAAEH,MAAGI,KAAEH,MAAIK,OAAIF,KAAEH,MAAGD,KAAEG;AAAI,QAAII,KAAEhB,GAAE,yBAAyB,qBAAmBA,GAAE,gBAAcA;AAAE,SAAK,OAAO,iBAAiB,MAAIgB,KAAEA,GAAE,iBAAeA;AAAG,UAAMC,KAAED,GAAE,aAAa,OAAO,KAAG;AAAG,IAAAA,GAAE,MAAM,YAAY,aAAY,QAAO,WAAW,GAAEf,OAAIe,GAAE,MAAM,QAAM,IAAGA,GAAE,MAAM,SAAO,KAAIA,GAAE;AAAa,UAAME,KAAElB,GAAE,sBAAsB;AAAE,QAAImB,KAAED,GAAE,QAAMpB,IAAEsB,KAAEF,GAAE,SAAOpB,IAAEuB,KAAEF,IAAEG,KAAEF;AAAE,IAAAD,KAAE,KAAK,IAAIA,IAAEP,EAAC,GAAEQ,KAAE,KAAK,IAAIA,IAAEP,EAAC,GAAEZ,KAAG,EAAC,OAAMkB,IAAE,QAAOC,GAAC,KAAG,CAACzB,IAAEC,IAAEC,IAAEC,OAAI;AAAC,YAAMC,KAAEF,KAAEF,IAAEK,KAAEF,KAAEF,IAAEK,KAAE,KAAK,IAAIF,IAAEC,EAAC;AAAE,aAAM,EAAC,OAAML,MAAGM,IAAE,QAAOL,MAAGK,GAAC;AAAA,IAAC,GAAGW,IAAEC,IAAEM,IAAEC,EAAC,KAAID,KAAE,KAAK,IAAIA,IAAEP,EAAC,GAAEQ,KAAE,KAAK,IAAIA,IAAEP,EAAC;AAAG,QAAIU,KAAE,OAAID,KAAEF,KAAGI,KAAE,OAAIH,KAAEF;AAAG,SAAK,cAAY,OAAO,OAAO,OAAO,OAAO,CAAC,GAAE,KAAK,WAAW,GAAE,EAAC,KAAID,GAAE,MAAIhB,GAAE,MAAIqB,IAAE,QAAOrB,GAAE,SAAOgB,GAAE,SAAOK,IAAE,MAAKL,GAAE,OAAKhB,GAAE,OAAKsB,IAAE,OAAMtB,GAAE,QAAMgB,GAAE,QAAMM,IAAE,UAASL,IAAE,WAAUC,IAAE,OAAMD,IAAE,QAAOC,IAAE,WAAUR,IAAE,YAAWC,GAAC,CAAC,GAAEG,GAAE,MAAM,UAAQC,IAAEhB,OAAIe,GAAE,MAAM,QAAM,GAAGG,EAAC,MAAKH,GAAE,MAAM,SAAO,GAAGI,EAAC,OAAM,KAAK,aAAa,GAAE,SAAKxB,MAAG,KAAK,KAAK,SAAS,GAAE,KAAK,iBAAe,EAAE,KAAK,WAAW,IAAE,EAAE,KAAK,QAAQ,IAAE,KAAK,OAAO,KAAK,UAAS,EAAC,UAAS,EAAC,CAAC,IAAE,KAAK,cAAY,KAAK,WAAS,KAAK,OAAO,KAAK,UAAS,EAAC,UAAS,EAAC,CAAC,IAAE,KAAK,UAAQ,EAAE,QAAM,KAAK,YAAY,EAAE,YAAU,KAAK,YAAY,IAAG,KAAK,eAAe;AAAA,EAAC;AAAA,EAAC,kBAAiB;AAAC,UAAK,EAAC,cAAaA,IAAE,eAAcC,GAAC,IAAE,KAAK,oBAAoB,KAAK,MAAM,GAAE,EAAC,aAAYC,IAAE,YAAWC,GAAC,IAAE,MAAK,EAAC,UAASC,IAAE,WAAUC,GAAC,IAAE,KAAK;AAAY,QAAIC,KAAE,GAAEC,KAAE,GAAEC,KAAE,GAAEC,KAAE;AAAE,UAAMC,KAAE,KAAK,OAAO,UAAU;AAAE,QAAG,SAAKA,MAAGP,MAAGO,OAAIP,GAAE,CAAAG,KAAE,KAAG,GAAEE,KAAE,IAAE,GAAED,KAAE,KAAG,GAAEE,KAAE,IAAE;AAAA,SAAM;AAAC,UAAG,EAAC,eAAcN,IAAE,aAAYO,GAAC,IAAE,MAAKC,KAAE,EAAEP,KAAEF,IAAE,CAAC,GAAEU,KAAE,EAAEP,KAAEH,IAAE,CAAC,GAAE,EAAC,YAAWW,IAAE,aAAYC,GAAC,IAAEX;AAAE,UAAGA,GAAE,UAAQQ,OAAIE,KAAEV,GAAE,QAAOA,GAAE,UAAQS,OAAIE,KAAEX,GAAE,SAAQH,KAAEa,IAAE;AAAC,QAAAL,KAAE,OAAIR,KAAEa,KAAGP,KAAE,KAAGE;AAAE,YAAIT,KAAE,OAAIW,GAAE,QAAMA,GAAE;AAAM,QAAAJ,MAAGP,IAAES,MAAGT;AAAA,MAAC;AAAC,UAAGK,KAAES,MAAGb,KAAEa,OAAIP,MAAG,OAAIF,KAAES,KAAGL,MAAG,OAAIJ,KAAES,MAAIZ,KAAEa,IAAE;AAAC,QAAAL,KAAE,OAAIR,KAAEa,KAAGP,KAAE,KAAGE;AAAE,YAAIV,KAAE,OAAIW,GAAE,SAAOA,GAAE;AAAK,QAAAH,MAAGR,IAAEU,MAAGV;AAAA,MAAC;AAAC,MAAAM,KAAES,MAAGb,KAAEa,OAAIR,MAAG,OAAID,KAAES,KAAGN,MAAG,OAAIH,KAAES;AAAA,IAAG;AAAC,WAAM,EAAC,GAAE,EAAC,KAAIR,IAAE,KAAIE,GAAC,GAAE,GAAE,EAAC,KAAID,IAAE,KAAIE,GAAC,EAAC;AAAA,EAAC;AAAA,EAAC,YAAW;AAAC,UAAMV,KAAE,KAAK,OAAO,QAAQ;AAAE,WAAOA,OAAI,IAAEA,KAAE,KAAK,gBAAgB;AAAA,EAAC;AAAA,EAAC,iBAAgB;AAAC,UAAMC,KAAE,MAAKC,KAAED,GAAE,WAAU,EAAC,SAAQE,IAAE,aAAYC,IAAE,aAAYE,IAAE,UAASC,GAAC,IAAEN;AAAE,QAAIO,KAAED,IAAEE,KAAER,GAAE,OAAO,OAAO,KAAG;AAAG,IAAAQ,OAAID,KAAEP,GAAE,aAAaQ,EAAC;AAAG,QAAIC,KAAET,GAAE,UAAU,GAAEU,KAAEV,GAAE,WAAW,GAAEW,KAAET,OAAI,KAAG,CAAC,CAAC,KAAK,OAAO,OAAO,GAAEU,KAAEF,MAAGC;AAAE,QAAGA,OAAI,EAAEN,EAAC,IAAE,EAAEC,EAAC,KAAG,CAAC,KAAK,kBAAgBM,KAAE,QAAK,EAAET,GAAE,OAAM,CAAC,IAAE,EAAEA,GAAE,UAAS,CAAC,KAAG,EAAEA,GAAE,QAAO,CAAC,IAAE,EAAEA,GAAE,WAAU,CAAC,OAAKS,KAAE,QAAK,EAAET,GAAE,QAAME,IAAE,CAAC,IAAE,EAAEF,GAAE,UAAS,CAAC,MAAIS,KAAE,QAAIV,OAAI,MAAIU,KAAE,QAAI,EAAEX,IAAE,KAAK,GAAG,aAAa,GAAEW,EAAC,GAAE,CAAC,KAAK,OAAO,MAAM,EAAE;AAAO,QAAIC,KAAEJ,MAAG,EAAEF,EAAC,IAAE,EAAEF,EAAC,GAAES,KAAE,CAACD,MAAG,CAACD,MAAGF,MAAG,EAAEH,EAAC,IAAE,EAAEF,EAAC;AAAE,MAAEJ,IAAE,KAAK,GAAG,WAAW,GAAEY,EAAC,GAAE,EAAEZ,IAAE,KAAK,GAAG,YAAY,GAAEa,EAAC;AAAE,eAAUf,MAAKE,GAAE,iBAAiB,uBAAuB,GAAE;AAAC,UAAID,KAAE,OAAGC,KAAE;AAAG,cAAOF,GAAE,QAAQ,eAAc;AAAA,QAAC,KAAI;AAAS,UAAAU,KAAET,KAAE,OAAGC,KAAE;AAAG;AAAA,QAAM,KAAI;AAAU,UAAAS,KAAEV,KAAE,OAAGC,KAAE;AAAG;AAAA,QAAM,KAAI;AAAA,QAAa,KAAI;AAAc,UAAAQ,MAAGC,KAAEV,KAAE,OAAGC,KAAE;AAAG,gBAAMC,KAAEH,GAAE,cAAc,GAAG;AAAE,UAAAG,OAAIA,GAAE,MAAM,UAAQO,KAAE,KAAG;AAAA,MAAO;AAAC,MAAAT,MAAGD,GAAE,gBAAgB,UAAU,GAAEA,GAAE,gBAAgB,UAAU,KAAGE,OAAIF,GAAE,aAAa,YAAW,EAAE,GAAEA,GAAE,aAAa,YAAW,IAAI;AAAA,IAAE;AAAA,EAAC;AAAA,EAAC,MAAM,EAAC,GAAEA,KAAE,KAAK,OAAO,GAAE,GAAEC,KAAE,KAAK,OAAO,GAAE,OAAMC,KAAE,KAAK,aAAY,UAASC,KAAE,KAAK,OAAO,UAAU,GAAE,OAAMC,KAAE,GAAE,SAAQC,KAAE,GAAE,SAAQC,KAAE,GAAE,OAAMC,KAAE,OAAG,OAAMC,KAAE,OAAG,cAAaC,KAAE,MAAE,GAAE;AAAC,SAAK,UAAQ,EAAE,WAAS,KAAK,YAAY,EAAC,MAAKT,KAAE,KAAK,OAAO,GAAE,MAAKC,KAAE,KAAK,OAAO,GAAE,OAAMC,KAAE,KAAK,aAAY,OAAME,IAAE,SAAQC,IAAE,SAAQC,IAAE,UAASH,IAAE,OAAMI,IAAE,OAAMC,IAAE,cAAaC,GAAC,CAAC;AAAA,EAAC;AAAA,EAAC,YAAY,EAAC,MAAKR,KAAE,GAAE,MAAKC,KAAE,GAAE,OAAMC,KAAE,GAAE,OAAMC,KAAE,GAAE,SAAQC,KAAE,CAAC,KAAK,QAAQ,GAAE,SAAQC,KAAE,CAAC,KAAK,QAAQ,GAAE,UAASC,KAAE,KAAK,OAAO,UAAU,GAAE,OAAMC,KAAE,OAAG,OAAMC,KAAE,OAAG,cAAaC,KAAE,OAAG,QAAOC,KAAE,KAAK,OAAO,QAAQ,EAAC,GAAE;AAAC,UAAMC,KAAE,KAAK;AAAM,QAAGA,OAAI,EAAE,QAAQ;AAAO,SAAK,QAAM,qBAAqB,KAAK,GAAG,GAAE,KAAK,MAAI,OAAM,KAAK,WAASL,MAAG,GAAE,KAAK,eAAaG;AAAE,UAAK,EAAC,SAAQG,GAAC,IAAE,MAAKC,KAAED,GAAE,GAAEE,KAAEF,GAAE,GAAEK,KAAE,KAAK,UAAU,KAAK,MAAM;AAAE,QAAIC,KAAG,IAAI,YAAW,UAAUL,IAAEC,EAAC,EAAE,UAAUV,IAAEC,EAAC,EAAE,UAAUL,IAAEC,EAAC;AAAE,QAAG,KAAK,OAAO,MAAM,GAAE;AAAC,UAAG,CAACQ,IAAE;AAAC,cAAMV,KAAE,KAAK,aAAYC,KAAE,KAAK,UAASC,KAAE,KAAK;AAAS,QAAAF,KAAEG,KAAEF,OAAIE,KAAEF,KAAED,KAAGA,KAAEG,KAAED,OAAIC,KAAED,KAAEF;AAAA,MAAE;AAAC,MAAAmB,KAAEA,GAAE,MAAMhB,EAAC;AAAA,IAAC;AAAC,IAAAgB,KAAEA,GAAE,UAAU,CAACd,IAAE,CAACC,EAAC,EAAE,UAAU,CAACQ,IAAE,CAACC,EAAC,EAAE,SAASG,EAAC,GAAEd,OAAIe,KAAEA,GAAE,OAAOf,EAAC,IAAGI,OAAIW,KAAEA,GAAE,MAAM,IAAG,CAAC,IAAGV,OAAIU,KAAEA,GAAE,MAAM,GAAE,EAAE;AAAG,eAAUlB,MAAK,EAAE,SAAMA,MAAG,QAAMA,OAAIkB,GAAElB,EAAC,IAAE,KAAK,WAAS,QAAMkB,GAAElB,EAAC,IAAE,KAAK,WAAS,QAAM,KAAK,OAAOA,EAAC,IAAEkB,GAAElB,EAAC,IAAE,KAAK,OAAOA,EAAC,IAAE,EAAEkB,GAAElB,EAAC,GAAE,CAAC;AAAE,KAAC,KAAK,cAAY,KAAK,SAAO,KAAK,IAAIE,KAAE,CAAC,IAAE,OAAI,KAAK,YAAU,KAAG,UAAKQ,OAAI,CAACD,MAAG,KAAK,kBAAkB,GAAEE,OAAI,EAAE,OAAK,KAAK,QAAQ,IAAE,KAAK,cAAY,KAAK,QAAM,EAAE,SAAQ,KAAK,YAAY;AAAA,EAAE;AAAA,EAAC,KAAKZ,KAAE,OAAG;AAAC,QAAG,KAAK,UAAQ,EAAE,QAAM,KAAK,UAAQ,EAAE,QAAQ;AAAO,UAAMC,KAAE,KAAK;AAAU,SAAK,QAAM,qBAAqB,KAAK,GAAG,GAAE,KAAK,MAAI,OAAM,KAAK,cAAY,OAAG,KAAK,cAAY;AAAG,eAAUA,MAAK,EAAE,MAAK,SAASA,EAAC,IAAE,GAAE,cAAYD,KAAE,KAAK,QAAQC,EAAC,IAAE,KAAK,OAAOA,EAAC,IAAE,aAAWD,OAAI,KAAK,OAAOC,EAAC,IAAE,KAAK,QAAQA,EAAC;AAAG,SAAK,aAAa,GAAE,EAAE,KAAK,WAAU,YAAY,GAAE,EAAE,KAAK,WAAU,cAAc,GAAE,KAAK,YAAU,OAAG,KAAK,QAAM,EAAE,OAAMA,OAAI,KAAK,KAAK,cAAc,GAAE,KAAK,eAAe;AAAA,EAAE;AAAA,EAAC,cAAa;AAAC,SAAK,cAAY,KAAK,KAAK,gBAAgB,GAAE,KAAK,eAAe,GAAE,EAAE,KAAK,WAAU,cAAc,GAAE,KAAK,aAAW,EAAE,KAAK,WAAU,YAAY,IAAG,KAAK,YAAU,MAAG,KAAK,QAAM,KAAK,MAAI,sBAAuB,MAAI,KAAK,QAAQ,CAAE;AAAA,EAAE;AAAA,EAAC,aAAaA,IAAEC,KAAE,KAAK,OAAO,mBAAmB,GAAE;AAAC,QAAG,KAAK,OAAKD,IAAE,KAAK,YAAU,KAAG,CAACA,GAAE;AAAO,QAAG,EAAE,KAAK,WAAW,KAAG,EAAE,KAAK,QAAQ,EAAE;AAAO,SAAK,KAAK,aAAYA,EAAC;AAAE,UAAK,EAAC,WAAUE,IAAE,eAAcC,IAAE,aAAYC,GAAC,IAAE,MAAKC,KAAEF,GAAE,OAAMG,KAAEH,GAAE,QAAOI,KAAEL,GAAE,sBAAsB,GAAEM,MAAGR,GAAE,WAAS,KAAGO,GAAE,MAAKE,MAAGT,GAAE,WAAS,KAAGO,GAAE;AAAI,QAAG,EAAC,cAAaG,IAAE,eAAcC,GAAC,IAAE,KAAK,oBAAoB,KAAK,MAAM;AAAE,UAAMC,KAAE,KAAK,OAAO,iBAAiB;AAAE,IAAAA,KAAE,MAAIF,OAAIL,OAAIK,MAAGE,KAAGD,OAAIL,OAAIK,MAAGC;AAAI,QAAIC,KAAE,OAAIH,KAAEL,MAAGG,KAAEH,KAAE,MAAI,OAAKK,KAAEL;AAAG,IAAAQ,MAAG,OAAIT,GAAE,QAAMA,GAAE;AAAM,QAAIU,KAAE,OAAIH,KAAEL,MAAGG,KAAEH,KAAE,MAAI,OAAKK,KAAEL;AAAG,IAAAQ,MAAG,OAAIV,GAAE,SAAOA,GAAE,MAAK,KAAK,YAAY,EAAC,MAAKS,KAAE,KAAK,OAAO,GAAE,MAAKC,KAAE,KAAK,OAAO,GAAE,UAASb,GAAC,CAAC;AAAA,EAAC;AAAA,EAAC,cAAcD,IAAE;AAAC,QAAG,KAAK,UAAQ,EAAE,WAAS,KAAK,UAAQ,EAAE,KAAK;AAAO,UAAMC,KAAE,KAAK,IAAI;AAAE,QAAGA,KAAE,KAAK,MAAI,GAAG,QAAO,KAAKD,GAAE,eAAe;AAAE,SAAK,MAAIC;AAAE,QAAIC,KAAE,CAAC,CAACF,GAAE,UAAQ,GAAE,CAACA,GAAE,UAAQ,GAAE,CAACA,GAAE,UAAQ,CAAC,EAAE,OAAQ,SAASD,IAAEC,IAAE;AAAC,aAAO,KAAK,IAAIA,EAAC,IAAE,KAAK,IAAID,EAAC,IAAEC,KAAED;AAAA,IAAC,CAAE;AAAE,UAAMI,KAAE,KAAK,IAAI,IAAG,KAAK,IAAI,GAAED,EAAC,CAAC,GAAE,EAAC,aAAYE,IAAE,UAASC,IAAE,UAASC,GAAC,IAAE;AAAK,QAAIC,KAAEH,MAAG,MAAI,KAAGD,MAAG;AAAI,MAAEI,EAAC,IAAE,EAAED,EAAC,KAAG,EAAEF,EAAC,KAAG,EAAEE,EAAC,KAAG,KAAK,OAAK,KAAK,IAAIH,EAAC,GAAEI,KAAED,MAAG,EAAEC,EAAC,IAAE,EAAEF,EAAC,KAAG,EAAED,EAAC,KAAG,EAAEC,EAAC,KAAG,KAAK,OAAK,KAAK,IAAIF,EAAC,GAAEI,KAAEF,OAAI,KAAK,MAAI,GAAEE,KAAE,KAAK,IAAI,KAAK,IAAIA,IAAEF,EAAC,GAAEC,EAAC,IAAG,KAAK,MAAI,KAAK,OAAO,YAAY,MAAIN,GAAE,eAAe,GAAE,EAAEO,EAAC,MAAI,EAAEH,EAAC,KAAG,KAAK,OAAOG,IAAE,EAAC,OAAMP,GAAC,CAAC;AAAA,EAAE;AAAA,EAAC,YAAW;AAAC,WAAO,KAAK,OAAO,MAAM,MAAI,EAAE,KAAK,YAAY,OAAM,CAAC,IAAE,EAAE,KAAK,YAAY,UAAS,CAAC,KAAG,EAAE,KAAK,WAAW,IAAE,EAAE,KAAK,QAAQ;AAAA,EAAE;AAAA,EAAC,aAAY;AAAC,WAAO,KAAK,OAAO,MAAM,KAAG,EAAE,KAAK,WAAW,IAAE,EAAE,KAAK,QAAQ;AAAA,EAAC;AAAA,EAAC,OAAOD,KAAE,MAAKC,IAAE;AAAC,SAAK,OAAO,KAAK,cAAYD,IAAEC,EAAC;AAAA,EAAC;AAAA,EAAC,QAAQD,KAAE,KAAGC,IAAE;AAAC,SAAK,OAAO,KAAK,cAAYD,IAAEC,EAAC;AAAA,EAAC;AAAA,EAAC,UAAUD,IAAE;AAAC,SAAK,OAAO,OAAMA,EAAC;AAAA,EAAC;AAAA,EAAC,YAAYA,IAAE;AAAC,SAAK,OAAO,SAAQA,EAAC;AAAA,EAAC;AAAA,EAAC,WAAWA,IAAE;AAAC,SAAK,OAAO,QAAOA,EAAC;AAAA,EAAC;AAAA,EAAC,UAAUA,IAAE;AAAC,SAAK,OAAO,OAAMA,EAAC;AAAA,EAAC;AAAA,EAAC,WAAWA,IAAE;AAAC,SAAK,OAAO,KAAK,aAAa,YAAY,GAAEA,EAAC;AAAA,EAAC;AAAA,EAAC,UAAUA,IAAE;AAAC,SAAK,OAAO,KAAK,aAAa,WAAW,GAAEA,EAAC;AAAA,EAAC;AAAA,EAAC,YAAYA,IAAE;AAAC,SAAK,OAAO,KAAK,aAAa,aAAa,GAAEA,EAAC;AAAA,EAAC;AAAA,EAAC,YAAYA,IAAE;AAAC,SAAK,OAAO,QAAOA,EAAC;AAAA,EAAC;AAAA,EAAC,OAAOA,KAAE,GAAE,EAAC,UAASC,KAAE,GAAE,SAAQC,KAAE,GAAE,SAAQC,KAAE,GAAE,OAAMC,GAAC,IAAE,CAAC,GAAE;AAAC,QAAG,KAAK,oBAAkB,KAAK,UAAQ,EAAE,QAAQ;AAAO,UAAK,EAAC,aAAYC,IAAE,WAAUC,IAAE,UAASC,IAAE,YAAWC,GAAC,IAAE;AAAK,QAAG,KAAK,KAAK,GAAE,KAAK,YAAU,MAAIJ,KAAE,KAAK,QAAMA,KAAGA,MAAGF,OAAI,KAAGC,OAAI,GAAE;AAAC,YAAMH,KAAE,KAAK,QAAQ,sBAAsB,GAAEC,KAAE,KAAK,UAAU,sBAAsB,GAAEI,KAAED,KAAEA,GAAE,UAAQH,GAAE,OAAK,MAAGA,GAAE,OAAMK,KAAEF,KAAEA,GAAE,UAAQH,GAAE,MAAI,MAAGA,GAAE;AAAO,MAAAC,KAAEG,KAAEL,GAAE,OAAK,MAAGA,GAAE,OAAMG,KAAEG,KAAEN,GAAE,MAAI,MAAGA,GAAE;AAAA,IAAM;AAAC,QAAIS,KAAE;AAAE,gBAAU,OAAOT,KAAES,KAAET,KAAE,WAASA,KAAES,KAAEH,KAAE,YAAUN,KAAES,KAAED,KAAE,UAAQR,KAAES,KAAEF,KAAE,UAAQP,KAAES,KAAE,IAAE,WAAST,OAAIS,KAAE,KAAK,aAAa,aAAa,IAAGA,KAAEA,KAAEJ,MAAG,GAAEJ,KAAEA,OAAI,IAAEQ,KAAE,IAAE,OAAI,OAAIR,IAAE,KAAK,YAAY,EAAC,OAAMQ,IAAE,SAAQP,IAAE,SAAQC,IAAE,UAASF,GAAC,CAAC,GAAEG,MAAG,KAAK,YAAU,KAAG,KAAK,aAAaA,IAAEH,EAAC;AAAA,EAAC;AAAA,EAAC,YAAW;AAAC,SAAK,YAAY,EAAC,OAAM,IAAG,CAAC;AAAA,EAAC;AAAA,EAAC,WAAU;AAAC,SAAK,YAAY,EAAC,OAAM,GAAE,CAAC;AAAA,EAAC;AAAA,EAAC,QAAO;AAAC,SAAK,YAAY,EAAC,OAAM,KAAE,CAAC;AAAA,EAAC;AAAA,EAAC,QAAO;AAAC,SAAK,YAAY,EAAC,OAAM,KAAE,CAAC;AAAA,EAAC;AAAA,EAAC,OAAM;AAAC,SAAK,KAAK,QAAQ;AAAE,UAAK,EAAC,eAAcD,IAAE,aAAYC,IAAE,QAAOC,GAAC,IAAE;AAAK,SAAK,YAAY,EAAC,MAAK,MAAGF,GAAE,SAAOC,GAAE,OAAK,MAAGA,GAAE,YAAUC,GAAE,GAAE,MAAK,MAAGF,GAAE,UAAQC,GAAE,MAAI,MAAGA,GAAE,aAAWC,GAAE,GAAE,OAAMF,GAAE,QAAMC,GAAE,WAAS,KAAK,aAAY,SAAQ,GAAE,SAAQ,GAAE,cAAa,KAAE,CAAC;AAAA,EAAC;AAAA,EAAC,OAAM;AAAC,SAAK,KAAK,QAAQ;AAAE,UAAK,EAAC,eAAcD,IAAE,aAAYC,IAAE,QAAOC,GAAC,IAAE;AAAK,SAAK,YAAY,EAAC,MAAK,MAAGF,GAAE,SAAOC,GAAE,OAAK,MAAGA,GAAE,YAAUC,GAAE,GAAE,MAAK,MAAGF,GAAE,eAAaC,GAAE,MAAI,MAAGA,GAAE,aAAWC,GAAE,GAAE,OAAMF,GAAE,SAAOC,GAAE,YAAU,KAAK,aAAY,SAAQ,GAAE,SAAQ,GAAE,cAAa,KAAE,CAAC;AAAA,EAAC;AAAA,EAAC,WAAU;AAAC,UAAK,EAAC,WAAUD,GAAC,IAAE,MAAKC,KAAE,KAAK,GAAG,cAAc,GAAEC,KAAE,KAAK,GAAG,mBAAmB;AAAE,IAAAF,GAAE,UAAU,OAAOC,EAAC;AAAE,UAAME,KAAEH,GAAE,UAAU,SAASC,EAAC;AAAE,IAAAE,MAAG,SAAS,gBAAgB,UAAU,IAAID,EAAC,GAAE,SAAS,iBAAiB,WAAU,KAAK,WAAU,IAAE,MAAI,SAAS,gBAAgB,UAAU,OAAOA,EAAC,GAAE,SAAS,oBAAoB,WAAU,KAAK,WAAU,IAAE,IAAG,KAAK,cAAc,GAAE,KAAK,KAAKC,KAAE,YAAU,QAAQ;AAAA,EAAC;AAAA,EAAC,UAAUH,KAAE,KAAK,SAAQ;AAAC,UAAK,EAAC,GAAEC,IAAE,GAAEC,IAAE,GAAEC,IAAE,GAAEC,IAAE,GAAEC,IAAE,GAAEC,GAAC,IAAEN;AAAE,WAAO,IAAI,UAAU,CAACC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,EAAC,CAAC;AAAA,EAAC;AAAA,EAAC,MAAMN,IAAE;AAAC,QAAG,KAAK,UAAQ,EAAE,QAAM,KAAK,UAAQ,EAAE,SAAQ;AAAC,WAAK,KAAK,SAAS;AAAE,iBAAUA,MAAK,EAAE,MAAK,OAAOA,EAAC,IAAE,EAAEA,EAAC;AAAE,WAAK,OAAO,IAAE,KAAK,UAAS,KAAK,OAAO,IAAE,KAAK,UAAS,KAAK,kBAAkB,GAAE,KAAK,cAAY,KAAK,WAAS,WAASA,KAAE,KAAK,OAAO,UAAU,IAAEA,IAAE,KAAK,QAAM,EAAE,SAAQ,KAAK,YAAY;AAAA,IAAE;AAAA,EAAC;AAAA,EAAC,UAAS;AAAC,SAAK,KAAK,GAAE,KAAK,QAAM,EAAE,SAAQ,KAAK,aAAa,GAAE,KAAK,eAAe;AAAE,UAAK,EAAC,WAAUA,IAAE,SAAQC,GAAC,IAAE,MAAKC,KAAE,KAAK,OAAO,SAAS,KAAG,CAAC;AAAE,eAAUD,MAAK,OAAO,OAAOC,EAAC,EAAE,CAAAF,GAAE,UAAU,OAAOC,KAAE,EAAE;AAAE,IAAAA,OAAIA,GAAE,oBAAoB,QAAO,KAAK,MAAM,GAAEA,GAAE,oBAAoB,SAAQ,KAAK,OAAO,IAAG,KAAK,cAAc;AAAA,EAAC;AAAC;AAAC,OAAO,eAAe,GAAE,YAAW,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,CAAC,GAAE,OAAO,eAAe,GAAE,WAAU,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,CAAC,EAAC,CAAC;AAAE,IAAM,IAAE,SAASD,IAAEC,IAAE;AAAC,MAAIC,KAAE;AAAG,SAAM,IAAIC,OAAI;AAAC,IAAAD,OAAIA,KAAE,OAAGF,GAAE,GAAGG,EAAC,GAAE,WAAY,MAAI;AAAC,MAAAD,KAAE;AAAA,IAAE,GAAGD,EAAC;AAAA,EAAE;AAAC;AAA3F,IAA6F,IAAE,CAACD,IAAEC,OAAI;AAAC,MAAIC,KAAE,CAAC;AAAE,SAAOF,GAAE,WAAW,QAAS,CAAAA,OAAG;AAAC,IAAAA,GAAE,aAAW,KAAK,gBAAcC,MAAG,CAACD,GAAE,QAAQC,EAAC,KAAGC,GAAE,KAAKF,EAAC;AAAA,EAAC,CAAE,GAAEE;AAAC;AAAjN,IAAmN,IAAE,EAAC,UAAS,MAAK,OAAM,MAAK,SAAQ,MAAG,QAAO,CAAC,GAAE,MAAK,KAAI,YAAW,QAAO,SAAQ,GAAE,eAAc,QAAO,aAAY,GAAE,UAAS,MAAI,SAAQ,EAAC,eAAc,KAAG,GAAE,QAAO,MAAG,UAAS,MAAG,MAAK,MAAG,UAAS,OAAG,gBAAe,OAAG,WAAU,OAAM,SAAQ,EAAC,WAAU,cAAa,UAAS,wBAAuB,OAAM,qBAAoB,OAAM,qBAAoB,OAAM,UAAS,OAAM,UAAS,cAAa,iBAAgB,YAAW,eAAc,cAAa,iBAAgB,YAAW,cAAa,GAAE,MAAK,EAAC,MAAK,cAAa,MAAK,kBAAiB,MAAK,kBAAiB,EAAC;AAAE,IAAI;AAAE,CAAC,SAASF,IAAE;AAAC,EAAAA,GAAEA,GAAE,OAAK,CAAC,IAAE,QAAOA,GAAEA,GAAE,QAAM,CAAC,IAAE,SAAQA,GAAEA,GAAE,UAAQ,CAAC,IAAE;AAAS,EAAE,MAAI,IAAE,CAAC,EAAE;AAAE,IAAM,IAAE,CAAAA,OAAG;AAAC,MAAG,YAAU,OAAOA,MAAGA,cAAa,YAAY,CAAAA,KAAE,EAAC,MAAKA,GAAC;AAAA,OAAM;AAAC,UAAMC,KAAED,GAAE;AAAM,eAASC,OAAI,YAAU,OAAOA,OAAID,GAAE,WAASC,KAAGA,cAAa,qBAAmBD,GAAE,UAAQC,IAAED,GAAE,aAAWC,GAAE,KAAID,GAAE,WAASC,GAAE,MAAK,OAAOD,GAAE;AAAA,EAAM;AAAC,SAAO,OAAO,OAAO,EAAC,MAAK,IAAG,IAAG,MAAK,OAAM,OAAG,OAAM,IAAG,aAAY,IAAG,OAAM,IAAG,KAAI,GAAE,KAAI,GAAE,KAAI,GAAE,YAAW,MAAE,GAAEA,EAAC;AAAC;AAAhW,IAAkW,IAAE,CAACA,KAAE,CAAC,MAAI,OAAO,OAAO,EAAC,OAAM,IAAG,QAAO,CAAC,GAAE,KAAI,GAAE,KAAI,GAAE,GAAEA,EAAC;AAAE,IAAM,IAAN,cAAgB,EAAC;AAAA,EAAC,YAAYA,IAAEC,IAAE;AAAC,UAAMA,EAAC,GAAE,OAAO,eAAe,MAAK,YAAW,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAMD,GAAC,CAAC;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAA,EAAC;AAAC;AAAC,IAAM,IAAE,EAAC,SAAQ,EAAC,MAAK,oBAAmB,WAAU,cAAa,SAAQ,YAAW,KAAI,mBAAkB,cAAa,kBAAiB,QAAO,WAAU,WAAU,cAAa,QAAO,WAAU,aAAY,gBAAe,GAAE,QAAO,yIAAwI,aAAY,IAAG,UAAS,IAAE,GAAE,UAAS,EAAC;AAAE,IAAM,IAAN,cAAgB,EAAC;AAAA,EAAC,cAAa;AAAC,UAAM,GAAG,SAAS,GAAE,OAAO,eAAe,MAAK,aAAY,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,MAAE,CAAC,GAAE,OAAO,eAAe,MAAK,QAAO,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC;AAAA,EAAC;AAAA,EAAC,YAAW;AAAC,SAAK,QAAQ;AAAA,EAAC;AAAA,EAAC,QAAO;AAAC,QAAIA,KAAE,KAAK;AAAK,QAAG,CAACA,IAAE;AAAC,MAAAA,KAAE,SAAS,cAAc,IAAI,GAAE,EAAEA,IAAE,KAAK,GAAG,MAAM,CAAC,GAAEA,GAAE,aAAa,QAAO,SAAS;AAAE,YAAMC,KAAE,KAAK,SAAS;AAAU,MAAAA,GAAE,YAAYD,EAAC,GAAE,EAAEC,IAAE,KAAK,GAAG,SAAS,CAAC,GAAE,KAAK,OAAKD;AAAA,IAAC;AAAC,WAAOA;AAAA,EAAC;AAAA,EAAC,UAAS;AAAC,QAAIA;AAAE,UAAMC,KAAE,KAAK,SAAS,MAAM,QAAOC,KAAE,KAAK,IAAI,GAAE,KAAK,OAAO,UAAU,CAAC,GAAEC,KAAE,KAAK,IAAI,KAAI,KAAK,OAAO,UAAU,CAAC,GAAEC,KAAE,KAAK,OAAO,aAAa;AAAE,QAAGH,KAAEC,MAAGD,KAAEE,GAAE,QAAO,KAAK,KAAK,QAAQ;AAAE,UAAMG,KAAE,YAAU,OAAOF,MAAGH,KAAE,KAAGA,MAAGG,IAAEG,KAAE,CAAC,KAAK,QAAM,KAAK,cAAYD,MAAG,KAAK,KAAK,SAAS,WAASL;AAAE,IAAAM,MAAG,KAAK,QAAQ;AAAE,UAAMC,KAAE,KAAK,MAAM;AAAE,QAAG,EAAEA,IAAE,KAAK,GAAG,WAAW,GAAE,CAAC,CAACF,EAAC,GAAEC,GAAE,UAAQP,KAAE,GAAEA,KAAEC,IAAED,KAAI,CAAAQ,GAAE,OAAO,KAAK,WAAWR,EAAC,CAAC;AAAE,QAAIS,IAAEC,KAAE;AAAE,eAAUT,MAAI,CAAC,GAAGO,GAAE,QAAQ,GAAE;AAAC,YAAMN,KAAEQ,OAAI,KAAK,SAAS;AAAK,MAAAR,OAAIO,KAAER,KAAG,EAAEA,IAAE,KAAK,GAAG,WAAW,GAAEC,EAAC,GAAE,UAAQF,KAAEC,GAAE,SAAS,CAAC,MAAI,WAASD,MAAGA,GAAE,aAAa,iBAAgBE,KAAE,SAAO,OAAO;AAAE,iBAAUF,MAAI,CAAC,gBAAe,UAAS,UAAS,aAAa,EAAE,GAAEC,IAAE,KAAK,GAAGD,EAAC,CAAC;AAAE,MAAAU;AAAA,IAAG;AAAC,QAAGD,KAAEA,MAAGD,GAAE,YAAWF,MAAGG,IAAE;AAAC,YAAMT,KAAES,GAAE,wBAAuBR,KAAED,MAAGA,GAAE;AAAuB,QAAEA,IAAE,KAAK,GAAG,QAAQ,CAAC,GAAE,EAAEC,IAAE,KAAK,GAAG,cAAc,CAAC;AAAE,YAAMC,KAAEO,GAAE,oBAAmBN,KAAED,MAAGA,GAAE;AAAmB,QAAEA,IAAE,KAAK,GAAG,QAAQ,CAAC,GAAE,EAAEC,IAAE,KAAK,GAAG,aAAa,CAAC;AAAA,IAAC;AAAC,SAAK,YAAUG;AAAA,EAAC;AAAA,EAAC,WAAWN,KAAE,GAAE;AAAC,QAAIC;AAAE,UAAMC,KAAE,SAAS,cAAc,IAAI;AAAE,IAAAA,GAAE,aAAa,QAAO,cAAc;AAAE,UAAME,KAAE,EAAE,KAAK,SAAS,SAAS,KAAK,OAAO,QAAQ,GAAE,CAAC,CAAC,MAAKJ,KAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,QAAOA,KAAE,EAAE,CAAC;AAAE,WAAOE,GAAE,YAAYE,EAAC,GAAE,UAAQH,KAAEC,GAAE,SAAS,CAAC,MAAI,WAASD,MAAGA,GAAE,aAAa,QAAO,KAAK,GAAEC;AAAA,EAAC;AAAA,EAAC,UAAS;AAAC,SAAK,SAAO,KAAK,KAAK,OAAO,GAAE,KAAK,OAAK,OAAM,KAAK,YAAU,OAAG,EAAE,KAAK,SAAS,WAAU,KAAK,GAAG,SAAS,CAAC;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,SAAK,SAAS,GAAG,CAAC,WAAU,QAAQ,GAAE,KAAK,SAAS;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,SAAK,SAAS,IAAI,CAAC,WAAU,QAAQ,GAAE,KAAK,SAAS,GAAE,KAAK,QAAQ;AAAA,EAAC;AAAC;AAAC,OAAO,eAAe,GAAE,YAAW,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,CAAC;AAAE,IAAM,IAAE;AAAR,IAAmB,IAAE;AAArB,IAA4B,IAAE;AAAO,IAAM,IAAN,cAAgB,EAAC;AAAA,EAAC,cAAa;AAAC,UAAM,GAAG,SAAS,GAAE,OAAO,eAAe,MAAK,aAAY,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,QAAO,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,QAAO,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,SAAQ,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,MAAE,CAAC;AAAA,EAAC;AAAA,EAAC,YAAW;AAAC,UAAMF,KAAE,KAAK,UAASC,KAAED,GAAE,MAAM,QAAOE,KAAEF,GAAE;AAAK,QAAGC,KAAE,EAAE,QAAO,KAAK,KAAK,QAAQ;AAAE,SAAK,MAAM;AAAE,QAAIE,KAAE,KAAK,MAAKC,KAAE,KAAK;AAAK,IAAAD,MAAGC,OAAID,GAAE,gBAAgB,CAAC,GAAEC,GAAE,gBAAgB,CAAC,GAAEJ,GAAE,eAAaE,MAAG,KAAGC,GAAE,aAAa,GAAE,EAAE,GAAED,MAAGD,KAAE,KAAGG,GAAE,aAAa,GAAE,EAAE;AAAA,EAAG;AAAA,EAAC,OAAOJ,IAAE;AAAC,QAAIC;AAAE,UAAMC,KAAE,KAAK,UAASC,KAAE,SAAS,cAAc,QAAQ;AAAE,IAAAA,GAAE,aAAa,YAAW,GAAG,GAAEA,GAAE,aAAa,SAAQD,GAAE,SAAS,KAAKF,GAAE,YAAY,CAAC,IAAI,CAAC,GAAE,EAAEG,IAAE,KAAK,GAAG,QAAQ,IAAE,MAAI,KAAK,GAAGH,OAAI,IAAE,WAAS,QAAQ,CAAC;AAAE,UAAMI,KAAEF,GAAE,QAAMF,OAAI,IAAE,IAAE,IAAEA;AAAE,QAAIK;AAAE,WAAOF,GAAE,YAAUD,GAAE,SAAS,KAAK,OAAO,GAAGE,EAAC,KAAK,CAAC,GAAED,GAAE,QAAQ,WAAWE,KAAEL,IAAEK,KAAEA,GAAE,MAAM,QAAQ,IAAEA,GAAE,OAAO,CAAC,EAAE,YAAY,IAAEA,GAAE,UAAU,CAAC,IAAEA,KAAE,EAAE,EAAE,IAAE,QAAO,UAAQJ,KAAE,KAAK,cAAY,WAASA,MAAGA,GAAE,YAAYE,EAAC,GAAEA;AAAA,EAAC;AAAA,EAAC,QAAO;AAAC,UAAMH,KAAE,KAAK,SAAS,WAAUC,KAAE,KAAK,GAAG,WAAW;AAAE,QAAG,EAAC,WAAUC,IAAE,MAAKC,IAAE,MAAKC,GAAC,IAAE;AAAK,IAAAF,OAAIA,KAAEF,GAAE,cAAc,MAAIC,EAAC,GAAE,KAAK,QAAM,CAAC,CAACC,KAAGA,OAAIA,KAAE,SAAS,cAAc,KAAK,GAAE,EAAEA,IAAED,EAAC,GAAED,GAAE,YAAYE,EAAC,IAAG,KAAK,YAAUA,IAAEE,OAAIA,KAAEF,GAAE,cAAc,sBAAsB,IAAGE,OAAIA,KAAE,KAAK,OAAO,CAAC,IAAG,KAAK,OAAKA,IAAED,OAAIA,KAAED,GAAE,cAAc,sBAAsB,IAAGC,OAAIA,KAAE,KAAK,OAAO,CAAC,IAAG,KAAK,OAAKA;AAAA,EAAC;AAAA,EAAC,UAAS;AAAC,SAAK,UAAQ,KAAK,QAAM,KAAK,KAAK,OAAO,GAAE,KAAK,QAAM,KAAK,KAAK,OAAO,GAAE,KAAK,aAAW,KAAK,UAAU,OAAO,IAAG,KAAK,OAAK,MAAK,KAAK,OAAK,MAAK,KAAK,YAAU,MAAK,KAAK,QAAM;AAAA,EAAE;AAAA,EAAC,SAAQ;AAAC,SAAK,SAAS,GAAG,CAAC,WAAU,QAAQ,GAAE,KAAK,SAAS;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,SAAK,SAAS,IAAI,CAAC,WAAU,QAAQ,GAAE,KAAK,SAAS,GAAE,KAAK,QAAQ;AAAA,EAAC;AAAC;AAAC,OAAO,eAAe,GAAE,YAAW,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,SAAQ,EAAC,WAAU,mBAAkB,QAAO,YAAW,QAAO,WAAU,QAAO,UAAS,GAAE,SAAQ,4GAA2G,SAAQ,6GAA4G,EAAC,CAAC;AAAE,IAAM,IAAN,cAAgB,EAAC;AAAA,EAAC,cAAa;AAAC,UAAM,GAAG,SAAS,GAAE,OAAO,eAAe,MAAK,iBAAgB,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,UAAS,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,OAAM,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC;AAAA,EAAC;AAAA,EAAC,eAAeH,IAAE;AAAC,SAAK,SAAO,KAAK,UAAS,KAAK,MAAIA,IAAE,KAAK,aAAa;AAAA,EAAC;AAAA,EAAC,YAAYA,IAAE;AAAC,SAAK,MAAI,KAAK,UAAS,KAAK,SAAOA,IAAE,KAAK,aAAa;AAAA,EAAC;AAAA,EAAC,eAAc;AAAC,UAAK,EAAC,KAAIA,IAAE,QAAOC,GAAC,IAAE;AAAK,IAAAD,MAAGC,OAAID,GAAE,QAAQ,eAAaC,GAAE,QAAQ,aAAYD,GAAE,UAAQ,EAAE,QAAM,KAAK,WAAWA,EAAC,IAAEA,GAAE,GAAG,SAAQ,KAAK,UAAU,GAAEC,GAAE,UAAQ,EAAE,QAAM,KAAK,cAAcA,EAAC,IAAEA,GAAE,GAAG,SAAQ,KAAK,aAAa;AAAA,EAAE;AAAA,EAAC,WAAWD,IAAE;AAAC,IAAAA,GAAE,GAAG,eAAc,KAAK,gBAAgB,GAAEA,GAAE,GAAG,iBAAgB,KAAK,UAAU,GAAEA,GAAE,GAAG,oBAAmB,KAAK,UAAU,GAAE,KAAK,eAAe;AAAA,EAAC;AAAA,EAAC,cAAcA,IAAE;AAAC,IAAAA,GAAE,GAAG,UAAS,KAAK,cAAc,GAAEA,GAAE,GAAG,mBAAkB,KAAK,cAAc,GAAE,KAAK,eAAe;AAAA,EAAC;AAAA,EAAC,WAAWA,IAAEC,IAAEC,IAAE;AAAC,SAAK,WAAWF,IAAEA,GAAE,SAAQE,EAAC;AAAA,EAAC;AAAA,EAAC,WAAWF,IAAEC,IAAEC,IAAE;AAAC,QAAIC,IAAEC;AAAE,QAAG,KAAK,IAAIH,GAAE,WAAW,CAAC,IAAE,KAAG,KAAK,IAAIA,GAAE,WAAW,CAAC,IAAE,EAAE;AAAO,UAAMI,KAAEH,GAAE,QAAO,EAAC,KAAII,IAAE,QAAOC,GAAC,IAAE;AAAK,QAAG,CAACD,MAAG,CAACC,MAAG,CAACF,GAAE;AAAO,UAAMG,KAAEH,GAAE,QAAQ,cAAc;AAAE,QAAGH,GAAE,gBAAgB,GAAEA,GAAE,eAAe,GAAE,CAACM,GAAE;AAAO,UAAMC,KAAE,SAASD,GAAE,QAAQ,SAAO,IAAG,EAAE,KAAG,GAAEE,KAAEH,GAAE,gBAAgBE,EAAC,GAAEE,KAAEL,GAAE,gBAAgBG,EAAC;AAAE,IAAAH,GAAE,QAAQK,EAAC,GAAEJ,GAAE,QAAQG,IAAE,EAAC,WAAU,UAAQN,KAAE,UAAQD,KAAE,KAAK,QAAM,WAASA,KAAE,SAAOA,GAAE,YAAU,WAASC,KAAE,SAAOA,GAAE,KAAK,OAAO,UAAU,MAAI,EAAC,CAAC,GAAE,KAAK,kBAAkBK,EAAC;AAAA,EAAC;AAAA,EAAC,iBAAiBT,IAAEC,IAAE;AAAC,IAAAA,GAAE,UAAQ,KAAK,iBAAe,KAAK,kBAAkBA,GAAE,KAAK;AAAA,EAAC;AAAA,EAAC,iBAAgB;AAAC,QAAID,IAAEC;AAAE,UAAK,EAAC,QAAOC,IAAE,KAAIC,GAAC,IAAE;AAAK,QAAG,CAACD,MAAG,CAACC,GAAE;AAAO,QAAGA,GAAE,UAAQ,EAAE,SAAOD,GAAE,UAAQ,EAAE,MAAM;AAAO,UAAME,KAAE,UAAQH,KAAE,UAAQD,KAAEE,GAAE,MAAMA,GAAE,IAAI,MAAI,WAASF,KAAE,SAAOA,GAAE,OAAO,CAAC,MAAI,WAASC,KAAE,SAAOA,GAAE,OAAMI,KAAEF,GAAE,gBAAgBC,EAAC;AAAE,SAAK,kBAAkBA,EAAC,GAAED,GAAE,QAAQE,IAAE,SAAOF,GAAE,YAAU,SAAOD,GAAE,WAAS,EAAC,UAAS,EAAC,IAAE,MAAM;AAAA,EAAC;AAAA,EAAC,kBAAkBF,IAAE;AAAC,UAAMC,KAAE,KAAK;AAAI,IAAAA,MAAGA,GAAE,UAAQ,EAAE,UAAQ,KAAK,gBAAcD,IAAE,CAAC,GAAGC,GAAE,MAAM,EAAE,IAAK,CAAAA,OAAG;AAAC,MAAAA,GAAE,MAAIA,GAAE,GAAG,UAAUA,GAAE,UAAQD,KAAE,QAAM,QAAQ,EAAE,iBAAiB;AAAA,IAAC,CAAE;AAAA,EAAE;AAAA,EAAC,SAAQ;AAAC,UAAMA,KAAE;AAAK,QAAIC,KAAED,GAAE,QAAQ,QAAOE,KAAEF,GAAE,QAAQ;AAAI,IAAAC,KAAED,GAAE,YAAYC,EAAC,IAAEC,MAAGF,GAAE,eAAeE,EAAC;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,UAAMF,KAAE,MAAKC,KAAED,GAAE,KAAIE,KAAEF,GAAE;AAAO,IAAAC,OAAIA,GAAE,IAAI,SAAQD,GAAE,UAAU,GAAEC,GAAE,IAAI,eAAcD,GAAE,gBAAgB,GAAEC,GAAE,IAAI,iBAAgBD,GAAE,UAAU,GAAEC,GAAE,IAAI,oBAAmBD,GAAE,UAAU,IAAGA,GAAE,MAAI,MAAKE,OAAIA,GAAE,IAAI,SAAQF,GAAE,aAAa,GAAEE,GAAE,IAAI,WAAUF,GAAE,cAAc,GAAEE,GAAE,IAAI,UAASF,GAAE,cAAc,IAAGA,GAAE,SAAO;AAAA,EAAI;AAAC;AAAC,OAAO,eAAe,GAAE,YAAW,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,UAAS,KAAG,EAAC,CAAC;AAAE,IAAM,IAAE,EAAC,YAAW,GAAE,MAAK,GAAE,MAAK,EAAC;AAAnC,IAAqC,IAAE;AAAvC,IAAsD,IAAE;AAAxD,IAAqE,IAAE;AAAQ,IAAM,IAAN,MAAM,WAAU,EAAC;AAAA,EAAC,IAAI,OAAM;AAAC,WAAO,KAAK,eAAa,MAAI;AAAA,EAAG;AAAA,EAAC,IAAI,YAAW;AAAC,WAAO,KAAK,UAAQ,EAAE;AAAA,EAAK;AAAA,EAAC,IAAI,aAAY;AAAC,QAAIA,KAAE;AAAG,UAAK,EAAC,YAAWC,IAAE,aAAYC,IAAE,OAAMC,IAAE,QAAOC,GAAC,IAAE,MAAKC,KAAED,GAAE,CAAC;AAAE,WAAOD,GAAE,UAAQ,KAAGE,MAAGJ,KAAEI,GAAE,OAAKH,OAAIF,KAAE,KAAK,OAAO,UAAU,IAAGA;AAAA,EAAC;AAAA,EAAC,IAAI,QAAO;AAAC,WAAM,UAAQ,KAAK,OAAO,WAAW;AAAA,EAAC;AAAA,EAAC,IAAI,eAAc;AAAC,WAAM,QAAM,KAAK,OAAO,MAAM;AAAA,EAAC;AAAA,EAAC,YAAYA,IAAEC,KAAE,CAAC,GAAEC,KAAE,CAAC,GAAE;AAAC,QAAG,MAAM,GAAE,OAAO,eAAe,MAAK,MAAK,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,GAAE,CAAC,GAAE,OAAO,eAAe,MAAK,MAAK,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,eAAc,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,CAAC,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,eAAc,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,CAAC,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,SAAQ,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAE,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,QAAO,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,YAAW,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,aAAY,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,OAAM,CAAC,GAAE,OAAO,eAAe,MAAK,YAAW,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,SAAQ,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,UAAS,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,CAAC,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,SAAQ,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,CAAC,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,WAAU,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,gBAAe,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,oBAAI,MAAG,CAAC,GAAE,OAAO,eAAe,MAAK,cAAa,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,eAAc,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,CAAC,GAAE,YAAU,OAAOF,OAAIA,KAAE,SAAS,cAAcA,EAAC,IAAG,CAACA,MAAG,CAAC,EAAEA,EAAC,EAAE,OAAM,IAAI,MAAM,kBAAkB;AAAE,SAAK,YAAUA,IAAE,KAAK,YAAU,EAAE,KAAK,UAAU,KAAK,IAAI,GAAE,GAAG,GAAE,KAAK,YAAU,EAAE,KAAK,UAAU,KAAK,IAAI,GAAE,GAAG,GAAE,KAAK,cAAYC,IAAE,KAAK,cAAYC,IAAE,eAAgB,MAAI;AAAC,WAAK,eAAe;AAAA,IAAC,CAAE;AAAA,EAAC;AAAA,EAAC,iBAAgB;AAAC,QAAIF,IAAEC;AAAE,UAAMC,KAAE,EAAE,CAAC,GAAE,GAAE,UAAS,KAAK,WAAW;AAAE,QAAIC,KAAE;AAAG,UAAMC,KAAEF,GAAE;AAAY,QAAGE,MAAG,EAAEA,EAAC,EAAE,YAAS,CAACJ,IAAEC,EAAC,KAAI,OAAO,QAAQG,EAAC,EAAE,QAAO,WAAWJ,EAAC,EAAE,WAAS,EAAEC,EAAC,MAAIE,MAAGH,IAAE,EAAEE,IAAED,EAAC;AAAG,IAAAE,OAAI,KAAK,MAAI,KAAK,UAAQ,EAAE,SAAO,KAAK,KAAGA,IAAE,KAAK,UAAQ,EAAE,UAAQD,GAAE,gBAAc,UAAQD,KAAE,UAAQD,KAAE,KAAK,MAAM,KAAK,IAAI,MAAI,WAASA,KAAE,SAAOA,GAAE,OAAO,CAAC,MAAI,WAASC,KAAE,SAAOA,GAAE,UAAQ,IAAG,KAAK,UAAQ,EAAE,QAAM,KAAK,QAAQ,GAAE,MAAM,WAAWC,EAAC,GAAE,UAAK,KAAK,OAAO,SAAS,IAAE,KAAK,aAAa,IAAE,WAAY,MAAI;AAAC,WAAK,KAAK;AAAA,IAAC,GAAG,CAAC;AAAA,EAAE;AAAA,EAAC,OAAM;AAAC,SAAK,QAAM,EAAE,MAAK,KAAK,KAAK,MAAM,GAAE,KAAK,cAAc,OAAO,OAAO,OAAO,OAAO,CAAC,GAAE,GAAE,OAAO,GAAE,KAAK,WAAW,CAAC,GAAE,KAAK,KAAK,eAAe,GAAE,KAAK,WAAW,GAAE,KAAK,WAAW,GAAE,KAAK,cAAc,GAAE,KAAK,mBAAmB,GAAE,KAAK,YAAY,GAAE,KAAK,aAAa,GAAE,KAAK,QAAM,EAAE,OAAM,KAAK,KAAK,OAAO;AAAA,EAAC;AAAA,EAAC,aAAY;AAAC,UAAK,EAAC,WAAUF,GAAC,IAAE,MAAKC,KAAE,KAAK,OAAO,SAAS;AAAE,MAAED,IAAE,KAAK,GAAG,WAAW,CAAC,GAAE,EAAEA,IAAEC,GAAE,OAAM,CAAC,KAAK,KAAK,GAAE,EAAED,IAAEC,GAAE,OAAM,KAAK,KAAK,GAAE,EAAED,IAAEC,GAAE,YAAW,CAAC,KAAK,YAAY,GAAE,EAAED,IAAEC,GAAE,cAAa,KAAK,YAAY;AAAE,QAAIC,KAAE,KAAK,OAAO,UAAU,KAAGF,GAAE,cAAc,IAAIC,GAAE,QAAQ,EAAE;AAAE,IAAAC,OAAIA,KAAE,SAAS,cAAc,KAAK,GAAE,EAAEA,IAAED,GAAE,QAAQ,GAAEC,GAAE,OAAO,GAAG,EAAEF,IAAE,IAAIC,GAAE,KAAK,EAAE,CAAC,GAAED,GAAE,QAAQE,EAAC,IAAGA,GAAE,iBAAiB,UAAS,KAAK,QAAQ;AAAE,QAAIC,KAAE,KAAK,OAAO,OAAO,KAAGH,GAAE,cAAc,IAAIC,GAAE,KAAK,EAAE;AAAE,IAAAE,OAAIA,KAAE,SAAS,cAAc,KAAK,GAAE,EAAEA,IAAEF,GAAE,KAAK,GAAEE,GAAE,OAAO,GAAG,MAAM,KAAKD,GAAE,UAAU,CAAC,IAAGC,GAAE,aAAa,aAAY,QAAQ,GAAED,GAAE,SAASC,EAAC,KAAGD,GAAE,QAAQC,EAAC,GAAE,KAAK,WAASD,IAAE,KAAK,QAAMC,IAAE,KAAK,KAAK,YAAY;AAAA,EAAC;AAAA,EAAC,aAAY;AAAC,UAAK,EAAC,OAAMH,GAAC,IAAE;AAAK,QAAG,CAACA,GAAE;AAAO,UAAMC,KAAE,CAAC,GAAG,KAAK,MAAM,GAAEC,KAAE,CAAC;AAAE,KAAC,GAAG,EAAEF,IAAE,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,QAAS,CAAAA,OAAG;AAAC,UAAG,EAAEA,EAAC,GAAE;AAAC,cAAMC,KAAE,EAAE,EAAC,IAAGD,IAAE,OAAM,MAAG,OAAM,KAAK,OAAO,OAAM,CAAC;AAAE,QAAAE,GAAE,KAAKD,EAAC;AAAA,MAAC;AAAA,IAAC,CAAE;AAAE,aAAQD,MAAI,CAAC,GAAG,KAAK,OAAO,UAAS,CAAC,CAAC,KAAG,CAAC,GAAE,GAAGC,EAAC,EAAE,CAAAC,GAAE,KAAK,EAAEF,EAAC,CAAC;AAAE,SAAK,SAAOE;AAAE,aAAQF,KAAE,GAAEA,KAAE,KAAK,OAAO,QAAOA,KAAI,MAAK,OAAOA,EAAC,EAAE,QAAMA;AAAE,eAAUA,MAAKE,GAAE,MAAK,KAAK,mBAAkBF,IAAEA,GAAE,KAAK,GAAE,KAAK,KAAK,aAAYA,IAAEA,GAAE,KAAK;AAAE,SAAK,KAAK,YAAY;AAAA,EAAC;AAAA,EAAC,iBAAgB;AAAC,UAAMA,KAAE,KAAK,OAAO,cAAc;AAAE,SAAK,OAAK,YAAU,OAAOA,KAAE,KAAK,gBAAgBA,EAAC,IAAE,SAAS,KAAK,OAAO,eAAc,CAAC,IAAE,IAAG,EAAE,KAAG;AAAA,EAAC;AAAA,EAAC,qBAAoB;AAAC,UAAK,EAAC,OAAMA,IAAE,OAAMC,IAAE,cAAaC,GAAC,IAAE;AAAK,QAAG,CAACF,MAAG,CAACC,GAAE,OAAO;AAAO,QAAIE,KAAE,KAAK;AAAK,IAAAF,GAAEE,EAAC,MAAI,KAAK,OAAKA,KAAE;AAAG,UAAMC,MAAGH,GAAEE,EAAC,EAAE,OAAK,MAAI,KAAK,SAAOD,KAAE,IAAE,KAAIG,KAAEH,KAAE,GAAGE,EAAC,OAAK,KAAIE,KAAEJ,KAAE,MAAI,GAAGE,EAAC;AAAK,IAAAJ,GAAE,MAAM,YAAU,eAAeK,EAAC,KAAKC,EAAC,iBAAgB,KAAK,OAAO,gBAAgB,KAAG,KAAK,kBAAkB;AAAA,EAAC;AAAA,EAAC,cAAa;AAAC,SAAK,YAAU,KAAK,QAAQ,QAAQ,GAAE,KAAK,UAAQ;AAAM,UAAMN,KAAE,KAAK,OAAO,SAAS,KAAG,CAAC;AAAE,SAAK,UAAQ,IAAI,EAAE,KAAK,UAAS,EAAE,CAAC,GAAE,EAAC,SAAQ,KAAK,OAAM,MAAK,OAAG,eAAc,OAAG,UAAS,KAAK,eAAa,MAAI,KAAI,UAAS,KAAK,YAAW,OAAM,OAAG,UAAS,OAAG,OAAM,CAAAA,OAAG,EAAE,KAAK,MAAM,SAAO,KAAG,CAACA,GAAE,QAAQ,WAAU,QAAO,MAAI,KAAK,UAAU,GAAE,aAAY,CAAAA,OAAG,KAAK,IAAIA,GAAE,OAAO,KAAK,IAAI,IAAEA,GAAE,QAAQ,KAAK,IAAI,CAAC,IAAE,IAAE,KAAK,cAAY,MAAI,EAAC,GAAEA,EAAC,CAAC,GAAE,KAAK,QAAQ,GAAG,KAAK,CAACA,IAAEC,OAAKC,OAAI;AAAC,WAAK,KAAK,WAAWD,EAAC,IAAGD,IAAE,GAAGE,EAAC;AAAA,IAAC,CAAE,GAAE,KAAK,QAAQ,GAAG,SAAQ,KAAK,OAAO,GAAE,KAAK,QAAQ,GAAG,WAAU,KAAK,SAAS,GAAE,KAAK,QAAQ,GAAG,mBAAkB,KAAK,iBAAiB,GAAE,KAAK,QAAQ,GAAG,gBAAe,KAAK,cAAc;AAAA,EAAC;AAAA,EAAC,eAAc;AAAC,UAAMF,KAAE,KAAK;AAAU,IAAAA,OAAIA,GAAE,iBAAiB,SAAQ,KAAK,SAAQ,EAAC,SAAQ,OAAG,SAAQ,MAAE,CAAC,GAAEA,GAAE,iBAAiB,WAAU,KAAK,SAAS,IAAG,OAAO,iBAAiB,UAAS,KAAK,QAAQ;AAAA,EAAC;AAAA,EAAC,cAAa;AAAC,QAAIA,KAAE,CAAC;AAAE,UAAK,EAAC,YAAWC,IAAE,aAAYC,GAAC,IAAE;AAAK,QAAIC,KAAE,KAAK,OAAO,eAAe;AAAE,IAAAA,MAAG,WAASA,MAAGF,MAAGC,OAAI,UAAK,KAAK,OAAO,MAAM,IAAE,IAAE,IAAE,WAAWC,KAAE,EAAE;AAAE,QAAIC,KAAE,GAAEC,KAAE,GAAEC,KAAE;AAAE,eAAUL,MAAK,KAAK,OAAO,EAAC,CAACD,GAAE,UAAQK,KAAEJ,GAAE,MAAIC,KAAE,QAAKI,MAAGH,QAAKH,GAAE,KAAK,EAAE,CAAC,GAAEI,KAAEJ,GAAE,SAAO,GAAEK,KAAE,GAAEC,KAAE,IAAGN,GAAEI,EAAC,EAAE,OAAO,KAAKH,EAAC,GAAEI,MAAGJ,GAAE,MAAIA,GAAE,KAAIK;AAAI,WAAON;AAAA,EAAC;AAAA,EAAC,eAAc;AAAC,UAAMC,KAAE,KAAK,OAAM,EAAC,YAAWC,IAAE,aAAYC,IAAE,YAAWC,GAAC,IAAE,MAAKC,KAAE,KAAK,OAAO,QAAQ,GAAEC,KAAE,KAAK,OAAO,MAAM,GAAEC,KAAED,MAAGD,MAAGH,KAAEC,MAAG,CAACC;AAAE,QAAGH,GAAE,QAAS,CAACD,IAAEC,OAAI;AAAC,UAAIG;AAAE,MAAAJ,GAAE,QAAMC,IAAED,GAAE,OAAK,UAAQI,KAAEJ,GAAE,OAAO,CAAC,MAAI,WAASI,KAAE,SAAOA,GAAE,QAAM,GAAEJ,GAAE,MAAI;AAAE,iBAAS,CAACC,IAAEC,EAAC,KAAIF,GAAE,OAAO,QAAQ,EAAE,CAAAA,GAAE,OAAKE,GAAE,KAAID,KAAED,GAAE,OAAO,SAAO,MAAIA,GAAE,OAAKE,GAAE;AAAK,MAAAK,MAAGP,GAAE,MAAI,MAAGA,GAAE,MAAI,MAAGG,KAAEH,GAAE,MAAI,IAAEO,MAAGP,GAAE,MAAI,MAAGA,GAAE,OAAKE,KAAE,MAAGC,KAAEH,GAAE,MAAIE,KAAEC,KAAEE,OAAIL,GAAE,OAAK,QAAKG,KAAEH,GAAE;AAAA,IAAK,CAAE,GAAEC,GAAE,QAAS,CAAAA,OAAG;AAAC,MAAAK,MAAG,CAACF,MAAGF,KAAEC,OAAIF,GAAE,MAAI,KAAK,IAAIA,GAAE,KAAI,CAAC,GAAEA,GAAE,MAAI,KAAK,IAAIA,GAAE,KAAIC,KAAEC,EAAC,IAAGF,GAAE,MAAI,EAAEA,GAAE,KAAI,GAAG,GAAEA,GAAE,MAAI,EAAEA,GAAE,KAAI,GAAG,GAAE,KAAK,IAAIA,GAAE,GAAG,KAAG,QAAKA,GAAE,MAAI;AAAA,IAAE,CAAE,GAAEG,GAAE,QAAOH;AAAE,UAAMO,KAAE,CAAC;AAAE,QAAIC;AAAE,WAAOR,GAAE,QAAS,CAAAD,OAAG;AAAC,YAAMC,KAAE,OAAO,OAAO,CAAC,GAAED,EAAC;AAAE,MAAAS,MAAGR,GAAE,QAAMQ,GAAE,OAAKA,GAAE,OAAKR,GAAE,KAAIQ,GAAE,SAAO,CAAC,GAAGA,GAAE,QAAO,GAAGR,GAAE,MAAM,MAAIA,GAAE,QAAMO,GAAE,QAAOC,KAAER,IAAEO,GAAE,KAAKP,EAAC;AAAA,IAAE,CAAE,GAAEO;AAAA,EAAC;AAAA,EAAC,iBAAiBR,KAAE,GAAE;AAAC,UAAMC,KAAE,KAAK,MAAM;AAAO,QAAIC;AAAE,WAAOF,KAAE,UAAUA,MAAG,GAAG,SAAS,CAAC,KAAG,GAAEE,KAAE,KAAK,cAAYF,KAAEC,KAAEA,MAAGA,KAAE,KAAK,IAAI,KAAK,IAAID,IAAEC,KAAE,CAAC,GAAE,CAAC,GAAEC;AAAA,EAAC;AAAA,EAAC,gBAAgBD,IAAE;AAAC,QAAIC,IAAEC;AAAE,UAAMC,KAAE,KAAK,eAAa,UAAQ;AAAS,QAAIC,KAAE,GAAEC,KAAE,GAAEC,KAAEN,GAAE;AAAG,UAAMO,KAAE,EAAE,CAACD,MAAGA,GAAE;AAAY,QAAGA,KAAEF,KAAE,WAAWE,GAAE,QAAQH,EAAC,KAAG,EAAE,KAAG,KAAGG,KAAE,SAAS,cAAc,KAAK,GAAEA,GAAE,MAAM,aAAW,WAAU,KAAK,SAAO,SAAS,MAAM,QAAQA,EAAC,IAAG,EAAEA,IAAE,KAAK,GAAG,CAAC,IAAE,MAAIN,GAAE,QAAM,MAAIA,GAAE,WAAW,GAAEI,GAAE,CAAAE,GAAE,MAAMH,EAAC,IAAE,GAAGC,EAAC,MAAKE,GAAE,MAAM,YAAUH,KAAE,WAAS,OAAO,IAAE;AAAA,SAAO;AAAC,MAAAI,OAAI,KAAK,SAAO,SAAS,MAAM,QAAQD,EAAC,GAAEF,KAAEE,GAAE,sBAAsB,EAAEH,EAAC,IAAE,KAAK,IAAI,IAAG,UAAQF,KAAE,OAAO,mBAAiB,WAASA,KAAE,SAAOA,GAAE,UAAQ,CAAC;AAAE,UAAIF,KAAEO,GAAE,KAAK,eAAa,gBAAc,cAAc;AAAE,MAAAP,KAAE,IAAEK,OAAIA,KAAEL;AAAA,IAAE;AAAC,UAAMS,KAAE,iBAAiBF,EAAC;AAAE,WAAM,kBAAgBE,GAAE,cAAY,KAAK,gBAAcJ,MAAG,WAAWI,GAAE,WAAW,KAAG,GAAEJ,MAAG,WAAWI,GAAE,YAAY,KAAG,MAAIJ,MAAG,WAAWI,GAAE,UAAU,KAAG,GAAEJ,MAAG,WAAWI,GAAE,aAAa,KAAG,KAAIH,KAAE,WAAWG,GAAE,KAAK,eAAa,gBAAc,cAAc,CAAC,KAAG,GAAED,KAAE,UAAQL,KAAEI,GAAE,kBAAgB,WAASJ,MAAGA,GAAE,YAAYI,EAAC,IAAEN,GAAE,MAAIM,GAAE,OAAO,GAAE,EAAC,KAAI,EAAEF,IAAE,GAAG,GAAE,KAAI,EAAEC,IAAE,GAAG,EAAC;AAAA,EAAC;AAAA,EAAC,YAAW;AAAC,UAAK,EAAC,YAAWN,IAAE,OAAMC,IAAE,cAAaC,IAAE,OAAMC,GAAC,IAAE;AAAK,QAAIC,KAAE,EAAC,KAAI,GAAE,KAAI,EAAC;AAAE,QAAGJ,GAAE,CAAAI,KAAE,EAAC,KAAI,KAAG,GAAE,KAAI,IAAE,EAAC;AAAA,aAAUD,GAAE,QAAO;AAAC,YAAMH,KAAEG,GAAE,CAAC,EAAE,KAAIE,KAAEF,GAAEA,GAAE,SAAO,CAAC,EAAE;AAAI,MAAAC,KAAEH,MAAGC,KAAE,EAAC,KAAIF,IAAE,KAAIK,GAAC,IAAE,EAAC,KAAI,KAAGA,IAAE,KAAI,KAAGL,GAAC;AAAA,IAAC;AAAC,WAAM,EAAC,GAAEE,KAAEE,KAAE,EAAC,KAAI,GAAE,KAAI,EAAC,GAAE,GAAEF,KAAE,EAAC,KAAI,GAAE,KAAI,EAAC,IAAEE,GAAC;AAAA,EAAC;AAAA,EAAC,mBAAkB;AAAC,QAAIH,IAAE,EAAC,cAAaC,IAAE,OAAMC,IAAE,YAAWC,IAAE,UAASC,IAAE,aAAYC,IAAE,YAAWC,IAAE,MAAKC,IAAE,OAAMC,IAAE,QAAOC,IAAE,SAAQC,GAAC,IAAE,MAAKC,KAAE,GAAEC,KAAE,GAAEC,KAAE,GAAEC,KAAE;AAAE,IAAAJ,KAAEI,KAAE,KAAGJ,GAAE,QAAQ,KAAK,IAAI,IAAEF,GAAED,EAAC,MAAIO,KAAEN,GAAED,EAAC,EAAE,OAAK,IAAGP,KAAEC,KAAEC,KAAE,UAAQ,SAAO,OAAMA,MAAGD,OAAIa,MAAG;AAAI,eAAUb,MAAKQ,IAAE;AAAC,YAAMP,KAAED,GAAE;AAAG,MAAAC,MAAG,UAAQF,MAAGE,GAAE,MAAM,QAAM,IAAGA,GAAE,MAAM,OAAK,MAAIA,GAAE,MAAM,MAAI,IAAGD,GAAE,UAAQU,KAAET,GAAE,MAAMF,EAAC,IAAE,MAAIY,KAAE,KAAG,GAAG,EAAEA,IAAE,GAAG,CAAC,OAAKV,GAAE,MAAMF,EAAC,IAAE,IAAGa,MAAGZ,GAAE,MAAIA,GAAE,KAAIU,QAAKC,MAAGX,GAAE,MAAIA,GAAE;AAAA,IAAG;AAAC,QAAGE,MAAGU,MAAGT,IAAE;AAAC,UAAIF,KAAE,iBAAiBE,EAAC,GAAED,KAAE,WAAUI,KAAEN,KAAE,UAAQ,UAASO,KAAE,WAAWN,GAAEC,MAAGF,KAAE,SAAO,MAAM,CAAC;AAAE,MAAAa,MAAGN,IAAEH,MAAGG,IAAEH,MAAG,WAAWH,GAAEC,KAAEI,EAAC,CAAC;AAAE,iBAAUN,MAAKQ,GAAE,CAAAR,GAAE,OAAK,EAAEA,GAAE,GAAG,IAAE,EAAEI,EAAC,KAAG,EAAEJ,GAAE,MAAIA,GAAE,MAAIA,GAAE,GAAG,IAAE,EAAEa,EAAC,KAAG,EAAEA,EAAC,IAAE,EAAER,KAAED,EAAC,MAAIJ,GAAE,GAAG,MAAMD,EAAC,IAAE,GAAG,EAAEY,KAAEC,IAAE,GAAG,CAAC,OAAM,EAAEZ,GAAE,MAAIA,GAAE,GAAG,KAAG,EAAEK,KAAED,EAAC,KAAG,EAAEJ,GAAE,GAAG,IAAE,EAAEa,KAAET,EAAC,KAAG,EAAES,EAAC,IAAE,EAAET,EAAC,MAAIJ,GAAE,GAAG,MAAMD,EAAC,IAAE,IAAI,EAAEa,IAAE,GAAG,CAAC;AAAA,IAAM;AAAC,QAAIE,IAAEC,IAAEC,KAAE,CAAC,GAAG,KAAK,YAAY;AAAE,QAAGA,GAAE,SAAO,MAAIF,KAAEP,GAAES,GAAE,CAAC,CAAC,GAAED,KAAER,GAAES,GAAE,CAAC,CAAC,IAAGF,MAAGC,IAAE;AAAC,UAAIf,KAAE;AAAE,iBAAUC,MAAKO,GAAE,CAAAP,GAAE,KAAG,KAAK,aAAa,IAAIA,GAAE,KAAK,KAAGa,GAAE,OAAO,QAAQb,EAAC,IAAE,MAAIA,GAAE,GAAG,MAAMF,EAAC,IAAE,GAAG,EAAEC,MAAGc,GAAE,MAAIC,GAAE,MAAK,GAAG,CAAC,QAAMf,MAAGC,GAAE,MAAIA,GAAE;AAAA,IAAG;AAAA,EAAC;AAAA,EAAC,cAAcH,IAAE;AAAC,UAAK,EAAC,OAAMC,IAAE,QAAOC,GAAC,IAAE;AAAK,QAAG,CAACD,MAAG,CAACD,GAAE;AAAO,QAAGA,GAAE,MAAIA,GAAE,GAAG,WAAW;AAAO,UAAMG,KAAEH,GAAE,MAAI,SAAS,cAAc,KAAK;AAAE,MAAEG,IAAE,KAAK,GAAG,CAAC,CAAC,GAAE,EAAEA,IAAEH,GAAE,KAAK,GAAE,EAAEG,IAAEH,GAAE,WAAW;AAAE,UAAMI,KAAEJ,GAAE;AAAK,IAAAI,OAAIA,cAAa,cAAYD,GAAE,YAAYC,EAAC,IAAED,GAAE,YAAUH,GAAE,OAAK;AAAI,UAAMK,KAAE,CAAC;AAAE,IAAAH,GAAE,QAAS,CAACF,IAAEC,OAAI;AAAC,MAAAD,GAAE,MAAIK,GAAE,KAAKJ,EAAC;AAAA,IAAC,CAAE;AAAE,UAAMK,KAAEN,GAAE;AAAM,QAAIO,KAAE;AAAK,QAAGF,GAAE,QAAO;AAAC,MAAAE,KAAEL,GAAEG,GAAE,OAAQ,CAACL,IAAEC,OAAI,KAAK,IAAIA,KAAEK,EAAC,IAAE,KAAK,IAAIN,KAAEM,EAAC,IAAEL,KAAED,EAAE,CAAC;AAAA,IAAC;AAAC,UAAMQ,KAAED,MAAGA,GAAE,MAAIA,GAAE,GAAG,aAAWA,GAAE,QAAMP,GAAE,QAAMO,GAAE,GAAG,cAAYA,GAAE,KAAG;AAAK,IAAAN,GAAE,aAAaE,IAAEF,GAAE,SAASO,EAAC,IAAEA,KAAE,IAAI,GAAER,GAAE,KAAGG,IAAE,KAAK,KAAK,eAAcH,EAAC;AAAA,EAAC;AAAA,EAAC,cAAcA,IAAEC,KAAE,OAAG;AAAC,UAAMC,KAAE,QAAMF,KAAE,SAAOA,GAAE;AAAG,QAAG,CAACE,MAAG,CAACA,GAAE,WAAW;AAAO,UAAMC,KAAE,KAAK,GAAG,CAAC;AAAE,QAAGD,GAAE,UAAU,SAASC,EAAC,MAAI,EAAED,IAAEC,EAAC,GAAE,KAAK,KAAK,iBAAgBH,EAAC,IAAGA,GAAE,SAAO,CAACC,GAAE,QAAOC,GAAE,gBAAgB,aAAa,GAAEA,GAAE,gBAAgB,YAAY,GAAE,MAAKA,GAAE,MAAM,OAAK;AAAI,SAAK,KAAK,eAAcF,EAAC;AAAE,UAAMI,KAAE,IAAI,YAAY,CAAC;AAAE,IAAAF,GAAE,cAAcE,EAAC,GAAEJ,GAAE,OAAKA,GAAE,GAAG,OAAO,GAAEA,GAAE,KAAG;AAAA,EAAK;AAAA,EAAC,aAAaA,KAAE,GAAEC,KAAE,KAAK,OAAO,YAAY,GAAE;AAAC,QAAIC,IAAEC,IAAEC,IAAEC;AAAE,QAAG,CAACJ,GAAE,QAAM;AAAG,UAAMK,KAAE,KAAK,MAAK,EAAC,OAAMC,IAAE,SAAQC,GAAC,IAAE;AAAK,IAAAR,KAAE,UAAUA,MAAG,GAAG,SAAS,CAAC,KAAG;AAAE,UAAMS,KAAE,KAAK,iBAAiBT,EAAC;AAAE,QAAG,CAACQ,MAAG,CAACD,GAAEE,EAAC,KAAGF,GAAE,SAAO,KAAG,KAAK,MAAM,UAAQJ,KAAE,UAAQD,KAAEK,GAAED,EAAC,MAAI,WAASJ,KAAE,SAAOA,GAAE,OAAO,CAAC,MAAI,WAASC,KAAE,SAAOA,GAAE,QAAM,KAAG,KAAK,WAAW,IAAE,EAAE,QAAM;AAAG,QAAIO,KAAEV,KAAEM,KAAE,IAAE;AAAG,SAAK,eAAa,MAAIA,MAAGN,OAAIO,GAAE,SAAO,MAAIG,KAAE,KAAIJ,OAAIC,GAAE,SAAO,KAAG,MAAIP,OAAIU,KAAE;AAAI,UAAMC,KAAEJ,GAAEE,EAAC,EAAE,OAAK,KAAK,QAAM,IAAE;AAAI,QAAGH,OAAIG,MAAG,KAAK,IAAIE,KAAEH,GAAE,OAAO,KAAK,IAAI,CAAC,IAAE,EAAE,QAAM;AAAG,SAAK,iBAAiB;AAAE,UAAMI,KAAEJ,GAAE;AAAU,MAAE,KAAK,WAAU,KAAK,GAAG,cAAc,CAAC;AAAE,UAAMK,MAAG,UAAQT,KAAEG,GAAED,EAAC,MAAI,WAASF,KAAE,SAAOA,GAAE,OAAO,CAAC,MAAI,MAAKU,MAAG,UAAQT,KAAEE,GAAEE,EAAC,MAAI,WAASJ,KAAE,SAAOA,GAAE,OAAO,CAAC,MAAI;AAAK,SAAK,aAAa,IAAIS,GAAE,KAAK,GAAE,KAAK,cAAcA,EAAC;AAAE,QAAIC,KAAEF,GAAE,IAAGG,KAAEF,GAAE;AAAG,IAAAF,MAAGX,OAAI,MAAIA,KAAE,YAAWc,KAAE;AAAM,UAAME,KAAE,KAAK,QAAM,SAAO,QAAOC,KAAE,KAAK,QAAM,SAAO;AAAO,WAAOH,OAAI,KAAK,aAAa,IAAIF,GAAE,KAAK,GAAEA,GAAE,aAAWZ,IAAEc,GAAE,iBAAiB,GAAE,KAAK,cAAc,GAAEA,GAAE,UAAU,IAAI,KAAKd,EAAC,OAAM,MAAMS,KAAE,IAAEQ,KAAED,EAAC,EAAE,IAAGD,OAAIF,GAAE,aAAWb,IAAEe,GAAE,iBAAiB,GAAE,KAAK,cAAc,GAAEA,GAAE,UAAU,IAAI,KAAKf,EAAC,MAAK,QAAQS,KAAE,IAAEO,KAAEC,EAAC,EAAE,IAAGV,GAAE,QAAQ,KAAK,IAAI,IAAEG,IAAEH,GAAE,OAAO,KAAK,IAAI,IAAEG,IAAEH,GAAE,YAAY,GAAE,KAAK,SAASC,EAAC,GAAE;AAAA,EAAE;AAAA,EAAC,uBAAsB;AAAC,UAAMT,KAAE,oBAAI,OAAIC,KAAE,oBAAI,OAAIC,KAAE,KAAK,iBAAiB,WAAW,KAAK,OAAO,WAAU,CAAC,IAAE,EAAE,KAAG,CAAC;AAAE,eAAUC,MAAK,KAAK,OAAO,CAAAD,GAAE,IAAIC,EAAC,IAAEH,GAAE,IAAIG,EAAC,IAAEF,GAAE,IAAIE,EAAC;AAAE,eAAUF,MAAK,KAAK,aAAa,CAAAD,GAAE,IAAI,KAAK,OAAOC,EAAC,CAAC;AAAE,eAAUA,MAAKD,GAAE,MAAK,cAAcC,EAAC,GAAE,KAAK,cAAcA,EAAC;AAAE,eAAUC,MAAKD,GAAE,CAAAD,GAAE,IAAIE,EAAC,KAAG,KAAK,cAAcA,EAAC;AAAE,SAAK,mBAAmB,GAAE,KAAK,iBAAiB;AAAA,EAAC;AAAA,EAAC,qBAAoB;AAAC,QAAG,CAAC,KAAK,MAAM,KAAK,IAAI,KAAG,CAAC,KAAK,MAAM,KAAK,IAAI,EAAE,OAAO;AAAO,UAAMF,KAAE;AAAc,QAAIC,KAAE,KAAK,GAAG,CAAC;AAAE,QAAGA,GAAE,YAAUC,MAAK,KAAK,QAAO;AAAC,YAAMC,KAAED,GAAE;AAAG,MAAAC,OAAIA,GAAE,QAAQ,QAAM,GAAGD,GAAE,KAAK,IAAGC,GAAE,UAAU,SAAS,iBAAiB,IAAE,KAAK,iBAAiB,CAAC,EAAE,IAAID,EAAC,IAAEC,GAAE,gBAAgBH,EAAC,IAAEG,GAAE,aAAaH,IAAE,MAAM,IAAE,KAAK,MAAM,KAAK,IAAI,EAAE,OAAO,SAASE,EAAC,KAAGC,GAAE,UAAU,SAASF,EAAC,MAAI,EAAEE,IAAEF,EAAC,GAAE,KAAK,KAAK,eAAcC,EAAC,IAAGC,GAAE,gBAAgBH,EAAC,MAAIG,GAAE,UAAU,SAASF,EAAC,MAAI,EAAEE,IAAEF,EAAC,GAAE,KAAK,KAAK,iBAAgBC,EAAC,IAAGC,GAAE,aAAaH,IAAE,MAAM;AAAA,IAAG;AAAA,EAAC;AAAA,EAAC,oBAAmB;AAAC,UAAK,EAAC,MAAKA,IAAE,cAAaC,IAAE,YAAWC,IAAE,OAAMC,IAAE,aAAYC,IAAE,YAAWC,GAAC,IAAE,MAAKC,KAAE,KAAK;AAAQ,QAAG,CAACA,MAAG,CAACJ,GAAE;AAAO,QAAIK,KAAED,GAAE,QAAQN,EAAC,GAAEQ,KAAEF,GAAE,OAAON,EAAC,IAAEO,IAAEE,KAAE,GAAEC,KAAE,MAAGN;AAAE,IAAAD,MAAGF,MAAGM,KAAE,CAACG,OAAID,KAAE,IAAGF,MAAGF,KAAGE,KAAEF,KAAEK,OAAID,KAAE,GAAEF,MAAGF,QAAKE,KAAEG,OAAID,KAAE,GAAEF,MAAGF,KAAGE,KAAE,CAACF,KAAEK,OAAID,KAAE,IAAGF,MAAGF,MAAII,OAAIH,GAAE,QAAQN,EAAC,IAAEO,IAAED,GAAE,OAAON,EAAC,IAAEO,KAAEC;AAAA,EAAE;AAAA,EAAC,YAAYR,IAAEC,IAAE;AAAC,UAAMC,KAAE,MAAKE,KAAE,YAAWC,KAAE;AAAgB,QAAIC,KAAE,OAAGC,KAAE;AAAK,UAAMC,KAAE,MAAI;AAAC,MAAAF,OAAIA,KAAE,MAAGC,OAAIA,GAAE,OAAO,GAAEA,KAAE,OAAM,EAAEN,IAAEI,EAAC,GAAEJ,GAAE,aAAW,EAAEA,IAAEG,EAAC,GAAE,WAAY,MAAI;AAAC,UAAEH,IAAEG,EAAC;AAAA,MAAC,GAAG,GAAG,IAAG,KAAK,OAAO,gBAAgB,KAAGJ,GAAE,MAAI,KAAK,MAAM,KAAK,IAAI,EAAE,OAAO,QAAQA,EAAC,IAAE,OAAKE,GAAE,cAAc,GAAEA,GAAE,kBAAkB,IAAG,KAAK,KAAK,QAAOF,EAAC;AAAA,IAAE;AAAE,MAAEC,IAAEI,EAAC,GAAEJ,GAAE,MAAIA,GAAE,QAAQ,cAAYA,GAAE,QAAQ,WAAS,IAAG,OAAOA,GAAE,QAAQ,SAAQ,OAAOA,GAAE,QAAQ,YAAWA,GAAE,iBAAiB,SAAS,MAAI;AAAC,MAAAO,GAAE;AAAA,IAAC,CAAE,GAAEP,GAAE,iBAAiB,QAAQ,MAAI;AAAC,MAAAO,GAAE;AAAA,IAAC,CAAE,GAAE,WAAY,MAAI;AAAC,YAAMN,KAAED,GAAE;AAAW,MAAAC,MAAGF,GAAE,OAAKC,GAAE,WAASO,GAAE,IAAEF,OAAIC,KAAE,EAAE,CAAC,GAAEL,GAAE,aAAaK,IAAEN,EAAC;AAAA,IAAG,GAAG,GAAG;AAAA,EAAC;AAAA,EAAC,cAAcD,IAAE;AAAC,UAAMC,KAAED,MAAGA,GAAE;AAAG,QAAG,CAACC,GAAE;AAAO,UAAMC,KAAE,oBAAI;AAAI,QAAIC,KAAE,MAAM,KAAKF,GAAE,iBAAiB,oCAAoC,CAAC;AAAE,IAAAA,GAAE,QAAQ,WAASE,GAAE,KAAKF,EAAC,GAAEE,GAAE,IAAK,CAAAH,OAAG;AAAC,MAAAA,cAAa,mBAAiBE,GAAE,IAAIF,EAAC,IAAEA,cAAa,eAAaA,GAAE,QAAQ,YAAUA,GAAE,MAAM,kBAAgB,QAAQA,GAAE,QAAQ,OAAO,MAAK,OAAOA,GAAE,QAAQ;AAAA,IAAQ,CAAE;AAAE,eAAUC,MAAKC,GAAE,MAAK,YAAYF,IAAEC,EAAC;AAAA,EAAC;AAAA,EAAC,eAAeD,IAAE;AAAC,QAAIC;AAAE,UAAMC,KAAEF,GAAE,QAAOG,KAAED,KAAE,SAASA,GAAE,QAAQ,SAAO,IAAG,EAAE,KAAG,IAAE,IAAGE,KAAE,KAAK,OAAOD,EAAC,GAAEE,KAAEL,GAAE;AAAc,QAAG,CAACE,MAAG,CAACE,MAAG,CAACC,GAAE;AAAO,UAAMC,KAAE,CAAC,CAAC,KAAK,aAAa,IAAIH,EAAC,KAAGC,GAAE;AAAW,IAAAE,MAAGD,GAAE,UAAU,GAAEC,GAAE,SAAO,CAAC,MAAI,KAAKA,EAAC,MAAI,KAAK,aAAa,OAAOH,EAAC,GAAE,KAAK,aAAa,QAAM,KAAK,iBAAiB,GAAEA,OAAI,KAAK,SAAO,UAAQF,KAAE,KAAK,YAAU,WAASA,KAAE,SAAOA,GAAE,cAAY,KAAK,KAAK,QAAQ;AAAA,EAAC;AAAA,EAAC,QAAQD,IAAEC,KAAE,GAAEC,KAAE,GAAEC,KAAE,GAAEC,KAAE,GAAE;AAAC,QAAG,KAAK,OAAO,UAAU,EAAE,QAAO,KAAK,KAAK,oBAAoB;AAAE,UAAK,EAAC,OAAMC,IAAE,cAAaC,IAAE,MAAKC,IAAE,OAAMC,GAAC,IAAE,MAAKC,KAAED,GAAE,QAAOE,KAAE,KAAK,IAAI,KAAK,MAAMR,IAAED,EAAC,KAAG,KAAK,KAAG,IAAI;AAAE,QAAIU,KAAE;AAAE,QAAGA,KAAED,KAAE,MAAIA,KAAE,MAAIJ,KAAE,IAAEJ,KAAEI,KAAEL,KAAE,GAAE,CAACQ,GAAE;AAAO,QAAIG,KAAE,KAAK,MAAKC,KAAER,MAAGC,KAAE,IAAE;AAAG,UAAMQ,KAAEd,GAAE,QAAQO,EAAC,IAAEM;AAAE,QAAG,EAAC,WAAUE,GAAC,IAAE,KAAK,oBAAoBD,EAAC;AAAE,SAAK,IAAIH,EAAC,IAAE,KAAGH,GAAEI,EAAC,EAAE,MAAI,SAAS,gBAAgB,YAAU,KAAK,eAAa,UAAQ,SAAS,IAAE,MAAIA,KAAEG,KAAGH,KAAEP,MAAGC,KAAEK,KAAE,IAAEC,KAAE,IAAEA,KAAE,IAAED,KAAE,IAAEC,KAAE,IAAEA,KAAE,KAAGA,KAAE,MAAIT,MAAG,MAAIC,KAAEQ,KAAEG,IAAE,KAAK,QAAQH,IAAE,EAAC,YAAW,OAAG,UAASZ,GAAE,OAAO,eAAe,EAAC,CAAC;AAAA,EAAC;AAAA,EAAC,QAAQA,IAAE;AAAC,UAAMC,KAAED,GAAE,QAAOE,KAAED,MAAG,EAAEA,EAAC,IAAEA,GAAE,UAAQ;AAAK,QAAIE,IAAEC;AAAE,IAAAF,OAAI,WAASA,GAAE,gBAAcE,KAAE,WAAUD,KAAED,GAAE,gBAAc,WAASA,GAAE,eAAaE,KAAE,cAAY,WAASF,GAAE,iBAAeE,KAAE,eAAcA,MAAGJ,GAAE,eAAe,GAAEA,GAAE,gBAAgB,GAAEC,MAAG,CAACA,GAAE,aAAa,UAAU,KAAG,KAAKG,EAAC,EAAED,EAAC,KAAG,KAAK,KAAK,SAAQH,EAAC;AAAA,EAAC;AAAA,EAAC,UAAUA,IAAE;AAAC,UAAMC,KAAED,GAAE,UAAQ;AAAE,SAAK,QAAQ,KAAK,gBAAgBC,EAAC,GAAE,EAAC,UAAS,EAAC,CAAC;AAAA,EAAC;AAAA,EAAC,SAASD,IAAEC,KAAE,GAAE;AAAC,UAAMC,KAAE,KAAK;AAAK,SAAK,WAASA,IAAE,KAAK,OAAKF,IAAE,KAAK,OAAO,gBAAgB,KAAG,KAAK,kBAAkB,GAAEA,OAAIE,OAAI,KAAK,mBAAmB,GAAE,KAAK,KAAK,UAASF,IAAEE,IAAED,EAAC;AAAA,EAAE;AAAA,EAAC,YAAW;AAAC,QAAID,KAAE,KAAK,YAAWC,KAAE,KAAK;AAAY,SAAK,cAAc,GAAE,KAAK,eAAaD,MAAG,KAAK,gBAAcC,MAAG,KAAK,QAAQ,KAAK,MAAK,EAAC,UAAS,GAAE,YAAW,MAAE,CAAC;AAAA,EAAC;AAAA,EAAC,WAAU;AAAC,QAAID;AAAE,cAAQA,KAAE,KAAK,aAAW,WAASA,MAAGA,GAAE,OAAO,GAAE,CAAC;AAAA,EAAC;AAAA,EAAC,WAAU;AAAC,SAAK,OAAO,aAAa,KAAG,KAAK,eAAe;AAAA,EAAC;AAAA,EAAC,kBAAkBA,IAAE;AAAC,SAAK,OAAKA,GAAE,QAAQ,KAAK,IAAI,MAAI,KAAK,kBAAkB,GAAE,KAAK,qBAAqB,IAAG,KAAK,KAAGA,GAAE,QAAQ;AAAA,EAAC;AAAA,EAAC,iBAAgB;AAAC,SAAK,aAAa,QAAM,KAAK,KAAK,QAAQ;AAAA,EAAC;AAAA,EAAC,OAAOA,KAAE,MAAKC,KAAE,MAAK;AAAC,SAAK,QAAQ,GAAE,KAAK,QAAM,EAAE,MAAK,KAAK,WAAS,MAAK,KAAK,cAAYD,MAAG,KAAK,aAAY,KAAK,cAAYC,MAAG,KAAK,aAAY,KAAK,eAAe;AAAA,EAAC;AAAA,EAAC,QAAQD,KAAE,GAAE,EAAC,UAASC,KAAE,KAAK,OAAO,UAAU,GAAE,YAAWC,KAAE,KAAK,OAAO,YAAY,EAAC,IAAE,CAAC,GAAE;AAAC,QAAG,KAAK,UAAQ,EAAE,QAAQ;AAAO,IAAAF,KAAE,UAAUA,MAAG,GAAG,SAAS,CAAC,KAAG;AAAE,UAAMG,KAAE,KAAK,iBAAiBH,EAAC,GAAE,EAAC,MAAKI,IAAE,cAAaC,IAAE,OAAMC,IAAE,OAAMC,IAAE,SAAQC,GAAC,IAAE,MAAKC,KAAEF,GAAE,QAAOG,KAAEJ,MAAGD,KAAE,IAAE;AAAG,QAAG,CAACG,MAAG,CAACC,GAAE;AAAO,QAAG,KAAK,SAAON,IAAE;AAAC,YAAMF,KAAE,IAAI,MAAM,gBAAe,EAAC,SAAQ,MAAG,YAAW,KAAE,CAAC;AAAE,UAAG,KAAK,KAAK,gBAAeA,IAAED,EAAC,GAAEC,GAAE,iBAAiB;AAAA,IAAM;AAAC,QAAG,KAAK,aAAaD,IAAEE,EAAC,EAAE;AAAO,QAAIS,KAAEJ,GAAEJ,EAAC,EAAE;AAAI,QAAG,KAAK,YAAW;AAAC,YAAMF,KAAE,KAAK,YAAWC,KAAEM,GAAE,OAAOJ,EAAC,IAAEM;AAAE,UAAG,MAAID,GAAE,CAAAE,MAAGV,KAAE,KAAK,MAAM,WAAWD,KAAE,EAAE,IAAE,CAAC;AAAA,WAAM;AAAC,QAAAW,KAAE,CAACA,IAAEA,KAAEV,IAAEU,KAAEV,EAAC,EAAE,OAAQ,SAASD,IAAEC,IAAE;AAAC,iBAAO,KAAK,IAAIA,KAAEC,EAAC,IAAE,KAAK,IAAIF,KAAEE,EAAC,IAAED,KAAED;AAAA,QAAC,CAAE;AAAA,MAAC;AAAA,IAAC;AAAC,IAAAW,MAAGD,IAAE,KAAK,IAAIF,GAAE,OAAOJ,EAAC,IAAEO,EAAC,IAAE,MAAIH,GAAE,MAAM,EAAC,GAAEH,KAAEM,KAAE,GAAE,GAAEN,KAAE,IAAEM,IAAE,UAASV,GAAC,CAAC,GAAE,KAAK,SAASE,EAAC;AAAA,EAAE;AAAA,EAAC,eAAeH,IAAE;AAAC,QAAG,KAAK,SAAQ;AAAC,YAAK,EAAC,WAAUC,GAAC,IAAE,KAAK,oBAAoB;AAAE,WAAK,QAAQA,IAAED,EAAC;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,YAAW;AAAC,SAAK,QAAQ,KAAK,OAAK,CAAC;AAAA,EAAC;AAAA,EAAC,YAAW;AAAC,SAAK,QAAQ,KAAK,OAAK,CAAC;AAAA,EAAC;AAAA,EAAC,mBAAkB;AAAC,SAAK,aAAa,MAAM,GAAE,EAAE,KAAK,WAAU,KAAK,GAAG,cAAc,CAAC;AAAE,UAAMA,KAAE,CAAC,WAAU,WAAU,aAAY,WAAW;AAAE,eAAUC,MAAK,KAAK,QAAO;AAAC,YAAMC,KAAED,GAAE;AAAG,UAAGC,IAAE;AAAC,QAAAA,GAAE,oBAAoB,GAAE,KAAK,cAAc,GAAEA,GAAE,UAAU,OAAO,GAAGF,EAAC;AAAE,cAAMG,KAAEF,GAAE;AAAW,QAAAE,MAAGD,GAAE,UAAU,OAAO,KAAKC,EAAC,OAAM,KAAKA,EAAC,IAAI;AAAA,MAAC;AAAA,IAAC;AAAC,SAAK,qBAAqB;AAAA,EAAC;AAAA,EAAC,SAASH,IAAEC,IAAE;AAAC,QAAIC,IAAEC,IAAEC,IAAEC;AAAE,UAAMC,KAAE,KAAK,SAAQC,MAAG,UAAQL,KAAE,KAAK,MAAM,KAAK,IAAI,MAAI,WAASA,KAAE,SAAOA,GAAE,QAAM,GAAEM,MAAG,UAAQL,KAAE,KAAK,MAAM,KAAK,IAAI,MAAI,WAASA,KAAE,SAAOA,GAAE,QAAM,GAAEM,KAAE,KAAK,aAAW,KAAK;AAAY,QAAIC,KAAE,MAAM,QAAQT,EAAC,IAAEA,KAAE,CAACA,EAAC;AAAE,UAAMU,KAAE,CAAC;AAAE,eAAUX,MAAKU,GAAE,CAAAC,GAAE,KAAK,EAAEX,EAAC,CAAC;AAAE,SAAK,OAAO,OAAOA,IAAE,GAAE,GAAGW,EAAC;AAAE,aAAQX,KAAE,GAAEA,KAAE,KAAK,OAAO,QAAOA,KAAI,MAAK,OAAOA,EAAC,EAAE,QAAMA;AAAE,eAAUA,MAAKW,GAAE,MAAK,KAAK,mBAAkBX,IAAEA,GAAE,KAAK;AAAE,QAAG,KAAK,QAAMA,OAAI,KAAK,QAAMW,GAAE,SAAQ,KAAK,cAAc,GAAEL,IAAE;AAAC,YAAML,MAAG,UAAQG,KAAE,KAAK,MAAM,KAAK,IAAI,MAAI,WAASA,KAAE,SAAOA,GAAE,QAAM,GAAEF,MAAG,UAAQG,KAAE,KAAK,MAAM,KAAK,IAAI,MAAI,WAASA,KAAE,SAAOA,GAAE,QAAM,GAAEF,KAAE,KAAK,MAAM,UAAQ,GAAEO,KAAE,KAAK,QAAMF,KAAEN,KAAEA,KAAEM,IAAEG,KAAE,KAAK,QAAMJ,KAAEN,KAAEA,KAAEM;AAAE,MAAAE,MAAG,MAAIN,MAAGH,MAAG,KAAK,SAAOM,GAAE,QAAQ,KAAK,IAAI,KAAGI,IAAEJ,GAAE,OAAO,KAAK,IAAI,KAAGI,KAAGJ,GAAE,MAAM,EAAC,CAAC,KAAK,eAAa,MAAI,GAAG,GAAE,KAAGL,GAAC,CAAC,KAAGU,MAAGX,MAAG,KAAK,SAAOM,GAAE,OAAO,KAAK,IAAI,KAAGK,IAAEL,GAAE,QAAQ,KAAK,IAAI,KAAGK,IAAEL,GAAE,YAAY;AAAA,IAAE;AAAC,eAAUN,MAAKW,GAAE,MAAK,KAAK,aAAYX,IAAEA,GAAE,KAAK;AAAA,EAAC;AAAA,EAAC,aAAaA,IAAE;AAAC,SAAK,SAAS,GAAEA,EAAC;AAAA,EAAC;AAAA,EAAC,YAAYA,IAAE;AAAC,SAAK,SAAS,KAAK,OAAO,QAAOA,EAAC;AAAA,EAAC;AAAA,EAAC,YAAYA,IAAE;AAAC,UAAMC,KAAE,KAAK,OAAO;AAAO,IAAAD,MAAGA,KAAEC,KAAEA,MAAGA;AAAE,UAAMC,KAAE,KAAK,OAAOF,EAAC;AAAE,QAAGE,IAAE;AAAC,WAAK,cAAcA,IAAE,IAAE,GAAE,KAAK,OAAO,OAAOF,IAAE,CAAC;AAAE,eAAQA,KAAE,GAAEA,KAAE,KAAK,OAAO,QAAOA,KAAI,MAAK,OAAOA,EAAC,EAAE,QAAMA;AAAE,WAAK,cAAc,GAAE,KAAK,QAAQ,KAAK,MAAK,EAAC,UAAS,GAAE,YAAW,MAAE,CAAC,GAAE,KAAK,KAAK,gBAAeE,EAAC;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,gBAAe;AAAC,UAAK,EAAC,SAAQD,IAAE,UAASC,IAAE,OAAMC,IAAE,QAAOC,IAAE,cAAaC,IAAE,YAAWC,GAAC,IAAE;AAAK,QAAG,CAACH,GAAE;AAAO,UAAMI,KAAEF,KAAE,UAAQ,UAASG,KAAEH,KAAE,gBAAc;AAAe,QAAGH,IAAE;AAAC,UAAID,KAAE,KAAK,IAAIC,GAAEM,EAAC,GAAE,EAAEN,GAAE,sBAAsB,EAAEK,EAAC,GAAE,GAAG,CAAC,GAAEJ,KAAE,iBAAiBD,EAAC,GAAEE,KAAE,WAAUE,KAAED,KAAE,UAAQ;AAAS,MAAAJ,MAAG,WAAWE,GAAEC,MAAGC,KAAE,SAAO,MAAM,CAAC,IAAE,WAAWF,GAAEC,KAAEE,EAAC,CAAC,GAAE,KAAK,cAAYL;AAAA,IAAC;AAAC,QAAIQ,IAAEC,KAAE;AAAE,eAAS,CAACT,IAAEC,EAAC,KAAIE,GAAE,QAAQ,GAAE;AAAC,UAAID,KAAE,GAAEE,KAAE;AAAE,OAACH,GAAE,MAAIO,MAAGN,KAAEM,GAAE,KAAIJ,KAAEI,GAAE,QAAO,EAAC,KAAIN,IAAE,KAAIE,GAAC,IAAE,KAAK,gBAAgBH,EAAC,GAAGO,KAAEP,KAAGC,KAAE,EAAEA,IAAE,GAAG,GAAEE,KAAE,EAAEA,IAAE,GAAG,GAAEH,GAAE,MAAIC,IAAED,GAAE,MAAIG,IAAEH,GAAE,MAAIQ,IAAEA,MAAGP,KAAGG,MAAGL,KAAEG,GAAE,SAAO,OAAKM,MAAGL;AAAA,IAAE;AAAC,IAAAK,KAAE,EAAEA,IAAE,GAAG,GAAE,KAAK,aAAWA,IAAET,OAAIA,GAAE,YAAYM,EAAC,IAAEG,IAAET,GAAE,YAAYI,KAAE,cAAY,YAAY,IAAEK,KAAG,KAAK,QAAM,KAAK,YAAY,GAAE,KAAK,QAAM,KAAK,aAAa,GAAE,KAAK,UAAQ,EAAE,QAAM,KAAK,eAAe,GAAE,KAAK,OAAK,KAAK,IAAI,GAAE,KAAK,IAAI,KAAK,MAAK,KAAK,MAAM,SAAO,CAAC,CAAC,GAAE,KAAK,qBAAqB,GAAE,KAAK,KAAK,SAAS;AAAA,EAAC;AAAA,EAAC,YAAYT,IAAEC,KAAE,OAAGC,KAAE,OAAG;AAAC,eAASF,OAAIA,KAAE,KAAK;AAAM,UAAMG,KAAE,MAAKC,KAAED,GAAE,SAAQE,KAAEF,GAAE,YAAWG,KAAEH,GAAE,MAAMH,EAAC,KAAG;AAAE,QAAG,CAACM,MAAG,CAACF,GAAE,QAAOJ,KAAE,KAAK,OAAK,KAAG;AAAE,QAAIO,KAAE,KAAGH,GAAE,QAAQ,GAAEI,KAAE,GAAGD,KAAED,GAAE,QAAM,IAAEA,GAAE,MAAK,GAAG,GAAEG,KAAED,IAAEE,KAAEF;AAAE,SAAK,cAAY,SAAKN,OAAIO,KAAE,GAAGF,KAAED,GAAE,MAAID,OAAI,IAAEC,GAAE,MAAK,GAAG,GAAEI,KAAE,GAAGH,KAAED,GAAE,MAAID,OAAI,IAAEC,GAAE,MAAK,GAAG;AAAG,QAAIK,KAAE,CAACH,IAAEC,IAAEC,EAAC,EAAE,OAAQ,SAASX,IAAEC,IAAE;AAAC,aAAO,KAAK,IAAIA,EAAC,IAAE,KAAK,IAAID,EAAC,IAAEC,KAAED;AAAA,IAAC,CAAE;AAAE,WAAOE,KAAEU,KAAEA,KAAE,IAAE,IAAEA,KAAE,KAAG,KAAGA;AAAA,EAAC;AAAA,EAAC,oBAAmB;AAAC,UAAK,EAAC,MAAKZ,IAAE,OAAMC,IAAE,UAASC,IAAE,cAAaC,GAAC,IAAE;AAAK,QAAG,CAACD,MAAG,CAACD,GAAED,EAAC,EAAE;AAAO,QAAII,KAAE;AAAE,IAAAD,MAAG,KAAK,UAAQ,KAAK,MAAM,MAAM,SAAO,QAAOF,GAAED,EAAC,EAAE,OAAO,QAAS,CAAAA,OAAG;AAAC,MAAAA,GAAE,OAAKI,KAAE,KAAK,IAAIA,IAAEJ,GAAE,GAAG,YAAY;AAAA,IAAE,CAAE,IAAGE,GAAE,MAAM,SAAOE,KAAE,GAAGA,EAAC,OAAK;AAAA,EAAE;AAAA,EAAC,gBAAgBJ,IAAE;AAAC,eAAUC,MAAK,KAAK,MAAM,YAAUC,MAAKD,GAAE,OAAO,KAAGC,GAAE,UAAQF,GAAE,QAAOC,GAAE;AAAM,WAAM;AAAA,EAAE;AAAA,EAAC,iBAAiBD,KAAE,GAAE;AAAC,QAAIC;AAAE,UAAMC,KAAE,oBAAI;AAAI,QAAG,EAAC,SAAQC,IAAE,YAAWC,IAAE,aAAYC,IAAE,OAAMC,IAAE,MAAKC,GAAC,IAAE;AAAK,QAAGF,IAAE;AAAC,MAAAD,KAAEA,MAAG,UAAQH,KAAE,KAAK,OAAO,KAAK,OAAO,SAAO,CAAC,MAAI,WAASA,KAAE,SAAOA,GAAE,QAAM;AAAE,UAAIO,KAAE;AAAE,MAAAA,KAAEL,MAAGA,GAAE,UAAQ,EAAE,QAAMA,GAAE,UAAQ,EAAE,UAAQ,KAAGA,GAAE,QAAQ,KAAK,IAAI,IAAEG,GAAEC,EAAC,KAAGD,GAAEC,EAAC,EAAE,OAAK,GAAE,KAAK,eAAaC,MAAG,KAAK,MAAMA,KAAEJ,EAAC,IAAEA,KAAG,KAAK,SAAO,KAAK,iBAAeI,MAAG;AAAI,YAAMC,KAAED,KAAEH,KAAEL,IAAEU,KAAEF,KAAEH,MAAGL,KAAE,IAAGW,KAAE,KAAK,aAAW,CAAC,IAAG,GAAE,CAAC,IAAE,CAAC,CAAC;AAAE,iBAAUX,MAAK,KAAK,OAAO,YAAUC,MAAKU,IAAE;AAAC,cAAMR,KAAEH,GAAE,MAAIC,KAAEG,IAAEC,KAAEF,KAAEH,GAAE,MAAIA,GAAE;AAAI,QAAAG,KAAEO,MAAGL,KAAEI,MAAGP,GAAE,IAAIF,EAAC;AAAA,MAAC;AAAA,IAAC;AAAC,WAAOE;AAAA,EAAC;AAAA,EAAC,oBAAoBF,IAAE;AAAC,UAAK,EAAC,aAAYC,IAAE,YAAWC,IAAE,QAAOC,IAAE,OAAMC,IAAE,SAAQC,GAAC,IAAE,MAAKC,KAAEF,GAAE,QAAOG,KAAEJ,GAAE,QAAOK,KAAEL,GAAE,CAAC,GAAEM,KAAEN,GAAEI,KAAE,CAAC,GAAEG,KAAE,KAAK,OAAO,QAAQ;AAAE,QAAIC,KAAE,GAAEC,KAAE,GAAEC,KAAE,GAAEC,KAAE,WAASd,KAAE,OAAK,QAAMK,KAAE,SAAOA,GAAE,OAAO,KAAK,IAAI,MAAI,KAAGL;AAAE,IAAAU,OAAII,MAAG,MAAGb,KAAG,KAAK,cAAYa,KAAEN,GAAE,MAAI,MAAGC,GAAE,QAAMK,MAAGZ,IAAEW,KAAE,KAAIC,KAAEL,GAAE,MAAIA,GAAE,MAAI,MAAGA,GAAE,QAAMK,MAAGZ,IAAEW,KAAE,MAAIC,KAAE,KAAK,IAAIN,GAAE,OAAK,GAAE,KAAK,IAAIM,IAAEL,GAAE,GAAG,CAAC;AAAE,QAAIM,KAAEN,IAAEO,KAAEb,GAAE,KAAM,CAAAH,OAAG;AAAC,YAAMC,KAAED,GAAE,MAAI,MAAGe,GAAE,KAAIb,KAAEF,GAAE,MAAIA,GAAE,MAAI,MAAGA,GAAE;AAAI,aAAOe,KAAEf,IAAEc,MAAGb,MAAGa,KAAEZ;AAAA,IAAC,CAAE;AAAE,WAAOc,OAAIA,KAAEP,KAAGG,KAAE,KAAK,gBAAgBI,GAAE,KAAK,GAAEL,KAAEC,KAAEC,KAAEP,IAAE,EAAC,MAAKK,IAAE,WAAUC,GAAC;AAAA,EAAC;AAAA,EAAC,sBAAqB;AAAC,UAAK,EAAC,WAAUZ,GAAC,IAAE,KAAK,oBAAoB;AAAE,SAAK,SAASA,EAAC;AAAA,EAAC;AAAA,EAAC,UAAS;AAAC,QAAG,CAAC,EAAE,OAAO,EAAE,SAAS,KAAK,KAAK,EAAE;AAAO,SAAK,QAAM,EAAE;AAAQ,UAAK,EAAC,WAAUA,IAAE,UAASC,IAAE,OAAMC,IAAE,QAAOC,IAAE,SAAQC,GAAC,IAAE,MAAKC,KAAE,KAAK,OAAO,SAAS;AAAE,IAAAL,GAAE,oBAAoB,SAAQ,KAAK,SAAQ,EAAC,SAAQ,OAAG,SAAQ,MAAE,CAAC,GAAEA,GAAE,oBAAoB,WAAU,KAAK,SAAS,GAAE,OAAO,oBAAoB,UAAS,KAAK,QAAQ,GAAEI,OAAIA,GAAE,QAAQ,GAAE,KAAK,UAAQ,OAAMD,MAAGA,GAAE,QAAS,CAAAH,OAAG;AAAC,WAAK,cAAcA,EAAC;AAAA,IAAC,CAAE,GAAE,KAAK,cAAc,GAAEC,OAAIA,GAAE,oBAAoB,UAAS,KAAK,QAAQ,GAAEA,GAAE,gBAAcC,MAAGA,GAAE,gBAAcD,GAAE,YAAY,GAAGC,GAAE,UAAU;AAAG,eAAS,CAACD,IAAEC,EAAC,KAAI,OAAO,QAAQG,EAAC,EAAE,iBAAcJ,MAAGC,MAAGF,GAAE,UAAU,OAAOE,EAAC;AAAE,SAAK,QAAM,MAAK,KAAK,WAAS,MAAK,KAAK,OAAK,GAAE,KAAK,SAAO,CAAC;AAAE,UAAMI,KAAE,KAAK,OAAO,IAAI,OAAO;AAAE,SAAK,SAAO,oBAAI,OAAIA,MAAG,KAAK,OAAO,IAAI,SAAQA,EAAC;AAAA,EAAC;AAAC;AAAC,OAAO,eAAe,GAAE,WAAU,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,CAAC,GAAE,OAAO,eAAe,GAAE,YAAW,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,CAAC,GAAE,OAAO,eAAe,GAAE,WAAU,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,CAAC;AAAE,IAAM,KAAG,SAASN,IAAE;AAAC,MAAG,CAAC,EAAEA,EAAC,EAAE,QAAO;AAAE,QAAMC,KAAE,OAAO,SAAQC,KAAE,OAAO,aAAYC,KAAEF,KAAEC,IAAEE,KAAEJ,GAAE,sBAAsB,GAAEK,KAAED,GAAE,IAAEH,IAAEK,KAAEF,GAAE,QAAOG,KAAEF,KAAEC;AAAE,MAAGL,KAAEM,MAAGJ,KAAEE,GAAE,QAAO;AAAE,MAAGJ,KAAEI,MAAGF,KAAEI,GAAE,QAAO;AAAI,MAAGF,KAAEJ,MAAGM,KAAEJ,GAAE,QAAO;AAAI,MAAIK,KAAEF;AAAE,EAAAD,KAAEJ,OAAIO,MAAGP,KAAEI,KAAGE,KAAEJ,OAAIK,MAAGD,KAAEJ;AAAG,QAAMM,KAAED,KAAEN,KAAE;AAAI,SAAO,KAAK,MAAMO,EAAC;AAAC;AAAzR,IAA2R,KAAG,EAAE,eAAa,OAAO,UAAQ,CAAC,OAAO,YAAU,CAAC,OAAO,SAAS;AAAe,IAAI;AAAG,IAAM,KAAG,CAAC,WAAU,cAAa,iEAAgE,6CAA4C,+CAA8C,wEAAuE,UAAS,UAAS,SAAQ,SAAQ,SAAQ,qBAAoB,oEAAoE,EAAE,KAAK,GAAG;AAA9Y,IAAgZ,KAAG,CAAAT,OAAG;AAAC,MAAGA,MAAG,IAAG;AAAC,eAAS,MAAI,SAAS,cAAc,KAAK,EAAE,MAAM,EAAC,IAAI,gBAAe;AAAC,aAAO,KAAG,MAAG;AAAA,IAAE,EAAC,CAAC;AAAE,QAAG;AAAC,UAAG,GAAG,CAAAA,GAAE,MAAM,EAAC,eAAc,KAAE,CAAC;AAAA,WAAM;AAAC,cAAMC,KAAE,OAAO,WAAS,SAAS,KAAK,WAAUC,KAAE,OAAO,WAAS,SAAS,KAAK;AAAW,QAAAF,GAAE,MAAM,GAAE,SAAS,KAAK,SAAS,EAAC,KAAIC,IAAE,MAAKC,IAAE,UAAS,OAAM,CAAC;AAAA,MAAC;AAAA,IAAC,SAAOF,IAAE;AAAA,IAAC;AAAA,EAAC;AAAC;AAA7sB,IAA+sB,KAAG,MAAI;AAAC,QAAMA,KAAE;AAAS,MAAIC,IAAEC,KAAE,IAAGC,KAAE,IAAGC,KAAE;AAAG,SAAOJ,GAAE,qBAAmBE,KAAE,qBAAoBC,KAAE,kBAAiBC,KAAE,uBAAqBJ,GAAE,4BAA0BE,KAAE,2BAA0BC,KAAE,wBAAuBC,KAAE,4BAA2BF,OAAID,KAAE,EAAC,SAAQ,SAASA,KAAED,GAAE,iBAAgB;AAAC,WAAM,8BAA4BE,KAAED,GAAEC,EAAC,EAAE,QAAQ,oBAAoB,IAAED,GAAEC,EAAC,EAAE;AAAA,EAAC,GAAE,MAAK,WAAU;AAAC,WAAOF,GAAEI,EAAC,KAAGJ,GAAEG,EAAC,EAAE;AAAA,EAAC,GAAE,cAAa,WAAU;AAAC,WAAOH,GAAEI,EAAC;AAAA,EAAC,EAAC,IAAGH;AAAC;AAAhpC,IAAkpC,KAAG,EAAC,UAAS,MAAG,WAAU,MAAG,eAAc,SAAQ,UAAS,EAAC,SAAQ,EAAC,WAAU,sBAAqB,UAAS,sBAAqB,OAAM,mBAAkB,OAAM,kBAAiB,EAAC,GAAE,aAAY,QAAO,eAAc,OAAG,eAAc,OAAG,SAAQ,MAAI,OAAO,WAAW,yCAAyC,EAAE,SAAQ,cAAa,cAAa,iBAAgB,OAAG,aAAY,SAAQ,gBAAe,QAAO,aAAY,MAAG,YAAW,EAAC,WAAU,MAAE,GAAE,UAAS,OAAG,WAAU,iBAAgB,WAAU,aAAY,eAAc,MAAG,MAAK,MAAK,UAAS,EAAC,QAAO,SAAQ,QAAO,SAAQ,WAAU,SAAQ,QAAO,QAAO,UAAS,QAAO,SAAQ,QAAO,WAAU,QAAO,YAAW,QAAO,WAAU,OAAM,GAAE,MAAK,OAAO,OAAO,OAAO,OAAO,CAAC,GAAE,CAAC,GAAE,EAAC,OAAM,SAAQ,MAAK,QAAO,MAAK,YAAW,OAAM,qDAAoD,OAAM,gDAA+C,aAAY,mBAAkB,mBAAkB,0BAAyB,gBAAe,kCAAiC,gBAAe,kCAAiC,cAAa,sBAAqB,aAAY,qBAAoB,eAAc,qBAAoB,kBAAiB,oBAAmB,mBAAkB,2BAA0B,UAAS,WAAU,CAAC,GAAE,UAAS,MAAK,gBAAe,MAAG,WAAU,cAAa,YAAW,GAAE,KAAI,EAAC,aAAY,yMAAwM,MAAK,qPAAoP,GAAE,WAAU,MAAG,OAAM,OAAM;AAAE,IAAI;AAAJ,IAAO;AAAG,CAAC,SAASD,IAAE;AAAC,EAAAA,GAAEA,GAAE,OAAK,CAAC,IAAE,QAAOA,GAAEA,GAAE,QAAM,CAAC,IAAE,SAAQA,GAAEA,GAAE,UAAQ,CAAC,IAAE,WAAUA,GAAEA,GAAE,gBAAc,CAAC,IAAE,iBAAgBA,GAAEA,GAAE,UAAQ,CAAC,IAAE;AAAS,EAAE,OAAK,KAAG,CAAC,EAAE,GAAE,SAASA,IAAE;AAAC,EAAAA,GAAEA,GAAE,UAAQ,CAAC,IAAE,WAAUA,GAAEA,GAAE,UAAQ,CAAC,IAAE,WAAUA,GAAEA,GAAE,QAAM,CAAC,IAAE,SAAQA,GAAEA,GAAE,UAAQ,CAAC,IAAE;AAAS,EAAE,OAAK,KAAG,CAAC,EAAE;AAAE,IAAI,KAAG;AAAP,IAAU,KAAG;AAAb,IAAgB,KAAG;AAAnB,IAAsB,KAAG;AAAK,IAAM,KAAG,MAAI;AAAC,MAAIA,KAAE,IAAGC,KAAE;AAAG,QAAMC,KAAE,GAAG,YAAY;AAAE,MAAGA,IAAE;AAAC,UAAMC,KAAED,GAAE,UAASE,KAAEF,GAAE,SAAS;AAAE,QAAGC,MAAGC,IAAE;AAAC,UAAIC,KAAED,GAAE,QAAM,QAAOE,KAAEF,GAAE,aAAW;AAAO,MAAAH,KAAEI,OAAIH,GAAE,OAAO,MAAM,KAAG,KAAI,CAACD,MAAGK,MAAGA,GAAE,YAAUL,KAAEK,GAAE,QAAQ,YAAU,KAAIL,MAAG,WAASA,OAAID,KAAE,MAAIC,MAAG,CAACI,MAAGF,GAAE,OAAO,SAAO,IAAE,OAAKC,GAAE,QAAM,KAAG;AAAA,IAAI;AAAA,EAAC;AAAC,SAAM,EAAC,MAAKJ,IAAE,MAAKC,IAAE,OAAM,EAAC;AAAC;AAA5T,IAA8T,KAAG,MAAI;AAAC,QAAMD,KAAE,IAAI,IAAI,SAAS,GAAG,EAAE,MAAKC,KAAED,GAAE,MAAM,CAAC,EAAE,MAAM,GAAG,GAAEE,KAAED,GAAEA,GAAE,SAAO,CAAC,GAAEE,KAAED,MAAG,WAAW,KAAKA,EAAC,KAAG,SAASD,GAAE,IAAI,KAAG,KAAI,EAAE,KAAG;AAAE,SAAM,EAAC,MAAKD,IAAE,MAAKC,GAAE,KAAK,GAAG,GAAE,OAAME,GAAC;AAAC;AAA9e,IAAgf,KAAG,MAAI;AAAC,QAAK,EAAC,MAAKH,IAAE,OAAMC,GAAC,IAAE,GAAG;AAAE,MAAG,CAACD,GAAE;AAAO,MAAIE,KAAE,SAAS,cAAc,eAAeF,EAAC,IAAI;AAAE,MAAGE,MAAGA,GAAE,cAAc,IAAI,YAAY,SAAQ,EAAC,SAAQ,MAAG,YAAW,KAAE,CAAC,CAAC,GAAE,GAAG,YAAY,EAAE;AAAO,QAAMC,KAAE,SAAS,iBAAiB,mBAAmBH,EAAC,IAAI;AAAE,EAAAG,GAAE,WAASD,KAAEC,GAAEF,KAAE,CAAC,GAAEC,MAAGA,GAAE,cAAc,IAAI,YAAY,SAAQ,EAAC,SAAQ,MAAG,YAAW,KAAE,CAAC,CAAC;AAAE;AAA90B,IAAg1B,KAAG,MAAI;AAAC,MAAG,UAAK,GAAG,SAAS,KAAK;AAAO,QAAMF,KAAE,GAAG,YAAY;AAAE,MAAG,WAAM,QAAMA,KAAE,SAAOA,GAAE,QAAQ,MAAM;AAAO,QAAK,EAAC,MAAKC,IAAE,OAAMC,GAAC,IAAE,GAAG,GAAE,EAAC,MAAKC,GAAC,IAAE,GAAG;AAAE,EAAAH,OAAIC,OAAIE,KAAEH,GAAE,OAAOE,KAAE,CAAC,KAAG,KAAG,MAAGF,GAAE,MAAM,KAAI,GAAG;AAAC;AAAxhC,IAA0hC,KAAG,MAAI;AAAC,QAAI,aAAa,EAAE,GAAE,eAAgB,MAAI;AAAC,OAAG;AAAA,EAAC,CAAE;AAAC;AAAnlC,IAAqlC,KAAG,MAAI;AAAC,SAAO,iBAAiB,cAAa,IAAG,KAAE,GAAE,WAAY,MAAI;AAAC,OAAG;AAAA,EAAC,GAAG,GAAG;AAAC;AAAE,OAAK,8BAA8B,KAAK,SAAS,UAAU,IAAE,GAAG,IAAE,SAAS,iBAAiB,oBAAmB,EAAE;AAAG,IAAM,KAAG;AAAgB,IAAM,KAAN,cAAiB,EAAC;AAAA,EAAC,cAAcA,IAAEC,IAAEC,IAAE;AAAC,UAAMC,KAAE,KAAK,SAAS,UAAUD,IAAE,KAAK,KAAG;AAAG,IAAAA,GAAE,MAAI,YAAUA,GAAE,QAAM,YAAU,OAAOC,MAAG,KAAK,SAASD,IAAEC,EAAC;AAAA,EAAC;AAAA,EAAC,cAAcH,IAAEC,IAAEC,IAAE;AAAC,IAAAA,GAAE,WAASA,GAAE,QAAQ,QAAQ,GAAEA,GAAE,UAAQ,QAAOA,GAAE,UAAQ;AAAA,EAAM;AAAA,EAAC,SAASF,IAAEC,IAAEC,IAAEC,IAAE;AAAC,MAAE,KAAK,SAAS,WAAU,EAAE;AAAE,eAAUH,MAAKC,GAAE,QAAO;AAAC,YAAMA,KAAED,GAAE;AAAQ,MAAAC,MAAGD,GAAE,UAAQE,MAAGD,GAAE,MAAM,IAAG;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,UAAS;AAAC,QAAID;AAAE,UAAMC,KAAE,KAAK,UAASC,KAAED,GAAE,WAAUE,KAAEF,GAAE,SAAS;AAAE,QAAG,CAACC,MAAG,CAACA,GAAE,iBAAe,CAACC,GAAE;AAAO,UAAK,EAAC,IAAGC,IAAE,WAAUC,IAAE,SAAQC,IAAE,YAAWC,GAAC,IAAEJ;AAAE,QAAG,CAACC,MAAG,CAACG,MAAG,CAACF,MAAG,CAACC,MAAGA,GAAE,oBAAkBA,GAAE,UAAQ,EAAE,QAAMA,GAAE,UAAQ,EAAE,QAAQ;AAAO,IAAAA,GAAE,cAAc;AAAE,QAAIE,KAAE,KAAK,YAAYL,EAAC;AAAE,QAAG,CAACK,GAAE;AAAO,SAAK,SAAS,QAAM,GAAG,eAAcN,GAAE,UAAU,OAAO,EAAE,GAAEA,GAAE,UAAU,IAAI,gBAAgB,GAAEG,GAAE,MAAM,kBAAgB,QAAQE,EAAC;AAAK,UAAME,KAAEP,GAAE,sBAAsB;AAAE,YAAM,UAAQF,KAAE,OAAO,mBAAiB,WAASA,KAAE,SAAOA,GAAE,UAAQ,MAAI,OAAO,OAAOE,GAAE,OAAM,EAAC,UAAS,YAAW,KAAI,GAAGA,GAAE,YAAU,OAAO,OAAO,MAAK,MAAK,GAAGA,GAAE,aAAW,OAAO,OAAO,MAAK,QAAO,QAAO,OAAM,QAAO,OAAM,GAAGO,GAAE,KAAK,MAAK,QAAO,GAAGA,GAAE,MAAM,MAAK,UAAS,SAAQ,CAAC;AAAE,UAAK,EAAC,GAAEC,IAAE,GAAEC,IAAE,OAAMC,IAAE,SAAQC,GAAC,IAAEL;AAAE,QAAGK,IAAE;AAAC,YAAMb,MAAG,CAACA,IAAEC,IAAEC,IAAEC,OAAI;AAAC,cAAMC,KAAEH,KAAED,IAAEK,KAAEF,KAAED;AAAE,eAAO,CAAAD,OAAGC,OAAID,KAAED,MAAGI,KAAEC,MAAG;AAAA,MAAE,GAAGC,GAAE,OAAMM,IAAE,GAAE,CAAC;AAAE,MAAAN,GAAE,GAAG,kBAAkB,MAAI;AAAC,QAAAD,GAAE,MAAM,UAAQL,GAAEM,GAAE,KAAK,IAAE;AAAA,MAAE,CAAE;AAAA,IAAC;AAAC,IAAAA,GAAE,GAAG,gBAAgB,MAAI;AAAC,MAAAL,GAAE,QAAQ;AAAA,IAAC,CAAE,GAAEK,GAAE,OAAO,IAAEM,IAAEN,GAAE,OAAO,IAAE,GAAEA,GAAE,OAAO,IAAE,GAAEA,GAAE,OAAO,IAAEM,IAAEN,GAAE,MAAM,EAAC,GAAEI,IAAE,GAAEC,IAAE,OAAMC,IAAE,UAASC,KAAE,MAAG,MAAI,cAAa,KAAE,CAAC,GAAEP,GAAE,aAAWL,GAAE,QAAQ;AAAA,EAAC;AAAA,EAAC,SAASD,IAAEC,IAAE;AAAC,UAAMC,KAAE,KAAK;AAAS,IAAAF,GAAE,MAAIC,IAAE,KAAK,QAAQD,IAAEC,EAAC,EAAE,KAAM,CAAAA,OAAG;AAAC,YAAK,EAAC,WAAUE,IAAE,SAAQC,IAAE,YAAWC,IAAE,IAAGC,GAAC,IAAEN;AAAE,UAAGE,GAAE,UAAU,KAAG,CAACC,MAAG,CAACC,GAAE;AAAO,MAAAD,GAAE;AAAa,YAAMI,KAAE,CAAC,CAACL,GAAE,eAAeF,EAAC,KAAG,KAAK,YAAYA,EAAC;AAAE,UAAG,KAAK,OAAO,WAAW,KAAGM,IAAE;AAAC,QAAAA,GAAE,iBAAiB,eAAe,CAAAN,OAAG;AAAC,UAAAA,GAAE,eAAe;AAAA,QAAC,CAAE;AAAE,cAAMA,KAAE,SAAS,cAAc,KAAK;AAAE,UAAEA,IAAE,oBAAoB,GAAEG,GAAE,YAAYH,EAAC;AAAA,MAAC;AAAC,UAAGK,MAAGE,IAAE;AAAC,cAAMH,KAAEH,GAAE,aAAYK,KAAE,KAAK,IAAIF,GAAE,WAAUA,GAAE,UAAU;AAAE,YAAIK,KAAE;AAAK,SAACF,GAAE,WAASD,KAAE,SAAOG,KAAE,SAAS,cAAc,KAAK,GAAE,EAAEA,IAAE,gBAAgB,GAAEA,GAAE,MAAIJ,IAAEF,GAAE,YAAYM,EAAC;AAAG,cAAMC,KAAE,MAAI;AAAC,UAAAD,OAAI,EAAEA,IAAE,eAAe,GAAE,WAAY,MAAI;AAAC,YAAAA,OAAIA,GAAE,OAAO,GAAEA,KAAE;AAAA,UAAK,GAAG,GAAG;AAAA,QAAE;AAAE,SAACD,KAAEH,IAAE,IAAI,QAAS,CAACL,IAAEC,OAAI;AAAC,gBAAMC,KAAE,IAAI;AAAM,UAAAA,GAAE,SAAOF,IAAEE,GAAE,UAAQD,IAAEC,GAAE,MAAIM;AAAA,QAAC,CAAE,GAAG,KAAM,MAAI;AAAC,UAAAN,GAAE,YAAYF,EAAC,GAAEA,GAAE,QAAM,GAAG,SAAQ,KAAK,SAAS,KAAK,UAASA,EAAC,GAAE,KAAK,OAAOA,EAAC,EAAE,KAAM,MAAI;AAAC,YAAAU,GAAE,GAAE,KAAK,SAAS,KAAKV,EAAC;AAAA,UAAC,GAAI,MAAI;AAAA,UAAC,CAAE,GAAES,MAAG,WAAY,MAAI;AAAC,YAAAC,GAAE;AAAA,UAAC,GAAGJ,KAAE,OAAK,MAAI,GAAG;AAAA,QAAC,GAAI,MAAI;AAAC,UAAAJ,GAAE,YAAYF,EAAC,GAAEE,GAAE,cAAcF,EAAC;AAAA,QAAC,CAAE;AAAA,MAAC,OAAK;AAAC,cAAMG,KAAE,KAAK,UAAUH,IAAE,aAAa,GAAEI,KAAE,KAAK,UAAUJ,IAAE,MAAM,GAAEK,KAAE,EAAC,OAAMH,GAAE,sBAAoBA,GAAE,QAAQ,OAAM,UAASE,KAAE,OAAI,EAAC;AAAE,YAAIE,KAAEJ,GAAE,UAAUF,IAAE,WAAW,KAAG,QAAOO,KAAE;AAAG,QAAAL,GAAE,eAAeF,EAAC,MAAI,WAASG,KAAEF,GAAE,WAAWI,EAAC,IAAE,YAAUF,KAAEF,GAAE,YAAYI,EAAC,IAAE,UAAQF,KAAEF,GAAE,UAAUI,EAAC,IAAEE,KAAE,OAAGN,GAAE,KAAK,SAAS,IAAGM,MAAGD,OAAIA,KAAEL,GAAE,aAAW,aAAW,KAAIC,GAAE,YAAYF,EAAC,GAAEE,GAAE,cAAcF,IAAEM,EAAC;AAAA,MAAC;AAAC,UAAIE;AAAA,IAAC,GAAI,MAAI;AAAC,MAAAN,GAAE,SAASF,IAAE,iBAAiB;AAAA,IAAC,CAAE;AAAA,EAAC;AAAA,EAAC,QAAQA,IAAEC,IAAE;AAAC,WAAO,IAAI,QAAS,CAACC,IAAEE,OAAI;AAAC,UAAIC;AAAE,YAAMC,KAAE,KAAK,UAASC,KAAEP,GAAE;AAAG,MAAAM,GAAE,aAAaN,EAAC,GAAEM,GAAE,YAAYN,EAAC;AAAE,UAAIQ,KAAE,KAAK,UAAUR,IAAE,SAAS;AAAE,UAAG,YAAU,OAAOQ,OAAIA,KAAE,EAAEA,EAAC,IAAG,CAACA,MAAG,CAAC,EAAEA,EAAC,GAAE;AAAC,YAAGA,KAAE,SAAS,cAAc,KAAK,GAAEA,cAAa,kBAAiB;AAAC,cAAIN,KAAE,IAAGC,KAAEH,GAAE;AAAQ,UAAAE,KAAE,YAAU,OAAOC,MAAGA,KAAEA,GAAE,QAAQ,aAAY,EAAE,EAAE,UAAU,GAAE,GAAG,IAAE,SAASH,GAAE,QAAM,CAAC,QAAQ,UAAQK,KAAEC,GAAE,aAAW,WAASD,KAAE,SAAOA,GAAE,MAAM,WAAS,CAAC,IAAGG,GAAE,MAAIP,MAAG,IAAGO,GAAE,MAAIN,IAAEM,GAAE,YAAU,OAAGR,GAAE,UAAQQ,GAAE,aAAa,UAASR,GAAE,MAAM,GAAE,KAAK,SAAS,eAAeA,EAAC,MAAIQ,GAAE,gBAAc;AAAA,QAAO;AAAC,QAAAR,GAAE,SAAOQ,GAAE,aAAa,SAAQR,GAAE,KAAK;AAAA,MAAC;AAAC,QAAEQ,IAAE,gBAAgB,GAAER,GAAE,UAAQQ,IAAEF,GAAE,WAAWN,IAAEQ,IAAE,KAAE;AAAE,MAAAR,GAAE,UAAQ,IAAI,EAAEO,IAAE,EAAE,EAAC,iBAAgB,KAAE,GAAE,KAAK,OAAO,SAAS,KAAG,CAAC,GAAE,EAAC,SAAQC,IAAE,OAAM,CAACP,IAAEC,OAAII,GAAE,UAAUN,IAAE,SAAQ,QAAOE,EAAC,KAAG,QAAO,QAAO,CAACD,IAAEC,OAAII,GAAE,UAAUN,IAAE,UAAS,QAAOE,EAAC,KAAG,QAAO,OAAM,MAAI;AAAC,cAAMF,KAAEM,GAAE,OAAO,OAAO;AAAE,gBAAO,WAASN,MAAG,SAAOA,OAAIA;AAAA,MAAC,GAAE,OAAM,CAACC,IAAEC,OAAI;AAAC,YAAIC,IAAEC;AAAE,YAAGE,GAAE,aAAWA,GAAE,UAAU,EAAE,QAAM;AAAG,YAAGN,GAAE,WAAS,UAAQG,KAAEG,GAAE,SAAS,MAAI,WAASH,KAAE,SAAOA,GAAE,OAAO,QAAM;AAAG,YAAGD,IAAE;AAAC,gBAAMF,KAAEE,GAAE,aAAa,EAAE,CAAC;AAAE,cAAG,CAAC,KAAI,UAAS,YAAW,UAAS,SAAQ,UAAS,OAAO,EAAE,SAASF,GAAE,QAAQ,EAAE,QAAM;AAAA,QAAE;AAAC,YAAIK,KAAE,CAACH,MAAGA,GAAE,WAAS,UAAQE,KAAEJ,GAAE,cAAY,WAASI,KAAE,SAAOA,GAAE,SAASF,GAAE,MAAM;AAAG,eAAOI,GAAE,OAAOD,KAAE,iBAAe,eAAe,KAAG;AAAA,MAAE,GAAE,UAAS,MAAIC,GAAE,YAAU,eAAaA,GAAE,OAAO,iBAAiB,KAAG,OAAG,SAAQ,OAAG,eAAc,MAAG,YAAW,IAAE,GAAE,IAAG,EAAC,OAAM,CAAAN,OAAG;AAAC,QAAAE,GAAEF,EAAC;AAAA,MAAC,GAAE,OAAM,MAAI;AAAC,QAAAI,GAAE;AAAA,MAAC,GAAE,SAAQ,MAAI;AAAC,QAAAA,GAAE;AAAA,MAAC,EAAC,EAAC,CAAC,CAAC;AAAA,IAAC,CAAE;AAAA,EAAC;AAAA,EAAC,OAAOJ,IAAE;AAAC,WAAO,IAAI,QAAS,CAACC,IAAEC,OAAI;AAAC,YAAMC,KAAE,KAAK,UAASC,KAAED,GAAE,WAAU,EAAC,SAAQE,IAAE,WAAUC,IAAE,IAAGC,GAAC,IAAEP;AAAE,MAAAK,MAAGA,GAAE,cAAc;AAAE,YAAMG,KAAE,KAAK,YAAYR,EAAC;AAAE,UAAG,EAAEQ,MAAGD,MAAGD,MAAGD,MAAGD,IAAG,QAAO,KAAKF,GAAE;AAAE,YAAK,EAAC,GAAEO,IAAE,GAAEC,IAAE,OAAMC,IAAE,SAAQC,GAAC,IAAEJ,IAAEK,KAAE,MAAI;AAAC,QAAAb,GAAE,UAAQ,GAAG,YAAUY,OAAIN,GAAE,MAAM,UAAQ,KAAK,IAAI,KAAK,IAAI,GAAE,KAAG,IAAED,GAAE,UAAQ,IAAEM,GAAE,GAAE,CAAC,IAAE,KAAIN,GAAE,SAAO,KAAGA,GAAE,QAAMA,GAAE,cAAY,OAAIJ,GAAEI,EAAC;AAAA,MAAE,GAAES,KAAE,CAAAd,OAAG;AAAC,SAACA,GAAE,QAAM,QAAKA,GAAE,QAAM,SAAO,CAACA,GAAE,eAAa,EAAEI,IAAE,EAAE,GAAEE,GAAE,MAAM,UAAQ,IAAGN,GAAE,IAAI,gBAAec,EAAC,GAAEd,GAAE,IAAI,cAAac,EAAC,GAAEd,GAAE,IAAI,kBAAiBa,EAAC,GAAEZ,GAAED,EAAC;AAAA,MAAE;AAAE,MAAAK,GAAE,GAAG,gBAAeS,EAAC,GAAET,GAAE,GAAG,cAAaS,EAAC,GAAET,GAAE,GAAG,kBAAiBQ,EAAC,GAAER,GAAE,GAAG,CAAC,SAAQ,SAAS,GAAG,MAAI;AAAC,QAAAH,GAAE;AAAA,MAAC,CAAE,GAAEG,GAAE,MAAM,EAAC,GAAEI,IAAE,GAAEC,IAAE,OAAMC,IAAE,UAAS,GAAE,cAAa,KAAE,CAAC,GAAEN,GAAE,KAAK,SAAS;AAAE,YAAMU,KAAE,EAAC,OAAM,gBAAcV,GAAE,UAAQF,GAAE,sBAAoBA,GAAE,QAAQ,QAAM,OAAM,GAAEa,KAAE,KAAK,UAAUhB,IAAE,aAAa;AAAE,QAAEI,IAAE,EAAE,GAAED,GAAE,YAAYH,EAAC,GAAE,WAASgB,KAAEX,GAAE,WAAWU,EAAC,IAAE,YAAUC,KAAEX,GAAE,YAAYU,EAAC,IAAE,UAAQC,KAAEX,GAAE,UAAUU,EAAC,IAAEV,GAAE,MAAM,KAAI;AAAA,IAAC,CAAE;AAAA,EAAC;AAAA,EAAC,YAAYL,IAAE;AAAC,UAAK,EAAC,IAAGC,IAAE,SAAQC,IAAE,SAAQC,IAAE,SAAQC,GAAC,IAAEJ,IAAEK,KAAE,KAAK,UAASC,KAAED,GAAE;AAAU,QAAG,CAACJ,MAAG,CAACC,MAAG,CAACC,MAAG,CAACC,MAAG,GAAGD,EAAC,IAAE,KAAG,CAAC,KAAK,UAAUH,IAAE,MAAM,KAAG,CAACM,MAAGD,GAAE,UAAQ,GAAG,QAAQ,QAAM;AAAG,QAAG,QAAM,iBAAiBC,EAAC,EAAE,iBAAiB,iBAAiB,EAAE,QAAM;AAAG,UAAMC,KAAE,OAAO,kBAAgB;AAAK,QAAG,OAAKA,KAAEA,GAAE,QAAM,GAAG,QAAM;AAAG,QAAG,EAAC,KAAIC,IAAE,MAAKC,IAAE,OAAMC,IAAE,QAAOC,GAAC,IAAER,GAAE,sBAAsB,GAAE,EAAC,KAAIS,IAAE,MAAKC,IAAE,UAASC,IAAE,WAAUC,GAAC,IAAEX,GAAE;AAAY,QAAG,EAAEM,MAAGC,MAAGG,MAAGC,IAAG,QAAM;AAAG,UAAMC,KAAEZ,GAAE,UAAU,sBAAsB;AAAE,IAAAS,MAAGG,GAAE,MAAKJ,MAAGI,GAAE;AAAI,UAAMC,KAAE,MAAIJ,KAAE,MAAGC,MAAGL,KAAE,MAAGC,MAAIQ,KAAE,MAAIN,KAAE,MAAGG,MAAGP,KAAE,MAAGG,MAAIQ,KAAET,KAAEI;AAAE,QAAIM,KAAE,KAAK,OAAO,aAAa,KAAG;AAAG,WAAM,WAASA,OAAIA,KAAE,KAAK,IAAIV,KAAEC,KAAEG,KAAEC,EAAC,IAAE,MAAI,EAAC,GAAEE,IAAE,GAAEC,IAAE,OAAMC,IAAE,SAAQC,GAAC;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,UAAMpB,KAAE,MAAKC,KAAED,GAAE;AAAS,IAAAC,GAAE,GAAG,mBAAkBD,GAAE,QAAQ,GAAEC,GAAE,GAAG,wBAAuBD,GAAE,aAAa,GAAEC,GAAE,GAAG,wBAAuBD,GAAE,aAAa,GAAEC,GAAE,GAAG,SAAQD,GAAE,OAAO;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,UAAMA,KAAE,MAAKC,KAAED,GAAE;AAAS,IAAAC,GAAE,IAAI,mBAAkBD,GAAE,QAAQ,GAAEC,GAAE,IAAI,wBAAuBD,GAAE,aAAa,GAAEC,GAAE,IAAI,wBAAuBD,GAAE,aAAa,GAAEC,GAAE,IAAI,SAAQD,GAAE,OAAO;AAAA,EAAC;AAAC;AAAC,OAAO,eAAe,IAAG,YAAW,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,aAAY,OAAM,SAAQ,EAAC,UAAS,EAAC,GAAE,WAAU,OAAG,MAAK,MAAG,aAAY,OAAM,EAAC,CAAC,GAAE,cAAY,OAAO,mBAAiB;AAAgB,IAAM,KAAG;AAAT,IAAgB,KAAG;AAAnB,IAA2B,KAAG;AAA9B,IAAoC,KAAG;AAAvC,IAAiD,KAAG;AAApD,IAA4D,KAAG;AAA/D,IAA4E,KAAG,CAACA,IAAEC,KAAE,CAAC,MAAI;AAAC,QAAMC,KAAE,IAAI,IAAIF,EAAC,GAAEG,KAAE,IAAI,gBAAgBD,GAAE,MAAM,GAAEE,KAAE,IAAI;AAAgB,aAAS,CAACJ,IAAEE,EAAC,KAAG,CAAC,GAAGC,IAAE,GAAG,OAAO,QAAQF,EAAC,CAAC,GAAE;AAAC,QAAIA,KAAEC,KAAE;AAAG,QAAG,QAAMF,IAAE;AAAC,UAAIA,KAAEC,GAAE,MAAM,kBAAkB;AAAE,MAAAD,MAAGI,GAAE,IAAI,SAAQ,KAAG,SAASJ,GAAE,CAAC,KAAG,GAAG,IAAE,SAASA,GAAE,CAAC,KAAG,GAAG,IAAE,EAAE;AAAA,IAAC,MAAM,CAAAI,GAAE,IAAIJ,IAAEC,EAAC;AAAA,EAAC;AAAC,MAAII,KAAED,KAAE,IAAGE,KAAEN,GAAE,MAAM,gBAAgB;AAAE,SAAOM,OAAID,MAAG,MAAMC,GAAE,CAAC,CAAC,KAAID;AAAC;AAA7Z,IAA+Z,KAAG,EAAC,MAAK,MAAK,UAAS,MAAG,YAAW,EAAC,OAAM,wBAAuB,WAAU,OAAM,GAAE,SAAQ,MAAG,eAAc,MAAG,YAAW,KAAG,GAAE,UAAS;AAAA,2GAAqN,aAAY,IAAG,OAAM,EAAC,QAAO,GAAE,OAAM,UAAS,UAAS,GAAE,KAAI,GAAE,OAAM,EAAC,GAAE,SAAQ,EAAC,UAAS,GAAE,aAAY,GAAE,UAAS,GAAE,KAAI,GAAE,IAAG,EAAC,EAAC;AAA93B,IAAg4B,KAAG,CAAC,SAAQ,QAAO,QAAO,UAAS,SAAQ,UAAS,OAAM,OAAM,cAAa,WAAU,OAAO;AAAE,IAAM,KAAN,cAAiB,EAAC;AAAA,EAAC,kBAAkBL,IAAEC,IAAEC,IAAE;AAAC,SAAK,YAAYA,EAAC;AAAA,EAAC;AAAA,EAAC,cAAcF,IAAEC,IAAEC,IAAE;AAAC,SAAK,WAAWA,EAAC;AAAA,EAAC;AAAA,EAAC,eAAeF,IAAEC,IAAE;AAAC,IAAAA,GAAE,QAAMA,GAAE,IAAI,MAAM,GAAEA,GAAE,MAAI;AAAM,UAAMC,KAAED,GAAE;AAAS,IAAAC,OAAIA,GAAE,SAAOA,GAAE,UAAQ,MAAKA,GAAE,MAAI,iBAAgBD,GAAE,WAAS;AAAM,UAAME,KAAEF,GAAE,WAAUG,KAAEH,GAAE;AAAc,QAAG,aAAWA,GAAE,QAAME,MAAGC,GAAE,CAAAD,GAAE,UAAU,OAAO,mBAAmB,GAAE,WAAS,iBAAiBA,EAAC,EAAE,iBAAiB,SAAS,MAAIA,GAAE,MAAM,UAAQ,SAAQ,WAAY,MAAI;AAAC,MAAAC,OAAID,MAAGC,GAAE,cAAYA,GAAE,WAAW,aAAaD,IAAEC,EAAC,GAAEA,GAAE,OAAO;AAAA,IAAE,GAAG,CAAC,GAAEH,GAAE,YAAU,QAAOA,GAAE,gBAAc;AAAA,QAAY,QAAKA,GAAE,MAAIA,GAAE,GAAG,aAAY,CAAAA,GAAE,GAAG,YAAYA,GAAE,GAAG,UAAU;AAAA,EAAC;AAAA,EAAC,cAAcD,IAAEC,IAAEC,IAAE;AAAC,IAAAA,GAAE,UAAQ,GAAG,SAAO,KAAK,UAAU;AAAA,EAAC;AAAA,EAAC,gBAAgBF,IAAEC,IAAEC,IAAE;AAAC,QAAIC,IAAEC;AAAE,QAAGF,GAAE,SAAO,IAAG;AAAC,UAAG;AAAC,kBAAQE,KAAE,UAAQD,KAAED,GAAE,OAAK,WAASC,KAAE,SAAOA,GAAE,cAAc,OAAO,MAAI,WAASC,MAAGA,GAAE,MAAM;AAAA,MAAC,SAAOJ,IAAE;AAAA,MAAC;AAAC;AAAA,IAAM;AAAC,QAAIK;AAAE,IAAAH,GAAE,SAAO,KAAGG,KAAE,EAAC,QAAO,SAAQ,OAAM,OAAM,IAAEH,GAAE,SAAO,OAAKG,KAAE,EAAC,OAAM,WAAU,MAAK,aAAY,IAAGA,MAAGH,GAAE,YAAUA,GAAE,SAAS,iBAAeA,GAAE,SAAS,cAAc,YAAY,KAAK,UAAUG,EAAC,GAAE,GAAG,GAAEH,GAAE,UAAQ,aAAaA,GAAE,MAAM;AAAA,EAAC;AAAA,EAAC,OAAOF,IAAEC,IAAE;AAAC,IAAAD,GAAE,eAAeC,EAAC,KAAG,CAACD,GAAE,UAAU,KAAG,KAAK,UAAU;AAAA,EAAC;AAAA,EAAC,UAAUA,IAAEC,IAAE;AAAC,IAAAA,GAAE,OAAO,QAAS,CAAAD,OAAG;AAAC,MAAAA,GAAE,OAAK,KAAK,aAAaA,EAAC,GAAE,KAAK,eAAeA,EAAC;AAAA,IAAE,CAAE;AAAA,EAAC;AAAA,EAAC,UAAUA,IAAE;AAAC,QAAG;AAAC,UAAIC,KAAE,KAAK,MAAMD,GAAE,IAAI;AAAE,UAAG,+BAA6BA,GAAE,QAAO;AAAC,YAAG,YAAUC,GAAE,MAAM,UAAQA,MAAK,MAAM,KAAK,SAAS,uBAAuB,kBAAkB,CAAC,EAAE,CAAAA,cAAa,qBAAmBA,GAAE,kBAAgBD,GAAE,WAASC,GAAE,QAAQ,QAAM;AAAA,MAAO,WAASD,GAAE,OAAO,MAAM,4CAA4C,KAAG,cAAYC,GAAE,OAAM;AAAC,cAAMD,KAAE,SAAS,eAAeC,GAAE,EAAE;AAAE,QAAAD,OAAIA,GAAE,QAAQ,QAAM;AAAA,MAAO;AAAA,IAAC,SAAOA,IAAE;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,gBAAgBA,IAAE;AAAC,UAAMC,KAAE,KAAK,SAAS,UAAUD,IAAE,KAAK,KAAG;AAAG,SAAK,SAAS,YAAYA,EAAC;AAAE,UAAME,KAAE,KAAK,UAASC,KAAE,IAAI;AAAe,IAAAD,GAAE,YAAYF,EAAC,GAAEG,GAAE,qBAAmB,WAAU;AAAC,MAAAA,GAAE,eAAa,eAAe,QAAMD,GAAE,UAAQ,GAAG,UAAQA,GAAE,YAAYF,EAAC,GAAE,QAAMG,GAAE,SAAOD,GAAE,WAAWF,IAAEG,GAAE,YAAY,IAAED,GAAE,SAASF,IAAE,QAAMG,GAAE,SAAO,uBAAqB,oBAAoB;AAAA,IAAE;AAAE,UAAMC,KAAEJ,GAAE,QAAM;AAAK,IAAAG,GAAE,KAAKC,KAAE,SAAO,OAAMH,KAAE,EAAE,GAAEE,GAAE,iBAAiB,gBAAe,mCAAmC,GAAEA,GAAE,iBAAiB,oBAAmB,gBAAgB,GAAEA,GAAE,KAAKC,EAAC,GAAEJ,GAAE,MAAIG;AAAA,EAAC;AAAA,EAAC,iBAAiBH,IAAE;AAAC,QAAIC,KAAE;AAAK,QAAG,EAAED,GAAE,GAAG,EAAE,CAAAC,KAAED,GAAE;AAAA,aAAY,YAAU,OAAOA,GAAE,KAAI;AAAC,YAAME,KAAEF,GAAE,IAAI,MAAM,KAAI,CAAC,EAAE,IAAI;AAAE,MAAAC,KAAEC,KAAE,SAAS,eAAeA,EAAC,IAAE;AAAA,IAAI;AAAC,QAAGD,IAAE;AAAC,UAAG,YAAUD,GAAE,QAAMC,GAAE,QAAQ,kBAAkB,GAAE;AAAC,QAAAA,KAAEA,GAAE,UAAU,IAAE;AAAE,cAAMC,KAAED,GAAE,QAAQ;AAAc,QAAAC,OAAID,GAAE,UAAU,OAAOC,EAAC,GAAE,OAAOD,GAAE,QAAQ;AAAe,YAAIE,KAAEF,GAAE,aAAa,IAAI;AAAE,QAAAE,KAAEA,KAAE,GAAGA,EAAC,YAAU,SAAS,KAAK,SAAS,EAAE,IAAIH,GAAE,KAAK,IAAGC,GAAE,aAAa,MAAKE,EAAC;AAAA,MAAC,WAASF,GAAE,YAAW;AAAC,cAAMC,KAAE,SAAS,cAAc,KAAK;AAAE,QAAAA,GAAE,UAAU,IAAI,sBAAsB,GAAED,GAAE,WAAW,aAAaC,IAAED,EAAC,GAAED,GAAE,gBAAcE;AAAA,MAAC;AAAC,WAAK,SAAS,WAAWF,IAAEC,EAAC;AAAA,IAAC,MAAM,MAAK,SAAS,SAASD,IAAE,uBAAuB;AAAA,EAAC;AAAA,EAAC,iBAAiBA,IAAE;AAAC,UAAK,EAAC,KAAIC,IAAE,IAAGC,GAAC,IAAEF;AAAE,QAAG,CAACC,MAAG,YAAU,OAAOA,MAAG,CAACC,GAAE;AAAO,IAAAA,GAAE,UAAU,IAAI,YAAY;AAAE,UAAMC,KAAE,KAAK,UAASC,KAAE,SAAS,cAAc,QAAQ;AAAE,IAAAA,GAAE,YAAU,oBAAmBA,GAAE,aAAa,MAAK,oBAAoBD,GAAE,EAAE,IAAIH,GAAE,KAAK,EAAE;AAAE,eAAS,CAACC,IAAEC,EAAC,KAAI,OAAO,QAAQ,KAAK,UAAUF,IAAE,YAAY,KAAG,CAAC,CAAC,EAAE,CAAAI,GAAE,aAAaH,IAAEC,EAAC;AAAE,IAAAE,GAAE,UAAQ,MAAI;AAAC,MAAAD,GAAE,SAASH,IAAE,kBAAkB;AAAA,IAAC,GAAEA,GAAE,WAASI;AAAE,UAAMC,KAAE,KAAK,UAAUL,IAAE,SAAS;AAAE,QAAG,aAAWA,GAAE,QAAM,UAAKK,GAAE,QAAOD,GAAE,aAAa,OAAMJ,GAAE,MAAI,EAAE,GAAEG,GAAE,WAAWH,IAAEI,IAAE,KAAE,GAAE,KAAK,aAAaJ,EAAC,GAAE,KAAKG,GAAE,cAAcH,EAAC;AAAE,IAAAG,GAAE,YAAYH,EAAC,GAAEI,GAAE,SAAO,MAAI;AAAC,UAAG,CAACA,GAAE,IAAI,OAAO;AAAO,YAAMH,KAAE,WAASG,GAAE,QAAQ;AAAM,MAAAA,GAAE,QAAQ,QAAM,QAAO,KAAK,aAAaJ,EAAC,GAAEC,KAAEE,GAAE,cAAcH,EAAC,IAAEG,GAAE,YAAYH,EAAC;AAAA,IAAC,GAAEI,GAAE,aAAa,OAAMH,EAAC,GAAEE,GAAE,WAAWH,IAAEI,IAAE,KAAE;AAAA,EAAC;AAAA,EAAC,aAAaJ,IAAE;AAAC,UAAK,EAAC,MAAKC,IAAE,UAASC,GAAC,IAAEF;AAAE,QAAGC,OAAI,MAAIA,OAAI,GAAG;AAAO,UAAME,KAAE,QAAMD,KAAE,SAAOA,GAAE;AAAc,QAAG,CAACA,MAAG,CAACC,GAAE;AAAO,QAAIC,KAAEJ,GAAE;AAAS,eAASI,OAAIA,KAAE,KAAK,UAAUJ,IAAE,UAAU;AAAG,QAAIK,KAAEL,GAAE,SAAO,GAAEM,KAAEN,GAAE,UAAQ;AAAE,IAAAK,MAAGC,OAAIF,KAAE;AAAI,UAAMG,KAAEJ,MAAGA,GAAE;AAAM,QAAG,UAAKH,GAAE,WAAS,UAAKI,MAAGG,GAAE,KAAG;AAAC,YAAMP,KAAE,OAAO,iBAAiBG,EAAC,GAAEF,KAAE,WAAWD,GAAE,WAAW,IAAE,WAAWA,GAAE,YAAY,GAAEI,KAAE,WAAWJ,GAAE,UAAU,IAAE,WAAWA,GAAE,aAAa,GAAEQ,KAAEN,GAAE;AAAc,UAAGM,IAAE;AAAC,cAAMR,KAAEQ,GAAE,UAASN,KAAEF,GAAE,qBAAqB,EAAE,EAAE,CAAC,GAAEG,KAAEH,GAAE;AAAK,QAAAO,GAAE,QAAM,IAAGJ,GAAE,MAAM,WAAS,UAASE,KAAEA,MAAGH,GAAE,cAAYD,IAAEM,GAAE,QAAM,GAAGF,EAAC,MAAKF,GAAE,MAAM,WAAS,IAAGI,GAAE,OAAK,YAAWA,GAAE,SAAO,GAAGJ,GAAE,YAAY,MAAKG,KAAEJ,GAAE,eAAaE;AAAA,MAAC;AAAA,IAAC,SAAOJ,IAAE;AAAA,IAAC;AAAC,QAAGK,MAAGC,IAAE;AAAC,YAAMN,KAAE,EAAC,MAAK,YAAW,OAAM,IAAG,QAAO,GAAE;AAAE,MAAAK,MAAG,WAASA,OAAIL,GAAE,QAAM,GAAGK,EAAC,OAAMC,MAAG,WAASA,OAAIN,GAAE,SAAO,GAAGM,EAAC,OAAM,OAAO,OAAOC,IAAEP,EAAC;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,YAAW;AAAC,UAAMA,KAAE,KAAK,SAAS,SAAS;AAAE,QAAG,CAACA,GAAE;AAAO,UAAK,EAAC,IAAGC,GAAC,IAAED;AAAE,QAAG,CAACC,MAAG,CAACA,GAAE,aAAa;AAAO,QAAG,CAAC,KAAK,UAAUD,IAAE,eAAe,EAAE;AAAO,QAAGA,GAAE,SAAO,GAAG,KAAG;AAAC,YAAMA,KAAEC,GAAE,cAAc,OAAO;AAAE,UAAGD,IAAE;AAAC,cAAMC,KAAED,GAAE,KAAK;AAAE,mBAASC,MAAGA,GAAE,KAAM,MAAI;AAAA,QAAC,CAAE,EAAE,MAAO,CAAAA,OAAG;AAAC,UAAAD,GAAE,QAAM,MAAGA,GAAE,KAAK;AAAA,QAAC,CAAE;AAAA,MAAC;AAAA,IAAC,SAAOA,IAAE;AAAA,IAAC;AAAC,QAAGA,GAAE,SAAO,MAAIA,GAAE,SAAO,GAAG;AAAO,UAAME,KAAE,MAAI;AAAC,UAAGF,GAAE,YAAUA,GAAE,SAAS,eAAc;AAAC,YAAIC;AAAE,YAAG,WAASD,GAAE,SAAS,QAAQ,MAAM,QAAOC,KAAED,GAAE,SAAO,KAAG,EAAC,OAAM,WAAU,MAAK,YAAW,IAAE,EAAC,QAAO,QAAO,OAAM,OAAM,GAAEC,MAAGD,GAAE,SAAS,cAAc,YAAY,KAAK,UAAUC,EAAC,GAAE,GAAG,GAAE,MAAKD,GAAE,SAAO;AAAQ,QAAAA,GAAE,SAAO,OAAKC,KAAE,EAAC,OAAM,aAAY,IAAGD,GAAE,SAAS,aAAa,IAAI,EAAC,GAAEA,GAAE,SAAS,cAAc,YAAY,KAAK,UAAUC,EAAC,GAAE,GAAG;AAAA,MAAE;AAAC,MAAAD,GAAE,SAAO,WAAWE,IAAE,GAAG;AAAA,IAAC;AAAE,IAAAA,GAAE;AAAA,EAAC;AAAA,EAAC,YAAYF,IAAE;AAAC,QAAGA,GAAE,KAAK,QAAOA,GAAE,OAAK,IAAGA,GAAE,MAAIA,GAAE,MAAK,MAAKA,GAAE,OAAK;AAAI,UAAMC,KAAE,KAAK,SAAS,UAAUD,IAAE,OAAM,EAAE;AAAE,QAAG,CAACC,MAAG,YAAU,OAAOA,GAAE;AAAO,QAAIC,KAAEF,GAAE,MAAKG,KAAE;AAAK,QAAGA,KAAEF,GAAE,MAAM,4KAA4K,GAAE;AAAC,YAAMG,KAAE,KAAK,UAAUJ,IAAE,EAAE,GAAE,EAAC,UAASK,GAAC,IAAED,IAAEE,KAAE,SAASN,IAAEC,IAAE;AAAC,YAAIC,KAAE,CAAC;AAAE,iBAAQC,MAAKH,GAAE,QAAO,UAAU,eAAe,KAAKA,IAAEG,EAAC,KAAGF,GAAE,QAAQE,EAAC,IAAE,MAAID,GAAEC,EAAC,IAAEH,GAAEG,EAAC;AAAG,YAAG,QAAMH,MAAG,cAAY,OAAO,OAAO,uBAAsB;AAAC,cAAII,KAAE;AAAE,eAAID,KAAE,OAAO,sBAAsBH,EAAC,GAAEI,KAAED,GAAE,QAAOC,KAAI,CAAAH,GAAE,QAAQE,GAAEC,EAAC,CAAC,IAAE,KAAG,OAAO,UAAU,qBAAqB,KAAKJ,IAAEG,GAAEC,EAAC,CAAC,MAAIF,GAAEC,GAAEC,EAAC,CAAC,IAAEJ,GAAEG,GAAEC,EAAC,CAAC;AAAA,QAAE;AAAC,eAAOF;AAAA,MAAC,EAAEE,IAAE,CAAC,UAAU,CAAC,GAAEG,KAAE,cAAcF,KAAE,cAAY,EAAE,QAAOG,KAAE,GAAGP,IAAEK,EAAC,GAAEG,KAAE,mBAAmBN,GAAE,CAAC,CAAC;AAAE,MAAAH,GAAE,UAAQS,IAAET,GAAE,MAAI,WAAWO,EAAC,UAAUE,EAAC,IAAID,EAAC,IAAGR,GAAE,WAASA,GAAE,YAAU,0BAA0BS,EAAC,kBAAiBP,KAAE;AAAA,IAAE,WAASC,KAAEF,GAAE,MAAM,0DAA0D,GAAE;AAAC,YAAMG,KAAE,GAAGH,IAAE,KAAK,UAAUD,IAAE,EAAE,CAAC,GAAEK,KAAE,mBAAmBF,GAAE,CAAC,CAAC,GAAEG,KAAEH,GAAE,CAAC,KAAG;AAAG,MAAAH,GAAE,UAAQK,IAAEL,GAAE,MAAI,kCAAkCK,EAAC,IAAIC,KAAE,KAAKA,EAAC,GAAGF,KAAE,MAAI,EAAE,KAAG,EAAE,GAAGA,EAAC,IAAGF,KAAE;AAAA,IAAE;AAAC,QAAG,CAACA,MAAGF,GAAE,WAAU;AAAC,YAAMC,KAAED,GAAE,UAAU,QAAQ;AAAK,SAAG,SAASC,EAAC,MAAIC,KAAED;AAAA,IAAE;AAAC,IAAAC,MAAG,YAAU,OAAOD,OAAI,QAAMA,GAAE,OAAO,CAAC,IAAEC,KAAE,YAAUC,KAAEF,GAAE,MAAM,mCAAmC,MAAIC,KAAE,IAAGF,GAAE,cAAYA,GAAE,eAAa,YAAU,UAAQG,GAAE,CAAC,IAAE,QAAMA,GAAE,CAAC,MAAIF,GAAE,MAAM,sFAAsF,IAAEC,KAAE,KAAGD,GAAE,MAAM,sBAAsB,MAAIC,KAAE,UAASC,KAAEF,GAAE,MAAM,2HAA2H,MAAID,GAAE,MAAI,uBAAuBG,GAAE,CAAC,CAAC,SAASA,GAAE,CAAC,IAAEA,GAAE,CAAC,IAAE,QAAM,KAAK,MAAM,WAAWA,GAAE,CAAC,CAAC,CAAC,KAAGA,GAAE,CAAC,IAAEA,GAAE,CAAC,EAAE,QAAQ,OAAM,GAAG,IAAE,MAAIA,GAAE,CAAC,IAAE,IAAI,QAAQ,MAAK,GAAG,CAAC,WAAWA,GAAE,CAAC,KAAGA,GAAE,CAAC,EAAE,QAAQ,SAAS,IAAE,IAAE,YAAU,OAAO,IAAGD,KAAE,OAAKC,KAAEF,GAAE,MAAM,yEAAyE,OAAKD,GAAE,MAAI,uBAAuBG,GAAE,CAAC,CAAC,WAAWA,GAAE,CAAC,EAAE,QAAQ,UAAS,IAAI,EAAE,QAAQ,SAAQ,EAAE,CAAC,iBAAgBD,KAAE,KAAIA,KAAEA,MAAG,KAAK,SAAS,OAAO,aAAa,GAAEF,GAAE,OAAKE,IAAEA,OAAI,OAAKF,GAAE,WAASA,GAAE,YAAUA,GAAE;AAAA,EAAI;AAAA,EAAC,WAAWA,IAAE;AAAC,UAAMC,KAAE,KAAK,SAAS,UAAUD,IAAE,KAAK,KAAG;AAAG,QAAGA,MAAGA,GAAE,QAAMC,IAAE;AAAC,cAAOD,GAAE,MAAK;AAAA,QAAC,KAAK;AAAG,eAAK,SAAS,WAAWA,IAAEC,EAAC;AAAE;AAAA,QAAM,KAAK;AAAG,gBAAMC,KAAE,KAAK,OAAO,UAAU;AAAE,UAAAA,MAAG,KAAK,SAAS,WAAWF,IAAEE,GAAE,QAAQ,iBAAgBD,KAAE,EAAE,EAAE,QAAQ,oBAAmB,KAAK,UAAUD,IAAE,aAAa,KAAG,EAAE,EAAE,QAAQ,oBAAmBA,GAAE,UAAQA,GAAE,YAAU,EAAE,CAAC;AAAE;AAAA,QAAM,KAAI;AAAA,QAAS,KAAI;AAAQ,eAAK,iBAAiBA,EAAC;AAAE;AAAA,QAAM,KAAI;AAAO,eAAK,gBAAgBA,EAAC;AAAE;AAAA,QAAM,KAAI;AAAA,QAAM,KAAK;AAAA,QAAG,KAAK;AAAA,QAAG,KAAK;AAAG,UAAAA,GAAE,UAAQ;AAAA,QAAG,KAAI;AAAS,eAAK,iBAAiBA,EAAC;AAAA,MAAC;AAAC,WAAK,eAAeA,EAAC;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,eAAeA,IAAE;AAAC,UAAMC,KAAED,GAAE;AAAU,QAAG,EAAEA,GAAE,MAAIC,MAAGD,GAAE,QAAM,CAAC,IAAG,IAAG,EAAE,EAAE,SAASA,GAAE,IAAI,GAAG;AAAO,QAAIE,IAAEC,KAAEH,GAAE,SAAO,QAAOI,KAAEJ,GAAE,UAAQ;AAAO,QAAG,WAASG,MAAG,WAASC,IAAE;AAAC,MAAAF,KAAE,KAAK,UAAUF,IAAE,YAAY;AAAE,YAAMC,MAAGC,KAAE,IAAI,MAAM,oBAAoB;AAAE,MAAAA,KAAED,MAAGA,GAAE,SAAO,IAAE,WAAWA,GAAE,CAAC,CAAC,IAAE,WAAWA,GAAE,CAAC,CAAC,IAAE,WAAWC,KAAE,EAAE;AAAA,IAAC,MAAM,CAAAC,MAAGC,OAAIF,KAAEC,KAAEC;AAAG,QAAG,CAACF,GAAE;AAAO,IAAAD,GAAE,MAAM,cAAY,IAAGA,GAAE,MAAM,QAAM,IAAGA,GAAE,MAAM,SAAO,IAAGA,GAAE;AAAa,UAAMI,KAAEJ,GAAE,sBAAsB,GAAEK,KAAED,GAAE,SAAO,GAAEE,KAAEF,GAAE,UAAQ;AAAE,IAAAJ,GAAE,MAAM,cAAYC,KAAE,IAAGA,KAAEI,KAAEC,MAAGH,KAAE,WAASA,KAAEG,KAAE,KAAK,IAAIA,IAAEH,EAAC,GAAEH,GAAE,MAAM,QAAM,QAAOA,GAAE,MAAM,SAAO,GAAGG,EAAC,SAAOD,KAAE,WAASA,KAAEG,KAAE,KAAK,IAAIA,IAAEH,EAAC,GAAEF,GAAE,MAAM,QAAM,GAAGE,EAAC,MAAKF,GAAE,MAAM,SAAO;AAAA,EAAO;AAAA,EAAC,SAAQ;AAAC,UAAMD,KAAE,MAAKC,KAAED,GAAE;AAAS,IAAAC,GAAE,GAAG,4BAA2BD,GAAE,iBAAiB,GAAEC,GAAE,GAAG,wBAAuBD,GAAE,aAAa,GAAEC,GAAE,GAAG,wBAAuBD,GAAE,aAAa,GAAEC,GAAE,GAAG,0BAAyBD,GAAE,eAAe,GAAEC,GAAE,GAAG,4BAA2BD,GAAE,SAAS,GAAEC,GAAE,GAAG,QAAOD,GAAE,MAAM,GAAEC,GAAE,GAAG,gBAAeD,GAAE,cAAc,GAAE,OAAO,iBAAiB,WAAUA,GAAE,SAAS;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,UAAMA,KAAE,MAAKC,KAAED,GAAE;AAAS,IAAAC,GAAE,IAAI,4BAA2BD,GAAE,iBAAiB,GAAEC,GAAE,IAAI,wBAAuBD,GAAE,aAAa,GAAEC,GAAE,IAAI,wBAAuBD,GAAE,aAAa,GAAEC,GAAE,IAAI,0BAAyBD,GAAE,eAAe,GAAEC,GAAE,IAAI,4BAA2BD,GAAE,SAAS,GAAEC,GAAE,IAAI,QAAOD,GAAE,MAAM,GAAEC,GAAE,IAAI,gBAAeD,GAAE,cAAc,GAAE,OAAO,oBAAoB,WAAUA,GAAE,SAAS;AAAA,EAAC;AAAC;AAAC,OAAO,eAAe,IAAG,YAAW,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,GAAE,CAAC;AAAE,IAAM,KAAG;AAAT,IAAgB,KAAG;AAAnB,IAA2B,KAAG;AAAQ,IAAM,KAAN,cAAiB,EAAC;AAAA,EAAC,cAAa;AAAC,UAAM,GAAG,SAAS,GAAE,OAAO,eAAe,MAAK,SAAQ,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,GAAE,CAAC,GAAE,OAAO,eAAe,MAAK,WAAU,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,MAAE,CAAC,GAAE,OAAO,eAAe,MAAK,SAAQ,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,eAAc,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC;AAAA,EAAC;AAAA,EAAC,IAAI,WAAU;AAAC,WAAO,KAAK,UAAQ;AAAA,EAAE;AAAA,EAAC,QAAQA,IAAE;AAAC,SAAK,OAAO,WAAW,MAAIA,GAAE,cAAYA,GAAE,OAAKA,GAAE,MAAM,SAAO,MAAI,KAAK,MAAM;AAAA,EAAC;AAAA,EAAC,WAAU;AAAC,SAAK,kBAAkB,GAAE,KAAK,MAAM;AAAA,EAAC;AAAA,EAAC,WAAU;AAAC,SAAK,OAAO;AAAA,EAAC;AAAA,EAAC,qBAAoB;AAAC,kBAAY,SAAS,kBAAgB,KAAK,OAAO,IAAE,KAAK,MAAM;AAAA,EAAC;AAAA,EAAC,eAAc;AAAC,SAAK,UAAQ,MAAG,KAAK,MAAM;AAAA,EAAC;AAAA,EAAC,eAAc;AAAC,QAAIA;AAAE,SAAK,UAAQ,QAAI,UAAQA,KAAE,KAAK,SAAS,YAAU,WAASA,KAAE,SAAOA,GAAE,cAAY,KAAK,OAAO;AAAA,EAAC;AAAA,EAAC,aAAY;AAAC,UAAMA,KAAE,KAAK;AAAS,eAAS,KAAK,UAAQA,GAAE,cAAYA,GAAE,SAAOA,GAAE,MAAM,SAAO,IAAEA,GAAE,UAAU,IAAEA,GAAE,QAAQ,CAAC;AAAA,EAAE;AAAA,EAAC,oBAAmB;AAAC,SAAK,gBAAc,KAAK,YAAY,OAAO,GAAE,KAAK,cAAY;AAAA,EAAK;AAAA,EAAC,oBAAmB;AAAC,QAAIA;AAAE,QAAG,CAAC,KAAK,OAAO,cAAc,EAAE,QAAO;AAAK,SAAK,kBAAkB;AAAE,UAAMC,KAAE,KAAK,UAASC,MAAG,UAAQF,KAAEC,GAAE,MAAMA,GAAE,IAAI,MAAI,WAASD,KAAE,SAAOA,GAAE,WAAS,CAAC;AAAE,QAAIG,KAAE,KAAK,OAAO,kBAAkB;AAAE,QAAGA,OAAIA,MAAG,MAAID,GAAE,SAAOA,GAAE,CAAC,EAAE,KAAG,SAAOD,GAAE,WAAU,CAACE,GAAE,QAAO;AAAK,UAAMC,KAAE,SAAS,cAAc,KAAK;AAAE,WAAO,EAAEA,IAAE,YAAY,GAAED,GAAE,QAAQC,EAAC,GAAE,KAAK,cAAYA,IAAEA,GAAE,cAAaA;AAAA,EAAC;AAAA,EAAC,MAAK;AAAC,UAAMJ,KAAE,MAAKC,KAAED,GAAE;AAAS,QAAGC,GAAE,MAAM,SAAO,EAAE;AAAO,QAAGD,GAAE,MAAM;AAAO,UAAME,KAAEF,GAAE,OAAO,SAAS;AAAE,IAAAA,GAAE,QAAM,IAAG,EAAEC,GAAE,WAAU,cAAc;AAAE,QAAIE,KAAEH,GAAE,kBAAkB;AAAE,IAAAG,OAAIA,GAAE,MAAM,qBAAmB,GAAGD,EAAC,MAAKC,GAAE,MAAM,YAAU,cAAaH,GAAE,QAAM,WAAY,MAAI;AAAC,MAAAA,GAAE,QAAM,MAAKA,GAAE,WAASA,GAAE,WAAW;AAAA,IAAC,GAAGE,EAAC,GAAEF,GAAE,KAAK,KAAK;AAAA,EAAC;AAAA,EAAC,QAAO;AAAC,UAAMA,KAAE;AAAK,IAAAA,GAAE,UAAQ,aAAaA,GAAE,KAAK,GAAEA,GAAE,QAAM,OAAMA,GAAE,kBAAkB;AAAA,EAAC;AAAA,EAAC,QAAO;AAAC,UAAMA,KAAE;AAAK,QAAGA,GAAE,IAAI,GAAEA,GAAE,UAAQ,IAAG;AAAC,UAAGA,GAAE,OAAO,cAAc,GAAE;AAAC,cAAMC,KAAED,GAAE,SAAS;AAAU,QAAAC,GAAE,iBAAiB,cAAaD,GAAE,cAAa,KAAE,GAAEC,GAAE,iBAAiB,cAAaD,GAAE,cAAa,KAAE;AAAA,MAAC;AAAC,eAAS,iBAAiB,oBAAmBA,GAAE,oBAAmB,KAAE,GAAEA,GAAE,KAAK,OAAO;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,OAAM;AAAC,UAAMA,KAAE,MAAKC,KAAED,GAAE,OAAME,KAAEF,GAAE,SAAS;AAAU,IAAAA,GAAE,MAAM,GAAEA,GAAE,QAAM,IAAGE,GAAE,oBAAoB,cAAaF,GAAE,cAAa,KAAE,GAAEE,GAAE,oBAAoB,cAAaF,GAAE,cAAa,KAAE,GAAE,SAAS,oBAAoB,oBAAmBA,GAAE,oBAAmB,KAAE,GAAE,EAAEE,IAAE,cAAc,GAAED,OAAI,MAAID,GAAE,KAAK,MAAM;AAAA,EAAC;AAAA,EAAC,QAAO;AAAC,UAAMA,KAAE;AAAK,IAAAA,GAAE,UAAQ,OAAKA,GAAE,QAAM,IAAGA,GAAE,MAAM,GAAEA,GAAE,KAAK,EAAE;AAAA,EAAE;AAAA,EAAC,SAAQ;AAAC,UAAMA,KAAE,MAAKC,KAAED,GAAE;AAAS,QAAGC,GAAE,cAAYA,GAAE,SAAOA,GAAE,MAAM,SAAO,EAAE,KAAGD,GAAE,UAAQ,IAAG;AAAC,UAAGA,GAAE,UAAQ,MAAI,CAACA,GAAE,SAAQ;AAAC,cAAMC,KAAE,IAAI,MAAM,UAAS,EAAC,SAAQ,MAAG,YAAW,KAAE,CAAC;AAAE,QAAAD,GAAE,KAAK,UAASC,EAAC,GAAEA,GAAE,oBAAkBD,GAAE,IAAI;AAAA,MAAC;AAAA,IAAC,MAAM,CAAAA,GAAE,IAAI;AAAA,QAAO,CAAAA,GAAE,KAAK;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,SAAK,UAAQ,MAAI,KAAK,UAAQ,KAAG,KAAK,KAAK,IAAE,KAAK,MAAM;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,UAAMA,KAAE,MAAKC,KAAED,GAAE;AAAS,IAAAC,GAAE,GAAG,SAAQD,GAAE,OAAO,GAAEC,GAAE,GAAG,0BAAyBD,GAAE,QAAQ,GAAEC,GAAE,GAAG,wBAAuBD,GAAE,QAAQ,GAAEC,GAAE,GAAG,qBAAoBD,GAAE,QAAQ;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,UAAMA,KAAE,MAAKC,KAAED,GAAE;AAAS,IAAAC,GAAE,IAAI,SAAQD,GAAE,OAAO,GAAEC,GAAE,IAAI,0BAAyBD,GAAE,QAAQ,GAAEC,GAAE,IAAI,wBAAuBD,GAAE,QAAQ,GAAEC,GAAE,IAAI,qBAAoBD,GAAE,QAAQ,GAAEA,GAAE,KAAK;AAAA,EAAC;AAAC;AAAC,OAAO,eAAe,IAAG,YAAW,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,WAAU,MAAG,cAAa,MAAG,kBAAiB,MAAK,cAAa,MAAG,SAAQ,IAAG,EAAC,CAAC;AAAE,IAAM,KAAN,cAAiB,EAAC;AAAA,EAAC,cAAa;AAAC,UAAM,GAAG,SAAS,GAAE,OAAO,eAAe,MAAK,OAAM,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC;AAAA,EAAC;AAAA,EAAC,UAAUA,IAAE;AAAC,UAAMC,KAAED,GAAE;AAAS,QAAG,CAACC,GAAE;AAAO,UAAMC,KAAEF,GAAE;AAAU,IAAAE,OAAID,GAAE,QAAQ,WAAS,EAAE,EAAC,WAAU,MAAE,GAAE,KAAK,OAAO,UAAU,KAAG,CAAC,GAAE,EAAC,cAAa,OAAG,SAAQ,KAAK,OAAO,SAAS,GAAE,kBAAiB,MAAI,KAAK,OAAO,kBAAkB,KAAG,MAAK,IAAG,EAAC,OAAM,MAAI;AAAC,MAAAD,GAAE,KAAK,gBAAgB;AAAA,IAAC,GAAE,KAAI,CAAAC,OAAG;AAAC,UAAIE;AAAE,MAAAD,GAAE,UAAU,IAAI,eAAe,IAAG,UAAQC,KAAEH,GAAE,SAAS,MAAI,WAASG,KAAE,SAAOA,GAAE,WAAS,GAAG,SAAOF,GAAE,MAAM;AAAA,IAAC,GAAE,MAAK,MAAI;AAAC,MAAAC,GAAE,UAAU,OAAO,eAAe,GAAEF,GAAE,aAAWA,GAAE,QAAQ,GAAEA,GAAE,KAAK,cAAc;AAAA,IAAC,GAAE,QAAO,CAACC,IAAEC,OAAI;AAAC,UAAIC,IAAEC,IAAEC;AAAE,OAACH,MAAG,CAACA,GAAE,eAAa,UAAQC,KAAEH,GAAE,SAAS,MAAI,WAASG,KAAE,SAAOA,GAAE,WAAS,GAAG,UAAQ,UAAQE,KAAE,UAAQD,KAAEJ,GAAE,aAAW,WAASI,KAAE,SAAOA,GAAE,YAAU,WAASC,KAAE,SAAOA,GAAE,cAAYH,GAAE,eAAe;AAAA,IAAC,EAAC,EAAC,CAAC,GAAED,GAAE,cAAc,EAAC,UAAS,GAAE,CAAC,GAAE,KAAK,MAAIA,GAAE,QAAQ;AAAA,EAAS;AAAA,EAAC,QAAQD,IAAE;AAAC,UAAMC,KAAED,GAAE,UAASE,KAAE,KAAK;AAAI,IAAAA,MAAGD,MAAG,KAAK,OAAO,aAAa,MAAIA,GAAE,cAAYA,GAAE,OAAKA,GAAE,MAAM,SAAO,MAAIC,GAAE,MAAM;AAAA,EAAC;AAAA,EAAC,OAAOF,IAAEC,IAAE;AAAC,UAAMC,KAAE,KAAK,KAAIC,KAAEH,GAAE;AAAS,QAAG,CAACE,MAAG,CAACC,GAAE;AAAO,UAAMC,KAAEH,GAAE;AAAQ,IAAAG,MAAGA,GAAE,GAAG,kBAAkB,MAAI;AAAC,MAAAJ,GAAE,eAAeC,EAAC,KAAGC,GAAE,KAAK;AAAA,IAAC,CAAE,GAAEF,GAAE,eAAeC,EAAC,KAAGC,GAAE,OAAO;AAAA,EAAC;AAAA,EAAC,UAAUF,IAAEC,IAAE;AAAC,QAAIC;AAAE,UAAMC,KAAE,KAAK;AAAI,IAAAA,MAAGF,OAAI,KAAK,OAAO,KAAK,KAAG,cAAY,UAAQC,KAAE,SAAS,kBAAgB,WAASA,KAAE,SAAOA,GAAE,aAAWC,GAAE,OAAO;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,UAAMH,KAAE,MAAKC,KAAED,GAAE;AAAS,IAAAC,GAAE,GAAG,iBAAgBD,GAAE,SAAS,GAAEC,GAAE,GAAG,kBAAiBD,GAAE,OAAO,GAAEC,GAAE,GAAG,QAAOD,GAAE,MAAM,GAAEC,GAAE,GAAG,WAAUD,GAAE,SAAS;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,UAAMA,KAAE,MAAKC,KAAED,GAAE;AAAS,IAAAC,GAAE,IAAI,iBAAgBD,GAAE,SAAS,GAAEC,GAAE,IAAI,kBAAiBD,GAAE,OAAO,GAAEC,GAAE,IAAI,QAAOD,GAAE,MAAM,GAAEC,GAAE,IAAI,WAAUD,GAAE,SAAS;AAAA,EAAC;AAAC;AAAC,OAAO,eAAe,IAAG,YAAW,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,KAAI,KAAI,aAAY,OAAG,kBAAiB,CAAAA,OAAG;AAAC,MAAIC;AAAE,UAAO,UAAQA,KAAED,GAAE,SAAS,cAAY,WAASC,KAAE,SAAOA,GAAE,cAAc,qDAAqD,MAAID,GAAE,SAAS;AAAS,GAAE,SAAQ,IAAG,EAAC,CAAC;AAAE,IAAM,KAAG,EAAC,SAAQ,EAAC,WAAU,+BAA8B,UAAS,sBAAqB,OAAM,mBAAkB,OAAM,mBAAkB,WAAU,cAAa,YAAW,eAAc,WAAU,cAAa,WAAU,aAAY,GAAE,UAAS,GAAE,UAAS,MAAK,UAAS,iMAAgM,MAAK,SAAQ;AAAE,IAAI;AAAG,CAAC,SAASA,IAAE;AAAC,EAAAA,GAAEA,GAAE,OAAK,CAAC,IAAE,QAAOA,GAAEA,GAAE,QAAM,CAAC,IAAE,SAAQA,GAAEA,GAAE,SAAO,CAAC,IAAE;AAAQ,EAAE,OAAK,KAAG,CAAC,EAAE;AAAE,IAAM,KAAG;AAAT,IAAqB,KAAG;AAAxB,IAAqC,KAAG;AAAxC,IAAsD,KAAG;AAAiB,IAAI,KAAG,cAAc,EAAC;AAAA,EAAC,cAAa;AAAC,UAAM,GAAG,SAAS,GAAE,OAAO,eAAe,MAAK,QAAO,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,SAAQ,CAAC,GAAE,OAAO,eAAe,MAAK,aAAY,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,SAAQ,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,YAAW,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,cAAa,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,kBAAiB,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,eAAc,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,YAAW,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,iBAAgB,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,SAAQ,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,GAAG,KAAI,CAAC;AAAA,EAAC;AAAA,EAAC,IAAI,WAAU;AAAC,WAAM,aAAW,KAAK;AAAA,EAAI;AAAA,EAAC,YAAYA,IAAEC,IAAE;AAAC,UAAMC,KAAED,GAAE,KAAGA,GAAE,GAAG,UAAQ;AAAO,IAAAC,OAAID,GAAE,WAASC,GAAE,YAAUD,GAAE,YAAU,IAAGA,GAAE,EAAE,IAAE,WAAWC,GAAE,EAAE,KAAG,EAAE,KAAGD,GAAE,EAAE,KAAG,GAAEA,GAAE,EAAE,IAAE,WAAWC,GAAE,eAAa,EAAE,KAAGD,GAAE,EAAE,KAAG,IAAG,KAAK,SAASA,EAAC;AAAA,EAAC;AAAA,EAAC,eAAc;AAAC,SAAK,MAAM;AAAA,EAAC;AAAA,EAAC,WAAU;AAAC,QAAID;AAAE,QAAG,CAAC,KAAK,SAAS;AAAO,UAAMC,KAAE,KAAK,WAAUC,KAAE,KAAK,UAASC,KAAED,GAAE,SAAQE,KAAE,KAAK,UAASE,KAAEF,KAAEA,GAAE,UAAQ,MAAKG,KAAEL,GAAE;AAAK,QAAGC,MAAGC,MAAGE,IAAE;AAAC,UAAGH,GAAE,YAAW;AAAC,UAAEF,IAAE,KAAK,GAAG,EAAE,CAAC;AAAE,YAAIE,MAAG,UAAQH,KAAEI,GAAE,MAAMG,EAAC,MAAI,WAASP,KAAE,SAAOA,GAAE,QAAM;AAAE,QAAAG,MAAGD,GAAE,YAAYK,EAAC,KAAG,KAAK,EAAE,IAAE,KAAK;AAAU,YAAIF,KAAEC,GAAE,UAAU;AAAE,aAAGH,KAAEE,GAAE,EAAE,OAAK,KAAGF,KAAEE,GAAE,EAAE,OAAKC,GAAE,MAAM,EAAC,GAAE,KAAGH,IAAE,UAAS,KAAG,CAAC;AAAA,MAAC,MAAM,GAAEF,IAAE,KAAK,GAAG,EAAE,GAAEE,GAAE,SAAS;AAAE,WAAK,YAAY;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,YAAW;AAAC,SAAK,YAAY;AAAE,eAAUH,MAAK,KAAK,SAAS,UAAQ,CAAC,EAAE,MAAK,kBAAkBA,EAAC;AAAE,SAAK,YAAY;AAAA,EAAC;AAAA,EAAC,aAAY;AAAC,UAAMA,KAAE,KAAK,OAAO,UAAU,KAAG;AAAE,QAAGA,IAAE;AAAC,YAAMC,KAAE,KAAK;AAAS,UAAIC,KAAE;AAAE,iBAAUF,MAAKC,GAAE,UAAQ,CAAC,EAAE,CAAAD,GAAE,YAAUE;AAAI,UAAGA,KAAEF,GAAE,QAAM;AAAA,IAAE;AAAC,UAAMC,KAAE,KAAK,OAAO,MAAM;AAAE,WAAM,CAAC,UAAS,SAAS,EAAE,QAAQA,EAAC,IAAE;AAAA,EAAC;AAAA,EAAC,SAASD,IAAE;AAAC,UAAMC,KAAE,KAAK,OAAO,UAAU,KAAG;AAAG,WAAM,EAAC,MAAK,KAAK,SAAS,SAASA,IAAE,CAAC,CAAC,MAAKD,GAAE,KAAK,GAAE,CAAC,MAAKA,GAAE,QAAM,CAAC,GAAE,CAAC,MAAKA,GAAE,YAAU,gFAAgF,CAAC,CAAC,EAAC;AAAA,EAAC;AAAA,EAAC,SAASA,IAAE;AAAC,UAAMC,KAAE,KAAK;AAAS,IAAAA,MAAGA,GAAE,SAASD,GAAE,OAAM,KAAK,SAASA,EAAC,CAAC;AAAA,EAAC;AAAA,EAAC,YAAW;AAAC,UAAMA,KAAE,CAAC;AAAE,eAAUC,MAAK,KAAK,SAAS,UAAQ,CAAC,EAAE,CAAAD,GAAE,KAAK,KAAK,SAASC,EAAC,CAAC;AAAE,WAAOD;AAAA,EAAC;AAAA,EAAC,kBAAkBA,IAAE;AAAC,SAAK,aAAWA,GAAE,EAAE,IAAEA,GAAE,EAAE,KAAGA,GAAE,EAAE,IAAE,KAAK,MAAM,KAAK,EAAE,KAAGA,GAAE,EAAE,IAAEA,GAAE,EAAE,EAAE,IAAE,KAAK,EAAE;AAAA,EAAE;AAAA,EAAC,cAAa;AAAC,UAAMA,KAAE,KAAK;AAAU,QAAG,CAACA,GAAE;AAAO,UAAMC,KAAE,CAAAA,OAAG,WAAW,iBAAiBD,EAAC,EAAE,iBAAiB,eAAaC,EAAC,CAAC,KAAG;AAAE,SAAK,WAASA,GAAE,KAAK,GAAE,KAAK,gBAAcA,GAAE,WAAW,GAAE,KAAK,EAAE,IAAEA,GAAE,OAAO,KAAG,IAAG,KAAK,EAAE,IAAEA,GAAE,YAAY,KAAG,IAAG,KAAK,EAAE,IAAEA,GAAE,QAAQ,KAAG;AAAA,EAAE;AAAA,EAAC,QAAO;AAAC,UAAMD,KAAE;AAAK,QAAGA,GAAE,UAAQ,GAAG,KAAK;AAAO,QAAGA,GAAE,WAAW,EAAE,QAAO,KAAKA,GAAE,KAAK,UAAU;AAAE,UAAMC,KAAED,GAAE,UAASE,KAAED,GAAE,WAAUE,KAAEH,GAAE,UAAU,GAAEI,KAAEJ,GAAE,OAAO,MAAM;AAAE,IAAAA,GAAE,OAAKI;AAAE,UAAMC,KAAEL,GAAE,OAAO,UAAU,GAAEM,KAAEN,GAAE,GAAG,WAAW,GAAEO,KAAEP,GAAE,GAAG,OAAO;AAAE,QAAIQ,KAAE,QAAMH,KAAE,SAAOA,GAAE,cAAc,MAAIC,EAAC;AAAE,IAAAE,OAAIA,KAAE,SAAS,cAAc,KAAK,GAAE,EAAEA,IAAEF,EAAC,GAAED,KAAEA,GAAE,YAAYG,EAAC,IAAEN,GAAE,MAAMM,EAAC,IAAG,EAAEA,IAAE,MAAMJ,EAAC,EAAE,GAAE,EAAEF,IAAEF,GAAE,GAAG,WAAW,CAAC,GAAEA,GAAE,YAAUQ,IAAER,GAAE,YAAY;AAAE,QAAIS,KAAED,GAAE,cAAc,MAAID,EAAC;AAAE,IAAAE,OAAIA,KAAE,SAAS,cAAc,KAAK,GAAE,EAAEA,IAAET,GAAE,GAAG,OAAO,CAAC,GAAEQ,GAAE,YAAYC,EAAC,IAAGT,GAAE,QAAMS;AAAE,UAAMC,KAAE,EAAE,CAAC,GAAE,EAAC,OAAMD,IAAE,UAAS,OAAG,QAAO,MAAG,MAAK,cAAYL,IAAE,UAAS,MAAG,eAAc,GAAE,YAAW,OAAG,SAAQ,MAAI,UAAS,MAAI,SAAQ,EAAC,aAAY,EAAC,GAAE,MAAK,OAAG,YAAW,OAAG,SAAQ,EAAC,WAAU,YAAW,UAAS,sBAAqB,OAAM,mBAAkB,OAAM,kBAAiB,EAAC,GAAEJ,GAAE,OAAO,UAAU,KAAG,CAAC,GAAE,EAAC,MAAK,EAAC,QAAOC,GAAC,GAAE,QAAOE,GAAC,CAAC,GAAEQ,KAAE,IAAIV,GAAE,YAAYO,IAAEE,EAAC;AAAE,IAAAC,GAAE,GAAG,eAAe,CAACV,IAAEC,OAAI;AAAC,MAAAF,GAAE,SAASE,GAAE,KAAK,GAAEF,GAAE,KAAK,eAAcE,IAAEA,GAAE,EAAE;AAAA,IAAC,CAAE,GAAES,GAAE,GAAG,SAAS,MAAI;AAAC,MAAAX,GAAE,YAAY,GAAEA,GAAE,KAAK,OAAO;AAAA,IAAC,CAAE,GAAEW,GAAE,GAAG,WAAW,MAAI;AAAC,MAAAX,GAAE,YAAY;AAAA,IAAC,CAAE,GAAEW,GAAE,GAAG,iBAAiB,CAACV,IAAEC,IAAEC,OAAI;AAAC,MAAAH,GAAE,QAAQG,EAAC;AAAA,IAAC,CAAE,GAAEH,GAAE,WAASW,IAAEX,GAAE,QAAM,GAAG;AAAA,EAAK;AAAA,EAAC,QAAQA,IAAE;AAAC,IAAAA,GAAE,eAAe,GAAEA,GAAE,gBAAgB;AAAE,UAAMC,KAAE,KAAK,UAAS,EAAC,OAAMC,IAAE,MAAKC,GAAC,IAAEF,IAAEG,KAAE,CAAAJ,OAAG;AAAC,UAAGA,IAAE;AAAC,cAAMC,KAAED,GAAE,QAAQ,uBAAuB;AAAE,YAAGC,GAAE,QAAM,CAAC,SAASA,GAAE,QAAQ,iBAAe,IAAG,EAAE,KAAG,GAAEA,EAAC;AAAA,MAAC;AAAC,aAAM,CAAC,IAAG,MAAM;AAAA,IAAC,GAAEI,KAAE,CAACL,IAAEC,OAAI;AAAC,YAAMC,KAAE,SAAS,iBAAiBF,IAAEC,EAAC;AAAE,aAAOC,KAAEE,GAAEF,EAAC,IAAE,CAAC,IAAG,MAAM;AAAA,IAAC;AAAE,QAAG,CAACI,IAAEC,EAAC,IAAEH,GAAEJ,GAAE,MAAM;AAAE,QAAGM,KAAE,GAAG;AAAO,UAAME,KAAE,KAAK,EAAE,GAAEC,KAAET,GAAE,SAAQU,KAAEV,GAAE;AAAQ,QAAG,CAACW,IAAEC,EAAC,IAAEP,GAAEI,KAAED,IAAEE,EAAC,GAAE,CAACG,IAAEC,EAAC,IAAET,GAAEI,KAAED,IAAEE,EAAC;AAAE,IAAAE,MAAGE,MAAGR,KAAE,KAAK,IAAIG,KAAEG,GAAE,sBAAsB,EAAE,KAAK,IAAE,KAAK,IAAIH,KAAEK,GAAE,sBAAsB,EAAE,IAAI,IAAEH,KAAEE,IAAEP,OAAIH,OAAIG,KAAEA,OAAIK,KAAEE,KAAEF,OAAIC,KAAEN,KAAEK,KAAEG,OAAIR,KAAEO,KAAGP,KAAE,MAAIJ,GAAEI,EAAC,KAAGL,GAAE,QAAQK,EAAC;AAAA,EAAC;AAAA,EAAC,SAASN,IAAE;AAAC,QAAIC;AAAE,UAAMC,KAAE,MAAK,EAAC,UAASC,GAAC,IAAED,IAAEE,KAAEF,GAAE;AAAS,QAAG,CAACC,MAAG,CAACC,GAAE,QAAO;AAAE,UAAMC,KAAEH,GAAE,EAAE,GAAEI,KAAEJ,GAAE,EAAE,GAAEK,KAAEL,GAAE,UAASM,KAAEN,GAAE;AAAc,QAAG,EAAE,UAAQD,KAAEG,GAAE,OAAOJ,EAAC,MAAI,WAASC,KAAE,SAAOA,GAAE,IAAI,QAAO;AAAE,UAAMQ,KAAE,OAAIJ,KAAEC,KAAGI,KAAEP,GAAE,MAAM,SAAO;AAAE,QAAIQ,KAAER,GAAE,YAAY,CAAC,GAAES,KAAET,GAAE,YAAYO,EAAC,GAAEG,KAAEV,GAAE,YAAYH,IAAE,OAAG,IAAE,GAAEc,KAAE,GAAEC,KAAEN,KAAED,KAAED;AAAE,UAAMS,KAAEL,KAAE,KAAGA,KAAE,IAAGM,KAAEL,KAAE,KAAGA,KAAE;AAAE,WAAO,MAAIZ,MAAGc,KAAEC,KAAE,KAAK,IAAIJ,EAAC,GAAEM,MAAG,MAAIN,OAAIG,MAAGC,KAAE,KAAK,IAAIH,EAAC,MAAIZ,OAAIU,MAAGI,KAAEC,KAAE,KAAK,IAAIH,EAAC,IAAE,IAAGI,MAAG,OAAKJ,OAAIE,MAAGC,KAAE,KAAK,IAAIJ,EAAC,MAAIK,MAAGC,MAAGH,KAAE,KAAGC,IAAED,MAAGC,KAAE,KAAK,IAAIJ,EAAC,GAAEG,MAAGC,MAAG,IAAE,KAAK,IAAIH,EAAC,MAAIE,KAAEC,KAAEF,IAAEC;AAAA,EAAC;AAAA,EAAC,SAASb,IAAE;AAAC,QAAIC;AAAE,UAAMC,KAAE;AAAK,QAAG,CAACA,GAAE,SAAS;AAAO,UAAK,EAAC,UAASC,GAAC,IAAED,IAAEE,KAAEF,GAAE;AAAS,QAAGC,MAAGC,IAAE;AAAC,YAAMC,KAAE,UAAQJ,KAAEG,GAAE,OAAOJ,EAAC,MAAI,WAASC,KAAE,SAAOA,GAAE;AAAG,UAAGI,MAAGA,GAAE,WAAW,QAAO;AAAC,YAAIJ,KAAE,EAAE,IAAE,KAAK,IAAIE,GAAE,YAAYH,EAAC,CAAC,CAAC,GAAEI,KAAE,EAAEF,GAAE,SAASF,EAAC,CAAC;AAAE,QAAAK,GAAE,MAAM,YAAY,cAAaJ,KAAEA,KAAE,KAAG,EAAE,GAAEI,GAAE,MAAM,YAAY,WAAUD,KAAE,EAAE;AAAA,MAAC;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,cAAa;AAAC,UAAML,KAAE;AAAK,QAAG,CAACA,GAAE,SAAS;AAAO,UAAK,EAAC,UAASC,IAAE,OAAMC,GAAC,IAAEF,IAAEG,KAAEF,GAAE,SAAQG,KAAEJ,GAAE;AAAS,QAAG,EAAEC,MAAGC,MAAGC,MAAGC,IAAG;AAAO,QAAGD,GAAE,UAAQ,EAAE,QAAMA,GAAE,UAAQ,EAAE,QAAQ;AAAO,eAAUD,MAAKD,GAAE,OAAO,CAAAD,GAAE,SAASE,GAAE,KAAK;AAAE,QAAIG,MAAGL,GAAE,EAAE,IAAEA,GAAE,aAAWI,GAAE,OAAO,UAAQ;AAAG,IAAAF,GAAE,MAAM,YAAY,WAAUG,KAAE,EAAE;AAAA,EAAC;AAAA,EAAC,UAAS;AAAC,UAAML,KAAE;AAAK,IAAAA,GAAE,YAAUA,GAAE,SAAS,QAAQ,GAAEA,GAAE,WAAS,MAAKA,GAAE,aAAWA,GAAE,UAAU,OAAO,GAAEA,GAAE,YAAU,MAAKA,GAAE,SAAOA,GAAE,MAAM,OAAO,GAAEA,GAAE,QAAM,MAAKA,GAAE,QAAM,GAAG,MAAK,EAAEA,GAAE,SAAS,WAAUA,GAAE,GAAG,WAAW,CAAC;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,UAAMA,KAAE,MAAKC,KAAED,GAAE;AAAS,IAAAC,GAAE,GAAG,aAAYD,GAAE,WAAW,GAAEC,GAAE,UAAQ,EAAE,OAAKA,GAAE,GAAG,cAAaD,GAAE,YAAY,IAAEA,GAAE,aAAa,GAAEC,GAAE,GAAG,CAAC,UAAS,wBAAwB,GAAED,GAAE,QAAQ,GAAEC,GAAE,GAAG,mBAAkBD,GAAE,SAAS;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,UAAMA,KAAE,MAAKC,KAAED,GAAE;AAAS,IAAAC,GAAE,IAAI,aAAYD,GAAE,WAAW,GAAEC,GAAE,IAAI,cAAaD,GAAE,YAAY,GAAEC,GAAE,IAAI,CAAC,UAAS,wBAAwB,GAAED,GAAE,QAAQ,GAAEC,GAAE,IAAI,mBAAkBD,GAAE,SAAS,GAAEA,GAAE,QAAQ;AAAA,EAAC;AAAC;AAAE,OAAO,eAAe,IAAG,YAAW,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,GAAE,CAAC;AAAE,IAAM,KAAG,OAAO,OAAO,OAAO,OAAO,CAAC,GAAE,EAAE,GAAE,EAAC,KAAI,KAAI,aAAY,MAAG,UAAS,KAAI,CAAC;AAAlF,IAAoF,KAAG;AAAvF,IAAmG,KAAG;AAAc,IAAM,KAAN,cAAiB,EAAC;AAAA,EAAC,cAAa;AAAC,UAAM,GAAG,SAAS,GAAE,OAAO,eAAe,MAAK,OAAM,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,UAAS,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,MAAE,CAAC;AAAA,EAAC;AAAA,EAAC,IAAI,YAAW;AAAC,UAAMA,KAAE,KAAK;AAAI,WAAOA,MAAG,CAACA,GAAE,WAAW;AAAA,EAAC;AAAA,EAAC,IAAI,WAAU;AAAC,WAAO,KAAK;AAAA,EAAM;AAAA,EAAC,QAAQA,IAAEC,IAAE;AAAC,IAAAA,GAAE,gBAAgB;AAAA,EAAC;AAAA,EAAC,cAAcD,IAAEC,IAAE;AAAC,QAAIC,IAAEC,IAAEC;AAAE,UAAMC,MAAG,UAAQD,KAAE,UAAQD,KAAE,UAAQD,KAAE,KAAK,aAAW,WAASA,KAAE,SAAOA,GAAE,aAAW,WAASC,KAAE,SAAOA,GAAE,OAAOF,GAAE,KAAK,MAAI,WAASG,KAAE,SAAOA,GAAE,SAAO,IAAGE,KAAEL,GAAE;AAAG,QAAGK,MAAGD,IAAE;AAAC,UAAIL,KAAE,OAAOK,EAAC;AAAG,OAAC,SAAQ,WAAU,SAAQ,YAAY,EAAE,SAASA,EAAC,MAAIL,MAAG,eAAc,EAAEM,IAAEN,EAAC;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,QAAIA;AAAE,UAAMC,KAAE,MAAKC,KAAED,GAAE,UAASE,KAAED,GAAE;AAAS,QAAGD,GAAE,OAAK,CAACE,GAAE;AAAO,UAAMC,KAAEH,GAAE,OAAO,UAAU,KAAGC,GAAE,UAAQA,GAAE;AAAU,QAAG,CAACE,GAAE;AAAO,UAAMC,KAAE,EAAE,CAAC,GAAEJ,GAAE,SAAQ,EAAC,UAASG,IAAE,SAAQ,EAAC,WAAU,4BAA2B,GAAE,UAAS,EAAC,MAAK,EAAC,UAASF,GAAE,OAAO,mBAAmB,KAAG,EAAC,EAAC,GAAE,IAAG,EAAC,OAAM,CAAAF,OAAG;AAAC,YAAME,KAAEF,GAAE;AAAU,MAAAE,MAAG,KAAK,WAASD,GAAE,QAAQ,GAAEC,GAAE,MAAM,aAAW,QAAOD,GAAE,KAAK,GAAEC,GAAE,cAAa,eAAgB,MAAI;AAAC,QAAAA,GAAE,MAAM,aAAW,IAAGD,GAAE,KAAK;AAAA,MAAC,CAAE;AAAA,IAAE,EAAC,EAAC,CAAC;AAAE,IAAAI,GAAE,WAASA,GAAE,YAAU,CAAC,GAAEA,GAAE,SAAS,KAAG,GAAG,UAAQL,KAAEC,GAAE,QAAQ,aAAW,WAASD,KAAE,SAAOA,GAAE,OAAK,CAAC,GAAE,EAAC,OAAM,KAAK,SAAQ,aAAY,KAAK,cAAa,CAAC,GAAEG,GAAE,QAAQ,SAAOE,IAAEF,GAAE,cAAc,EAAC,QAAO,GAAE,CAAC,GAAEF,GAAE,MAAIE,GAAE,QAAQ,QAAOF,GAAE,OAAO,aAAa,MAAIA,GAAE,IAAI,QAAM,GAAG,QAAOA,GAAE,SAAO;AAAA,EAAG;AAAA,EAAC,WAAU;AAAC,QAAID;AAAE,UAAMC,KAAE,UAAQD,KAAE,KAAK,QAAM,WAASA,KAAE,SAAOA,GAAE;AAAU,IAAAC,OAAIA,GAAE,MAAM,YAAU;AAAA,EAAG;AAAA,EAAC,UAAUD,IAAEC,IAAE;AAAC,UAAMC,KAAE,KAAK,OAAO,KAAK;AAAE,IAAAA,MAAGA,OAAID,MAAG,KAAK,OAAO;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,UAAMD,KAAE,KAAK;AAAI,QAAGA,MAAG,CAACA,GAAE,WAAW,EAAE,QAAOA,GAAE,UAAQ,GAAG,UAAQA,GAAE,QAAM,GAAG,MAAK,KAAKA,GAAE,MAAM,KAAG,MAAK,KAAK,SAAO,KAAK,KAAK,IAAE,KAAK,KAAK;AAAA,EAAE;AAAA,EAAC,OAAM;AAAC,UAAMA,KAAE,KAAK;AAAI,QAAG,CAACA,MAAGA,GAAE,WAAW,EAAE;AAAO,UAAMC,KAAED,GAAE;AAAU,IAAAC,OAAI,KAAK,QAAQ,GAAEA,GAAE,cAAaA,GAAE,gBAAgB,EAAE,GAAEA,GAAE,UAAU,OAAO,EAAE,GAAE,KAAK,SAAO;AAAA,EAAG;AAAA,EAAC,OAAM;AAAC,UAAMD,KAAE,KAAK,KAAIC,KAAED,MAAGA,GAAE;AAAU,IAAAC,OAAI,KAAK,QAAQ,GAAEA,GAAE,cAAaA,GAAE,UAAU,IAAI,EAAE,GAAEA,GAAE,aAAa,IAAG,MAAM,IAAG,KAAK,SAAO;AAAA,EAAE;AAAA,EAAC,UAAS;AAAC,UAAMD,KAAE,KAAK;AAAI,QAAG,CAACA,MAAG,CAACA,GAAE,MAAM;AAAO,UAAMC,KAAED,GAAE,WAAUE,MAAG,QAAMD,KAAE,SAAOA,GAAE,eAAa;AAAK,IAAAA,MAAGC,MAAGA,GAAE,WAAW,WAASD,GAAE,MAAM,YAAU,GAAGC,GAAE,sBAAsB,EAAE,MAAM;AAAA,EAAK;AAAA,EAAC,SAAQ;AAAC,UAAMF,KAAE,MAAKC,KAAED,GAAE;AAAS,IAAAC,GAAE,UAAQ,GAAG,OAAKA,GAAE,GAAG,iBAAgBD,GAAE,MAAM,IAAEA,GAAE,OAAO,GAAEC,GAAE,GAAG,UAASD,GAAE,QAAQ,GAAEC,GAAE,GAAG,WAAUD,GAAE,SAAS;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,QAAIA;AAAE,UAAMC,KAAE,MAAKC,KAAED,GAAE;AAAS,IAAAC,GAAE,IAAI,iBAAgBD,GAAE,MAAM,GAAEC,GAAE,IAAI,UAASD,GAAE,QAAQ,GAAEC,GAAE,IAAI,WAAUD,GAAE,SAAS,GAAE,UAAQD,KAAEE,GAAE,aAAW,WAASF,MAAGA,GAAE,cAAc,CAAC,QAAQ,CAAC,GAAEC,GAAE,MAAI;AAAA,EAAI;AAAC;AAAC,OAAO,eAAe,IAAG,YAAW,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,GAAE,CAAC;AAAE,IAAM,KAAG,EAAC,SAAQ,EAAC,MAAK,qDAAoD,QAAO,EAAC,MAAK,KAAI,EAAC,GAAE,UAAS,EAAC,MAAK,sDAAqD,QAAO,EAAC,MAAK,IAAG,EAAC,GAAE,OAAM,EAAC,MAAK,uDAAsD,QAAO,EAAC,MAAK,KAAI,EAAC,GAAE,SAAQ,EAAC,MAAK,uDAAsD,QAAO,EAAC,MAAK,IAAG,EAAC,GAAE,QAAO,EAAC,MAAK,0FAAyF,QAAO,SAAQ,GAAE,SAAQ,EAAC,MAAK,mFAAkF,QAAO,UAAS,GAAE,YAAW,EAAC,MAAK,qUAAoU,QAAO,aAAY,GAAE,YAAW,EAAC,MAAK,sIAAqI,QAAO,aAAY,GAAE,aAAY,EAAC,MAAK,sIAAqI,QAAO,cAAa,GAAE,WAAU,EAAC,MAAK,qIAAoI,QAAO,YAAW,GAAE,UAAS,EAAC,MAAK,iIAAgI,QAAO,WAAU,GAAE,OAAM,EAAC,MAAK,yFAAwF,QAAO,QAAO,GAAE,OAAM,EAAC,MAAK,0FAAyF,QAAO,QAAO,GAAE,MAAK,EAAC,MAAK,gHAA+G,QAAO,OAAM,GAAE,MAAK,EAAC,MAAK,6GAA4G,QAAO,OAAM,GAAE,OAAM,EAAC,MAAK,kGAAiG,QAAO,QAAO,GAAE,UAAS,EAAC,MAAK,wJAAuJ,QAAO,WAAU,EAAC;AAAE,IAAI;AAAG,CAAC,SAASD,IAAE;AAAC,EAAAA,GAAEA,GAAE,OAAK,CAAC,IAAE,QAAOA,GAAEA,GAAE,QAAM,CAAC,IAAE,SAAQA,GAAEA,GAAE,WAAS,CAAC,IAAE;AAAU,EAAE,OAAK,KAAG,CAAC,EAAE;AAAE,IAAM,KAAG,EAAC,UAAS,QAAO,SAAQ,EAAC,MAAK,CAAC,SAAS,GAAE,QAAO,CAAC,GAAE,OAAM,CAAC,eAAc,aAAY,cAAa,UAAS,OAAO,EAAC,GAAE,SAAQ,QAAO,OAAM,EAAC,SAAQ,EAAC,KAAI,iIAAgI,GAAE,UAAS,EAAC,KAAI,+KAA8K,GAAE,MAAK,EAAC,KAAI,6GAA4G,GAAE,MAAK,EAAC,KAAI,4GAA2G,GAAE,WAAU,EAAC,KAAI,qLAAoL,GAAE,YAAW,EAAC,KAAI,8UAA6U,GAAE,QAAO,EAAC,KAAI,+YAA8Y,GAAE,OAAM,EAAC,KAAI,+HAA8H,EAAC,GAAE,UAAS,KAAI;AAA1yD,IAA4yD,KAAG,EAAC,UAAS,MAAK,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,OAAM,6BAA4B;AAA34D,IAA64D,KAAG;AAAh5D,IAA85D,KAAG;AAAoB,IAAM,KAAN,cAAiB,EAAC;AAAA,EAAC,cAAa;AAAC,UAAM,GAAG,SAAS,GAAE,OAAO,eAAe,MAAK,SAAQ,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,GAAG,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,aAAY,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC;AAAA,EAAC;AAAA,EAAC,QAAQA,IAAE;AAAC,QAAIC;AAAE,QAAG,CAACD,GAAE,SAAS;AAAO,QAAIE,KAAE,KAAK,OAAO,SAAS,GAAEC,KAAE,KAAK,OAAO,UAAU,GAAEC,KAAE,KAAK,OAAO,SAAS;AAAE,QAAG,WAASA,IAAE;AAAC,YAAMJ,KAAE,KAAK,SAAS;AAAS,UAAIC,KAAE;AAAE,UAAGD,GAAE,YAAUE,MAAKF,GAAE,OAAO,EAACE,GAAE,WAAS,YAAUA,GAAE,SAAOD;AAAI,MAAAA,OAAIG,KAAE;AAAA,IAAG;AAAC,IAAAA,OAAIF,KAAE;AAAQ,QAAIG,KAAE;AAAE,UAAMC,KAAE,EAAC,MAAK,CAAC,GAAE,QAAO,CAAC,GAAE,OAAM,CAAC,EAAC;AAAE,QAAGJ,GAAE,YAAUF,MAAI,CAAC,QAAO,UAAS,OAAO,EAAE,YAAUG,MAAKD,GAAEF,EAAC,GAAE;AAAC,YAAME,KAAE,KAAK,SAASC,EAAC;AAAE,MAAAD,OAAI,UAAQD,KAAEK,GAAEN,EAAC,MAAI,WAASC,MAAGA,GAAE,KAAKC,EAAC,GAAEG;AAAA,IAAI;AAAC,QAAIE,KAAE;AAAK,QAAGF,OAAIE,KAAE,KAAK,gBAAgB,IAAGA,IAAE;AAAC,iBAAS,CAACP,IAAEC,EAAC,KAAI,OAAO,QAAQK,EAAC,GAAE;AAAC,cAAMJ,KAAE,SAAS,cAAc,KAAK;AAAE,UAAEA,IAAE,KAAG,iBAAeF,EAAC;AAAE,mBAAUA,MAAKC,GAAE,CAAAC,GAAE,YAAYF,EAAC;AAAE,mBAASG,MAAG,aAAWH,MAAGC,GAAE,WAASE,KAAE,OAAII,GAAE,YAAYL,EAAC;AAAA,MAAC;AAAC,eAAKC,MAAG,EAAEI,IAAE,aAAa,GAAE,KAAK,QAAM,GAAG,OAAM,KAAK,UAAU;AAAA,IAAC,MAAM,MAAK,QAAM,GAAG;AAAA,EAAQ;AAAA,EAAC,QAAQP,IAAE;AAAC,QAAIC,IAAEC;AAAE,UAAMC,KAAE,KAAK,UAASC,KAAED,GAAE,SAAS,GAAEE,KAAE,QAAMD,KAAE,SAAOA,GAAE,SAAQE,KAAEN,GAAE,QAAOO,KAAED,MAAG,EAAEA,EAAC,IAAEA,GAAE,UAAQ;AAAK,QAAG,CAACC,GAAE;AAAO,QAAG,WAASA,GAAE,qBAAqB,QAAOP,GAAE,eAAe,GAAEA,GAAE,gBAAgB,GAAE,MAAK,UAAQC,KAAEE,GAAE,QAAQ,WAAS,WAASF,MAAGA,GAAE,OAAO;AAAG,QAAG,WAASM,GAAE,yBAAyB,QAAOP,GAAE,eAAe,GAAEA,GAAE,gBAAgB,GAAE,KAAK,KAAK,SAAS,iBAAiB;AAAE,QAAG,WAASO,GAAE,yBAAwB;AAAC,MAAAP,GAAE,eAAe,GAAEA,GAAE,gBAAgB;AAAE,YAAMC,KAAE,UAAQC,KAAEC,GAAE,aAAW,WAASD,KAAE,SAAOA,GAAE,QAAQ;AAAS,UAAIE,KAAEH,GAAE;AAAS,aAAOI,MAAG,gBAAcA,GAAE,WAAS,CAACD,MAAGC,GAAE,MAAM,GAAE,MAAKD,KAAEH,GAAE,KAAK,IAAEA,GAAE,MAAM;AAAA,IAAE;AAAC,UAAMO,KAAED,GAAE,eAAcE,KAAEF,GAAE;AAAc,SAAIE,MAAGD,QAAKR,GAAE,eAAe,GAAEA,GAAE,gBAAgB,IAAGS,IAAE;AAAC,UAAIT,KAAE,CAAC;AAAE,UAAG;AAAC,QAAAA,KAAE,KAAK,MAAMS,EAAC;AAAA,MAAC,SAAOT,IAAE;AAAA,MAAC;AAAC,MAAAK,MAAGA,GAAE,YAAYL,EAAC;AAAA,IAAC,MAAM,CAAAQ,MAAGH,MAAGA,GAAEG,EAAC,KAAGH,GAAEG,EAAC,EAAE;AAAA,EAAC;AAAA,EAAC,WAAU;AAAC,SAAK,UAAU;AAAA,EAAC;AAAA,EAAC,YAAW;AAAC,QAAG,KAAK,SAAS,UAAU,EAAE;AAAO,UAAMR,KAAE,KAAK;AAAU,QAAG,CAACA,GAAE;AAAO,UAAMC,KAAE,KAAK,SAAS,SAAS;AAAE,QAAG,CAACA,MAAGA,GAAE,UAAQ,GAAG,MAAM;AAAO,UAAMC,KAAED,MAAG,CAACA,GAAE,SAAOA,GAAE;AAAQ,eAAUA,MAAKD,GAAE,iBAAiB,uBAAuB,EAAE,CAAAE,MAAGD,GAAE,gBAAgB,UAAU,GAAEA,GAAE,gBAAgB,UAAU,MAAIA,GAAE,aAAa,YAAW,EAAE,GAAEA,GAAE,aAAa,YAAW,IAAI;AAAG,QAAIE,KAAED,MAAGA,GAAE,UAAU,GAAEE,KAAEF,MAAGA,GAAE,WAAW;AAAE,eAAUD,MAAKD,GAAE,iBAAiB,gCAAgC,EAAE,CAAAG,MAAGF,GAAE,gBAAgB,UAAU,GAAEA,GAAE,gBAAgB,UAAU,MAAIA,GAAE,aAAa,YAAW,EAAE,GAAEA,GAAE,aAAa,YAAW,IAAI;AAAG,eAAUA,MAAKD,GAAE,iBAAiB,iCAAiC,EAAE,CAAAI,MAAGH,GAAE,gBAAgB,UAAU,GAAEA,GAAE,gBAAgB,UAAU,MAAIA,GAAE,aAAa,YAAW,EAAE,GAAEA,GAAE,aAAa,YAAW,IAAI;AAAG,eAAUA,MAAKD,GAAE,iBAAiB,wEAAwE,GAAE;AAAC,MAAAI,MAAGD,MAAGF,GAAE,gBAAgB,UAAU,GAAEA,GAAE,gBAAgB,UAAU,MAAIA,GAAE,aAAa,YAAW,EAAE,GAAEA,GAAE,aAAa,YAAW,IAAI;AAAG,YAAMD,KAAEC,GAAE,cAAc,GAAG;AAAE,MAAAD,OAAIA,GAAE,MAAM,UAAQG,KAAE,KAAG;AAAA,IAAO;AAAA,EAAC;AAAA,EAAC,OAAOH,IAAEC,IAAE;AAAC,QAAIC;AAAE,cAAQA,KAAED,GAAE,YAAU,WAASC,MAAGA,GAAE,GAAG,kBAAkB,MAAI;AAAC,WAAK,SAAS,eAAeD,EAAC,KAAG,KAAK,UAAU;AAAA,IAAC,CAAE,GAAE,KAAK,SAAS,eAAeA,EAAC,KAAG,KAAK,UAAU;AAAA,EAAC;AAAA,EAAC,kBAAiB;AAAC,UAAMD,KAAE,KAAK,SAAS;AAAU,QAAG,CAACA,GAAE,QAAO;AAAK,UAAMC,KAAE,KAAK,OAAO,UAAU,KAAGD;AAAE,QAAIE,KAAED,GAAE,cAAc,MAAI,EAAE;AAAE,WAAOC,OAAIA,KAAE,SAAS,cAAc,KAAK,GAAE,EAAEA,IAAE,EAAE,GAAED,GAAE,QAAQC,EAAC,IAAGA,GAAE,iBAAiB,SAAQ,KAAK,SAAQ,EAAC,SAAQ,OAAG,SAAQ,KAAE,CAAC,GAAEF,MAAG,EAAEA,IAAE,EAAE,GAAE,KAAK,YAAUE,IAAEA;AAAA,EAAC;AAAA,EAAC,SAASF,IAAE;AAAC,UAAMC,KAAE,KAAK,UAASC,KAAED,GAAE;AAAS,QAAG,CAACC,GAAE,QAAO;AAAK,QAAG,eAAaF,GAAE,QAAO;AAAK,QAAG,iBAAeA,MAAG,CAAC,GAAG,EAAE,QAAO;AAAK,QAAII,KAAE;AAAK,UAAMC,KAAEH,GAAE,OAAO,UAAQ;AAAE,QAAII,KAAE,GAAEC,KAAE;AAAE,eAAUP,MAAKE,GAAE,OAAO,EAACF,GAAE,WAAS,YAAUA,GAAE,SAAOM,OAAK,YAAUN,GAAE,QAAMA,GAAE,gBAAcO;AAAI,QAAGF,KAAE,KAAG,CAAC,WAAU,QAAO,MAAM,EAAE,SAASL,EAAC,EAAE,QAAOI;AAAE,QAAG,WAAS,GAAGJ,EAAC,KAAG,CAACM,GAAE,QAAO;AAAK,QAAG,eAAaN,MAAG,CAACO,GAAE,QAAO;AAAK,QAAG,aAAWP,IAAE;AAAC,YAAMA,KAAEC,GAAE,QAAQ;AAAO,UAAG,CAACD,MAAG,CAACA,GAAE,UAAU,QAAO;AAAA,IAAI;AAAC,QAAG,gBAAcA,IAAE;AAAC,UAAG,CAACE,GAAE,QAAQ,YAAUG,KAAE,EAAE,QAAO;AAAA,IAAI;AAAC,QAAG,WAAS,GAAGL,EAAC,GAAE;AAAC,YAAMC,KAAE,GAAGD,EAAC;AAAE,MAAAI,KAAE,SAAS,cAAc,QAAQ,GAAEA,GAAE,aAAa,SAAQ,KAAK,SAAS,SAAS,KAAKJ,GAAE,YAAY,CAAC,IAAI,CAAC,GAAE,EAAEI,IAAE,UAAU,GAAEH,GAAE,WAASG,GAAE,QAAQ,gBAAcH,GAAE,SAAQA,GAAE,WAASG,GAAE,QAAQ,gBAAc,KAAK,UAAUH,GAAE,MAAM,IAAGG,GAAE,YAAY,EAAE,KAAK,SAAS,SAASH,GAAE,IAAI,CAAC,CAAC;AAAA,IAAC,OAAK;AAAC,YAAMA,MAAG,KAAK,OAAO,OAAO,KAAG,CAAC,GAAGD,EAAC;AAAE,MAAAC,OAAIG,KAAE,EAAE,KAAK,SAAS,SAASH,GAAE,GAAG,CAAC,GAAE,cAAY,OAAOA,GAAE,SAAOG,GAAE,iBAAiB,SAAS,CAAAJ,OAAG;AAAC,QAAAA,GAAE,eAAe,GAAEA,GAAE,gBAAgB,GAAE,cAAY,OAAOC,GAAE,SAAOA,GAAE,MAAM,KAAK,MAAK,MAAKD,EAAC;AAAA,MAAC,CAAE;AAAA,IAAE;AAAC,UAAMQ,KAAE,QAAMJ,KAAE,SAAOA,GAAE,cAAc,KAAK;AAAE,QAAGI,GAAE,YAAS,CAACR,IAAEC,EAAC,KAAI,OAAO,QAAQ,EAAE,EAAE,CAAAO,GAAE,aAAaR,EAAC,KAAGQ,GAAE,aAAaR,IAAE,OAAOC,EAAC,CAAC;AAAE,WAAOG;AAAA,EAAC;AAAA,EAAC,kBAAiB;AAAC,UAAMJ,KAAE,KAAK;AAAU,IAAAA,MAAGA,GAAE,OAAO,GAAE,KAAK,YAAU,MAAK,KAAK,QAAM,GAAG;AAAS,UAAMC,KAAE,KAAK,SAAS;AAAU,IAAAA,MAAG,EAAEA,IAAE,EAAE;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,UAAMD,KAAE,MAAKC,KAAED,GAAE;AAAS,IAAAC,GAAE,GAAG,uBAAsBD,GAAE,OAAO,GAAEC,GAAE,GAAG,QAAOD,GAAE,MAAM,GAAEC,GAAE,GAAG,CAAC,UAAS,iBAAiB,GAAED,GAAE,QAAQ,GAAEA,GAAE,QAAQA,GAAE,QAAQ;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,UAAMA,KAAE,MAAKC,KAAED,GAAE;AAAS,IAAAC,GAAE,IAAI,uBAAsBD,GAAE,OAAO,GAAEC,GAAE,IAAI,QAAOD,GAAE,MAAM,GAAEC,GAAE,IAAI,CAAC,UAAS,iBAAiB,GAAED,GAAE,QAAQ,GAAEA,GAAE,gBAAgB;AAAA,EAAC;AAAC;AAAC,OAAO,eAAe,IAAG,YAAW,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,GAAE,CAAC;AAAE,IAAM,KAAG,EAAC,MAAK,cAAc,EAAC;AAAA,EAAC,UAAS;AAAC,SAAG;AAAA,EAAE;AAAA,EAAC,SAASA,IAAE;AAAC,UAAI,aAAa,EAAE;AAAE,UAAK,EAAC,MAAKC,GAAC,IAAE,GAAG,GAAE,EAAC,MAAKC,GAAC,IAAE,GAAG,GAAEC,KAAEH,GAAE,eAAeA,GAAE,SAAS,CAAC;AAAE,IAAAG,OAAI,KAAGD,OAAID,KAAE,KAAGC,KAAGD,MAAGA,OAAIC,OAAI,KAAG,WAAY,MAAI;AAAC,UAAG;AAAC,YAAGF,GAAE,UAAQ,GAAG,OAAM;AAAC,cAAIA,KAAE;AAAe,UAAAG,MAAG,CAAC,OAAKH,KAAE,aAAY,KAAG,OAAI,OAAO,QAAQA,EAAC,EAAE,CAAC,GAAE,SAAS,OAAM,OAAO,SAAS,WAAS,OAAO,SAAS,SAAOC,EAAC;AAAA,QAAC;AAAA,MAAC,SAAOD,IAAE;AAAA,MAAC;AAAA,IAAC,GAAG,GAAG;AAAA,EAAE;AAAA,EAAC,QAAQA,IAAE;AAAC,QAAG,MAAI,aAAa,EAAE,GAAE,CAAC,MAAI,GAAG,QAAO,KAAG,OAAG,KAAG,OAAG,KAAK,OAAO,QAAQ,KAAK;AAAE,QAAG,CAAC,GAAG,KAAG;AAAC,aAAO,QAAQ,aAAa,CAAC,GAAE,SAAS,OAAM,OAAO,SAAS,WAAS,OAAO,SAAS,UAAQ,MAAI,GAAG;AAAA,IAAC,SAAOA,IAAE;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,UAAMA,KAAE,KAAK;AAAS,IAAAA,GAAE,GAAG,SAAQ,KAAK,OAAO,GAAEA,GAAE,GAAG,CAAC,kBAAiB,iBAAiB,GAAE,KAAK,QAAQ,GAAEA,GAAE,GAAG,SAAQ,KAAK,OAAO;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,UAAMA,KAAE,KAAK;AAAS,IAAAA,GAAE,IAAI,SAAQ,KAAK,OAAO,GAAEA,GAAE,IAAI,CAAC,kBAAiB,iBAAiB,GAAE,KAAK,QAAQ,GAAEA,GAAE,IAAI,SAAQ,KAAK,OAAO;AAAA,EAAC;AAAA,EAAC,OAAO,WAAU;AAAC,WAAO,GAAG;AAAA,EAAC;AAAA,EAAC,OAAO,eAAc;AAAC,OAAG;AAAA,EAAC;AAAA,EAAC,OAAO,UAAS;AAAC,WAAO,oBAAoB,cAAa,IAAG,KAAE;AAAA,EAAC;AAAC,GAAE,MAAK,IAAG,QAAO,IAAG,WAAU,IAAG,QAAO,IAAG,SAAQ,GAAE;AAAjiC,IAAmiC,KAAG;AAAtiC,IAAsjC,KAAG;AAAzjC,IAA0kC,KAAG;AAA7kC,IAA+mC,KAAG;AAAlnC,IAA2oC,KAAG;AAA9oC,IAA4pC,KAAG;AAA/pC,IAA8qC,KAAG;AAAjrC,IAA+rC,KAAG;AAAlsC,IAA+sC,KAAG;AAAltC,IAA+tC,KAAG;AAAluC,IAA+uC,KAAG;AAAlvC,IAAgwC,KAAG;AAAnwC,IAA8wC,KAAG;AAAjxC,IAA4xC,KAAG;AAA/xC,IAA0yC,KAAG;AAA7yC,IAAozC,KAAG;AAAvzC,IAA6zC,KAAG,CAAAA,OAAG,YAAU,OAAOA;AAAp1C,IAAs1C,KAAG,WAAU;AAAC,MAAIA,KAAE,OAAO,aAAa;AAAE,SAAM,CAAC,CAACA,MAAG,YAAUA,GAAE;AAAI;AAAE,IAAI;AAAJ,IAAO,KAAG;AAAV,IAAe,KAAG;AAAlB,IAAuB,KAAG;AAA1B,IAA4B,KAAG;AAA/B,IAAiC,KAAG;AAApC,IAAsC,KAAG;AAAE,IAAM,KAAG,oBAAI;AAAI,IAAI,KAAG;AAAE,IAAM,KAAN,MAAM,YAAW,EAAC;AAAA,EAAC,IAAI,SAAQ;AAAC,WAAO,KAAK;AAAA,EAAI;AAAA,EAAC,IAAI,YAAW;AAAC,WAAO,KAAK,OAAO,SAAS;AAAA,EAAC;AAAA,EAAC,YAAYA,KAAE,CAAC,GAAEC,KAAE,CAAC,GAAEC,KAAE,CAAC,GAAE;AAAC,UAAMD,EAAC,GAAE,OAAO,eAAe,MAAK,cAAa,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,CAAC,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,eAAc,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,CAAC,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,QAAO,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,MAAE,CAAC,GAAE,OAAO,eAAe,MAAK,aAAY,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,cAAa,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,OAAM,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,qBAAoB,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,MAAE,CAAC,GAAE,OAAO,eAAe,MAAK,aAAY,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,MAAE,CAAC,GAAE,OAAO,eAAe,MAAK,SAAQ,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,GAAG,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,MAAK,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,EAAC,CAAC,GAAE,OAAO,eAAe,MAAK,aAAY,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,WAAU,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,UAAS,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,YAAW,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,aAAY,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,KAAI,CAAC,GAAE,OAAO,eAAe,MAAK,sBAAqB,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,OAAM,CAAC,GAAE,OAAK,KAAG,GAAG,IAAG,KAAK,KAAGA,GAAE,MAAI,EAAE,IAAG,GAAG,IAAI,KAAK,IAAG,IAAI,GAAE,KAAK,aAAWD,IAAE,KAAK,cAAYE,IAAE,eAAgB,MAAI;AAAC,WAAK,KAAK;AAAA,IAAC,CAAE;AAAA,EAAC;AAAA,EAAC,OAAM;AAAC,QAAG,KAAK,UAAQ,GAAG,QAAQ;AAAO,SAAK,QAAM,GAAG,MAAK,KAAK,cAAc,OAAO,OAAO,OAAO,OAAO,CAAC,GAAE,IAAG,OAAO,GAAE,KAAK,WAAW,CAAC,GAAE,KAAK,KAAK,MAAM,GAAE,KAAK,KAAK,eAAe,GAAE,SAAK,KAAK,OAAO,eAAe,MAAI,MAAI;AAAC,UAAG,CAAC,GAAG;AAAO,YAAMF,KAAE,UAASC,KAAED,GAAE,MAAKE,KAAEF,GAAE;AAAgB,UAAGC,GAAE,UAAU,SAAS,EAAE,EAAE;AAAO,UAAIE,KAAE,OAAO,aAAWD,GAAE,sBAAsB,EAAE;AAAM,YAAME,KAAE,WAAW,OAAO,iBAAiBH,EAAC,EAAE,WAAW;AAAE,MAAAE,KAAE,MAAIA,KAAE,IAAGD,GAAE,MAAM,YAAY,IAAG,GAAGC,EAAC,IAAI,GAAEC,MAAGH,GAAE,MAAM,YAAY,IAAG,GAAGG,EAAC,IAAI,GAAEH,GAAE,UAAU,IAAI,EAAE;AAAA,IAAC,GAAG,GAAE,KAAK,WAAW,GAAE,KAAK,MAAM;AAAE,UAAMD,KAAE,MAAI;AAAC,WAAK,aAAa,KAAK,UAAU,GAAE,KAAK,QAAM,GAAG,OAAM,KAAK,aAAa,GAAE,KAAK,KAAK,OAAO,GAAE,WAAY,MAAI;AAAC,aAAK,aAAW,KAAK,UAAU,aAAa,IAAG,OAAO;AAAA,MAAC,GAAG,EAAE;AAAA,IAAC;AAAE,SAAK,OAAO,sBAAsB,KAAG,MAAI,CAAC,GAAG,aAAa,IAAE,GAAG,QAAQ,EAAE,KAAM,MAAI;AAAC,WAAK,YAAU,MAAGA,GAAE;AAAA,IAAC,CAAE,EAAE,MAAO,MAAIA,GAAE,CAAE,IAAEA,GAAE;AAAA,EAAC;AAAA,EAAC,aAAY;AAAC,QAAIA,IAAEC;AAAE,UAAMC,KAAE,KAAK,OAAO,UAAU,KAAG,SAAS,MAAKE,KAAE,EAAE,KAAK,SAAS,KAAK,OAAO,UAAU,KAAG,EAAE,CAAC;AAAE,QAAGA,IAAE;AAAC,UAAGA,GAAE,aAAa,MAAK,YAAY,KAAK,EAAE,EAAE,GAAEA,GAAE,aAAa,cAAa,KAAK,SAAS,WAAW,CAAC,GAAEA,GAAE,UAAU,OAAO,IAAG,KAAK,SAAS,GAAE,EAAEA,IAAE,KAAK,OAAO,WAAW,KAAG,EAAE,GAAE,EAAEA,IAAE,EAAE,GAAE,KAAK,YAAUA,IAAE,KAAK,SAAOA,GAAE,cAAc,mBAAmB,GAAEF,GAAE,YAAYE,EAAC,GAAE,EAAE,SAAS,iBAAgB,EAAE,GAAE,MAAI,OAAK,KAAG,SAAS,cAAc,MAAM,GAAE,EAAE,IAAG,sBAAsB,GAAE,GAAG,aAAa,IAAG,GAAG,GAAE,GAAG,aAAa,IAAG,MAAM,GAAE,GAAG,aAAa,cAAa,aAAa,GAAE,KAAG,GAAG,UAAU,GAAE,UAAQJ,KAAEI,GAAE,kBAAgB,WAASJ,MAAGA,GAAE,aAAa,IAAGI,EAAC,GAAE,UAAQH,KAAEG,GAAE,kBAAgB,WAASH,MAAGA,GAAE,OAAO,EAAE,IAAGG,GAAE,iBAAiB,aAAa,CAAAJ,OAAG;AAAC,aAAGA,GAAE,OAAM,KAAGA,GAAE,OAAM,EAAEI,IAAE,EAAE;AAAA,MAAC,CAAE,GAAE,KAAK,OAAO,eAAe,EAAE,YAAUJ,MAAK,GAAG,OAAO,EAAE,CAAAA,GAAE,OAAK,KAAK,MAAIA,GAAE,MAAM;AAAA,UAAO,MAAK,OAAO,UAAU,MAAI,EAAEI,IAAE,EAAE,GAAE,WAAY,MAAI;AAAC,aAAK,UAAU,KAAG,EAAEA,IAAE,EAAE;AAAA,MAAC,GAAG,GAAG;AAAG,WAAK,KAAK,YAAY;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,aAAaJ,IAAE;AAAC,UAAME,KAAE,KAAK;AAAU,QAAG,CAACA,GAAE;AAAO,UAAMC,KAAED,GAAE,cAAc,qBAAqB;AAAE,QAAG,CAACC,GAAE;AAAO,UAAMC,KAAE,KAAK,WAAS,IAAI,EAAED,IAAE,EAAE,CAAC,GAAE,EAAC,QAAOH,IAAE,YAAW,QAAO,SAAQ,EAAC,UAAS,KAAK,OAAO,aAAa,IAAE,OAAK,KAAI,UAAS,CAAC,CAAC,KAAK,OAAO,aAAa,KAAG,IAAG,GAAE,MAAK,OAAG,YAAW,EAAC,SAAQ,EAAC,WAAU,iBAAgB,QAAO,YAAW,QAAO,WAAU,QAAO,UAAS,EAAC,GAAE,aAAY,KAAK,OAAO,YAAY,GAAE,MAAK,KAAK,OAAO,MAAM,EAAC,GAAE,KAAK,OAAO,UAAU,KAAG,CAAC,CAAC,CAAC;AAAE,IAAAI,GAAE,GAAG,KAAK,CAACJ,IAAEC,OAAKC,OAAI;AAAC,WAAK,KAAK,YAAYD,EAAC,IAAGD,IAAE,GAAGE,EAAC;AAAA,IAAC,CAAE,GAAEE,GAAE,GAAG,CAAC,SAAQ,QAAQ,GAAG,MAAI;AAAC,WAAK,cAAc;AAAA,IAAC,CAAE,GAAE,KAAK,GAAG,wBAAwB,CAACJ,IAAEC,IAAEC,OAAI;AAAC,WAAK,aAAaA,EAAC,GAAEA,GAAE,QAAM;AAAA,IAAM,CAAE,GAAEE,GAAE,GAAG,sBAAsB,MAAI;AAAC,UAAIJ,IAAEC;AAAE,WAAK,aAAW,KAAK,QAAQ,IAAG,UAAQD,KAAE,SAAS,kBAAgB,WAASA,KAAE,SAAOA,GAAE,QAAQ,WAAW,OAAK,UAAQC,KAAE,KAAK,cAAY,WAASA,MAAGA,GAAE,MAAM;AAAA,IAAE,CAAE,GAAEG,GAAE,GAAG,UAAU,MAAI;AAAC,WAAK,aAAW,KAAK,aAAW,CAAC,KAAK,OAAO,MAAM,KAAG,KAAK,QAAQ,GAAE,KAAK,OAAO,WAAW,KAAG,CAAC,KAAK,aAAW,KAAK,WAAW;AAAA,IAAC,CAAE,GAAE,KAAK,OAAO,aAAa,MAAIA,GAAE,GAAG,0BAA0B,CAACJ,IAAEE,OAAI;AAAC,YAAMC,KAAE,KAAK,SAAS;AAAE,UAAGA,MAAG,EAAEA,GAAE,EAAE,EAAE;AAAO,YAAMC,KAAE,KAAK;AAAU,UAAGA,IAAE;AAAC,cAAMJ,KAAE,KAAK,IAAIE,GAAE,QAAQ,CAAC,GAAED,KAAED,KAAE,IAAE,KAAG,KAAK,IAAI,KAAG,KAAK,IAAI,GAAE,IAAEA,KAAEE,GAAE,YAAY,YAAU,GAAG,CAAC;AAAE,QAAAE,GAAE,MAAM,YAAY,iBAAgBH,KAAE,OAAK,EAAE,GAAEG,GAAE,MAAM,YAAY,sBAAqBH,KAAE,EAAE;AAAA,MAAC;AAAA,IAAC,CAAE,GAAEG,GAAE,GAAG,oBAAoB,CAACJ,IAAEE,IAAEC,OAAI;AAAC,UAAIC;AAAE,YAAMC,KAAE,KAAK,SAAS;AAAE,UAAGA,MAAG,EAAEA,GAAE,EAAE,EAAE;AAAO,UAAGH,GAAE,YAAU,SAAS,iBAAe,OAAK,CAAC,YAAW,OAAO,EAAE,QAAQ,UAAQE,KAAE,SAAS,kBAAgB,WAASA,KAAE,SAAOA,GAAE,QAAQ,EAAE;AAAO,YAAME,KAAE,KAAK,IAAIJ,GAAE,WAAW,CAAC;AAAE,cAAMA,GAAE,eAAaI,MAAG,OAAKA,MAAG,MAAIJ,GAAE,WAAW,OAAK,SAAOC,MAAGA,GAAE,cAAYA,GAAE,eAAe,GAAE,KAAK,MAAMA,IAAE,gBAAcD,GAAE,QAAQ,IAAE,IAAE,OAAK,OAAO;AAAA,IAAE,CAAE,IAAGE,GAAE,GAAG,UAAU,CAAAJ,OAAG;AAAC,UAAIC;AAAE,UAAIC,KAAE,UAAQD,KAAE,KAAK,SAAS,MAAI,WAASA,KAAE,SAAOA,GAAE;AAAU,UAAGC,IAAE;AAAC,cAAMD,KAAE,IAAI,YAAY,WAAU,EAAC,SAAQ,MAAG,YAAW,MAAG,QAAOD,GAAE,KAAI,CAAC;AAAE,QAAAE,GAAE,cAAcD,EAAC;AAAA,MAAC;AAAA,IAAC,CAAE,GAAEG,GAAE,GAAG,CAAC,WAAU,QAAQ,GAAG,CAAAJ,OAAG;AAAC,YAAMC,KAAE,KAAK;AAAU,UAAG,CAACA,GAAE;AAAO,iBAAUC,MAAKD,GAAE,iBAAiB,+BAA+B,EAAE,CAAAC,GAAE,YAAUF,GAAE,OAAK;AAAE,iBAAUE,MAAKD,GAAE,iBAAiB,uBAAuB,EAAE,CAAAC,GAAE,YAAUF,GAAE,MAAM;AAAO,UAAG,CAACA,GAAE,YAAW;AAAC,mBAAUE,MAAKD,GAAE,iBAAiB,sBAAsB,EAAE,CAAAD,GAAE,OAAKA,GAAE,MAAM,SAAO,KAAGE,GAAE,gBAAgB,EAAE,GAAEA,GAAE,gBAAgB,EAAE,MAAIA,GAAE,aAAa,IAAG,EAAE,GAAEA,GAAE,aAAa,IAAG,IAAI;AAAG,mBAAUA,MAAKD,GAAE,iBAAiB,sBAAsB,EAAE,CAAAD,GAAE,OAAK,KAAGE,GAAE,gBAAgB,EAAE,GAAEA,GAAE,gBAAgB,EAAE,MAAIA,GAAE,aAAa,IAAG,EAAE,GAAEA,GAAE,aAAa,IAAG,IAAI;AAAA,MAAE;AAAC,YAAMA,KAAE,KAAK,SAAS;AAAE,UAAG,CAACA,GAAE;AAAO,UAAIC,KAAED,GAAE,eAAa;AAAG,MAAAC,MAAG,YAAUD,GAAE,QAAMA,GAAE,SAAO,CAAC,GAAGA,GAAE,EAAE,CAAC,MAAIC,KAAED,GAAE,EAAE;AAAG,iBAAUF,MAAKC,GAAE,iBAAiB,0BAA0B,GAAE;AAAC,cAAMA,KAAEC,GAAE;AAAiB,QAAAC,MAAGH,GAAE,gBAAgB,EAAE,GAAEA,GAAE,gBAAgB,EAAE,GAAEA,GAAE,aAAa,IAAGG,EAAC,GAAEH,GAAE,aAAa,IAAGC,MAAGE,EAAC,GAAEH,GAAE,aAAa,UAAS,QAAQ,MAAIA,GAAE,aAAa,IAAG,EAAE,GAAEA,GAAE,aAAa,IAAG,IAAI,GAAEA,GAAE,gBAAgB,EAAE,GAAEA,GAAE,gBAAgB,EAAE;AAAA,MAAE;AAAA,IAAC,CAAE,GAAE,KAAK,KAAK,cAAc;AAAA,EAAC;AAAA,EAAC,eAAc;AAAC,UAAMA,KAAE,MAAKC,KAAED,GAAE;AAAU,QAAG,CAACC,GAAE;AAAO,IAAAA,GAAE,iBAAiB,SAAQD,GAAE,SAAQ,EAAC,SAAQ,OAAG,SAAQ,MAAE,CAAC,GAAEC,GAAE,iBAAiB,SAAQD,GAAE,SAAQ,EAAC,SAAQ,OAAG,SAAQ,MAAE,CAAC,GAAE,SAAS,iBAAiB,WAAUA,GAAE,WAAU,EAAC,SAAQ,OAAG,SAAQ,KAAE,CAAC,GAAE,SAAS,iBAAiB,oBAAmBA,GAAE,oBAAmB,KAAE,GAAE,SAAS,iBAAiB,aAAYA,GAAE,WAAW,GAAEA,GAAE,OAAO,WAAW,KAAG,SAAS,iBAAiB,SAAQA,GAAE,SAAQ,IAAE,GAAE,OAAO,iBAAiB,UAASA,GAAE,QAAQ;AAAE,UAAME,KAAE,OAAO;AAAe,IAAAA,OAAIA,GAAE,iBAAiB,UAASF,GAAE,QAAQ,GAAEE,GAAE,iBAAiB,UAASF,GAAE,QAAQ;AAAA,EAAE;AAAA,EAAC,eAAc;AAAC,UAAMA,KAAE,MAAKC,KAAED,GAAE;AAAU,QAAG,CAACC,GAAE;AAAO,aAAS,oBAAoB,WAAUD,GAAE,WAAU,EAAC,SAAQ,OAAG,SAAQ,KAAE,CAAC,GAAEC,GAAE,oBAAoB,SAAQD,GAAE,SAAQ,EAAC,SAAQ,OAAG,SAAQ,MAAE,CAAC,GAAEC,GAAE,oBAAoB,SAAQD,GAAE,SAAQ,EAAC,SAAQ,OAAG,SAAQ,MAAE,CAAC,GAAE,SAAS,oBAAoB,aAAYA,GAAE,WAAW,GAAE,OAAO,oBAAoB,UAASA,GAAE,QAAQ;AAAE,UAAME,KAAE,OAAO;AAAe,IAAAA,OAAIA,GAAE,oBAAoB,UAASF,GAAE,QAAQ,GAAEE,GAAE,oBAAoB,UAASF,GAAE,QAAQ,IAAG,SAAS,oBAAoB,oBAAmBA,GAAE,oBAAmB,KAAE,GAAE,SAAS,oBAAoB,SAAQA,GAAE,SAAQ,IAAE;AAAA,EAAC;AAAA,EAAC,QAAO;AAAC,UAAMA,KAAE,KAAK;AAAU,QAAG,CAACA,GAAE;AAAO,UAAMC,KAAE,OAAO,gBAAeC,KAAE,KAAK,IAAI,IAAG,QAAMD,KAAE,SAAOA,GAAE,UAAQ,CAAC;AAAE,QAAIE,KAAE,IAAGC,KAAE,IAAGC,KAAE;AAAG,QAAGJ,MAAGC,KAAE,GAAE;AAAC,UAAIF,KAAE,GAAGC,GAAE,UAAU,MAAKK,KAAE,GAAGL,GAAE,SAAS;AAAK,MAAAE,KAAEF,GAAE,QAAMC,KAAE,MAAKE,KAAEH,GAAE,SAAOC,KAAE,MAAKG,KAAE,eAAeL,EAAC,KAAKM,EAAC,cAAc,IAAEJ,EAAC;AAAA,IAAG;AAAC,IAAAF,GAAE,MAAM,YAAUK,IAAEL,GAAE,MAAM,QAAMG,IAAEH,GAAE,MAAM,SAAOI;AAAA,EAAC;AAAA,EAAC,QAAQJ,IAAE;AAAC,QAAIC;AAAE,UAAK,EAAC,WAAUC,IAAE,WAAUC,GAAC,IAAE;AAAK,QAAG,CAACD,MAAG,KAAK,UAAU,EAAE;AAAO,KAACC,MAAG,KAAK,OAAO,MAAM,KAAG,KAAK,UAAU;AAAE,UAAMC,KAAEJ,GAAE,aAAa,EAAE,CAAC;AAAE,QAAGI,GAAE,QAAQ,mBAAmB,KAAGA,GAAE,QAAQ,uBAAuB,EAAE,QAAOJ,GAAE,eAAe,GAAE,KAAK,KAAK,MAAMA,EAAC;AAAE,QAAGI,GAAE,QAAQ,sBAAsB,EAAE,QAAOJ,GAAE,eAAe,GAAE,KAAK,KAAK,KAAK;AAAE,QAAGI,GAAE,QAAQ,sBAAsB,EAAE,QAAOJ,GAAE,eAAe,GAAE,KAAK,KAAK,KAAK;AAAE,QAAG,YAAUA,GAAE,QAAM,MAAIA,GAAE,OAAO;AAAO,QAAG,KAAK,IAAIA,GAAE,QAAM,EAAE,IAAE,MAAI,KAAK,IAAIA,GAAE,QAAM,EAAE,IAAE,GAAG;AAAO,UAAMK,KAAE,SAAS;AAAc,QAAG,GAAG,KAAGA,MAAGH,GAAE,SAASG,EAAC,EAAE;AAAO,QAAGF,MAAG,aAAW,UAAQF,KAAE,KAAK,SAAS,MAAI,WAASA,KAAE,SAAOA,GAAE,MAAM,QAAO,MAAK,KAAK,cAAY,aAAa,KAAK,UAAU,GAAE,KAAK,aAAW,QAAM,KAAK,aAAW,WAAY,MAAI;AAAC,WAAK,WAAW,GAAE,KAAK,aAAW;AAAA,IAAI,GAAG,GAAG;AAAG,QAAG,KAAK,KAAK,SAAQD,EAAC,GAAEA,GAAE,iBAAiB;AAAO,QAAIM,KAAE;AAAG,QAAGF,GAAE,QAAQ,oBAAoB,GAAE;AAAC,UAAGC,IAAE;AAAC,YAAGA,GAAE,QAAQ,mBAAmB,EAAE;AAAO,QAAAD,GAAE,QAAQ,EAAE,KAAGC,GAAE,KAAK;AAAA,MAAC;AAAC,UAAG,GAAG,EAAE;AAAO,MAAAC,KAAE,KAAK,OAAO,cAAc;AAAA,IAAC,MAAM,CAAAF,GAAE,QAAQ,qBAAqB,KAAG,CAACA,GAAE,QAAQ,EAAE,MAAIE,KAAE,KAAK,OAAO,eAAe;AAAG,gBAAUA,MAAGN,GAAE,eAAe,GAAE,KAAK,MAAMA,EAAC,KAAG,WAASM,MAAGN,GAAE,eAAe,GAAE,KAAK,KAAK,KAAG,WAASM,OAAIN,GAAE,eAAe,GAAE,KAAK,KAAK;AAAA,EAAE;AAAA,EAAC,QAAQA,IAAE;AAAC,UAAMC,KAAED,GAAE;AAAO,QAAIG,KAAE,KAAK,OAAO,SAAQH,EAAC;AAAE,IAAAC,GAAE,QAAQ,mBAAmB,MAAIE,KAAE;AAAS,UAAMC,KAAE,YAAUD,IAAEE,KAAE,CAAC,CAACL,GAAE,UAAQ,GAAE,CAACA,GAAE,UAAQ,GAAE,CAACA,GAAE,UAAQ,CAAC,EAAE,OAAQ,SAASA,IAAEC,IAAE;AAAC,aAAO,KAAK,IAAIA,EAAC,IAAE,KAAK,IAAID,EAAC,IAAEC,KAAED;AAAA,IAAC,CAAE,GAAEM,KAAE,KAAK,IAAI,IAAG,KAAK,IAAI,GAAED,EAAC,CAAC,GAAEE,KAAE,KAAK,IAAI;AAAE,SAAK,OAAKA,KAAE,KAAK,MAAI,MAAIH,MAAGJ,GAAE,eAAe,KAAG,KAAK,MAAIO,IAAE,KAAK,KAAK,SAAQP,IAAEM,EAAC,GAAEN,GAAE,qBAAmB,YAAUG,MAAGH,GAAE,eAAe,GAAE,KAAK,MAAMA,EAAC,KAAG,YAAUG,OAAI,EAAEF,EAAC,MAAID,GAAE,eAAe,GAAE,KAAKM,KAAE,IAAE,SAAO,MAAM,EAAE;AAAA,EAAK;AAAA,EAAC,WAAU;AAAC,WAAO,SAAS,IAAG,EAAE;AAAA,EAAC;AAAA,EAAC,UAAUN,IAAE;AAAC,QAAG,CAAC,KAAK,UAAU,EAAE;AAAO,SAAK,aAAW,CAAC,KAAK,OAAO,MAAM,KAAG,KAAK,UAAU,KAAG,KAAK,UAAU;AAAE,UAAMC,KAAED,GAAE,KAAIE,KAAE,KAAK,OAAO,UAAU;AAAE,QAAG,CAACA,GAAE;AAAO,UAAMC,KAAEH,GAAE,aAAa,EAAE,CAAC,GAAEI,KAAE,SAAS,iBAAe,SAAS,cAAc,WAAUC,KAAED,MAAGA,GAAE,SAAS,UAAU,KAAGD,GAAE,QAAQ,gBAAcA,GAAE,QAAQ;AAAc,QAAG,aAAWF,MAAG,CAACI,MAAG,EAAEF,EAAC,GAAE;AAAC,UAAGA,GAAE,qBAAmB,OAAK,CAAC,YAAW,UAAS,SAAQ,UAAS,OAAO,EAAE,QAAQA,GAAE,QAAQ,EAAE;AAAA,IAAM;AAAC,QAAG,UAAQH,GAAE,MAAI,EAAE,KAAK,WAAU,EAAE,IAAE,EAAE,KAAK,WAAU,EAAE,GAAEA,GAAE,WAASA,GAAE,UAAQA,GAAE,SAAS;AAAO,SAAK,KAAK,WAAUC,IAAED,EAAC;AAAE,UAAMM,KAAEJ,GAAED,EAAC;AAAE,IAAAK,MAAG,cAAY,OAAO,KAAKA,EAAC,MAAIN,GAAE,eAAe,GAAE,KAAKM,EAAC,EAAE;AAAA,EAAE;AAAA,EAAC,WAAU;AAAC,UAAMN,KAAE,KAAK;AAAU,QAAG,CAACA,GAAE;AAAO,UAAMC,KAAE,KAAK;AAAU,IAAAD,GAAE,UAAU,OAAO,IAAGC,EAAC,GAAE,KAAK,cAAc,KAAK,SAAS,CAAC,GAAE,KAAK,YAAU,KAAK,UAAU,IAAE,KAAK,QAAQ,GAAE,KAAK,MAAM,GAAE,KAAK,KAAK,QAAQ;AAAA,EAAC;AAAA,EAAC,QAAQD,IAAE;AAAC,SAAK,UAAU,KAAG,KAAK,WAAWA,EAAC;AAAA,EAAC;AAAA,EAAC,YAAYA,IAAE;AAAC,SAAK,qBAAmBA,IAAE,CAAC,KAAK,aAAW,KAAK,OAAO,MAAM,KAAG,KAAK,UAAU;AAAA,EAAC;AAAA,EAAC,qBAAoB;AAAC,kBAAY,SAAS,kBAAgB,KAAK,WAAW,IAAE,KAAK,QAAQ;AAAA,EAAC;AAAA,EAAC,eAAeA,IAAE;AAAC,UAAMC,KAAE,KAAK,UAAUD,IAAE,aAAa,KAAG;AAAG,QAAG,WAASC,IAAE;AAAC,YAAMD,KAAE,KAAK,QAAQ;AAAQ,UAAGA,MAAGA,GAAE,UAAQ,GAAG,MAAM;AAAA,IAAM;AAAC,QAAG,CAACC,GAAE;AAAO,QAAG,CAACD,GAAE,aAAWA,GAAE,WAAW;AAAO,UAAME,KAAE,KAAK,OAAO,iBAAiB;AAAE,QAAGA,IAAE;AAAC,YAAMD,KAAE,EAAE,KAAK,SAASC,EAAC,CAAC;AAAE,MAAAF,GAAE,aAAWA,GAAE,UAAU,YAAYC,EAAC,GAAED,GAAE,MAAI,EAAEA,GAAE,IAAG,eAAe;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,cAAcA,KAAE,QAAO;AAAC,QAAIC,IAAEC;AAAE,UAAMC,KAAE,qBAAoBC,KAAE,KAAK;AAAU,QAAG,CAACA,GAAE;AAAO,MAAEA,IAAE,EAAE;AAAE,UAAMC,KAAE,KAAK,aAAW,KAAK,OAAO,eAAe,GAAEC,KAAE,CAACD;AAAE,QAAG,KAAK,WAAS,KAAK,KAAK,KAAK,OAAO,GAAEC,MAAG,KAAK,YAAU,KAAK,QAAQ,OAAO,GAAE,KAAK,UAAQ,OAAMD,MAAG,CAAC,KAAK,QAAQ,YAAUL,OAAK,UAAQC,KAAE,KAAK,aAAW,WAASA,KAAE,SAAOA,GAAE,WAAS,CAAC,EAAE,CAAAD,GAAE,cAAYA,GAAE,UAAU,OAAO,GAAEA,GAAE,YAAU,QAAO,EAAEA,GAAE,IAAG,EAAE,GAAE,UAAQE,KAAEF,GAAE,OAAK,WAASE,MAAGA,GAAE,gBAAgB,iBAAiB;AAAG,QAAGF,OAAIA,KAAE,KAAK,SAAS,IAAG,CAACA,MAAGK,MAAG,CAAC,KAAK,eAAeL,EAAC,EAAE;AAAO,UAAMO,KAAEP,GAAE;AAAG,QAAIQ,KAAE,KAAK,UAAUR,IAAE,WAAU,EAAE;AAAE,QAAG,CAACQ,GAAE,QAAO,MAAKH,MAAG,KAAK,WAAS,KAAK,QAAQ,KAAK,SAAQ,aAAa,MAAI;AAAC,WAAK,YAAU,KAAK,QAAQ,YAAU;AAAA,IAAG,CAAE;AAAG,QAAII,KAAE;AAAK,QAAGH,IAAE;AAAC,UAAGG,KAAET,GAAE,aAAW,MAAKO,MAAG,CAACE,IAAE;AAAC,cAAMR,KAAEE,KAAE,IAAI,KAAK,EAAE,IAAIH,GAAE,KAAK;AAAG,QAAAS,KAAE,SAAS,cAAc,KAAK,GAAE,EAAEA,IAAEN,EAAC,GAAEM,GAAE,aAAa,MAAKR,EAAC,GAAED,GAAE,YAAUO,GAAE,YAAYE,EAAC,GAAE,EAAEF,IAAE,EAAE,GAAEA,GAAE,aAAa,mBAAkBN,EAAC;AAAA,MAAC;AAAA,IAAC,OAAK;AAAC,UAAGQ,KAAE,KAAK,SAAQA,OAAIA,KAAEL,GAAE,cAAc,MAAID,EAAC,IAAG,CAACM,IAAE;AAAC,QAAAA,KAAE,SAAS,cAAc,KAAK,GAAEA,GAAE,QAAQ,kBAAgB,IAAG,EAAEA,IAAEN,EAAC;AAAE,SAAC,KAAK,UAAQC,IAAG,QAAQK,EAAC;AAAA,MAAC;AAAC,QAAEL,IAAE,EAAE,GAAE,KAAK,UAAQK;AAAA,IAAC;AAAC,IAAAA,OAAIA,GAAE,YAAU,IAAG,GAAGD,EAAC,KAAG,YAAU,OAAOA,KAAEC,GAAE,YAAUD,KAAE,KAAGA,cAAa,eAAaC,GAAE,YAAYD,EAAC;AAAA,EAAE;AAAA,EAAC,WAAWR,IAAE;AAAC,SAAK,MAAMA,EAAC;AAAA,EAAC;AAAA,EAAC,MAAMA,IAAE;AAAC,QAAIC;AAAE,QAAG,KAAK,kBAAkB;AAAO,UAAMC,KAAE,SAAS,iBAAe,MAAKC,MAAG,QAAMH,KAAE,SAAOA,GAAE,WAAS,MAAKI,KAAE,KAAK,WAAUC,KAAE,UAAQJ,KAAE,KAAK,aAAW,WAASA,KAAE,SAAOA,GAAE;AAAS,QAAG,CAACG,MAAG,CAACC,GAAE;AAAO,QAAG,CAACL,MAAGE,MAAGE,GAAE,SAASF,EAAC,EAAE;AAAO,UAAMI,KAAE,KAAK,SAAS,GAAEC,KAAED,MAAGA,GAAE,UAAQ,GAAG,QAAMA,GAAE,KAAG;AAAK,QAAG,CAACC,MAAGA,GAAE,SAASL,EAAC,KAAGE,OAAIF,GAAE;AAAO,IAAAF,MAAGA,GAAE,cAAYA,GAAE,eAAe,GAAE,KAAK,oBAAkB;AAAG,UAAMQ,KAAE,MAAM,KAAKJ,GAAE,iBAAiB,EAAE,CAAC;AAAE,QAAIK,KAAE,CAAC,GAAEC,KAAE;AAAK,aAAQV,MAAKQ,IAAE;AAAC,YAAMP,KAAE,CAACD,GAAE,gBAAc,CAAC,CAACA,GAAE,QAAQ,sBAAsB,GAAEE,KAAEK,MAAGA,GAAE,SAASP,EAAC,GAAEG,KAAE,CAACE,GAAE,SAASL,EAAC;AAAE,UAAGA,OAAII,OAAIF,MAAGC,OAAI,CAACF,IAAE;AAAC,QAAAQ,GAAE,KAAKT,EAAC;AAAE,cAAMC,KAAED,GAAE,QAAQ;AAAa,mBAASC,MAAGA,OAAID,GAAE,WAAS,WAAWC,EAAC,IAAGD,GAAE,gBAAgB,oBAAoB,GAAE,CAACA,GAAE,aAAa,WAAW,KAAGU,OAAIA,KAAEV;AAAA,MAAE,OAAK;AAAC,cAAMC,KAAE,WAASD,GAAE,QAAQ,eAAaA,GAAE,aAAa,UAAU,KAAG,KAAGA,GAAE,QAAQ;AAAa,QAAAC,OAAID,GAAE,QAAQ,eAAaC,KAAGD,GAAE,WAAS;AAAA,MAAE;AAAA,IAAC;AAAC,QAAIW,KAAE;AAAK,IAAAX,MAAG,CAACG,MAAGM,GAAE,QAAQN,EAAC,IAAE,OAAKQ,KAAED,MAAGN,IAAEK,GAAE,WAASP,OAAI,KAAGS,KAAEF,GAAE,CAAC,IAAE,KAAK,cAAYL,MAAGF,OAAI,OAAKS,KAAEF,GAAEA,GAAE,SAAO,CAAC,OAAKE,KAAEL,MAAG,YAAUA,GAAE,OAAKF,KAAEM,MAAGN,IAAEO,MAAG,GAAGA,EAAC,GAAE,KAAK,YAAU,SAAS,eAAc,KAAK,oBAAkB;AAAA,EAAE;AAAA,EAAC,OAAM;AAAC,UAAMX,KAAE,KAAK;AAAS,IAAAA,MAAGA,GAAE,MAAM,SAAO,KAAGA,GAAE,UAAU;AAAA,EAAC;AAAA,EAAC,OAAM;AAAC,UAAMA,KAAE,KAAK;AAAS,IAAAA,MAAGA,GAAE,MAAM,SAAO,KAAGA,GAAE,UAAU;AAAA,EAAC;AAAA,EAAC,UAAUA,IAAE;AAAC,SAAK,YAAU,KAAK,SAAS,QAAQ,GAAGA,EAAC;AAAA,EAAC;AAAA,EAAC,YAAW;AAAC,QAAIA;AAAE,YAAO,UAAQA,KAAE,IAAG,YAAY,MAAI,WAASA,KAAE,SAAOA,GAAE,OAAK,KAAK;AAAA,EAAE;AAAA,EAAC,QAAQA,KAAE,MAAKC,KAAE,IAAGC,IAAE;AAAC,QAAG,CAACF,MAAG,CAACC,GAAE,QAAO,MAAKC,MAAGA,GAAE;AAAG,SAAK,KAAKF,EAAC;AAAE,UAAMG,KAAE,CAAAC,OAAG;AAAC,MAAAA,GAAE,WAASJ,MAAGA,GAAE,QAAQ,kBAAgBA,GAAE,oBAAoB,gBAAeG,EAAC,GAAE,OAAOH,GAAE,QAAQ,eAAcE,MAAGA,GAAE,GAAE,EAAEF,IAAEC,EAAC;AAAA,IAAE;AAAE,IAAAD,GAAE,QAAQ,gBAAcC,IAAED,GAAE,iBAAiB,gBAAeG,EAAC,GAAE,EAAEH,IAAEC,EAAC;AAAA,EAAC;AAAA,EAAC,KAAKD,IAAE;AAAC,IAAAA,MAAGA,GAAE,cAAc,IAAI,YAAY,gBAAe,EAAC,SAAQ,OAAG,YAAW,MAAG,eAAcA,GAAC,CAAC,CAAC;AAAA,EAAC;AAAA,EAAC,WAAWA,IAAEC,KAAE,IAAGC,KAAE,MAAG;AAAC,QAAG,KAAK,UAAU,EAAE;AAAO,UAAME,KAAEJ,GAAE;AAAG,QAAG,CAACI,GAAE;AAAO,QAAIC,KAAE;AAAK,QAAG,EAAEJ,EAAC,IAAEI,KAAEJ,MAAGI,KAAE,EAAEJ,KAAE,EAAE,GAAE,EAAEI,EAAC,MAAIA,KAAE,SAAS,cAAc,KAAK,GAAEA,GAAE,YAAUJ,KAAE,MAAK,CAAC,OAAM,WAAU,UAAS,SAAQ,OAAO,EAAE,SAASI,GAAE,SAAS,YAAY,CAAC,GAAE;AAAC,YAAML,KAAE,SAAS,cAAc,KAAK;AAAE,MAAAA,GAAE,YAAYK,EAAC,GAAEA,KAAEL;AAAA,IAAC;AAAC,MAAEK,EAAC,KAAGL,GAAE,UAAQ,CAACA,GAAE,UAAQK,KAAEA,GAAE,cAAcL,GAAE,MAAM,IAAGK,MAAG,EAAEA,EAAC,KAAG,EAAEA,IAAE,mBAAmB,GAAEL,GAAE,MAAIK,GAAE,aAAa,MAAKL,GAAE,EAAE,GAAEI,GAAE,UAAU,IAAI,OAAOJ,GAAE,QAAM,UAAQA,GAAE,QAAM,SAAS,EAAE,GAAEI,GAAE,QAAQC,EAAC,GAAE,WAASA,GAAE,MAAM,YAAUA,GAAE,MAAM,UAAQ,KAAI,WAAS,iBAAiBA,EAAC,EAAE,iBAAiB,SAAS,MAAIA,GAAE,MAAM,UAAQL,GAAE,WAAS,KAAK,OAAO,gBAAgB,KAAG,SAAQA,GAAE,YAAUK,IAAEH,MAAG,KAAK,cAAcF,EAAC,GAAE,KAAK,eAAeA,EAAC,GAAE,KAAK,cAAcA,EAAC,KAAG,KAAK,SAASA,IAAE,uBAAuB;AAAA,EAAC;AAAA,EAAC,cAAcA,IAAEC,IAAE;AAAC,UAAMC,KAAEF,GAAE,IAAGG,KAAEH,GAAE;AAAU,IAAAE,MAAGC,OAAI,KAAK,KAAK,UAASH,EAAC,GAAE,KAAK,YAAYA,EAAC,GAAEA,GAAE,QAAM,GAAG,UAASC,KAAE,KAAK,eAAeD,EAAC,IAAE,WAASC,KAAE,KAAK,UAAUD,IAAE,WAAW,IAAEC,KAAE,cAAY,KAAK,QAAQE,IAAEF,IAAG,MAAI;AAAC,WAAK,KAAKD,EAAC;AAAA,IAAC,CAAE,IAAE,KAAK,KAAKA,EAAC;AAAA,EAAE;AAAA,EAAC,KAAKA,IAAE;AAAC,SAAK,UAAU,MAAIA,GAAE,QAAM,GAAG,OAAM,KAAK,KAAK,QAAOA,EAAC,GAAE,EAAEA,GAAE,IAAG,SAAS,GAAE,KAAK,eAAeA,EAAC,KAAG,KAAK,OAAO,WAAW,KAAG,eAAgB,MAAI;AAAC,UAAIC;AAAE,gBAAQA,KAAED,GAAE,YAAU,WAASC,MAAGA,GAAE,eAAe,GAAE,KAAK,OAAO,WAAW,KAAG,KAAK,MAAM;AAAA,IAAC,CAAE,GAAE,KAAK,eAAeD,EAAC,MAAI,EAAE,KAAK,WAAU,EAAE,GAAE,CAAC,KAAK,aAAW,KAAK,OAAO,MAAM,KAAG,KAAK,QAAQ;AAAA,EAAG;AAAA,EAAC,eAAeA,IAAE;AAAC,UAAMC,KAAE,KAAK,SAAS;AAAE,WAAM,EAAE,CAACD,MAAG,CAACC,OAAIA,GAAE,UAAQD,GAAE;AAAA,EAAK;AAAA,EAAC,eAAeA,IAAE;AAAC,QAAIC,IAAEC;AAAE,WAAO,UAAQ,UAAQD,KAAE,KAAK,aAAW,WAASA,KAAE,SAAOA,GAAE,aAAWD,MAAGA,GAAE,WAAS,UAAQE,KAAE,KAAK,SAAS,MAAI,WAASA,KAAE,SAAOA,GAAE;AAAA,EAAM;AAAA,EAAC,YAAYF,IAAE;AAAC,IAAAA,GAAE,QAAM,GAAG;AAAQ,UAAMC,KAAED,GAAE;AAAG,QAAG,CAACC,GAAE;AAAO,MAAEA,IAAE,EAAE,GAAE,KAAK,KAAK,WAAUD,EAAC,GAAEA,GAAE,aAAW,WAAY,MAAI;AAAC,UAAG,CAAC,KAAK,UAAU,KAAG,CAACA,GAAE,aAAWA,GAAE,UAAQ,GAAG,SAAQ;AAAC,YAAIE,KAAE,EAAE,CAAC;AAAE,UAAEA,IAAE,kBAAkB,GAAEF,GAAE,YAAUE,IAAED,GAAE,QAAQC,EAAC,GAAE,KAAK,QAAQA,IAAE,UAAU;AAAA,MAAC;AAAA,IAAC,GAAG,GAAG;AAAA,EAAC;AAAA,EAAC,YAAYF,IAAE;AAAC,UAAMC,KAAED,GAAE;AAAG,QAAG,CAACC,GAAE;AAAO,UAAMC,KAAEF,GAAE;AAAU,SAAK,UAAU,IAAE,QAAME,MAAGA,GAAE,OAAO,KAAG,EAAED,IAAE,EAAE,GAAEC,MAAG,KAAK,QAAQA,IAAE,aAAa,MAAI;AAAC,MAAAA,GAAE,OAAO;AAAA,IAAC,CAAE,GAAEF,GAAE,UAAQ,GAAG,YAAU,KAAK,KAAK,UAASA,EAAC,GAAEA,GAAE,QAAM,GAAG;AAAA,EAAO;AAAA,EAAC,SAASA,IAAEC,IAAE;AAAC,QAAG,KAAK,UAAU,EAAE;AAAO,UAAMC,KAAE,IAAI,MAAM,SAAQ,EAAC,SAAQ,MAAG,YAAW,KAAE,CAAC;AAAE,QAAG,KAAK,KAAK,SAAQA,IAAEF,EAAC,GAAEE,GAAE,iBAAiB;AAAO,IAAAF,GAAE,QAAMC,IAAE,KAAK,YAAYD,EAAC,GAAE,KAAK,aAAaA,EAAC;AAAE,UAAMG,KAAE,SAAS,cAAc,KAAK;AAAE,IAAAA,GAAE,UAAU,IAAI,gBAAgB,GAAEA,GAAE,YAAU,KAAK,SAASF,MAAG,kBAAkB,GAAE,KAAK,WAAWD,IAAEG,EAAC;AAAA,EAAC;AAAA,EAAC,aAAaH,IAAE;AAAC,QAAG,WAASA,GAAE,MAAM;AAAO,SAAK,KAAK,gBAAeA,EAAC,GAAEA,GAAE,cAAYA,GAAE,UAAU,OAAO,GAAEA,GAAE,YAAU;AAAQ,UAAMC,KAAED,GAAE;AAAG,IAAAC,OAAI,EAAEA,IAAE,WAAW,GAAE,EAAEA,IAAE,aAAa,GAAE,EAAEA,IAAE,OAAOD,GAAE,QAAM,SAAS,EAAE,IAAGA,GAAE,cAAYA,GAAE,WAAW,OAAO,GAAEA,GAAE,aAAW,QAAOA,GAAE,aAAWA,GAAE,UAAU,OAAO,GAAEA,GAAE,YAAU,QAAOA,GAAE,aAAWA,GAAE,UAAU,OAAO,GAAEA,GAAE,YAAU;AAAA,EAAM;AAAA,EAAC,WAAU;AAAC,QAAIA;AAAE,UAAMC,KAAE,KAAK;AAAS,YAAO,UAAQD,KAAE,QAAMC,KAAE,SAAOA,GAAE,MAAM,QAAMA,KAAE,SAAOA,GAAE,IAAI,MAAI,WAASD,KAAE,SAAOA,GAAE,OAAO,CAAC,MAAI;AAAA,EAAM;AAAA,EAAC,MAAMA,IAAEC,IAAE;AAAC,QAAG,KAAK,UAAU,EAAE;AAAO,UAAMC,KAAE,IAAI,MAAM,eAAc,EAAC,SAAQ,MAAG,YAAW,KAAE,CAAC;AAAE,QAAG,KAAK,KAAK,eAAcA,IAAEF,EAAC,GAAEE,GAAE,iBAAiB;AAAO,IAAAF,MAAGA,GAAE,eAAaA,GAAE,eAAe,GAAEA,GAAE,gBAAgB;AAAG,UAAMG,KAAE,MAAI;AAAC,WAAK,aAAaH,IAAEC,EAAC;AAAA,IAAC;AAAE,SAAK,aAAW,MAAI,GAAG,aAAa,IAAE,QAAQ,QAAQ,GAAG,KAAK,CAAC,EAAE,KAAM,MAAIE,GAAE,CAAE,IAAEA,GAAE;AAAA,EAAC;AAAA,EAAC,YAAW;AAAC,SAAK,aAAW,aAAa,KAAK,SAAS,GAAE,KAAK,YAAU;AAAA,EAAI;AAAA,EAAC,QAAQH,KAAE,OAAG;AAAC,UAAMC,KAAE,MAAI;AAAC,WAAK,UAAU,GAAE,KAAK,OAAK,MAAG,EAAE,KAAK,WAAU,SAAS,GAAE,KAAK,KAAK,SAAS;AAAA,IAAC;AAAE,QAAG,KAAK,UAAU,GAAE,CAAC,KAAK,UAAU,EAAE,KAAGD,GAAE,CAAAC,GAAE;AAAA,SAAM;AAAC,YAAMD,KAAE,KAAK,OAAO,MAAM;AAAE,MAAAA,OAAI,KAAK,YAAU,WAAWC,IAAED,EAAC;AAAA,IAAE;AAAA,EAAC;AAAA,EAAC,UAAS;AAAC,SAAK,UAAU,GAAE,KAAK,QAAM,CAAC,KAAK,UAAU,MAAI,KAAK,OAAK,OAAG,EAAE,KAAK,WAAU,SAAS,GAAE,KAAK,KAAK,SAAS;AAAA,EAAE;AAAA,EAAC,YAAW;AAAC,SAAK,QAAQ,GAAE,KAAK,QAAQ;AAAA,EAAC;AAAA,EAAC,aAAY;AAAC,SAAK,OAAK,KAAK,QAAQ,IAAE,KAAK,QAAQ,IAAE;AAAA,EAAC;AAAA,EAAC,mBAAkB;AAAC,WAAK,GAAG,aAAa,IAAE,GAAG,KAAK,IAAE,GAAG,QAAQ,EAAE,KAAM,MAAI;AAAC,WAAK,YAAU;AAAA,IAAE,CAAE;AAAA,EAAE;AAAA,EAAC,YAAW;AAAC,WAAM,CAAC,GAAG,SAAQ,GAAG,eAAc,GAAG,OAAO,EAAE,SAAS,KAAK,KAAK;AAAA,EAAC;AAAA,EAAC,aAAaA,IAAEC,IAAE;AAAC,QAAIC,IAAEC;AAAE,SAAK,QAAM,GAAG,SAAQ,KAAK,UAAU,GAAE,KAAK,aAAa;AAAE,UAAMC,KAAE,KAAK,WAAUC,KAAE,KAAK,UAASC,KAAE,KAAK,SAAS,GAAEC,KAAED,MAAG,KAAK,OAAO,gBAAgB,IAAEA,GAAE,aAAW,KAAK,OAAO,WAAW,IAAE;AAAK,QAAGC,OAAI,GAAGA,EAAC,IAAE,GAAGA,EAAC,IAAEA,GAAE,MAAM,IAAGH,OAAI,EAAEA,IAAE,EAAE,GAAE,EAAEA,IAAE,YAAY,GAAEA,GAAE,aAAa,IAAG,MAAM,GAAE,KAAK,OAAO,UAAU,KAAG,EAAEA,IAAE,EAAE,GAAEA,GAAE,MAAM,gBAAc,SAAQC,IAAE;AAAC,MAAAA,GAAE,iBAAiB,GAAE,UAAQH,KAAEG,GAAE,YAAU,WAASH,MAAGA,GAAE,QAAQ,GAAE,UAAQC,KAAEE,GAAE,QAAQ,eAAa,WAASF,MAAGA,GAAE,OAAO;AAAE,iBAAUH,MAAKK,GAAE,QAAO;AAAC,QAAAL,GAAE,QAAM,GAAG,SAAQ,KAAK,YAAYA,EAAC;AAAE,cAAMC,KAAED,GAAE;AAAU,QAAAC,MAAG,KAAK,KAAKA,EAAC;AAAE,cAAMC,KAAE,QAAMF,KAAE,SAAOA,GAAE;AAAQ,QAAAE,OAAIA,GAAE,KAAK,GAAEA,GAAE,aAAa,GAAEA,GAAE,eAAe,IAAG,KAAK,eAAeF,EAAC,KAAGK,GAAE,KAAK,eAAcL,EAAC;AAAA,MAAC;AAAA,IAAC;AAAC,SAAG,OAAO,SAAQ,KAAG,OAAO,SAAQ,OAAO,iBAAiB,UAAS,KAAK,QAAQ,GAAE,KAAK,KAAK,SAAQA,EAAC,GAAE,KAAK,UAAQ,GAAG,iBAAe,WAASC,MAAGK,OAAIL,KAAE,KAAK,UAAUK,IAAE,WAAW,IAAGL,MAAGK,MAAG,KAAK,QAAQA,GAAE,WAAUL,IAAG,MAAI;AAAC,MAAAI,MAAGA,GAAE,KAAK,eAAcC,EAAC;AAAA,IAAC,CAAE,GAAE,WAAY,MAAI;AAAC,WAAK,QAAQ;AAAA,IAAC,GAAG,GAAG,KAAG,KAAK,QAAQ,KAAG,WAAY,MAAI;AAAC,WAAK,QAAQ;AAAA,IAAC,GAAG,GAAG;AAAA,EAAC;AAAA,EAAC,UAAS;AAAC,QAAIN;AAAE,QAAG,KAAK,UAAQ,GAAG,QAAQ;AAAO,WAAO,oBAAoB,UAAS,KAAK,QAAQ,GAAE,KAAK,QAAM,GAAG,SAAQ,UAAQA,KAAE,KAAK,aAAW,WAASA,MAAGA,GAAE,QAAQ;AAAE,UAAMC,KAAE,KAAK;AAAU,IAAAA,MAAGA,GAAE,OAAO,GAAE,GAAG,OAAO,KAAK,EAAE;AAAE,UAAMC,KAAE,IAAG,YAAY;AAAE,IAAAA,KAAEA,GAAE,MAAM,KAAG,OAAK,GAAG,OAAO,GAAE,KAAG,OAAM,OAAK,GAAG,OAAO,GAAE,KAAG,OAAM,EAAE,SAAS,iBAAgB,EAAE,IAAG,MAAI;AAAC,UAAG,CAAC,GAAG;AAAO,YAAMF,KAAE,UAASC,KAAED,GAAE;AAAK,MAAAC,GAAE,UAAU,OAAO,EAAE,GAAEA,GAAE,MAAM,YAAY,IAAG,EAAE,GAAED,GAAE,gBAAgB,MAAM,YAAY,IAAG,EAAE;AAAA,IAAC,GAAG,GAAE,KAAK,KAAK,SAAS;AAAA,EAAE;AAAA,EAAC,OAAO,KAAKA,IAAEC,IAAEC,IAAE;AAAC,QAAG,CAAC,GAAG;AAAO,QAAIC,IAAEC,KAAE,IAAGC,KAAE,CAAC;AAAE,QAAG,WAASL,KAAEG,KAAE,SAAS,OAAK,GAAGH,EAAC,KAAGG,KAAE,SAAS,MAAKC,KAAEJ,IAAE,YAAU,OAAOC,OAAII,KAAEJ,MAAG,CAAC,OAAKE,KAAEH,IAAE,GAAGC,EAAC,MAAIG,KAAEH,KAAG,YAAU,OAAOC,OAAIG,KAAEH,MAAG,CAAC,KAAI,CAACC,MAAG,CAAC,EAAEA,EAAC,EAAE;AAAO,IAAAC,KAAEA,MAAG;AAAkB,UAAME,KAAE,IAAG,QAAQ,IAAIH,EAAC,KAAG,oBAAI;AAAI,IAAAG,GAAE,IAAIF,IAAEC,EAAC,GAAE,IAAG,QAAQ,IAAIF,IAAEG,EAAC,GAAE,MAAIA,GAAE,QAAMH,GAAE,iBAAiB,SAAQ,IAAG,SAAS;AAAA,EAAC;AAAA,EAAC,OAAO,OAAOH,IAAEC,IAAE;AAAC,QAAIC,IAAEC,KAAE;AAAG,QAAG,GAAGH,EAAC,KAAGE,KAAE,SAAS,MAAKC,KAAEH,OAAIE,KAAEF,IAAE,GAAGC,EAAC,MAAIE,KAAEF,MAAI,CAACC,GAAE;AAAO,UAAME,KAAE,IAAG,QAAQ,IAAIF,EAAC;AAAE,IAAAE,MAAGD,MAAGC,GAAE,OAAOD,EAAC,GAAEA,MAAGC,OAAI,IAAG,QAAQ,OAAOF,EAAC,GAAEA,GAAE,oBAAoB,SAAQ,IAAG,SAAS;AAAA,EAAE;AAAA,EAAC,OAAO,UAAS;AAAC,QAAIF;AAAE,WAAKA,KAAE,IAAG,YAAY,IAAG,CAAAA,GAAE,QAAQ;AAAE,eAAUA,MAAK,IAAG,QAAQ,KAAK,EAAE,CAAAA,GAAE,oBAAoB,SAAQ,IAAG,SAAS;AAAE,QAAG,UAAQ,oBAAI;AAAA,EAAG;AAAA,EAAC,OAAO,UAAUA,IAAE;AAAC,QAAGA,GAAE,iBAAiB;AAAO,QAAGA,GAAE,UAAQ,MAAIA,GAAE,OAAO;AAAO,QAAGA,GAAE,WAASA,GAAE,WAASA,GAAE,SAAS;AAAO,QAAIC,KAAED,GAAE,aAAa,EAAE,CAAC;AAAE,UAAME,KAAED,GAAE,QAAQ,yBAAyB;AAAE,QAAGC,IAAE;AAAC,YAAMF,KAAEE,GAAE,QAAQ,mBAAiB,IAAGC,KAAE,SAAS,iBAAiB,mBAAmBH,EAAC,IAAI,GAAEI,KAAE,SAASF,GAAE,QAAQ,iBAAe,IAAG,EAAE,KAAG;AAAE,MAAAD,KAAEE,GAAEC,EAAC,KAAGH;AAAA,IAAC;AAAC,QAAG,EAAEA,MAAGA,cAAa,SAAS;AAAO,QAAIE,IAAEC,IAAEC,IAAEC;AAAE,QAAG,CAAC,GAAG,IAAG,OAAO,EAAE,QAAQ,EAAE,KAAM,CAAC,CAACN,IAAEE,EAAC,MAAI,EAAE,CAACF,GAAE,SAASC,EAAC,KAAG,CAAC,CAAC,GAAGC,EAAC,EAAE,QAAQ,EAAE,KAAM,CAAC,CAACA,IAAEK,EAAC,MAAI;AAAC,UAAIC,KAAEP,GAAE,QAAQC,EAAC;AAAE,aAAM,CAAC,CAACM,OAAIL,KAAEH,IAAEI,KAAEF,IAAEG,KAAEG,IAAEF,KAAEC,IAAE;AAAA,IAAG,CAAE,EAAG,GAAE,CAACJ,MAAG,CAACC,MAAG,CAACC,GAAE;AAAO,IAAAC,KAAEA,MAAG,CAAC,GAAEN,GAAE,eAAe,GAAEC,KAAEI;AAAE,QAAIE,KAAE,CAAC,GAAEC,KAAE,EAAE,CAAC,GAAE,IAAGF,EAAC;AAAE,IAAAE,GAAE,QAAMR,IAAEQ,GAAE,YAAUP,IAAEO,GAAE,WAASN;AAAE,UAAMO,KAAED,GAAE,UAASE,KAAEF,GAAE,WAAUG,KAAED,MAAGT,KAAEA,GAAE,aAAa,GAAGS,EAAC,EAAE,IAAE;AAAG,SAAI,CAACT,MAAGU,MAAGF,QAAKF,KAAE,CAAC,EAAE,MAAM,KAAKJ,GAAE,iBAAiBC,EAAC,CAAC,IAAGH,MAAG,CAACQ,OAAIF,KAAEI,KAAEJ,GAAE,OAAQ,CAAAP,OAAGA,GAAE,aAAa,GAAGU,EAAC,EAAE,MAAIC,EAAE,IAAE,CAACV,EAAC,IAAG,CAACM,GAAE,OAAO;AAAO,UAAMM,KAAE,IAAG,YAAY;AAAE,WAAOA,MAAGA,GAAE,QAAQ,aAAWN,GAAE,QAAQM,GAAE,QAAQ,SAAS,IAAE,KAAG,UAAQZ,OAAIO,GAAE,aAAWD,GAAE,QAAQN,EAAC,IAAG,IAAG,UAAUM,IAAEC,EAAC;AAAA,EAAE;AAAA,EAAC,OAAO,aAAaR,IAAEC,IAAEC,IAAE;AAAC,QAAIC,KAAE,MAAKC,KAAE,IAAGC,KAAE,CAAC;AAAE,QAAG,GAAGL,EAAC,KAAGG,KAAE,SAAS,MAAKC,KAAEJ,IAAE,YAAU,OAAOC,OAAII,KAAEJ,MAAG,CAAC,MAAID,cAAa,eAAa,GAAGC,EAAC,MAAIE,KAAEH,IAAEI,KAAEH,IAAE,YAAU,OAAOC,OAAIG,KAAEH,MAAG,CAAC,KAAI,CAACC,MAAG,CAACC,GAAE,QAAM;AAAG,UAAME,KAAE,IAAG,QAAQ,IAAIH,EAAC;AAAE,WAAM,CAAC,CAACG,OAAID,KAAE,EAAE,CAAC,GAAEC,GAAE,IAAIF,EAAC,KAAG,CAAC,GAAEC,EAAC,GAAE,CAAC,CAACA,MAAG,IAAG,UAAU,MAAM,KAAKF,GAAE,iBAAiBC,EAAC,CAAC,GAAEC,EAAC;AAAA,EAAE;AAAA,EAAC,OAAO,UAAUL,IAAEC,IAAE;AAAC,IAAAA,KAAE,EAAE,CAAC,GAAE,IAAGA,MAAG,CAAC,CAAC;AAAE,UAAMC,KAAE,CAAC;AAAE,eAAUC,MAAKH,IAAE;AAAC,YAAMA,KAAEG,GAAE,WAAS,CAAC,GAAEC,KAAEJ,GAAE,EAAE,KAAGG,GAAE,aAAa,EAAE,KAAGA,GAAE,aAAa,YAAY,KAAGA,GAAE,aAAa,EAAE,KAAG;AAAO,UAAIE;AAAE,YAAMC,KAAEL,GAAE;AAAS,UAAIM;AAAE,MAAAD,MAAGJ,GAAE,WAASD,GAAE,eAAaI,KAAEC,cAAa,mBAAiBA,KAAEA,GAAE,cAAc,wBAAwB,IAAGD,OAAIA,KAAEF,cAAa,mBAAiBA,KAAEA,GAAE,cAAc,wBAAwB,IAAGE,OAAIE,KAAEF,GAAE,cAAYA,GAAE,EAAE,KAAG,QAAO,CAACE,MAAGF,GAAE,YAAUE,KAAEF,GAAE,QAAQ,WAASA,GAAE,QAAQ,EAAE,KAAG;AAAS,YAAMG,KAAE,EAAC,KAAIJ,IAAE,WAAUD,IAAE,SAAQE,IAAE,YAAWE,IAAE,UAASA,GAAC;AAAE,iBAAUN,MAAKD,IAAE;AAAC,YAAIE,KAAEF,GAAEC,EAAC,IAAE;AAAG,QAAAC,KAAE,YAAUA,OAAI,WAASA,MAAGA,KAAGM,GAAEP,EAAC,IAAEC;AAAA,MAAC;AAAC,MAAAA,GAAE,KAAKM,EAAC;AAAA,IAAC;AAAC,WAAO,IAAI,IAAGN,IAAED,EAAC;AAAA,EAAC;AAAA,EAAC,OAAO,YAAYD,IAAE;AAAC,QAAGA,GAAE,QAAO,GAAG,IAAIA,EAAC;AAAE,WAAO,MAAM,KAAK,GAAG,OAAO,CAAC,EAAE,QAAQ,EAAE,KAAM,CAAAA,OAAG,CAACA,GAAE,UAAU,KAAGA,EAAE,KAAG;AAAA,EAAI;AAAA,EAAC,OAAO,WAAU;AAAC,QAAIA;AAAE,YAAO,UAAQA,KAAE,IAAG,YAAY,MAAI,WAASA,KAAE,SAAOA,GAAE,SAAS,MAAI;AAAA,EAAI;AAAA,EAAC,OAAO,KAAKA,KAAE,CAAC,GAAEC,KAAE,CAAC,GAAE;AAAC,WAAO,IAAI,IAAGD,IAAEC,EAAC;AAAA,EAAC;AAAA,EAAC,OAAO,OAAM;AAAC,UAAMD,KAAE,IAAG,YAAY;AAAE,IAAAA,MAAGA,GAAE,KAAK;AAAA,EAAC;AAAA,EAAC,OAAO,OAAM;AAAC,UAAMA,KAAE,IAAG,YAAY;AAAE,IAAAA,MAAGA,GAAE,KAAK;AAAA,EAAC;AAAA,EAAC,OAAO,MAAMA,KAAE,SAAMC,IAAE;AAAC,QAAGD,GAAE,YAAUA,MAAK,GAAG,OAAO,EAAE,CAAAA,GAAE,MAAM,GAAGC,EAAC;AAAA,SAAM;AAAC,YAAMD,KAAE,IAAG,YAAY;AAAE,MAAAA,MAAGA,GAAE,MAAM,GAAGC,EAAC;AAAA,IAAC;AAAA,EAAC;AAAC;AAAC,OAAO,eAAe,IAAG,WAAU,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,SAAQ,CAAC,GAAE,OAAO,eAAe,IAAG,YAAW,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,GAAE,CAAC,GAAE,OAAO,eAAe,IAAG,WAAU,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,GAAE,CAAC,GAAE,OAAO,eAAe,IAAG,WAAU,EAAC,YAAW,MAAG,cAAa,MAAG,UAAS,MAAG,OAAM,oBAAI,MAAG,CAAC;",
+ "names": ["t", "e", "i", "n", "s", "o", "a", "r", "l", "c", "h", "d", "u", "p", "f", "g", "m", "v", "b", "y", "w", "x", "E", "S", "P", "C", "T", "M", "O", "A"]
+}
diff --git a/.vite/deps/_metadata.json b/.vite/deps/_metadata.json
new file mode 100644
index 0000000..62bfd57
--- /dev/null
+++ b/.vite/deps/_metadata.json
@@ -0,0 +1,61 @@
+{
+ "hash": "ce7a0443",
+ "configHash": "8bcd3e19",
+ "lockfileHash": "1d8bf9b4",
+ "browserHash": "b15efe69",
+ "optimized": {
+ "@fancyapps/ui": {
+ "src": "../../node_modules/@fancyapps/ui/dist/index.esm.js",
+ "file": "@fancyapps_ui.js",
+ "fileHash": "0e91493d",
+ "needsInterop": false
+ },
+ "preact": {
+ "src": "../../node_modules/preact/dist/preact.module.js",
+ "file": "preact.js",
+ "fileHash": "b331e8bf",
+ "needsInterop": false
+ },
+ "preact-iso": {
+ "src": "../../node_modules/preact-iso/src/index.js",
+ "file": "preact-iso.js",
+ "fileHash": "da0bf0a6",
+ "needsInterop": false
+ },
+ "react": {
+ "src": "../../node_modules/react/index.js",
+ "file": "react.js",
+ "fileHash": "8051360a",
+ "needsInterop": true
+ },
+ "swiper/modules": {
+ "src": "../../node_modules/swiper/modules/index.mjs",
+ "file": "swiper_modules.js",
+ "fileHash": "ab031693",
+ "needsInterop": false
+ },
+ "swiper/react": {
+ "src": "../../node_modules/swiper/swiper-react.mjs",
+ "file": "swiper_react.js",
+ "fileHash": "8a08080a",
+ "needsInterop": false
+ }
+ },
+ "chunks": {
+ "chunk-KS2M7ZJI": {
+ "file": "chunk-KS2M7ZJI.js"
+ },
+ "chunk-XLOWEJT4": {
+ "file": "chunk-XLOWEJT4.js"
+ },
+ "prerender-2A2BKSYN": {
+ "file": "prerender-2A2BKSYN.js"
+ },
+ "chunk-WFLWNDNR": {
+ "file": "chunk-WFLWNDNR.js"
+ },
+ "chunk-5WRI5ZAA": {
+ "file": "chunk-5WRI5ZAA.js"
+ }
+ }
+}
\ No newline at end of file
diff --git a/.vite/deps/chunk-5WRI5ZAA.js b/.vite/deps/chunk-5WRI5ZAA.js
new file mode 100644
index 0000000..0e67478
--- /dev/null
+++ b/.vite/deps/chunk-5WRI5ZAA.js
@@ -0,0 +1,30 @@
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __commonJS = (cb, mod) => function __require() {
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
+};
+var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
+ // If the importer is in node compatibility mode or this is not an ESM
+ // file that has been converted to a CommonJS file using a Babel-
+ // compatible transform (i.e. "__esModule" has not been set), then set
+ // "default" to the CommonJS "module.exports" for node compatibility.
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
+ mod
+));
+
+export {
+ __commonJS,
+ __toESM
+};
diff --git a/.vite/deps/chunk-5WRI5ZAA.js.map b/.vite/deps/chunk-5WRI5ZAA.js.map
new file mode 100644
index 0000000..9865211
--- /dev/null
+++ b/.vite/deps/chunk-5WRI5ZAA.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": [],
+ "sourcesContent": [],
+ "mappings": "",
+ "names": []
+}
diff --git a/.vite/deps/chunk-KS2M7ZJI.js b/.vite/deps/chunk-KS2M7ZJI.js
new file mode 100644
index 0000000..d2040ec
--- /dev/null
+++ b/.vite/deps/chunk-KS2M7ZJI.js
@@ -0,0 +1,972 @@
+import {
+ __commonJS
+} from "./chunk-5WRI5ZAA.js";
+
+// node_modules/react/cjs/react.development.js
+var require_react_development = __commonJS({
+ "node_modules/react/cjs/react.development.js"(exports, module) {
+ "use strict";
+ (function() {
+ function defineDeprecationWarning(methodName, info) {
+ Object.defineProperty(Component.prototype, methodName, {
+ get: function() {
+ console.warn(
+ "%s(...) is deprecated in plain JavaScript React classes. %s",
+ info[0],
+ info[1]
+ );
+ }
+ });
+ }
+ function getIteratorFn(maybeIterable) {
+ if (null === maybeIterable || "object" !== typeof maybeIterable)
+ return null;
+ maybeIterable = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable["@@iterator"];
+ return "function" === typeof maybeIterable ? maybeIterable : null;
+ }
+ function warnNoop(publicInstance, callerName) {
+ publicInstance = (publicInstance = publicInstance.constructor) && (publicInstance.displayName || publicInstance.name) || "ReactClass";
+ var warningKey = publicInstance + "." + callerName;
+ didWarnStateUpdateForUnmountedComponent[warningKey] || (console.error(
+ "Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.",
+ callerName,
+ publicInstance
+ ), didWarnStateUpdateForUnmountedComponent[warningKey] = true);
+ }
+ function Component(props, context, updater) {
+ this.props = props;
+ this.context = context;
+ this.refs = emptyObject;
+ this.updater = updater || ReactNoopUpdateQueue;
+ }
+ function ComponentDummy() {
+ }
+ function PureComponent(props, context, updater) {
+ this.props = props;
+ this.context = context;
+ this.refs = emptyObject;
+ this.updater = updater || ReactNoopUpdateQueue;
+ }
+ function testStringCoercion(value) {
+ return "" + value;
+ }
+ function checkKeyStringCoercion(value) {
+ try {
+ testStringCoercion(value);
+ var JSCompiler_inline_result = false;
+ } catch (e) {
+ JSCompiler_inline_result = true;
+ }
+ if (JSCompiler_inline_result) {
+ JSCompiler_inline_result = console;
+ var JSCompiler_temp_const = JSCompiler_inline_result.error;
+ var JSCompiler_inline_result$jscomp$0 = "function" === typeof Symbol && Symbol.toStringTag && value[Symbol.toStringTag] || value.constructor.name || "Object";
+ JSCompiler_temp_const.call(
+ JSCompiler_inline_result,
+ "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
+ JSCompiler_inline_result$jscomp$0
+ );
+ return testStringCoercion(value);
+ }
+ }
+ function getComponentNameFromType(type) {
+ if (null == type) return null;
+ if ("function" === typeof type)
+ return type.$$typeof === REACT_CLIENT_REFERENCE ? null : type.displayName || type.name || null;
+ if ("string" === typeof type) return type;
+ switch (type) {
+ case REACT_FRAGMENT_TYPE:
+ return "Fragment";
+ case REACT_PROFILER_TYPE:
+ return "Profiler";
+ case REACT_STRICT_MODE_TYPE:
+ return "StrictMode";
+ case REACT_SUSPENSE_TYPE:
+ return "Suspense";
+ case REACT_SUSPENSE_LIST_TYPE:
+ return "SuspenseList";
+ case REACT_ACTIVITY_TYPE:
+ return "Activity";
+ }
+ if ("object" === typeof type)
+ switch ("number" === typeof type.tag && console.error(
+ "Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."
+ ), type.$$typeof) {
+ case REACT_PORTAL_TYPE:
+ return "Portal";
+ case REACT_CONTEXT_TYPE:
+ return (type.displayName || "Context") + ".Provider";
+ case REACT_CONSUMER_TYPE:
+ return (type._context.displayName || "Context") + ".Consumer";
+ case REACT_FORWARD_REF_TYPE:
+ var innerType = type.render;
+ type = type.displayName;
+ type || (type = innerType.displayName || innerType.name || "", type = "" !== type ? "ForwardRef(" + type + ")" : "ForwardRef");
+ return type;
+ case REACT_MEMO_TYPE:
+ return innerType = type.displayName || null, null !== innerType ? innerType : getComponentNameFromType(type.type) || "Memo";
+ case REACT_LAZY_TYPE:
+ innerType = type._payload;
+ type = type._init;
+ try {
+ return getComponentNameFromType(type(innerType));
+ } catch (x) {
+ }
+ }
+ return null;
+ }
+ function getTaskName(type) {
+ if (type === REACT_FRAGMENT_TYPE) return "<>";
+ if ("object" === typeof type && null !== type && type.$$typeof === REACT_LAZY_TYPE)
+ return "<...>";
+ try {
+ var name = getComponentNameFromType(type);
+ return name ? "<" + name + ">" : "<...>";
+ } catch (x) {
+ return "<...>";
+ }
+ }
+ function getOwner() {
+ var dispatcher = ReactSharedInternals.A;
+ return null === dispatcher ? null : dispatcher.getOwner();
+ }
+ function UnknownOwner() {
+ return Error("react-stack-top-frame");
+ }
+ function hasValidKey(config) {
+ if (hasOwnProperty.call(config, "key")) {
+ var getter = Object.getOwnPropertyDescriptor(config, "key").get;
+ if (getter && getter.isReactWarning) return false;
+ }
+ return void 0 !== config.key;
+ }
+ function defineKeyPropWarningGetter(props, displayName) {
+ function warnAboutAccessingKey() {
+ specialPropKeyWarningShown || (specialPropKeyWarningShown = true, console.error(
+ "%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",
+ displayName
+ ));
+ }
+ warnAboutAccessingKey.isReactWarning = true;
+ Object.defineProperty(props, "key", {
+ get: warnAboutAccessingKey,
+ configurable: true
+ });
+ }
+ function elementRefGetterWithDeprecationWarning() {
+ var componentName = getComponentNameFromType(this.type);
+ didWarnAboutElementRef[componentName] || (didWarnAboutElementRef[componentName] = true, console.error(
+ "Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."
+ ));
+ componentName = this.props.ref;
+ return void 0 !== componentName ? componentName : null;
+ }
+ function ReactElement(type, key, self, source, owner, props, debugStack, debugTask) {
+ self = props.ref;
+ type = {
+ $$typeof: REACT_ELEMENT_TYPE,
+ type,
+ key,
+ props,
+ _owner: owner
+ };
+ null !== (void 0 !== self ? self : null) ? Object.defineProperty(type, "ref", {
+ enumerable: false,
+ get: elementRefGetterWithDeprecationWarning
+ }) : Object.defineProperty(type, "ref", { enumerable: false, value: null });
+ type._store = {};
+ Object.defineProperty(type._store, "validated", {
+ configurable: false,
+ enumerable: false,
+ writable: true,
+ value: 0
+ });
+ Object.defineProperty(type, "_debugInfo", {
+ configurable: false,
+ enumerable: false,
+ writable: true,
+ value: null
+ });
+ Object.defineProperty(type, "_debugStack", {
+ configurable: false,
+ enumerable: false,
+ writable: true,
+ value: debugStack
+ });
+ Object.defineProperty(type, "_debugTask", {
+ configurable: false,
+ enumerable: false,
+ writable: true,
+ value: debugTask
+ });
+ Object.freeze && (Object.freeze(type.props), Object.freeze(type));
+ return type;
+ }
+ function cloneAndReplaceKey(oldElement, newKey) {
+ newKey = ReactElement(
+ oldElement.type,
+ newKey,
+ void 0,
+ void 0,
+ oldElement._owner,
+ oldElement.props,
+ oldElement._debugStack,
+ oldElement._debugTask
+ );
+ oldElement._store && (newKey._store.validated = oldElement._store.validated);
+ return newKey;
+ }
+ function isValidElement(object) {
+ return "object" === typeof object && null !== object && object.$$typeof === REACT_ELEMENT_TYPE;
+ }
+ function escape(key) {
+ var escaperLookup = { "=": "=0", ":": "=2" };
+ return "$" + key.replace(/[=:]/g, function(match) {
+ return escaperLookup[match];
+ });
+ }
+ function getElementKey(element, index) {
+ return "object" === typeof element && null !== element && null != element.key ? (checkKeyStringCoercion(element.key), escape("" + element.key)) : index.toString(36);
+ }
+ function noop$1() {
+ }
+ function resolveThenable(thenable) {
+ switch (thenable.status) {
+ case "fulfilled":
+ return thenable.value;
+ case "rejected":
+ throw thenable.reason;
+ default:
+ switch ("string" === typeof thenable.status ? thenable.then(noop$1, noop$1) : (thenable.status = "pending", thenable.then(
+ function(fulfilledValue) {
+ "pending" === thenable.status && (thenable.status = "fulfilled", thenable.value = fulfilledValue);
+ },
+ function(error) {
+ "pending" === thenable.status && (thenable.status = "rejected", thenable.reason = error);
+ }
+ )), thenable.status) {
+ case "fulfilled":
+ return thenable.value;
+ case "rejected":
+ throw thenable.reason;
+ }
+ }
+ throw thenable;
+ }
+ function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {
+ var type = typeof children;
+ if ("undefined" === type || "boolean" === type) children = null;
+ var invokeCallback = false;
+ if (null === children) invokeCallback = true;
+ else
+ switch (type) {
+ case "bigint":
+ case "string":
+ case "number":
+ invokeCallback = true;
+ break;
+ case "object":
+ switch (children.$$typeof) {
+ case REACT_ELEMENT_TYPE:
+ case REACT_PORTAL_TYPE:
+ invokeCallback = true;
+ break;
+ case REACT_LAZY_TYPE:
+ return invokeCallback = children._init, mapIntoArray(
+ invokeCallback(children._payload),
+ array,
+ escapedPrefix,
+ nameSoFar,
+ callback
+ );
+ }
+ }
+ if (invokeCallback) {
+ invokeCallback = children;
+ callback = callback(invokeCallback);
+ var childKey = "" === nameSoFar ? "." + getElementKey(invokeCallback, 0) : nameSoFar;
+ isArrayImpl(callback) ? (escapedPrefix = "", null != childKey && (escapedPrefix = childKey.replace(userProvidedKeyEscapeRegex, "$&/") + "/"), mapIntoArray(callback, array, escapedPrefix, "", function(c) {
+ return c;
+ })) : null != callback && (isValidElement(callback) && (null != callback.key && (invokeCallback && invokeCallback.key === callback.key || checkKeyStringCoercion(callback.key)), escapedPrefix = cloneAndReplaceKey(
+ callback,
+ escapedPrefix + (null == callback.key || invokeCallback && invokeCallback.key === callback.key ? "" : ("" + callback.key).replace(
+ userProvidedKeyEscapeRegex,
+ "$&/"
+ ) + "/") + childKey
+ ), "" !== nameSoFar && null != invokeCallback && isValidElement(invokeCallback) && null == invokeCallback.key && invokeCallback._store && !invokeCallback._store.validated && (escapedPrefix._store.validated = 2), callback = escapedPrefix), array.push(callback));
+ return 1;
+ }
+ invokeCallback = 0;
+ childKey = "" === nameSoFar ? "." : nameSoFar + ":";
+ if (isArrayImpl(children))
+ for (var i = 0; i < children.length; i++)
+ nameSoFar = children[i], type = childKey + getElementKey(nameSoFar, i), invokeCallback += mapIntoArray(
+ nameSoFar,
+ array,
+ escapedPrefix,
+ type,
+ callback
+ );
+ else if (i = getIteratorFn(children), "function" === typeof i)
+ for (i === children.entries && (didWarnAboutMaps || console.warn(
+ "Using Maps as children is not supported. Use an array of keyed ReactElements instead."
+ ), didWarnAboutMaps = true), children = i.call(children), i = 0; !(nameSoFar = children.next()).done; )
+ nameSoFar = nameSoFar.value, type = childKey + getElementKey(nameSoFar, i++), invokeCallback += mapIntoArray(
+ nameSoFar,
+ array,
+ escapedPrefix,
+ type,
+ callback
+ );
+ else if ("object" === type) {
+ if ("function" === typeof children.then)
+ return mapIntoArray(
+ resolveThenable(children),
+ array,
+ escapedPrefix,
+ nameSoFar,
+ callback
+ );
+ array = String(children);
+ throw Error(
+ "Objects are not valid as a React child (found: " + ("[object Object]" === array ? "object with keys {" + Object.keys(children).join(", ") + "}" : array) + "). If you meant to render a collection of children, use an array instead."
+ );
+ }
+ return invokeCallback;
+ }
+ function mapChildren(children, func, context) {
+ if (null == children) return children;
+ var result = [], count = 0;
+ mapIntoArray(children, result, "", "", function(child) {
+ return func.call(context, child, count++);
+ });
+ return result;
+ }
+ function lazyInitializer(payload) {
+ if (-1 === payload._status) {
+ var ctor = payload._result;
+ ctor = ctor();
+ ctor.then(
+ function(moduleObject) {
+ if (0 === payload._status || -1 === payload._status)
+ payload._status = 1, payload._result = moduleObject;
+ },
+ function(error) {
+ if (0 === payload._status || -1 === payload._status)
+ payload._status = 2, payload._result = error;
+ }
+ );
+ -1 === payload._status && (payload._status = 0, payload._result = ctor);
+ }
+ if (1 === payload._status)
+ return ctor = payload._result, void 0 === ctor && console.error(
+ "lazy: Expected the result of a dynamic import() call. Instead received: %s\n\nYour code should look like: \n const MyComponent = lazy(() => import('./MyComponent'))\n\nDid you accidentally put curly braces around the import?",
+ ctor
+ ), "default" in ctor || console.error(
+ "lazy: Expected the result of a dynamic import() call. Instead received: %s\n\nYour code should look like: \n const MyComponent = lazy(() => import('./MyComponent'))",
+ ctor
+ ), ctor.default;
+ throw payload._result;
+ }
+ function resolveDispatcher() {
+ var dispatcher = ReactSharedInternals.H;
+ null === dispatcher && console.error(
+ "Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem."
+ );
+ return dispatcher;
+ }
+ function noop() {
+ }
+ function enqueueTask(task) {
+ if (null === enqueueTaskImpl)
+ try {
+ var requireString = ("require" + Math.random()).slice(0, 7);
+ enqueueTaskImpl = (module && module[requireString]).call(
+ module,
+ "timers"
+ ).setImmediate;
+ } catch (_err) {
+ enqueueTaskImpl = function(callback) {
+ false === didWarnAboutMessageChannel && (didWarnAboutMessageChannel = true, "undefined" === typeof MessageChannel && console.error(
+ "This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning."
+ ));
+ var channel = new MessageChannel();
+ channel.port1.onmessage = callback;
+ channel.port2.postMessage(void 0);
+ };
+ }
+ return enqueueTaskImpl(task);
+ }
+ function aggregateErrors(errors) {
+ return 1 < errors.length && "function" === typeof AggregateError ? new AggregateError(errors) : errors[0];
+ }
+ function popActScope(prevActQueue, prevActScopeDepth) {
+ prevActScopeDepth !== actScopeDepth - 1 && console.error(
+ "You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one. "
+ );
+ actScopeDepth = prevActScopeDepth;
+ }
+ function recursivelyFlushAsyncActWork(returnValue, resolve, reject) {
+ var queue = ReactSharedInternals.actQueue;
+ if (null !== queue)
+ if (0 !== queue.length)
+ try {
+ flushActQueue(queue);
+ enqueueTask(function() {
+ return recursivelyFlushAsyncActWork(returnValue, resolve, reject);
+ });
+ return;
+ } catch (error) {
+ ReactSharedInternals.thrownErrors.push(error);
+ }
+ else ReactSharedInternals.actQueue = null;
+ 0 < ReactSharedInternals.thrownErrors.length ? (queue = aggregateErrors(ReactSharedInternals.thrownErrors), ReactSharedInternals.thrownErrors.length = 0, reject(queue)) : resolve(returnValue);
+ }
+ function flushActQueue(queue) {
+ if (!isFlushing) {
+ isFlushing = true;
+ var i = 0;
+ try {
+ for (; i < queue.length; i++) {
+ var callback = queue[i];
+ do {
+ ReactSharedInternals.didUsePromise = false;
+ var continuation = callback(false);
+ if (null !== continuation) {
+ if (ReactSharedInternals.didUsePromise) {
+ queue[i] = callback;
+ queue.splice(0, i);
+ return;
+ }
+ callback = continuation;
+ } else break;
+ } while (1);
+ }
+ queue.length = 0;
+ } catch (error) {
+ queue.splice(0, i + 1), ReactSharedInternals.thrownErrors.push(error);
+ } finally {
+ isFlushing = false;
+ }
+ }
+ }
+ "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
+ var REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"), REACT_PORTAL_TYPE = Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"), REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"), REACT_PROFILER_TYPE = Symbol.for("react.profiler");
+ Symbol.for("react.provider");
+ var REACT_CONSUMER_TYPE = Symbol.for("react.consumer"), REACT_CONTEXT_TYPE = Symbol.for("react.context"), REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"), REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"), REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"), REACT_MEMO_TYPE = Symbol.for("react.memo"), REACT_LAZY_TYPE = Symbol.for("react.lazy"), REACT_ACTIVITY_TYPE = Symbol.for("react.activity"), MAYBE_ITERATOR_SYMBOL = Symbol.iterator, didWarnStateUpdateForUnmountedComponent = {}, ReactNoopUpdateQueue = {
+ isMounted: function() {
+ return false;
+ },
+ enqueueForceUpdate: function(publicInstance) {
+ warnNoop(publicInstance, "forceUpdate");
+ },
+ enqueueReplaceState: function(publicInstance) {
+ warnNoop(publicInstance, "replaceState");
+ },
+ enqueueSetState: function(publicInstance) {
+ warnNoop(publicInstance, "setState");
+ }
+ }, assign = Object.assign, emptyObject = {};
+ Object.freeze(emptyObject);
+ Component.prototype.isReactComponent = {};
+ Component.prototype.setState = function(partialState, callback) {
+ if ("object" !== typeof partialState && "function" !== typeof partialState && null != partialState)
+ throw Error(
+ "takes an object of state variables to update or a function which returns an object of state variables."
+ );
+ this.updater.enqueueSetState(this, partialState, callback, "setState");
+ };
+ Component.prototype.forceUpdate = function(callback) {
+ this.updater.enqueueForceUpdate(this, callback, "forceUpdate");
+ };
+ var deprecatedAPIs = {
+ isMounted: [
+ "isMounted",
+ "Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks."
+ ],
+ replaceState: [
+ "replaceState",
+ "Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236)."
+ ]
+ }, fnName;
+ for (fnName in deprecatedAPIs)
+ deprecatedAPIs.hasOwnProperty(fnName) && defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);
+ ComponentDummy.prototype = Component.prototype;
+ deprecatedAPIs = PureComponent.prototype = new ComponentDummy();
+ deprecatedAPIs.constructor = PureComponent;
+ assign(deprecatedAPIs, Component.prototype);
+ deprecatedAPIs.isPureReactComponent = true;
+ var isArrayImpl = Array.isArray, REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference"), ReactSharedInternals = {
+ H: null,
+ A: null,
+ T: null,
+ S: null,
+ V: null,
+ actQueue: null,
+ isBatchingLegacy: false,
+ didScheduleLegacyUpdate: false,
+ didUsePromise: false,
+ thrownErrors: [],
+ getCurrentStack: null,
+ recentlyCreatedOwnerStacks: 0
+ }, hasOwnProperty = Object.prototype.hasOwnProperty, createTask = console.createTask ? console.createTask : function() {
+ return null;
+ };
+ deprecatedAPIs = {
+ "react-stack-bottom-frame": function(callStackForError) {
+ return callStackForError();
+ }
+ };
+ var specialPropKeyWarningShown, didWarnAboutOldJSXRuntime;
+ var didWarnAboutElementRef = {};
+ var unknownOwnerDebugStack = deprecatedAPIs["react-stack-bottom-frame"].bind(deprecatedAPIs, UnknownOwner)();
+ var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));
+ var didWarnAboutMaps = false, userProvidedKeyEscapeRegex = /\/+/g, reportGlobalError = "function" === typeof reportError ? reportError : function(error) {
+ if ("object" === typeof window && "function" === typeof window.ErrorEvent) {
+ var event = new window.ErrorEvent("error", {
+ bubbles: true,
+ cancelable: true,
+ message: "object" === typeof error && null !== error && "string" === typeof error.message ? String(error.message) : String(error),
+ error
+ });
+ if (!window.dispatchEvent(event)) return;
+ } else if ("object" === typeof process && "function" === typeof process.emit) {
+ process.emit("uncaughtException", error);
+ return;
+ }
+ console.error(error);
+ }, didWarnAboutMessageChannel = false, enqueueTaskImpl = null, actScopeDepth = 0, didWarnNoAwaitAct = false, isFlushing = false, queueSeveralMicrotasks = "function" === typeof queueMicrotask ? function(callback) {
+ queueMicrotask(function() {
+ return queueMicrotask(callback);
+ });
+ } : enqueueTask;
+ deprecatedAPIs = Object.freeze({
+ __proto__: null,
+ c: function(size) {
+ return resolveDispatcher().useMemoCache(size);
+ }
+ });
+ exports.Children = {
+ map: mapChildren,
+ forEach: function(children, forEachFunc, forEachContext) {
+ mapChildren(
+ children,
+ function() {
+ forEachFunc.apply(this, arguments);
+ },
+ forEachContext
+ );
+ },
+ count: function(children) {
+ var n = 0;
+ mapChildren(children, function() {
+ n++;
+ });
+ return n;
+ },
+ toArray: function(children) {
+ return mapChildren(children, function(child) {
+ return child;
+ }) || [];
+ },
+ only: function(children) {
+ if (!isValidElement(children))
+ throw Error(
+ "React.Children.only expected to receive a single React element child."
+ );
+ return children;
+ }
+ };
+ exports.Component = Component;
+ exports.Fragment = REACT_FRAGMENT_TYPE;
+ exports.Profiler = REACT_PROFILER_TYPE;
+ exports.PureComponent = PureComponent;
+ exports.StrictMode = REACT_STRICT_MODE_TYPE;
+ exports.Suspense = REACT_SUSPENSE_TYPE;
+ exports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = ReactSharedInternals;
+ exports.__COMPILER_RUNTIME = deprecatedAPIs;
+ exports.act = function(callback) {
+ var prevActQueue = ReactSharedInternals.actQueue, prevActScopeDepth = actScopeDepth;
+ actScopeDepth++;
+ var queue = ReactSharedInternals.actQueue = null !== prevActQueue ? prevActQueue : [], didAwaitActCall = false;
+ try {
+ var result = callback();
+ } catch (error) {
+ ReactSharedInternals.thrownErrors.push(error);
+ }
+ if (0 < ReactSharedInternals.thrownErrors.length)
+ throw popActScope(prevActQueue, prevActScopeDepth), callback = aggregateErrors(ReactSharedInternals.thrownErrors), ReactSharedInternals.thrownErrors.length = 0, callback;
+ if (null !== result && "object" === typeof result && "function" === typeof result.then) {
+ var thenable = result;
+ queueSeveralMicrotasks(function() {
+ didAwaitActCall || didWarnNoAwaitAct || (didWarnNoAwaitAct = true, console.error(
+ "You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);"
+ ));
+ });
+ return {
+ then: function(resolve, reject) {
+ didAwaitActCall = true;
+ thenable.then(
+ function(returnValue) {
+ popActScope(prevActQueue, prevActScopeDepth);
+ if (0 === prevActScopeDepth) {
+ try {
+ flushActQueue(queue), enqueueTask(function() {
+ return recursivelyFlushAsyncActWork(
+ returnValue,
+ resolve,
+ reject
+ );
+ });
+ } catch (error$0) {
+ ReactSharedInternals.thrownErrors.push(error$0);
+ }
+ if (0 < ReactSharedInternals.thrownErrors.length) {
+ var _thrownError = aggregateErrors(
+ ReactSharedInternals.thrownErrors
+ );
+ ReactSharedInternals.thrownErrors.length = 0;
+ reject(_thrownError);
+ }
+ } else resolve(returnValue);
+ },
+ function(error) {
+ popActScope(prevActQueue, prevActScopeDepth);
+ 0 < ReactSharedInternals.thrownErrors.length ? (error = aggregateErrors(
+ ReactSharedInternals.thrownErrors
+ ), ReactSharedInternals.thrownErrors.length = 0, reject(error)) : reject(error);
+ }
+ );
+ }
+ };
+ }
+ var returnValue$jscomp$0 = result;
+ popActScope(prevActQueue, prevActScopeDepth);
+ 0 === prevActScopeDepth && (flushActQueue(queue), 0 !== queue.length && queueSeveralMicrotasks(function() {
+ didAwaitActCall || didWarnNoAwaitAct || (didWarnNoAwaitAct = true, console.error(
+ "A component suspended inside an `act` scope, but the `act` call was not awaited. When testing React components that depend on asynchronous data, you must await the result:\n\nawait act(() => ...)"
+ ));
+ }), ReactSharedInternals.actQueue = null);
+ if (0 < ReactSharedInternals.thrownErrors.length)
+ throw callback = aggregateErrors(ReactSharedInternals.thrownErrors), ReactSharedInternals.thrownErrors.length = 0, callback;
+ return {
+ then: function(resolve, reject) {
+ didAwaitActCall = true;
+ 0 === prevActScopeDepth ? (ReactSharedInternals.actQueue = queue, enqueueTask(function() {
+ return recursivelyFlushAsyncActWork(
+ returnValue$jscomp$0,
+ resolve,
+ reject
+ );
+ })) : resolve(returnValue$jscomp$0);
+ }
+ };
+ };
+ exports.cache = function(fn) {
+ return function() {
+ return fn.apply(null, arguments);
+ };
+ };
+ exports.captureOwnerStack = function() {
+ var getCurrentStack = ReactSharedInternals.getCurrentStack;
+ return null === getCurrentStack ? null : getCurrentStack();
+ };
+ exports.cloneElement = function(element, config, children) {
+ if (null === element || void 0 === element)
+ throw Error(
+ "The argument must be a React element, but you passed " + element + "."
+ );
+ var props = assign({}, element.props), key = element.key, owner = element._owner;
+ if (null != config) {
+ var JSCompiler_inline_result;
+ a: {
+ if (hasOwnProperty.call(config, "ref") && (JSCompiler_inline_result = Object.getOwnPropertyDescriptor(
+ config,
+ "ref"
+ ).get) && JSCompiler_inline_result.isReactWarning) {
+ JSCompiler_inline_result = false;
+ break a;
+ }
+ JSCompiler_inline_result = void 0 !== config.ref;
+ }
+ JSCompiler_inline_result && (owner = getOwner());
+ hasValidKey(config) && (checkKeyStringCoercion(config.key), key = "" + config.key);
+ for (propName in config)
+ !hasOwnProperty.call(config, propName) || "key" === propName || "__self" === propName || "__source" === propName || "ref" === propName && void 0 === config.ref || (props[propName] = config[propName]);
+ }
+ var propName = arguments.length - 2;
+ if (1 === propName) props.children = children;
+ else if (1 < propName) {
+ JSCompiler_inline_result = Array(propName);
+ for (var i = 0; i < propName; i++)
+ JSCompiler_inline_result[i] = arguments[i + 2];
+ props.children = JSCompiler_inline_result;
+ }
+ props = ReactElement(
+ element.type,
+ key,
+ void 0,
+ void 0,
+ owner,
+ props,
+ element._debugStack,
+ element._debugTask
+ );
+ for (key = 2; key < arguments.length; key++)
+ owner = arguments[key], isValidElement(owner) && owner._store && (owner._store.validated = 1);
+ return props;
+ };
+ exports.createContext = function(defaultValue) {
+ defaultValue = {
+ $$typeof: REACT_CONTEXT_TYPE,
+ _currentValue: defaultValue,
+ _currentValue2: defaultValue,
+ _threadCount: 0,
+ Provider: null,
+ Consumer: null
+ };
+ defaultValue.Provider = defaultValue;
+ defaultValue.Consumer = {
+ $$typeof: REACT_CONSUMER_TYPE,
+ _context: defaultValue
+ };
+ defaultValue._currentRenderer = null;
+ defaultValue._currentRenderer2 = null;
+ return defaultValue;
+ };
+ exports.createElement = function(type, config, children) {
+ for (var i = 2; i < arguments.length; i++) {
+ var node = arguments[i];
+ isValidElement(node) && node._store && (node._store.validated = 1);
+ }
+ i = {};
+ node = null;
+ if (null != config)
+ for (propName in didWarnAboutOldJSXRuntime || !("__self" in config) || "key" in config || (didWarnAboutOldJSXRuntime = true, console.warn(
+ "Your app (or one of its dependencies) is using an outdated JSX transform. Update to the modern JSX transform for faster performance: https://react.dev/link/new-jsx-transform"
+ )), hasValidKey(config) && (checkKeyStringCoercion(config.key), node = "" + config.key), config)
+ hasOwnProperty.call(config, propName) && "key" !== propName && "__self" !== propName && "__source" !== propName && (i[propName] = config[propName]);
+ var childrenLength = arguments.length - 2;
+ if (1 === childrenLength) i.children = children;
+ else if (1 < childrenLength) {
+ for (var childArray = Array(childrenLength), _i = 0; _i < childrenLength; _i++)
+ childArray[_i] = arguments[_i + 2];
+ Object.freeze && Object.freeze(childArray);
+ i.children = childArray;
+ }
+ if (type && type.defaultProps)
+ for (propName in childrenLength = type.defaultProps, childrenLength)
+ void 0 === i[propName] && (i[propName] = childrenLength[propName]);
+ node && defineKeyPropWarningGetter(
+ i,
+ "function" === typeof type ? type.displayName || type.name || "Unknown" : type
+ );
+ var propName = 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;
+ return ReactElement(
+ type,
+ node,
+ void 0,
+ void 0,
+ getOwner(),
+ i,
+ propName ? Error("react-stack-top-frame") : unknownOwnerDebugStack,
+ propName ? createTask(getTaskName(type)) : unknownOwnerDebugTask
+ );
+ };
+ exports.createRef = function() {
+ var refObject = { current: null };
+ Object.seal(refObject);
+ return refObject;
+ };
+ exports.forwardRef = function(render) {
+ null != render && render.$$typeof === REACT_MEMO_TYPE ? console.error(
+ "forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))."
+ ) : "function" !== typeof render ? console.error(
+ "forwardRef requires a render function but was given %s.",
+ null === render ? "null" : typeof render
+ ) : 0 !== render.length && 2 !== render.length && console.error(
+ "forwardRef render functions accept exactly two parameters: props and ref. %s",
+ 1 === render.length ? "Did you forget to use the ref parameter?" : "Any additional parameter will be undefined."
+ );
+ null != render && null != render.defaultProps && console.error(
+ "forwardRef render functions do not support defaultProps. Did you accidentally pass a React component?"
+ );
+ var elementType = { $$typeof: REACT_FORWARD_REF_TYPE, render }, ownName;
+ Object.defineProperty(elementType, "displayName", {
+ enumerable: false,
+ configurable: true,
+ get: function() {
+ return ownName;
+ },
+ set: function(name) {
+ ownName = name;
+ render.name || render.displayName || (Object.defineProperty(render, "name", { value: name }), render.displayName = name);
+ }
+ });
+ return elementType;
+ };
+ exports.isValidElement = isValidElement;
+ exports.lazy = function(ctor) {
+ return {
+ $$typeof: REACT_LAZY_TYPE,
+ _payload: { _status: -1, _result: ctor },
+ _init: lazyInitializer
+ };
+ };
+ exports.memo = function(type, compare) {
+ null == type && console.error(
+ "memo: The first argument must be a component. Instead received: %s",
+ null === type ? "null" : typeof type
+ );
+ compare = {
+ $$typeof: REACT_MEMO_TYPE,
+ type,
+ compare: void 0 === compare ? null : compare
+ };
+ var ownName;
+ Object.defineProperty(compare, "displayName", {
+ enumerable: false,
+ configurable: true,
+ get: function() {
+ return ownName;
+ },
+ set: function(name) {
+ ownName = name;
+ type.name || type.displayName || (Object.defineProperty(type, "name", { value: name }), type.displayName = name);
+ }
+ });
+ return compare;
+ };
+ exports.startTransition = function(scope) {
+ var prevTransition = ReactSharedInternals.T, currentTransition = {};
+ ReactSharedInternals.T = currentTransition;
+ currentTransition._updatedFibers = /* @__PURE__ */ new Set();
+ try {
+ var returnValue = scope(), onStartTransitionFinish = ReactSharedInternals.S;
+ null !== onStartTransitionFinish && onStartTransitionFinish(currentTransition, returnValue);
+ "object" === typeof returnValue && null !== returnValue && "function" === typeof returnValue.then && returnValue.then(noop, reportGlobalError);
+ } catch (error) {
+ reportGlobalError(error);
+ } finally {
+ null === prevTransition && currentTransition._updatedFibers && (scope = currentTransition._updatedFibers.size, currentTransition._updatedFibers.clear(), 10 < scope && console.warn(
+ "Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table."
+ )), ReactSharedInternals.T = prevTransition;
+ }
+ };
+ exports.unstable_useCacheRefresh = function() {
+ return resolveDispatcher().useCacheRefresh();
+ };
+ exports.use = function(usable) {
+ return resolveDispatcher().use(usable);
+ };
+ exports.useActionState = function(action, initialState, permalink) {
+ return resolveDispatcher().useActionState(
+ action,
+ initialState,
+ permalink
+ );
+ };
+ exports.useCallback = function(callback, deps) {
+ return resolveDispatcher().useCallback(callback, deps);
+ };
+ exports.useContext = function(Context) {
+ var dispatcher = resolveDispatcher();
+ Context.$$typeof === REACT_CONSUMER_TYPE && console.error(
+ "Calling useContext(Context.Consumer) is not supported and will cause bugs. Did you mean to call useContext(Context) instead?"
+ );
+ return dispatcher.useContext(Context);
+ };
+ exports.useDebugValue = function(value, formatterFn) {
+ return resolveDispatcher().useDebugValue(value, formatterFn);
+ };
+ exports.useDeferredValue = function(value, initialValue) {
+ return resolveDispatcher().useDeferredValue(value, initialValue);
+ };
+ exports.useEffect = function(create, createDeps, update) {
+ null == create && console.warn(
+ "React Hook useEffect requires an effect callback. Did you forget to pass a callback to the hook?"
+ );
+ var dispatcher = resolveDispatcher();
+ if ("function" === typeof update)
+ throw Error(
+ "useEffect CRUD overload is not enabled in this build of React."
+ );
+ return dispatcher.useEffect(create, createDeps);
+ };
+ exports.useId = function() {
+ return resolveDispatcher().useId();
+ };
+ exports.useImperativeHandle = function(ref, create, deps) {
+ return resolveDispatcher().useImperativeHandle(ref, create, deps);
+ };
+ exports.useInsertionEffect = function(create, deps) {
+ null == create && console.warn(
+ "React Hook useInsertionEffect requires an effect callback. Did you forget to pass a callback to the hook?"
+ );
+ return resolveDispatcher().useInsertionEffect(create, deps);
+ };
+ exports.useLayoutEffect = function(create, deps) {
+ null == create && console.warn(
+ "React Hook useLayoutEffect requires an effect callback. Did you forget to pass a callback to the hook?"
+ );
+ return resolveDispatcher().useLayoutEffect(create, deps);
+ };
+ exports.useMemo = function(create, deps) {
+ return resolveDispatcher().useMemo(create, deps);
+ };
+ exports.useOptimistic = function(passthrough, reducer) {
+ return resolveDispatcher().useOptimistic(passthrough, reducer);
+ };
+ exports.useReducer = function(reducer, initialArg, init) {
+ return resolveDispatcher().useReducer(reducer, initialArg, init);
+ };
+ exports.useRef = function(initialValue) {
+ return resolveDispatcher().useRef(initialValue);
+ };
+ exports.useState = function(initialState) {
+ return resolveDispatcher().useState(initialState);
+ };
+ exports.useSyncExternalStore = function(subscribe, getSnapshot, getServerSnapshot) {
+ return resolveDispatcher().useSyncExternalStore(
+ subscribe,
+ getSnapshot,
+ getServerSnapshot
+ );
+ };
+ exports.useTransition = function() {
+ return resolveDispatcher().useTransition();
+ };
+ exports.version = "19.1.0";
+ "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
+ })();
+ }
+});
+
+// node_modules/react/index.js
+var require_react = __commonJS({
+ "node_modules/react/index.js"(exports, module) {
+ if (false) {
+ module.exports = null;
+ } else {
+ module.exports = require_react_development();
+ }
+ }
+});
+
+export {
+ require_react
+};
+/*! Bundled license information:
+
+react/cjs/react.development.js:
+ (**
+ * @license React
+ * react.development.js
+ *
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *)
+*/
+//# sourceMappingURL=chunk-KS2M7ZJI.js.map
diff --git a/.vite/deps/chunk-KS2M7ZJI.js.map b/.vite/deps/chunk-KS2M7ZJI.js.map
new file mode 100644
index 0000000..a3a7c14
--- /dev/null
+++ b/.vite/deps/chunk-KS2M7ZJI.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/react/cjs/react.development.js", "../../node_modules/react/index.js"],
+ "sourcesContent": ["/**\n * @license React\n * react.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function defineDeprecationWarning(methodName, info) {\n Object.defineProperty(Component.prototype, methodName, {\n get: function () {\n console.warn(\n \"%s(...) is deprecated in plain JavaScript React classes. %s\",\n info[0],\n info[1]\n );\n }\n });\n }\n function getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable)\n return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n }\n function warnNoop(publicInstance, callerName) {\n publicInstance =\n ((publicInstance = publicInstance.constructor) &&\n (publicInstance.displayName || publicInstance.name)) ||\n \"ReactClass\";\n var warningKey = publicInstance + \".\" + callerName;\n didWarnStateUpdateForUnmountedComponent[warningKey] ||\n (console.error(\n \"Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.\",\n callerName,\n publicInstance\n ),\n (didWarnStateUpdateForUnmountedComponent[warningKey] = !0));\n }\n function Component(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n }\n function ComponentDummy() {}\n function PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return (type.displayName || \"Context\") + \".Provider\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(\n type,\n key,\n self,\n source,\n owner,\n props,\n debugStack,\n debugTask\n ) {\n self = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== self ? self : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function cloneAndReplaceKey(oldElement, newKey) {\n newKey = ReactElement(\n oldElement.type,\n newKey,\n void 0,\n void 0,\n oldElement._owner,\n oldElement.props,\n oldElement._debugStack,\n oldElement._debugTask\n );\n oldElement._store &&\n (newKey._store.validated = oldElement._store.validated);\n return newKey;\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n function escape(key) {\n var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n return (\n \"$\" +\n key.replace(/[=:]/g, function (match) {\n return escaperLookup[match];\n })\n );\n }\n function getElementKey(element, index) {\n return \"object\" === typeof element &&\n null !== element &&\n null != element.key\n ? (checkKeyStringCoercion(element.key), escape(\"\" + element.key))\n : index.toString(36);\n }\n function noop$1() {}\n function resolveThenable(thenable) {\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n switch (\n (\"string\" === typeof thenable.status\n ? thenable.then(noop$1, noop$1)\n : ((thenable.status = \"pending\"),\n thenable.then(\n function (fulfilledValue) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = fulfilledValue));\n },\n function (error) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"rejected\"),\n (thenable.reason = error));\n }\n )),\n thenable.status)\n ) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n }\n throw thenable;\n }\n function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (\"undefined\" === type || \"boolean\" === type) children = null;\n var invokeCallback = !1;\n if (null === children) invokeCallback = !0;\n else\n switch (type) {\n case \"bigint\":\n case \"string\":\n case \"number\":\n invokeCallback = !0;\n break;\n case \"object\":\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = !0;\n break;\n case REACT_LAZY_TYPE:\n return (\n (invokeCallback = children._init),\n mapIntoArray(\n invokeCallback(children._payload),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n )\n );\n }\n }\n if (invokeCallback) {\n invokeCallback = children;\n callback = callback(invokeCallback);\n var childKey =\n \"\" === nameSoFar ? \".\" + getElementKey(invokeCallback, 0) : nameSoFar;\n isArrayImpl(callback)\n ? ((escapedPrefix = \"\"),\n null != childKey &&\n (escapedPrefix =\n childKey.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n return c;\n }))\n : null != callback &&\n (isValidElement(callback) &&\n (null != callback.key &&\n ((invokeCallback && invokeCallback.key === callback.key) ||\n checkKeyStringCoercion(callback.key)),\n (escapedPrefix = cloneAndReplaceKey(\n callback,\n escapedPrefix +\n (null == callback.key ||\n (invokeCallback && invokeCallback.key === callback.key)\n ? \"\"\n : (\"\" + callback.key).replace(\n userProvidedKeyEscapeRegex,\n \"$&/\"\n ) + \"/\") +\n childKey\n )),\n \"\" !== nameSoFar &&\n null != invokeCallback &&\n isValidElement(invokeCallback) &&\n null == invokeCallback.key &&\n invokeCallback._store &&\n !invokeCallback._store.validated &&\n (escapedPrefix._store.validated = 2),\n (callback = escapedPrefix)),\n array.push(callback));\n return 1;\n }\n invokeCallback = 0;\n childKey = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n if (isArrayImpl(children))\n for (var i = 0; i < children.length; i++)\n (nameSoFar = children[i]),\n (type = childKey + getElementKey(nameSoFar, i)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n for (\n i === children.entries &&\n (didWarnAboutMaps ||\n console.warn(\n \"Using Maps as children is not supported. Use an array of keyed ReactElements instead.\"\n ),\n (didWarnAboutMaps = !0)),\n children = i.call(children),\n i = 0;\n !(nameSoFar = children.next()).done;\n\n )\n (nameSoFar = nameSoFar.value),\n (type = childKey + getElementKey(nameSoFar, i++)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (\"object\" === type) {\n if (\"function\" === typeof children.then)\n return mapIntoArray(\n resolveThenable(children),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n );\n array = String(children);\n throw Error(\n \"Objects are not valid as a React child (found: \" +\n (\"[object Object]\" === array\n ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n : array) +\n \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n return invokeCallback;\n }\n function mapChildren(children, func, context) {\n if (null == children) return children;\n var result = [],\n count = 0;\n mapIntoArray(children, result, \"\", \"\", function (child) {\n return func.call(context, child, count++);\n });\n return result;\n }\n function lazyInitializer(payload) {\n if (-1 === payload._status) {\n var ctor = payload._result;\n ctor = ctor();\n ctor.then(\n function (moduleObject) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 1), (payload._result = moduleObject);\n },\n function (error) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 2), (payload._result = error);\n }\n );\n -1 === payload._status &&\n ((payload._status = 0), (payload._result = ctor));\n }\n if (1 === payload._status)\n return (\n (ctor = payload._result),\n void 0 === ctor &&\n console.error(\n \"lazy: Expected the result of a dynamic import() call. Instead received: %s\\n\\nYour code should look like: \\n const MyComponent = lazy(() => import('./MyComponent'))\\n\\nDid you accidentally put curly braces around the import?\",\n ctor\n ),\n \"default\" in ctor ||\n console.error(\n \"lazy: Expected the result of a dynamic import() call. Instead received: %s\\n\\nYour code should look like: \\n const MyComponent = lazy(() => import('./MyComponent'))\",\n ctor\n ),\n ctor.default\n );\n throw payload._result;\n }\n function resolveDispatcher() {\n var dispatcher = ReactSharedInternals.H;\n null === dispatcher &&\n console.error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n );\n return dispatcher;\n }\n function noop() {}\n function enqueueTask(task) {\n if (null === enqueueTaskImpl)\n try {\n var requireString = (\"require\" + Math.random()).slice(0, 7);\n enqueueTaskImpl = (module && module[requireString]).call(\n module,\n \"timers\"\n ).setImmediate;\n } catch (_err) {\n enqueueTaskImpl = function (callback) {\n !1 === didWarnAboutMessageChannel &&\n ((didWarnAboutMessageChannel = !0),\n \"undefined\" === typeof MessageChannel &&\n console.error(\n \"This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning.\"\n ));\n var channel = new MessageChannel();\n channel.port1.onmessage = callback;\n channel.port2.postMessage(void 0);\n };\n }\n return enqueueTaskImpl(task);\n }\n function aggregateErrors(errors) {\n return 1 < errors.length && \"function\" === typeof AggregateError\n ? new AggregateError(errors)\n : errors[0];\n }\n function popActScope(prevActQueue, prevActScopeDepth) {\n prevActScopeDepth !== actScopeDepth - 1 &&\n console.error(\n \"You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one. \"\n );\n actScopeDepth = prevActScopeDepth;\n }\n function recursivelyFlushAsyncActWork(returnValue, resolve, reject) {\n var queue = ReactSharedInternals.actQueue;\n if (null !== queue)\n if (0 !== queue.length)\n try {\n flushActQueue(queue);\n enqueueTask(function () {\n return recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n });\n return;\n } catch (error) {\n ReactSharedInternals.thrownErrors.push(error);\n }\n else ReactSharedInternals.actQueue = null;\n 0 < ReactSharedInternals.thrownErrors.length\n ? ((queue = aggregateErrors(ReactSharedInternals.thrownErrors)),\n (ReactSharedInternals.thrownErrors.length = 0),\n reject(queue))\n : resolve(returnValue);\n }\n function flushActQueue(queue) {\n if (!isFlushing) {\n isFlushing = !0;\n var i = 0;\n try {\n for (; i < queue.length; i++) {\n var callback = queue[i];\n do {\n ReactSharedInternals.didUsePromise = !1;\n var continuation = callback(!1);\n if (null !== continuation) {\n if (ReactSharedInternals.didUsePromise) {\n queue[i] = callback;\n queue.splice(0, i);\n return;\n }\n callback = continuation;\n } else break;\n } while (1);\n }\n queue.length = 0;\n } catch (error) {\n queue.splice(0, i + 1), ReactSharedInternals.thrownErrors.push(error);\n } finally {\n isFlushing = !1;\n }\n }\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\n Symbol.for(\"react.provider\");\n var REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator,\n didWarnStateUpdateForUnmountedComponent = {},\n ReactNoopUpdateQueue = {\n isMounted: function () {\n return !1;\n },\n enqueueForceUpdate: function (publicInstance) {\n warnNoop(publicInstance, \"forceUpdate\");\n },\n enqueueReplaceState: function (publicInstance) {\n warnNoop(publicInstance, \"replaceState\");\n },\n enqueueSetState: function (publicInstance) {\n warnNoop(publicInstance, \"setState\");\n }\n },\n assign = Object.assign,\n emptyObject = {};\n Object.freeze(emptyObject);\n Component.prototype.isReactComponent = {};\n Component.prototype.setState = function (partialState, callback) {\n if (\n \"object\" !== typeof partialState &&\n \"function\" !== typeof partialState &&\n null != partialState\n )\n throw Error(\n \"takes an object of state variables to update or a function which returns an object of state variables.\"\n );\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n };\n Component.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n };\n var deprecatedAPIs = {\n isMounted: [\n \"isMounted\",\n \"Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks.\"\n ],\n replaceState: [\n \"replaceState\",\n \"Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236).\"\n ]\n },\n fnName;\n for (fnName in deprecatedAPIs)\n deprecatedAPIs.hasOwnProperty(fnName) &&\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n ComponentDummy.prototype = Component.prototype;\n deprecatedAPIs = PureComponent.prototype = new ComponentDummy();\n deprecatedAPIs.constructor = PureComponent;\n assign(deprecatedAPIs, Component.prototype);\n deprecatedAPIs.isPureReactComponent = !0;\n var isArrayImpl = Array.isArray,\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals = {\n H: null,\n A: null,\n T: null,\n S: null,\n V: null,\n actQueue: null,\n isBatchingLegacy: !1,\n didScheduleLegacyUpdate: !1,\n didUsePromise: !1,\n thrownErrors: [],\n getCurrentStack: null,\n recentlyCreatedOwnerStacks: 0\n },\n hasOwnProperty = Object.prototype.hasOwnProperty,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n deprecatedAPIs = {\n \"react-stack-bottom-frame\": function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown, didWarnAboutOldJSXRuntime;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = deprecatedAPIs[\n \"react-stack-bottom-frame\"\n ].bind(deprecatedAPIs, UnknownOwner)();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutMaps = !1,\n userProvidedKeyEscapeRegex = /\\/+/g,\n reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n },\n didWarnAboutMessageChannel = !1,\n enqueueTaskImpl = null,\n actScopeDepth = 0,\n didWarnNoAwaitAct = !1,\n isFlushing = !1,\n queueSeveralMicrotasks =\n \"function\" === typeof queueMicrotask\n ? function (callback) {\n queueMicrotask(function () {\n return queueMicrotask(callback);\n });\n }\n : enqueueTask;\n deprecatedAPIs = Object.freeze({\n __proto__: null,\n c: function (size) {\n return resolveDispatcher().useMemoCache(size);\n }\n });\n exports.Children = {\n map: mapChildren,\n forEach: function (children, forEachFunc, forEachContext) {\n mapChildren(\n children,\n function () {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function (children) {\n var n = 0;\n mapChildren(children, function () {\n n++;\n });\n return n;\n },\n toArray: function (children) {\n return (\n mapChildren(children, function (child) {\n return child;\n }) || []\n );\n },\n only: function (children) {\n if (!isValidElement(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n };\n exports.Component = Component;\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.Profiler = REACT_PROFILER_TYPE;\n exports.PureComponent = PureComponent;\n exports.StrictMode = REACT_STRICT_MODE_TYPE;\n exports.Suspense = REACT_SUSPENSE_TYPE;\n exports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n ReactSharedInternals;\n exports.__COMPILER_RUNTIME = deprecatedAPIs;\n exports.act = function (callback) {\n var prevActQueue = ReactSharedInternals.actQueue,\n prevActScopeDepth = actScopeDepth;\n actScopeDepth++;\n var queue = (ReactSharedInternals.actQueue =\n null !== prevActQueue ? prevActQueue : []),\n didAwaitActCall = !1;\n try {\n var result = callback();\n } catch (error) {\n ReactSharedInternals.thrownErrors.push(error);\n }\n if (0 < ReactSharedInternals.thrownErrors.length)\n throw (\n (popActScope(prevActQueue, prevActScopeDepth),\n (callback = aggregateErrors(ReactSharedInternals.thrownErrors)),\n (ReactSharedInternals.thrownErrors.length = 0),\n callback)\n );\n if (\n null !== result &&\n \"object\" === typeof result &&\n \"function\" === typeof result.then\n ) {\n var thenable = result;\n queueSeveralMicrotasks(function () {\n didAwaitActCall ||\n didWarnNoAwaitAct ||\n ((didWarnNoAwaitAct = !0),\n console.error(\n \"You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);\"\n ));\n });\n return {\n then: function (resolve, reject) {\n didAwaitActCall = !0;\n thenable.then(\n function (returnValue) {\n popActScope(prevActQueue, prevActScopeDepth);\n if (0 === prevActScopeDepth) {\n try {\n flushActQueue(queue),\n enqueueTask(function () {\n return recursivelyFlushAsyncActWork(\n returnValue,\n resolve,\n reject\n );\n });\n } catch (error$0) {\n ReactSharedInternals.thrownErrors.push(error$0);\n }\n if (0 < ReactSharedInternals.thrownErrors.length) {\n var _thrownError = aggregateErrors(\n ReactSharedInternals.thrownErrors\n );\n ReactSharedInternals.thrownErrors.length = 0;\n reject(_thrownError);\n }\n } else resolve(returnValue);\n },\n function (error) {\n popActScope(prevActQueue, prevActScopeDepth);\n 0 < ReactSharedInternals.thrownErrors.length\n ? ((error = aggregateErrors(\n ReactSharedInternals.thrownErrors\n )),\n (ReactSharedInternals.thrownErrors.length = 0),\n reject(error))\n : reject(error);\n }\n );\n }\n };\n }\n var returnValue$jscomp$0 = result;\n popActScope(prevActQueue, prevActScopeDepth);\n 0 === prevActScopeDepth &&\n (flushActQueue(queue),\n 0 !== queue.length &&\n queueSeveralMicrotasks(function () {\n didAwaitActCall ||\n didWarnNoAwaitAct ||\n ((didWarnNoAwaitAct = !0),\n console.error(\n \"A component suspended inside an `act` scope, but the `act` call was not awaited. When testing React components that depend on asynchronous data, you must await the result:\\n\\nawait act(() => ...)\"\n ));\n }),\n (ReactSharedInternals.actQueue = null));\n if (0 < ReactSharedInternals.thrownErrors.length)\n throw (\n ((callback = aggregateErrors(ReactSharedInternals.thrownErrors)),\n (ReactSharedInternals.thrownErrors.length = 0),\n callback)\n );\n return {\n then: function (resolve, reject) {\n didAwaitActCall = !0;\n 0 === prevActScopeDepth\n ? ((ReactSharedInternals.actQueue = queue),\n enqueueTask(function () {\n return recursivelyFlushAsyncActWork(\n returnValue$jscomp$0,\n resolve,\n reject\n );\n }))\n : resolve(returnValue$jscomp$0);\n }\n };\n };\n exports.cache = function (fn) {\n return function () {\n return fn.apply(null, arguments);\n };\n };\n exports.captureOwnerStack = function () {\n var getCurrentStack = ReactSharedInternals.getCurrentStack;\n return null === getCurrentStack ? null : getCurrentStack();\n };\n exports.cloneElement = function (element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" +\n element +\n \".\"\n );\n var props = assign({}, element.props),\n key = element.key,\n owner = element._owner;\n if (null != config) {\n var JSCompiler_inline_result;\n a: {\n if (\n hasOwnProperty.call(config, \"ref\") &&\n (JSCompiler_inline_result = Object.getOwnPropertyDescriptor(\n config,\n \"ref\"\n ).get) &&\n JSCompiler_inline_result.isReactWarning\n ) {\n JSCompiler_inline_result = !1;\n break a;\n }\n JSCompiler_inline_result = void 0 !== config.ref;\n }\n JSCompiler_inline_result && (owner = getOwner());\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (key = \"\" + config.key));\n for (propName in config)\n !hasOwnProperty.call(config, propName) ||\n \"key\" === propName ||\n \"__self\" === propName ||\n \"__source\" === propName ||\n (\"ref\" === propName && void 0 === config.ref) ||\n (props[propName] = config[propName]);\n }\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n JSCompiler_inline_result = Array(propName);\n for (var i = 0; i < propName; i++)\n JSCompiler_inline_result[i] = arguments[i + 2];\n props.children = JSCompiler_inline_result;\n }\n props = ReactElement(\n element.type,\n key,\n void 0,\n void 0,\n owner,\n props,\n element._debugStack,\n element._debugTask\n );\n for (key = 2; key < arguments.length; key++)\n (owner = arguments[key]),\n isValidElement(owner) && owner._store && (owner._store.validated = 1);\n return props;\n };\n exports.createContext = function (defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n defaultValue._currentRenderer = null;\n defaultValue._currentRenderer2 = null;\n return defaultValue;\n };\n exports.createElement = function (type, config, children) {\n for (var i = 2; i < arguments.length; i++) {\n var node = arguments[i];\n isValidElement(node) && node._store && (node._store.validated = 1);\n }\n i = {};\n node = null;\n if (null != config)\n for (propName in (didWarnAboutOldJSXRuntime ||\n !(\"__self\" in config) ||\n \"key\" in config ||\n ((didWarnAboutOldJSXRuntime = !0),\n console.warn(\n \"Your app (or one of its dependencies) is using an outdated JSX transform. Update to the modern JSX transform for faster performance: https://react.dev/link/new-jsx-transform\"\n )),\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (node = \"\" + config.key)),\n config))\n hasOwnProperty.call(config, propName) &&\n \"key\" !== propName &&\n \"__self\" !== propName &&\n \"__source\" !== propName &&\n (i[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) i.children = children;\n else if (1 < childrenLength) {\n for (\n var childArray = Array(childrenLength), _i = 0;\n _i < childrenLength;\n _i++\n )\n childArray[_i] = arguments[_i + 2];\n Object.freeze && Object.freeze(childArray);\n i.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in ((childrenLength = type.defaultProps), childrenLength))\n void 0 === i[propName] && (i[propName] = childrenLength[propName]);\n node &&\n defineKeyPropWarningGetter(\n i,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n var propName = 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return ReactElement(\n type,\n node,\n void 0,\n void 0,\n getOwner(),\n i,\n propName ? Error(\"react-stack-top-frame\") : unknownOwnerDebugStack,\n propName ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.createRef = function () {\n var refObject = { current: null };\n Object.seal(refObject);\n return refObject;\n };\n exports.forwardRef = function (render) {\n null != render && render.$$typeof === REACT_MEMO_TYPE\n ? console.error(\n \"forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...)).\"\n )\n : \"function\" !== typeof render\n ? console.error(\n \"forwardRef requires a render function but was given %s.\",\n null === render ? \"null\" : typeof render\n )\n : 0 !== render.length &&\n 2 !== render.length &&\n console.error(\n \"forwardRef render functions accept exactly two parameters: props and ref. %s\",\n 1 === render.length\n ? \"Did you forget to use the ref parameter?\"\n : \"Any additional parameter will be undefined.\"\n );\n null != render &&\n null != render.defaultProps &&\n console.error(\n \"forwardRef render functions do not support defaultProps. Did you accidentally pass a React component?\"\n );\n var elementType = { $$typeof: REACT_FORWARD_REF_TYPE, render: render },\n ownName;\n Object.defineProperty(elementType, \"displayName\", {\n enumerable: !1,\n configurable: !0,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name;\n render.name ||\n render.displayName ||\n (Object.defineProperty(render, \"name\", { value: name }),\n (render.displayName = name));\n }\n });\n return elementType;\n };\n exports.isValidElement = isValidElement;\n exports.lazy = function (ctor) {\n return {\n $$typeof: REACT_LAZY_TYPE,\n _payload: { _status: -1, _result: ctor },\n _init: lazyInitializer\n };\n };\n exports.memo = function (type, compare) {\n null == type &&\n console.error(\n \"memo: The first argument must be a component. Instead received: %s\",\n null === type ? \"null\" : typeof type\n );\n compare = {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: void 0 === compare ? null : compare\n };\n var ownName;\n Object.defineProperty(compare, \"displayName\", {\n enumerable: !1,\n configurable: !0,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name;\n type.name ||\n type.displayName ||\n (Object.defineProperty(type, \"name\", { value: name }),\n (type.displayName = name));\n }\n });\n return compare;\n };\n exports.startTransition = function (scope) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n currentTransition._updatedFibers = new Set();\n try {\n var returnValue = scope(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n returnValue.then(noop, reportGlobalError);\n } catch (error) {\n reportGlobalError(error);\n } finally {\n null === prevTransition &&\n currentTransition._updatedFibers &&\n ((scope = currentTransition._updatedFibers.size),\n currentTransition._updatedFibers.clear(),\n 10 < scope &&\n console.warn(\n \"Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table.\"\n )),\n (ReactSharedInternals.T = prevTransition);\n }\n };\n exports.unstable_useCacheRefresh = function () {\n return resolveDispatcher().useCacheRefresh();\n };\n exports.use = function (usable) {\n return resolveDispatcher().use(usable);\n };\n exports.useActionState = function (action, initialState, permalink) {\n return resolveDispatcher().useActionState(\n action,\n initialState,\n permalink\n );\n };\n exports.useCallback = function (callback, deps) {\n return resolveDispatcher().useCallback(callback, deps);\n };\n exports.useContext = function (Context) {\n var dispatcher = resolveDispatcher();\n Context.$$typeof === REACT_CONSUMER_TYPE &&\n console.error(\n \"Calling useContext(Context.Consumer) is not supported and will cause bugs. Did you mean to call useContext(Context) instead?\"\n );\n return dispatcher.useContext(Context);\n };\n exports.useDebugValue = function (value, formatterFn) {\n return resolveDispatcher().useDebugValue(value, formatterFn);\n };\n exports.useDeferredValue = function (value, initialValue) {\n return resolveDispatcher().useDeferredValue(value, initialValue);\n };\n exports.useEffect = function (create, createDeps, update) {\n null == create &&\n console.warn(\n \"React Hook useEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n );\n var dispatcher = resolveDispatcher();\n if (\"function\" === typeof update)\n throw Error(\n \"useEffect CRUD overload is not enabled in this build of React.\"\n );\n return dispatcher.useEffect(create, createDeps);\n };\n exports.useId = function () {\n return resolveDispatcher().useId();\n };\n exports.useImperativeHandle = function (ref, create, deps) {\n return resolveDispatcher().useImperativeHandle(ref, create, deps);\n };\n exports.useInsertionEffect = function (create, deps) {\n null == create &&\n console.warn(\n \"React Hook useInsertionEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n );\n return resolveDispatcher().useInsertionEffect(create, deps);\n };\n exports.useLayoutEffect = function (create, deps) {\n null == create &&\n console.warn(\n \"React Hook useLayoutEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n );\n return resolveDispatcher().useLayoutEffect(create, deps);\n };\n exports.useMemo = function (create, deps) {\n return resolveDispatcher().useMemo(create, deps);\n };\n exports.useOptimistic = function (passthrough, reducer) {\n return resolveDispatcher().useOptimistic(passthrough, reducer);\n };\n exports.useReducer = function (reducer, initialArg, init) {\n return resolveDispatcher().useReducer(reducer, initialArg, init);\n };\n exports.useRef = function (initialValue) {\n return resolveDispatcher().useRef(initialValue);\n };\n exports.useState = function (initialState) {\n return resolveDispatcher().useState(initialState);\n };\n exports.useSyncExternalStore = function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n ) {\n return resolveDispatcher().useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot\n );\n };\n exports.useTransition = function () {\n return resolveDispatcher().useTransition();\n };\n exports.version = \"19.1.0\";\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n"],
+ "mappings": "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",
+ "names": []
+}
diff --git a/.vite/deps/chunk-WFLWNDNR.js b/.vite/deps/chunk-WFLWNDNR.js
new file mode 100644
index 0000000..bb5d4dd
--- /dev/null
+++ b/.vite/deps/chunk-WFLWNDNR.js
@@ -0,0 +1,312 @@
+// node_modules/preact/dist/preact.module.js
+var n;
+var l;
+var u;
+var t;
+var i;
+var r;
+var o;
+var e;
+var f;
+var c;
+var s;
+var a;
+var h;
+var p = {};
+var y = [];
+var v = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;
+var w = Array.isArray;
+function d(n2, l2) {
+ for (var u2 in l2) n2[u2] = l2[u2];
+ return n2;
+}
+function g(n2) {
+ n2 && n2.parentNode && n2.parentNode.removeChild(n2);
+}
+function _(l2, u2, t2) {
+ var i2, r2, o2, e2 = {};
+ for (o2 in u2) "key" == o2 ? i2 = u2[o2] : "ref" == o2 ? r2 = u2[o2] : e2[o2] = u2[o2];
+ if (arguments.length > 2 && (e2.children = arguments.length > 3 ? n.call(arguments, 2) : t2), "function" == typeof l2 && null != l2.defaultProps) for (o2 in l2.defaultProps) null == e2[o2] && (e2[o2] = l2.defaultProps[o2]);
+ return m(l2, e2, i2, r2, null);
+}
+function m(n2, t2, i2, r2, o2) {
+ var e2 = { type: n2, props: t2, key: i2, ref: r2, __k: null, __: null, __b: 0, __e: null, __c: null, constructor: void 0, __v: null == o2 ? ++u : o2, __i: -1, __u: 0 };
+ return null == o2 && null != l.vnode && l.vnode(e2), e2;
+}
+function b() {
+ return { current: null };
+}
+function k(n2) {
+ return n2.children;
+}
+function x(n2, l2) {
+ this.props = n2, this.context = l2;
+}
+function S(n2, l2) {
+ if (null == l2) return n2.__ ? S(n2.__, n2.__i + 1) : null;
+ for (var u2; l2 < n2.__k.length; l2++) if (null != (u2 = n2.__k[l2]) && null != u2.__e) return u2.__e;
+ return "function" == typeof n2.type ? S(n2) : null;
+}
+function C(n2) {
+ var l2, u2;
+ if (null != (n2 = n2.__) && null != n2.__c) {
+ for (n2.__e = n2.__c.base = null, l2 = 0; l2 < n2.__k.length; l2++) if (null != (u2 = n2.__k[l2]) && null != u2.__e) {
+ n2.__e = n2.__c.base = u2.__e;
+ break;
+ }
+ return C(n2);
+ }
+}
+function M(n2) {
+ (!n2.__d && (n2.__d = true) && i.push(n2) && !$.__r++ || r != l.debounceRendering) && ((r = l.debounceRendering) || o)($);
+}
+function $() {
+ for (var n2, u2, t2, r2, o2, f2, c2, s2 = 1; i.length; ) i.length > s2 && i.sort(e), n2 = i.shift(), s2 = i.length, n2.__d && (t2 = void 0, o2 = (r2 = (u2 = n2).__v).__e, f2 = [], c2 = [], u2.__P && ((t2 = d({}, r2)).__v = r2.__v + 1, l.vnode && l.vnode(t2), O(u2.__P, t2, r2, u2.__n, u2.__P.namespaceURI, 32 & r2.__u ? [o2] : null, f2, null == o2 ? S(r2) : o2, !!(32 & r2.__u), c2), t2.__v = r2.__v, t2.__.__k[t2.__i] = t2, z(f2, t2, c2), t2.__e != o2 && C(t2)));
+ $.__r = 0;
+}
+function I(n2, l2, u2, t2, i2, r2, o2, e2, f2, c2, s2) {
+ var a2, h2, v2, w2, d2, g2, _2 = t2 && t2.__k || y, m2 = l2.length;
+ for (f2 = P(u2, l2, _2, f2, m2), a2 = 0; a2 < m2; a2++) null != (v2 = u2.__k[a2]) && (h2 = -1 == v2.__i ? p : _2[v2.__i] || p, v2.__i = a2, g2 = O(n2, v2, h2, i2, r2, o2, e2, f2, c2, s2), w2 = v2.__e, v2.ref && h2.ref != v2.ref && (h2.ref && q(h2.ref, null, v2), s2.push(v2.ref, v2.__c || w2, v2)), null == d2 && null != w2 && (d2 = w2), 4 & v2.__u || h2.__k === v2.__k ? f2 = A(v2, f2, n2) : "function" == typeof v2.type && void 0 !== g2 ? f2 = g2 : w2 && (f2 = w2.nextSibling), v2.__u &= -7);
+ return u2.__e = d2, f2;
+}
+function P(n2, l2, u2, t2, i2) {
+ var r2, o2, e2, f2, c2, s2 = u2.length, a2 = s2, h2 = 0;
+ for (n2.__k = new Array(i2), r2 = 0; r2 < i2; r2++) null != (o2 = l2[r2]) && "boolean" != typeof o2 && "function" != typeof o2 ? (f2 = r2 + h2, (o2 = n2.__k[r2] = "string" == typeof o2 || "number" == typeof o2 || "bigint" == typeof o2 || o2.constructor == String ? m(null, o2, null, null, null) : w(o2) ? m(k, { children: o2 }, null, null, null) : null == o2.constructor && o2.__b > 0 ? m(o2.type, o2.props, o2.key, o2.ref ? o2.ref : null, o2.__v) : o2).__ = n2, o2.__b = n2.__b + 1, e2 = null, -1 != (c2 = o2.__i = L(o2, u2, f2, a2)) && (a2--, (e2 = u2[c2]) && (e2.__u |= 2)), null == e2 || null == e2.__v ? (-1 == c2 && (i2 > s2 ? h2-- : i2 < s2 && h2++), "function" != typeof o2.type && (o2.__u |= 4)) : c2 != f2 && (c2 == f2 - 1 ? h2-- : c2 == f2 + 1 ? h2++ : (c2 > f2 ? h2-- : h2++, o2.__u |= 4))) : n2.__k[r2] = null;
+ if (a2) for (r2 = 0; r2 < s2; r2++) null != (e2 = u2[r2]) && 0 == (2 & e2.__u) && (e2.__e == t2 && (t2 = S(e2)), B(e2, e2));
+ return t2;
+}
+function A(n2, l2, u2) {
+ var t2, i2;
+ if ("function" == typeof n2.type) {
+ for (t2 = n2.__k, i2 = 0; t2 && i2 < t2.length; i2++) t2[i2] && (t2[i2].__ = n2, l2 = A(t2[i2], l2, u2));
+ return l2;
+ }
+ n2.__e != l2 && (l2 && n2.type && !u2.contains(l2) && (l2 = S(n2)), u2.insertBefore(n2.__e, l2 || null), l2 = n2.__e);
+ do {
+ l2 = l2 && l2.nextSibling;
+ } while (null != l2 && 8 == l2.nodeType);
+ return l2;
+}
+function H(n2, l2) {
+ return l2 = l2 || [], null == n2 || "boolean" == typeof n2 || (w(n2) ? n2.some(function(n3) {
+ H(n3, l2);
+ }) : l2.push(n2)), l2;
+}
+function L(n2, l2, u2, t2) {
+ var i2, r2, o2 = n2.key, e2 = n2.type, f2 = l2[u2];
+ if (null === f2 && null == n2.key || f2 && o2 == f2.key && e2 == f2.type && 0 == (2 & f2.__u)) return u2;
+ if (t2 > (null != f2 && 0 == (2 & f2.__u) ? 1 : 0)) for (i2 = u2 - 1, r2 = u2 + 1; i2 >= 0 || r2 < l2.length; ) {
+ if (i2 >= 0) {
+ if ((f2 = l2[i2]) && 0 == (2 & f2.__u) && o2 == f2.key && e2 == f2.type) return i2;
+ i2--;
+ }
+ if (r2 < l2.length) {
+ if ((f2 = l2[r2]) && 0 == (2 & f2.__u) && o2 == f2.key && e2 == f2.type) return r2;
+ r2++;
+ }
+ }
+ return -1;
+}
+function T(n2, l2, u2) {
+ "-" == l2[0] ? n2.setProperty(l2, null == u2 ? "" : u2) : n2[l2] = null == u2 ? "" : "number" != typeof u2 || v.test(l2) ? u2 : u2 + "px";
+}
+function j(n2, l2, u2, t2, i2) {
+ var r2;
+ n: if ("style" == l2) if ("string" == typeof u2) n2.style.cssText = u2;
+ else {
+ if ("string" == typeof t2 && (n2.style.cssText = t2 = ""), t2) for (l2 in t2) u2 && l2 in u2 || T(n2.style, l2, "");
+ if (u2) for (l2 in u2) t2 && u2[l2] == t2[l2] || T(n2.style, l2, u2[l2]);
+ }
+ else if ("o" == l2[0] && "n" == l2[1]) r2 = l2 != (l2 = l2.replace(f, "$1")), l2 = l2.toLowerCase() in n2 || "onFocusOut" == l2 || "onFocusIn" == l2 ? l2.toLowerCase().slice(2) : l2.slice(2), n2.l || (n2.l = {}), n2.l[l2 + r2] = u2, u2 ? t2 ? u2.u = t2.u : (u2.u = c, n2.addEventListener(l2, r2 ? a : s, r2)) : n2.removeEventListener(l2, r2 ? a : s, r2);
+ else {
+ if ("http://www.w3.org/2000/svg" == i2) l2 = l2.replace(/xlink(H|:h)/, "h").replace(/sName$/, "s");
+ else if ("width" != l2 && "height" != l2 && "href" != l2 && "list" != l2 && "form" != l2 && "tabIndex" != l2 && "download" != l2 && "rowSpan" != l2 && "colSpan" != l2 && "role" != l2 && "popover" != l2 && l2 in n2) try {
+ n2[l2] = null == u2 ? "" : u2;
+ break n;
+ } catch (n3) {
+ }
+ "function" == typeof u2 || (null == u2 || false === u2 && "-" != l2[4] ? n2.removeAttribute(l2) : n2.setAttribute(l2, "popover" == l2 && 1 == u2 ? "" : u2));
+ }
+}
+function F(n2) {
+ return function(u2) {
+ if (this.l) {
+ var t2 = this.l[u2.type + n2];
+ if (null == u2.t) u2.t = c++;
+ else if (u2.t < t2.u) return;
+ return t2(l.event ? l.event(u2) : u2);
+ }
+ };
+}
+function O(n2, u2, t2, i2, r2, o2, e2, f2, c2, s2) {
+ var a2, h2, p2, y2, v2, _2, m2, b2, S2, C2, M2, $2, P2, A2, H2, L2, T2, j2 = u2.type;
+ if (null != u2.constructor) return null;
+ 128 & t2.__u && (c2 = !!(32 & t2.__u), o2 = [f2 = u2.__e = t2.__e]), (a2 = l.__b) && a2(u2);
+ n: if ("function" == typeof j2) try {
+ if (b2 = u2.props, S2 = "prototype" in j2 && j2.prototype.render, C2 = (a2 = j2.contextType) && i2[a2.__c], M2 = a2 ? C2 ? C2.props.value : a2.__ : i2, t2.__c ? m2 = (h2 = u2.__c = t2.__c).__ = h2.__E : (S2 ? u2.__c = h2 = new j2(b2, M2) : (u2.__c = h2 = new x(b2, M2), h2.constructor = j2, h2.render = D), C2 && C2.sub(h2), h2.props = b2, h2.state || (h2.state = {}), h2.context = M2, h2.__n = i2, p2 = h2.__d = true, h2.__h = [], h2._sb = []), S2 && null == h2.__s && (h2.__s = h2.state), S2 && null != j2.getDerivedStateFromProps && (h2.__s == h2.state && (h2.__s = d({}, h2.__s)), d(h2.__s, j2.getDerivedStateFromProps(b2, h2.__s))), y2 = h2.props, v2 = h2.state, h2.__v = u2, p2) S2 && null == j2.getDerivedStateFromProps && null != h2.componentWillMount && h2.componentWillMount(), S2 && null != h2.componentDidMount && h2.__h.push(h2.componentDidMount);
+ else {
+ if (S2 && null == j2.getDerivedStateFromProps && b2 !== y2 && null != h2.componentWillReceiveProps && h2.componentWillReceiveProps(b2, M2), !h2.__e && null != h2.shouldComponentUpdate && false === h2.shouldComponentUpdate(b2, h2.__s, M2) || u2.__v == t2.__v) {
+ for (u2.__v != t2.__v && (h2.props = b2, h2.state = h2.__s, h2.__d = false), u2.__e = t2.__e, u2.__k = t2.__k, u2.__k.some(function(n3) {
+ n3 && (n3.__ = u2);
+ }), $2 = 0; $2 < h2._sb.length; $2++) h2.__h.push(h2._sb[$2]);
+ h2._sb = [], h2.__h.length && e2.push(h2);
+ break n;
+ }
+ null != h2.componentWillUpdate && h2.componentWillUpdate(b2, h2.__s, M2), S2 && null != h2.componentDidUpdate && h2.__h.push(function() {
+ h2.componentDidUpdate(y2, v2, _2);
+ });
+ }
+ if (h2.context = M2, h2.props = b2, h2.__P = n2, h2.__e = false, P2 = l.__r, A2 = 0, S2) {
+ for (h2.state = h2.__s, h2.__d = false, P2 && P2(u2), a2 = h2.render(h2.props, h2.state, h2.context), H2 = 0; H2 < h2._sb.length; H2++) h2.__h.push(h2._sb[H2]);
+ h2._sb = [];
+ } else do {
+ h2.__d = false, P2 && P2(u2), a2 = h2.render(h2.props, h2.state, h2.context), h2.state = h2.__s;
+ } while (h2.__d && ++A2 < 25);
+ h2.state = h2.__s, null != h2.getChildContext && (i2 = d(d({}, i2), h2.getChildContext())), S2 && !p2 && null != h2.getSnapshotBeforeUpdate && (_2 = h2.getSnapshotBeforeUpdate(y2, v2)), L2 = a2, null != a2 && a2.type === k && null == a2.key && (L2 = N(a2.props.children)), f2 = I(n2, w(L2) ? L2 : [L2], u2, t2, i2, r2, o2, e2, f2, c2, s2), h2.base = u2.__e, u2.__u &= -161, h2.__h.length && e2.push(h2), m2 && (h2.__E = h2.__ = null);
+ } catch (n3) {
+ if (u2.__v = null, c2 || null != o2) if (n3.then) {
+ for (u2.__u |= c2 ? 160 : 128; f2 && 8 == f2.nodeType && f2.nextSibling; ) f2 = f2.nextSibling;
+ o2[o2.indexOf(f2)] = null, u2.__e = f2;
+ } else for (T2 = o2.length; T2--; ) g(o2[T2]);
+ else u2.__e = t2.__e, u2.__k = t2.__k;
+ l.__e(n3, u2, t2);
+ }
+ else null == o2 && u2.__v == t2.__v ? (u2.__k = t2.__k, u2.__e = t2.__e) : f2 = u2.__e = V(t2.__e, u2, t2, i2, r2, o2, e2, c2, s2);
+ return (a2 = l.diffed) && a2(u2), 128 & u2.__u ? void 0 : f2;
+}
+function z(n2, u2, t2) {
+ for (var i2 = 0; i2 < t2.length; i2++) q(t2[i2], t2[++i2], t2[++i2]);
+ l.__c && l.__c(u2, n2), n2.some(function(u3) {
+ try {
+ n2 = u3.__h, u3.__h = [], n2.some(function(n3) {
+ n3.call(u3);
+ });
+ } catch (n3) {
+ l.__e(n3, u3.__v);
+ }
+ });
+}
+function N(n2) {
+ return "object" != typeof n2 || null == n2 || n2.__b && n2.__b > 0 ? n2 : w(n2) ? n2.map(N) : d({}, n2);
+}
+function V(u2, t2, i2, r2, o2, e2, f2, c2, s2) {
+ var a2, h2, y2, v2, d2, _2, m2, b2 = i2.props, k2 = t2.props, x2 = t2.type;
+ if ("svg" == x2 ? o2 = "http://www.w3.org/2000/svg" : "math" == x2 ? o2 = "http://www.w3.org/1998/Math/MathML" : o2 || (o2 = "http://www.w3.org/1999/xhtml"), null != e2) {
+ for (a2 = 0; a2 < e2.length; a2++) if ((d2 = e2[a2]) && "setAttribute" in d2 == !!x2 && (x2 ? d2.localName == x2 : 3 == d2.nodeType)) {
+ u2 = d2, e2[a2] = null;
+ break;
+ }
+ }
+ if (null == u2) {
+ if (null == x2) return document.createTextNode(k2);
+ u2 = document.createElementNS(o2, x2, k2.is && k2), c2 && (l.__m && l.__m(t2, e2), c2 = false), e2 = null;
+ }
+ if (null == x2) b2 === k2 || c2 && u2.data == k2 || (u2.data = k2);
+ else {
+ if (e2 = e2 && n.call(u2.childNodes), b2 = i2.props || p, !c2 && null != e2) for (b2 = {}, a2 = 0; a2 < u2.attributes.length; a2++) b2[(d2 = u2.attributes[a2]).name] = d2.value;
+ for (a2 in b2) if (d2 = b2[a2], "children" == a2) ;
+ else if ("dangerouslySetInnerHTML" == a2) y2 = d2;
+ else if (!(a2 in k2)) {
+ if ("value" == a2 && "defaultValue" in k2 || "checked" == a2 && "defaultChecked" in k2) continue;
+ j(u2, a2, null, d2, o2);
+ }
+ for (a2 in k2) d2 = k2[a2], "children" == a2 ? v2 = d2 : "dangerouslySetInnerHTML" == a2 ? h2 = d2 : "value" == a2 ? _2 = d2 : "checked" == a2 ? m2 = d2 : c2 && "function" != typeof d2 || b2[a2] === d2 || j(u2, a2, d2, b2[a2], o2);
+ if (h2) c2 || y2 && (h2.__html == y2.__html || h2.__html == u2.innerHTML) || (u2.innerHTML = h2.__html), t2.__k = [];
+ else if (y2 && (u2.innerHTML = ""), I("template" == t2.type ? u2.content : u2, w(v2) ? v2 : [v2], t2, i2, r2, "foreignObject" == x2 ? "http://www.w3.org/1999/xhtml" : o2, e2, f2, e2 ? e2[0] : i2.__k && S(i2, 0), c2, s2), null != e2) for (a2 = e2.length; a2--; ) g(e2[a2]);
+ c2 || (a2 = "value", "progress" == x2 && null == _2 ? u2.removeAttribute("value") : null != _2 && (_2 !== u2[a2] || "progress" == x2 && !_2 || "option" == x2 && _2 != b2[a2]) && j(u2, a2, _2, b2[a2], o2), a2 = "checked", null != m2 && m2 != u2[a2] && j(u2, a2, m2, b2[a2], o2));
+ }
+ return u2;
+}
+function q(n2, u2, t2) {
+ try {
+ if ("function" == typeof n2) {
+ var i2 = "function" == typeof n2.__u;
+ i2 && n2.__u(), i2 && null == u2 || (n2.__u = n2(u2));
+ } else n2.current = u2;
+ } catch (n3) {
+ l.__e(n3, t2);
+ }
+}
+function B(n2, u2, t2) {
+ var i2, r2;
+ if (l.unmount && l.unmount(n2), (i2 = n2.ref) && (i2.current && i2.current != n2.__e || q(i2, null, u2)), null != (i2 = n2.__c)) {
+ if (i2.componentWillUnmount) try {
+ i2.componentWillUnmount();
+ } catch (n3) {
+ l.__e(n3, u2);
+ }
+ i2.base = i2.__P = null;
+ }
+ if (i2 = n2.__k) for (r2 = 0; r2 < i2.length; r2++) i2[r2] && B(i2[r2], u2, t2 || "function" != typeof n2.type);
+ t2 || g(n2.__e), n2.__c = n2.__ = n2.__e = void 0;
+}
+function D(n2, l2, u2) {
+ return this.constructor(n2, u2);
+}
+function E(u2, t2, i2) {
+ var r2, o2, e2, f2;
+ t2 == document && (t2 = document.documentElement), l.__ && l.__(u2, t2), o2 = (r2 = "function" == typeof i2) ? null : i2 && i2.__k || t2.__k, e2 = [], f2 = [], O(t2, u2 = (!r2 && i2 || t2).__k = _(k, null, [u2]), o2 || p, p, t2.namespaceURI, !r2 && i2 ? [i2] : o2 ? null : t2.firstChild ? n.call(t2.childNodes) : null, e2, !r2 && i2 ? i2 : o2 ? o2.__e : t2.firstChild, r2, f2), z(e2, u2, f2);
+}
+function G(n2, l2) {
+ E(n2, l2, G);
+}
+function J(l2, u2, t2) {
+ var i2, r2, o2, e2, f2 = d({}, l2.props);
+ for (o2 in l2.type && l2.type.defaultProps && (e2 = l2.type.defaultProps), u2) "key" == o2 ? i2 = u2[o2] : "ref" == o2 ? r2 = u2[o2] : f2[o2] = null == u2[o2] && null != e2 ? e2[o2] : u2[o2];
+ return arguments.length > 2 && (f2.children = arguments.length > 3 ? n.call(arguments, 2) : t2), m(l2.type, f2, i2 || l2.key, r2 || l2.ref, null);
+}
+function K(n2) {
+ function l2(n3) {
+ var u2, t2;
+ return this.getChildContext || (u2 = /* @__PURE__ */ new Set(), (t2 = {})[l2.__c] = this, this.getChildContext = function() {
+ return t2;
+ }, this.componentWillUnmount = function() {
+ u2 = null;
+ }, this.shouldComponentUpdate = function(n4) {
+ this.props.value != n4.value && u2.forEach(function(n5) {
+ n5.__e = true, M(n5);
+ });
+ }, this.sub = function(n4) {
+ u2.add(n4);
+ var l3 = n4.componentWillUnmount;
+ n4.componentWillUnmount = function() {
+ u2 && u2.delete(n4), l3 && l3.call(n4);
+ };
+ }), n3.children;
+ }
+ return l2.__c = "__cC" + h++, l2.__ = n2, l2.Provider = l2.__l = (l2.Consumer = function(n3, l3) {
+ return n3.children(l3);
+ }).contextType = l2, l2;
+}
+n = y.slice, l = { __e: function(n2, l2, u2, t2) {
+ for (var i2, r2, o2; l2 = l2.__; ) if ((i2 = l2.__c) && !i2.__) try {
+ if ((r2 = i2.constructor) && null != r2.getDerivedStateFromError && (i2.setState(r2.getDerivedStateFromError(n2)), o2 = i2.__d), null != i2.componentDidCatch && (i2.componentDidCatch(n2, t2 || {}), o2 = i2.__d), o2) return i2.__E = i2;
+ } catch (l3) {
+ n2 = l3;
+ }
+ throw n2;
+} }, u = 0, t = function(n2) {
+ return null != n2 && null == n2.constructor;
+}, x.prototype.setState = function(n2, l2) {
+ var u2;
+ u2 = null != this.__s && this.__s != this.state ? this.__s : this.__s = d({}, this.state), "function" == typeof n2 && (n2 = n2(d({}, u2), this.props)), n2 && d(u2, n2), null != n2 && this.__v && (l2 && this._sb.push(l2), M(this));
+}, x.prototype.forceUpdate = function(n2) {
+ this.__v && (this.__e = true, n2 && this.__h.push(n2), M(this));
+}, x.prototype.render = k, i = [], o = "function" == typeof Promise ? Promise.prototype.then.bind(Promise.resolve()) : setTimeout, e = function(n2, l2) {
+ return n2.__v.__b - l2.__v.__b;
+}, $.__r = 0, f = /(PointerCapture)$|Capture$/i, c = 0, s = F(false), a = F(true), h = 0;
+
+export {
+ l,
+ t,
+ _,
+ b,
+ k,
+ x,
+ H,
+ E,
+ G,
+ J,
+ K
+};
+//# sourceMappingURL=chunk-WFLWNDNR.js.map
diff --git a/.vite/deps/chunk-WFLWNDNR.js.map b/.vite/deps/chunk-WFLWNDNR.js.map
new file mode 100644
index 0000000..c1d91d7
--- /dev/null
+++ b/.vite/deps/chunk-WFLWNDNR.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/preact/src/constants.js", "../../node_modules/preact/src/util.js", "../../node_modules/preact/src/options.js", "../../node_modules/preact/src/create-element.js", "../../node_modules/preact/src/component.js", "../../node_modules/preact/src/diff/props.js", "../../node_modules/preact/src/create-context.js", "../../node_modules/preact/src/diff/children.js", "../../node_modules/preact/src/diff/index.js", "../../node_modules/preact/src/render.js", "../../node_modules/preact/src/clone-element.js", "../../node_modules/preact/src/diff/catch-error.js"],
+ "sourcesContent": ["/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 2;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 1;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nexport const XHTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\nexport const MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n\nexport const NULL = null;\nexport const UNDEFINED = undefined;\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n", "import { EMPTY_ARR } from './constants';\n\nexport const isArray = Array.isArray;\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-expect-error We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {import('./index').ContainerNode} node The node to remove\n */\nexport function removeNode(node) {\n\tif (node && node.parentNode) node.parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n", "import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n", "import { slice } from './util';\nimport options from './options';\nimport { NULL, UNDEFINED } from './constants';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component constructor for this\n * virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array} [children] The children of the\n * virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != NULL) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] == UNDEFINED) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, NULL);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\t/** @type {import('./internal').VNode} */\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: NULL,\n\t\t_parent: NULL,\n\t\t_depth: 0,\n\t\t_dom: NULL,\n\t\t_component: NULL,\n\t\tconstructor: UNDEFINED,\n\t\t_original: original == NULL ? ++vnodeId : original,\n\t\t_index: -1,\n\t\t_flags: 0\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == NULL && options.vnode != NULL) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: NULL };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != NULL && vnode.constructor == UNDEFINED;\n", "import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\nimport { MODE_HYDRATE, NULL } from './constants';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function BaseComponent(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nBaseComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != NULL && this._nextState != this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == NULL) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nBaseComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](https://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {ComponentChildren | void}\n */\nBaseComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == NULL) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._index + 1)\n\t\t\t: NULL;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != NULL && sibling._dom != NULL) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : NULL;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet oldVNode = component._vnode,\n\t\toldDom = oldVNode._dom,\n\t\tcommitQueue = [],\n\t\trefQueue = [];\n\n\tif (component._parentDom) {\n\t\tconst newVNode = assign({}, oldVNode);\n\t\tnewVNode._original = oldVNode._original + 1;\n\t\tif (options.vnode) options.vnode(newVNode);\n\n\t\tdiff(\n\t\t\tcomponent._parentDom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tcomponent._parentDom.namespaceURI,\n\t\t\toldVNode._flags & MODE_HYDRATE ? [oldDom] : NULL,\n\t\t\tcommitQueue,\n\t\t\toldDom == NULL ? getDomSibling(oldVNode) : oldDom,\n\t\t\t!!(oldVNode._flags & MODE_HYDRATE),\n\t\t\trefQueue\n\t\t);\n\n\t\tnewVNode._original = oldVNode._original;\n\t\tnewVNode._parent._children[newVNode._index] = newVNode;\n\t\tcommitRoot(commitQueue, newVNode, refQueue);\n\n\t\tif (newVNode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(newVNode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != NULL && vnode._component != NULL) {\n\t\tvnode._dom = vnode._component.base = NULL;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != NULL && child._dom != NULL) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce != options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet c,\n\t\tl = 1;\n\n\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t// process() calls from getting scheduled while `queue` is still being consumed.\n\twhile (rerenderQueue.length) {\n\t\t// Keep the rerender queue sorted by (depth, insertion order). The queue\n\t\t// will initially be sorted on the first iteration only if it has more than 1 item.\n\t\t//\n\t\t// New items can be added to the queue e.g. when rerendering a provider, so we want to\n\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t// single pass\n\t\tif (rerenderQueue.length > l) {\n\t\t\trerenderQueue.sort(depthSort);\n\t\t}\n\n\t\tc = rerenderQueue.shift();\n\t\tl = rerenderQueue.length;\n\n\t\tif (c._dirty) {\n\t\t\trenderComponent(c);\n\t\t}\n\t}\n\tprocess._rerenderCount = 0;\n}\n\nprocess._rerenderCount = 0;\n", "import { IS_NON_DIMENSIONAL, NULL, SVG_NAMESPACE } from '../constants';\nimport options from '../options';\n\nfunction setStyle(style, key, value) {\n\tif (key[0] == '-') {\n\t\tstyle.setProperty(key, value == NULL ? '' : value);\n\t} else if (value == NULL) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\nconst CAPTURE_REGEX = /(PointerCapture)$|Capture$/i;\n\n// A logical clock to solve issues like https://github.com/preactjs/preact/issues/3927.\n// When the DOM performs an event it leaves micro-ticks in between bubbling up which means that\n// an event can trigger on a newly reated DOM-node while the event bubbles up.\n//\n// Originally inspired by Vue\n// (https://github.com/vuejs/core/blob/caeb8a68811a1b0f79/packages/runtime-dom/src/modules/events.ts#L90-L101),\n// but modified to use a logical clock instead of Date.now() in case event handlers get attached\n// and events get dispatched during the same millisecond.\n//\n// The clock is incremented after each new event dispatch. This allows 1 000 000 new events\n// per second for over 280 years before the value reaches Number.MAX_SAFE_INTEGER (2**53 - 1).\nlet eventClock = 0;\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {string} namespace Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, namespace) {\n\tlet useCapture;\n\n\to: if (name == 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] != oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] == 'o' && name[1] == 'n') {\n\t\tuseCapture = name != (name = name.replace(CAPTURE_REGEX, '$1'));\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (\n\t\t\tname.toLowerCase() in dom ||\n\t\t\tname == 'onFocusOut' ||\n\t\t\tname == 'onFocusIn'\n\t\t)\n\t\t\tname = name.toLowerCase().slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue._attached = eventClock;\n\t\t\t\tdom.addEventListener(\n\t\t\t\t\tname,\n\t\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\t\tuseCapture\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tvalue._attached = oldValue._attached;\n\t\t\t}\n\t\t} else {\n\t\t\tdom.removeEventListener(\n\t\t\t\tname,\n\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\tuseCapture\n\t\t\t);\n\t\t}\n\t} else {\n\t\tif (namespace == SVG_NAMESPACE) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname != 'width' &&\n\t\t\tname != 'height' &&\n\t\t\tname != 'href' &&\n\t\t\tname != 'list' &&\n\t\t\tname != 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname != 'tabIndex' &&\n\t\t\tname != 'download' &&\n\t\t\tname != 'rowSpan' &&\n\t\t\tname != 'colSpan' &&\n\t\t\tname != 'role' &&\n\t\t\tname != 'popover' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == NULL ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value == 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != NULL && (value !== false || name[4] == '-')) {\n\t\t\tdom.setAttribute(name, name == 'popover' && value == true ? '' : value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Create an event proxy function.\n * @param {boolean} useCapture Is the event handler for the capture phase.\n * @private\n */\nfunction createEventProxy(useCapture) {\n\t/**\n\t * Proxy an event to hooked event handlers\n\t * @param {import('../internal').PreactEvent} e The event object from the browser\n\t * @private\n\t */\n\treturn function (e) {\n\t\tif (this._listeners) {\n\t\t\tconst eventHandler = this._listeners[e.type + useCapture];\n\t\t\tif (e._dispatched == NULL) {\n\t\t\t\te._dispatched = eventClock++;\n\n\t\t\t\t// When `e._dispatched` is smaller than the time when the targeted event\n\t\t\t\t// handler was attached we know we have bubbled up to an element that was added\n\t\t\t\t// during patching the DOM.\n\t\t\t} else if (e._dispatched < eventHandler._attached) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn eventHandler(options.event ? options.event(e) : e);\n\t\t}\n\t};\n}\n\nconst eventProxy = createEventProxy(false);\nconst eventProxyCapture = createEventProxy(true);\n", "import { enqueueRender } from './component';\nimport { NULL } from './constants';\n\nexport let i = 0;\n\nexport function createContext(defaultValue) {\n\tfunction Context(props) {\n\t\tif (!this.getChildContext) {\n\t\t\t/** @type {Set | null} */\n\t\t\tlet subs = new Set();\n\t\t\tlet ctx = {};\n\t\t\tctx[Context._id] = this;\n\n\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\tthis.componentWillUnmount = () => {\n\t\t\t\tsubs = NULL;\n\t\t\t};\n\n\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t// @ts-expect-error even\n\t\t\t\tif (this.props.value != _props.value) {\n\t\t\t\t\tsubs.forEach(c => {\n\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.sub = c => {\n\t\t\t\tsubs.add(c);\n\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\tif (subs) {\n\t\t\t\t\t\tsubs.delete(c);\n\t\t\t\t\t}\n\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\treturn props.children;\n\t}\n\n\tContext._id = '__cC' + i++;\n\tContext._defaultValue = defaultValue;\n\n\t/** @type {import('./internal').FunctionComponent} */\n\tContext.Consumer = (props, contextValue) => {\n\t\treturn props.children(contextValue);\n\t};\n\n\t// we could also get rid of _contextRef entirely\n\tContext.Provider =\n\t\tContext._contextRef =\n\t\tContext.Consumer.contextType =\n\t\t\tContext;\n\n\treturn Context;\n}\n", "import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport {\n\tEMPTY_OBJ,\n\tEMPTY_ARR,\n\tINSERT_VNODE,\n\tMATCHED,\n\tUNDEFINED,\n\tNULL\n} from '../constants';\nimport { isArray } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * @typedef {import('../internal').ComponentChildren} ComponentChildren\n * @typedef {import('../internal').Component} Component\n * @typedef {import('../internal').PreactElement} PreactElement\n * @typedef {import('../internal').VNode} VNode\n */\n\n/**\n * Diff the children of a virtual node\n * @param {PreactElement} parentDom The DOM element whose children are being\n * diffed\n * @param {ComponentChildren[]} renderResult\n * @param {VNode} newParentVNode The new virtual node whose children should be\n * diff'ed against oldParentVNode\n * @param {VNode} oldParentVNode The old virtual node whose children should be\n * diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by\n * getChildContext\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {PreactElement} oldDom The current attached DOM element any new dom\n * elements should be placed around. Likely `null` on first render (except when\n * hydrating). Can be a sibling DOM element when diffing Fragments that have\n * siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\tlet i,\n\t\t/** @type {VNode} */\n\t\toldVNode,\n\t\t/** @type {VNode} */\n\t\tchildVNode,\n\t\t/** @type {PreactElement} */\n\t\tnewDom,\n\t\t/** @type {PreactElement} */\n\t\tfirstChildDom;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\t/** @type {VNode[]} */\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet newChildrenLength = renderResult.length;\n\n\toldDom = constructNewChildrenArray(\n\t\tnewParentVNode,\n\t\trenderResult,\n\t\toldChildren,\n\t\toldDom,\n\t\tnewChildrenLength\n\t);\n\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\tchildVNode = newParentVNode._children[i];\n\t\tif (childVNode == NULL) continue;\n\n\t\t// At this point, constructNewChildrenArray has assigned _index to be the\n\t\t// matchingIndex for this VNode's oldVNode (or -1 if there is no oldVNode).\n\t\tif (childVNode._index == -1) {\n\t\t\toldVNode = EMPTY_OBJ;\n\t\t} else {\n\t\t\toldVNode = oldChildren[childVNode._index] || EMPTY_OBJ;\n\t\t}\n\n\t\t// Update childVNode._index to its final index\n\t\tchildVNode._index = i;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tlet result = diff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tnamespace,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\n\t\t// Adjust DOM nodes\n\t\tnewDom = childVNode._dom;\n\t\tif (childVNode.ref && oldVNode.ref != childVNode.ref) {\n\t\t\tif (oldVNode.ref) {\n\t\t\t\tapplyRef(oldVNode.ref, NULL, childVNode);\n\t\t\t}\n\t\t\trefQueue.push(\n\t\t\t\tchildVNode.ref,\n\t\t\t\tchildVNode._component || newDom,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t}\n\n\t\tif (firstChildDom == NULL && newDom != NULL) {\n\t\t\tfirstChildDom = newDom;\n\t\t}\n\n\t\tif (\n\t\t\tchildVNode._flags & INSERT_VNODE ||\n\t\t\toldVNode._children === childVNode._children\n\t\t) {\n\t\t\toldDom = insert(childVNode, oldDom, parentDom);\n\t\t} else if (typeof childVNode.type == 'function' && result !== UNDEFINED) {\n\t\t\toldDom = result;\n\t\t} else if (newDom) {\n\t\t\toldDom = newDom.nextSibling;\n\t\t}\n\n\t\t// Unset diffing flags\n\t\tchildVNode._flags &= ~(INSERT_VNODE | MATCHED);\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\treturn oldDom;\n}\n\n/**\n * @param {VNode} newParentVNode\n * @param {ComponentChildren[]} renderResult\n * @param {VNode[]} oldChildren\n */\nfunction constructNewChildrenArray(\n\tnewParentVNode,\n\trenderResult,\n\toldChildren,\n\toldDom,\n\tnewChildrenLength\n) {\n\t/** @type {number} */\n\tlet i;\n\t/** @type {VNode} */\n\tlet childVNode;\n\t/** @type {VNode} */\n\tlet oldVNode;\n\n\tlet oldChildrenLength = oldChildren.length,\n\t\tremainingOldChildren = oldChildrenLength;\n\n\tlet skew = 0;\n\n\tnewParentVNode._children = new Array(newChildrenLength);\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\t// @ts-expect-error We are reusing the childVNode variable to hold both the\n\t\t// pre and post normalized childVNode\n\t\tchildVNode = renderResult[i];\n\n\t\tif (\n\t\t\tchildVNode == NULL ||\n\t\t\ttypeof childVNode == 'boolean' ||\n\t\t\ttypeof childVNode == 'function'\n\t\t) {\n\t\t\tnewParentVNode._children[i] = NULL;\n\t\t\tcontinue;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. {reuse}{reuse}
) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint' ||\n\t\t\tchildVNode.constructor == String\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tNULL,\n\t\t\t\tchildVNode,\n\t\t\t\tNULL,\n\t\t\t\tNULL,\n\t\t\t\tNULL\n\t\t\t);\n\t\t} else if (isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tNULL,\n\t\t\t\tNULL,\n\t\t\t\tNULL\n\t\t\t);\n\t\t} else if (childVNode.constructor == UNDEFINED && childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t// const reuse =
\n\t\t\t// {reuse} {reuse}
\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : NULL,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\tconst skewedIndex = i + skew;\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t// Temporarily store the matchingIndex on the _index property so we can pull\n\t\t// out the oldVNode in diffChildren. We'll override this to the VNode's\n\t\t// final index after using this property to get the oldVNode\n\t\tconst matchingIndex = (childVNode._index = findMatchingIndex(\n\t\t\tchildVNode,\n\t\t\toldChildren,\n\t\t\tskewedIndex,\n\t\t\tremainingOldChildren\n\t\t));\n\n\t\toldVNode = NULL;\n\t\tif (matchingIndex != -1) {\n\t\t\toldVNode = oldChildren[matchingIndex];\n\t\t\tremainingOldChildren--;\n\t\t\tif (oldVNode) {\n\t\t\t\toldVNode._flags |= MATCHED;\n\t\t\t}\n\t\t}\n\n\t\t// Here, we define isMounting for the purposes of the skew diffing\n\t\t// algorithm. Nodes that are unsuspending are considered mounting and we detect\n\t\t// this by checking if oldVNode._original == null\n\t\tconst isMounting = oldVNode == NULL || oldVNode._original == NULL;\n\n\t\tif (isMounting) {\n\t\t\tif (matchingIndex == -1) {\n\t\t\t\t// When the array of children is growing we need to decrease the skew\n\t\t\t\t// as we are adding a new element to the array.\n\t\t\t\t// Example:\n\t\t\t\t// [1, 2, 3] --> [0, 1, 2, 3]\n\t\t\t\t// oldChildren newChildren\n\t\t\t\t//\n\t\t\t\t// The new element is at index 0, so our skew is 0,\n\t\t\t\t// we need to decrease the skew as we are adding a new element.\n\t\t\t\t// The decrease will cause us to compare the element at position 1\n\t\t\t\t// with value 1 with the element at position 0 with value 0.\n\t\t\t\t//\n\t\t\t\t// A linear concept is applied when the array is shrinking,\n\t\t\t\t// if the length is unchanged we can assume that no skew\n\t\t\t\t// changes are needed.\n\t\t\t\tif (newChildrenLength > oldChildrenLength) {\n\t\t\t\t\tskew--;\n\t\t\t\t} else if (newChildrenLength < oldChildrenLength) {\n\t\t\t\t\tskew++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If we are mounting a DOM VNode, mark it for insertion\n\t\t\tif (typeof childVNode.type != 'function') {\n\t\t\t\tchildVNode._flags |= INSERT_VNODE;\n\t\t\t}\n\t\t} else if (matchingIndex != skewedIndex) {\n\t\t\t// When we move elements around i.e. [0, 1, 2] --> [1, 0, 2]\n\t\t\t// --> we diff 1, we find it at position 1 while our skewed index is 0 and our skew is 0\n\t\t\t// we set the skew to 1 as we found an offset.\n\t\t\t// --> we diff 0, we find it at position 0 while our skewed index is at 2 and our skew is 1\n\t\t\t// this makes us increase the skew again.\n\t\t\t// --> we diff 2, we find it at position 2 while our skewed index is at 4 and our skew is 2\n\t\t\t//\n\t\t\t// this becomes an optimization question where currently we see a 1 element offset as an insertion\n\t\t\t// or deletion i.e. we optimize for [0, 1, 2] --> [9, 0, 1, 2]\n\t\t\t// while a more than 1 offset we see as a swap.\n\t\t\t// We could probably build heuristics for having an optimized course of action here as well, but\n\t\t\t// might go at the cost of some bytes.\n\t\t\t//\n\t\t\t// If we wanted to optimize for i.e. only swaps we'd just do the last two code-branches and have\n\t\t\t// only the first item be a re-scouting and all the others fall in their skewed counter-part.\n\t\t\t// We could also further optimize for swaps\n\t\t\tif (matchingIndex == skewedIndex - 1) {\n\t\t\t\tskew--;\n\t\t\t} else if (matchingIndex == skewedIndex + 1) {\n\t\t\t\tskew++;\n\t\t\t} else {\n\t\t\t\tif (matchingIndex > skewedIndex) {\n\t\t\t\t\tskew--;\n\t\t\t\t} else {\n\t\t\t\t\tskew++;\n\t\t\t\t}\n\n\t\t\t\t// Move this VNode's DOM if the original index (matchingIndex) doesn't\n\t\t\t\t// match the new skew index (i + new skew)\n\t\t\t\t// In the former two branches we know that it matches after skewing\n\t\t\t\tchildVNode._flags |= INSERT_VNODE;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove remaining oldChildren if there are any. Loop forwards so that as we\n\t// unmount DOM from the beginning of the oldChildren, we can adjust oldDom to\n\t// point to the next child, which needs to be the first DOM node that won't be\n\t// unmounted.\n\tif (remainingOldChildren) {\n\t\tfor (i = 0; i < oldChildrenLength; i++) {\n\t\t\toldVNode = oldChildren[i];\n\t\t\tif (oldVNode != NULL && (oldVNode._flags & MATCHED) == 0) {\n\t\t\t\tif (oldVNode._dom == oldDom) {\n\t\t\t\t\toldDom = getDomSibling(oldVNode);\n\t\t\t\t}\n\n\t\t\t\tunmount(oldVNode, oldVNode);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * @param {VNode} parentVNode\n * @param {PreactElement} oldDom\n * @param {PreactElement} parentDom\n * @returns {PreactElement}\n */\nfunction insert(parentVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\n\tif (typeof parentVNode.type == 'function') {\n\t\tlet children = parentVNode._children;\n\t\tfor (let i = 0; children && i < children.length; i++) {\n\t\t\tif (children[i]) {\n\t\t\t\t// If we enter this code path on sCU bailout, where we copy\n\t\t\t\t// oldVNode._children to newVNode._children, we need to update the old\n\t\t\t\t// children's _parent pointer to point to the newVNode (parentVNode\n\t\t\t\t// here).\n\t\t\t\tchildren[i]._parent = parentVNode;\n\t\t\t\toldDom = insert(children[i], oldDom, parentDom);\n\t\t\t}\n\t\t}\n\n\t\treturn oldDom;\n\t} else if (parentVNode._dom != oldDom) {\n\t\tif (oldDom && parentVNode.type && !parentDom.contains(oldDom)) {\n\t\t\toldDom = getDomSibling(parentVNode);\n\t\t}\n\t\tparentDom.insertBefore(parentVNode._dom, oldDom || NULL);\n\t\toldDom = parentVNode._dom;\n\t}\n\n\tdo {\n\t\toldDom = oldDom && oldDom.nextSibling;\n\t} while (oldDom != NULL && oldDom.nodeType == 8);\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {ComponentChildren} children The unflattened children of a virtual\n * node\n * @returns {VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == NULL || typeof children == 'boolean') {\n\t} else if (isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\n/**\n * @param {VNode} childVNode\n * @param {VNode[]} oldChildren\n * @param {number} skewedIndex\n * @param {number} remainingOldChildren\n * @returns {number}\n */\nfunction findMatchingIndex(\n\tchildVNode,\n\toldChildren,\n\tskewedIndex,\n\tremainingOldChildren\n) {\n\tconst key = childVNode.key;\n\tconst type = childVNode.type;\n\tlet oldVNode = oldChildren[skewedIndex];\n\n\t// We only need to perform a search if there are more children\n\t// (remainingOldChildren) to search. However, if the oldVNode we just looked\n\t// at skewedIndex was not already used in this diff, then there must be at\n\t// least 1 other (so greater than 1) remainingOldChildren to attempt to match\n\t// against. So the following condition checks that ensuring\n\t// remainingOldChildren > 1 if the oldVNode is not already used/matched. Else\n\t// if the oldVNode was null or matched, then there could needs to be at least\n\t// 1 (aka `remainingOldChildren > 0`) children to find and compare against.\n\t//\n\t// If there is an unkeyed functional VNode, that isn't a built-in like our Fragment,\n\t// we should not search as we risk re-using state of an unrelated VNode. (reverted for now)\n\tlet shouldSearch =\n\t\t// (typeof type != 'function' || type === Fragment || key) &&\n\t\tremainingOldChildren >\n\t\t(oldVNode != NULL && (oldVNode._flags & MATCHED) == 0 ? 1 : 0);\n\n\tif (\n\t\t(oldVNode === NULL && childVNode.key == null) ||\n\t\t(oldVNode &&\n\t\t\tkey == oldVNode.key &&\n\t\t\ttype == oldVNode.type &&\n\t\t\t(oldVNode._flags & MATCHED) == 0)\n\t) {\n\t\treturn skewedIndex;\n\t} else if (shouldSearch) {\n\t\tlet x = skewedIndex - 1;\n\t\tlet y = skewedIndex + 1;\n\t\twhile (x >= 0 || y < oldChildren.length) {\n\t\t\tif (x >= 0) {\n\t\t\t\toldVNode = oldChildren[x];\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\t(oldVNode._flags & MATCHED) == 0 &&\n\t\t\t\t\tkey == oldVNode.key &&\n\t\t\t\t\ttype == oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\treturn x;\n\t\t\t\t}\n\t\t\t\tx--;\n\t\t\t}\n\n\t\t\tif (y < oldChildren.length) {\n\t\t\t\toldVNode = oldChildren[y];\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\t(oldVNode._flags & MATCHED) == 0 &&\n\t\t\t\t\tkey == oldVNode.key &&\n\t\t\t\t\ttype == oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\treturn y;\n\t\t\t\t}\n\t\t\t\ty++;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn -1;\n}\n", "import {\n\tEMPTY_OBJ,\n\tMATH_NAMESPACE,\n\tMODE_HYDRATE,\n\tMODE_SUSPENDED,\n\tNULL,\n\tRESET_MODE,\n\tSVG_NAMESPACE,\n\tUNDEFINED,\n\tXHTML_NAMESPACE\n} from '../constants';\nimport { BaseComponent, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { setProperty } from './props';\nimport { assign, isArray, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * @typedef {import('../internal').ComponentChildren} ComponentChildren\n * @typedef {import('../internal').Component} Component\n * @typedef {import('../internal').PreactElement} PreactElement\n * @typedef {import('../internal').VNode} VNode\n */\n\n/**\n * @template {any} T\n * @typedef {import('../internal').Ref} Ref\n */\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {PreactElement} parentDom The parent of the DOM element\n * @param {VNode} newVNode The new virtual node\n * @param {VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by\n * getChildContext\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {PreactElement} oldDom The current attached DOM element any new dom\n * elements should be placed around. Likely `null` on first render (except when\n * hydrating). Can be a sibling DOM element when diffing Fragments that have\n * siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\t/** @type {any} */\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor != UNDEFINED) return NULL;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._flags & MODE_SUSPENDED) {\n\t\tisHydrating = !!(oldVNode._flags & MODE_HYDRATE);\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\touter: if (typeof newType == 'function') {\n\t\ttry {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\t\t\tconst isClassComponent =\n\t\t\t\t'prototype' in newType && newType.prototype.render;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif (isClassComponent) {\n\t\t\t\t\t// @ts-expect-error The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-expect-error Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new BaseComponent(\n\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (isClassComponent && c._nextState == NULL) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\n\t\t\tif (isClassComponent && newType.getDerivedStateFromProps != NULL) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\t\t\tc._vnode = newVNode;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tisClassComponent &&\n\t\t\t\t\tnewType.getDerivedStateFromProps == NULL &&\n\t\t\t\t\tc.componentWillMount != NULL\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (isClassComponent && c.componentDidMount != NULL) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tisClassComponent &&\n\t\t\t\t\tnewType.getDerivedStateFromProps == NULL &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != NULL\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != NULL &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\tnewVNode._original == oldVNode._original\n\t\t\t\t) {\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original != oldVNode._original) {\n\t\t\t\t\t\t// When we are dealing with a bail because of sCU we have to update\n\t\t\t\t\t\t// the props, state and dirty-state.\n\t\t\t\t\t\t// when we are dealing with strict-equality we don't as the child could still\n\t\t\t\t\t\t// be dirtied see #3883\n\t\t\t\t\t\tc.props = newProps;\n\t\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t\tc._dirty = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.some(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t\t}\n\t\t\t\t\tc._stateCallbacks = [];\n\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != NULL) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (isClassComponent && c.componentDidUpdate != NULL) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._parentDom = parentDom;\n\t\t\tc._force = false;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif (isClassComponent) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t}\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != NULL) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (isClassComponent && !isNew && c.getSnapshotBeforeUpdate != NULL) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != NULL && tmp.type === Fragment && tmp.key == NULL;\n\t\t\tlet renderResult = tmp;\n\n\t\t\tif (isTopLevelFragment) {\n\t\t\t\trenderResult = cloneNode(tmp.props.children);\n\t\t\t}\n\n\t\t\toldDom = diffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tisArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnamespace,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._flags &= RESET_MODE;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = NULL;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnewVNode._original = NULL;\n\t\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\t\tif (isHydrating || excessDomChildren != NULL) {\n\t\t\t\tif (e.then) {\n\t\t\t\t\tnewVNode._flags |= isHydrating\n\t\t\t\t\t\t? MODE_HYDRATE | MODE_SUSPENDED\n\t\t\t\t\t\t: MODE_SUSPENDED;\n\n\t\t\t\t\twhile (oldDom && oldDom.nodeType == 8 && oldDom.nextSibling) {\n\t\t\t\t\t\toldDom = oldDom.nextSibling;\n\t\t\t\t\t}\n\n\t\t\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = NULL;\n\t\t\t\t\tnewVNode._dom = oldDom;\n\t\t\t\t} else {\n\t\t\t\t\tfor (let i = excessDomChildren.length; i--; ) {\n\t\t\t\t\t\tremoveNode(excessDomChildren[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t}\n\t\t\toptions._catchError(e, newVNode, oldVNode);\n\t\t}\n\t} else if (\n\t\texcessDomChildren == NULL &&\n\t\tnewVNode._original == oldVNode._original\n\t) {\n\t\tnewVNode._children = oldVNode._children;\n\t\tnewVNode._dom = oldVNode._dom;\n\t} else {\n\t\toldDom = newVNode._dom = diffElementNodes(\n\t\t\toldVNode._dom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tnamespace,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\t}\n\n\tif ((tmp = options.diffed)) tmp(newVNode);\n\n\treturn newVNode._flags & MODE_SUSPENDED ? undefined : oldDom;\n}\n\n/**\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {VNode} root\n */\nexport function commitRoot(commitQueue, root, refQueue) {\n\tfor (let i = 0; i < refQueue.length; i++) {\n\t\tapplyRef(refQueue[i], refQueue[++i], refQueue[++i]);\n\t}\n\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-expect-error Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-expect-error See above comment on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\nfunction cloneNode(node) {\n\tif (\n\t\ttypeof node != 'object' ||\n\t\tnode == NULL ||\n\t\t(node._depth && node._depth > 0)\n\t) {\n\t\treturn node;\n\t}\n\n\tif (isArray(node)) {\n\t\treturn node.map(cloneNode);\n\t}\n\n\treturn assign({}, node);\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {PreactElement} dom The DOM element representing the virtual nodes\n * being diffed\n * @param {VNode} newVNode The new virtual node\n * @param {VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n * @returns {PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating,\n\trefQueue\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = /** @type {string} */ (newVNode.type);\n\t/** @type {any} */\n\tlet i;\n\t/** @type {{ __html?: string }} */\n\tlet newHtml;\n\t/** @type {{ __html?: string }} */\n\tlet oldHtml;\n\t/** @type {ComponentChildren} */\n\tlet newChildren;\n\tlet value;\n\tlet inputValue;\n\tlet checked;\n\n\t// Tracks entering and exiting namespaces when descending through the tree.\n\tif (nodeType == 'svg') namespace = SVG_NAMESPACE;\n\telse if (nodeType == 'math') namespace = MATH_NAMESPACE;\n\telse if (!namespace) namespace = XHTML_NAMESPACE;\n\n\tif (excessDomChildren != NULL) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tvalue = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tvalue &&\n\t\t\t\t'setAttribute' in value == !!nodeType &&\n\t\t\t\t(nodeType ? value.localName == nodeType : value.nodeType == 3)\n\t\t\t) {\n\t\t\t\tdom = value;\n\t\t\t\texcessDomChildren[i] = NULL;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == NULL) {\n\t\tif (nodeType == NULL) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = document.createElementNS(\n\t\t\tnamespace,\n\t\t\tnodeType,\n\t\t\tnewProps.is && newProps\n\t\t);\n\n\t\t// we are creating a new node, so we can assume this is a new subtree (in\n\t\t// case we are hydrating), this deopts the hydrate\n\t\tif (isHydrating) {\n\t\t\tif (options._hydrationMismatch)\n\t\t\t\toptions._hydrationMismatch(newVNode, excessDomChildren);\n\t\t\tisHydrating = false;\n\t\t}\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = NULL;\n\t}\n\n\tif (nodeType == NULL) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data != newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\t// If we are in a situation where we are not hydrating but are using\n\t\t// existing DOM (e.g. replaceNode) we should read the existing DOM\n\t\t// attributes to diff them\n\t\tif (!isHydrating && excessDomChildren != NULL) {\n\t\t\toldProps = {};\n\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\tvalue = dom.attributes[i];\n\t\t\t\toldProps[value.name] = value.value;\n\t\t\t}\n\t\t}\n\n\t\tfor (i in oldProps) {\n\t\t\tvalue = oldProps[i];\n\t\t\tif (i == 'children') {\n\t\t\t} else if (i == 'dangerouslySetInnerHTML') {\n\t\t\t\toldHtml = value;\n\t\t\t} else if (!(i in newProps)) {\n\t\t\t\tif (\n\t\t\t\t\t(i == 'value' && 'defaultValue' in newProps) ||\n\t\t\t\t\t(i == 'checked' && 'defaultChecked' in newProps)\n\t\t\t\t) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tsetProperty(dom, i, NULL, value, namespace);\n\t\t\t}\n\t\t}\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tfor (i in newProps) {\n\t\t\tvalue = newProps[i];\n\t\t\tif (i == 'children') {\n\t\t\t\tnewChildren = value;\n\t\t\t} else if (i == 'dangerouslySetInnerHTML') {\n\t\t\t\tnewHtml = value;\n\t\t\t} else if (i == 'value') {\n\t\t\t\tinputValue = value;\n\t\t\t} else if (i == 'checked') {\n\t\t\t\tchecked = value;\n\t\t\t} else if (\n\t\t\t\t(!isHydrating || typeof value == 'function') &&\n\t\t\t\toldProps[i] !== value\n\t\t\t) {\n\t\t\t\tsetProperty(dom, i, value, oldProps[i], namespace);\n\t\t\t}\n\t\t}\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\tif (\n\t\t\t\t!isHydrating &&\n\t\t\t\t(!oldHtml ||\n\t\t\t\t\t(newHtml.__html != oldHtml.__html && newHtml.__html != dom.innerHTML))\n\t\t\t) {\n\t\t\t\tdom.innerHTML = newHtml.__html;\n\t\t\t}\n\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\tif (oldHtml) dom.innerHTML = '';\n\n\t\t\tdiffChildren(\n\t\t\t\t// @ts-expect-error\n\t\t\t\tnewVNode.type == 'template' ? dom.content : dom,\n\t\t\t\tisArray(newChildren) ? newChildren : [newChildren],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnodeType == 'foreignObject' ? XHTML_NAMESPACE : namespace,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != NULL) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tremoveNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// As above, don't diff props during hydration\n\t\tif (!isHydrating) {\n\t\t\ti = 'value';\n\t\t\tif (nodeType == 'progress' && inputValue == NULL) {\n\t\t\t\tdom.removeAttribute('value');\n\t\t\t} else if (\n\t\t\t\tinputValue != UNDEFINED &&\n\t\t\t\t// #2756 For the -element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(inputValue !== dom[i] ||\n\t\t\t\t\t(nodeType == 'progress' && !inputValue) ||\n\t\t\t\t\t// This is only for IE 11 to fix value not being updated.\n\t\t\t\t\t// To avoid a stale select value we need to set the option.value\n\t\t\t\t\t// again, which triggers IE11 to re-evaluate the select value\n\t\t\t\t\t(nodeType == 'option' && inputValue != oldProps[i]))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, i, inputValue, oldProps[i], namespace);\n\t\t\t}\n\n\t\t\ti = 'checked';\n\t\t\tif (checked != UNDEFINED && checked != dom[i]) {\n\t\t\t\tsetProperty(dom, i, checked, oldProps[i], namespace);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {Ref & { _unmount?: unknown }} ref\n * @param {any} value\n * @param {VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') {\n\t\t\tlet hasRefUnmount = typeof ref._unmount == 'function';\n\t\t\tif (hasRefUnmount) {\n\t\t\t\t// @ts-ignore TS doesn't like moving narrowing checks into variables\n\t\t\t\tref._unmount();\n\t\t\t}\n\n\t\t\tif (!hasRefUnmount || value != NULL) {\n\t\t\t\t// Store the cleanup function on the function\n\t\t\t\t// instance object itself to avoid shape\n\t\t\t\t// transitioning vnode\n\t\t\t\tref._unmount = ref(value);\n\t\t\t}\n\t\t} else ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {VNode} vnode The virtual node to unmount\n * @param {VNode} parentVNode The parent of the VNode that initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current == vnode._dom) {\n\t\t\tapplyRef(r, NULL, parentVNode);\n\t\t}\n\t}\n\n\tif ((r = vnode._component) != NULL) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = NULL;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(\n\t\t\t\t\tr[i],\n\t\t\t\t\tparentVNode,\n\t\t\t\t\tskipRemove || typeof vnode.type != 'function'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove) {\n\t\tremoveNode(vnode._dom);\n\t}\n\n\tvnode._component = vnode._parent = vnode._dom = UNDEFINED;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n", "import { EMPTY_OBJ, NULL } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\nimport { slice } from './util';\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to render into\n * @param {import('./internal').PreactElement | object} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\t// https://github.com/preactjs/preact/issues/3794\n\tif (parentDom == document) {\n\t\tparentDom = document.documentElement;\n\t}\n\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we are in\n\t// hydration mode or not by passing the `hydrate` function instead of a DOM\n\t// element..\n\tlet isHydrating = typeof replaceNode == 'function';\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? NULL\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\n\tvnode = ((!isHydrating && replaceNode) || parentDom)._children =\n\t\tcreateElement(Fragment, NULL, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [],\n\t\trefQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\tvnode,\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.namespaceURI,\n\t\t!isHydrating && replaceNode\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t\t? NULL\n\t\t\t\t: parentDom.firstChild\n\t\t\t\t\t? slice.call(parentDom.childNodes)\n\t\t\t\t\t: NULL,\n\t\tcommitQueue,\n\t\t!isHydrating && replaceNode\n\t\t\t? replaceNode\n\t\t\t: oldVNode\n\t\t\t\t? oldVNode._dom\n\t\t\t\t: parentDom.firstChild,\n\t\tisHydrating,\n\t\trefQueue\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode, refQueue);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, hydrate);\n}\n", "import { assign, slice } from './util';\nimport { createVNode } from './create-element';\nimport { NULL, UNDEFINED } from './constants';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its\n * children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array} rest Any additional arguments will be used\n * as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\n\tlet defaultProps;\n\n\tif (vnode.type && vnode.type.defaultProps) {\n\t\tdefaultProps = vnode.type.defaultProps;\n\t}\n\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse if (props[i] == UNDEFINED && defaultProps != UNDEFINED) {\n\t\t\tnormalizedProps[i] = defaultProps[i];\n\t\t} else {\n\t\t\tnormalizedProps[i] = props[i];\n\t\t}\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tNULL\n\t);\n}\n", "import { NULL } from '../constants';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw the error that was caught (except\n * for unmounting when this parameter is the highest parent that was being\n * unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component,\n\t\t/** @type {import('../internal').ComponentType} */\n\t\tctor,\n\t\t/** @type {boolean} */\n\t\thandled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != NULL) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != NULL) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n"],
+ "mappings": "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",
+ "names": ["slice", "options", "vnodeId", "isValidElement", "rerenderQueue", "prevDebounce", "defer", "depthSort", "CAPTURE_REGEX", "eventClock", "eventProxy", "eventProxyCapture", "i", "EMPTY_OBJ", "EMPTY_ARR", "IS_NON_DIMENSIONAL", "isArray", "Array", "assign", "obj", "props", "removeNode", "node", "parentNode", "removeChild", "createElement", "type", "children", "key", "ref", "normalizedProps", "arguments", "length", "call", "defaultProps", "undefined", "createVNode", "original", "vnode", "__k", "__", "__b", "__e", "__c", "constructor", "__v", "__i", "__u", "createRef", "current", "Fragment", "BaseComponent", "context", "this", "getDomSibling", "childIndex", "sibling", "updateParentDomPointers", "child", "base", "enqueueRender", "c", "__d", "push", "process", "__r", "debounceRendering", "component", "newVNode", "oldVNode", "oldDom", "commitQueue", "refQueue", "l", "sort", "shift", "__P", "diff", "__n", "namespaceURI", "commitRoot", "diffChildren", "parentDom", "renderResult", "newParentVNode", "oldParentVNode", "globalContext", "namespace", "excessDomChildren", "isHydrating", "childVNode", "newDom", "firstChildDom", "result", "oldChildren", "newChildrenLength", "constructNewChildrenArray", "applyRef", "insert", "nextSibling", "skewedIndex", "matchingIndex", "oldChildrenLength", "remainingOldChildren", "skew", "String", "findMatchingIndex", "unmount", "parentVNode", "contains", "insertBefore", "nodeType", "toChildArray", "out", "some", "x", "y", "setStyle", "style", "value", "setProperty", "test", "dom", "name", "oldValue", "useCapture", "o", "cssText", "replace", "toLowerCase", "_attached", "addEventListener", "removeEventListener", "e", "removeAttribute", "setAttribute", "createEventProxy", "eventHandler", "_dispatched", "event", "tmp", "isNew", "oldProps", "oldState", "snapshot", "clearProcessingException", "newProps", "isClassComponent", "provider", "componentContext", "renderHook", "count", "newType", "outer", "prototype", "render", "contextType", "__E", "doRender", "sub", "state", "__h", "_sb", "__s", "getDerivedStateFromProps", "componentWillMount", "componentDidMount", "componentWillReceiveProps", "shouldComponentUpdate", "componentWillUpdate", "componentDidUpdate", "getChildContext", "getSnapshotBeforeUpdate", "cloneNode", "then", "MODE_HYDRATE", "indexOf", "diffElementNodes", "diffed", "root", "cb", "map", "newHtml", "oldHtml", "newChildren", "inputValue", "checked", "localName", "document", "createTextNode", "createElementNS", "is", "__m", "data", "childNodes", "attributes", "__html", "innerHTML", "content", "hasRefUnmount", "skipRemove", "r", "componentWillUnmount", "replaceNode", "documentElement", "firstChild", "hydrate", "cloneElement", "createContext", "defaultValue", "Context", "subs", "ctx", "Set", "_props", "forEach", "add", "old", "delete", "Provider", "__l", "Consumer", "contextValue", "error", "errorInfo", "ctor", "handled", "getDerivedStateFromError", "setState", "componentDidCatch", "update", "callback", "s", "forceUpdate", "Promise", "bind", "resolve", "setTimeout", "a", "b"]
+}
diff --git a/.vite/deps/chunk-XLOWEJT4.js b/.vite/deps/chunk-XLOWEJT4.js
new file mode 100644
index 0000000..f2d7278
--- /dev/null
+++ b/.vite/deps/chunk-XLOWEJT4.js
@@ -0,0 +1,493 @@
+// node_modules/swiper/shared/ssr-window.esm.mjs
+function isObject(obj) {
+ return obj !== null && typeof obj === "object" && "constructor" in obj && obj.constructor === Object;
+}
+function extend(target, src) {
+ if (target === void 0) {
+ target = {};
+ }
+ if (src === void 0) {
+ src = {};
+ }
+ const noExtend = ["__proto__", "constructor", "prototype"];
+ Object.keys(src).filter((key) => noExtend.indexOf(key) < 0).forEach((key) => {
+ if (typeof target[key] === "undefined") target[key] = src[key];
+ else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {
+ extend(target[key], src[key]);
+ }
+ });
+}
+var ssrDocument = {
+ body: {},
+ addEventListener() {
+ },
+ removeEventListener() {
+ },
+ activeElement: {
+ blur() {
+ },
+ nodeName: ""
+ },
+ querySelector() {
+ return null;
+ },
+ querySelectorAll() {
+ return [];
+ },
+ getElementById() {
+ return null;
+ },
+ createEvent() {
+ return {
+ initEvent() {
+ }
+ };
+ },
+ createElement() {
+ return {
+ children: [],
+ childNodes: [],
+ style: {},
+ setAttribute() {
+ },
+ getElementsByTagName() {
+ return [];
+ }
+ };
+ },
+ createElementNS() {
+ return {};
+ },
+ importNode() {
+ return null;
+ },
+ location: {
+ hash: "",
+ host: "",
+ hostname: "",
+ href: "",
+ origin: "",
+ pathname: "",
+ protocol: "",
+ search: ""
+ }
+};
+function getDocument() {
+ const doc = typeof document !== "undefined" ? document : {};
+ extend(doc, ssrDocument);
+ return doc;
+}
+var ssrWindow = {
+ document: ssrDocument,
+ navigator: {
+ userAgent: ""
+ },
+ location: {
+ hash: "",
+ host: "",
+ hostname: "",
+ href: "",
+ origin: "",
+ pathname: "",
+ protocol: "",
+ search: ""
+ },
+ history: {
+ replaceState() {
+ },
+ pushState() {
+ },
+ go() {
+ },
+ back() {
+ }
+ },
+ CustomEvent: function CustomEvent() {
+ return this;
+ },
+ addEventListener() {
+ },
+ removeEventListener() {
+ },
+ getComputedStyle() {
+ return {
+ getPropertyValue() {
+ return "";
+ }
+ };
+ },
+ Image() {
+ },
+ Date() {
+ },
+ screen: {},
+ setTimeout() {
+ },
+ clearTimeout() {
+ },
+ matchMedia() {
+ return {};
+ },
+ requestAnimationFrame(callback) {
+ if (typeof setTimeout === "undefined") {
+ callback();
+ return null;
+ }
+ return setTimeout(callback, 0);
+ },
+ cancelAnimationFrame(id) {
+ if (typeof setTimeout === "undefined") {
+ return;
+ }
+ clearTimeout(id);
+ }
+};
+function getWindow() {
+ const win = typeof window !== "undefined" ? window : {};
+ extend(win, ssrWindow);
+ return win;
+}
+
+// node_modules/swiper/shared/utils.mjs
+function classesToTokens(classes) {
+ if (classes === void 0) {
+ classes = "";
+ }
+ return classes.trim().split(" ").filter((c) => !!c.trim());
+}
+function deleteProps(obj) {
+ const object = obj;
+ Object.keys(object).forEach((key) => {
+ try {
+ object[key] = null;
+ } catch (e) {
+ }
+ try {
+ delete object[key];
+ } catch (e) {
+ }
+ });
+}
+function nextTick(callback, delay) {
+ if (delay === void 0) {
+ delay = 0;
+ }
+ return setTimeout(callback, delay);
+}
+function now() {
+ return Date.now();
+}
+function getComputedStyle(el) {
+ const window2 = getWindow();
+ let style;
+ if (window2.getComputedStyle) {
+ style = window2.getComputedStyle(el, null);
+ }
+ if (!style && el.currentStyle) {
+ style = el.currentStyle;
+ }
+ if (!style) {
+ style = el.style;
+ }
+ return style;
+}
+function getTranslate(el, axis) {
+ if (axis === void 0) {
+ axis = "x";
+ }
+ const window2 = getWindow();
+ let matrix;
+ let curTransform;
+ let transformMatrix;
+ const curStyle = getComputedStyle(el);
+ if (window2.WebKitCSSMatrix) {
+ curTransform = curStyle.transform || curStyle.webkitTransform;
+ if (curTransform.split(",").length > 6) {
+ curTransform = curTransform.split(", ").map((a) => a.replace(",", ".")).join(", ");
+ }
+ transformMatrix = new window2.WebKitCSSMatrix(curTransform === "none" ? "" : curTransform);
+ } else {
+ transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue("transform").replace("translate(", "matrix(1, 0, 0, 1,");
+ matrix = transformMatrix.toString().split(",");
+ }
+ if (axis === "x") {
+ if (window2.WebKitCSSMatrix) curTransform = transformMatrix.m41;
+ else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);
+ else curTransform = parseFloat(matrix[4]);
+ }
+ if (axis === "y") {
+ if (window2.WebKitCSSMatrix) curTransform = transformMatrix.m42;
+ else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);
+ else curTransform = parseFloat(matrix[5]);
+ }
+ return curTransform || 0;
+}
+function isObject2(o) {
+ return typeof o === "object" && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === "Object";
+}
+function isNode(node) {
+ if (typeof window !== "undefined" && typeof window.HTMLElement !== "undefined") {
+ return node instanceof HTMLElement;
+ }
+ return node && (node.nodeType === 1 || node.nodeType === 11);
+}
+function extend2() {
+ const to = Object(arguments.length <= 0 ? void 0 : arguments[0]);
+ const noExtend = ["__proto__", "constructor", "prototype"];
+ for (let i = 1; i < arguments.length; i += 1) {
+ const nextSource = i < 0 || arguments.length <= i ? void 0 : arguments[i];
+ if (nextSource !== void 0 && nextSource !== null && !isNode(nextSource)) {
+ const keysArray = Object.keys(Object(nextSource)).filter((key) => noExtend.indexOf(key) < 0);
+ for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
+ const nextKey = keysArray[nextIndex];
+ const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
+ if (desc !== void 0 && desc.enumerable) {
+ if (isObject2(to[nextKey]) && isObject2(nextSource[nextKey])) {
+ if (nextSource[nextKey].__swiper__) {
+ to[nextKey] = nextSource[nextKey];
+ } else {
+ extend2(to[nextKey], nextSource[nextKey]);
+ }
+ } else if (!isObject2(to[nextKey]) && isObject2(nextSource[nextKey])) {
+ to[nextKey] = {};
+ if (nextSource[nextKey].__swiper__) {
+ to[nextKey] = nextSource[nextKey];
+ } else {
+ extend2(to[nextKey], nextSource[nextKey]);
+ }
+ } else {
+ to[nextKey] = nextSource[nextKey];
+ }
+ }
+ }
+ }
+ }
+ return to;
+}
+function setCSSProperty(el, varName, varValue) {
+ el.style.setProperty(varName, varValue);
+}
+function animateCSSModeScroll(_ref) {
+ let {
+ swiper,
+ targetPosition,
+ side
+ } = _ref;
+ const window2 = getWindow();
+ const startPosition = -swiper.translate;
+ let startTime = null;
+ let time;
+ const duration = swiper.params.speed;
+ swiper.wrapperEl.style.scrollSnapType = "none";
+ window2.cancelAnimationFrame(swiper.cssModeFrameID);
+ const dir = targetPosition > startPosition ? "next" : "prev";
+ const isOutOfBound = (current, target) => {
+ return dir === "next" && current >= target || dir === "prev" && current <= target;
+ };
+ const animate = () => {
+ time = (/* @__PURE__ */ new Date()).getTime();
+ if (startTime === null) {
+ startTime = time;
+ }
+ const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);
+ const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;
+ let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);
+ if (isOutOfBound(currentPosition, targetPosition)) {
+ currentPosition = targetPosition;
+ }
+ swiper.wrapperEl.scrollTo({
+ [side]: currentPosition
+ });
+ if (isOutOfBound(currentPosition, targetPosition)) {
+ swiper.wrapperEl.style.overflow = "hidden";
+ swiper.wrapperEl.style.scrollSnapType = "";
+ setTimeout(() => {
+ swiper.wrapperEl.style.overflow = "";
+ swiper.wrapperEl.scrollTo({
+ [side]: currentPosition
+ });
+ });
+ window2.cancelAnimationFrame(swiper.cssModeFrameID);
+ return;
+ }
+ swiper.cssModeFrameID = window2.requestAnimationFrame(animate);
+ };
+ animate();
+}
+function getSlideTransformEl(slideEl) {
+ return slideEl.querySelector(".swiper-slide-transform") || slideEl.shadowRoot && slideEl.shadowRoot.querySelector(".swiper-slide-transform") || slideEl;
+}
+function elementChildren(element, selector) {
+ if (selector === void 0) {
+ selector = "";
+ }
+ const window2 = getWindow();
+ const children = [...element.children];
+ if (window2.HTMLSlotElement && element instanceof HTMLSlotElement) {
+ children.push(...element.assignedElements());
+ }
+ if (!selector) {
+ return children;
+ }
+ return children.filter((el) => el.matches(selector));
+}
+function elementIsChildOfSlot(el, slot) {
+ const elementsQueue = [slot];
+ while (elementsQueue.length > 0) {
+ const elementToCheck = elementsQueue.shift();
+ if (el === elementToCheck) {
+ return true;
+ }
+ elementsQueue.push(...elementToCheck.children, ...elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : [], ...elementToCheck.assignedElements ? elementToCheck.assignedElements() : []);
+ }
+}
+function elementIsChildOf(el, parent) {
+ const window2 = getWindow();
+ let isChild = parent.contains(el);
+ if (!isChild && window2.HTMLSlotElement && parent instanceof HTMLSlotElement) {
+ const children = [...parent.assignedElements()];
+ isChild = children.includes(el);
+ if (!isChild) {
+ isChild = elementIsChildOfSlot(el, parent);
+ }
+ }
+ return isChild;
+}
+function showWarning(text) {
+ try {
+ console.warn(text);
+ return;
+ } catch (err) {
+ }
+}
+function createElement(tag, classes) {
+ if (classes === void 0) {
+ classes = [];
+ }
+ const el = document.createElement(tag);
+ el.classList.add(...Array.isArray(classes) ? classes : classesToTokens(classes));
+ return el;
+}
+function elementOffset(el) {
+ const window2 = getWindow();
+ const document2 = getDocument();
+ const box = el.getBoundingClientRect();
+ const body = document2.body;
+ const clientTop = el.clientTop || body.clientTop || 0;
+ const clientLeft = el.clientLeft || body.clientLeft || 0;
+ const scrollTop = el === window2 ? window2.scrollY : el.scrollTop;
+ const scrollLeft = el === window2 ? window2.scrollX : el.scrollLeft;
+ return {
+ top: box.top + scrollTop - clientTop,
+ left: box.left + scrollLeft - clientLeft
+ };
+}
+function elementPrevAll(el, selector) {
+ const prevEls = [];
+ while (el.previousElementSibling) {
+ const prev = el.previousElementSibling;
+ if (selector) {
+ if (prev.matches(selector)) prevEls.push(prev);
+ } else prevEls.push(prev);
+ el = prev;
+ }
+ return prevEls;
+}
+function elementNextAll(el, selector) {
+ const nextEls = [];
+ while (el.nextElementSibling) {
+ const next = el.nextElementSibling;
+ if (selector) {
+ if (next.matches(selector)) nextEls.push(next);
+ } else nextEls.push(next);
+ el = next;
+ }
+ return nextEls;
+}
+function elementStyle(el, prop) {
+ const window2 = getWindow();
+ return window2.getComputedStyle(el, null).getPropertyValue(prop);
+}
+function elementIndex(el) {
+ let child = el;
+ let i;
+ if (child) {
+ i = 0;
+ while ((child = child.previousSibling) !== null) {
+ if (child.nodeType === 1) i += 1;
+ }
+ return i;
+ }
+ return void 0;
+}
+function elementParents(el, selector) {
+ const parents = [];
+ let parent = el.parentElement;
+ while (parent) {
+ if (selector) {
+ if (parent.matches(selector)) parents.push(parent);
+ } else {
+ parents.push(parent);
+ }
+ parent = parent.parentElement;
+ }
+ return parents;
+}
+function elementTransitionEnd(el, callback) {
+ function fireCallBack(e) {
+ if (e.target !== el) return;
+ callback.call(el, e);
+ el.removeEventListener("transitionend", fireCallBack);
+ }
+ if (callback) {
+ el.addEventListener("transitionend", fireCallBack);
+ }
+}
+function elementOuterSize(el, size, includeMargins) {
+ const window2 = getWindow();
+ if (includeMargins) {
+ return el[size === "width" ? "offsetWidth" : "offsetHeight"] + parseFloat(window2.getComputedStyle(el, null).getPropertyValue(size === "width" ? "margin-right" : "margin-top")) + parseFloat(window2.getComputedStyle(el, null).getPropertyValue(size === "width" ? "margin-left" : "margin-bottom"));
+ }
+ return el.offsetWidth;
+}
+function makeElementsArray(el) {
+ return (Array.isArray(el) ? el : [el]).filter((e) => !!e);
+}
+function getRotateFix(swiper) {
+ return (v) => {
+ if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {
+ return v + 1e-3;
+ }
+ return v;
+ };
+}
+
+export {
+ getDocument,
+ getWindow,
+ classesToTokens,
+ deleteProps,
+ nextTick,
+ now,
+ getTranslate,
+ isObject2 as isObject,
+ extend2 as extend,
+ setCSSProperty,
+ animateCSSModeScroll,
+ getSlideTransformEl,
+ elementChildren,
+ elementIsChildOf,
+ showWarning,
+ createElement,
+ elementOffset,
+ elementPrevAll,
+ elementNextAll,
+ elementStyle,
+ elementIndex,
+ elementParents,
+ elementTransitionEnd,
+ elementOuterSize,
+ makeElementsArray,
+ getRotateFix
+};
+//# sourceMappingURL=chunk-XLOWEJT4.js.map
diff --git a/.vite/deps/chunk-XLOWEJT4.js.map b/.vite/deps/chunk-XLOWEJT4.js.map
new file mode 100644
index 0000000..9591e1f
--- /dev/null
+++ b/.vite/deps/chunk-XLOWEJT4.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/swiper/shared/ssr-window.esm.mjs", "../../node_modules/swiper/shared/utils.mjs"],
+ "sourcesContent": ["/**\n * SSR Window 5.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2025, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 12, 2025\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n", "import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n const window = getWindow();\n const children = [...element.children];\n if (window.HTMLSlotElement && element instanceof HTMLSlotElement) {\n children.push(...element.assignedElements());\n }\n if (!selector) {\n return children;\n }\n return children.filter(el => el.matches(selector));\n}\nfunction elementIsChildOfSlot(el, slot) {\n // Breadth-first search through all parent's children and assigned elements\n const elementsQueue = [slot];\n while (elementsQueue.length > 0) {\n const elementToCheck = elementsQueue.shift();\n if (el === elementToCheck) {\n return true;\n }\n elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : []), ...(elementToCheck.assignedElements ? elementToCheck.assignedElements() : []));\n }\n}\nfunction elementIsChildOf(el, parent) {\n const window = getWindow();\n let isChild = parent.contains(el);\n if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) {\n const children = [...parent.assignedElements()];\n isChild = children.includes(el);\n if (!isChild) {\n isChild = elementIsChildOfSlot(el, parent);\n }\n }\n return isChild;\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\nfunction getRotateFix(swiper) {\n return v => {\n if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {\n return v + 0.001;\n }\n return v;\n };\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, getSlideTransformEl as g, elementIndex as h, classesToTokens as i, getTranslate as j, elementTransitionEnd as k, isObject as l, makeElementsArray as m, nextTick as n, getRotateFix as o, elementStyle as p, elementNextAll as q, elementPrevAll as r, setCSSProperty as s, animateCSSModeScroll as t, showWarning as u, elementIsChildOf as v, extend as w, deleteProps as x };\n"],
+ "mappings": "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",
+ "names": ["window", "isObject", "extend", "document"]
+}
diff --git a/.vite/deps/package.json b/.vite/deps/package.json
new file mode 100644
index 0000000..3dbc1ca
--- /dev/null
+++ b/.vite/deps/package.json
@@ -0,0 +1,3 @@
+{
+ "type": "module"
+}
diff --git a/.vite/deps/preact-iso.js b/.vite/deps/preact-iso.js
new file mode 100644
index 0000000..bc81c46
--- /dev/null
+++ b/.vite/deps/preact-iso.js
@@ -0,0 +1,430 @@
+import {
+ E,
+ G,
+ H,
+ J,
+ K,
+ _,
+ l
+} from "./chunk-WFLWNDNR.js";
+import "./chunk-5WRI5ZAA.js";
+
+// node_modules/preact/hooks/dist/hooks.module.js
+var t;
+var r;
+var u;
+var i;
+var o = 0;
+var f = [];
+var c = l;
+var e = c.__b;
+var a = c.__r;
+var v = c.diffed;
+var l2 = c.__c;
+var m = c.unmount;
+var s = c.__;
+function p(n, t2) {
+ c.__h && c.__h(r, n, o || t2), o = 0;
+ var u2 = r.__H || (r.__H = { __: [], __h: [] });
+ return n >= u2.__.length && u2.__.push({}), u2.__[n];
+}
+function d(n) {
+ return o = 1, h(D, n);
+}
+function h(n, u2, i2) {
+ var o2 = p(t++, 2);
+ if (o2.t = n, !o2.__c && (o2.__ = [i2 ? i2(u2) : D(void 0, u2), function(n2) {
+ var t2 = o2.__N ? o2.__N[0] : o2.__[0], r2 = o2.t(t2, n2);
+ t2 !== r2 && (o2.__N = [r2, o2.__[1]], o2.__c.setState({}));
+ }], o2.__c = r, !r.__f)) {
+ var f2 = function(n2, t2, r2) {
+ if (!o2.__c.__H) return true;
+ var u3 = o2.__c.__H.__.filter(function(n3) {
+ return !!n3.__c;
+ });
+ if (u3.every(function(n3) {
+ return !n3.__N;
+ })) return !c2 || c2.call(this, n2, t2, r2);
+ var i3 = o2.__c.props !== n2;
+ return u3.forEach(function(n3) {
+ if (n3.__N) {
+ var t3 = n3.__[0];
+ n3.__ = n3.__N, n3.__N = void 0, t3 !== n3.__[0] && (i3 = true);
+ }
+ }), c2 && c2.call(this, n2, t2, r2) || i3;
+ };
+ r.__f = true;
+ var c2 = r.shouldComponentUpdate, e2 = r.componentWillUpdate;
+ r.componentWillUpdate = function(n2, t2, r2) {
+ if (this.__e) {
+ var u3 = c2;
+ c2 = void 0, f2(n2, t2, r2), c2 = u3;
+ }
+ e2 && e2.call(this, n2, t2, r2);
+ }, r.shouldComponentUpdate = f2;
+ }
+ return o2.__N || o2.__;
+}
+function _2(n, u2) {
+ var i2 = p(t++, 4);
+ !c.__s && C(i2.__H, u2) && (i2.__ = n, i2.u = u2, r.__h.push(i2));
+}
+function A(n) {
+ return o = 5, T(function() {
+ return { current: n };
+ }, []);
+}
+function T(n, r2) {
+ var u2 = p(t++, 7);
+ return C(u2.__H, r2) && (u2.__ = n(), u2.__H = r2, u2.__h = n), u2.__;
+}
+function x(n) {
+ var u2 = r.context[n.__c], i2 = p(t++, 9);
+ return i2.c = n, u2 ? (null == i2.__ && (i2.__ = true, u2.sub(r)), u2.props.value) : n.__;
+}
+function j() {
+ for (var n; n = f.shift(); ) if (n.__P && n.__H) try {
+ n.__H.__h.forEach(z), n.__H.__h.forEach(B), n.__H.__h = [];
+ } catch (t2) {
+ n.__H.__h = [], c.__e(t2, n.__v);
+ }
+}
+c.__b = function(n) {
+ r = null, e && e(n);
+}, c.__ = function(n, t2) {
+ n && t2.__k && t2.__k.__m && (n.__m = t2.__k.__m), s && s(n, t2);
+}, c.__r = function(n) {
+ a && a(n), t = 0;
+ var i2 = (r = n.__c).__H;
+ i2 && (u === r ? (i2.__h = [], r.__h = [], i2.__.forEach(function(n2) {
+ n2.__N && (n2.__ = n2.__N), n2.u = n2.__N = void 0;
+ })) : (i2.__h.forEach(z), i2.__h.forEach(B), i2.__h = [], t = 0)), u = r;
+}, c.diffed = function(n) {
+ v && v(n);
+ var t2 = n.__c;
+ t2 && t2.__H && (t2.__H.__h.length && (1 !== f.push(t2) && i === c.requestAnimationFrame || ((i = c.requestAnimationFrame) || w)(j)), t2.__H.__.forEach(function(n2) {
+ n2.u && (n2.__H = n2.u), n2.u = void 0;
+ })), u = r = null;
+}, c.__c = function(n, t2) {
+ t2.some(function(n2) {
+ try {
+ n2.__h.forEach(z), n2.__h = n2.__h.filter(function(n3) {
+ return !n3.__ || B(n3);
+ });
+ } catch (r2) {
+ t2.some(function(n3) {
+ n3.__h && (n3.__h = []);
+ }), t2 = [], c.__e(r2, n2.__v);
+ }
+ }), l2 && l2(n, t2);
+}, c.unmount = function(n) {
+ m && m(n);
+ var t2, r2 = n.__c;
+ r2 && r2.__H && (r2.__H.__.forEach(function(n2) {
+ try {
+ z(n2);
+ } catch (n3) {
+ t2 = n3;
+ }
+ }), r2.__H = void 0, t2 && c.__e(t2, r2.__v));
+};
+var k = "function" == typeof requestAnimationFrame;
+function w(n) {
+ var t2, r2 = function() {
+ clearTimeout(u2), k && cancelAnimationFrame(t2), setTimeout(n);
+ }, u2 = setTimeout(r2, 100);
+ k && (t2 = requestAnimationFrame(r2));
+}
+function z(n) {
+ var t2 = r, u2 = n.__c;
+ "function" == typeof u2 && (n.__c = void 0, u2()), r = t2;
+}
+function B(n) {
+ var t2 = r;
+ n.__c = n.__(), r = t2;
+}
+function C(n, t2) {
+ return !n || n.length !== t2.length || t2.some(function(t3, r2) {
+ return t3 !== n[r2];
+ });
+}
+function D(n, t2) {
+ return "function" == typeof t2 ? t2(n) : t2;
+}
+
+// node_modules/preact-iso/src/router.js
+var push;
+var scope;
+var UPDATE = (state, url) => {
+ push = void 0;
+ if (url && url.type === "click") {
+ if (url.ctrlKey || url.metaKey || url.altKey || url.shiftKey || url.button !== 0) {
+ return state;
+ }
+ const link = url.target.closest("a[href]"), href = link && link.getAttribute("href");
+ if (!link || link.origin != location.origin || /^#/.test(href) || !/^(_?self)?$/i.test(link.target) || scope && (typeof scope == "string" ? !href.startsWith(scope) : !scope.test(href))) {
+ return state;
+ }
+ push = true;
+ url.preventDefault();
+ url = link.href.replace(location.origin, "");
+ } else if (typeof url === "string") {
+ push = true;
+ } else if (url && url.url) {
+ push = !url.replace;
+ url = url.url;
+ } else {
+ url = location.pathname + location.search;
+ }
+ if (push === true) history.pushState(null, "", url);
+ else if (push === false) history.replaceState(null, "", url);
+ return url;
+};
+var exec = (url, route, matches = {}) => {
+ url = url.split("/").filter(Boolean);
+ route = (route || "").split("/").filter(Boolean);
+ if (!matches.params) matches.params = {};
+ for (let i2 = 0, val, rest; i2 < Math.max(url.length, route.length); i2++) {
+ let [, m2, param, flag] = (route[i2] || "").match(/^(:?)(.*?)([+*?]?)$/);
+ val = url[i2];
+ if (!m2 && param == val) continue;
+ if (!m2 && val && flag == "*") {
+ matches.rest = "/" + url.slice(i2).map(decodeURIComponent).join("/");
+ break;
+ }
+ if (!m2 || !val && flag != "?" && flag != "*") return;
+ rest = flag == "+" || flag == "*";
+ if (rest) val = url.slice(i2).map(decodeURIComponent).join("/") || void 0;
+ else if (val) val = decodeURIComponent(val);
+ matches.params[param] = val;
+ if (!(param in matches)) matches[param] = val;
+ if (rest) break;
+ }
+ return matches;
+};
+function LocationProvider(props) {
+ const [url, route] = h(UPDATE, props.url || location.pathname + location.search);
+ if (props.scope) scope = props.scope;
+ const wasPush = push === true;
+ const value = T(() => {
+ const u2 = new URL(url, location.origin);
+ const path = u2.pathname.replace(/\/+$/g, "") || "/";
+ return {
+ url,
+ path,
+ query: Object.fromEntries(u2.searchParams),
+ route: (url2, replace) => route({ url: url2, replace }),
+ wasPush
+ };
+ }, [url]);
+ _2(() => {
+ addEventListener("click", route);
+ addEventListener("popstate", route);
+ return () => {
+ removeEventListener("click", route);
+ removeEventListener("popstate", route);
+ };
+ }, []);
+ return _(LocationProvider.ctx.Provider, { value }, props.children);
+}
+var RESOLVED = Promise.resolve();
+function Router(props) {
+ const [c2, update] = h((c3) => c3 + 1, 0);
+ const { url, query, wasPush, path } = useLocation();
+ const { rest = path, params = {} } = x(RouteContext);
+ const isLoading = A(false);
+ const prevRoute = A(path);
+ const count = A(0);
+ const cur = (
+ /** @type {RefObject>} */
+ A()
+ );
+ const prev = (
+ /** @type {RefObject>} */
+ A()
+ );
+ const pendingBase = (
+ /** @type {RefObject} */
+ A()
+ );
+ const hasEverCommitted = A(false);
+ const didSuspend = (
+ /** @type {RefObject} */
+ A()
+ );
+ didSuspend.current = false;
+ let pathRoute, defaultRoute, matchProps;
+ H(props.children).some((vnode) => {
+ const matches = exec(rest, vnode.props.path, matchProps = { ...vnode.props, path: rest, query, params, rest: "" });
+ if (matches) return pathRoute = J(vnode, matchProps);
+ if (vnode.props.default) defaultRoute = J(vnode, matchProps);
+ });
+ let incoming = pathRoute || defaultRoute;
+ const isHydratingSuspense = cur.current && cur.current.__u & MODE_HYDRATE && cur.current.__u & MODE_SUSPENDED;
+ const isHydratingBool = cur.current && cur.current.__h;
+ const routeChanged = T(() => {
+ prev.current = cur.current;
+ cur.current = /** @type {VNode} */
+ _(RouteContext.Provider, { value: matchProps }, incoming);
+ const outgoing = prev.current && prev.current.props.children;
+ if (!outgoing || !incoming || incoming.type !== outgoing.type || incoming.props.component !== outgoing.props.component) {
+ if (this.__v && this.__v.__k) this.__v.__k.reverse();
+ count.current++;
+ return true;
+ }
+ return false;
+ }, [url, JSON.stringify(matchProps)]);
+ if (isHydratingSuspense) {
+ cur.current.__u |= MODE_HYDRATE;
+ cur.current.__u |= MODE_SUSPENDED;
+ } else if (isHydratingBool) {
+ cur.current.__h = true;
+ }
+ const p2 = prev.current;
+ prev.current = null;
+ this.__c = (e2, suspendedVNode) => {
+ didSuspend.current = true;
+ prev.current = p2;
+ if (props.onLoadStart) props.onLoadStart(url);
+ isLoading.current = true;
+ let c3 = count.current;
+ e2.then(() => {
+ if (c3 !== count.current) return;
+ prev.current = null;
+ if (cur.current) {
+ if (suspendedVNode.__h) {
+ cur.current.__h = suspendedVNode.__h;
+ }
+ if (suspendedVNode.__u & MODE_SUSPENDED) {
+ cur.current.__u |= MODE_SUSPENDED;
+ }
+ if (suspendedVNode.__u & MODE_HYDRATE) {
+ cur.current.__u |= MODE_HYDRATE;
+ }
+ }
+ RESOLVED.then(update);
+ });
+ };
+ _2(() => {
+ const currentDom = this.__v && this.__v.__e;
+ if (didSuspend.current) {
+ if (!hasEverCommitted.current && !pendingBase.current) {
+ pendingBase.current = currentDom;
+ }
+ return;
+ }
+ if (!hasEverCommitted.current && pendingBase.current) {
+ if (pendingBase.current !== currentDom) pendingBase.current.remove();
+ pendingBase.current = null;
+ }
+ hasEverCommitted.current = true;
+ if (prevRoute.current !== path) {
+ if (wasPush) scrollTo(0, 0);
+ if (props.onRouteChange) props.onRouteChange(url);
+ prevRoute.current = path;
+ }
+ if (props.onLoadEnd && isLoading.current) props.onLoadEnd(url);
+ isLoading.current = false;
+ }, [path, wasPush, c2]);
+ return routeChanged ? [_(RenderRef, { r: cur }), _(RenderRef, { r: prev })] : _(RenderRef, { r: cur });
+}
+var MODE_HYDRATE = 1 << 5;
+var MODE_SUSPENDED = 1 << 7;
+var RenderRef = ({ r: r2 }) => r2.current;
+Router.Provider = LocationProvider;
+LocationProvider.ctx = K(
+ /** @type {import('./router.d.ts').LocationHook & { wasPush: boolean }} */
+ {}
+);
+var RouteContext = K(
+ /** @type {import('./router.d.ts').RouteHook & { rest: string }} */
+ {}
+);
+var Route = (props) => _(props.component, props);
+var useLocation = () => x(LocationProvider.ctx);
+var useRoute = () => x(RouteContext);
+
+// node_modules/preact-iso/src/lazy.js
+var oldDiff = l.__b;
+l.__b = (vnode) => {
+ if (vnode.type && vnode.type._forwarded && vnode.ref) {
+ vnode.props.ref = vnode.ref;
+ vnode.ref = null;
+ }
+ if (oldDiff) oldDiff(vnode);
+};
+function lazy(load) {
+ let p2, c2;
+ const loadModule = () => load().then((m2) => c2 = m2 && m2.default || m2);
+ const LazyComponent = (props) => {
+ const [, update] = d(0);
+ const r2 = A(c2);
+ if (!p2) p2 = loadModule();
+ if (c2 !== void 0) return _(c2, props);
+ if (!r2.current) r2.current = p2.then(() => update(1));
+ throw p2;
+ };
+ LazyComponent.preload = () => {
+ if (!p2) p2 = loadModule();
+ return p2;
+ };
+ LazyComponent._forwarded = true;
+ return LazyComponent;
+}
+var oldCatchError = l.__e;
+l.__e = (err, newVNode, oldVNode) => {
+ if (err && err.then) {
+ let v2 = newVNode;
+ while (v2 = v2.__) {
+ if (v2.__c && v2.__c.__c) {
+ if (newVNode.__e == null) {
+ newVNode.__c.__z = [oldVNode.__e];
+ newVNode.__e = oldVNode.__e;
+ newVNode.__k = oldVNode.__k;
+ }
+ if (!newVNode.__k) newVNode.__k = [];
+ return v2.__c.__c(err, newVNode);
+ }
+ }
+ }
+ if (oldCatchError) oldCatchError(err, newVNode, oldVNode);
+};
+function ErrorBoundary(props) {
+ this.__c = childDidSuspend;
+ this.componentDidCatch = props.onError;
+ return props.children;
+}
+function childDidSuspend(err) {
+ err.then(() => this.forceUpdate());
+}
+
+// node_modules/preact-iso/src/hydrate.js
+var initialized;
+function hydrate(jsx, parent) {
+ if (typeof window === "undefined") return;
+ let isodata = document.querySelector("script[type=isodata]");
+ parent = parent || isodata && isodata.parentNode || document.body;
+ if (!initialized && isodata) {
+ G(jsx, parent);
+ } else {
+ E(jsx, parent);
+ }
+ initialized = true;
+}
+
+// node_modules/preact-iso/src/index.js
+function prerender(vnode, options) {
+ return import("./prerender-2A2BKSYN.js").then((m2) => m2.default(vnode, options));
+}
+export {
+ ErrorBoundary,
+ LocationProvider,
+ Route,
+ Router,
+ hydrate,
+ lazy,
+ prerender,
+ useLocation,
+ useRoute
+};
+//# sourceMappingURL=preact-iso.js.map
diff --git a/.vite/deps/preact-iso.js.map b/.vite/deps/preact-iso.js.map
new file mode 100644
index 0000000..d08a173
--- /dev/null
+++ b/.vite/deps/preact-iso.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/preact/hooks/src/index.js", "../../node_modules/preact-iso/src/router.js", "../../node_modules/preact-iso/src/lazy.js", "../../node_modules/preact-iso/src/hydrate.js", "../../node_modules/preact-iso/src/index.js"],
+ "sourcesContent": ["import { options as _options } from 'preact';\n\n/** @type {number} */\nlet currentIndex;\n\n/** @type {import('./internal').Component} */\nlet currentComponent;\n\n/** @type {import('./internal').Component} */\nlet previousComponent;\n\n/** @type {number} */\nlet currentHook = 0;\n\n/** @type {Array} */\nlet afterPaintEffects = [];\n\n// Cast to use internal Options type\nconst options = /** @type {import('./internal').Options} */ (_options);\n\nlet oldBeforeDiff = options._diff;\nlet oldBeforeRender = options._render;\nlet oldAfterDiff = options.diffed;\nlet oldCommit = options._commit;\nlet oldBeforeUnmount = options.unmount;\nlet oldRoot = options._root;\n\nconst RAF_TIMEOUT = 100;\nlet prevRaf;\n\n/** @type {(vnode: import('./internal').VNode) => void} */\noptions._diff = vnode => {\n\tcurrentComponent = null;\n\tif (oldBeforeDiff) oldBeforeDiff(vnode);\n};\n\noptions._root = (vnode, parentDom) => {\n\tif (vnode && parentDom._children && parentDom._children._mask) {\n\t\tvnode._mask = parentDom._children._mask;\n\t}\n\n\tif (oldRoot) oldRoot(vnode, parentDom);\n};\n\n/** @type {(vnode: import('./internal').VNode) => void} */\noptions._render = vnode => {\n\tif (oldBeforeRender) oldBeforeRender(vnode);\n\n\tcurrentComponent = vnode._component;\n\tcurrentIndex = 0;\n\n\tconst hooks = currentComponent.__hooks;\n\tif (hooks) {\n\t\tif (previousComponent === currentComponent) {\n\t\t\thooks._pendingEffects = [];\n\t\t\tcurrentComponent._renderCallbacks = [];\n\t\t\thooks._list.forEach(hookItem => {\n\t\t\t\tif (hookItem._nextValue) {\n\t\t\t\t\thookItem._value = hookItem._nextValue;\n\t\t\t\t}\n\t\t\t\thookItem._pendingArgs = hookItem._nextValue = undefined;\n\t\t\t});\n\t\t} else {\n\t\t\thooks._pendingEffects.forEach(invokeCleanup);\n\t\t\thooks._pendingEffects.forEach(invokeEffect);\n\t\t\thooks._pendingEffects = [];\n\t\t\tcurrentIndex = 0;\n\t\t}\n\t}\n\tpreviousComponent = currentComponent;\n};\n\n/** @type {(vnode: import('./internal').VNode) => void} */\noptions.diffed = vnode => {\n\tif (oldAfterDiff) oldAfterDiff(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tif (c.__hooks._pendingEffects.length) afterPaint(afterPaintEffects.push(c));\n\t\tc.__hooks._list.forEach(hookItem => {\n\t\t\tif (hookItem._pendingArgs) {\n\t\t\t\thookItem._args = hookItem._pendingArgs;\n\t\t\t}\n\t\t\thookItem._pendingArgs = undefined;\n\t\t});\n\t}\n\tpreviousComponent = currentComponent = null;\n};\n\n// TODO: Improve typing of commitQueue parameter\n/** @type {(vnode: import('./internal').VNode, commitQueue: any) => void} */\noptions._commit = (vnode, commitQueue) => {\n\tcommitQueue.some(component => {\n\t\ttry {\n\t\t\tcomponent._renderCallbacks.forEach(invokeCleanup);\n\t\t\tcomponent._renderCallbacks = component._renderCallbacks.filter(cb =>\n\t\t\t\tcb._value ? invokeEffect(cb) : true\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tcommitQueue.some(c => {\n\t\t\t\tif (c._renderCallbacks) c._renderCallbacks = [];\n\t\t\t});\n\t\t\tcommitQueue = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t});\n\n\tif (oldCommit) oldCommit(vnode, commitQueue);\n};\n\n/** @type {(vnode: import('./internal').VNode) => void} */\noptions.unmount = vnode => {\n\tif (oldBeforeUnmount) oldBeforeUnmount(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tlet hasErrored;\n\t\tc.__hooks._list.forEach(s => {\n\t\t\ttry {\n\t\t\t\tinvokeCleanup(s);\n\t\t\t} catch (e) {\n\t\t\t\thasErrored = e;\n\t\t\t}\n\t\t});\n\t\tc.__hooks = undefined;\n\t\tif (hasErrored) options._catchError(hasErrored, c._vnode);\n\t}\n};\n\n/**\n * Get a hook's state from the currentComponent\n * @param {number} index The index of the hook to get\n * @param {number} type The index of the hook to get\n * @returns {any}\n */\nfunction getHookState(index, type) {\n\tif (options._hook) {\n\t\toptions._hook(currentComponent, index, currentHook || type);\n\t}\n\tcurrentHook = 0;\n\n\t// Largely inspired by:\n\t// * https://github.com/michael-klein/funcy.js/blob/f6be73468e6ec46b0ff5aa3cc4c9baf72a29025a/src/hooks/core_hooks.mjs\n\t// * https://github.com/michael-klein/funcy.js/blob/650beaa58c43c33a74820a3c98b3c7079cf2e333/src/renderer.mjs\n\t// Other implementations to look at:\n\t// * https://codesandbox.io/s/mnox05qp8\n\tconst hooks =\n\t\tcurrentComponent.__hooks ||\n\t\t(currentComponent.__hooks = {\n\t\t\t_list: [],\n\t\t\t_pendingEffects: []\n\t\t});\n\n\tif (index >= hooks._list.length) {\n\t\thooks._list.push({});\n\t}\n\n\treturn hooks._list[index];\n}\n\n/**\n * @template {unknown} S\n * @param {import('./index').Dispatch>} [initialState]\n * @returns {[S, (state: S) => void]}\n */\nexport function useState(initialState) {\n\tcurrentHook = 1;\n\treturn useReducer(invokeOrReturn, initialState);\n}\n\n/**\n * @template {unknown} S\n * @template {unknown} A\n * @param {import('./index').Reducer} reducer\n * @param {import('./index').Dispatch>} initialState\n * @param {(initialState: any) => void} [init]\n * @returns {[ S, (state: S) => void ]}\n */\nexport function useReducer(reducer, initialState, init) {\n\t/** @type {import('./internal').ReducerHookState} */\n\tconst hookState = getHookState(currentIndex++, 2);\n\thookState._reducer = reducer;\n\tif (!hookState._component) {\n\t\thookState._value = [\n\t\t\t!init ? invokeOrReturn(undefined, initialState) : init(initialState),\n\n\t\t\taction => {\n\t\t\t\tconst currentValue = hookState._nextValue\n\t\t\t\t\t? hookState._nextValue[0]\n\t\t\t\t\t: hookState._value[0];\n\t\t\t\tconst nextValue = hookState._reducer(currentValue, action);\n\n\t\t\t\tif (currentValue !== nextValue) {\n\t\t\t\t\thookState._nextValue = [nextValue, hookState._value[1]];\n\t\t\t\t\thookState._component.setState({});\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\n\t\thookState._component = currentComponent;\n\n\t\tif (!currentComponent._hasScuFromHooks) {\n\t\t\tcurrentComponent._hasScuFromHooks = true;\n\t\t\tlet prevScu = currentComponent.shouldComponentUpdate;\n\t\t\tconst prevCWU = currentComponent.componentWillUpdate;\n\n\t\t\t// If we're dealing with a forced update `shouldComponentUpdate` will\n\t\t\t// not be called. But we use that to update the hook values, so we\n\t\t\t// need to call it.\n\t\t\tcurrentComponent.componentWillUpdate = function (p, s, c) {\n\t\t\t\tif (this._force) {\n\t\t\t\t\tlet tmp = prevScu;\n\t\t\t\t\t// Clear to avoid other sCU hooks from being called\n\t\t\t\t\tprevScu = undefined;\n\t\t\t\t\tupdateHookState(p, s, c);\n\t\t\t\t\tprevScu = tmp;\n\t\t\t\t}\n\n\t\t\t\tif (prevCWU) prevCWU.call(this, p, s, c);\n\t\t\t};\n\n\t\t\t// This SCU has the purpose of bailing out after repeated updates\n\t\t\t// to stateful hooks.\n\t\t\t// we store the next value in _nextValue[0] and keep doing that for all\n\t\t\t// state setters, if we have next states and\n\t\t\t// all next states within a component end up being equal to their original state\n\t\t\t// we are safe to bail out for this specific component.\n\t\t\t/**\n\t\t\t *\n\t\t\t * @type {import('./internal').Component[\"shouldComponentUpdate\"]}\n\t\t\t */\n\t\t\t// @ts-ignore - We don't use TS to downtranspile\n\t\t\t// eslint-disable-next-line no-inner-declarations\n\t\t\tfunction updateHookState(p, s, c) {\n\t\t\t\tif (!hookState._component.__hooks) return true;\n\n\t\t\t\t/** @type {(x: import('./internal').HookState) => x is import('./internal').ReducerHookState} */\n\t\t\t\tconst isStateHook = x => !!x._component;\n\t\t\t\tconst stateHooks =\n\t\t\t\t\thookState._component.__hooks._list.filter(isStateHook);\n\n\t\t\t\tconst allHooksEmpty = stateHooks.every(x => !x._nextValue);\n\t\t\t\t// When we have no updated hooks in the component we invoke the previous SCU or\n\t\t\t\t// traverse the VDOM tree further.\n\t\t\t\tif (allHooksEmpty) {\n\t\t\t\t\treturn prevScu ? prevScu.call(this, p, s, c) : true;\n\t\t\t\t}\n\n\t\t\t\t// We check whether we have components with a nextValue set that\n\t\t\t\t// have values that aren't equal to one another this pushes\n\t\t\t\t// us to update further down the tree\n\t\t\t\tlet shouldUpdate = hookState._component.props !== p;\n\t\t\t\tstateHooks.forEach(hookItem => {\n\t\t\t\t\tif (hookItem._nextValue) {\n\t\t\t\t\t\tconst currentValue = hookItem._value[0];\n\t\t\t\t\t\thookItem._value = hookItem._nextValue;\n\t\t\t\t\t\thookItem._nextValue = undefined;\n\t\t\t\t\t\tif (currentValue !== hookItem._value[0]) shouldUpdate = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn prevScu\n\t\t\t\t\t? prevScu.call(this, p, s, c) || shouldUpdate\n\t\t\t\t\t: shouldUpdate;\n\t\t\t}\n\n\t\t\tcurrentComponent.shouldComponentUpdate = updateHookState;\n\t\t}\n\t}\n\n\treturn hookState._nextValue || hookState._value;\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {unknown[]} args\n * @returns {void}\n */\nexport function useEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 3);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent.__hooks._pendingEffects.push(state);\n\t}\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {unknown[]} args\n * @returns {void}\n */\nexport function useLayoutEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 4);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent._renderCallbacks.push(state);\n\t}\n}\n\n/** @type {(initialValue: unknown) => unknown} */\nexport function useRef(initialValue) {\n\tcurrentHook = 5;\n\treturn useMemo(() => ({ current: initialValue }), []);\n}\n\n/**\n * @param {object} ref\n * @param {() => object} createHandle\n * @param {unknown[]} args\n * @returns {void}\n */\nexport function useImperativeHandle(ref, createHandle, args) {\n\tcurrentHook = 6;\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tif (typeof ref == 'function') {\n\t\t\t\tconst result = ref(createHandle());\n\t\t\t\treturn () => {\n\t\t\t\t\tref(null);\n\t\t\t\t\tif (result && typeof result == 'function') result();\n\t\t\t\t};\n\t\t\t} else if (ref) {\n\t\t\t\tref.current = createHandle();\n\t\t\t\treturn () => (ref.current = null);\n\t\t\t}\n\t\t},\n\t\targs == null ? args : args.concat(ref)\n\t);\n}\n\n/**\n * @template {unknown} T\n * @param {() => T} factory\n * @param {unknown[]} args\n * @returns {T}\n */\nexport function useMemo(factory, args) {\n\t/** @type {import('./internal').MemoHookState} */\n\tconst state = getHookState(currentIndex++, 7);\n\tif (argsChanged(state._args, args)) {\n\t\tstate._value = factory();\n\t\tstate._args = args;\n\t\tstate._factory = factory;\n\t}\n\n\treturn state._value;\n}\n\n/**\n * @param {() => void} callback\n * @param {unknown[]} args\n * @returns {() => void}\n */\nexport function useCallback(callback, args) {\n\tcurrentHook = 8;\n\treturn useMemo(() => callback, args);\n}\n\n/**\n * @param {import('./internal').PreactContext} context\n */\nexport function useContext(context) {\n\tconst provider = currentComponent.context[context._id];\n\t// We could skip this call here, but than we'd not call\n\t// `options._hook`. We need to do that in order to make\n\t// the devtools aware of this hook.\n\t/** @type {import('./internal').ContextHookState} */\n\tconst state = getHookState(currentIndex++, 9);\n\t// The devtools needs access to the context object to\n\t// be able to pull of the default value when no provider\n\t// is present in the tree.\n\tstate._context = context;\n\tif (!provider) return context._defaultValue;\n\t// This is probably not safe to convert to \"!\"\n\tif (state._value == null) {\n\t\tstate._value = true;\n\t\tprovider.sub(currentComponent);\n\t}\n\treturn provider.props.value;\n}\n\n/**\n * Display a custom label for a custom hook for the devtools panel\n * @type {(value: T, cb?: (value: T) => string | number) => void}\n */\nexport function useDebugValue(value, formatter) {\n\tif (options.useDebugValue) {\n\t\toptions.useDebugValue(\n\t\t\tformatter ? formatter(value) : /** @type {any}*/ (value)\n\t\t);\n\t}\n}\n\n/**\n * @param {(error: unknown, errorInfo: import('preact').ErrorInfo) => void} cb\n * @returns {[unknown, () => void]}\n */\nexport function useErrorBoundary(cb) {\n\t/** @type {import('./internal').ErrorBoundaryHookState} */\n\tconst state = getHookState(currentIndex++, 10);\n\tconst errState = useState();\n\tstate._value = cb;\n\tif (!currentComponent.componentDidCatch) {\n\t\tcurrentComponent.componentDidCatch = (err, errorInfo) => {\n\t\t\tif (state._value) state._value(err, errorInfo);\n\t\t\terrState[1](err);\n\t\t};\n\t}\n\treturn [\n\t\terrState[0],\n\t\t() => {\n\t\t\terrState[1](undefined);\n\t\t}\n\t];\n}\n\n/** @type {() => string} */\nexport function useId() {\n\t/** @type {import('./internal').IdHookState} */\n\tconst state = getHookState(currentIndex++, 11);\n\tif (!state._value) {\n\t\t// Grab either the root node or the nearest async boundary node.\n\t\t/** @type {import('./internal').VNode} */\n\t\tlet root = currentComponent._vnode;\n\t\twhile (root !== null && !root._mask && root._parent !== null) {\n\t\t\troot = root._parent;\n\t\t}\n\n\t\tlet mask = root._mask || (root._mask = [0, 0]);\n\t\tstate._value = 'P' + mask[0] + '-' + mask[1]++;\n\t}\n\n\treturn state._value;\n}\n\n/**\n * After paint effects consumer.\n */\nfunction flushAfterPaintEffects() {\n\tlet component;\n\twhile ((component = afterPaintEffects.shift())) {\n\t\tif (!component._parentDom || !component.__hooks) continue;\n\t\ttry {\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t} catch (e) {\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t}\n}\n\nlet HAS_RAF = typeof requestAnimationFrame == 'function';\n\n/**\n * Schedule a callback to be invoked after the browser has a chance to paint a new frame.\n * Do this by combining requestAnimationFrame (rAF) + setTimeout to invoke a callback after\n * the next browser frame.\n *\n * Also, schedule a timeout in parallel to the the rAF to ensure the callback is invoked\n * even if RAF doesn't fire (for example if the browser tab is not visible)\n *\n * @param {() => void} callback\n */\nfunction afterNextFrame(callback) {\n\tconst done = () => {\n\t\tclearTimeout(timeout);\n\t\tif (HAS_RAF) cancelAnimationFrame(raf);\n\t\tsetTimeout(callback);\n\t};\n\tconst timeout = setTimeout(done, RAF_TIMEOUT);\n\n\tlet raf;\n\tif (HAS_RAF) {\n\t\traf = requestAnimationFrame(done);\n\t}\n}\n\n// Note: if someone used options.debounceRendering = requestAnimationFrame,\n// then effects will ALWAYS run on the NEXT frame instead of the current one, incurring a ~16ms delay.\n// Perhaps this is not such a big deal.\n/**\n * Schedule afterPaintEffects flush after the browser paints\n * @param {number} newQueueLength\n * @returns {void}\n */\nfunction afterPaint(newQueueLength) {\n\tif (newQueueLength === 1 || prevRaf !== options.requestAnimationFrame) {\n\t\tprevRaf = options.requestAnimationFrame;\n\t\t(prevRaf || afterNextFrame)(flushAfterPaintEffects);\n\t}\n}\n\n/**\n * @param {import('./internal').HookState} hook\n * @returns {void}\n */\nfunction invokeCleanup(hook) {\n\t// A hook cleanup can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\tlet cleanup = hook._cleanup;\n\tif (typeof cleanup == 'function') {\n\t\thook._cleanup = undefined;\n\t\tcleanup();\n\t}\n\n\tcurrentComponent = comp;\n}\n\n/**\n * Invoke a Hook's effect\n * @param {import('./internal').EffectHookState} hook\n * @returns {void}\n */\nfunction invokeEffect(hook) {\n\t// A hook call can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\thook._cleanup = hook._value();\n\tcurrentComponent = comp;\n}\n\n/**\n * @param {unknown[]} oldArgs\n * @param {unknown[]} newArgs\n * @returns {boolean}\n */\nfunction argsChanged(oldArgs, newArgs) {\n\treturn (\n\t\t!oldArgs ||\n\t\toldArgs.length !== newArgs.length ||\n\t\tnewArgs.some((arg, index) => arg !== oldArgs[index])\n\t);\n}\n\n/**\n * @template Arg\n * @param {Arg} arg\n * @param {(arg: Arg) => any} f\n * @returns {any}\n */\nfunction invokeOrReturn(arg, f) {\n\treturn typeof f == 'function' ? f(arg) : f;\n}\n", "import { h, createContext, cloneElement, toChildArray } from 'preact';\nimport { useContext, useMemo, useReducer, useLayoutEffect, useRef } from 'preact/hooks';\n\n/**\n * @template T\n * @typedef {import('preact').RefObject} RefObject\n * @typedef {import('./internal.d.ts').VNode} VNode\n */\n\nlet push, scope;\nconst UPDATE = (state, url) => {\n\tpush = undefined;\n\tif (url && url.type === 'click') {\n\t\t// ignore events the browser takes care of already:\n\t\tif (url.ctrlKey || url.metaKey || url.altKey || url.shiftKey || url.button !== 0) {\n\t\t\treturn state;\n\t\t}\n\n\t\tconst link = url.target.closest('a[href]'),\n\t\t\thref = link && link.getAttribute('href');\n\t\tif (\n\t\t\t!link ||\n\t\t\tlink.origin != location.origin ||\n\t\t\t/^#/.test(href) ||\n\t\t\t!/^(_?self)?$/i.test(link.target) ||\n\t\t\tscope && (typeof scope == 'string'\n\t\t\t\t? !href.startsWith(scope)\n\t\t\t\t: !scope.test(href)\n\t\t\t)\n\t\t) {\n\t\t\treturn state;\n\t\t}\n\n\t\tpush = true;\n\t\turl.preventDefault();\n\t\turl = link.href.replace(location.origin, '');\n\t} else if (typeof url === 'string') {\n\t\tpush = true;\n\t} else if (url && url.url) {\n\t\tpush = !url.replace;\n\t\turl = url.url;\n\t} else {\n\t\turl = location.pathname + location.search;\n\t}\n\n\tif (push === true) history.pushState(null, '', url);\n\telse if (push === false) history.replaceState(null, '', url);\n\treturn url;\n};\n\nexport const exec = (url, route, matches = {}) => {\n\turl = url.split('/').filter(Boolean);\n\troute = (route || '').split('/').filter(Boolean);\n\tif (!matches.params) matches.params = {};\n\tfor (let i = 0, val, rest; i < Math.max(url.length, route.length); i++) {\n\t\tlet [, m, param, flag] = (route[i] || '').match(/^(:?)(.*?)([+*?]?)$/);\n\t\tval = url[i];\n\t\t// segment match:\n\t\tif (!m && param == val) continue;\n\t\t// /foo/* match\n\t\tif (!m && val && flag == '*') {\n\t\t\tmatches.rest = '/' + url.slice(i).map(decodeURIComponent).join('/');\n\t\t\tbreak;\n\t\t}\n\t\t// segment mismatch / missing required field:\n\t\tif (!m || (!val && flag != '?' && flag != '*')) return;\n\t\trest = flag == '+' || flag == '*';\n\t\t// rest (+/*) match:\n\t\tif (rest) val = url.slice(i).map(decodeURIComponent).join('/') || undefined;\n\t\t// normal/optional field:\n\t\telse if (val) val = decodeURIComponent(val);\n\t\tmatches.params[param] = val;\n\t\tif (!(param in matches)) matches[param] = val;\n\t\tif (rest) break;\n\t}\n\treturn matches;\n};\n\n/**\n * @type {import('./router.d.ts').LocationProvider}\n */\nexport function LocationProvider(props) {\n\t// @ts-expect-error - props.url is not implemented correctly & will be removed in the future\n\tconst [url, route] = useReducer(UPDATE, props.url || location.pathname + location.search);\n\tif (props.scope) scope = props.scope;\n\tconst wasPush = push === true;\n\n\tconst value = useMemo(() => {\n\t\tconst u = new URL(url, location.origin);\n\t\tconst path = u.pathname.replace(/\\/+$/g, '') || '/';\n\t\t// @ts-ignore-next\n\t\treturn {\n\t\t\turl,\n\t\t\tpath,\n\t\t\tquery: Object.fromEntries(u.searchParams),\n\t\t\troute: (url, replace) => route({ url, replace }),\n\t\t\twasPush\n\t\t};\n\t}, [url]);\n\n\tuseLayoutEffect(() => {\n\t\taddEventListener('click', route);\n\t\taddEventListener('popstate', route);\n\n\t\treturn () => {\n\t\t\tremoveEventListener('click', route);\n\t\t\tremoveEventListener('popstate', route);\n\t\t};\n\t}, []);\n\n\t// @ts-ignore\n\treturn h(LocationProvider.ctx.Provider, { value }, props.children);\n}\n\nconst RESOLVED = Promise.resolve();\n/** @this {import('./internal.d.ts').AugmentedComponent} */\nexport function Router(props) {\n\tconst [c, update] = useReducer(c => c + 1, 0);\n\n\tconst { url, query, wasPush, path } = useLocation();\n\tconst { rest = path, params = {} } = useContext(RouteContext);\n\n\tconst isLoading = useRef(false);\n\tconst prevRoute = useRef(path);\n\t// Monotonic counter used to check if an un-suspending route is still the current route:\n\tconst count = useRef(0);\n\t// The current route:\n\tconst cur = /** @type {RefObject>} */ (useRef());\n\t// Previous route (if current route is suspended):\n\tconst prev = /** @type {RefObject>} */ (useRef());\n\t// A not-yet-hydrated DOM root to remove once we commit:\n\tconst pendingBase = /** @type {RefObject} */ (useRef());\n\t// has this component ever successfully rendered without suspending:\n\tconst hasEverCommitted = useRef(false);\n\t// was the most recent render successful (did not suspend):\n\tconst didSuspend = /** @type {RefObject} */ (useRef());\n\tdidSuspend.current = false;\n\n\tlet pathRoute, defaultRoute, matchProps;\n\ttoChildArray(props.children).some((/** @type {VNode} */ vnode) => {\n\t\tconst matches = exec(rest, vnode.props.path, (matchProps = { ...vnode.props, path: rest, query, params, rest: '' }));\n\t\tif (matches) return (pathRoute = cloneElement(vnode, matchProps));\n\t\tif (vnode.props.default) defaultRoute = cloneElement(vnode, matchProps);\n\t});\n\n\t/** @type {VNode | undefined} */\n\tlet incoming = pathRoute || defaultRoute;\n\n\tconst isHydratingSuspense = cur.current && cur.current.__u & MODE_HYDRATE && cur.current.__u & MODE_SUSPENDED;\n\tconst isHydratingBool = cur.current && cur.current.__h;\n\tconst routeChanged = useMemo(() => {\n\t\tprev.current = cur.current;\n\n\t\tcur.current = /** @type {VNode} */ (h(RouteContext.Provider, { value: matchProps }, incoming));\n\n\t\t// Only mark as an update if the route component changed.\n\t\tconst outgoing = prev.current && prev.current.props.children;\n\t\tif (!outgoing || !incoming || incoming.type !== outgoing.type || incoming.props.component !== outgoing.props.component) {\n\t\t\t// This hack prevents Preact from diffing when we swap `cur` to `prev`:\n\t\t\tif (this.__v && this.__v.__k) this.__v.__k.reverse();\n\t\t\tcount.current++;\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}, [url, JSON.stringify(matchProps)]);\n\n\tif (isHydratingSuspense) {\n\t\tcur.current.__u |= MODE_HYDRATE;\n\t\tcur.current.__u |= MODE_SUSPENDED;\n\t} else if (isHydratingBool) {\n\t\tcur.current.__h = true;\n\t}\n\n\t// Reset previous children - if rendering succeeds synchronously, we shouldn't render the previous children.\n\tconst p = prev.current;\n\tprev.current = null;\n\n\t// This borrows the _childDidSuspend() solution from compat.\n\tthis.__c = (e, suspendedVNode) => {\n\t\t// Mark the current render as having suspended:\n\t\tdidSuspend.current = true;\n\n\t\t// The new route suspended, so keep the previous route around while it loads:\n\t\tprev.current = p;\n\n\t\t// Fire an event saying we're waiting for the route:\n\t\tif (props.onLoadStart) props.onLoadStart(url);\n\t\tisLoading.current = true;\n\n\t\t// Re-render on unsuspend:\n\t\tlet c = count.current;\n\t\te.then(() => {\n\t\t\t// Ignore this update if it isn't the most recently suspended update:\n\t\t\tif (c !== count.current) return;\n\n\t\t\t// Successful route transition: un-suspend after a tick and stop rendering the old route:\n\t\t\tprev.current = null;\n\t\t\tif (cur.current) {\n\t\t\t\tif (suspendedVNode.__h) {\n\t\t\t\t\t// _hydrating\n\t\t\t\t\tcur.current.__h = suspendedVNode.__h;\n\t\t\t\t}\n\n\t\t\t\tif (suspendedVNode.__u & MODE_SUSPENDED) {\n\t\t\t\t\t// _flags\n\t\t\t\t\tcur.current.__u |= MODE_SUSPENDED;\n\t\t\t\t}\n\n\t\t\t\tif (suspendedVNode.__u & MODE_HYDRATE) {\n\t\t\t\t\tcur.current.__u |= MODE_HYDRATE;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tRESOLVED.then(update);\n\t\t});\n\t};\n\n\tuseLayoutEffect(() => {\n\t\tconst currentDom = this.__v && this.__v.__e;\n\n\t\t// Ignore suspended renders (failed commits):\n\t\tif (didSuspend.current) {\n\t\t\t// If we've never committed, mark any hydration DOM for removal on the next commit:\n\t\t\tif (!hasEverCommitted.current && !pendingBase.current) {\n\t\t\t\tpendingBase.current = currentDom;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// If this is the first ever successful commit and we didn't use the hydration DOM, remove it:\n\t\tif (!hasEverCommitted.current && pendingBase.current) {\n\t\t\tif (pendingBase.current !== currentDom) pendingBase.current.remove();\n\t\t\tpendingBase.current = null;\n\t\t}\n\n\t\t// Mark the component has having committed:\n\t\thasEverCommitted.current = true;\n\n\t\t// The route is loaded and rendered.\n\t\tif (prevRoute.current !== path) {\n\t\t\tif (wasPush) scrollTo(0, 0);\n\t\t\tif (props.onRouteChange) props.onRouteChange(url);\n\n\t\t\tprevRoute.current = path;\n\t\t}\n\n\t\tif (props.onLoadEnd && isLoading.current) props.onLoadEnd(url);\n\t\tisLoading.current = false;\n\t}, [path, wasPush, c]);\n\n\t// Note: cur MUST render first in order to set didSuspend & prev.\n\treturn routeChanged\n\t\t? [h(RenderRef, { r: cur }), h(RenderRef, { r: prev })]\n\t\t: h(RenderRef, { r: cur });\n}\n\nconst MODE_HYDRATE = 1 << 5;\nconst MODE_SUSPENDED = 1 << 7;\n\n// Lazily render a ref's current value:\nconst RenderRef = ({ r }) => r.current;\n\nRouter.Provider = LocationProvider;\n\nLocationProvider.ctx = createContext(\n\t/** @type {import('./router.d.ts').LocationHook & { wasPush: boolean }} */ ({})\n);\nconst RouteContext = createContext(\n\t/** @type {import('./router.d.ts').RouteHook & { rest: string }} */ ({})\n);\n\nexport const Route = props => h(props.component, props);\n\nexport const useLocation = () => useContext(LocationProvider.ctx);\nexport const useRoute = () => useContext(RouteContext);\n", "import { h, options } from 'preact';\nimport { useState, useRef } from 'preact/hooks';\n\nconst oldDiff = options.__b;\noptions.__b = (vnode) => {\n\tif (vnode.type && vnode.type._forwarded && vnode.ref) {\n\t\tvnode.props.ref = vnode.ref;\n\t\tvnode.ref = null;\n\t}\n\tif (oldDiff) oldDiff(vnode);\n};\n\nexport default function lazy(load) {\n\tlet p, c;\n\n\tconst loadModule = () =>\n\t\tload().then(m => (c = (m && m.default) || m));\n\n\tconst LazyComponent = props => {\n\t\tconst [, update] = useState(0);\n\t\tconst r = useRef(c);\n\t\tif (!p) p = loadModule();\n\t\tif (c !== undefined) return h(c, props);\n\t\tif (!r.current) r.current = p.then(() => update(1));\n\t\tthrow p;\n\t};\n\n\tLazyComponent.preload = () => {\n\t\tif (!p) p = loadModule();\n\t\treturn p;\n\t}\n\n\tLazyComponent._forwarded = true;\n\treturn LazyComponent;\n}\n\n// See https://github.com/preactjs/preact/blob/88680e91ec0d5fc29d38554a3e122b10824636b6/compat/src/suspense.js#L5\nconst oldCatchError = options.__e;\noptions.__e = (err, newVNode, oldVNode) => {\n\tif (err && err.then) {\n\t\tlet v = newVNode;\n\t\twhile ((v = v.__)) {\n\t\t\tif (v.__c && v.__c.__c) {\n\t\t\t\tif (newVNode.__e == null) {\n\t\t\t\t\tnewVNode.__c.__z = [oldVNode.__e];\n\t\t\t\t\tnewVNode.__e = oldVNode.__e; // ._dom\n\t\t\t\t\tnewVNode.__k = oldVNode.__k; // ._children\n\t\t\t\t}\n\t\t\t\tif (!newVNode.__k) newVNode.__k = [];\n\t\t\t\treturn v.__c.__c(err, newVNode);\n\t\t\t}\n\t\t}\n\t}\n\tif (oldCatchError) oldCatchError(err, newVNode, oldVNode);\n};\n\nexport function ErrorBoundary(props) {\n\tthis.__c = childDidSuspend;\n\tthis.componentDidCatch = props.onError;\n\treturn props.children;\n}\n\nfunction childDidSuspend(err) {\n\terr.then(() => this.forceUpdate());\n}\n", "import { render, hydrate as hydrativeRender } from 'preact';\n\nlet initialized;\n\n/** @type {typeof hydrativeRender} */\nexport default function hydrate(jsx, parent) {\n\tif (typeof window === 'undefined') return;\n\tlet isodata = document.querySelector('script[type=isodata]');\n\t// @ts-ignore-next\n\tparent = parent || (isodata && isodata.parentNode) || document.body;\n\tif (!initialized && isodata) {\n\t\thydrativeRender(jsx, parent);\n\t} else {\n\t\trender(jsx, parent);\n\t}\n\tinitialized = true;\n}\n", "export { Router, LocationProvider, useLocation, Route, useRoute } from './router.js';\nexport { default as lazy, ErrorBoundary } from './lazy.js';\nexport { default as hydrate } from './hydrate.js';\n\nexport function prerender(vnode, options) {\n\treturn import('./prerender.js').then(m => m.default(vnode, options));\n}\n"],
+ "mappings": "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",
+ "names": ["currentIndex", "currentComponent", "previousComponent", "prevRaf", "currentHook", "afterPaintEffects", "options", "_options", "oldBeforeDiff", "__b", "oldBeforeRender", "__r", "oldAfterDiff", "diffed", "oldCommit", "__c", "oldBeforeUnmount", "unmount", "oldRoot", "__", "getHookState", "index", "type", "__h", "hooks", "__H", "length", "push", "useState", "initialState", "useReducer", "invokeOrReturn", "reducer", "init", "hookState", "_reducer", "action", "currentValue", "__N", "nextValue", "setState", "__f", "updateHookState", "p", "s", "c", "stateHooks", "filter", "x", "every", "prevScu", "call", "this", "shouldUpdate", "props", "forEach", "hookItem", "shouldComponentUpdate", "prevCWU", "componentWillUpdate", "__e", "tmp", "useLayoutEffect", "callback", "args", "state", "getHookState", "currentIndex", "options", "__s", "argsChanged", "__H", "__", "_pendingArgs", "currentComponent", "__h", "push", "useRef", "initialValue", "currentHook", "useMemo", "current", "useMemo", "factory", "args", "state", "getHookState", "currentIndex", "argsChanged", "__H", "__", "__h", "useContext", "context", "provider", "currentComponent", "__c", "state", "getHookState", "currentIndex", "c", "__", "sub", "props", "value", "flushAfterPaintEffects", "component", "afterPaintEffects", "shift", "__P", "__H", "__h", "forEach", "invokeCleanup", "invokeEffect", "e", "options", "__e", "__v", "__b", "vnode", "currentComponent", "oldBeforeDiff", "__", "parentDom", "__k", "__m", "oldRoot", "__r", "oldBeforeRender", "currentIndex", "hooks", "__c", "previousComponent", "hookItem", "__N", "_pendingArgs", "diffed", "oldAfterDiff", "c", "length", "push", "prevRaf", "requestAnimationFrame", "afterNextFrame", "commitQueue", "some", "filter", "cb", "oldCommit", "unmount", "oldBeforeUnmount", "hasErrored", "s", "HAS_RAF", "callback", "raf", "done", "clearTimeout", "timeout", "cancelAnimationFrame", "setTimeout", "hook", "comp", "cleanup", "argsChanged", "oldArgs", "newArgs", "arg", "index", "invokeOrReturn", "f", "i", "m", "u", "url", "_", "c", "p", "e", "r", "p", "c", "m", "r", "v", "m"]
+}
diff --git a/.vite/deps/preact.js b/.vite/deps/preact.js
new file mode 100644
index 0000000..6cb447e
--- /dev/null
+++ b/.vite/deps/preact.js
@@ -0,0 +1,28 @@
+import {
+ E,
+ G,
+ H,
+ J,
+ K,
+ _,
+ b,
+ k,
+ l,
+ t,
+ x
+} from "./chunk-WFLWNDNR.js";
+import "./chunk-5WRI5ZAA.js";
+export {
+ x as Component,
+ k as Fragment,
+ J as cloneElement,
+ K as createContext,
+ _ as createElement,
+ b as createRef,
+ _ as h,
+ G as hydrate,
+ t as isValidElement,
+ l as options,
+ E as render,
+ H as toChildArray
+};
diff --git a/.vite/deps/preact.js.map b/.vite/deps/preact.js.map
new file mode 100644
index 0000000..9865211
--- /dev/null
+++ b/.vite/deps/preact.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": [],
+ "sourcesContent": [],
+ "mappings": "",
+ "names": []
+}
diff --git a/.vite/deps/prerender-2A2BKSYN.js b/.vite/deps/prerender-2A2BKSYN.js
new file mode 100644
index 0000000..00fd0ff
--- /dev/null
+++ b/.vite/deps/prerender-2A2BKSYN.js
@@ -0,0 +1,392 @@
+import {
+ J,
+ _,
+ k,
+ l
+} from "./chunk-WFLWNDNR.js";
+import "./chunk-5WRI5ZAA.js";
+
+// node_modules/preact-render-to-string/dist/index.module.js
+var n = /[\s\n\\/='"\0<>]/;
+var o = /^(xlink|xmlns|xml)([A-Z])/;
+var i = /^(?:accessK|auto[A-Z]|cell|ch|col|cont|cross|dateT|encT|form[A-Z]|frame|hrefL|inputM|maxL|minL|noV|playsI|popoverT|readO|rowS|src[A-Z]|tabI|useM|item[A-Z])/;
+var a = /^ac|^ali|arabic|basel|cap|clipPath$|clipRule$|color|dominant|enable|fill|flood|font|glyph[^R]|horiz|image|letter|lighting|marker[^WUH]|overline|panose|pointe|paint|rendering|shape|stop|strikethrough|stroke|text[^L]|transform|underline|unicode|units|^v[^i]|^w|^xH/;
+var c = /* @__PURE__ */ new Set(["draggable", "spellcheck"]);
+var s = /["&<]/;
+function l2(e) {
+ if (0 === e.length || false === s.test(e)) return e;
+ for (var t = 0, r = 0, n2 = "", o2 = ""; r < e.length; r++) {
+ switch (e.charCodeAt(r)) {
+ case 34:
+ o2 = """;
+ break;
+ case 38:
+ o2 = "&";
+ break;
+ case 60:
+ o2 = "<";
+ break;
+ default:
+ continue;
+ }
+ r !== t && (n2 += e.slice(t, r)), n2 += o2, t = r + 1;
+ }
+ return r !== t && (n2 += e.slice(t, r)), n2;
+}
+var u = {};
+var f = /* @__PURE__ */ new Set(["animation-iteration-count", "border-image-outset", "border-image-slice", "border-image-width", "box-flex", "box-flex-group", "box-ordinal-group", "column-count", "fill-opacity", "flex", "flex-grow", "flex-negative", "flex-order", "flex-positive", "flex-shrink", "flood-opacity", "font-weight", "grid-column", "grid-row", "line-clamp", "line-height", "opacity", "order", "orphans", "stop-opacity", "stroke-dasharray", "stroke-dashoffset", "stroke-miterlimit", "stroke-opacity", "stroke-width", "tab-size", "widows", "z-index", "zoom"]);
+var p = /[A-Z]/g;
+function h(e) {
+ var t = "";
+ for (var r in e) {
+ var n2 = e[r];
+ if (null != n2 && "" !== n2) {
+ var o2 = "-" == r[0] ? r : u[r] || (u[r] = r.replace(p, "-$&").toLowerCase()), i2 = ";";
+ "number" != typeof n2 || o2.startsWith("--") || f.has(o2) || (i2 = "px;"), t = t + o2 + ":" + n2 + i2;
+ }
+ }
+ return t || void 0;
+}
+function d() {
+ this.__d = true;
+}
+function v(e, t) {
+ return { __v: e, context: t, props: e.props, setState: d, forceUpdate: d, __d: true, __h: new Array(0) };
+}
+function _2(e, t, r) {
+ if (!e.s) {
+ if (r instanceof m) {
+ if (!r.s) return void (r.o = _2.bind(null, e, t));
+ 1 & t && (t = r.s), r = r.v;
+ }
+ if (r && r.then) return void r.then(_2.bind(null, e, t), _2.bind(null, e, 2));
+ e.s = t, e.v = r;
+ const n2 = e.o;
+ n2 && n2(e);
+ }
+}
+var m = function() {
+ function e() {
+ }
+ return e.prototype.then = function(t, r) {
+ var n2 = new e(), o2 = this.s;
+ if (o2) {
+ var i2 = 1 & o2 ? t : r;
+ if (i2) {
+ try {
+ _2(n2, 1, i2(this.v));
+ } catch (e2) {
+ _2(n2, 2, e2);
+ }
+ return n2;
+ }
+ return this;
+ }
+ return this.o = function(e2) {
+ try {
+ var o3 = e2.v;
+ 1 & e2.s ? _2(n2, 1, t ? t(o3) : o3) : r ? _2(n2, 1, r(o3)) : _2(n2, 2, o3);
+ } catch (e3) {
+ _2(n2, 2, e3);
+ }
+ }, n2;
+ }, e;
+}();
+function y(e) {
+ return e instanceof m && 1 & e.s;
+}
+function g(e, t, r) {
+ for (var n2; ; ) {
+ var o2 = e();
+ if (y(o2) && (o2 = o2.v), !o2) return i2;
+ if (o2.then) {
+ n2 = 0;
+ break;
+ }
+ var i2 = r();
+ if (i2 && i2.then) {
+ if (!y(i2)) {
+ n2 = 1;
+ break;
+ }
+ i2 = i2.s;
+ }
+ if (t) {
+ var a2 = t();
+ if (a2 && a2.then && !y(a2)) {
+ n2 = 2;
+ break;
+ }
+ }
+ }
+ var c2 = new m(), s2 = _2.bind(null, c2, 2);
+ return (0 === n2 ? o2.then(u2) : 1 === n2 ? i2.then(l3) : a2.then(f2)).then(void 0, s2), c2;
+ function l3(n3) {
+ i2 = n3;
+ do {
+ if (t && (a2 = t()) && a2.then && !y(a2)) return void a2.then(f2).then(void 0, s2);
+ if (!(o2 = e()) || y(o2) && !o2.v) return void _2(c2, 1, i2);
+ if (o2.then) return void o2.then(u2).then(void 0, s2);
+ y(i2 = r()) && (i2 = i2.v);
+ } while (!i2 || !i2.then);
+ i2.then(l3).then(void 0, s2);
+ }
+ function u2(e2) {
+ e2 ? (i2 = r()) && i2.then ? i2.then(l3).then(void 0, s2) : l3(i2) : _2(c2, 1, i2);
+ }
+ function f2() {
+ (o2 = e()) ? o2.then ? o2.then(u2).then(void 0, s2) : u2(o2) : _2(c2, 1, i2);
+ }
+}
+function b(e, t) {
+ try {
+ var r = e();
+ } catch (e2) {
+ return t(true, e2);
+ }
+ return r && r.then ? r.then(t.bind(null, false), t.bind(null, true)) : t(false, r);
+}
+var k2;
+var w;
+var x;
+var C;
+var A = function(n2, o2) {
+ try {
+ var i2 = l.__s;
+ l.__s = true, k2 = l.__b, w = l.diffed, x = l.__r, C = l.unmount;
+ var a2 = _(k, null);
+ return a2.__k = [n2], Promise.resolve(b(function() {
+ return Promise.resolve(U(n2, o2 || S, false, void 0, a2, true, void 0)).then(function(e) {
+ var t, r = function() {
+ if (E(e)) {
+ var r2 = function() {
+ var e2 = o3.join(j);
+ return t = 1, e2;
+ }, n3 = 0, o3 = e, i3 = g(function() {
+ return !!o3.some(function(e2) {
+ return e2 && "function" == typeof e2.then;
+ }) && n3++ < 25;
+ }, void 0, function() {
+ return Promise.resolve(Promise.all(o3)).then(function(e2) {
+ o3 = e2.flat();
+ });
+ });
+ return i3 && i3.then ? i3.then(r2) : r2();
+ }
+ }();
+ return r && r.then ? r.then(function(r2) {
+ return t ? r2 : e;
+ }) : t ? r : e;
+ });
+ }, function(t, r) {
+ if (l.__c && l.__c(n2, L), l.__s = i2, L.length = 0, t) throw r;
+ return r;
+ }));
+ } catch (e) {
+ return Promise.reject(e);
+ }
+};
+var S = {};
+var L = [];
+var E = Array.isArray;
+var T = Object.assign;
+var j = "";
+function P(e, t) {
+ var r, n2 = e.type, o2 = true;
+ return e.__c ? (o2 = false, (r = e.__c).state = r.__s) : r = new n2(e.props, t), e.__c = r, r.__v = e, r.props = e.props, r.context = t, r.__d = true, null == r.state && (r.state = S), null == r.__s && (r.__s = r.state), n2.getDerivedStateFromProps ? r.state = T({}, r.state, n2.getDerivedStateFromProps(r.props, r.state)) : o2 && r.componentWillMount ? (r.componentWillMount(), r.state = r.__s !== r.state ? r.__s : r.state) : !o2 && r.componentWillUpdate && r.componentWillUpdate(), x && x(e), r.render(r.props, r.state, t);
+}
+function U(t, s2, u2, f2, p2, d2, _3) {
+ if (null == t || true === t || false === t || t === j) return j;
+ var m2 = typeof t;
+ if ("object" != m2) return "function" == m2 ? j : "string" == m2 ? l2(t) : t + j;
+ if (E(t)) {
+ var y2, g2 = j;
+ p2.__k = t;
+ for (var b2 = t.length, A2 = 0; A2 < b2; A2++) {
+ var L2 = t[A2];
+ if (null != L2 && "boolean" != typeof L2) {
+ var D, F = U(L2, s2, u2, f2, p2, d2, _3);
+ "string" == typeof F ? g2 += F : (y2 || (y2 = new Array(b2)), g2 && y2.push(g2), g2 = j, E(F) ? (D = y2).push.apply(D, F) : y2.push(F));
+ }
+ }
+ return y2 ? (g2 && y2.push(g2), y2) : g2;
+ }
+ if (void 0 !== t.constructor) return j;
+ t.__ = p2, k2 && k2(t);
+ var M = t.type, W = t.props;
+ if ("function" == typeof M) {
+ var $, z, H, N = s2;
+ if (M === k) {
+ if ("tpl" in W) {
+ for (var q = j, B = 0; B < W.tpl.length; B++) if (q += W.tpl[B], W.exprs && B < W.exprs.length) {
+ var I = W.exprs[B];
+ if (null == I) continue;
+ "object" != typeof I || void 0 !== I.constructor && !E(I) ? q += I : q += U(I, s2, u2, f2, t, d2, _3);
+ }
+ return q;
+ }
+ if ("UNSTABLE_comment" in W) return "";
+ z = W.children;
+ } else {
+ if (null != ($ = M.contextType)) {
+ var O = s2[$.__c];
+ N = O ? O.props.value : $.__;
+ }
+ var R = M.prototype && "function" == typeof M.prototype.render;
+ if (R) z = P(t, N), H = t.__c;
+ else {
+ t.__c = H = v(t, N);
+ for (var V = 0; H.__d && V++ < 25; ) H.__d = false, x && x(t), z = M.call(H, W, N);
+ H.__d = true;
+ }
+ if (null != H.getChildContext && (s2 = T({}, s2, H.getChildContext())), R && l.errorBoundaries && (M.getDerivedStateFromError || H.componentDidCatch)) {
+ z = null != z && z.type === k && null == z.key && null == z.props.tpl ? z.props.children : z;
+ try {
+ return U(z, s2, u2, f2, t, d2, _3);
+ } catch (e) {
+ return M.getDerivedStateFromError && (H.__s = M.getDerivedStateFromError(e)), H.componentDidCatch && H.componentDidCatch(e, S), H.__d ? (z = P(t, s2), null != (H = t.__c).getChildContext && (s2 = T({}, s2, H.getChildContext())), U(z = null != z && z.type === k && null == z.key && null == z.props.tpl ? z.props.children : z, s2, u2, f2, t, d2, _3)) : j;
+ } finally {
+ w && w(t), C && C(t);
+ }
+ }
+ }
+ z = null != z && z.type === k && null == z.key && null == z.props.tpl ? z.props.children : z;
+ try {
+ var K = U(z, s2, u2, f2, t, d2, _3);
+ return w && w(t), l.unmount && l.unmount(t), K;
+ } catch (r) {
+ if (!d2 && _3 && _3.onError) {
+ var G = _3.onError(r, t, function(e, t2) {
+ return U(e, s2, u2, f2, t2, d2, _3);
+ });
+ if (void 0 !== G) return G;
+ var J2 = l.__e;
+ return J2 && J2(r, t), j;
+ }
+ if (!d2) throw r;
+ if (!r || "function" != typeof r.then) throw r;
+ return r.then(function e() {
+ try {
+ return U(z, s2, u2, f2, t, d2, _3);
+ } catch (r2) {
+ if (!r2 || "function" != typeof r2.then) throw r2;
+ return r2.then(function() {
+ return U(z, s2, u2, f2, t, d2, _3);
+ }, e);
+ }
+ });
+ }
+ }
+ var Q, X = "<" + M, Y = j;
+ for (var ee in W) {
+ var te = W[ee];
+ if ("function" != typeof te || "class" === ee || "className" === ee) {
+ switch (ee) {
+ case "children":
+ Q = te;
+ continue;
+ case "key":
+ case "ref":
+ case "__self":
+ case "__source":
+ continue;
+ case "htmlFor":
+ if ("for" in W) continue;
+ ee = "for";
+ break;
+ case "className":
+ if ("class" in W) continue;
+ ee = "class";
+ break;
+ case "defaultChecked":
+ ee = "checked";
+ break;
+ case "defaultSelected":
+ ee = "selected";
+ break;
+ case "defaultValue":
+ case "value":
+ switch (ee = "value", M) {
+ case "textarea":
+ Q = te;
+ continue;
+ case "select":
+ f2 = te;
+ continue;
+ case "option":
+ f2 != te || "selected" in W || (X += " selected");
+ }
+ break;
+ case "dangerouslySetInnerHTML":
+ Y = te && te.__html;
+ continue;
+ case "style":
+ "object" == typeof te && (te = h(te));
+ break;
+ case "acceptCharset":
+ ee = "accept-charset";
+ break;
+ case "httpEquiv":
+ ee = "http-equiv";
+ break;
+ default:
+ if (o.test(ee)) ee = ee.replace(o, "$1:$2").toLowerCase();
+ else {
+ if (n.test(ee)) continue;
+ "-" !== ee[4] && !c.has(ee) || null == te ? u2 ? a.test(ee) && (ee = "panose1" === ee ? "panose-1" : ee.replace(/([A-Z])/g, "-$1").toLowerCase()) : i.test(ee) && (ee = ee.toLowerCase()) : te += j;
+ }
+ }
+ null != te && false !== te && (X = true === te || te === j ? X + " " + ee : X + " " + ee + '="' + ("string" == typeof te ? l2(te) : te + j) + '"');
+ }
+ }
+ if (n.test(M)) throw new Error(M + " is not a valid HTML tag name in " + X + ">");
+ if (Y || ("string" == typeof Q ? Y = l2(Q) : null != Q && false !== Q && true !== Q && (Y = U(Q, s2, "svg" === M || "foreignObject" !== M && u2, f2, t, d2, _3))), w && w(t), C && C(t), !Y && Z.has(M)) return X + "/>";
+ var re = "" + M + ">", ne = X + ">";
+ return E(Y) ? [ne].concat(Y, [re]) : "string" != typeof Y ? [ne, Y, re] : ne + Y + re;
+}
+var Z = /* @__PURE__ */ new Set(["area", "base", "br", "col", "command", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr"]);
+
+// node_modules/preact-iso/src/prerender.js
+var vnodeHook;
+var old = l.vnode;
+l.vnode = (vnode) => {
+ if (old) old(vnode);
+ if (vnodeHook) vnodeHook(vnode);
+};
+async function prerender(vnode, options) {
+ options = options || {};
+ const props = options.props;
+ if (typeof vnode === "function") {
+ vnode = _(vnode, props);
+ } else if (props) {
+ vnode = J(vnode, props);
+ }
+ let links = /* @__PURE__ */ new Set();
+ vnodeHook = ({ type, props: props2 }) => {
+ if (type === "a" && props2 && props2.href && (!props2.target || props2.target === "_self")) {
+ links.add(props2.href);
+ }
+ };
+ try {
+ let html = await A(vnode);
+ html += ``;\n\t\treturn { html, links };\n\t} finally {\n\t\tvnodeHook = null;\n\t}\n}\n\n/**\n * Update `location` to current URL so routers can use things like `location.pathname`\n *\n * @param {string} path - current URL path\n */\nexport function locationStub(path) {\n\tglobalThis.location = {};\n\tconst u = new URL(path, 'http://localhost');\n\tfor (const i in u) {\n\t\ttry {\n\t\t\tglobalThis.location[i] = /to[A-Z]/.test(i)\n\t\t\t\t? u[i].bind(u)\n\t\t\t\t: String(u[i]);\n\t\t} catch {}\n\t}\n}\n"],
+ "mappings": "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",
+ "names": ["UNSAFE_NAME", "NAMESPACE_REPLACE_REGEX", "HTML_LOWER_CASE", "SVG_CAMEL_CASE", "HTML_ENUMERATED", "Set", "ENCODED_ENTITIES", "encodeEntities", "str", "length", "test", "last", "i", "out", "ch", "charCodeAt", "slice", "JS_TO_CSS", "IS_NON_DIMENSIONAL", "CSS_REGEX", "styleObjToCss", "s", "prop", "val", "name", "replace", "toLowerCase", "suffix", "startsWith", "has", "markAsDirty", "this", "__d", "createComponent", "vnode", "context", "__v", "props", "setState", "forceUpdate", "__h", "Array", "_", "pact", "state", "value", "o", "_settle", "bind", "v", "then", "observer", "_Pact", "prototype", "onFulfilled", "onRejected", "result", "callback", "e", "_this", "thenable", "update", "body", "stage", "shouldContinue", "_isSettledPact", "updateValue", "reject", "_resumeAfterTest", "_resumeAfterBody", "_resumeAfterUpdate", "finalizer", "renderToStringAsync", "beforeDiff", "afterDiff", "renderHook", "ummountHook", "previousSkipEffects", "options", "unmount", "parent", "h", "Fragment", "_renderToString", "EMPTY_OBJ", "undefined", "rendered", "isArray", "resolved", "join", "EMPTY_STR", "count", "some", "element", "Promise", "all", "_Promise$all", "flat", "r", "EMPTY_ARR", "assign", "Object", "renderClassComponent", "vnode", "context", "c", "type", "isMounting", "state", "props", "EMPTY_OBJ", "getDerivedStateFromProps", "assign", "componentWillMount", "componentWillUpdate", "renderHook", "render", "_renderToString", "isSvgMode", "selectValue", "parent", "asyncMode", "renderer", "EMPTY_STR", "vnodeType", "encodeEntities", "isArray", "renderArray", "rendered", "vnodeLength", "length", "i", "child", "childRender", "Array", "push", "constructor", "beforeDiff", "contextType", "component", "cctx", "Fragment", "out", "tpl", "exprs", "value", "UNSTABLE_comment", "children", "provider", "__c", "__", "isClassComponent", "prototype", "createComponent", "count", "call", "getChildContext", "options", "errorBoundaries", "getDerivedStateFromError", "componentDidCatch", "key", "err", "afterDiff", "ummountHook", "str", "unmount", "error", "onError", "res", "errorHook", "then", "renderNestedChildren", "e", "s", "html", "name", "v", "__html", "styleObjToCss", "NAMESPACE_REPLACE_REGEX", "test", "replace", "toLowerCase", "UNSAFE_NAME", "HTML_ENUMERATED", "has", "SVG_CAMEL_CASE", "HTML_LOWER_CASE", "Error", "SELF_CLOSING", "endTag", "startTag", "Set", "props", "u", "i"]
+}
diff --git a/.vite/deps/react.js b/.vite/deps/react.js
new file mode 100644
index 0000000..5fe555a
--- /dev/null
+++ b/.vite/deps/react.js
@@ -0,0 +1,5 @@
+import {
+ require_react
+} from "./chunk-KS2M7ZJI.js";
+import "./chunk-5WRI5ZAA.js";
+export default require_react();
diff --git a/.vite/deps/react.js.map b/.vite/deps/react.js.map
new file mode 100644
index 0000000..9865211
--- /dev/null
+++ b/.vite/deps/react.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": [],
+ "sourcesContent": [],
+ "mappings": "",
+ "names": []
+}
diff --git a/.vite/deps/swiper_modules.js b/.vite/deps/swiper_modules.js
new file mode 100644
index 0000000..4f548d3
--- /dev/null
+++ b/.vite/deps/swiper_modules.js
@@ -0,0 +1,5248 @@
+import {
+ classesToTokens,
+ createElement,
+ elementChildren,
+ elementIndex,
+ elementOffset,
+ elementOuterSize,
+ elementParents,
+ elementTransitionEnd,
+ getDocument,
+ getRotateFix,
+ getSlideTransformEl,
+ getTranslate,
+ getWindow,
+ isObject,
+ makeElementsArray,
+ nextTick,
+ now,
+ setCSSProperty
+} from "./chunk-XLOWEJT4.js";
+import "./chunk-5WRI5ZAA.js";
+
+// node_modules/swiper/modules/virtual.mjs
+function Virtual(_ref) {
+ let {
+ swiper,
+ extendParams,
+ on,
+ emit
+ } = _ref;
+ extendParams({
+ virtual: {
+ enabled: false,
+ slides: [],
+ cache: true,
+ renderSlide: null,
+ renderExternal: null,
+ renderExternalUpdate: true,
+ addSlidesBefore: 0,
+ addSlidesAfter: 0
+ }
+ });
+ let cssModeTimeout;
+ const document2 = getDocument();
+ swiper.virtual = {
+ cache: {},
+ from: void 0,
+ to: void 0,
+ slides: [],
+ offset: 0,
+ slidesGrid: []
+ };
+ const tempDOM = document2.createElement("div");
+ function renderSlide(slide, index) {
+ const params = swiper.params.virtual;
+ if (params.cache && swiper.virtual.cache[index]) {
+ return swiper.virtual.cache[index];
+ }
+ let slideEl;
+ if (params.renderSlide) {
+ slideEl = params.renderSlide.call(swiper, slide, index);
+ if (typeof slideEl === "string") {
+ tempDOM.innerHTML = slideEl;
+ slideEl = tempDOM.children[0];
+ }
+ } else if (swiper.isElement) {
+ slideEl = createElement("swiper-slide");
+ } else {
+ slideEl = createElement("div", swiper.params.slideClass);
+ }
+ slideEl.setAttribute("data-swiper-slide-index", index);
+ if (!params.renderSlide) {
+ slideEl.innerHTML = slide;
+ }
+ if (params.cache) {
+ swiper.virtual.cache[index] = slideEl;
+ }
+ return slideEl;
+ }
+ function update(force, beforeInit, forceActiveIndex) {
+ const {
+ slidesPerView,
+ slidesPerGroup,
+ centeredSlides,
+ loop: isLoop,
+ initialSlide
+ } = swiper.params;
+ if (beforeInit && !isLoop && initialSlide > 0) {
+ return;
+ }
+ const {
+ addSlidesBefore,
+ addSlidesAfter
+ } = swiper.params.virtual;
+ const {
+ from: previousFrom,
+ to: previousTo,
+ slides,
+ slidesGrid: previousSlidesGrid,
+ offset: previousOffset
+ } = swiper.virtual;
+ if (!swiper.params.cssMode) {
+ swiper.updateActiveIndex();
+ }
+ const activeIndex = typeof forceActiveIndex === "undefined" ? swiper.activeIndex || 0 : forceActiveIndex;
+ let offsetProp;
+ if (swiper.rtlTranslate) offsetProp = "right";
+ else offsetProp = swiper.isHorizontal() ? "left" : "top";
+ let slidesAfter;
+ let slidesBefore;
+ if (centeredSlides) {
+ slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
+ slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
+ } else {
+ slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;
+ slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;
+ }
+ let from = activeIndex - slidesBefore;
+ let to = activeIndex + slidesAfter;
+ if (!isLoop) {
+ from = Math.max(from, 0);
+ to = Math.min(to, slides.length - 1);
+ }
+ let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
+ if (isLoop && activeIndex >= slidesBefore) {
+ from -= slidesBefore;
+ if (!centeredSlides) offset += swiper.slidesGrid[0];
+ } else if (isLoop && activeIndex < slidesBefore) {
+ from = -slidesBefore;
+ if (centeredSlides) offset += swiper.slidesGrid[0];
+ }
+ Object.assign(swiper.virtual, {
+ from,
+ to,
+ offset,
+ slidesGrid: swiper.slidesGrid,
+ slidesBefore,
+ slidesAfter
+ });
+ function onRendered() {
+ swiper.updateSlides();
+ swiper.updateProgress();
+ swiper.updateSlidesClasses();
+ emit("virtualUpdate");
+ }
+ if (previousFrom === from && previousTo === to && !force) {
+ if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
+ swiper.slides.forEach((slideEl) => {
+ slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;
+ });
+ }
+ swiper.updateProgress();
+ emit("virtualUpdate");
+ return;
+ }
+ if (swiper.params.virtual.renderExternal) {
+ swiper.params.virtual.renderExternal.call(swiper, {
+ offset,
+ from,
+ to,
+ slides: function getSlides() {
+ const slidesToRender = [];
+ for (let i = from; i <= to; i += 1) {
+ slidesToRender.push(slides[i]);
+ }
+ return slidesToRender;
+ }()
+ });
+ if (swiper.params.virtual.renderExternalUpdate) {
+ onRendered();
+ } else {
+ emit("virtualUpdate");
+ }
+ return;
+ }
+ const prependIndexes = [];
+ const appendIndexes = [];
+ const getSlideIndex = (index) => {
+ let slideIndex = index;
+ if (index < 0) {
+ slideIndex = slides.length + index;
+ } else if (slideIndex >= slides.length) {
+ slideIndex = slideIndex - slides.length;
+ }
+ return slideIndex;
+ };
+ if (force) {
+ swiper.slides.filter((el) => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach((slideEl) => {
+ slideEl.remove();
+ });
+ } else {
+ for (let i = previousFrom; i <= previousTo; i += 1) {
+ if (i < from || i > to) {
+ const slideIndex = getSlideIndex(i);
+ swiper.slides.filter((el) => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach((slideEl) => {
+ slideEl.remove();
+ });
+ }
+ }
+ }
+ const loopFrom = isLoop ? -slides.length : 0;
+ const loopTo = isLoop ? slides.length * 2 : slides.length;
+ for (let i = loopFrom; i < loopTo; i += 1) {
+ if (i >= from && i <= to) {
+ const slideIndex = getSlideIndex(i);
+ if (typeof previousTo === "undefined" || force) {
+ appendIndexes.push(slideIndex);
+ } else {
+ if (i > previousTo) appendIndexes.push(slideIndex);
+ if (i < previousFrom) prependIndexes.push(slideIndex);
+ }
+ }
+ }
+ appendIndexes.forEach((index) => {
+ swiper.slidesEl.append(renderSlide(slides[index], index));
+ });
+ if (isLoop) {
+ for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {
+ const index = prependIndexes[i];
+ swiper.slidesEl.prepend(renderSlide(slides[index], index));
+ }
+ } else {
+ prependIndexes.sort((a, b) => b - a);
+ prependIndexes.forEach((index) => {
+ swiper.slidesEl.prepend(renderSlide(slides[index], index));
+ });
+ }
+ elementChildren(swiper.slidesEl, ".swiper-slide, swiper-slide").forEach((slideEl) => {
+ slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;
+ });
+ onRendered();
+ }
+ function appendSlide2(slides) {
+ if (typeof slides === "object" && "length" in slides) {
+ for (let i = 0; i < slides.length; i += 1) {
+ if (slides[i]) swiper.virtual.slides.push(slides[i]);
+ }
+ } else {
+ swiper.virtual.slides.push(slides);
+ }
+ update(true);
+ }
+ function prependSlide2(slides) {
+ const activeIndex = swiper.activeIndex;
+ let newActiveIndex = activeIndex + 1;
+ let numberOfNewSlides = 1;
+ if (Array.isArray(slides)) {
+ for (let i = 0; i < slides.length; i += 1) {
+ if (slides[i]) swiper.virtual.slides.unshift(slides[i]);
+ }
+ newActiveIndex = activeIndex + slides.length;
+ numberOfNewSlides = slides.length;
+ } else {
+ swiper.virtual.slides.unshift(slides);
+ }
+ if (swiper.params.virtual.cache) {
+ const cache = swiper.virtual.cache;
+ const newCache = {};
+ Object.keys(cache).forEach((cachedIndex) => {
+ const cachedEl = cache[cachedIndex];
+ const cachedElIndex = cachedEl.getAttribute("data-swiper-slide-index");
+ if (cachedElIndex) {
+ cachedEl.setAttribute("data-swiper-slide-index", parseInt(cachedElIndex, 10) + numberOfNewSlides);
+ }
+ newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;
+ });
+ swiper.virtual.cache = newCache;
+ }
+ update(true);
+ swiper.slideTo(newActiveIndex, 0);
+ }
+ function removeSlide2(slidesIndexes) {
+ if (typeof slidesIndexes === "undefined" || slidesIndexes === null) return;
+ let activeIndex = swiper.activeIndex;
+ if (Array.isArray(slidesIndexes)) {
+ for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {
+ if (swiper.params.virtual.cache) {
+ delete swiper.virtual.cache[slidesIndexes[i]];
+ Object.keys(swiper.virtual.cache).forEach((key) => {
+ if (key > slidesIndexes) {
+ swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];
+ swiper.virtual.cache[key - 1].setAttribute("data-swiper-slide-index", key - 1);
+ delete swiper.virtual.cache[key];
+ }
+ });
+ }
+ swiper.virtual.slides.splice(slidesIndexes[i], 1);
+ if (slidesIndexes[i] < activeIndex) activeIndex -= 1;
+ activeIndex = Math.max(activeIndex, 0);
+ }
+ } else {
+ if (swiper.params.virtual.cache) {
+ delete swiper.virtual.cache[slidesIndexes];
+ Object.keys(swiper.virtual.cache).forEach((key) => {
+ if (key > slidesIndexes) {
+ swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];
+ swiper.virtual.cache[key - 1].setAttribute("data-swiper-slide-index", key - 1);
+ delete swiper.virtual.cache[key];
+ }
+ });
+ }
+ swiper.virtual.slides.splice(slidesIndexes, 1);
+ if (slidesIndexes < activeIndex) activeIndex -= 1;
+ activeIndex = Math.max(activeIndex, 0);
+ }
+ update(true);
+ swiper.slideTo(activeIndex, 0);
+ }
+ function removeAllSlides2() {
+ swiper.virtual.slides = [];
+ if (swiper.params.virtual.cache) {
+ swiper.virtual.cache = {};
+ }
+ update(true);
+ swiper.slideTo(0, 0);
+ }
+ on("beforeInit", () => {
+ if (!swiper.params.virtual.enabled) return;
+ let domSlidesAssigned;
+ if (typeof swiper.passedParams.virtual.slides === "undefined") {
+ const slides = [...swiper.slidesEl.children].filter((el) => el.matches(`.${swiper.params.slideClass}, swiper-slide`));
+ if (slides && slides.length) {
+ swiper.virtual.slides = [...slides];
+ domSlidesAssigned = true;
+ slides.forEach((slideEl, slideIndex) => {
+ slideEl.setAttribute("data-swiper-slide-index", slideIndex);
+ swiper.virtual.cache[slideIndex] = slideEl;
+ slideEl.remove();
+ });
+ }
+ }
+ if (!domSlidesAssigned) {
+ swiper.virtual.slides = swiper.params.virtual.slides;
+ }
+ swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);
+ swiper.params.watchSlidesProgress = true;
+ swiper.originalParams.watchSlidesProgress = true;
+ update(false, true);
+ });
+ on("setTranslate", () => {
+ if (!swiper.params.virtual.enabled) return;
+ if (swiper.params.cssMode && !swiper._immediateVirtual) {
+ clearTimeout(cssModeTimeout);
+ cssModeTimeout = setTimeout(() => {
+ update();
+ }, 100);
+ } else {
+ update();
+ }
+ });
+ on("init update resize", () => {
+ if (!swiper.params.virtual.enabled) return;
+ if (swiper.params.cssMode) {
+ setCSSProperty(swiper.wrapperEl, "--swiper-virtual-size", `${swiper.virtualSize}px`);
+ }
+ });
+ Object.assign(swiper.virtual, {
+ appendSlide: appendSlide2,
+ prependSlide: prependSlide2,
+ removeSlide: removeSlide2,
+ removeAllSlides: removeAllSlides2,
+ update
+ });
+}
+
+// node_modules/swiper/modules/keyboard.mjs
+function Keyboard(_ref) {
+ let {
+ swiper,
+ extendParams,
+ on,
+ emit
+ } = _ref;
+ const document2 = getDocument();
+ const window2 = getWindow();
+ swiper.keyboard = {
+ enabled: false
+ };
+ extendParams({
+ keyboard: {
+ enabled: false,
+ onlyInViewport: true,
+ pageUpDown: true
+ }
+ });
+ function handle(event2) {
+ if (!swiper.enabled) return;
+ const {
+ rtlTranslate: rtl
+ } = swiper;
+ let e = event2;
+ if (e.originalEvent) e = e.originalEvent;
+ const kc = e.keyCode || e.charCode;
+ const pageUpDown = swiper.params.keyboard.pageUpDown;
+ const isPageUp = pageUpDown && kc === 33;
+ const isPageDown = pageUpDown && kc === 34;
+ const isArrowLeft = kc === 37;
+ const isArrowRight = kc === 39;
+ const isArrowUp = kc === 38;
+ const isArrowDown = kc === 40;
+ if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {
+ return false;
+ }
+ if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {
+ return false;
+ }
+ if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
+ return void 0;
+ }
+ if (document2.activeElement && document2.activeElement.nodeName && (document2.activeElement.nodeName.toLowerCase() === "input" || document2.activeElement.nodeName.toLowerCase() === "textarea")) {
+ return void 0;
+ }
+ if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {
+ let inView = false;
+ if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {
+ return void 0;
+ }
+ const el = swiper.el;
+ const swiperWidth = el.clientWidth;
+ const swiperHeight = el.clientHeight;
+ const windowWidth = window2.innerWidth;
+ const windowHeight = window2.innerHeight;
+ const swiperOffset = elementOffset(el);
+ if (rtl) swiperOffset.left -= el.scrollLeft;
+ const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];
+ for (let i = 0; i < swiperCoord.length; i += 1) {
+ const point = swiperCoord[i];
+ if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {
+ if (point[0] === 0 && point[1] === 0) continue;
+ inView = true;
+ }
+ }
+ if (!inView) return void 0;
+ }
+ if (swiper.isHorizontal()) {
+ if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {
+ if (e.preventDefault) e.preventDefault();
+ else e.returnValue = false;
+ }
+ if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();
+ if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();
+ } else {
+ if (isPageUp || isPageDown || isArrowUp || isArrowDown) {
+ if (e.preventDefault) e.preventDefault();
+ else e.returnValue = false;
+ }
+ if (isPageDown || isArrowDown) swiper.slideNext();
+ if (isPageUp || isArrowUp) swiper.slidePrev();
+ }
+ emit("keyPress", kc);
+ return void 0;
+ }
+ function enable() {
+ if (swiper.keyboard.enabled) return;
+ document2.addEventListener("keydown", handle);
+ swiper.keyboard.enabled = true;
+ }
+ function disable() {
+ if (!swiper.keyboard.enabled) return;
+ document2.removeEventListener("keydown", handle);
+ swiper.keyboard.enabled = false;
+ }
+ on("init", () => {
+ if (swiper.params.keyboard.enabled) {
+ enable();
+ }
+ });
+ on("destroy", () => {
+ if (swiper.keyboard.enabled) {
+ disable();
+ }
+ });
+ Object.assign(swiper.keyboard, {
+ enable,
+ disable
+ });
+}
+
+// node_modules/swiper/modules/mousewheel.mjs
+function Mousewheel(_ref) {
+ let {
+ swiper,
+ extendParams,
+ on,
+ emit
+ } = _ref;
+ const window2 = getWindow();
+ extendParams({
+ mousewheel: {
+ enabled: false,
+ releaseOnEdges: false,
+ invert: false,
+ forceToAxis: false,
+ sensitivity: 1,
+ eventsTarget: "container",
+ thresholdDelta: null,
+ thresholdTime: null,
+ noMousewheelClass: "swiper-no-mousewheel"
+ }
+ });
+ swiper.mousewheel = {
+ enabled: false
+ };
+ let timeout;
+ let lastScrollTime = now();
+ let lastEventBeforeSnap;
+ const recentWheelEvents = [];
+ function normalize(e) {
+ const PIXEL_STEP = 10;
+ const LINE_HEIGHT = 40;
+ const PAGE_HEIGHT = 800;
+ let sX = 0;
+ let sY = 0;
+ let pX = 0;
+ let pY = 0;
+ if ("detail" in e) {
+ sY = e.detail;
+ }
+ if ("wheelDelta" in e) {
+ sY = -e.wheelDelta / 120;
+ }
+ if ("wheelDeltaY" in e) {
+ sY = -e.wheelDeltaY / 120;
+ }
+ if ("wheelDeltaX" in e) {
+ sX = -e.wheelDeltaX / 120;
+ }
+ if ("axis" in e && e.axis === e.HORIZONTAL_AXIS) {
+ sX = sY;
+ sY = 0;
+ }
+ pX = sX * PIXEL_STEP;
+ pY = sY * PIXEL_STEP;
+ if ("deltaY" in e) {
+ pY = e.deltaY;
+ }
+ if ("deltaX" in e) {
+ pX = e.deltaX;
+ }
+ if (e.shiftKey && !pX) {
+ pX = pY;
+ pY = 0;
+ }
+ if ((pX || pY) && e.deltaMode) {
+ if (e.deltaMode === 1) {
+ pX *= LINE_HEIGHT;
+ pY *= LINE_HEIGHT;
+ } else {
+ pX *= PAGE_HEIGHT;
+ pY *= PAGE_HEIGHT;
+ }
+ }
+ if (pX && !sX) {
+ sX = pX < 1 ? -1 : 1;
+ }
+ if (pY && !sY) {
+ sY = pY < 1 ? -1 : 1;
+ }
+ return {
+ spinX: sX,
+ spinY: sY,
+ pixelX: pX,
+ pixelY: pY
+ };
+ }
+ function handleMouseEnter() {
+ if (!swiper.enabled) return;
+ swiper.mouseEntered = true;
+ }
+ function handleMouseLeave() {
+ if (!swiper.enabled) return;
+ swiper.mouseEntered = false;
+ }
+ function animateSlider(newEvent) {
+ if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {
+ return false;
+ }
+ if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {
+ return false;
+ }
+ if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {
+ return true;
+ }
+ if (newEvent.direction < 0) {
+ if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
+ swiper.slideNext();
+ emit("scroll", newEvent.raw);
+ }
+ } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
+ swiper.slidePrev();
+ emit("scroll", newEvent.raw);
+ }
+ lastScrollTime = new window2.Date().getTime();
+ return false;
+ }
+ function releaseScroll(newEvent) {
+ const params = swiper.params.mousewheel;
+ if (newEvent.direction < 0) {
+ if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {
+ return true;
+ }
+ } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {
+ return true;
+ }
+ return false;
+ }
+ function handle(event2) {
+ let e = event2;
+ let disableParentSwiper = true;
+ if (!swiper.enabled) return;
+ if (event2.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;
+ const params = swiper.params.mousewheel;
+ if (swiper.params.cssMode) {
+ e.preventDefault();
+ }
+ let targetEl = swiper.el;
+ if (swiper.params.mousewheel.eventsTarget !== "container") {
+ targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);
+ }
+ const targetElContainsTarget = targetEl && targetEl.contains(e.target);
+ if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;
+ if (e.originalEvent) e = e.originalEvent;
+ let delta = 0;
+ const rtlFactor = swiper.rtlTranslate ? -1 : 1;
+ const data = normalize(e);
+ if (params.forceToAxis) {
+ if (swiper.isHorizontal()) {
+ if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;
+ else return true;
+ } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;
+ else return true;
+ } else {
+ delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
+ }
+ if (delta === 0) return true;
+ if (params.invert) delta = -delta;
+ let positions = swiper.getTranslate() + delta * params.sensitivity;
+ if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();
+ if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();
+ disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());
+ if (disableParentSwiper && swiper.params.nested) e.stopPropagation();
+ if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {
+ const newEvent = {
+ time: now(),
+ delta: Math.abs(delta),
+ direction: Math.sign(delta),
+ raw: event2
+ };
+ if (recentWheelEvents.length >= 2) {
+ recentWheelEvents.shift();
+ }
+ const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : void 0;
+ recentWheelEvents.push(newEvent);
+ if (prevEvent) {
+ if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {
+ animateSlider(newEvent);
+ }
+ } else {
+ animateSlider(newEvent);
+ }
+ if (releaseScroll(newEvent)) {
+ return true;
+ }
+ } else {
+ const newEvent = {
+ time: now(),
+ delta: Math.abs(delta),
+ direction: Math.sign(delta)
+ };
+ const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;
+ if (!ignoreWheelEvents) {
+ lastEventBeforeSnap = void 0;
+ let position = swiper.getTranslate() + delta * params.sensitivity;
+ const wasBeginning = swiper.isBeginning;
+ const wasEnd = swiper.isEnd;
+ if (position >= swiper.minTranslate()) position = swiper.minTranslate();
+ if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();
+ swiper.setTransition(0);
+ swiper.setTranslate(position);
+ swiper.updateProgress();
+ swiper.updateActiveIndex();
+ swiper.updateSlidesClasses();
+ if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {
+ swiper.updateSlidesClasses();
+ }
+ if (swiper.params.loop) {
+ swiper.loopFix({
+ direction: newEvent.direction < 0 ? "next" : "prev",
+ byMousewheel: true
+ });
+ }
+ if (swiper.params.freeMode.sticky) {
+ clearTimeout(timeout);
+ timeout = void 0;
+ if (recentWheelEvents.length >= 15) {
+ recentWheelEvents.shift();
+ }
+ const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : void 0;
+ const firstEvent = recentWheelEvents[0];
+ recentWheelEvents.push(newEvent);
+ if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {
+ recentWheelEvents.splice(0);
+ } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {
+ const snapToThreshold = delta > 0 ? 0.8 : 0.2;
+ lastEventBeforeSnap = newEvent;
+ recentWheelEvents.splice(0);
+ timeout = nextTick(() => {
+ if (swiper.destroyed || !swiper.params) return;
+ swiper.slideToClosest(swiper.params.speed, true, void 0, snapToThreshold);
+ }, 0);
+ }
+ if (!timeout) {
+ timeout = nextTick(() => {
+ if (swiper.destroyed || !swiper.params) return;
+ const snapToThreshold = 0.5;
+ lastEventBeforeSnap = newEvent;
+ recentWheelEvents.splice(0);
+ swiper.slideToClosest(swiper.params.speed, true, void 0, snapToThreshold);
+ }, 500);
+ }
+ }
+ if (!ignoreWheelEvents) emit("scroll", e);
+ if (swiper.params.autoplay && swiper.params.autoplay.disableOnInteraction) swiper.autoplay.stop();
+ if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {
+ return true;
+ }
+ }
+ }
+ if (e.preventDefault) e.preventDefault();
+ else e.returnValue = false;
+ return false;
+ }
+ function events(method) {
+ let targetEl = swiper.el;
+ if (swiper.params.mousewheel.eventsTarget !== "container") {
+ targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);
+ }
+ targetEl[method]("mouseenter", handleMouseEnter);
+ targetEl[method]("mouseleave", handleMouseLeave);
+ targetEl[method]("wheel", handle);
+ }
+ function enable() {
+ if (swiper.params.cssMode) {
+ swiper.wrapperEl.removeEventListener("wheel", handle);
+ return true;
+ }
+ if (swiper.mousewheel.enabled) return false;
+ events("addEventListener");
+ swiper.mousewheel.enabled = true;
+ return true;
+ }
+ function disable() {
+ if (swiper.params.cssMode) {
+ swiper.wrapperEl.addEventListener(event, handle);
+ return true;
+ }
+ if (!swiper.mousewheel.enabled) return false;
+ events("removeEventListener");
+ swiper.mousewheel.enabled = false;
+ return true;
+ }
+ on("init", () => {
+ if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {
+ disable();
+ }
+ if (swiper.params.mousewheel.enabled) enable();
+ });
+ on("destroy", () => {
+ if (swiper.params.cssMode) {
+ enable();
+ }
+ if (swiper.mousewheel.enabled) disable();
+ });
+ Object.assign(swiper.mousewheel, {
+ enable,
+ disable
+ });
+}
+
+// node_modules/swiper/shared/create-element-if-not-defined.mjs
+function createElementIfNotDefined(swiper, originalParams, params, checkProps) {
+ if (swiper.params.createElements) {
+ Object.keys(checkProps).forEach((key) => {
+ if (!params[key] && params.auto === true) {
+ let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];
+ if (!element) {
+ element = createElement("div", checkProps[key]);
+ element.className = checkProps[key];
+ swiper.el.append(element);
+ }
+ params[key] = element;
+ originalParams[key] = element;
+ }
+ });
+ }
+ return params;
+}
+
+// node_modules/swiper/modules/navigation.mjs
+function Navigation(_ref) {
+ let {
+ swiper,
+ extendParams,
+ on,
+ emit
+ } = _ref;
+ extendParams({
+ navigation: {
+ nextEl: null,
+ prevEl: null,
+ hideOnClick: false,
+ disabledClass: "swiper-button-disabled",
+ hiddenClass: "swiper-button-hidden",
+ lockClass: "swiper-button-lock",
+ navigationDisabledClass: "swiper-navigation-disabled"
+ }
+ });
+ swiper.navigation = {
+ nextEl: null,
+ prevEl: null
+ };
+ function getEl(el) {
+ let res;
+ if (el && typeof el === "string" && swiper.isElement) {
+ res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);
+ if (res) return res;
+ }
+ if (el) {
+ if (typeof el === "string") res = [...document.querySelectorAll(el)];
+ if (swiper.params.uniqueNavElements && typeof el === "string" && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {
+ res = swiper.el.querySelector(el);
+ } else if (res && res.length === 1) {
+ res = res[0];
+ }
+ }
+ if (el && !res) return el;
+ return res;
+ }
+ function toggleEl(el, disabled) {
+ const params = swiper.params.navigation;
+ el = makeElementsArray(el);
+ el.forEach((subEl) => {
+ if (subEl) {
+ subEl.classList[disabled ? "add" : "remove"](...params.disabledClass.split(" "));
+ if (subEl.tagName === "BUTTON") subEl.disabled = disabled;
+ if (swiper.params.watchOverflow && swiper.enabled) {
+ subEl.classList[swiper.isLocked ? "add" : "remove"](params.lockClass);
+ }
+ }
+ });
+ }
+ function update() {
+ const {
+ nextEl,
+ prevEl
+ } = swiper.navigation;
+ if (swiper.params.loop) {
+ toggleEl(prevEl, false);
+ toggleEl(nextEl, false);
+ return;
+ }
+ toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);
+ toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);
+ }
+ function onPrevClick(e) {
+ e.preventDefault();
+ if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;
+ swiper.slidePrev();
+ emit("navigationPrev");
+ }
+ function onNextClick(e) {
+ e.preventDefault();
+ if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;
+ swiper.slideNext();
+ emit("navigationNext");
+ }
+ function init() {
+ const params = swiper.params.navigation;
+ swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {
+ nextEl: "swiper-button-next",
+ prevEl: "swiper-button-prev"
+ });
+ if (!(params.nextEl || params.prevEl)) return;
+ let nextEl = getEl(params.nextEl);
+ let prevEl = getEl(params.prevEl);
+ Object.assign(swiper.navigation, {
+ nextEl,
+ prevEl
+ });
+ nextEl = makeElementsArray(nextEl);
+ prevEl = makeElementsArray(prevEl);
+ const initButton = (el, dir) => {
+ if (el) {
+ el.addEventListener("click", dir === "next" ? onNextClick : onPrevClick);
+ }
+ if (!swiper.enabled && el) {
+ el.classList.add(...params.lockClass.split(" "));
+ }
+ };
+ nextEl.forEach((el) => initButton(el, "next"));
+ prevEl.forEach((el) => initButton(el, "prev"));
+ }
+ function destroy() {
+ let {
+ nextEl,
+ prevEl
+ } = swiper.navigation;
+ nextEl = makeElementsArray(nextEl);
+ prevEl = makeElementsArray(prevEl);
+ const destroyButton = (el, dir) => {
+ el.removeEventListener("click", dir === "next" ? onNextClick : onPrevClick);
+ el.classList.remove(...swiper.params.navigation.disabledClass.split(" "));
+ };
+ nextEl.forEach((el) => destroyButton(el, "next"));
+ prevEl.forEach((el) => destroyButton(el, "prev"));
+ }
+ on("init", () => {
+ if (swiper.params.navigation.enabled === false) {
+ disable();
+ } else {
+ init();
+ update();
+ }
+ });
+ on("toEdge fromEdge lock unlock", () => {
+ update();
+ });
+ on("destroy", () => {
+ destroy();
+ });
+ on("enable disable", () => {
+ let {
+ nextEl,
+ prevEl
+ } = swiper.navigation;
+ nextEl = makeElementsArray(nextEl);
+ prevEl = makeElementsArray(prevEl);
+ if (swiper.enabled) {
+ update();
+ return;
+ }
+ [...nextEl, ...prevEl].filter((el) => !!el).forEach((el) => el.classList.add(swiper.params.navigation.lockClass));
+ });
+ on("click", (_s, e) => {
+ let {
+ nextEl,
+ prevEl
+ } = swiper.navigation;
+ nextEl = makeElementsArray(nextEl);
+ prevEl = makeElementsArray(prevEl);
+ const targetEl = e.target;
+ let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);
+ if (swiper.isElement && !targetIsButton) {
+ const path = e.path || e.composedPath && e.composedPath();
+ if (path) {
+ targetIsButton = path.find((pathEl) => nextEl.includes(pathEl) || prevEl.includes(pathEl));
+ }
+ }
+ if (swiper.params.navigation.hideOnClick && !targetIsButton) {
+ if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;
+ let isHidden;
+ if (nextEl.length) {
+ isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);
+ } else if (prevEl.length) {
+ isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);
+ }
+ if (isHidden === true) {
+ emit("navigationShow");
+ } else {
+ emit("navigationHide");
+ }
+ [...nextEl, ...prevEl].filter((el) => !!el).forEach((el) => el.classList.toggle(swiper.params.navigation.hiddenClass));
+ }
+ });
+ const enable = () => {
+ swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(" "));
+ init();
+ update();
+ };
+ const disable = () => {
+ swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(" "));
+ destroy();
+ };
+ Object.assign(swiper.navigation, {
+ enable,
+ disable,
+ update,
+ init,
+ destroy
+ });
+}
+
+// node_modules/swiper/shared/classes-to-selector.mjs
+function classesToSelector(classes) {
+ if (classes === void 0) {
+ classes = "";
+ }
+ return `.${classes.trim().replace(/([\.:!+\/])/g, "\\$1").replace(/ /g, ".")}`;
+}
+
+// node_modules/swiper/modules/pagination.mjs
+function Pagination(_ref) {
+ let {
+ swiper,
+ extendParams,
+ on,
+ emit
+ } = _ref;
+ const pfx = "swiper-pagination";
+ extendParams({
+ pagination: {
+ el: null,
+ bulletElement: "span",
+ clickable: false,
+ hideOnClick: false,
+ renderBullet: null,
+ renderProgressbar: null,
+ renderFraction: null,
+ renderCustom: null,
+ progressbarOpposite: false,
+ type: "bullets",
+ // 'bullets' or 'progressbar' or 'fraction' or 'custom'
+ dynamicBullets: false,
+ dynamicMainBullets: 1,
+ formatFractionCurrent: (number) => number,
+ formatFractionTotal: (number) => number,
+ bulletClass: `${pfx}-bullet`,
+ bulletActiveClass: `${pfx}-bullet-active`,
+ modifierClass: `${pfx}-`,
+ currentClass: `${pfx}-current`,
+ totalClass: `${pfx}-total`,
+ hiddenClass: `${pfx}-hidden`,
+ progressbarFillClass: `${pfx}-progressbar-fill`,
+ progressbarOppositeClass: `${pfx}-progressbar-opposite`,
+ clickableClass: `${pfx}-clickable`,
+ lockClass: `${pfx}-lock`,
+ horizontalClass: `${pfx}-horizontal`,
+ verticalClass: `${pfx}-vertical`,
+ paginationDisabledClass: `${pfx}-disabled`
+ }
+ });
+ swiper.pagination = {
+ el: null,
+ bullets: []
+ };
+ let bulletSize;
+ let dynamicBulletIndex = 0;
+ function isPaginationDisabled() {
+ return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;
+ }
+ function setSideBullets(bulletEl, position) {
+ const {
+ bulletActiveClass
+ } = swiper.params.pagination;
+ if (!bulletEl) return;
+ bulletEl = bulletEl[`${position === "prev" ? "previous" : "next"}ElementSibling`];
+ if (bulletEl) {
+ bulletEl.classList.add(`${bulletActiveClass}-${position}`);
+ bulletEl = bulletEl[`${position === "prev" ? "previous" : "next"}ElementSibling`];
+ if (bulletEl) {
+ bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);
+ }
+ }
+ }
+ function getMoveDirection(prevIndex, nextIndex, length) {
+ prevIndex = prevIndex % length;
+ nextIndex = nextIndex % length;
+ if (nextIndex === prevIndex + 1) {
+ return "next";
+ } else if (nextIndex === prevIndex - 1) {
+ return "previous";
+ }
+ return;
+ }
+ function onBulletClick(e) {
+ const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));
+ if (!bulletEl) {
+ return;
+ }
+ e.preventDefault();
+ const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;
+ if (swiper.params.loop) {
+ if (swiper.realIndex === index) return;
+ const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length);
+ if (moveDirection === "next") {
+ swiper.slideNext();
+ } else if (moveDirection === "previous") {
+ swiper.slidePrev();
+ } else {
+ swiper.slideToLoop(index);
+ }
+ } else {
+ swiper.slideTo(index);
+ }
+ }
+ function update() {
+ const rtl = swiper.rtl;
+ const params = swiper.params.pagination;
+ if (isPaginationDisabled()) return;
+ let el = swiper.pagination.el;
+ el = makeElementsArray(el);
+ let current;
+ let previousIndex;
+ const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
+ const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
+ if (swiper.params.loop) {
+ previousIndex = swiper.previousRealIndex || 0;
+ current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;
+ } else if (typeof swiper.snapIndex !== "undefined") {
+ current = swiper.snapIndex;
+ previousIndex = swiper.previousSnapIndex;
+ } else {
+ previousIndex = swiper.previousIndex || 0;
+ current = swiper.activeIndex || 0;
+ }
+ if (params.type === "bullets" && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
+ const bullets = swiper.pagination.bullets;
+ let firstIndex;
+ let lastIndex;
+ let midIndex;
+ if (params.dynamicBullets) {
+ bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? "width" : "height", true);
+ el.forEach((subEl) => {
+ subEl.style[swiper.isHorizontal() ? "width" : "height"] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;
+ });
+ if (params.dynamicMainBullets > 1 && previousIndex !== void 0) {
+ dynamicBulletIndex += current - (previousIndex || 0);
+ if (dynamicBulletIndex > params.dynamicMainBullets - 1) {
+ dynamicBulletIndex = params.dynamicMainBullets - 1;
+ } else if (dynamicBulletIndex < 0) {
+ dynamicBulletIndex = 0;
+ }
+ }
+ firstIndex = Math.max(current - dynamicBulletIndex, 0);
+ lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
+ midIndex = (lastIndex + firstIndex) / 2;
+ }
+ bullets.forEach((bulletEl) => {
+ const classesToRemove = [...["", "-next", "-next-next", "-prev", "-prev-prev", "-main"].map((suffix) => `${params.bulletActiveClass}${suffix}`)].map((s) => typeof s === "string" && s.includes(" ") ? s.split(" ") : s).flat();
+ bulletEl.classList.remove(...classesToRemove);
+ });
+ if (el.length > 1) {
+ bullets.forEach((bullet) => {
+ const bulletIndex = elementIndex(bullet);
+ if (bulletIndex === current) {
+ bullet.classList.add(...params.bulletActiveClass.split(" "));
+ } else if (swiper.isElement) {
+ bullet.setAttribute("part", "bullet");
+ }
+ if (params.dynamicBullets) {
+ if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
+ bullet.classList.add(...`${params.bulletActiveClass}-main`.split(" "));
+ }
+ if (bulletIndex === firstIndex) {
+ setSideBullets(bullet, "prev");
+ }
+ if (bulletIndex === lastIndex) {
+ setSideBullets(bullet, "next");
+ }
+ }
+ });
+ } else {
+ const bullet = bullets[current];
+ if (bullet) {
+ bullet.classList.add(...params.bulletActiveClass.split(" "));
+ }
+ if (swiper.isElement) {
+ bullets.forEach((bulletEl, bulletIndex) => {
+ bulletEl.setAttribute("part", bulletIndex === current ? "bullet-active" : "bullet");
+ });
+ }
+ if (params.dynamicBullets) {
+ const firstDisplayedBullet = bullets[firstIndex];
+ const lastDisplayedBullet = bullets[lastIndex];
+ for (let i = firstIndex; i <= lastIndex; i += 1) {
+ if (bullets[i]) {
+ bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(" "));
+ }
+ }
+ setSideBullets(firstDisplayedBullet, "prev");
+ setSideBullets(lastDisplayedBullet, "next");
+ }
+ }
+ if (params.dynamicBullets) {
+ const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
+ const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;
+ const offsetProp = rtl ? "right" : "left";
+ bullets.forEach((bullet) => {
+ bullet.style[swiper.isHorizontal() ? offsetProp : "top"] = `${bulletsOffset}px`;
+ });
+ }
+ }
+ el.forEach((subEl, subElIndex) => {
+ if (params.type === "fraction") {
+ subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach((fractionEl) => {
+ fractionEl.textContent = params.formatFractionCurrent(current + 1);
+ });
+ subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach((totalEl) => {
+ totalEl.textContent = params.formatFractionTotal(total);
+ });
+ }
+ if (params.type === "progressbar") {
+ let progressbarDirection;
+ if (params.progressbarOpposite) {
+ progressbarDirection = swiper.isHorizontal() ? "vertical" : "horizontal";
+ } else {
+ progressbarDirection = swiper.isHorizontal() ? "horizontal" : "vertical";
+ }
+ const scale = (current + 1) / total;
+ let scaleX = 1;
+ let scaleY = 1;
+ if (progressbarDirection === "horizontal") {
+ scaleX = scale;
+ } else {
+ scaleY = scale;
+ }
+ subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach((progressEl) => {
+ progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;
+ progressEl.style.transitionDuration = `${swiper.params.speed}ms`;
+ });
+ }
+ if (params.type === "custom" && params.renderCustom) {
+ subEl.innerHTML = params.renderCustom(swiper, current + 1, total);
+ if (subElIndex === 0) emit("paginationRender", subEl);
+ } else {
+ if (subElIndex === 0) emit("paginationRender", subEl);
+ emit("paginationUpdate", subEl);
+ }
+ if (swiper.params.watchOverflow && swiper.enabled) {
+ subEl.classList[swiper.isLocked ? "add" : "remove"](params.lockClass);
+ }
+ });
+ }
+ function render() {
+ const params = swiper.params.pagination;
+ if (isPaginationDisabled()) return;
+ const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;
+ let el = swiper.pagination.el;
+ el = makeElementsArray(el);
+ let paginationHTML = "";
+ if (params.type === "bullets") {
+ let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
+ if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {
+ numberOfBullets = slidesLength;
+ }
+ for (let i = 0; i < numberOfBullets; i += 1) {
+ if (params.renderBullet) {
+ paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
+ } else {
+ paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ""} class="${params.bulletClass}">${params.bulletElement}>`;
+ }
+ }
+ }
+ if (params.type === "fraction") {
+ if (params.renderFraction) {
+ paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
+ } else {
+ paginationHTML = ` / `;
+ }
+ }
+ if (params.type === "progressbar") {
+ if (params.renderProgressbar) {
+ paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
+ } else {
+ paginationHTML = ` `;
+ }
+ }
+ swiper.pagination.bullets = [];
+ el.forEach((subEl) => {
+ if (params.type !== "custom") {
+ subEl.innerHTML = paginationHTML || "";
+ }
+ if (params.type === "bullets") {
+ swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));
+ }
+ });
+ if (params.type !== "custom") {
+ emit("paginationRender", el[0]);
+ }
+ }
+ function init() {
+ swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {
+ el: "swiper-pagination"
+ });
+ const params = swiper.params.pagination;
+ if (!params.el) return;
+ let el;
+ if (typeof params.el === "string" && swiper.isElement) {
+ el = swiper.el.querySelector(params.el);
+ }
+ if (!el && typeof params.el === "string") {
+ el = [...document.querySelectorAll(params.el)];
+ }
+ if (!el) {
+ el = params.el;
+ }
+ if (!el || el.length === 0) return;
+ if (swiper.params.uniqueNavElements && typeof params.el === "string" && Array.isArray(el) && el.length > 1) {
+ el = [...swiper.el.querySelectorAll(params.el)];
+ if (el.length > 1) {
+ el = el.find((subEl) => {
+ if (elementParents(subEl, ".swiper")[0] !== swiper.el) return false;
+ return true;
+ });
+ }
+ }
+ if (Array.isArray(el) && el.length === 1) el = el[0];
+ Object.assign(swiper.pagination, {
+ el
+ });
+ el = makeElementsArray(el);
+ el.forEach((subEl) => {
+ if (params.type === "bullets" && params.clickable) {
+ subEl.classList.add(...(params.clickableClass || "").split(" "));
+ }
+ subEl.classList.add(params.modifierClass + params.type);
+ subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
+ if (params.type === "bullets" && params.dynamicBullets) {
+ subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);
+ dynamicBulletIndex = 0;
+ if (params.dynamicMainBullets < 1) {
+ params.dynamicMainBullets = 1;
+ }
+ }
+ if (params.type === "progressbar" && params.progressbarOpposite) {
+ subEl.classList.add(params.progressbarOppositeClass);
+ }
+ if (params.clickable) {
+ subEl.addEventListener("click", onBulletClick);
+ }
+ if (!swiper.enabled) {
+ subEl.classList.add(params.lockClass);
+ }
+ });
+ }
+ function destroy() {
+ const params = swiper.params.pagination;
+ if (isPaginationDisabled()) return;
+ let el = swiper.pagination.el;
+ if (el) {
+ el = makeElementsArray(el);
+ el.forEach((subEl) => {
+ subEl.classList.remove(params.hiddenClass);
+ subEl.classList.remove(params.modifierClass + params.type);
+ subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
+ if (params.clickable) {
+ subEl.classList.remove(...(params.clickableClass || "").split(" "));
+ subEl.removeEventListener("click", onBulletClick);
+ }
+ });
+ }
+ if (swiper.pagination.bullets) swiper.pagination.bullets.forEach((subEl) => subEl.classList.remove(...params.bulletActiveClass.split(" ")));
+ }
+ on("changeDirection", () => {
+ if (!swiper.pagination || !swiper.pagination.el) return;
+ const params = swiper.params.pagination;
+ let {
+ el
+ } = swiper.pagination;
+ el = makeElementsArray(el);
+ el.forEach((subEl) => {
+ subEl.classList.remove(params.horizontalClass, params.verticalClass);
+ subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
+ });
+ });
+ on("init", () => {
+ if (swiper.params.pagination.enabled === false) {
+ disable();
+ } else {
+ init();
+ render();
+ update();
+ }
+ });
+ on("activeIndexChange", () => {
+ if (typeof swiper.snapIndex === "undefined") {
+ update();
+ }
+ });
+ on("snapIndexChange", () => {
+ update();
+ });
+ on("snapGridLengthChange", () => {
+ render();
+ update();
+ });
+ on("destroy", () => {
+ destroy();
+ });
+ on("enable disable", () => {
+ let {
+ el
+ } = swiper.pagination;
+ if (el) {
+ el = makeElementsArray(el);
+ el.forEach((subEl) => subEl.classList[swiper.enabled ? "remove" : "add"](swiper.params.pagination.lockClass));
+ }
+ });
+ on("lock unlock", () => {
+ update();
+ });
+ on("click", (_s, e) => {
+ const targetEl = e.target;
+ const el = makeElementsArray(swiper.pagination.el);
+ if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {
+ if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;
+ const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);
+ if (isHidden === true) {
+ emit("paginationShow");
+ } else {
+ emit("paginationHide");
+ }
+ el.forEach((subEl) => subEl.classList.toggle(swiper.params.pagination.hiddenClass));
+ }
+ });
+ const enable = () => {
+ swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);
+ let {
+ el
+ } = swiper.pagination;
+ if (el) {
+ el = makeElementsArray(el);
+ el.forEach((subEl) => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));
+ }
+ init();
+ render();
+ update();
+ };
+ const disable = () => {
+ swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);
+ let {
+ el
+ } = swiper.pagination;
+ if (el) {
+ el = makeElementsArray(el);
+ el.forEach((subEl) => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));
+ }
+ destroy();
+ };
+ Object.assign(swiper.pagination, {
+ enable,
+ disable,
+ render,
+ update,
+ init,
+ destroy
+ });
+}
+
+// node_modules/swiper/modules/scrollbar.mjs
+function Scrollbar(_ref) {
+ let {
+ swiper,
+ extendParams,
+ on,
+ emit
+ } = _ref;
+ const document2 = getDocument();
+ let isTouched = false;
+ let timeout = null;
+ let dragTimeout = null;
+ let dragStartPos;
+ let dragSize;
+ let trackSize;
+ let divider;
+ extendParams({
+ scrollbar: {
+ el: null,
+ dragSize: "auto",
+ hide: false,
+ draggable: false,
+ snapOnRelease: true,
+ lockClass: "swiper-scrollbar-lock",
+ dragClass: "swiper-scrollbar-drag",
+ scrollbarDisabledClass: "swiper-scrollbar-disabled",
+ horizontalClass: `swiper-scrollbar-horizontal`,
+ verticalClass: `swiper-scrollbar-vertical`
+ }
+ });
+ swiper.scrollbar = {
+ el: null,
+ dragEl: null
+ };
+ function setTranslate() {
+ if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
+ const {
+ scrollbar,
+ rtlTranslate: rtl
+ } = swiper;
+ const {
+ dragEl,
+ el
+ } = scrollbar;
+ const params = swiper.params.scrollbar;
+ const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;
+ let newSize = dragSize;
+ let newPos = (trackSize - dragSize) * progress;
+ if (rtl) {
+ newPos = -newPos;
+ if (newPos > 0) {
+ newSize = dragSize - newPos;
+ newPos = 0;
+ } else if (-newPos + dragSize > trackSize) {
+ newSize = trackSize + newPos;
+ }
+ } else if (newPos < 0) {
+ newSize = dragSize + newPos;
+ newPos = 0;
+ } else if (newPos + dragSize > trackSize) {
+ newSize = trackSize - newPos;
+ }
+ if (swiper.isHorizontal()) {
+ dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;
+ dragEl.style.width = `${newSize}px`;
+ } else {
+ dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;
+ dragEl.style.height = `${newSize}px`;
+ }
+ if (params.hide) {
+ clearTimeout(timeout);
+ el.style.opacity = 1;
+ timeout = setTimeout(() => {
+ el.style.opacity = 0;
+ el.style.transitionDuration = "400ms";
+ }, 1e3);
+ }
+ }
+ function setTransition(duration) {
+ if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
+ swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;
+ }
+ function updateSize() {
+ if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
+ const {
+ scrollbar
+ } = swiper;
+ const {
+ dragEl,
+ el
+ } = scrollbar;
+ dragEl.style.width = "";
+ dragEl.style.height = "";
+ trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;
+ divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));
+ if (swiper.params.scrollbar.dragSize === "auto") {
+ dragSize = trackSize * divider;
+ } else {
+ dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);
+ }
+ if (swiper.isHorizontal()) {
+ dragEl.style.width = `${dragSize}px`;
+ } else {
+ dragEl.style.height = `${dragSize}px`;
+ }
+ if (divider >= 1) {
+ el.style.display = "none";
+ } else {
+ el.style.display = "";
+ }
+ if (swiper.params.scrollbar.hide) {
+ el.style.opacity = 0;
+ }
+ if (swiper.params.watchOverflow && swiper.enabled) {
+ scrollbar.el.classList[swiper.isLocked ? "add" : "remove"](swiper.params.scrollbar.lockClass);
+ }
+ }
+ function getPointerPosition(e) {
+ return swiper.isHorizontal() ? e.clientX : e.clientY;
+ }
+ function setDragPosition(e) {
+ const {
+ scrollbar,
+ rtlTranslate: rtl
+ } = swiper;
+ const {
+ el
+ } = scrollbar;
+ let positionRatio;
+ positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? "left" : "top"] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);
+ positionRatio = Math.max(Math.min(positionRatio, 1), 0);
+ if (rtl) {
+ positionRatio = 1 - positionRatio;
+ }
+ const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;
+ swiper.updateProgress(position);
+ swiper.setTranslate(position);
+ swiper.updateActiveIndex();
+ swiper.updateSlidesClasses();
+ }
+ function onDragStart(e) {
+ const params = swiper.params.scrollbar;
+ const {
+ scrollbar,
+ wrapperEl
+ } = swiper;
+ const {
+ el,
+ dragEl
+ } = scrollbar;
+ isTouched = true;
+ dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? "left" : "top"] : null;
+ e.preventDefault();
+ e.stopPropagation();
+ wrapperEl.style.transitionDuration = "100ms";
+ dragEl.style.transitionDuration = "100ms";
+ setDragPosition(e);
+ clearTimeout(dragTimeout);
+ el.style.transitionDuration = "0ms";
+ if (params.hide) {
+ el.style.opacity = 1;
+ }
+ if (swiper.params.cssMode) {
+ swiper.wrapperEl.style["scroll-snap-type"] = "none";
+ }
+ emit("scrollbarDragStart", e);
+ }
+ function onDragMove(e) {
+ const {
+ scrollbar,
+ wrapperEl
+ } = swiper;
+ const {
+ el,
+ dragEl
+ } = scrollbar;
+ if (!isTouched) return;
+ if (e.preventDefault && e.cancelable) e.preventDefault();
+ else e.returnValue = false;
+ setDragPosition(e);
+ wrapperEl.style.transitionDuration = "0ms";
+ el.style.transitionDuration = "0ms";
+ dragEl.style.transitionDuration = "0ms";
+ emit("scrollbarDragMove", e);
+ }
+ function onDragEnd(e) {
+ const params = swiper.params.scrollbar;
+ const {
+ scrollbar,
+ wrapperEl
+ } = swiper;
+ const {
+ el
+ } = scrollbar;
+ if (!isTouched) return;
+ isTouched = false;
+ if (swiper.params.cssMode) {
+ swiper.wrapperEl.style["scroll-snap-type"] = "";
+ wrapperEl.style.transitionDuration = "";
+ }
+ if (params.hide) {
+ clearTimeout(dragTimeout);
+ dragTimeout = nextTick(() => {
+ el.style.opacity = 0;
+ el.style.transitionDuration = "400ms";
+ }, 1e3);
+ }
+ emit("scrollbarDragEnd", e);
+ if (params.snapOnRelease) {
+ swiper.slideToClosest();
+ }
+ }
+ function events(method) {
+ const {
+ scrollbar,
+ params
+ } = swiper;
+ const el = scrollbar.el;
+ if (!el) return;
+ const target = el;
+ const activeListener = params.passiveListeners ? {
+ passive: false,
+ capture: false
+ } : false;
+ const passiveListener = params.passiveListeners ? {
+ passive: true,
+ capture: false
+ } : false;
+ if (!target) return;
+ const eventMethod = method === "on" ? "addEventListener" : "removeEventListener";
+ target[eventMethod]("pointerdown", onDragStart, activeListener);
+ document2[eventMethod]("pointermove", onDragMove, activeListener);
+ document2[eventMethod]("pointerup", onDragEnd, passiveListener);
+ }
+ function enableDraggable() {
+ if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
+ events("on");
+ }
+ function disableDraggable() {
+ if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
+ events("off");
+ }
+ function init() {
+ const {
+ scrollbar,
+ el: swiperEl
+ } = swiper;
+ swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {
+ el: "swiper-scrollbar"
+ });
+ const params = swiper.params.scrollbar;
+ if (!params.el) return;
+ let el;
+ if (typeof params.el === "string" && swiper.isElement) {
+ el = swiper.el.querySelector(params.el);
+ }
+ if (!el && typeof params.el === "string") {
+ el = document2.querySelectorAll(params.el);
+ if (!el.length) return;
+ } else if (!el) {
+ el = params.el;
+ }
+ if (swiper.params.uniqueNavElements && typeof params.el === "string" && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {
+ el = swiperEl.querySelector(params.el);
+ }
+ if (el.length > 0) el = el[0];
+ el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
+ let dragEl;
+ if (el) {
+ dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass));
+ if (!dragEl) {
+ dragEl = createElement("div", swiper.params.scrollbar.dragClass);
+ el.append(dragEl);
+ }
+ }
+ Object.assign(scrollbar, {
+ el,
+ dragEl
+ });
+ if (params.draggable) {
+ enableDraggable();
+ }
+ if (el) {
+ el.classList[swiper.enabled ? "remove" : "add"](...classesToTokens(swiper.params.scrollbar.lockClass));
+ }
+ }
+ function destroy() {
+ const params = swiper.params.scrollbar;
+ const el = swiper.scrollbar.el;
+ if (el) {
+ el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass));
+ }
+ disableDraggable();
+ }
+ on("changeDirection", () => {
+ if (!swiper.scrollbar || !swiper.scrollbar.el) return;
+ const params = swiper.params.scrollbar;
+ let {
+ el
+ } = swiper.scrollbar;
+ el = makeElementsArray(el);
+ el.forEach((subEl) => {
+ subEl.classList.remove(params.horizontalClass, params.verticalClass);
+ subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
+ });
+ });
+ on("init", () => {
+ if (swiper.params.scrollbar.enabled === false) {
+ disable();
+ } else {
+ init();
+ updateSize();
+ setTranslate();
+ }
+ });
+ on("update resize observerUpdate lock unlock changeDirection", () => {
+ updateSize();
+ });
+ on("setTranslate", () => {
+ setTranslate();
+ });
+ on("setTransition", (_s, duration) => {
+ setTransition(duration);
+ });
+ on("enable disable", () => {
+ const {
+ el
+ } = swiper.scrollbar;
+ if (el) {
+ el.classList[swiper.enabled ? "remove" : "add"](...classesToTokens(swiper.params.scrollbar.lockClass));
+ }
+ });
+ on("destroy", () => {
+ destroy();
+ });
+ const enable = () => {
+ swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));
+ if (swiper.scrollbar.el) {
+ swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));
+ }
+ init();
+ updateSize();
+ setTranslate();
+ };
+ const disable = () => {
+ swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));
+ if (swiper.scrollbar.el) {
+ swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));
+ }
+ destroy();
+ };
+ Object.assign(swiper.scrollbar, {
+ enable,
+ disable,
+ updateSize,
+ setTranslate,
+ init,
+ destroy
+ });
+}
+
+// node_modules/swiper/modules/parallax.mjs
+function Parallax(_ref) {
+ let {
+ swiper,
+ extendParams,
+ on
+ } = _ref;
+ extendParams({
+ parallax: {
+ enabled: false
+ }
+ });
+ const elementsSelector = "[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]";
+ const setTransform = (el, progress) => {
+ const {
+ rtl
+ } = swiper;
+ const rtlFactor = rtl ? -1 : 1;
+ const p = el.getAttribute("data-swiper-parallax") || "0";
+ let x = el.getAttribute("data-swiper-parallax-x");
+ let y = el.getAttribute("data-swiper-parallax-y");
+ const scale = el.getAttribute("data-swiper-parallax-scale");
+ const opacity = el.getAttribute("data-swiper-parallax-opacity");
+ const rotate = el.getAttribute("data-swiper-parallax-rotate");
+ if (x || y) {
+ x = x || "0";
+ y = y || "0";
+ } else if (swiper.isHorizontal()) {
+ x = p;
+ y = "0";
+ } else {
+ y = p;
+ x = "0";
+ }
+ if (x.indexOf("%") >= 0) {
+ x = `${parseInt(x, 10) * progress * rtlFactor}%`;
+ } else {
+ x = `${x * progress * rtlFactor}px`;
+ }
+ if (y.indexOf("%") >= 0) {
+ y = `${parseInt(y, 10) * progress}%`;
+ } else {
+ y = `${y * progress}px`;
+ }
+ if (typeof opacity !== "undefined" && opacity !== null) {
+ const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));
+ el.style.opacity = currentOpacity;
+ }
+ let transform = `translate3d(${x}, ${y}, 0px)`;
+ if (typeof scale !== "undefined" && scale !== null) {
+ const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));
+ transform += ` scale(${currentScale})`;
+ }
+ if (rotate && typeof rotate !== "undefined" && rotate !== null) {
+ const currentRotate = rotate * progress * -1;
+ transform += ` rotate(${currentRotate}deg)`;
+ }
+ el.style.transform = transform;
+ };
+ const setTranslate = () => {
+ const {
+ el,
+ slides,
+ progress,
+ snapGrid,
+ isElement
+ } = swiper;
+ const elements = elementChildren(el, elementsSelector);
+ if (swiper.isElement) {
+ elements.push(...elementChildren(swiper.hostEl, elementsSelector));
+ }
+ elements.forEach((subEl) => {
+ setTransform(subEl, progress);
+ });
+ slides.forEach((slideEl, slideIndex) => {
+ let slideProgress = slideEl.progress;
+ if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== "auto") {
+ slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);
+ }
+ slideProgress = Math.min(Math.max(slideProgress, -1), 1);
+ slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach((subEl) => {
+ setTransform(subEl, slideProgress);
+ });
+ });
+ };
+ const setTransition = function(duration) {
+ if (duration === void 0) {
+ duration = swiper.params.speed;
+ }
+ const {
+ el,
+ hostEl
+ } = swiper;
+ const elements = [...el.querySelectorAll(elementsSelector)];
+ if (swiper.isElement) {
+ elements.push(...hostEl.querySelectorAll(elementsSelector));
+ }
+ elements.forEach((parallaxEl) => {
+ let parallaxDuration = parseInt(parallaxEl.getAttribute("data-swiper-parallax-duration"), 10) || duration;
+ if (duration === 0) parallaxDuration = 0;
+ parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;
+ });
+ };
+ on("beforeInit", () => {
+ if (!swiper.params.parallax.enabled) return;
+ swiper.params.watchSlidesProgress = true;
+ swiper.originalParams.watchSlidesProgress = true;
+ });
+ on("init", () => {
+ if (!swiper.params.parallax.enabled) return;
+ setTranslate();
+ });
+ on("setTranslate", () => {
+ if (!swiper.params.parallax.enabled) return;
+ setTranslate();
+ });
+ on("setTransition", (_swiper, duration) => {
+ if (!swiper.params.parallax.enabled) return;
+ setTransition(duration);
+ });
+}
+
+// node_modules/swiper/modules/zoom.mjs
+function Zoom(_ref) {
+ let {
+ swiper,
+ extendParams,
+ on,
+ emit
+ } = _ref;
+ const window2 = getWindow();
+ extendParams({
+ zoom: {
+ enabled: false,
+ limitToOriginalSize: false,
+ maxRatio: 3,
+ minRatio: 1,
+ panOnMouseMove: false,
+ toggle: true,
+ containerClass: "swiper-zoom-container",
+ zoomedSlideClass: "swiper-slide-zoomed"
+ }
+ });
+ swiper.zoom = {
+ enabled: false
+ };
+ let currentScale = 1;
+ let isScaling = false;
+ let isPanningWithMouse = false;
+ let mousePanStart = {
+ x: 0,
+ y: 0
+ };
+ const mousePanSensitivity = -3;
+ let fakeGestureTouched;
+ let fakeGestureMoved;
+ const evCache = [];
+ const gesture = {
+ originX: 0,
+ originY: 0,
+ slideEl: void 0,
+ slideWidth: void 0,
+ slideHeight: void 0,
+ imageEl: void 0,
+ imageWrapEl: void 0,
+ maxRatio: 3
+ };
+ const image = {
+ isTouched: void 0,
+ isMoved: void 0,
+ currentX: void 0,
+ currentY: void 0,
+ minX: void 0,
+ minY: void 0,
+ maxX: void 0,
+ maxY: void 0,
+ width: void 0,
+ height: void 0,
+ startX: void 0,
+ startY: void 0,
+ touchesStart: {},
+ touchesCurrent: {}
+ };
+ const velocity = {
+ x: void 0,
+ y: void 0,
+ prevPositionX: void 0,
+ prevPositionY: void 0,
+ prevTime: void 0
+ };
+ let scale = 1;
+ Object.defineProperty(swiper.zoom, "scale", {
+ get() {
+ return scale;
+ },
+ set(value) {
+ if (scale !== value) {
+ const imageEl = gesture.imageEl;
+ const slideEl = gesture.slideEl;
+ emit("zoomChange", value, imageEl, slideEl);
+ }
+ scale = value;
+ }
+ });
+ function getDistanceBetweenTouches() {
+ if (evCache.length < 2) return 1;
+ const x1 = evCache[0].pageX;
+ const y1 = evCache[0].pageY;
+ const x2 = evCache[1].pageX;
+ const y2 = evCache[1].pageY;
+ const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);
+ return distance;
+ }
+ function getMaxRatio() {
+ const params = swiper.params.zoom;
+ const maxRatio = gesture.imageWrapEl.getAttribute("data-swiper-zoom") || params.maxRatio;
+ if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) {
+ const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth;
+ return Math.min(imageMaxRatio, maxRatio);
+ }
+ return maxRatio;
+ }
+ function getScaleOrigin() {
+ if (evCache.length < 2) return {
+ x: null,
+ y: null
+ };
+ const box = gesture.imageEl.getBoundingClientRect();
+ return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window2.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window2.scrollY) / currentScale];
+ }
+ function getSlideSelector() {
+ return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;
+ }
+ function eventWithinSlide(e) {
+ const slideSelector = getSlideSelector();
+ if (e.target.matches(slideSelector)) return true;
+ if (swiper.slides.filter((slideEl) => slideEl.contains(e.target)).length > 0) return true;
+ return false;
+ }
+ function eventWithinZoomContainer(e) {
+ const selector = `.${swiper.params.zoom.containerClass}`;
+ if (e.target.matches(selector)) return true;
+ if ([...swiper.hostEl.querySelectorAll(selector)].filter((containerEl) => containerEl.contains(e.target)).length > 0) return true;
+ return false;
+ }
+ function onGestureStart(e) {
+ if (e.pointerType === "mouse") {
+ evCache.splice(0, evCache.length);
+ }
+ if (!eventWithinSlide(e)) return;
+ const params = swiper.params.zoom;
+ fakeGestureTouched = false;
+ fakeGestureMoved = false;
+ evCache.push(e);
+ if (evCache.length < 2) {
+ return;
+ }
+ fakeGestureTouched = true;
+ gesture.scaleStart = getDistanceBetweenTouches();
+ if (!gesture.slideEl) {
+ gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);
+ if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];
+ let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);
+ if (imageEl) {
+ imageEl = imageEl.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0];
+ }
+ gesture.imageEl = imageEl;
+ if (imageEl) {
+ gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];
+ } else {
+ gesture.imageWrapEl = void 0;
+ }
+ if (!gesture.imageWrapEl) {
+ gesture.imageEl = void 0;
+ return;
+ }
+ gesture.maxRatio = getMaxRatio();
+ }
+ if (gesture.imageEl) {
+ const [originX, originY] = getScaleOrigin();
+ gesture.originX = originX;
+ gesture.originY = originY;
+ gesture.imageEl.style.transitionDuration = "0ms";
+ }
+ isScaling = true;
+ }
+ function onGestureChange(e) {
+ if (!eventWithinSlide(e)) return;
+ const params = swiper.params.zoom;
+ const zoom = swiper.zoom;
+ const pointerIndex = evCache.findIndex((cachedEv) => cachedEv.pointerId === e.pointerId);
+ if (pointerIndex >= 0) evCache[pointerIndex] = e;
+ if (evCache.length < 2) {
+ return;
+ }
+ fakeGestureMoved = true;
+ gesture.scaleMove = getDistanceBetweenTouches();
+ if (!gesture.imageEl) {
+ return;
+ }
+ zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;
+ if (zoom.scale > gesture.maxRatio) {
+ zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;
+ }
+ if (zoom.scale < params.minRatio) {
+ zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;
+ }
+ gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;
+ }
+ function onGestureEnd(e) {
+ if (!eventWithinSlide(e)) return;
+ if (e.pointerType === "mouse" && e.type === "pointerout") return;
+ const params = swiper.params.zoom;
+ const zoom = swiper.zoom;
+ const pointerIndex = evCache.findIndex((cachedEv) => cachedEv.pointerId === e.pointerId);
+ if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);
+ if (!fakeGestureTouched || !fakeGestureMoved) {
+ return;
+ }
+ fakeGestureTouched = false;
+ fakeGestureMoved = false;
+ if (!gesture.imageEl) return;
+ zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
+ gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;
+ gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;
+ currentScale = zoom.scale;
+ isScaling = false;
+ if (zoom.scale > 1 && gesture.slideEl) {
+ gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);
+ } else if (zoom.scale <= 1 && gesture.slideEl) {
+ gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);
+ }
+ if (zoom.scale === 1) {
+ gesture.originX = 0;
+ gesture.originY = 0;
+ gesture.slideEl = void 0;
+ }
+ }
+ let allowTouchMoveTimeout;
+ function allowTouchMove() {
+ swiper.touchEventsData.preventTouchMoveFromPointerMove = false;
+ }
+ function preventTouchMove() {
+ clearTimeout(allowTouchMoveTimeout);
+ swiper.touchEventsData.preventTouchMoveFromPointerMove = true;
+ allowTouchMoveTimeout = setTimeout(() => {
+ if (swiper.destroyed) return;
+ allowTouchMove();
+ });
+ }
+ function onTouchStart(e) {
+ const device = swiper.device;
+ if (!gesture.imageEl) return;
+ if (image.isTouched) return;
+ if (device.android && e.cancelable) e.preventDefault();
+ image.isTouched = true;
+ const event2 = evCache.length > 0 ? evCache[0] : e;
+ image.touchesStart.x = event2.pageX;
+ image.touchesStart.y = event2.pageY;
+ }
+ function onTouchMove(e) {
+ const isMouseEvent = e.pointerType === "mouse";
+ const isMousePan = isMouseEvent && swiper.params.zoom.panOnMouseMove;
+ if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) {
+ return;
+ }
+ const zoom = swiper.zoom;
+ if (!gesture.imageEl) {
+ return;
+ }
+ if (!image.isTouched || !gesture.slideEl) {
+ if (isMousePan) onMouseMove(e);
+ return;
+ }
+ if (isMousePan) {
+ onMouseMove(e);
+ return;
+ }
+ if (!image.isMoved) {
+ image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;
+ image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;
+ image.startX = getTranslate(gesture.imageWrapEl, "x") || 0;
+ image.startY = getTranslate(gesture.imageWrapEl, "y") || 0;
+ gesture.slideWidth = gesture.slideEl.offsetWidth;
+ gesture.slideHeight = gesture.slideEl.offsetHeight;
+ gesture.imageWrapEl.style.transitionDuration = "0ms";
+ }
+ const scaledWidth = image.width * zoom.scale;
+ const scaledHeight = image.height * zoom.scale;
+ image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
+ image.maxX = -image.minX;
+ image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
+ image.maxY = -image.minY;
+ image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;
+ image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;
+ const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));
+ if (touchesDiff > 5) {
+ swiper.allowClick = false;
+ }
+ if (!image.isMoved && !isScaling) {
+ if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {
+ image.isTouched = false;
+ allowTouchMove();
+ return;
+ }
+ if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {
+ image.isTouched = false;
+ allowTouchMove();
+ return;
+ }
+ }
+ if (e.cancelable) {
+ e.preventDefault();
+ }
+ e.stopPropagation();
+ preventTouchMove();
+ image.isMoved = true;
+ const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);
+ const {
+ originX,
+ originY
+ } = gesture;
+ image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);
+ image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);
+ if (image.currentX < image.minX) {
+ image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;
+ }
+ if (image.currentX > image.maxX) {
+ image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;
+ }
+ if (image.currentY < image.minY) {
+ image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;
+ }
+ if (image.currentY > image.maxY) {
+ image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;
+ }
+ if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;
+ if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;
+ if (!velocity.prevTime) velocity.prevTime = Date.now();
+ velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
+ velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
+ if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;
+ if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;
+ velocity.prevPositionX = image.touchesCurrent.x;
+ velocity.prevPositionY = image.touchesCurrent.y;
+ velocity.prevTime = Date.now();
+ gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;
+ }
+ function onTouchEnd() {
+ const zoom = swiper.zoom;
+ evCache.length = 0;
+ if (!gesture.imageEl) return;
+ if (!image.isTouched || !image.isMoved) {
+ image.isTouched = false;
+ image.isMoved = false;
+ return;
+ }
+ image.isTouched = false;
+ image.isMoved = false;
+ let momentumDurationX = 300;
+ let momentumDurationY = 300;
+ const momentumDistanceX = velocity.x * momentumDurationX;
+ const newPositionX = image.currentX + momentumDistanceX;
+ const momentumDistanceY = velocity.y * momentumDurationY;
+ const newPositionY = image.currentY + momentumDistanceY;
+ if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);
+ if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);
+ const momentumDuration = Math.max(momentumDurationX, momentumDurationY);
+ image.currentX = newPositionX;
+ image.currentY = newPositionY;
+ const scaledWidth = image.width * zoom.scale;
+ const scaledHeight = image.height * zoom.scale;
+ image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
+ image.maxX = -image.minX;
+ image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
+ image.maxY = -image.minY;
+ image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
+ image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
+ gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;
+ gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;
+ }
+ function onTransitionEnd() {
+ const zoom = swiper.zoom;
+ if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {
+ if (gesture.imageEl) {
+ gesture.imageEl.style.transform = "translate3d(0,0,0) scale(1)";
+ }
+ if (gesture.imageWrapEl) {
+ gesture.imageWrapEl.style.transform = "translate3d(0,0,0)";
+ }
+ gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);
+ zoom.scale = 1;
+ currentScale = 1;
+ gesture.slideEl = void 0;
+ gesture.imageEl = void 0;
+ gesture.imageWrapEl = void 0;
+ gesture.originX = 0;
+ gesture.originY = 0;
+ }
+ }
+ function onMouseMove(e) {
+ if (currentScale <= 1 || !gesture.imageWrapEl) return;
+ if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;
+ const currentTransform = window2.getComputedStyle(gesture.imageWrapEl).transform;
+ const matrix = new window2.DOMMatrix(currentTransform);
+ if (!isPanningWithMouse) {
+ isPanningWithMouse = true;
+ mousePanStart.x = e.clientX;
+ mousePanStart.y = e.clientY;
+ image.startX = matrix.e;
+ image.startY = matrix.f;
+ image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;
+ image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;
+ gesture.slideWidth = gesture.slideEl.offsetWidth;
+ gesture.slideHeight = gesture.slideEl.offsetHeight;
+ return;
+ }
+ const deltaX = (e.clientX - mousePanStart.x) * mousePanSensitivity;
+ const deltaY = (e.clientY - mousePanStart.y) * mousePanSensitivity;
+ const scaledWidth = image.width * currentScale;
+ const scaledHeight = image.height * currentScale;
+ const slideWidth = gesture.slideWidth;
+ const slideHeight = gesture.slideHeight;
+ const minX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);
+ const maxX = -minX;
+ const minY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);
+ const maxY = -minY;
+ const newX = Math.max(Math.min(image.startX + deltaX, maxX), minX);
+ const newY = Math.max(Math.min(image.startY + deltaY, maxY), minY);
+ gesture.imageWrapEl.style.transitionDuration = "0ms";
+ gesture.imageWrapEl.style.transform = `translate3d(${newX}px, ${newY}px, 0)`;
+ mousePanStart.x = e.clientX;
+ mousePanStart.y = e.clientY;
+ image.startX = newX;
+ image.startY = newY;
+ image.currentX = newX;
+ image.currentY = newY;
+ }
+ function zoomIn(e) {
+ const zoom = swiper.zoom;
+ const params = swiper.params.zoom;
+ if (!gesture.slideEl) {
+ if (e && e.target) {
+ gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);
+ }
+ if (!gesture.slideEl) {
+ if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
+ gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];
+ } else {
+ gesture.slideEl = swiper.slides[swiper.activeIndex];
+ }
+ }
+ let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);
+ if (imageEl) {
+ imageEl = imageEl.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0];
+ }
+ gesture.imageEl = imageEl;
+ if (imageEl) {
+ gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];
+ } else {
+ gesture.imageWrapEl = void 0;
+ }
+ }
+ if (!gesture.imageEl || !gesture.imageWrapEl) return;
+ if (swiper.params.cssMode) {
+ swiper.wrapperEl.style.overflow = "hidden";
+ swiper.wrapperEl.style.touchAction = "none";
+ }
+ gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);
+ let touchX;
+ let touchY;
+ let offsetX;
+ let offsetY;
+ let diffX;
+ let diffY;
+ let translateX;
+ let translateY;
+ let imageWidth;
+ let imageHeight;
+ let scaledWidth;
+ let scaledHeight;
+ let translateMinX;
+ let translateMinY;
+ let translateMaxX;
+ let translateMaxY;
+ let slideWidth;
+ let slideHeight;
+ if (typeof image.touchesStart.x === "undefined" && e) {
+ touchX = e.pageX;
+ touchY = e.pageY;
+ } else {
+ touchX = image.touchesStart.x;
+ touchY = image.touchesStart.y;
+ }
+ const prevScale = currentScale;
+ const forceZoomRatio = typeof e === "number" ? e : null;
+ if (currentScale === 1 && forceZoomRatio) {
+ touchX = void 0;
+ touchY = void 0;
+ image.touchesStart.x = void 0;
+ image.touchesStart.y = void 0;
+ }
+ const maxRatio = getMaxRatio();
+ zoom.scale = forceZoomRatio || maxRatio;
+ currentScale = forceZoomRatio || maxRatio;
+ if (e && !(currentScale === 1 && forceZoomRatio)) {
+ slideWidth = gesture.slideEl.offsetWidth;
+ slideHeight = gesture.slideEl.offsetHeight;
+ offsetX = elementOffset(gesture.slideEl).left + window2.scrollX;
+ offsetY = elementOffset(gesture.slideEl).top + window2.scrollY;
+ diffX = offsetX + slideWidth / 2 - touchX;
+ diffY = offsetY + slideHeight / 2 - touchY;
+ imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;
+ imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;
+ scaledWidth = imageWidth * zoom.scale;
+ scaledHeight = imageHeight * zoom.scale;
+ translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);
+ translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);
+ translateMaxX = -translateMinX;
+ translateMaxY = -translateMinY;
+ if (prevScale > 0 && forceZoomRatio && typeof image.currentX === "number" && typeof image.currentY === "number") {
+ translateX = image.currentX * zoom.scale / prevScale;
+ translateY = image.currentY * zoom.scale / prevScale;
+ } else {
+ translateX = diffX * zoom.scale;
+ translateY = diffY * zoom.scale;
+ }
+ if (translateX < translateMinX) {
+ translateX = translateMinX;
+ }
+ if (translateX > translateMaxX) {
+ translateX = translateMaxX;
+ }
+ if (translateY < translateMinY) {
+ translateY = translateMinY;
+ }
+ if (translateY > translateMaxY) {
+ translateY = translateMaxY;
+ }
+ } else {
+ translateX = 0;
+ translateY = 0;
+ }
+ if (forceZoomRatio && zoom.scale === 1) {
+ gesture.originX = 0;
+ gesture.originY = 0;
+ }
+ image.currentX = translateX;
+ image.currentY = translateY;
+ gesture.imageWrapEl.style.transitionDuration = "300ms";
+ gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;
+ gesture.imageEl.style.transitionDuration = "300ms";
+ gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;
+ }
+ function zoomOut() {
+ const zoom = swiper.zoom;
+ const params = swiper.params.zoom;
+ if (!gesture.slideEl) {
+ if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
+ gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];
+ } else {
+ gesture.slideEl = swiper.slides[swiper.activeIndex];
+ }
+ let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);
+ if (imageEl) {
+ imageEl = imageEl.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0];
+ }
+ gesture.imageEl = imageEl;
+ if (imageEl) {
+ gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];
+ } else {
+ gesture.imageWrapEl = void 0;
+ }
+ }
+ if (!gesture.imageEl || !gesture.imageWrapEl) return;
+ if (swiper.params.cssMode) {
+ swiper.wrapperEl.style.overflow = "";
+ swiper.wrapperEl.style.touchAction = "";
+ }
+ zoom.scale = 1;
+ currentScale = 1;
+ image.currentX = void 0;
+ image.currentY = void 0;
+ image.touchesStart.x = void 0;
+ image.touchesStart.y = void 0;
+ gesture.imageWrapEl.style.transitionDuration = "300ms";
+ gesture.imageWrapEl.style.transform = "translate3d(0,0,0)";
+ gesture.imageEl.style.transitionDuration = "300ms";
+ gesture.imageEl.style.transform = "translate3d(0,0,0) scale(1)";
+ gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);
+ gesture.slideEl = void 0;
+ gesture.originX = 0;
+ gesture.originY = 0;
+ if (swiper.params.zoom.panOnMouseMove) {
+ mousePanStart = {
+ x: 0,
+ y: 0
+ };
+ if (isPanningWithMouse) {
+ isPanningWithMouse = false;
+ image.startX = 0;
+ image.startY = 0;
+ }
+ }
+ }
+ function zoomToggle(e) {
+ const zoom = swiper.zoom;
+ if (zoom.scale && zoom.scale !== 1) {
+ zoomOut();
+ } else {
+ zoomIn(e);
+ }
+ }
+ function getListeners() {
+ const passiveListener = swiper.params.passiveListeners ? {
+ passive: true,
+ capture: false
+ } : false;
+ const activeListenerWithCapture = swiper.params.passiveListeners ? {
+ passive: false,
+ capture: true
+ } : true;
+ return {
+ passiveListener,
+ activeListenerWithCapture
+ };
+ }
+ function enable() {
+ const zoom = swiper.zoom;
+ if (zoom.enabled) return;
+ zoom.enabled = true;
+ const {
+ passiveListener,
+ activeListenerWithCapture
+ } = getListeners();
+ swiper.wrapperEl.addEventListener("pointerdown", onGestureStart, passiveListener);
+ swiper.wrapperEl.addEventListener("pointermove", onGestureChange, activeListenerWithCapture);
+ ["pointerup", "pointercancel", "pointerout"].forEach((eventName) => {
+ swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);
+ });
+ swiper.wrapperEl.addEventListener("pointermove", onTouchMove, activeListenerWithCapture);
+ }
+ function disable() {
+ const zoom = swiper.zoom;
+ if (!zoom.enabled) return;
+ zoom.enabled = false;
+ const {
+ passiveListener,
+ activeListenerWithCapture
+ } = getListeners();
+ swiper.wrapperEl.removeEventListener("pointerdown", onGestureStart, passiveListener);
+ swiper.wrapperEl.removeEventListener("pointermove", onGestureChange, activeListenerWithCapture);
+ ["pointerup", "pointercancel", "pointerout"].forEach((eventName) => {
+ swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);
+ });
+ swiper.wrapperEl.removeEventListener("pointermove", onTouchMove, activeListenerWithCapture);
+ }
+ on("init", () => {
+ if (swiper.params.zoom.enabled) {
+ enable();
+ }
+ });
+ on("destroy", () => {
+ disable();
+ });
+ on("touchStart", (_s, e) => {
+ if (!swiper.zoom.enabled) return;
+ onTouchStart(e);
+ });
+ on("touchEnd", (_s, e) => {
+ if (!swiper.zoom.enabled) return;
+ onTouchEnd();
+ });
+ on("doubleTap", (_s, e) => {
+ if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
+ zoomToggle(e);
+ }
+ });
+ on("transitionEnd", () => {
+ if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
+ onTransitionEnd();
+ }
+ });
+ on("slideChange", () => {
+ if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {
+ onTransitionEnd();
+ }
+ });
+ Object.assign(swiper.zoom, {
+ enable,
+ disable,
+ in: zoomIn,
+ out: zoomOut,
+ toggle: zoomToggle
+ });
+}
+
+// node_modules/swiper/modules/controller.mjs
+function Controller(_ref) {
+ let {
+ swiper,
+ extendParams,
+ on
+ } = _ref;
+ extendParams({
+ controller: {
+ control: void 0,
+ inverse: false,
+ by: "slide"
+ // or 'container'
+ }
+ });
+ swiper.controller = {
+ control: void 0
+ };
+ function LinearSpline(x, y) {
+ const binarySearch = /* @__PURE__ */ function search() {
+ let maxIndex;
+ let minIndex;
+ let guess;
+ return (array, val) => {
+ minIndex = -1;
+ maxIndex = array.length;
+ while (maxIndex - minIndex > 1) {
+ guess = maxIndex + minIndex >> 1;
+ if (array[guess] <= val) {
+ minIndex = guess;
+ } else {
+ maxIndex = guess;
+ }
+ }
+ return maxIndex;
+ };
+ }();
+ this.x = x;
+ this.y = y;
+ this.lastIndex = x.length - 1;
+ let i1;
+ let i3;
+ this.interpolate = function interpolate(x2) {
+ if (!x2) return 0;
+ i3 = binarySearch(this.x, x2);
+ i1 = i3 - 1;
+ return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];
+ };
+ return this;
+ }
+ function getInterpolateFunction(c) {
+ swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);
+ }
+ function setTranslate(_t, byController) {
+ const controlled = swiper.controller.control;
+ let multiplier;
+ let controlledTranslate;
+ const Swiper = swiper.constructor;
+ function setControlledTranslate(c) {
+ if (c.destroyed) return;
+ const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;
+ if (swiper.params.controller.by === "slide") {
+ getInterpolateFunction(c);
+ controlledTranslate = -swiper.controller.spline.interpolate(-translate);
+ }
+ if (!controlledTranslate || swiper.params.controller.by === "container") {
+ multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
+ if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {
+ multiplier = 1;
+ }
+ controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();
+ }
+ if (swiper.params.controller.inverse) {
+ controlledTranslate = c.maxTranslate() - controlledTranslate;
+ }
+ c.updateProgress(controlledTranslate);
+ c.setTranslate(controlledTranslate, swiper);
+ c.updateActiveIndex();
+ c.updateSlidesClasses();
+ }
+ if (Array.isArray(controlled)) {
+ for (let i = 0; i < controlled.length; i += 1) {
+ if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
+ setControlledTranslate(controlled[i]);
+ }
+ }
+ } else if (controlled instanceof Swiper && byController !== controlled) {
+ setControlledTranslate(controlled);
+ }
+ }
+ function setTransition(duration, byController) {
+ const Swiper = swiper.constructor;
+ const controlled = swiper.controller.control;
+ let i;
+ function setControlledTransition(c) {
+ if (c.destroyed) return;
+ c.setTransition(duration, swiper);
+ if (duration !== 0) {
+ c.transitionStart();
+ if (c.params.autoHeight) {
+ nextTick(() => {
+ c.updateAutoHeight();
+ });
+ }
+ elementTransitionEnd(c.wrapperEl, () => {
+ if (!controlled) return;
+ c.transitionEnd();
+ });
+ }
+ }
+ if (Array.isArray(controlled)) {
+ for (i = 0; i < controlled.length; i += 1) {
+ if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
+ setControlledTransition(controlled[i]);
+ }
+ }
+ } else if (controlled instanceof Swiper && byController !== controlled) {
+ setControlledTransition(controlled);
+ }
+ }
+ function removeSpline() {
+ if (!swiper.controller.control) return;
+ if (swiper.controller.spline) {
+ swiper.controller.spline = void 0;
+ delete swiper.controller.spline;
+ }
+ }
+ on("beforeInit", () => {
+ if (typeof window !== "undefined" && // eslint-disable-line
+ (typeof swiper.params.controller.control === "string" || swiper.params.controller.control instanceof HTMLElement)) {
+ const controlElements = typeof swiper.params.controller.control === "string" ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control];
+ controlElements.forEach((controlElement) => {
+ if (!swiper.controller.control) swiper.controller.control = [];
+ if (controlElement && controlElement.swiper) {
+ swiper.controller.control.push(controlElement.swiper);
+ } else if (controlElement) {
+ const eventName = `${swiper.params.eventsPrefix}init`;
+ const onControllerSwiper = (e) => {
+ swiper.controller.control.push(e.detail[0]);
+ swiper.update();
+ controlElement.removeEventListener(eventName, onControllerSwiper);
+ };
+ controlElement.addEventListener(eventName, onControllerSwiper);
+ }
+ });
+ return;
+ }
+ swiper.controller.control = swiper.params.controller.control;
+ });
+ on("update", () => {
+ removeSpline();
+ });
+ on("resize", () => {
+ removeSpline();
+ });
+ on("observerUpdate", () => {
+ removeSpline();
+ });
+ on("setTranslate", (_s, translate, byController) => {
+ if (!swiper.controller.control || swiper.controller.control.destroyed) return;
+ swiper.controller.setTranslate(translate, byController);
+ });
+ on("setTransition", (_s, duration, byController) => {
+ if (!swiper.controller.control || swiper.controller.control.destroyed) return;
+ swiper.controller.setTransition(duration, byController);
+ });
+ Object.assign(swiper.controller, {
+ setTranslate,
+ setTransition
+ });
+}
+
+// node_modules/swiper/modules/a11y.mjs
+function A11y(_ref) {
+ let {
+ swiper,
+ extendParams,
+ on
+ } = _ref;
+ extendParams({
+ a11y: {
+ enabled: true,
+ notificationClass: "swiper-notification",
+ prevSlideMessage: "Previous slide",
+ nextSlideMessage: "Next slide",
+ firstSlideMessage: "This is the first slide",
+ lastSlideMessage: "This is the last slide",
+ paginationBulletMessage: "Go to slide {{index}}",
+ slideLabelMessage: "{{index}} / {{slidesLength}}",
+ containerMessage: null,
+ containerRoleDescriptionMessage: null,
+ containerRole: null,
+ itemRoleDescriptionMessage: null,
+ slideRole: "group",
+ id: null,
+ scrollOnFocus: true
+ }
+ });
+ swiper.a11y = {
+ clicked: false
+ };
+ let liveRegion = null;
+ let preventFocusHandler;
+ let focusTargetSlideEl;
+ let visibilityChangedTimestamp = (/* @__PURE__ */ new Date()).getTime();
+ function notify(message) {
+ const notification = liveRegion;
+ if (notification.length === 0) return;
+ notification.innerHTML = "";
+ notification.innerHTML = message;
+ }
+ function getRandomNumber(size) {
+ if (size === void 0) {
+ size = 16;
+ }
+ const randomChar = () => Math.round(16 * Math.random()).toString(16);
+ return "x".repeat(size).replace(/x/g, randomChar);
+ }
+ function makeElFocusable(el) {
+ el = makeElementsArray(el);
+ el.forEach((subEl) => {
+ subEl.setAttribute("tabIndex", "0");
+ });
+ }
+ function makeElNotFocusable(el) {
+ el = makeElementsArray(el);
+ el.forEach((subEl) => {
+ subEl.setAttribute("tabIndex", "-1");
+ });
+ }
+ function addElRole(el, role) {
+ el = makeElementsArray(el);
+ el.forEach((subEl) => {
+ subEl.setAttribute("role", role);
+ });
+ }
+ function addElRoleDescription(el, description) {
+ el = makeElementsArray(el);
+ el.forEach((subEl) => {
+ subEl.setAttribute("aria-roledescription", description);
+ });
+ }
+ function addElControls(el, controls) {
+ el = makeElementsArray(el);
+ el.forEach((subEl) => {
+ subEl.setAttribute("aria-controls", controls);
+ });
+ }
+ function addElLabel(el, label) {
+ el = makeElementsArray(el);
+ el.forEach((subEl) => {
+ subEl.setAttribute("aria-label", label);
+ });
+ }
+ function addElId(el, id) {
+ el = makeElementsArray(el);
+ el.forEach((subEl) => {
+ subEl.setAttribute("id", id);
+ });
+ }
+ function addElLive(el, live) {
+ el = makeElementsArray(el);
+ el.forEach((subEl) => {
+ subEl.setAttribute("aria-live", live);
+ });
+ }
+ function disableEl(el) {
+ el = makeElementsArray(el);
+ el.forEach((subEl) => {
+ subEl.setAttribute("aria-disabled", true);
+ });
+ }
+ function enableEl(el) {
+ el = makeElementsArray(el);
+ el.forEach((subEl) => {
+ subEl.setAttribute("aria-disabled", false);
+ });
+ }
+ function onEnterOrSpaceKey(e) {
+ if (e.keyCode !== 13 && e.keyCode !== 32) return;
+ const params = swiper.params.a11y;
+ const targetEl = e.target;
+ if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {
+ if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;
+ }
+ if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) {
+ const prevEls = makeElementsArray(swiper.navigation.prevEl);
+ const nextEls = makeElementsArray(swiper.navigation.nextEl);
+ if (nextEls.includes(targetEl)) {
+ if (!(swiper.isEnd && !swiper.params.loop)) {
+ swiper.slideNext();
+ }
+ if (swiper.isEnd) {
+ notify(params.lastSlideMessage);
+ } else {
+ notify(params.nextSlideMessage);
+ }
+ }
+ if (prevEls.includes(targetEl)) {
+ if (!(swiper.isBeginning && !swiper.params.loop)) {
+ swiper.slidePrev();
+ }
+ if (swiper.isBeginning) {
+ notify(params.firstSlideMessage);
+ } else {
+ notify(params.prevSlideMessage);
+ }
+ }
+ }
+ if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {
+ targetEl.click();
+ }
+ }
+ function updateNavigation() {
+ if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;
+ const {
+ nextEl,
+ prevEl
+ } = swiper.navigation;
+ if (prevEl) {
+ if (swiper.isBeginning) {
+ disableEl(prevEl);
+ makeElNotFocusable(prevEl);
+ } else {
+ enableEl(prevEl);
+ makeElFocusable(prevEl);
+ }
+ }
+ if (nextEl) {
+ if (swiper.isEnd) {
+ disableEl(nextEl);
+ makeElNotFocusable(nextEl);
+ } else {
+ enableEl(nextEl);
+ makeElFocusable(nextEl);
+ }
+ }
+ }
+ function hasPagination() {
+ return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;
+ }
+ function hasClickablePagination() {
+ return hasPagination() && swiper.params.pagination.clickable;
+ }
+ function updatePagination() {
+ const params = swiper.params.a11y;
+ if (!hasPagination()) return;
+ swiper.pagination.bullets.forEach((bulletEl) => {
+ if (swiper.params.pagination.clickable) {
+ makeElFocusable(bulletEl);
+ if (!swiper.params.pagination.renderBullet) {
+ addElRole(bulletEl, "button");
+ addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, elementIndex(bulletEl) + 1));
+ }
+ }
+ if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {
+ bulletEl.setAttribute("aria-current", "true");
+ } else {
+ bulletEl.removeAttribute("aria-current");
+ }
+ });
+ }
+ const initNavEl = (el, wrapperId, message) => {
+ makeElFocusable(el);
+ if (el.tagName !== "BUTTON") {
+ addElRole(el, "button");
+ el.addEventListener("keydown", onEnterOrSpaceKey);
+ }
+ addElLabel(el, message);
+ addElControls(el, wrapperId);
+ };
+ const handlePointerDown = (e) => {
+ if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) {
+ preventFocusHandler = true;
+ }
+ swiper.a11y.clicked = true;
+ };
+ const handlePointerUp = () => {
+ preventFocusHandler = false;
+ requestAnimationFrame(() => {
+ requestAnimationFrame(() => {
+ if (!swiper.destroyed) {
+ swiper.a11y.clicked = false;
+ }
+ });
+ });
+ };
+ const onVisibilityChange = (e) => {
+ visibilityChangedTimestamp = (/* @__PURE__ */ new Date()).getTime();
+ };
+ const handleFocus = (e) => {
+ if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return;
+ if ((/* @__PURE__ */ new Date()).getTime() - visibilityChangedTimestamp < 100) return;
+ const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);
+ if (!slideEl || !swiper.slides.includes(slideEl)) return;
+ focusTargetSlideEl = slideEl;
+ const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;
+ const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);
+ if (isActive || isVisible) return;
+ if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;
+ if (swiper.isHorizontal()) {
+ swiper.el.scrollLeft = 0;
+ } else {
+ swiper.el.scrollTop = 0;
+ }
+ requestAnimationFrame(() => {
+ if (preventFocusHandler) return;
+ if (swiper.params.loop) {
+ swiper.slideToLoop(parseInt(slideEl.getAttribute("data-swiper-slide-index")), 0);
+ } else {
+ swiper.slideTo(swiper.slides.indexOf(slideEl), 0);
+ }
+ preventFocusHandler = false;
+ });
+ };
+ const initSlides = () => {
+ const params = swiper.params.a11y;
+ if (params.itemRoleDescriptionMessage) {
+ addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);
+ }
+ if (params.slideRole) {
+ addElRole(swiper.slides, params.slideRole);
+ }
+ const slidesLength = swiper.slides.length;
+ if (params.slideLabelMessage) {
+ swiper.slides.forEach((slideEl, index) => {
+ const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute("data-swiper-slide-index"), 10) : index;
+ const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength);
+ addElLabel(slideEl, ariaLabelMessage);
+ });
+ }
+ };
+ const init = () => {
+ const params = swiper.params.a11y;
+ swiper.el.append(liveRegion);
+ const containerEl = swiper.el;
+ if (params.containerRoleDescriptionMessage) {
+ addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);
+ }
+ if (params.containerMessage) {
+ addElLabel(containerEl, params.containerMessage);
+ }
+ if (params.containerRole) {
+ addElRole(containerEl, params.containerRole);
+ }
+ const wrapperEl = swiper.wrapperEl;
+ const wrapperId = params.id || wrapperEl.getAttribute("id") || `swiper-wrapper-${getRandomNumber(16)}`;
+ const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? "off" : "polite";
+ addElId(wrapperEl, wrapperId);
+ addElLive(wrapperEl, live);
+ initSlides();
+ let {
+ nextEl,
+ prevEl
+ } = swiper.navigation ? swiper.navigation : {};
+ nextEl = makeElementsArray(nextEl);
+ prevEl = makeElementsArray(prevEl);
+ if (nextEl) {
+ nextEl.forEach((el) => initNavEl(el, wrapperId, params.nextSlideMessage));
+ }
+ if (prevEl) {
+ prevEl.forEach((el) => initNavEl(el, wrapperId, params.prevSlideMessage));
+ }
+ if (hasClickablePagination()) {
+ const paginationEl = makeElementsArray(swiper.pagination.el);
+ paginationEl.forEach((el) => {
+ el.addEventListener("keydown", onEnterOrSpaceKey);
+ });
+ }
+ const document2 = getDocument();
+ document2.addEventListener("visibilitychange", onVisibilityChange);
+ swiper.el.addEventListener("focus", handleFocus, true);
+ swiper.el.addEventListener("focus", handleFocus, true);
+ swiper.el.addEventListener("pointerdown", handlePointerDown, true);
+ swiper.el.addEventListener("pointerup", handlePointerUp, true);
+ };
+ function destroy() {
+ if (liveRegion) liveRegion.remove();
+ let {
+ nextEl,
+ prevEl
+ } = swiper.navigation ? swiper.navigation : {};
+ nextEl = makeElementsArray(nextEl);
+ prevEl = makeElementsArray(prevEl);
+ if (nextEl) {
+ nextEl.forEach((el) => el.removeEventListener("keydown", onEnterOrSpaceKey));
+ }
+ if (prevEl) {
+ prevEl.forEach((el) => el.removeEventListener("keydown", onEnterOrSpaceKey));
+ }
+ if (hasClickablePagination()) {
+ const paginationEl = makeElementsArray(swiper.pagination.el);
+ paginationEl.forEach((el) => {
+ el.removeEventListener("keydown", onEnterOrSpaceKey);
+ });
+ }
+ const document2 = getDocument();
+ document2.removeEventListener("visibilitychange", onVisibilityChange);
+ if (swiper.el && typeof swiper.el !== "string") {
+ swiper.el.removeEventListener("focus", handleFocus, true);
+ swiper.el.removeEventListener("pointerdown", handlePointerDown, true);
+ swiper.el.removeEventListener("pointerup", handlePointerUp, true);
+ }
+ }
+ on("beforeInit", () => {
+ liveRegion = createElement("span", swiper.params.a11y.notificationClass);
+ liveRegion.setAttribute("aria-live", "assertive");
+ liveRegion.setAttribute("aria-atomic", "true");
+ });
+ on("afterInit", () => {
+ if (!swiper.params.a11y.enabled) return;
+ init();
+ });
+ on("slidesLengthChange snapGridLengthChange slidesGridLengthChange", () => {
+ if (!swiper.params.a11y.enabled) return;
+ initSlides();
+ });
+ on("fromEdge toEdge afterInit lock unlock", () => {
+ if (!swiper.params.a11y.enabled) return;
+ updateNavigation();
+ });
+ on("paginationUpdate", () => {
+ if (!swiper.params.a11y.enabled) return;
+ updatePagination();
+ });
+ on("destroy", () => {
+ if (!swiper.params.a11y.enabled) return;
+ destroy();
+ });
+}
+
+// node_modules/swiper/modules/history.mjs
+function History(_ref) {
+ let {
+ swiper,
+ extendParams,
+ on
+ } = _ref;
+ extendParams({
+ history: {
+ enabled: false,
+ root: "",
+ replaceState: false,
+ key: "slides",
+ keepQuery: false
+ }
+ });
+ let initialized = false;
+ let paths = {};
+ const slugify = (text) => {
+ return text.toString().replace(/\s+/g, "-").replace(/[^\w-]+/g, "").replace(/--+/g, "-").replace(/^-+/, "").replace(/-+$/, "");
+ };
+ const getPathValues = (urlOverride) => {
+ const window2 = getWindow();
+ let location;
+ if (urlOverride) {
+ location = new URL(urlOverride);
+ } else {
+ location = window2.location;
+ }
+ const pathArray = location.pathname.slice(1).split("/").filter((part) => part !== "");
+ const total = pathArray.length;
+ const key = pathArray[total - 2];
+ const value = pathArray[total - 1];
+ return {
+ key,
+ value
+ };
+ };
+ const setHistory = (key, index) => {
+ const window2 = getWindow();
+ if (!initialized || !swiper.params.history.enabled) return;
+ let location;
+ if (swiper.params.url) {
+ location = new URL(swiper.params.url);
+ } else {
+ location = window2.location;
+ }
+ const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${index}"]`) : swiper.slides[index];
+ let value = slugify(slide.getAttribute("data-history"));
+ if (swiper.params.history.root.length > 0) {
+ let root = swiper.params.history.root;
+ if (root[root.length - 1] === "/") root = root.slice(0, root.length - 1);
+ value = `${root}/${key ? `${key}/` : ""}${value}`;
+ } else if (!location.pathname.includes(key)) {
+ value = `${key ? `${key}/` : ""}${value}`;
+ }
+ if (swiper.params.history.keepQuery) {
+ value += location.search;
+ }
+ const currentState = window2.history.state;
+ if (currentState && currentState.value === value) {
+ return;
+ }
+ if (swiper.params.history.replaceState) {
+ window2.history.replaceState({
+ value
+ }, null, value);
+ } else {
+ window2.history.pushState({
+ value
+ }, null, value);
+ }
+ };
+ const scrollToSlide = (speed, value, runCallbacks) => {
+ if (value) {
+ for (let i = 0, length = swiper.slides.length; i < length; i += 1) {
+ const slide = swiper.slides[i];
+ const slideHistory = slugify(slide.getAttribute("data-history"));
+ if (slideHistory === value) {
+ const index = swiper.getSlideIndex(slide);
+ swiper.slideTo(index, speed, runCallbacks);
+ }
+ }
+ } else {
+ swiper.slideTo(0, speed, runCallbacks);
+ }
+ };
+ const setHistoryPopState = () => {
+ paths = getPathValues(swiper.params.url);
+ scrollToSlide(swiper.params.speed, paths.value, false);
+ };
+ const init = () => {
+ const window2 = getWindow();
+ if (!swiper.params.history) return;
+ if (!window2.history || !window2.history.pushState) {
+ swiper.params.history.enabled = false;
+ swiper.params.hashNavigation.enabled = true;
+ return;
+ }
+ initialized = true;
+ paths = getPathValues(swiper.params.url);
+ if (!paths.key && !paths.value) {
+ if (!swiper.params.history.replaceState) {
+ window2.addEventListener("popstate", setHistoryPopState);
+ }
+ return;
+ }
+ scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);
+ if (!swiper.params.history.replaceState) {
+ window2.addEventListener("popstate", setHistoryPopState);
+ }
+ };
+ const destroy = () => {
+ const window2 = getWindow();
+ if (!swiper.params.history.replaceState) {
+ window2.removeEventListener("popstate", setHistoryPopState);
+ }
+ };
+ on("init", () => {
+ if (swiper.params.history.enabled) {
+ init();
+ }
+ });
+ on("destroy", () => {
+ if (swiper.params.history.enabled) {
+ destroy();
+ }
+ });
+ on("transitionEnd _freeModeNoMomentumRelease", () => {
+ if (initialized) {
+ setHistory(swiper.params.history.key, swiper.activeIndex);
+ }
+ });
+ on("slideChange", () => {
+ if (initialized && swiper.params.cssMode) {
+ setHistory(swiper.params.history.key, swiper.activeIndex);
+ }
+ });
+}
+
+// node_modules/swiper/modules/hash-navigation.mjs
+function HashNavigation(_ref) {
+ let {
+ swiper,
+ extendParams,
+ emit,
+ on
+ } = _ref;
+ let initialized = false;
+ const document2 = getDocument();
+ const window2 = getWindow();
+ extendParams({
+ hashNavigation: {
+ enabled: false,
+ replaceState: false,
+ watchState: false,
+ getSlideIndex(_s, hash) {
+ if (swiper.virtual && swiper.params.virtual.enabled) {
+ const slideWithHash = swiper.slides.find((slideEl) => slideEl.getAttribute("data-hash") === hash);
+ if (!slideWithHash) return 0;
+ const index = parseInt(slideWithHash.getAttribute("data-swiper-slide-index"), 10);
+ return index;
+ }
+ return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]);
+ }
+ }
+ });
+ const onHashChange = () => {
+ emit("hashChange");
+ const newHash = document2.location.hash.replace("#", "");
+ const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex];
+ const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute("data-hash") : "";
+ if (newHash !== activeSlideHash) {
+ const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);
+ if (typeof newIndex === "undefined" || Number.isNaN(newIndex)) return;
+ swiper.slideTo(newIndex);
+ }
+ };
+ const setHash = () => {
+ if (!initialized || !swiper.params.hashNavigation.enabled) return;
+ const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex];
+ const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute("data-hash") || activeSlideEl.getAttribute("data-history") : "";
+ if (swiper.params.hashNavigation.replaceState && window2.history && window2.history.replaceState) {
+ window2.history.replaceState(null, null, `#${activeSlideHash}` || "");
+ emit("hashSet");
+ } else {
+ document2.location.hash = activeSlideHash || "";
+ emit("hashSet");
+ }
+ };
+ const init = () => {
+ if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;
+ initialized = true;
+ const hash = document2.location.hash.replace("#", "");
+ if (hash) {
+ const speed = 0;
+ const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);
+ swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);
+ }
+ if (swiper.params.hashNavigation.watchState) {
+ window2.addEventListener("hashchange", onHashChange);
+ }
+ };
+ const destroy = () => {
+ if (swiper.params.hashNavigation.watchState) {
+ window2.removeEventListener("hashchange", onHashChange);
+ }
+ };
+ on("init", () => {
+ if (swiper.params.hashNavigation.enabled) {
+ init();
+ }
+ });
+ on("destroy", () => {
+ if (swiper.params.hashNavigation.enabled) {
+ destroy();
+ }
+ });
+ on("transitionEnd _freeModeNoMomentumRelease", () => {
+ if (initialized) {
+ setHash();
+ }
+ });
+ on("slideChange", () => {
+ if (initialized && swiper.params.cssMode) {
+ setHash();
+ }
+ });
+}
+
+// node_modules/swiper/modules/autoplay.mjs
+function Autoplay(_ref) {
+ let {
+ swiper,
+ extendParams,
+ on,
+ emit,
+ params
+ } = _ref;
+ swiper.autoplay = {
+ running: false,
+ paused: false,
+ timeLeft: 0
+ };
+ extendParams({
+ autoplay: {
+ enabled: false,
+ delay: 3e3,
+ waitForTransition: true,
+ disableOnInteraction: false,
+ stopOnLastSlide: false,
+ reverseDirection: false,
+ pauseOnMouseEnter: false
+ }
+ });
+ let timeout;
+ let raf;
+ let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3e3;
+ let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3e3;
+ let autoplayTimeLeft;
+ let autoplayStartTime = (/* @__PURE__ */ new Date()).getTime();
+ let wasPaused;
+ let isTouched;
+ let pausedByTouch;
+ let touchStartTimeout;
+ let slideChanged;
+ let pausedByInteraction;
+ let pausedByPointerEnter;
+ function onTransitionEnd(e) {
+ if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;
+ if (e.target !== swiper.wrapperEl) return;
+ swiper.wrapperEl.removeEventListener("transitionend", onTransitionEnd);
+ if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) {
+ return;
+ }
+ resume();
+ }
+ const calcTimeLeft = () => {
+ if (swiper.destroyed || !swiper.autoplay.running) return;
+ if (swiper.autoplay.paused) {
+ wasPaused = true;
+ } else if (wasPaused) {
+ autoplayDelayCurrent = autoplayTimeLeft;
+ wasPaused = false;
+ }
+ const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - (/* @__PURE__ */ new Date()).getTime();
+ swiper.autoplay.timeLeft = timeLeft;
+ emit("autoplayTimeLeft", timeLeft, timeLeft / autoplayDelayTotal);
+ raf = requestAnimationFrame(() => {
+ calcTimeLeft();
+ });
+ };
+ const getSlideDelay = () => {
+ let activeSlideEl;
+ if (swiper.virtual && swiper.params.virtual.enabled) {
+ activeSlideEl = swiper.slides.find((slideEl) => slideEl.classList.contains("swiper-slide-active"));
+ } else {
+ activeSlideEl = swiper.slides[swiper.activeIndex];
+ }
+ if (!activeSlideEl) return void 0;
+ const currentSlideDelay = parseInt(activeSlideEl.getAttribute("data-swiper-autoplay"), 10);
+ return currentSlideDelay;
+ };
+ const run = (delayForce) => {
+ if (swiper.destroyed || !swiper.autoplay.running) return;
+ cancelAnimationFrame(raf);
+ calcTimeLeft();
+ let delay = typeof delayForce === "undefined" ? swiper.params.autoplay.delay : delayForce;
+ autoplayDelayTotal = swiper.params.autoplay.delay;
+ autoplayDelayCurrent = swiper.params.autoplay.delay;
+ const currentSlideDelay = getSlideDelay();
+ if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === "undefined") {
+ delay = currentSlideDelay;
+ autoplayDelayTotal = currentSlideDelay;
+ autoplayDelayCurrent = currentSlideDelay;
+ }
+ autoplayTimeLeft = delay;
+ const speed = swiper.params.speed;
+ const proceed = () => {
+ if (!swiper || swiper.destroyed) return;
+ if (swiper.params.autoplay.reverseDirection) {
+ if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {
+ swiper.slidePrev(speed, true, true);
+ emit("autoplay");
+ } else if (!swiper.params.autoplay.stopOnLastSlide) {
+ swiper.slideTo(swiper.slides.length - 1, speed, true, true);
+ emit("autoplay");
+ }
+ } else {
+ if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {
+ swiper.slideNext(speed, true, true);
+ emit("autoplay");
+ } else if (!swiper.params.autoplay.stopOnLastSlide) {
+ swiper.slideTo(0, speed, true, true);
+ emit("autoplay");
+ }
+ }
+ if (swiper.params.cssMode) {
+ autoplayStartTime = (/* @__PURE__ */ new Date()).getTime();
+ requestAnimationFrame(() => {
+ run();
+ });
+ }
+ };
+ if (delay > 0) {
+ clearTimeout(timeout);
+ timeout = setTimeout(() => {
+ proceed();
+ }, delay);
+ } else {
+ requestAnimationFrame(() => {
+ proceed();
+ });
+ }
+ return delay;
+ };
+ const start = () => {
+ autoplayStartTime = (/* @__PURE__ */ new Date()).getTime();
+ swiper.autoplay.running = true;
+ run();
+ emit("autoplayStart");
+ };
+ const stop = () => {
+ swiper.autoplay.running = false;
+ clearTimeout(timeout);
+ cancelAnimationFrame(raf);
+ emit("autoplayStop");
+ };
+ const pause = (internal, reset) => {
+ if (swiper.destroyed || !swiper.autoplay.running) return;
+ clearTimeout(timeout);
+ if (!internal) {
+ pausedByInteraction = true;
+ }
+ const proceed = () => {
+ emit("autoplayPause");
+ if (swiper.params.autoplay.waitForTransition) {
+ swiper.wrapperEl.addEventListener("transitionend", onTransitionEnd);
+ } else {
+ resume();
+ }
+ };
+ swiper.autoplay.paused = true;
+ if (reset) {
+ if (slideChanged) {
+ autoplayTimeLeft = swiper.params.autoplay.delay;
+ }
+ slideChanged = false;
+ proceed();
+ return;
+ }
+ const delay = autoplayTimeLeft || swiper.params.autoplay.delay;
+ autoplayTimeLeft = delay - ((/* @__PURE__ */ new Date()).getTime() - autoplayStartTime);
+ if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;
+ if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;
+ proceed();
+ };
+ const resume = () => {
+ if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;
+ autoplayStartTime = (/* @__PURE__ */ new Date()).getTime();
+ if (pausedByInteraction) {
+ pausedByInteraction = false;
+ run(autoplayTimeLeft);
+ } else {
+ run();
+ }
+ swiper.autoplay.paused = false;
+ emit("autoplayResume");
+ };
+ const onVisibilityChange = () => {
+ if (swiper.destroyed || !swiper.autoplay.running) return;
+ const document2 = getDocument();
+ if (document2.visibilityState === "hidden") {
+ pausedByInteraction = true;
+ pause(true);
+ }
+ if (document2.visibilityState === "visible") {
+ resume();
+ }
+ };
+ const onPointerEnter = (e) => {
+ if (e.pointerType !== "mouse") return;
+ pausedByInteraction = true;
+ pausedByPointerEnter = true;
+ if (swiper.animating || swiper.autoplay.paused) return;
+ pause(true);
+ };
+ const onPointerLeave = (e) => {
+ if (e.pointerType !== "mouse") return;
+ pausedByPointerEnter = false;
+ if (swiper.autoplay.paused) {
+ resume();
+ }
+ };
+ const attachMouseEvents = () => {
+ if (swiper.params.autoplay.pauseOnMouseEnter) {
+ swiper.el.addEventListener("pointerenter", onPointerEnter);
+ swiper.el.addEventListener("pointerleave", onPointerLeave);
+ }
+ };
+ const detachMouseEvents = () => {
+ if (swiper.el && typeof swiper.el !== "string") {
+ swiper.el.removeEventListener("pointerenter", onPointerEnter);
+ swiper.el.removeEventListener("pointerleave", onPointerLeave);
+ }
+ };
+ const attachDocumentEvents = () => {
+ const document2 = getDocument();
+ document2.addEventListener("visibilitychange", onVisibilityChange);
+ };
+ const detachDocumentEvents = () => {
+ const document2 = getDocument();
+ document2.removeEventListener("visibilitychange", onVisibilityChange);
+ };
+ on("init", () => {
+ if (swiper.params.autoplay.enabled) {
+ attachMouseEvents();
+ attachDocumentEvents();
+ start();
+ }
+ });
+ on("destroy", () => {
+ detachMouseEvents();
+ detachDocumentEvents();
+ if (swiper.autoplay.running) {
+ stop();
+ }
+ });
+ on("_freeModeStaticRelease", () => {
+ if (pausedByTouch || pausedByInteraction) {
+ resume();
+ }
+ });
+ on("_freeModeNoMomentumRelease", () => {
+ if (!swiper.params.autoplay.disableOnInteraction) {
+ pause(true, true);
+ } else {
+ stop();
+ }
+ });
+ on("beforeTransitionStart", (_s, speed, internal) => {
+ if (swiper.destroyed || !swiper.autoplay.running) return;
+ if (internal || !swiper.params.autoplay.disableOnInteraction) {
+ pause(true, true);
+ } else {
+ stop();
+ }
+ });
+ on("sliderFirstMove", () => {
+ if (swiper.destroyed || !swiper.autoplay.running) return;
+ if (swiper.params.autoplay.disableOnInteraction) {
+ stop();
+ return;
+ }
+ isTouched = true;
+ pausedByTouch = false;
+ pausedByInteraction = false;
+ touchStartTimeout = setTimeout(() => {
+ pausedByInteraction = true;
+ pausedByTouch = true;
+ pause(true);
+ }, 200);
+ });
+ on("touchEnd", () => {
+ if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;
+ clearTimeout(touchStartTimeout);
+ clearTimeout(timeout);
+ if (swiper.params.autoplay.disableOnInteraction) {
+ pausedByTouch = false;
+ isTouched = false;
+ return;
+ }
+ if (pausedByTouch && swiper.params.cssMode) resume();
+ pausedByTouch = false;
+ isTouched = false;
+ });
+ on("slideChange", () => {
+ if (swiper.destroyed || !swiper.autoplay.running) return;
+ slideChanged = true;
+ });
+ Object.assign(swiper.autoplay, {
+ start,
+ stop,
+ pause,
+ resume
+ });
+}
+
+// node_modules/swiper/modules/thumbs.mjs
+function Thumb(_ref) {
+ let {
+ swiper,
+ extendParams,
+ on
+ } = _ref;
+ extendParams({
+ thumbs: {
+ swiper: null,
+ multipleActiveThumbs: true,
+ autoScrollOffset: 0,
+ slideThumbActiveClass: "swiper-slide-thumb-active",
+ thumbsContainerClass: "swiper-thumbs"
+ }
+ });
+ let initialized = false;
+ let swiperCreated = false;
+ swiper.thumbs = {
+ swiper: null
+ };
+ function onThumbClick() {
+ const thumbsSwiper = swiper.thumbs.swiper;
+ if (!thumbsSwiper || thumbsSwiper.destroyed) return;
+ const clickedIndex = thumbsSwiper.clickedIndex;
+ const clickedSlide = thumbsSwiper.clickedSlide;
+ if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;
+ if (typeof clickedIndex === "undefined" || clickedIndex === null) return;
+ let slideToIndex;
+ if (thumbsSwiper.params.loop) {
+ slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute("data-swiper-slide-index"), 10);
+ } else {
+ slideToIndex = clickedIndex;
+ }
+ if (swiper.params.loop) {
+ swiper.slideToLoop(slideToIndex);
+ } else {
+ swiper.slideTo(slideToIndex);
+ }
+ }
+ function init() {
+ const {
+ thumbs: thumbsParams
+ } = swiper.params;
+ if (initialized) return false;
+ initialized = true;
+ const SwiperClass = swiper.constructor;
+ if (thumbsParams.swiper instanceof SwiperClass) {
+ if (thumbsParams.swiper.destroyed) {
+ initialized = false;
+ return false;
+ }
+ swiper.thumbs.swiper = thumbsParams.swiper;
+ Object.assign(swiper.thumbs.swiper.originalParams, {
+ watchSlidesProgress: true,
+ slideToClickedSlide: false
+ });
+ Object.assign(swiper.thumbs.swiper.params, {
+ watchSlidesProgress: true,
+ slideToClickedSlide: false
+ });
+ swiper.thumbs.swiper.update();
+ } else if (isObject(thumbsParams.swiper)) {
+ const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);
+ Object.assign(thumbsSwiperParams, {
+ watchSlidesProgress: true,
+ slideToClickedSlide: false
+ });
+ swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);
+ swiperCreated = true;
+ }
+ swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);
+ swiper.thumbs.swiper.on("tap", onThumbClick);
+ return true;
+ }
+ function update(initial) {
+ const thumbsSwiper = swiper.thumbs.swiper;
+ if (!thumbsSwiper || thumbsSwiper.destroyed) return;
+ const slidesPerView = thumbsSwiper.params.slidesPerView === "auto" ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;
+ let thumbsToActivate = 1;
+ const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
+ if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
+ thumbsToActivate = swiper.params.slidesPerView;
+ }
+ if (!swiper.params.thumbs.multipleActiveThumbs) {
+ thumbsToActivate = 1;
+ }
+ thumbsToActivate = Math.floor(thumbsToActivate);
+ thumbsSwiper.slides.forEach((slideEl) => slideEl.classList.remove(thumbActiveClass));
+ if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {
+ for (let i = 0; i < thumbsToActivate; i += 1) {
+ elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach((slideEl) => {
+ slideEl.classList.add(thumbActiveClass);
+ });
+ }
+ } else {
+ for (let i = 0; i < thumbsToActivate; i += 1) {
+ if (thumbsSwiper.slides[swiper.realIndex + i]) {
+ thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);
+ }
+ }
+ }
+ const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;
+ const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;
+ if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {
+ const currentThumbsIndex = thumbsSwiper.activeIndex;
+ let newThumbsIndex;
+ let direction;
+ if (thumbsSwiper.params.loop) {
+ const newThumbsSlide = thumbsSwiper.slides.find((slideEl) => slideEl.getAttribute("data-swiper-slide-index") === `${swiper.realIndex}`);
+ newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);
+ direction = swiper.activeIndex > swiper.previousIndex ? "next" : "prev";
+ } else {
+ newThumbsIndex = swiper.realIndex;
+ direction = newThumbsIndex > swiper.previousIndex ? "next" : "prev";
+ }
+ if (useOffset) {
+ newThumbsIndex += direction === "next" ? autoScrollOffset : -1 * autoScrollOffset;
+ }
+ if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
+ if (thumbsSwiper.params.centeredSlides) {
+ if (newThumbsIndex > currentThumbsIndex) {
+ newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
+ } else {
+ newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
+ }
+ } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;
+ thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : void 0);
+ }
+ }
+ }
+ on("beforeInit", () => {
+ const {
+ thumbs
+ } = swiper.params;
+ if (!thumbs || !thumbs.swiper) return;
+ if (typeof thumbs.swiper === "string" || thumbs.swiper instanceof HTMLElement) {
+ const document2 = getDocument();
+ const getThumbsElementAndInit = () => {
+ const thumbsElement = typeof thumbs.swiper === "string" ? document2.querySelector(thumbs.swiper) : thumbs.swiper;
+ if (thumbsElement && thumbsElement.swiper) {
+ thumbs.swiper = thumbsElement.swiper;
+ init();
+ update(true);
+ } else if (thumbsElement) {
+ const eventName = `${swiper.params.eventsPrefix}init`;
+ const onThumbsSwiper = (e) => {
+ thumbs.swiper = e.detail[0];
+ thumbsElement.removeEventListener(eventName, onThumbsSwiper);
+ init();
+ update(true);
+ thumbs.swiper.update();
+ swiper.update();
+ };
+ thumbsElement.addEventListener(eventName, onThumbsSwiper);
+ }
+ return thumbsElement;
+ };
+ const watchForThumbsToAppear = () => {
+ if (swiper.destroyed) return;
+ const thumbsElement = getThumbsElementAndInit();
+ if (!thumbsElement) {
+ requestAnimationFrame(watchForThumbsToAppear);
+ }
+ };
+ requestAnimationFrame(watchForThumbsToAppear);
+ } else {
+ init();
+ update(true);
+ }
+ });
+ on("slideChange update resize observerUpdate", () => {
+ update();
+ });
+ on("setTransition", (_s, duration) => {
+ const thumbsSwiper = swiper.thumbs.swiper;
+ if (!thumbsSwiper || thumbsSwiper.destroyed) return;
+ thumbsSwiper.setTransition(duration);
+ });
+ on("beforeDestroy", () => {
+ const thumbsSwiper = swiper.thumbs.swiper;
+ if (!thumbsSwiper || thumbsSwiper.destroyed) return;
+ if (swiperCreated) {
+ thumbsSwiper.destroy();
+ }
+ });
+ Object.assign(swiper.thumbs, {
+ init,
+ update
+ });
+}
+
+// node_modules/swiper/modules/free-mode.mjs
+function freeMode(_ref) {
+ let {
+ swiper,
+ extendParams,
+ emit,
+ once
+ } = _ref;
+ extendParams({
+ freeMode: {
+ enabled: false,
+ momentum: true,
+ momentumRatio: 1,
+ momentumBounce: true,
+ momentumBounceRatio: 1,
+ momentumVelocityRatio: 1,
+ sticky: false,
+ minimumVelocity: 0.02
+ }
+ });
+ function onTouchStart() {
+ if (swiper.params.cssMode) return;
+ const translate = swiper.getTranslate();
+ swiper.setTranslate(translate);
+ swiper.setTransition(0);
+ swiper.touchEventsData.velocities.length = 0;
+ swiper.freeMode.onTouchEnd({
+ currentPos: swiper.rtl ? swiper.translate : -swiper.translate
+ });
+ }
+ function onTouchMove() {
+ if (swiper.params.cssMode) return;
+ const {
+ touchEventsData: data,
+ touches
+ } = swiper;
+ if (data.velocities.length === 0) {
+ data.velocities.push({
+ position: touches[swiper.isHorizontal() ? "startX" : "startY"],
+ time: data.touchStartTime
+ });
+ }
+ data.velocities.push({
+ position: touches[swiper.isHorizontal() ? "currentX" : "currentY"],
+ time: now()
+ });
+ }
+ function onTouchEnd(_ref2) {
+ let {
+ currentPos
+ } = _ref2;
+ if (swiper.params.cssMode) return;
+ const {
+ params,
+ wrapperEl,
+ rtlTranslate: rtl,
+ snapGrid,
+ touchEventsData: data
+ } = swiper;
+ const touchEndTime = now();
+ const timeDiff = touchEndTime - data.touchStartTime;
+ if (currentPos < -swiper.minTranslate()) {
+ swiper.slideTo(swiper.activeIndex);
+ return;
+ }
+ if (currentPos > -swiper.maxTranslate()) {
+ if (swiper.slides.length < snapGrid.length) {
+ swiper.slideTo(snapGrid.length - 1);
+ } else {
+ swiper.slideTo(swiper.slides.length - 1);
+ }
+ return;
+ }
+ if (params.freeMode.momentum) {
+ if (data.velocities.length > 1) {
+ const lastMoveEvent = data.velocities.pop();
+ const velocityEvent = data.velocities.pop();
+ const distance = lastMoveEvent.position - velocityEvent.position;
+ const time = lastMoveEvent.time - velocityEvent.time;
+ swiper.velocity = distance / time;
+ swiper.velocity /= 2;
+ if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {
+ swiper.velocity = 0;
+ }
+ if (time > 150 || now() - lastMoveEvent.time > 300) {
+ swiper.velocity = 0;
+ }
+ } else {
+ swiper.velocity = 0;
+ }
+ swiper.velocity *= params.freeMode.momentumVelocityRatio;
+ data.velocities.length = 0;
+ let momentumDuration = 1e3 * params.freeMode.momentumRatio;
+ const momentumDistance = swiper.velocity * momentumDuration;
+ let newPosition = swiper.translate + momentumDistance;
+ if (rtl) newPosition = -newPosition;
+ let doBounce = false;
+ let afterBouncePosition;
+ const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;
+ let needsLoopFix;
+ if (newPosition < swiper.maxTranslate()) {
+ if (params.freeMode.momentumBounce) {
+ if (newPosition + swiper.maxTranslate() < -bounceAmount) {
+ newPosition = swiper.maxTranslate() - bounceAmount;
+ }
+ afterBouncePosition = swiper.maxTranslate();
+ doBounce = true;
+ data.allowMomentumBounce = true;
+ } else {
+ newPosition = swiper.maxTranslate();
+ }
+ if (params.loop && params.centeredSlides) needsLoopFix = true;
+ } else if (newPosition > swiper.minTranslate()) {
+ if (params.freeMode.momentumBounce) {
+ if (newPosition - swiper.minTranslate() > bounceAmount) {
+ newPosition = swiper.minTranslate() + bounceAmount;
+ }
+ afterBouncePosition = swiper.minTranslate();
+ doBounce = true;
+ data.allowMomentumBounce = true;
+ } else {
+ newPosition = swiper.minTranslate();
+ }
+ if (params.loop && params.centeredSlides) needsLoopFix = true;
+ } else if (params.freeMode.sticky) {
+ let nextSlide;
+ for (let j = 0; j < snapGrid.length; j += 1) {
+ if (snapGrid[j] > -newPosition) {
+ nextSlide = j;
+ break;
+ }
+ }
+ if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === "next") {
+ newPosition = snapGrid[nextSlide];
+ } else {
+ newPosition = snapGrid[nextSlide - 1];
+ }
+ newPosition = -newPosition;
+ }
+ if (needsLoopFix) {
+ once("transitionEnd", () => {
+ swiper.loopFix();
+ });
+ }
+ if (swiper.velocity !== 0) {
+ if (rtl) {
+ momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
+ } else {
+ momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
+ }
+ if (params.freeMode.sticky) {
+ const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);
+ const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];
+ if (moveDistance < currentSlideSize) {
+ momentumDuration = params.speed;
+ } else if (moveDistance < 2 * currentSlideSize) {
+ momentumDuration = params.speed * 1.5;
+ } else {
+ momentumDuration = params.speed * 2.5;
+ }
+ }
+ } else if (params.freeMode.sticky) {
+ swiper.slideToClosest();
+ return;
+ }
+ if (params.freeMode.momentumBounce && doBounce) {
+ swiper.updateProgress(afterBouncePosition);
+ swiper.setTransition(momentumDuration);
+ swiper.setTranslate(newPosition);
+ swiper.transitionStart(true, swiper.swipeDirection);
+ swiper.animating = true;
+ elementTransitionEnd(wrapperEl, () => {
+ if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;
+ emit("momentumBounce");
+ swiper.setTransition(params.speed);
+ setTimeout(() => {
+ swiper.setTranslate(afterBouncePosition);
+ elementTransitionEnd(wrapperEl, () => {
+ if (!swiper || swiper.destroyed) return;
+ swiper.transitionEnd();
+ });
+ }, 0);
+ });
+ } else if (swiper.velocity) {
+ emit("_freeModeNoMomentumRelease");
+ swiper.updateProgress(newPosition);
+ swiper.setTransition(momentumDuration);
+ swiper.setTranslate(newPosition);
+ swiper.transitionStart(true, swiper.swipeDirection);
+ if (!swiper.animating) {
+ swiper.animating = true;
+ elementTransitionEnd(wrapperEl, () => {
+ if (!swiper || swiper.destroyed) return;
+ swiper.transitionEnd();
+ });
+ }
+ } else {
+ swiper.updateProgress(newPosition);
+ }
+ swiper.updateActiveIndex();
+ swiper.updateSlidesClasses();
+ } else if (params.freeMode.sticky) {
+ swiper.slideToClosest();
+ return;
+ } else if (params.freeMode) {
+ emit("_freeModeNoMomentumRelease");
+ }
+ if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {
+ emit("_freeModeStaticRelease");
+ swiper.updateProgress();
+ swiper.updateActiveIndex();
+ swiper.updateSlidesClasses();
+ }
+ }
+ Object.assign(swiper, {
+ freeMode: {
+ onTouchStart,
+ onTouchMove,
+ onTouchEnd
+ }
+ });
+}
+
+// node_modules/swiper/modules/grid.mjs
+function Grid(_ref) {
+ let {
+ swiper,
+ extendParams,
+ on
+ } = _ref;
+ extendParams({
+ grid: {
+ rows: 1,
+ fill: "column"
+ }
+ });
+ let slidesNumberEvenToRows;
+ let slidesPerRow;
+ let numFullColumns;
+ let wasMultiRow;
+ const getSpaceBetween = () => {
+ let spaceBetween = swiper.params.spaceBetween;
+ if (typeof spaceBetween === "string" && spaceBetween.indexOf("%") >= 0) {
+ spaceBetween = parseFloat(spaceBetween.replace("%", "")) / 100 * swiper.size;
+ } else if (typeof spaceBetween === "string") {
+ spaceBetween = parseFloat(spaceBetween);
+ }
+ return spaceBetween;
+ };
+ const initSlides = (slides) => {
+ const {
+ slidesPerView
+ } = swiper.params;
+ const {
+ rows,
+ fill
+ } = swiper.params.grid;
+ const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;
+ numFullColumns = Math.floor(slidesLength / rows);
+ if (Math.floor(slidesLength / rows) === slidesLength / rows) {
+ slidesNumberEvenToRows = slidesLength;
+ } else {
+ slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;
+ }
+ if (slidesPerView !== "auto" && fill === "row") {
+ slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);
+ }
+ slidesPerRow = slidesNumberEvenToRows / rows;
+ };
+ const unsetSlides = () => {
+ if (swiper.slides) {
+ swiper.slides.forEach((slide) => {
+ if (slide.swiperSlideGridSet) {
+ slide.style.height = "";
+ slide.style[swiper.getDirectionLabel("margin-top")] = "";
+ }
+ });
+ }
+ };
+ const updateSlide = (i, slide, slides) => {
+ const {
+ slidesPerGroup
+ } = swiper.params;
+ const spaceBetween = getSpaceBetween();
+ const {
+ rows,
+ fill
+ } = swiper.params.grid;
+ const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;
+ let newSlideOrderIndex;
+ let column;
+ let row;
+ if (fill === "row" && slidesPerGroup > 1) {
+ const groupIndex = Math.floor(i / (slidesPerGroup * rows));
+ const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;
+ const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);
+ row = Math.floor(slideIndexInGroup / columnsInGroup);
+ column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;
+ newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;
+ slide.style.order = newSlideOrderIndex;
+ } else if (fill === "column") {
+ column = Math.floor(i / rows);
+ row = i - column * rows;
+ if (column > numFullColumns || column === numFullColumns && row === rows - 1) {
+ row += 1;
+ if (row >= rows) {
+ row = 0;
+ column += 1;
+ }
+ }
+ } else {
+ row = Math.floor(i / slidesPerRow);
+ column = i - row * slidesPerRow;
+ }
+ slide.row = row;
+ slide.column = column;
+ slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`;
+ slide.style[swiper.getDirectionLabel("margin-top")] = row !== 0 ? spaceBetween && `${spaceBetween}px` : "";
+ slide.swiperSlideGridSet = true;
+ };
+ const updateWrapperSize = (slideSize, snapGrid) => {
+ const {
+ centeredSlides,
+ roundLengths
+ } = swiper.params;
+ const spaceBetween = getSpaceBetween();
+ const {
+ rows
+ } = swiper.params.grid;
+ swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;
+ swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;
+ if (!swiper.params.cssMode) {
+ swiper.wrapperEl.style[swiper.getDirectionLabel("width")] = `${swiper.virtualSize + spaceBetween}px`;
+ }
+ if (centeredSlides) {
+ const newSlidesGrid = [];
+ for (let i = 0; i < snapGrid.length; i += 1) {
+ let slidesGridItem = snapGrid[i];
+ if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);
+ if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);
+ }
+ snapGrid.splice(0, snapGrid.length);
+ snapGrid.push(...newSlidesGrid);
+ }
+ };
+ const onInit = () => {
+ wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;
+ };
+ const onUpdate = () => {
+ const {
+ params,
+ el
+ } = swiper;
+ const isMultiRow = params.grid && params.grid.rows > 1;
+ if (wasMultiRow && !isMultiRow) {
+ el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);
+ numFullColumns = 1;
+ swiper.emitContainerClasses();
+ } else if (!wasMultiRow && isMultiRow) {
+ el.classList.add(`${params.containerModifierClass}grid`);
+ if (params.grid.fill === "column") {
+ el.classList.add(`${params.containerModifierClass}grid-column`);
+ }
+ swiper.emitContainerClasses();
+ }
+ wasMultiRow = isMultiRow;
+ };
+ on("init", onInit);
+ on("update", onUpdate);
+ swiper.grid = {
+ initSlides,
+ unsetSlides,
+ updateSlide,
+ updateWrapperSize
+ };
+}
+
+// node_modules/swiper/modules/manipulation.mjs
+function appendSlide(slides) {
+ const swiper = this;
+ const {
+ params,
+ slidesEl
+ } = swiper;
+ if (params.loop) {
+ swiper.loopDestroy();
+ }
+ const appendElement = (slideEl) => {
+ if (typeof slideEl === "string") {
+ const tempDOM = document.createElement("div");
+ tempDOM.innerHTML = slideEl;
+ slidesEl.append(tempDOM.children[0]);
+ tempDOM.innerHTML = "";
+ } else {
+ slidesEl.append(slideEl);
+ }
+ };
+ if (typeof slides === "object" && "length" in slides) {
+ for (let i = 0; i < slides.length; i += 1) {
+ if (slides[i]) appendElement(slides[i]);
+ }
+ } else {
+ appendElement(slides);
+ }
+ swiper.recalcSlides();
+ if (params.loop) {
+ swiper.loopCreate();
+ }
+ if (!params.observer || swiper.isElement) {
+ swiper.update();
+ }
+}
+function prependSlide(slides) {
+ const swiper = this;
+ const {
+ params,
+ activeIndex,
+ slidesEl
+ } = swiper;
+ if (params.loop) {
+ swiper.loopDestroy();
+ }
+ let newActiveIndex = activeIndex + 1;
+ const prependElement = (slideEl) => {
+ if (typeof slideEl === "string") {
+ const tempDOM = document.createElement("div");
+ tempDOM.innerHTML = slideEl;
+ slidesEl.prepend(tempDOM.children[0]);
+ tempDOM.innerHTML = "";
+ } else {
+ slidesEl.prepend(slideEl);
+ }
+ };
+ if (typeof slides === "object" && "length" in slides) {
+ for (let i = 0; i < slides.length; i += 1) {
+ if (slides[i]) prependElement(slides[i]);
+ }
+ newActiveIndex = activeIndex + slides.length;
+ } else {
+ prependElement(slides);
+ }
+ swiper.recalcSlides();
+ if (params.loop) {
+ swiper.loopCreate();
+ }
+ if (!params.observer || swiper.isElement) {
+ swiper.update();
+ }
+ swiper.slideTo(newActiveIndex, 0, false);
+}
+function addSlide(index, slides) {
+ const swiper = this;
+ const {
+ params,
+ activeIndex,
+ slidesEl
+ } = swiper;
+ let activeIndexBuffer = activeIndex;
+ if (params.loop) {
+ activeIndexBuffer -= swiper.loopedSlides;
+ swiper.loopDestroy();
+ swiper.recalcSlides();
+ }
+ const baseLength = swiper.slides.length;
+ if (index <= 0) {
+ swiper.prependSlide(slides);
+ return;
+ }
+ if (index >= baseLength) {
+ swiper.appendSlide(slides);
+ return;
+ }
+ let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
+ const slidesBuffer = [];
+ for (let i = baseLength - 1; i >= index; i -= 1) {
+ const currentSlide = swiper.slides[i];
+ currentSlide.remove();
+ slidesBuffer.unshift(currentSlide);
+ }
+ if (typeof slides === "object" && "length" in slides) {
+ for (let i = 0; i < slides.length; i += 1) {
+ if (slides[i]) slidesEl.append(slides[i]);
+ }
+ newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
+ } else {
+ slidesEl.append(slides);
+ }
+ for (let i = 0; i < slidesBuffer.length; i += 1) {
+ slidesEl.append(slidesBuffer[i]);
+ }
+ swiper.recalcSlides();
+ if (params.loop) {
+ swiper.loopCreate();
+ }
+ if (!params.observer || swiper.isElement) {
+ swiper.update();
+ }
+ if (params.loop) {
+ swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
+ } else {
+ swiper.slideTo(newActiveIndex, 0, false);
+ }
+}
+function removeSlide(slidesIndexes) {
+ const swiper = this;
+ const {
+ params,
+ activeIndex
+ } = swiper;
+ let activeIndexBuffer = activeIndex;
+ if (params.loop) {
+ activeIndexBuffer -= swiper.loopedSlides;
+ swiper.loopDestroy();
+ }
+ let newActiveIndex = activeIndexBuffer;
+ let indexToRemove;
+ if (typeof slidesIndexes === "object" && "length" in slidesIndexes) {
+ for (let i = 0; i < slidesIndexes.length; i += 1) {
+ indexToRemove = slidesIndexes[i];
+ if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();
+ if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
+ }
+ newActiveIndex = Math.max(newActiveIndex, 0);
+ } else {
+ indexToRemove = slidesIndexes;
+ if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();
+ if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
+ newActiveIndex = Math.max(newActiveIndex, 0);
+ }
+ swiper.recalcSlides();
+ if (params.loop) {
+ swiper.loopCreate();
+ }
+ if (!params.observer || swiper.isElement) {
+ swiper.update();
+ }
+ if (params.loop) {
+ swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
+ } else {
+ swiper.slideTo(newActiveIndex, 0, false);
+ }
+}
+function removeAllSlides() {
+ const swiper = this;
+ const slidesIndexes = [];
+ for (let i = 0; i < swiper.slides.length; i += 1) {
+ slidesIndexes.push(i);
+ }
+ swiper.removeSlide(slidesIndexes);
+}
+function Manipulation(_ref) {
+ let {
+ swiper
+ } = _ref;
+ Object.assign(swiper, {
+ appendSlide: appendSlide.bind(swiper),
+ prependSlide: prependSlide.bind(swiper),
+ addSlide: addSlide.bind(swiper),
+ removeSlide: removeSlide.bind(swiper),
+ removeAllSlides: removeAllSlides.bind(swiper)
+ });
+}
+
+// node_modules/swiper/shared/effect-init.mjs
+function effectInit(params) {
+ const {
+ effect,
+ swiper,
+ on,
+ setTranslate,
+ setTransition,
+ overwriteParams,
+ perspective,
+ recreateShadows,
+ getEffectParams
+ } = params;
+ on("beforeInit", () => {
+ if (swiper.params.effect !== effect) return;
+ swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);
+ if (perspective && perspective()) {
+ swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);
+ }
+ const overwriteParamsResult = overwriteParams ? overwriteParams() : {};
+ Object.assign(swiper.params, overwriteParamsResult);
+ Object.assign(swiper.originalParams, overwriteParamsResult);
+ });
+ on("setTranslate", () => {
+ if (swiper.params.effect !== effect) return;
+ setTranslate();
+ });
+ on("setTransition", (_s, duration) => {
+ if (swiper.params.effect !== effect) return;
+ setTransition(duration);
+ });
+ on("transitionEnd", () => {
+ if (swiper.params.effect !== effect) return;
+ if (recreateShadows) {
+ if (!getEffectParams || !getEffectParams().slideShadows) return;
+ swiper.slides.forEach((slideEl) => {
+ slideEl.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((shadowEl) => shadowEl.remove());
+ });
+ recreateShadows();
+ }
+ });
+ let requireUpdateOnVirtual;
+ on("virtualUpdate", () => {
+ if (swiper.params.effect !== effect) return;
+ if (!swiper.slides.length) {
+ requireUpdateOnVirtual = true;
+ }
+ requestAnimationFrame(() => {
+ if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {
+ setTranslate();
+ requireUpdateOnVirtual = false;
+ }
+ });
+ });
+}
+
+// node_modules/swiper/shared/effect-target.mjs
+function effectTarget(effectParams, slideEl) {
+ const transformEl = getSlideTransformEl(slideEl);
+ if (transformEl !== slideEl) {
+ transformEl.style.backfaceVisibility = "hidden";
+ transformEl.style["-webkit-backface-visibility"] = "hidden";
+ }
+ return transformEl;
+}
+
+// node_modules/swiper/shared/effect-virtual-transition-end.mjs
+function effectVirtualTransitionEnd(_ref) {
+ let {
+ swiper,
+ duration,
+ transformElements,
+ allSlides
+ } = _ref;
+ const {
+ activeIndex
+ } = swiper;
+ const getSlide = (el) => {
+ if (!el.parentElement) {
+ const slide = swiper.slides.find((slideEl) => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode);
+ return slide;
+ }
+ return el.parentElement;
+ };
+ if (swiper.params.virtualTranslate && duration !== 0) {
+ let eventTriggered = false;
+ let transitionEndTarget;
+ if (allSlides) {
+ transitionEndTarget = transformElements;
+ } else {
+ transitionEndTarget = transformElements.filter((transformEl) => {
+ const el = transformEl.classList.contains("swiper-slide-transform") ? getSlide(transformEl) : transformEl;
+ return swiper.getSlideIndex(el) === activeIndex;
+ });
+ }
+ transitionEndTarget.forEach((el) => {
+ elementTransitionEnd(el, () => {
+ if (eventTriggered) return;
+ if (!swiper || swiper.destroyed) return;
+ eventTriggered = true;
+ swiper.animating = false;
+ const evt = new window.CustomEvent("transitionend", {
+ bubbles: true,
+ cancelable: true
+ });
+ swiper.wrapperEl.dispatchEvent(evt);
+ });
+ });
+ }
+}
+
+// node_modules/swiper/modules/effect-fade.mjs
+function EffectFade(_ref) {
+ let {
+ swiper,
+ extendParams,
+ on
+ } = _ref;
+ extendParams({
+ fadeEffect: {
+ crossFade: false
+ }
+ });
+ const setTranslate = () => {
+ const {
+ slides
+ } = swiper;
+ const params = swiper.params.fadeEffect;
+ for (let i = 0; i < slides.length; i += 1) {
+ const slideEl = swiper.slides[i];
+ const offset = slideEl.swiperSlideOffset;
+ let tx = -offset;
+ if (!swiper.params.virtualTranslate) tx -= swiper.translate;
+ let ty = 0;
+ if (!swiper.isHorizontal()) {
+ ty = tx;
+ tx = 0;
+ }
+ const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);
+ const targetEl = effectTarget(params, slideEl);
+ targetEl.style.opacity = slideOpacity;
+ targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;
+ }
+ };
+ const setTransition = (duration) => {
+ const transformElements = swiper.slides.map((slideEl) => getSlideTransformEl(slideEl));
+ transformElements.forEach((el) => {
+ el.style.transitionDuration = `${duration}ms`;
+ });
+ effectVirtualTransitionEnd({
+ swiper,
+ duration,
+ transformElements,
+ allSlides: true
+ });
+ };
+ effectInit({
+ effect: "fade",
+ swiper,
+ on,
+ setTranslate,
+ setTransition,
+ overwriteParams: () => ({
+ slidesPerView: 1,
+ slidesPerGroup: 1,
+ watchSlidesProgress: true,
+ spaceBetween: 0,
+ virtualTranslate: !swiper.params.cssMode
+ })
+ });
+}
+
+// node_modules/swiper/modules/effect-cube.mjs
+function EffectCube(_ref) {
+ let {
+ swiper,
+ extendParams,
+ on
+ } = _ref;
+ extendParams({
+ cubeEffect: {
+ slideShadows: true,
+ shadow: true,
+ shadowOffset: 20,
+ shadowScale: 0.94
+ }
+ });
+ const createSlideShadows = (slideEl, progress, isHorizontal) => {
+ let shadowBefore = isHorizontal ? slideEl.querySelector(".swiper-slide-shadow-left") : slideEl.querySelector(".swiper-slide-shadow-top");
+ let shadowAfter = isHorizontal ? slideEl.querySelector(".swiper-slide-shadow-right") : slideEl.querySelector(".swiper-slide-shadow-bottom");
+ if (!shadowBefore) {
+ shadowBefore = createElement("div", `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? "left" : "top"}`.split(" "));
+ slideEl.append(shadowBefore);
+ }
+ if (!shadowAfter) {
+ shadowAfter = createElement("div", `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? "right" : "bottom"}`.split(" "));
+ slideEl.append(shadowAfter);
+ }
+ if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);
+ if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);
+ };
+ const recreateShadows = () => {
+ const isHorizontal = swiper.isHorizontal();
+ swiper.slides.forEach((slideEl) => {
+ const progress = Math.max(Math.min(slideEl.progress, 1), -1);
+ createSlideShadows(slideEl, progress, isHorizontal);
+ });
+ };
+ const setTranslate = () => {
+ const {
+ el,
+ wrapperEl,
+ slides,
+ width: swiperWidth,
+ height: swiperHeight,
+ rtlTranslate: rtl,
+ size: swiperSize,
+ browser
+ } = swiper;
+ const r = getRotateFix(swiper);
+ const params = swiper.params.cubeEffect;
+ const isHorizontal = swiper.isHorizontal();
+ const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
+ let wrapperRotate = 0;
+ let cubeShadowEl;
+ if (params.shadow) {
+ if (isHorizontal) {
+ cubeShadowEl = swiper.wrapperEl.querySelector(".swiper-cube-shadow");
+ if (!cubeShadowEl) {
+ cubeShadowEl = createElement("div", "swiper-cube-shadow");
+ swiper.wrapperEl.append(cubeShadowEl);
+ }
+ cubeShadowEl.style.height = `${swiperWidth}px`;
+ } else {
+ cubeShadowEl = el.querySelector(".swiper-cube-shadow");
+ if (!cubeShadowEl) {
+ cubeShadowEl = createElement("div", "swiper-cube-shadow");
+ el.append(cubeShadowEl);
+ }
+ }
+ }
+ for (let i = 0; i < slides.length; i += 1) {
+ const slideEl = slides[i];
+ let slideIndex = i;
+ if (isVirtual) {
+ slideIndex = parseInt(slideEl.getAttribute("data-swiper-slide-index"), 10);
+ }
+ let slideAngle = slideIndex * 90;
+ let round = Math.floor(slideAngle / 360);
+ if (rtl) {
+ slideAngle = -slideAngle;
+ round = Math.floor(-slideAngle / 360);
+ }
+ const progress = Math.max(Math.min(slideEl.progress, 1), -1);
+ let tx = 0;
+ let ty = 0;
+ let tz = 0;
+ if (slideIndex % 4 === 0) {
+ tx = -round * 4 * swiperSize;
+ tz = 0;
+ } else if ((slideIndex - 1) % 4 === 0) {
+ tx = 0;
+ tz = -round * 4 * swiperSize;
+ } else if ((slideIndex - 2) % 4 === 0) {
+ tx = swiperSize + round * 4 * swiperSize;
+ tz = swiperSize;
+ } else if ((slideIndex - 3) % 4 === 0) {
+ tx = -swiperSize;
+ tz = 3 * swiperSize + swiperSize * 4 * round;
+ }
+ if (rtl) {
+ tx = -tx;
+ }
+ if (!isHorizontal) {
+ ty = tx;
+ tx = 0;
+ }
+ const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;
+ if (progress <= 1 && progress > -1) {
+ wrapperRotate = slideIndex * 90 + progress * 90;
+ if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;
+ }
+ slideEl.style.transform = transform;
+ if (params.slideShadows) {
+ createSlideShadows(slideEl, progress, isHorizontal);
+ }
+ }
+ wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;
+ wrapperEl.style["-webkit-transform-origin"] = `50% 50% -${swiperSize / 2}px`;
+ if (params.shadow) {
+ if (isHorizontal) {
+ cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`;
+ } else {
+ const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;
+ const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);
+ const scale1 = params.shadowScale;
+ const scale2 = params.shadowScale / multiplier;
+ const offset = params.shadowOffset;
+ cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`;
+ }
+ }
+ const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;
+ wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`;
+ wrapperEl.style.setProperty("--swiper-cube-translate-z", `${zFactor}px`);
+ };
+ const setTransition = (duration) => {
+ const {
+ el,
+ slides
+ } = swiper;
+ slides.forEach((slideEl) => {
+ slideEl.style.transitionDuration = `${duration}ms`;
+ slideEl.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((subEl) => {
+ subEl.style.transitionDuration = `${duration}ms`;
+ });
+ });
+ if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {
+ const shadowEl = el.querySelector(".swiper-cube-shadow");
+ if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;
+ }
+ };
+ effectInit({
+ effect: "cube",
+ swiper,
+ on,
+ setTranslate,
+ setTransition,
+ recreateShadows,
+ getEffectParams: () => swiper.params.cubeEffect,
+ perspective: () => true,
+ overwriteParams: () => ({
+ slidesPerView: 1,
+ slidesPerGroup: 1,
+ watchSlidesProgress: true,
+ resistanceRatio: 0,
+ spaceBetween: 0,
+ centeredSlides: false,
+ virtualTranslate: true
+ })
+ });
+}
+
+// node_modules/swiper/shared/create-shadow.mjs
+function createShadow(suffix, slideEl, side) {
+ const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ""}${suffix ? ` swiper-slide-shadow-${suffix}` : ""}`;
+ const shadowContainer = getSlideTransformEl(slideEl);
+ let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(" ").join(".")}`);
+ if (!shadowEl) {
+ shadowEl = createElement("div", shadowClass.split(" "));
+ shadowContainer.append(shadowEl);
+ }
+ return shadowEl;
+}
+
+// node_modules/swiper/modules/effect-flip.mjs
+function EffectFlip(_ref) {
+ let {
+ swiper,
+ extendParams,
+ on
+ } = _ref;
+ extendParams({
+ flipEffect: {
+ slideShadows: true,
+ limitRotation: true
+ }
+ });
+ const createSlideShadows = (slideEl, progress) => {
+ let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector(".swiper-slide-shadow-left") : slideEl.querySelector(".swiper-slide-shadow-top");
+ let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector(".swiper-slide-shadow-right") : slideEl.querySelector(".swiper-slide-shadow-bottom");
+ if (!shadowBefore) {
+ shadowBefore = createShadow("flip", slideEl, swiper.isHorizontal() ? "left" : "top");
+ }
+ if (!shadowAfter) {
+ shadowAfter = createShadow("flip", slideEl, swiper.isHorizontal() ? "right" : "bottom");
+ }
+ if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);
+ if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);
+ };
+ const recreateShadows = () => {
+ swiper.params.flipEffect;
+ swiper.slides.forEach((slideEl) => {
+ let progress = slideEl.progress;
+ if (swiper.params.flipEffect.limitRotation) {
+ progress = Math.max(Math.min(slideEl.progress, 1), -1);
+ }
+ createSlideShadows(slideEl, progress);
+ });
+ };
+ const setTranslate = () => {
+ const {
+ slides,
+ rtlTranslate: rtl
+ } = swiper;
+ const params = swiper.params.flipEffect;
+ const rotateFix = getRotateFix(swiper);
+ for (let i = 0; i < slides.length; i += 1) {
+ const slideEl = slides[i];
+ let progress = slideEl.progress;
+ if (swiper.params.flipEffect.limitRotation) {
+ progress = Math.max(Math.min(slideEl.progress, 1), -1);
+ }
+ const offset = slideEl.swiperSlideOffset;
+ const rotate = -180 * progress;
+ let rotateY = rotate;
+ let rotateX = 0;
+ let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;
+ let ty = 0;
+ if (!swiper.isHorizontal()) {
+ ty = tx;
+ tx = 0;
+ rotateX = -rotateY;
+ rotateY = 0;
+ } else if (rtl) {
+ rotateY = -rotateY;
+ }
+ slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
+ if (params.slideShadows) {
+ createSlideShadows(slideEl, progress);
+ }
+ const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`;
+ const targetEl = effectTarget(params, slideEl);
+ targetEl.style.transform = transform;
+ }
+ };
+ const setTransition = (duration) => {
+ const transformElements = swiper.slides.map((slideEl) => getSlideTransformEl(slideEl));
+ transformElements.forEach((el) => {
+ el.style.transitionDuration = `${duration}ms`;
+ el.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((shadowEl) => {
+ shadowEl.style.transitionDuration = `${duration}ms`;
+ });
+ });
+ effectVirtualTransitionEnd({
+ swiper,
+ duration,
+ transformElements
+ });
+ };
+ effectInit({
+ effect: "flip",
+ swiper,
+ on,
+ setTranslate,
+ setTransition,
+ recreateShadows,
+ getEffectParams: () => swiper.params.flipEffect,
+ perspective: () => true,
+ overwriteParams: () => ({
+ slidesPerView: 1,
+ slidesPerGroup: 1,
+ watchSlidesProgress: true,
+ spaceBetween: 0,
+ virtualTranslate: !swiper.params.cssMode
+ })
+ });
+}
+
+// node_modules/swiper/modules/effect-coverflow.mjs
+function EffectCoverflow(_ref) {
+ let {
+ swiper,
+ extendParams,
+ on
+ } = _ref;
+ extendParams({
+ coverflowEffect: {
+ rotate: 50,
+ stretch: 0,
+ depth: 100,
+ scale: 1,
+ modifier: 1,
+ slideShadows: true
+ }
+ });
+ const setTranslate = () => {
+ const {
+ width: swiperWidth,
+ height: swiperHeight,
+ slides,
+ slidesSizesGrid
+ } = swiper;
+ const params = swiper.params.coverflowEffect;
+ const isHorizontal = swiper.isHorizontal();
+ const transform = swiper.translate;
+ const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;
+ const rotate = isHorizontal ? params.rotate : -params.rotate;
+ const translate = params.depth;
+ const r = getRotateFix(swiper);
+ for (let i = 0, length = slides.length; i < length; i += 1) {
+ const slideEl = slides[i];
+ const slideSize = slidesSizesGrid[i];
+ const slideOffset = slideEl.swiperSlideOffset;
+ const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;
+ const offsetMultiplier = typeof params.modifier === "function" ? params.modifier(centerOffset) : centerOffset * params.modifier;
+ let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
+ let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;
+ let translateZ = -translate * Math.abs(offsetMultiplier);
+ let stretch = params.stretch;
+ if (typeof stretch === "string" && stretch.indexOf("%") !== -1) {
+ stretch = parseFloat(params.stretch) / 100 * slideSize;
+ }
+ let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;
+ let translateX = isHorizontal ? stretch * offsetMultiplier : 0;
+ let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);
+ if (Math.abs(translateX) < 1e-3) translateX = 0;
+ if (Math.abs(translateY) < 1e-3) translateY = 0;
+ if (Math.abs(translateZ) < 1e-3) translateZ = 0;
+ if (Math.abs(rotateY) < 1e-3) rotateY = 0;
+ if (Math.abs(rotateX) < 1e-3) rotateX = 0;
+ if (Math.abs(scale) < 1e-3) scale = 0;
+ const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`;
+ const targetEl = effectTarget(params, slideEl);
+ targetEl.style.transform = slideTransform;
+ slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
+ if (params.slideShadows) {
+ let shadowBeforeEl = isHorizontal ? slideEl.querySelector(".swiper-slide-shadow-left") : slideEl.querySelector(".swiper-slide-shadow-top");
+ let shadowAfterEl = isHorizontal ? slideEl.querySelector(".swiper-slide-shadow-right") : slideEl.querySelector(".swiper-slide-shadow-bottom");
+ if (!shadowBeforeEl) {
+ shadowBeforeEl = createShadow("coverflow", slideEl, isHorizontal ? "left" : "top");
+ }
+ if (!shadowAfterEl) {
+ shadowAfterEl = createShadow("coverflow", slideEl, isHorizontal ? "right" : "bottom");
+ }
+ if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;
+ if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;
+ }
+ }
+ };
+ const setTransition = (duration) => {
+ const transformElements = swiper.slides.map((slideEl) => getSlideTransformEl(slideEl));
+ transformElements.forEach((el) => {
+ el.style.transitionDuration = `${duration}ms`;
+ el.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((shadowEl) => {
+ shadowEl.style.transitionDuration = `${duration}ms`;
+ });
+ });
+ };
+ effectInit({
+ effect: "coverflow",
+ swiper,
+ on,
+ setTranslate,
+ setTransition,
+ perspective: () => true,
+ overwriteParams: () => ({
+ watchSlidesProgress: true
+ })
+ });
+}
+
+// node_modules/swiper/modules/effect-creative.mjs
+function EffectCreative(_ref) {
+ let {
+ swiper,
+ extendParams,
+ on
+ } = _ref;
+ extendParams({
+ creativeEffect: {
+ limitProgress: 1,
+ shadowPerProgress: false,
+ progressMultiplier: 1,
+ perspective: true,
+ prev: {
+ translate: [0, 0, 0],
+ rotate: [0, 0, 0],
+ opacity: 1,
+ scale: 1
+ },
+ next: {
+ translate: [0, 0, 0],
+ rotate: [0, 0, 0],
+ opacity: 1,
+ scale: 1
+ }
+ }
+ });
+ const getTranslateValue = (value) => {
+ if (typeof value === "string") return value;
+ return `${value}px`;
+ };
+ const setTranslate = () => {
+ const {
+ slides,
+ wrapperEl,
+ slidesSizesGrid
+ } = swiper;
+ const params = swiper.params.creativeEffect;
+ const {
+ progressMultiplier: multiplier
+ } = params;
+ const isCenteredSlides = swiper.params.centeredSlides;
+ const rotateFix = getRotateFix(swiper);
+ if (isCenteredSlides) {
+ const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;
+ wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;
+ }
+ for (let i = 0; i < slides.length; i += 1) {
+ const slideEl = slides[i];
+ const slideProgress = slideEl.progress;
+ const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);
+ let originalProgress = progress;
+ if (!isCenteredSlides) {
+ originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);
+ }
+ const offset = slideEl.swiperSlideOffset;
+ const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];
+ const r = [0, 0, 0];
+ let custom = false;
+ if (!swiper.isHorizontal()) {
+ t[1] = t[0];
+ t[0] = 0;
+ }
+ let data = {
+ translate: [0, 0, 0],
+ rotate: [0, 0, 0],
+ scale: 1,
+ opacity: 1
+ };
+ if (progress < 0) {
+ data = params.next;
+ custom = true;
+ } else if (progress > 0) {
+ data = params.prev;
+ custom = true;
+ }
+ t.forEach((value, index) => {
+ t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;
+ });
+ r.forEach((value, index) => {
+ let val = data.rotate[index] * Math.abs(progress * multiplier);
+ r[index] = val;
+ });
+ slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;
+ const translateString = t.join(", ");
+ const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`;
+ const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;
+ const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;
+ const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;
+ if (custom && data.shadow || !custom) {
+ let shadowEl = slideEl.querySelector(".swiper-slide-shadow");
+ if (!shadowEl && data.shadow) {
+ shadowEl = createShadow("creative", slideEl);
+ }
+ if (shadowEl) {
+ const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;
+ shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);
+ }
+ }
+ const targetEl = effectTarget(params, slideEl);
+ targetEl.style.transform = transform;
+ targetEl.style.opacity = opacityString;
+ if (data.origin) {
+ targetEl.style.transformOrigin = data.origin;
+ }
+ }
+ };
+ const setTransition = (duration) => {
+ const transformElements = swiper.slides.map((slideEl) => getSlideTransformEl(slideEl));
+ transformElements.forEach((el) => {
+ el.style.transitionDuration = `${duration}ms`;
+ el.querySelectorAll(".swiper-slide-shadow").forEach((shadowEl) => {
+ shadowEl.style.transitionDuration = `${duration}ms`;
+ });
+ });
+ effectVirtualTransitionEnd({
+ swiper,
+ duration,
+ transformElements,
+ allSlides: true
+ });
+ };
+ effectInit({
+ effect: "creative",
+ swiper,
+ on,
+ setTranslate,
+ setTransition,
+ perspective: () => swiper.params.creativeEffect.perspective,
+ overwriteParams: () => ({
+ watchSlidesProgress: true,
+ virtualTranslate: !swiper.params.cssMode
+ })
+ });
+}
+
+// node_modules/swiper/modules/effect-cards.mjs
+function EffectCards(_ref) {
+ let {
+ swiper,
+ extendParams,
+ on
+ } = _ref;
+ extendParams({
+ cardsEffect: {
+ slideShadows: true,
+ rotate: true,
+ perSlideRotate: 2,
+ perSlideOffset: 8
+ }
+ });
+ const setTranslate = () => {
+ const {
+ slides,
+ activeIndex,
+ rtlTranslate: rtl
+ } = swiper;
+ const params = swiper.params.cardsEffect;
+ const {
+ startTranslate,
+ isTouched
+ } = swiper.touchEventsData;
+ const currentTranslate = rtl ? -swiper.translate : swiper.translate;
+ for (let i = 0; i < slides.length; i += 1) {
+ const slideEl = slides[i];
+ const slideProgress = slideEl.progress;
+ const progress = Math.min(Math.max(slideProgress, -4), 4);
+ let offset = slideEl.swiperSlideOffset;
+ if (swiper.params.centeredSlides && !swiper.params.cssMode) {
+ swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;
+ }
+ if (swiper.params.centeredSlides && swiper.params.cssMode) {
+ offset -= slides[0].swiperSlideOffset;
+ }
+ let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;
+ let tY = 0;
+ const tZ = -100 * Math.abs(progress);
+ let scale = 1;
+ let rotate = -params.perSlideRotate * progress;
+ let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;
+ const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;
+ const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;
+ const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;
+ if (isSwipeToNext || isSwipeToPrev) {
+ const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;
+ rotate += -28 * progress * subProgress;
+ scale += -0.5 * subProgress;
+ tXAdd += 96 * subProgress;
+ tY = `${-25 * subProgress * Math.abs(progress)}%`;
+ }
+ if (progress < 0) {
+ tX = `calc(${tX}px ${rtl ? "-" : "+"} (${tXAdd * Math.abs(progress)}%))`;
+ } else if (progress > 0) {
+ tX = `calc(${tX}px ${rtl ? "-" : "+"} (-${tXAdd * Math.abs(progress)}%))`;
+ } else {
+ tX = `${tX}px`;
+ }
+ if (!swiper.isHorizontal()) {
+ const prevY = tY;
+ tY = tX;
+ tX = prevY;
+ }
+ const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;
+ const transform = `
+ translate3d(${tX}, ${tY}, ${tZ}px)
+ rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)
+ scale(${scaleString})
+ `;
+ if (params.slideShadows) {
+ let shadowEl = slideEl.querySelector(".swiper-slide-shadow");
+ if (!shadowEl) {
+ shadowEl = createShadow("cards", slideEl);
+ }
+ if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);
+ }
+ slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;
+ const targetEl = effectTarget(params, slideEl);
+ targetEl.style.transform = transform;
+ }
+ };
+ const setTransition = (duration) => {
+ const transformElements = swiper.slides.map((slideEl) => getSlideTransformEl(slideEl));
+ transformElements.forEach((el) => {
+ el.style.transitionDuration = `${duration}ms`;
+ el.querySelectorAll(".swiper-slide-shadow").forEach((shadowEl) => {
+ shadowEl.style.transitionDuration = `${duration}ms`;
+ });
+ });
+ effectVirtualTransitionEnd({
+ swiper,
+ duration,
+ transformElements
+ });
+ };
+ effectInit({
+ effect: "cards",
+ swiper,
+ on,
+ setTranslate,
+ setTransition,
+ perspective: () => true,
+ overwriteParams: () => ({
+ _loopSwapReset: false,
+ watchSlidesProgress: true,
+ loopAdditionalSlides: swiper.params.cardsEffect.rotate ? 3 : 2,
+ centeredSlides: true,
+ virtualTranslate: !swiper.params.cssMode
+ })
+ });
+}
+export {
+ A11y,
+ Autoplay,
+ Controller,
+ EffectCards,
+ EffectCoverflow,
+ EffectCreative,
+ EffectCube,
+ EffectFade,
+ EffectFlip,
+ freeMode as FreeMode,
+ Grid,
+ HashNavigation,
+ History,
+ Keyboard,
+ Manipulation,
+ Mousewheel,
+ Navigation,
+ Pagination,
+ Parallax,
+ Scrollbar,
+ Thumb as Thumbs,
+ Virtual,
+ Zoom
+};
+//# sourceMappingURL=swiper_modules.js.map
diff --git a/.vite/deps/swiper_modules.js.map b/.vite/deps/swiper_modules.js.map
new file mode 100644
index 0000000..616d41f
--- /dev/null
+++ b/.vite/deps/swiper_modules.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/swiper/modules/virtual.mjs", "../../node_modules/swiper/modules/keyboard.mjs", "../../node_modules/swiper/modules/mousewheel.mjs", "../../node_modules/swiper/shared/create-element-if-not-defined.mjs", "../../node_modules/swiper/modules/navigation.mjs", "../../node_modules/swiper/shared/classes-to-selector.mjs", "../../node_modules/swiper/modules/pagination.mjs", "../../node_modules/swiper/modules/scrollbar.mjs", "../../node_modules/swiper/modules/parallax.mjs", "../../node_modules/swiper/modules/zoom.mjs", "../../node_modules/swiper/modules/controller.mjs", "../../node_modules/swiper/modules/a11y.mjs", "../../node_modules/swiper/modules/history.mjs", "../../node_modules/swiper/modules/hash-navigation.mjs", "../../node_modules/swiper/modules/autoplay.mjs", "../../node_modules/swiper/modules/thumbs.mjs", "../../node_modules/swiper/modules/free-mode.mjs", "../../node_modules/swiper/modules/grid.mjs", "../../node_modules/swiper/modules/manipulation.mjs", "../../node_modules/swiper/shared/effect-init.mjs", "../../node_modules/swiper/shared/effect-target.mjs", "../../node_modules/swiper/shared/effect-virtual-transition-end.mjs", "../../node_modules/swiper/modules/effect-fade.mjs", "../../node_modules/swiper/modules/effect-cube.mjs", "../../node_modules/swiper/shared/create-shadow.mjs", "../../node_modules/swiper/modules/effect-flip.mjs", "../../node_modules/swiper/modules/effect-coverflow.mjs", "../../node_modules/swiper/modules/effect-creative.mjs", "../../node_modules/swiper/modules/effect-cards.mjs"],
+ "sourcesContent": ["import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { s as setCSSProperty, e as elementChildren, c as createElement } from '../shared/utils.mjs';\n\nfunction Virtual(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n const document = getDocument();\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n const tempDOM = document.createElement('div');\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n // eslint-disable-next-line\n let slideEl;\n if (params.renderSlide) {\n slideEl = params.renderSlide.call(swiper, slide, index);\n if (typeof slideEl === 'string') {\n tempDOM.innerHTML = slideEl;\n slideEl = tempDOM.children[0];\n }\n } else if (swiper.isElement) {\n slideEl = createElement('swiper-slide');\n } else {\n slideEl = createElement('div', swiper.params.slideClass);\n }\n slideEl.setAttribute('data-swiper-slide-index', index);\n if (!params.renderSlide) {\n slideEl.innerHTML = slide;\n }\n if (params.cache) {\n swiper.virtual.cache[index] = slideEl;\n }\n return slideEl;\n }\n function update(force, beforeInit, forceActiveIndex) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides,\n loop: isLoop,\n initialSlide\n } = swiper.params;\n if (beforeInit && !isLoop && initialSlide > 0) {\n return;\n }\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n const activeIndex = typeof forceActiveIndex === 'undefined' ? swiper.activeIndex || 0 : forceActiveIndex;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n }\n let from = activeIndex - slidesBefore;\n let to = activeIndex + slidesAfter;\n if (!isLoop) {\n from = Math.max(from, 0);\n to = Math.min(to, slides.length - 1);\n }\n let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n if (isLoop && activeIndex >= slidesBefore) {\n from -= slidesBefore;\n if (!centeredSlides) offset += swiper.slidesGrid[0];\n } else if (isLoop && activeIndex < slidesBefore) {\n from = -slidesBefore;\n if (centeredSlides) offset += swiper.slidesGrid[0];\n }\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n slidesBefore,\n slidesAfter\n });\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n emit('virtualUpdate');\n }\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n }\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n if (force) {\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => {\n slideEl.remove();\n });\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n const slideIndex = getSlideIndex(i);\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`)).forEach(slideEl => {\n slideEl.remove();\n });\n }\n }\n }\n const loopFrom = isLoop ? -slides.length : 0;\n const loopTo = isLoop ? slides.length * 2 : slides.length;\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n const slideIndex = getSlideIndex(i);\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(slideIndex);\n } else {\n if (i > previousTo) appendIndexes.push(slideIndex);\n if (i < previousFrom) prependIndexes.push(slideIndex);\n }\n }\n }\n appendIndexes.forEach(index => {\n swiper.slidesEl.append(renderSlide(slides[index], index));\n });\n if (isLoop) {\n for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {\n const index = prependIndexes[i];\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n }\n } else {\n prependIndexes.sort((a, b) => b - a);\n prependIndexes.forEach(index => {\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n });\n }\n elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n onRendered();\n }\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const cachedEl = cache[cachedIndex];\n const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');\n if (cachedElIndex) {\n cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n let domSlidesAssigned;\n if (typeof swiper.passedParams.virtual.slides === 'undefined') {\n const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n if (slides && slides.length) {\n swiper.virtual.slides = [...slides];\n domSlidesAssigned = true;\n slides.forEach((slideEl, slideIndex) => {\n slideEl.setAttribute('data-swiper-slide-index', slideIndex);\n swiper.virtual.cache[slideIndex] = slideEl;\n slideEl.remove();\n });\n }\n }\n if (!domSlidesAssigned) {\n swiper.virtual.slides = swiper.params.virtual.slides;\n }\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n update(false, true);\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}\n\nexport { Virtual as default };\n", "import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { a as elementParents, b as elementOffset } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Keyboard(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n function handle(event) {\n if (!swiper.enabled) return;\n const {\n rtlTranslate: rtl\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const el = swiper.el;\n const swiperWidth = el.clientWidth;\n const swiperHeight = el.clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = elementOffset(el);\n if (rtl) swiperOffset.left -= el.scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n document.addEventListener('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n document.removeEventListener('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}\n\nexport { Keyboard as default };\n", "import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { n as nextTick, d as now } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Mousewheel(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n noMousewheelClass: 'swiper-no-mousewheel'\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n\n // Ignore event if the target or its parents have the swiper-no-mousewheel class\n if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n const params = swiper.params.mousewheel;\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n if (delta === 0) return true;\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n if (swiper.params.loop) {\n swiper.loopFix({\n direction: newEvent.direction < 0 ? 'next' : 'prev',\n byMousewheel: true\n });\n }\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n if (swiper.destroyed || !swiper.params) return;\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n if (swiper.destroyed || !swiper.params) return;\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplay.disableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {\n return true;\n }\n }\n }\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n function events(method) {\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n targetEl[method]('mouseenter', handleMouseEnter);\n targetEl[method]('mouseleave', handleMouseLeave);\n targetEl[method]('wheel', handle);\n }\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('addEventListener');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('removeEventListener');\n swiper.mousewheel.enabled = false;\n return true;\n }\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}\n\nexport { Mousewheel as default };\n", "import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n", "import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n } else if (res && res.length === 1) {\n res = res[0];\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);\n if (swiper.isElement && !targetIsButton) {\n const path = e.path || e.composedPath && e.composedPath();\n if (path) {\n targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl));\n }\n }\n if (swiper.params.navigation.hideOnClick && !targetIsButton) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n", "function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n", "import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, f as elementOuterSize, h as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function getMoveDirection(prevIndex, nextIndex, length) {\n prevIndex = prevIndex % length;\n nextIndex = nextIndex % length;\n if (nextIndex === prevIndex + 1) {\n return 'next';\n } else if (nextIndex === prevIndex - 1) {\n return 'previous';\n }\n return;\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length);\n if (moveDirection === 'next') {\n swiper.slideNext();\n } else if (moveDirection === 'previous') {\n swiper.slidePrev();\n } else {\n swiper.slideToLoop(index);\n }\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\">${params.bulletElement}>`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = ` ` + ' / ' + ` `;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ` `;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.find(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination as default };\n", "import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { m as makeElementsArray, i as classesToTokens, c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\n\nfunction Scrollbar(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null\n };\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n dragEl.style.width = `${newSize}px`;\n } else {\n dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n dragEl.style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n el.style.opacity = 1;\n timeout = setTimeout(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n dragEl.style.width = '';\n dragEl.style.height = '';\n trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n if (swiper.isHorizontal()) {\n dragEl.style.width = `${dragSize}px`;\n } else {\n dragEl.style.height = `${dragSize}px`;\n }\n if (divider >= 1) {\n el.style.display = 'none';\n } else {\n el.style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n el.style.opacity = 0;\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n }\n }\n function getPointerPosition(e) {\n return swiper.isHorizontal() ? e.clientX : e.clientY;\n }\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n wrapperEl.style.transitionDuration = '100ms';\n dragEl.style.transitionDuration = '100ms';\n setDragPosition(e);\n clearTimeout(dragTimeout);\n el.style.transitionDuration = '0ms';\n if (params.hide) {\n el.style.opacity = 1;\n }\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n wrapperEl.style.transitionDuration = '0ms';\n el.style.transitionDuration = '0ms';\n dragEl.style.transitionDuration = '0ms';\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = '';\n wrapperEl.style.transitionDuration = '';\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n function events(method) {\n const {\n scrollbar,\n params\n } = swiper;\n const el = scrollbar.el;\n if (!el) return;\n const target = el;\n const activeListener = params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n target[eventMethod]('pointerdown', onDragStart, activeListener);\n document[eventMethod]('pointermove', onDragMove, activeListener);\n document[eventMethod]('pointerup', onDragEnd, passiveListener);\n }\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n function init() {\n const {\n scrollbar,\n el: swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = document.querySelectorAll(params.el);\n if (!el.length) return;\n } else if (!el) {\n el = params.el;\n }\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n el = swiperEl.querySelector(params.el);\n }\n if (el.length > 0) el = el[0];\n el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let dragEl;\n if (el) {\n dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass));\n if (!dragEl) {\n dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n el.append(dragEl);\n }\n }\n Object.assign(scrollbar, {\n el,\n dragEl\n });\n if (params.draggable) {\n enableDraggable();\n }\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n }\n function destroy() {\n const params = swiper.params.scrollbar;\n const el = swiper.scrollbar.el;\n if (el) {\n el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass));\n }\n disableDraggable();\n }\n on('changeDirection', () => {\n if (!swiper.scrollbar || !swiper.scrollbar.el) return;\n const params = swiper.params.scrollbar;\n let {\n el\n } = swiper.scrollbar;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock changeDirection', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n el\n } = swiper.scrollbar;\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n });\n on('destroy', () => {\n destroy();\n });\n const enable = () => {\n swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n init();\n updateSize();\n setTranslate();\n };\n const disable = () => {\n swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}\n\nexport { Scrollbar as default };\n", "import { e as elementChildren } from '../shared/utils.mjs';\n\nfunction Parallax(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n parallax: {\n enabled: false\n }\n });\n const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';\n const setTransform = (el, progress) => {\n const {\n rtl\n } = swiper;\n const rtlFactor = rtl ? -1 : 1;\n const p = el.getAttribute('data-swiper-parallax') || '0';\n let x = el.getAttribute('data-swiper-parallax-x');\n let y = el.getAttribute('data-swiper-parallax-y');\n const scale = el.getAttribute('data-swiper-parallax-scale');\n const opacity = el.getAttribute('data-swiper-parallax-opacity');\n const rotate = el.getAttribute('data-swiper-parallax-rotate');\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n el.style.opacity = currentOpacity;\n }\n let transform = `translate3d(${x}, ${y}, 0px)`;\n if (typeof scale !== 'undefined' && scale !== null) {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n transform += ` scale(${currentScale})`;\n }\n if (rotate && typeof rotate !== 'undefined' && rotate !== null) {\n const currentRotate = rotate * progress * -1;\n transform += ` rotate(${currentRotate}deg)`;\n }\n el.style.transform = transform;\n };\n const setTranslate = () => {\n const {\n el,\n slides,\n progress,\n snapGrid,\n isElement\n } = swiper;\n const elements = elementChildren(el, elementsSelector);\n if (swiper.isElement) {\n elements.push(...elementChildren(swiper.hostEl, elementsSelector));\n }\n elements.forEach(subEl => {\n setTransform(subEl, progress);\n });\n slides.forEach((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => {\n setTransform(subEl, slideProgress);\n });\n });\n };\n const setTransition = function (duration) {\n if (duration === void 0) {\n duration = swiper.params.speed;\n }\n const {\n el,\n hostEl\n } = swiper;\n const elements = [...el.querySelectorAll(elementsSelector)];\n if (swiper.isElement) {\n elements.push(...hostEl.querySelectorAll(elementsSelector));\n }\n elements.forEach(parallaxEl => {\n let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\n });\n };\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n\nexport { Parallax as default };\n", "import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren, a as elementParents, b as elementOffset, j as getTranslate } from '../shared/utils.mjs';\n\nfunction Zoom(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n limitToOriginalSize: false,\n maxRatio: 3,\n minRatio: 1,\n panOnMouseMove: false,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let isPanningWithMouse = false;\n let mousePanStart = {\n x: 0,\n y: 0\n };\n const mousePanSensitivity = -3; // Negative to invert pan direction\n let fakeGestureTouched;\n let fakeGestureMoved;\n const evCache = [];\n const gesture = {\n originX: 0,\n originY: 0,\n slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n imageEl: undefined,\n imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.imageEl;\n const slideEl = gesture.slideEl;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n }\n });\n function getDistanceBetweenTouches() {\n if (evCache.length < 2) return 1;\n const x1 = evCache[0].pageX;\n const y1 = evCache[0].pageY;\n const x2 = evCache[1].pageX;\n const y2 = evCache[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n function getMaxRatio() {\n const params = swiper.params.zoom;\n const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) {\n const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth;\n return Math.min(imageMaxRatio, maxRatio);\n }\n return maxRatio;\n }\n function getScaleOrigin() {\n if (evCache.length < 2) return {\n x: null,\n y: null\n };\n const box = gesture.imageEl.getBoundingClientRect();\n return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale];\n }\n function getSlideSelector() {\n return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n }\n function eventWithinSlide(e) {\n const slideSelector = getSlideSelector();\n if (e.target.matches(slideSelector)) return true;\n if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n return false;\n }\n function eventWithinZoomContainer(e) {\n const selector = `.${swiper.params.zoom.containerClass}`;\n if (e.target.matches(selector)) return true;\n if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n return false;\n }\n\n // Events\n function onGestureStart(e) {\n if (e.pointerType === 'mouse') {\n evCache.splice(0, evCache.length);\n }\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n evCache.push(e);\n if (evCache.length < 2) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches();\n if (!gesture.slideEl) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n if (!gesture.imageWrapEl) {\n gesture.imageEl = undefined;\n return;\n }\n gesture.maxRatio = getMaxRatio();\n }\n if (gesture.imageEl) {\n const [originX, originY] = getScaleOrigin();\n gesture.originX = originX;\n gesture.originY = originY;\n gesture.imageEl.style.transitionDuration = '0ms';\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache[pointerIndex] = e;\n if (evCache.length < 2) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches();\n if (!gesture.imageEl) {\n return;\n }\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function onGestureEnd(e) {\n if (!eventWithinSlide(e)) return;\n if (e.pointerType === 'mouse' && e.type === 'pointerout') return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!gesture.imageEl) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale > 1 && gesture.slideEl) {\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n } else if (zoom.scale <= 1 && gesture.slideEl) {\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n }\n if (zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n gesture.slideEl = undefined;\n }\n }\n let allowTouchMoveTimeout;\n function allowTouchMove() {\n swiper.touchEventsData.preventTouchMoveFromPointerMove = false;\n }\n function preventTouchMove() {\n clearTimeout(allowTouchMoveTimeout);\n swiper.touchEventsData.preventTouchMoveFromPointerMove = true;\n allowTouchMoveTimeout = setTimeout(() => {\n if (swiper.destroyed) return;\n allowTouchMove();\n });\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.imageEl) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n const event = evCache.length > 0 ? evCache[0] : e;\n image.touchesStart.x = event.pageX;\n image.touchesStart.y = event.pageY;\n }\n function onTouchMove(e) {\n const isMouseEvent = e.pointerType === 'mouse';\n const isMousePan = isMouseEvent && swiper.params.zoom.panOnMouseMove;\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) {\n return;\n }\n const zoom = swiper.zoom;\n if (!gesture.imageEl) {\n return;\n }\n if (!image.isTouched || !gesture.slideEl) {\n if (isMousePan) onMouseMove(e);\n return;\n }\n if (isMousePan) {\n onMouseMove(e);\n return;\n }\n if (!image.isMoved) {\n image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\n image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n gesture.imageWrapEl.style.transitionDuration = '0ms';\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n if (touchesDiff > 5) {\n swiper.allowClick = false;\n }\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n allowTouchMove();\n return;\n }\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n allowTouchMove();\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n preventTouchMove();\n image.isMoved = true;\n const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n const {\n originX,\n originY\n } = gesture;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n evCache.length = 0;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n if (gesture.imageEl) {\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n }\n if (gesture.imageWrapEl) {\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n }\n gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n zoom.scale = 1;\n currentScale = 1;\n gesture.slideEl = undefined;\n gesture.imageEl = undefined;\n gesture.imageWrapEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n }\n function onMouseMove(e) {\n // Only pan if zoomed in and mouse panning is enabled\n if (currentScale <= 1 || !gesture.imageWrapEl) return;\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;\n const currentTransform = window.getComputedStyle(gesture.imageWrapEl).transform;\n const matrix = new window.DOMMatrix(currentTransform);\n if (!isPanningWithMouse) {\n isPanningWithMouse = true;\n mousePanStart.x = e.clientX;\n mousePanStart.y = e.clientY;\n image.startX = matrix.e;\n image.startY = matrix.f;\n image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n return;\n }\n const deltaX = (e.clientX - mousePanStart.x) * mousePanSensitivity;\n const deltaY = (e.clientY - mousePanStart.y) * mousePanSensitivity;\n const scaledWidth = image.width * currentScale;\n const scaledHeight = image.height * currentScale;\n const slideWidth = gesture.slideWidth;\n const slideHeight = gesture.slideHeight;\n const minX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n const maxX = -minX;\n const minY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n const maxY = -minY;\n const newX = Math.max(Math.min(image.startX + deltaX, maxX), minX);\n const newY = Math.max(Math.min(image.startY + deltaY, maxY), minY);\n gesture.imageWrapEl.style.transitionDuration = '0ms';\n gesture.imageWrapEl.style.transform = `translate3d(${newX}px, ${newY}px, 0)`;\n mousePanStart.x = e.clientX;\n mousePanStart.y = e.clientY;\n image.startX = newX;\n image.startY = newY;\n image.currentX = newX;\n image.currentY = newY;\n }\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (e && e.target) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n }\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.pageX;\n touchY = e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n const prevScale = currentScale;\n const forceZoomRatio = typeof e === 'number' ? e : null;\n if (currentScale === 1 && forceZoomRatio) {\n touchX = undefined;\n touchY = undefined;\n image.touchesStart.x = undefined;\n image.touchesStart.y = undefined;\n }\n const maxRatio = getMaxRatio();\n zoom.scale = forceZoomRatio || maxRatio;\n currentScale = forceZoomRatio || maxRatio;\n if (e && !(currentScale === 1 && forceZoomRatio)) {\n slideWidth = gesture.slideEl.offsetWidth;\n slideHeight = gesture.slideEl.offsetHeight;\n offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n if (prevScale > 0 && forceZoomRatio && typeof image.currentX === 'number' && typeof image.currentY === 'number') {\n translateX = image.currentX * zoom.scale / prevScale;\n translateY = image.currentY * zoom.scale / prevScale;\n } else {\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n }\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n if (forceZoomRatio && zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n }\n image.currentX = translateX;\n image.currentY = translateY;\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n image.currentX = undefined;\n image.currentY = undefined;\n image.touchesStart.x = undefined;\n image.touchesStart.y = undefined;\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n gesture.slideEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n if (swiper.params.zoom.panOnMouseMove) {\n mousePanStart = {\n x: 0,\n y: 0\n };\n if (isPanningWithMouse) {\n isPanningWithMouse = false;\n image.startX = 0;\n image.startY = 0;\n }\n }\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n function getListeners() {\n const passiveListener = swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = swiper.params.passiveListeners ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd();\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}\n\nexport { Zoom as default };\n", "import { n as nextTick, k as elementTransitionEnd } from '../shared/utils.mjs';\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nfunction Controller(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n }\n });\n\n swiper.controller = {\n control: undefined\n };\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n return this;\n }\n function getInterpolateFunction(c) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n if (c.destroyed) return;\n\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {\n multiplier = 1;\n }\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n if (c.destroyed) return;\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n elementTransitionEnd(c.wrapperEl, () => {\n if (!controlled) return;\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n if (typeof window !== 'undefined' && (\n // eslint-disable-line\n typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {\n const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control];\n controlElements.forEach(controlElement => {\n if (!swiper.controller.control) swiper.controller.control = [];\n if (controlElement && controlElement.swiper) {\n swiper.controller.control.push(controlElement.swiper);\n } else if (controlElement) {\n const eventName = `${swiper.params.eventsPrefix}init`;\n const onControllerSwiper = e => {\n swiper.controller.control.push(e.detail[0]);\n swiper.update();\n controlElement.removeEventListener(eventName, onControllerSwiper);\n };\n controlElement.addEventListener(eventName, onControllerSwiper);\n }\n });\n return;\n }\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}\n\nexport { Controller as default };\n", "import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElement, h as elementIndex, m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction A11y(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n containerRole: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null,\n scrollOnFocus: true\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n let preventFocusHandler;\n let focusTargetSlideEl;\n let visibilityChangedTimestamp = new Date().getTime();\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.innerHTML = '';\n notification.innerHTML = message;\n }\n function getRandomNumber(size) {\n if (size === void 0) {\n size = 16;\n }\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '0');\n });\n }\n function makeElNotFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '-1');\n });\n }\n function addElRole(el, role) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('role', role);\n });\n }\n function addElRoleDescription(el, description) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-roledescription', description);\n });\n }\n function addElControls(el, controls) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-controls', controls);\n });\n }\n function addElLabel(el, label) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-label', label);\n });\n }\n function addElId(el, id) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('id', id);\n });\n }\n function addElLive(el, live) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-live', live);\n });\n }\n function disableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', true);\n });\n }\n function enableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', false);\n });\n }\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const targetEl = e.target;\n if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n }\n if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) {\n const prevEls = makeElementsArray(swiper.navigation.prevEl);\n const nextEls = makeElementsArray(swiper.navigation.nextEl);\n if (nextEls.includes(targetEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (prevEls.includes(targetEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n }\n if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n targetEl.click();\n }\n }\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (prevEl) {\n if (swiper.isBeginning) {\n disableEl(prevEl);\n makeElNotFocusable(prevEl);\n } else {\n enableEl(prevEl);\n makeElFocusable(prevEl);\n }\n }\n if (nextEl) {\n if (swiper.isEnd) {\n disableEl(nextEl);\n makeElNotFocusable(nextEl);\n } else {\n enableEl(nextEl);\n makeElFocusable(nextEl);\n }\n }\n }\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.forEach(bulletEl => {\n if (swiper.params.pagination.clickable) {\n makeElFocusable(bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole(bulletEl, 'button');\n addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n }\n }\n if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n bulletEl.setAttribute('aria-current', 'true');\n } else {\n bulletEl.removeAttribute('aria-current');\n }\n });\n }\n const initNavEl = (el, wrapperId, message) => {\n makeElFocusable(el);\n if (el.tagName !== 'BUTTON') {\n addElRole(el, 'button');\n el.addEventListener('keydown', onEnterOrSpaceKey);\n }\n addElLabel(el, message);\n addElControls(el, wrapperId);\n };\n const handlePointerDown = e => {\n if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) {\n preventFocusHandler = true;\n }\n swiper.a11y.clicked = true;\n };\n const handlePointerUp = () => {\n preventFocusHandler = false;\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n const onVisibilityChange = e => {\n visibilityChangedTimestamp = new Date().getTime();\n };\n const handleFocus = e => {\n if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return;\n if (new Date().getTime() - visibilityChangedTimestamp < 100) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n focusTargetSlideEl = slideEl;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n requestAnimationFrame(() => {\n if (preventFocusHandler) return;\n if (swiper.params.loop) {\n swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0);\n } else {\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n }\n preventFocusHandler = false;\n });\n };\n const initSlides = () => {\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n }\n if (params.slideRole) {\n addElRole(swiper.slides, params.slideRole);\n }\n const slidesLength = swiper.slides.length;\n if (params.slideLabelMessage) {\n swiper.slides.forEach((slideEl, index) => {\n const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel(slideEl, ariaLabelMessage);\n });\n }\n };\n const init = () => {\n const params = swiper.params.a11y;\n swiper.el.append(liveRegion);\n\n // Container\n const containerEl = swiper.el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel(containerEl, params.containerMessage);\n }\n if (params.containerRole) {\n addElRole(containerEl, params.containerRole);\n }\n\n // Wrapper\n const wrapperEl = swiper.wrapperEl;\n const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId(wrapperEl, wrapperId);\n addElLive(wrapperEl, live);\n\n // Slide\n initSlides();\n\n // Navigation\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n }\n if (prevEl) {\n prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.addEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n swiper.el.addEventListener('pointerup', handlePointerUp, true);\n };\n function destroy() {\n if (liveRegion) liveRegion.remove();\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n if (prevEl) {\n prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.removeEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n // Tab focus\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.removeEventListener('focus', handleFocus, true);\n swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n }\n }\n on('beforeInit', () => {\n liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n liveRegion.setAttribute('aria-live', 'assertive');\n liveRegion.setAttribute('aria-atomic', 'true');\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n\nexport { A11y as default };\n", "import { a as getWindow } from '../shared/ssr-window.esm.mjs';\n\nfunction History(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false\n }\n });\n let initialized = false;\n let paths = {};\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${index}\"]`) : swiper.slides[index];\n let value = slugify(slide.getAttribute('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key ? `${key}/` : ''}${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key ? `${key}/` : ''}${value}`;\n }\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides[i];\n const slideHistory = slugify(slide.getAttribute('data-history'));\n if (slideHistory === value) {\n const index = swiper.getSlideIndex(slide);\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) {\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n return;\n }\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n\nexport { History as default };\n", "import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren } from '../shared/utils.mjs';\n\nfunction HashNavigation(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n on\n } = _ref;\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n getSlideIndex(_s, hash) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n const slideWithHash = swiper.slides.find(slideEl => slideEl.getAttribute('data-hash') === hash);\n if (!slideWithHash) return 0;\n const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);\n return index;\n }\n return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\n }\n }\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\n if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${activeSlideHash}` || '');\n emit('hashSet');\n } else {\n document.location.hash = activeSlideHash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\n swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\n }\n if (swiper.params.hashNavigation.watchState) {\n window.addEventListener('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n window.removeEventListener('hashchange', onHashChange);\n }\n };\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n\nexport { HashNavigation as default };\n", "import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit,\n params\n } = _ref;\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: false,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime();\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n let pausedByPointerEnter;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) {\n return;\n }\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.find(slideEl => slideEl.classList.contains('swiper-slide-active'));\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n autoplayStartTime = new Date().getTime();\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n pausedByPointerEnter = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByPointerEnter = false;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n }\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('_freeModeStaticRelease', () => {\n if (pausedByTouch || pausedByInteraction) {\n resume();\n }\n });\n on('_freeModeNoMomentumRelease', () => {\n if (!swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\n\nexport { Autoplay as default };\n", "import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { l as isObject, e as elementChildren } from '../shared/utils.mjs';\n\nfunction Thumb(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n swiper.slideToLoop(slideToIndex);\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n if (thumbsParams.swiper.destroyed) {\n initialized = false;\n return false;\n }\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper.update();\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n slideEl.classList.add(thumbActiveClass);\n });\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n if (thumbsSwiper.slides[swiper.realIndex + i]) {\n thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n }\n }\n }\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n const currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n const newThumbsSlide = thumbsSwiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`);\n newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n const document = getDocument();\n const getThumbsElementAndInit = () => {\n const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n if (thumbsElement && thumbsElement.swiper) {\n thumbs.swiper = thumbsElement.swiper;\n init();\n update(true);\n } else if (thumbsElement) {\n const eventName = `${swiper.params.eventsPrefix}init`;\n const onThumbsSwiper = e => {\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener(eventName, onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener(eventName, onThumbsSwiper);\n }\n return thumbsElement;\n };\n const watchForThumbsToAppear = () => {\n if (swiper.destroyed) return;\n const thumbsElement = getThumbsElementAndInit();\n if (!thumbsElement) {\n requestAnimationFrame(watchForThumbsToAppear);\n }\n };\n requestAnimationFrame(watchForThumbsToAppear);\n } else {\n init();\n update(true);\n }\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}\n\nexport { Thumb as default };\n", "import { d as now, k as elementTransitionEnd } from '../shared/utils.mjs';\n\nfunction freeMode(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n once\n } = _ref;\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n function onTouchStart() {\n if (swiper.params.cssMode) return;\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n function onTouchMove() {\n if (swiper.params.cssMode) return;\n const {\n touchEventsData: data,\n touches\n } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n function onTouchEnd(_ref2) {\n let {\n currentPos\n } = _ref2;\n if (swiper.params.cssMode) return;\n const {\n params,\n wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n emit('_freeModeStaticRelease');\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}\n\nexport { freeMode as default };\n", "function Grid(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n let wasMultiRow;\n const getSpaceBetween = () => {\n let spaceBetween = swiper.params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n return spaceBetween;\n };\n const initSlides = slides => {\n const {\n slidesPerView\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n slidesPerRow = slidesNumberEvenToRows / rows;\n };\n const unsetSlides = () => {\n if (swiper.slides) {\n swiper.slides.forEach(slide => {\n if (slide.swiperSlideGridSet) {\n slide.style.height = '';\n slide.style[swiper.getDirectionLabel('margin-top')] = '';\n }\n });\n }\n };\n const updateSlide = (i, slide, slides) => {\n const {\n slidesPerGroup\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows,\n fill\n } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n slide.style.order = newSlideOrderIndex;\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.row = row;\n slide.column = column;\n slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`;\n slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\n slide.swiperSlideGridSet = true;\n };\n const updateWrapperSize = (slideSize, snapGrid) => {\n const {\n centeredSlides,\n roundLengths\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows\n } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.splice(0, snapGrid.length);\n snapGrid.push(...newSlidesGrid);\n }\n };\n const onInit = () => {\n wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;\n };\n const onUpdate = () => {\n const {\n params,\n el\n } = swiper;\n const isMultiRow = params.grid && params.grid.rows > 1;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n numFullColumns = 1;\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n wasMultiRow = isMultiRow;\n };\n on('init', onInit);\n on('update', onUpdate);\n swiper.grid = {\n initSlides,\n unsetSlides,\n updateSlide,\n updateWrapperSize\n };\n}\n\nexport { Grid as default };\n", "function appendSlide(slides) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n const appendElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.append(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.append(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) appendElement(slides[i]);\n }\n } else {\n appendElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n}\n\nfunction prependSlide(slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n const prependElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.prepend(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.prepend(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) prependElement(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n prependElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide(index, slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.recalcSlides();\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides[i];\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) slidesEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n slidesEl.append(slides);\n }\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n slidesEl.append(slidesBuffer[i]);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeSlide(slidesIndexes) {\n const swiper = this;\n const {\n params,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeAllSlides() {\n const swiper = this;\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n\nfunction Manipulation(_ref) {\n let {\n swiper\n } = _ref;\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper)\n });\n}\n\nexport { Manipulation as default };\n", "function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return;\n // remove shadows\n swiper.slides.forEach(slideEl => {\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n });\n // create new one\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}\n\nexport { effectInit as e };\n", "import { g as getSlideTransformEl } from './utils.mjs';\n\nfunction effectTarget(effectParams, slideEl) {\n const transformEl = getSlideTransformEl(slideEl);\n if (transformEl !== slideEl) {\n transformEl.style.backfaceVisibility = 'hidden';\n transformEl.style['-webkit-backface-visibility'] = 'hidden';\n }\n return transformEl;\n}\n\nexport { effectTarget as e };\n", "import { k as elementTransitionEnd } from './utils.mjs';\n\nfunction effectVirtualTransitionEnd(_ref) {\n let {\n swiper,\n duration,\n transformElements,\n allSlides\n } = _ref;\n const {\n activeIndex\n } = swiper;\n const getSlide = el => {\n if (!el.parentElement) {\n // assume shadow root\n const slide = swiper.slides.find(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode);\n return slide;\n }\n return el.parentElement;\n };\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let transitionEndTarget;\n if (allSlides) {\n transitionEndTarget = transformElements;\n } else {\n transitionEndTarget = transformElements.filter(transformEl => {\n const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\n return swiper.getSlideIndex(el) === activeIndex;\n });\n }\n transitionEndTarget.forEach(el => {\n elementTransitionEnd(el, () => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n });\n });\n }\n}\n\nexport { effectVirtualTransitionEnd as e };\n", "import { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFade(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n fadeEffect: {\n crossFade: false\n }\n });\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = swiper.slides[i];\n const offset = slideEl.swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.opacity = slideOpacity;\n targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFade as default };\n", "import { e as effectInit } from '../shared/effect-init.mjs';\nimport { c as createElement, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCube(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n const createSlideShadows = (slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));\n slideEl.append(shadowBefore);\n }\n if (!shadowAfter) {\n shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));\n slideEl.append(shadowAfter);\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.forEach(slideEl => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows(slideEl, progress, isHorizontal);\n });\n };\n const setTranslate = () => {\n const {\n el,\n wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser\n } = swiper;\n const r = getRotateFix(swiper);\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n swiper.wrapperEl.append(cubeShadowEl);\n }\n cubeShadowEl.style.height = `${swiperWidth}px`;\n } else {\n cubeShadowEl = el.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n el.append(cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n slideEl.style.transform = transform;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress, isHorizontal);\n }\n }\n wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`;\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`;\n }\n }\n const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`;\n wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n const setTransition = duration => {\n const {\n el,\n slides\n } = swiper;\n slides.forEach(slideEl => {\n slideEl.style.transitionDuration = `${duration}ms`;\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {\n subEl.style.transitionDuration = `${duration}ms`;\n });\n });\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n const shadowEl = el.querySelector('.swiper-cube-shadow');\n if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\n }\n };\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}\n\nexport { EffectCube as default };\n", "import { g as getSlideTransformEl, c as createElement } from './utils.mjs';\n\nfunction createShadow(suffix, slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;\n const shadowContainer = getSlideTransformEl(slideEl);\n let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);\n if (!shadowEl) {\n shadowEl = createElement('div', shadowClass.split(' '));\n shadowContainer.append(shadowEl);\n }\n return shadowEl;\n}\n\nexport { createShadow as c };\n", "import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectFlip(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true\n }\n });\n const createSlideShadows = (slideEl, progress) => {\n let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (!shadowAfter) {\n shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // Set shadows\n swiper.params.flipEffect;\n swiper.slides.forEach(slideEl => {\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n createSlideShadows(slideEl, progress);\n });\n };\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n const rotateFix = getRotateFix(swiper);\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n const offset = slideEl.swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFlip as default };\n", "import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCoverflow(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true\n }\n });\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n const r = getRotateFix(swiper);\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const slideEl = slides[i];\n const slideSize = slidesSizesGrid[i];\n const slideOffset = slideEl.swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = slideTransform;\n slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBeforeEl) {\n shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top');\n }\n if (!shadowAfterEl) {\n shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n };\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}\n\nexport { EffectCoverflow as default };\n", "import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs';\n\nfunction EffectCreative(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n creativeEffect: {\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n const setTranslate = () => {\n const {\n slides,\n wrapperEl,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.creativeEffect;\n const {\n progressMultiplier: multiplier\n } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n const rotateFix = getRotateFix(swiper);\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n }\n const offset = slideEl.swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n let val = data.rotate[index] * Math.abs(progress * multiplier);\n r[index] = val;\n });\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if (custom && data.shadow || !custom) {\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl && data.shadow) {\n shadowEl = createShadow('creative', slideEl);\n }\n if (shadowEl) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n targetEl.style.opacity = opacityString;\n if (data.origin) {\n targetEl.style.transformOrigin = data.origin;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCreative as default };\n", "import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCards(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cardsEffect: {\n slideShadows: true,\n rotate: true,\n perSlideRotate: 2,\n perSlideOffset: 8\n }\n });\n const setTranslate = () => {\n const {\n slides,\n activeIndex,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = slideEl.swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -params.perSlideRotate * progress;\n let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n if (progress < 0) {\n // next\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n /* eslint-disable */\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n scale(${scaleString})\n `;\n /* eslint-enable */\n\n if (params.slideShadows) {\n // Set shadows\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl) {\n shadowEl = createShadow('cards', slideEl);\n }\n if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n _loopSwapReset: false,\n watchSlidesProgress: true,\n loopAdditionalSlides: swiper.params.cardsEffect.rotate ? 3 : 2,\n centeredSlides: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCards as default };\n"],
+ "mappings": "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",
+ "names": ["document", "appendSlide", "prependSlide", "removeSlide", "removeAllSlides", "document", "window", "event", "window", "event", "document", "window", "event", "document", "window", "document", "window", "document", "document"]
+}
diff --git a/.vite/deps/swiper_react.js b/.vite/deps/swiper_react.js
new file mode 100644
index 0000000..1c0917e
--- /dev/null
+++ b/.vite/deps/swiper_react.js
@@ -0,0 +1,4561 @@
+import {
+ require_react
+} from "./chunk-KS2M7ZJI.js";
+import {
+ animateCSSModeScroll,
+ createElement,
+ deleteProps,
+ elementChildren,
+ elementIndex,
+ elementIsChildOf,
+ elementNextAll,
+ elementOuterSize,
+ elementParents,
+ elementPrevAll,
+ elementStyle,
+ extend,
+ getDocument,
+ getTranslate,
+ getWindow,
+ nextTick,
+ now,
+ setCSSProperty,
+ showWarning
+} from "./chunk-XLOWEJT4.js";
+import {
+ __toESM
+} from "./chunk-5WRI5ZAA.js";
+
+// node_modules/swiper/swiper-react.mjs
+var import_react = __toESM(require_react(), 1);
+
+// node_modules/swiper/shared/swiper-core.mjs
+var support;
+function calcSupport() {
+ const window2 = getWindow();
+ const document2 = getDocument();
+ return {
+ smoothScroll: document2.documentElement && document2.documentElement.style && "scrollBehavior" in document2.documentElement.style,
+ touch: !!("ontouchstart" in window2 || window2.DocumentTouch && document2 instanceof window2.DocumentTouch)
+ };
+}
+function getSupport() {
+ if (!support) {
+ support = calcSupport();
+ }
+ return support;
+}
+var deviceCached;
+function calcDevice(_temp) {
+ let {
+ userAgent
+ } = _temp === void 0 ? {} : _temp;
+ const support2 = getSupport();
+ const window2 = getWindow();
+ const platform = window2.navigator.platform;
+ const ua = userAgent || window2.navigator.userAgent;
+ const device = {
+ ios: false,
+ android: false
+ };
+ const screenWidth = window2.screen.width;
+ const screenHeight = window2.screen.height;
+ const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/);
+ let ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
+ const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
+ const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
+ const windows = platform === "Win32";
+ let macos = platform === "MacIntel";
+ const iPadScreens = ["1024x1366", "1366x1024", "834x1194", "1194x834", "834x1112", "1112x834", "768x1024", "1024x768", "820x1180", "1180x820", "810x1080", "1080x810"];
+ if (!ipad && macos && support2.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {
+ ipad = ua.match(/(Version)\/([\d.]+)/);
+ if (!ipad) ipad = [0, 1, "13_0_0"];
+ macos = false;
+ }
+ if (android && !windows) {
+ device.os = "android";
+ device.android = true;
+ }
+ if (ipad || iphone || ipod) {
+ device.os = "ios";
+ device.ios = true;
+ }
+ return device;
+}
+function getDevice(overrides) {
+ if (overrides === void 0) {
+ overrides = {};
+ }
+ if (!deviceCached) {
+ deviceCached = calcDevice(overrides);
+ }
+ return deviceCached;
+}
+var browser;
+function calcBrowser() {
+ const window2 = getWindow();
+ const device = getDevice();
+ let needPerspectiveFix = false;
+ function isSafari() {
+ const ua = window2.navigator.userAgent.toLowerCase();
+ return ua.indexOf("safari") >= 0 && ua.indexOf("chrome") < 0 && ua.indexOf("android") < 0;
+ }
+ if (isSafari()) {
+ const ua = String(window2.navigator.userAgent);
+ if (ua.includes("Version/")) {
+ const [major, minor] = ua.split("Version/")[1].split(" ")[0].split(".").map((num) => Number(num));
+ needPerspectiveFix = major < 16 || major === 16 && minor < 2;
+ }
+ }
+ const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window2.navigator.userAgent);
+ const isSafariBrowser = isSafari();
+ const need3dFix = isSafariBrowser || isWebView && device.ios;
+ return {
+ isSafari: needPerspectiveFix || isSafariBrowser,
+ needPerspectiveFix,
+ need3dFix,
+ isWebView
+ };
+}
+function getBrowser() {
+ if (!browser) {
+ browser = calcBrowser();
+ }
+ return browser;
+}
+function Resize(_ref) {
+ let {
+ swiper,
+ on,
+ emit
+ } = _ref;
+ const window2 = getWindow();
+ let observer = null;
+ let animationFrame = null;
+ const resizeHandler = () => {
+ if (!swiper || swiper.destroyed || !swiper.initialized) return;
+ emit("beforeResize");
+ emit("resize");
+ };
+ const createObserver = () => {
+ if (!swiper || swiper.destroyed || !swiper.initialized) return;
+ observer = new ResizeObserver((entries) => {
+ animationFrame = window2.requestAnimationFrame(() => {
+ const {
+ width,
+ height
+ } = swiper;
+ let newWidth = width;
+ let newHeight = height;
+ entries.forEach((_ref2) => {
+ let {
+ contentBoxSize,
+ contentRect,
+ target
+ } = _ref2;
+ if (target && target !== swiper.el) return;
+ newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;
+ newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;
+ });
+ if (newWidth !== width || newHeight !== height) {
+ resizeHandler();
+ }
+ });
+ });
+ observer.observe(swiper.el);
+ };
+ const removeObserver = () => {
+ if (animationFrame) {
+ window2.cancelAnimationFrame(animationFrame);
+ }
+ if (observer && observer.unobserve && swiper.el) {
+ observer.unobserve(swiper.el);
+ observer = null;
+ }
+ };
+ const orientationChangeHandler = () => {
+ if (!swiper || swiper.destroyed || !swiper.initialized) return;
+ emit("orientationchange");
+ };
+ on("init", () => {
+ if (swiper.params.resizeObserver && typeof window2.ResizeObserver !== "undefined") {
+ createObserver();
+ return;
+ }
+ window2.addEventListener("resize", resizeHandler);
+ window2.addEventListener("orientationchange", orientationChangeHandler);
+ });
+ on("destroy", () => {
+ removeObserver();
+ window2.removeEventListener("resize", resizeHandler);
+ window2.removeEventListener("orientationchange", orientationChangeHandler);
+ });
+}
+function Observer(_ref) {
+ let {
+ swiper,
+ extendParams,
+ on,
+ emit
+ } = _ref;
+ const observers = [];
+ const window2 = getWindow();
+ const attach = function(target, options) {
+ if (options === void 0) {
+ options = {};
+ }
+ const ObserverFunc = window2.MutationObserver || window2.WebkitMutationObserver;
+ const observer = new ObserverFunc((mutations) => {
+ if (swiper.__preventObserver__) return;
+ if (mutations.length === 1) {
+ emit("observerUpdate", mutations[0]);
+ return;
+ }
+ const observerUpdate = function observerUpdate2() {
+ emit("observerUpdate", mutations[0]);
+ };
+ if (window2.requestAnimationFrame) {
+ window2.requestAnimationFrame(observerUpdate);
+ } else {
+ window2.setTimeout(observerUpdate, 0);
+ }
+ });
+ observer.observe(target, {
+ attributes: typeof options.attributes === "undefined" ? true : options.attributes,
+ childList: swiper.isElement || (typeof options.childList === "undefined" ? true : options).childList,
+ characterData: typeof options.characterData === "undefined" ? true : options.characterData
+ });
+ observers.push(observer);
+ };
+ const init = () => {
+ if (!swiper.params.observer) return;
+ if (swiper.params.observeParents) {
+ const containerParents = elementParents(swiper.hostEl);
+ for (let i = 0; i < containerParents.length; i += 1) {
+ attach(containerParents[i]);
+ }
+ }
+ attach(swiper.hostEl, {
+ childList: swiper.params.observeSlideChildren
+ });
+ attach(swiper.wrapperEl, {
+ attributes: false
+ });
+ };
+ const destroy = () => {
+ observers.forEach((observer) => {
+ observer.disconnect();
+ });
+ observers.splice(0, observers.length);
+ };
+ extendParams({
+ observer: false,
+ observeParents: false,
+ observeSlideChildren: false
+ });
+ on("init", init);
+ on("destroy", destroy);
+}
+var eventsEmitter = {
+ on(events2, handler, priority) {
+ const self = this;
+ if (!self.eventsListeners || self.destroyed) return self;
+ if (typeof handler !== "function") return self;
+ const method = priority ? "unshift" : "push";
+ events2.split(" ").forEach((event) => {
+ if (!self.eventsListeners[event]) self.eventsListeners[event] = [];
+ self.eventsListeners[event][method](handler);
+ });
+ return self;
+ },
+ once(events2, handler, priority) {
+ const self = this;
+ if (!self.eventsListeners || self.destroyed) return self;
+ if (typeof handler !== "function") return self;
+ function onceHandler() {
+ self.off(events2, onceHandler);
+ if (onceHandler.__emitterProxy) {
+ delete onceHandler.__emitterProxy;
+ }
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+ handler.apply(self, args);
+ }
+ onceHandler.__emitterProxy = handler;
+ return self.on(events2, onceHandler, priority);
+ },
+ onAny(handler, priority) {
+ const self = this;
+ if (!self.eventsListeners || self.destroyed) return self;
+ if (typeof handler !== "function") return self;
+ const method = priority ? "unshift" : "push";
+ if (self.eventsAnyListeners.indexOf(handler) < 0) {
+ self.eventsAnyListeners[method](handler);
+ }
+ return self;
+ },
+ offAny(handler) {
+ const self = this;
+ if (!self.eventsListeners || self.destroyed) return self;
+ if (!self.eventsAnyListeners) return self;
+ const index = self.eventsAnyListeners.indexOf(handler);
+ if (index >= 0) {
+ self.eventsAnyListeners.splice(index, 1);
+ }
+ return self;
+ },
+ off(events2, handler) {
+ const self = this;
+ if (!self.eventsListeners || self.destroyed) return self;
+ if (!self.eventsListeners) return self;
+ events2.split(" ").forEach((event) => {
+ if (typeof handler === "undefined") {
+ self.eventsListeners[event] = [];
+ } else if (self.eventsListeners[event]) {
+ self.eventsListeners[event].forEach((eventHandler, index) => {
+ if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {
+ self.eventsListeners[event].splice(index, 1);
+ }
+ });
+ }
+ });
+ return self;
+ },
+ emit() {
+ const self = this;
+ if (!self.eventsListeners || self.destroyed) return self;
+ if (!self.eventsListeners) return self;
+ let events2;
+ let data;
+ let context;
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
+ args[_key2] = arguments[_key2];
+ }
+ if (typeof args[0] === "string" || Array.isArray(args[0])) {
+ events2 = args[0];
+ data = args.slice(1, args.length);
+ context = self;
+ } else {
+ events2 = args[0].events;
+ data = args[0].data;
+ context = args[0].context || self;
+ }
+ data.unshift(context);
+ const eventsArray = Array.isArray(events2) ? events2 : events2.split(" ");
+ eventsArray.forEach((event) => {
+ if (self.eventsAnyListeners && self.eventsAnyListeners.length) {
+ self.eventsAnyListeners.forEach((eventHandler) => {
+ eventHandler.apply(context, [event, ...data]);
+ });
+ }
+ if (self.eventsListeners && self.eventsListeners[event]) {
+ self.eventsListeners[event].forEach((eventHandler) => {
+ eventHandler.apply(context, data);
+ });
+ }
+ });
+ return self;
+ }
+};
+function updateSize() {
+ const swiper = this;
+ let width;
+ let height;
+ const el = swiper.el;
+ if (typeof swiper.params.width !== "undefined" && swiper.params.width !== null) {
+ width = swiper.params.width;
+ } else {
+ width = el.clientWidth;
+ }
+ if (typeof swiper.params.height !== "undefined" && swiper.params.height !== null) {
+ height = swiper.params.height;
+ } else {
+ height = el.clientHeight;
+ }
+ if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {
+ return;
+ }
+ width = width - parseInt(elementStyle(el, "padding-left") || 0, 10) - parseInt(elementStyle(el, "padding-right") || 0, 10);
+ height = height - parseInt(elementStyle(el, "padding-top") || 0, 10) - parseInt(elementStyle(el, "padding-bottom") || 0, 10);
+ if (Number.isNaN(width)) width = 0;
+ if (Number.isNaN(height)) height = 0;
+ Object.assign(swiper, {
+ width,
+ height,
+ size: swiper.isHorizontal() ? width : height
+ });
+}
+function updateSlides() {
+ const swiper = this;
+ function getDirectionPropertyValue(node, label) {
+ return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);
+ }
+ const params = swiper.params;
+ const {
+ wrapperEl,
+ slidesEl,
+ size: swiperSize,
+ rtlTranslate: rtl,
+ wrongRTL
+ } = swiper;
+ const isVirtual = swiper.virtual && params.virtual.enabled;
+ const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
+ const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);
+ const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
+ let snapGrid = [];
+ const slidesGrid = [];
+ const slidesSizesGrid = [];
+ let offsetBefore = params.slidesOffsetBefore;
+ if (typeof offsetBefore === "function") {
+ offsetBefore = params.slidesOffsetBefore.call(swiper);
+ }
+ let offsetAfter = params.slidesOffsetAfter;
+ if (typeof offsetAfter === "function") {
+ offsetAfter = params.slidesOffsetAfter.call(swiper);
+ }
+ const previousSnapGridLength = swiper.snapGrid.length;
+ const previousSlidesGridLength = swiper.slidesGrid.length;
+ let spaceBetween = params.spaceBetween;
+ let slidePosition = -offsetBefore;
+ let prevSlideSize = 0;
+ let index = 0;
+ if (typeof swiperSize === "undefined") {
+ return;
+ }
+ if (typeof spaceBetween === "string" && spaceBetween.indexOf("%") >= 0) {
+ spaceBetween = parseFloat(spaceBetween.replace("%", "")) / 100 * swiperSize;
+ } else if (typeof spaceBetween === "string") {
+ spaceBetween = parseFloat(spaceBetween);
+ }
+ swiper.virtualSize = -spaceBetween;
+ slides.forEach((slideEl) => {
+ if (rtl) {
+ slideEl.style.marginLeft = "";
+ } else {
+ slideEl.style.marginRight = "";
+ }
+ slideEl.style.marginBottom = "";
+ slideEl.style.marginTop = "";
+ });
+ if (params.centeredSlides && params.cssMode) {
+ setCSSProperty(wrapperEl, "--swiper-centered-offset-before", "");
+ setCSSProperty(wrapperEl, "--swiper-centered-offset-after", "");
+ }
+ const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;
+ if (gridEnabled) {
+ swiper.grid.initSlides(slides);
+ } else if (swiper.grid) {
+ swiper.grid.unsetSlides();
+ }
+ let slideSize;
+ const shouldResetSlideSize = params.slidesPerView === "auto" && params.breakpoints && Object.keys(params.breakpoints).filter((key) => {
+ return typeof params.breakpoints[key].slidesPerView !== "undefined";
+ }).length > 0;
+ for (let i = 0; i < slidesLength; i += 1) {
+ slideSize = 0;
+ let slide2;
+ if (slides[i]) slide2 = slides[i];
+ if (gridEnabled) {
+ swiper.grid.updateSlide(i, slide2, slides);
+ }
+ if (slides[i] && elementStyle(slide2, "display") === "none") continue;
+ if (params.slidesPerView === "auto") {
+ if (shouldResetSlideSize) {
+ slides[i].style[swiper.getDirectionLabel("width")] = ``;
+ }
+ const slideStyles = getComputedStyle(slide2);
+ const currentTransform = slide2.style.transform;
+ const currentWebKitTransform = slide2.style.webkitTransform;
+ if (currentTransform) {
+ slide2.style.transform = "none";
+ }
+ if (currentWebKitTransform) {
+ slide2.style.webkitTransform = "none";
+ }
+ if (params.roundLengths) {
+ slideSize = swiper.isHorizontal() ? elementOuterSize(slide2, "width", true) : elementOuterSize(slide2, "height", true);
+ } else {
+ const width = getDirectionPropertyValue(slideStyles, "width");
+ const paddingLeft = getDirectionPropertyValue(slideStyles, "padding-left");
+ const paddingRight = getDirectionPropertyValue(slideStyles, "padding-right");
+ const marginLeft = getDirectionPropertyValue(slideStyles, "margin-left");
+ const marginRight = getDirectionPropertyValue(slideStyles, "margin-right");
+ const boxSizing = slideStyles.getPropertyValue("box-sizing");
+ if (boxSizing && boxSizing === "border-box") {
+ slideSize = width + marginLeft + marginRight;
+ } else {
+ const {
+ clientWidth,
+ offsetWidth
+ } = slide2;
+ slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);
+ }
+ }
+ if (currentTransform) {
+ slide2.style.transform = currentTransform;
+ }
+ if (currentWebKitTransform) {
+ slide2.style.webkitTransform = currentWebKitTransform;
+ }
+ if (params.roundLengths) slideSize = Math.floor(slideSize);
+ } else {
+ slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;
+ if (params.roundLengths) slideSize = Math.floor(slideSize);
+ if (slides[i]) {
+ slides[i].style[swiper.getDirectionLabel("width")] = `${slideSize}px`;
+ }
+ }
+ if (slides[i]) {
+ slides[i].swiperSlideSize = slideSize;
+ }
+ slidesSizesGrid.push(slideSize);
+ if (params.centeredSlides) {
+ slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;
+ if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
+ if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
+ if (Math.abs(slidePosition) < 1 / 1e3) slidePosition = 0;
+ if (params.roundLengths) slidePosition = Math.floor(slidePosition);
+ if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);
+ slidesGrid.push(slidePosition);
+ } else {
+ if (params.roundLengths) slidePosition = Math.floor(slidePosition);
+ if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);
+ slidesGrid.push(slidePosition);
+ slidePosition = slidePosition + slideSize + spaceBetween;
+ }
+ swiper.virtualSize += slideSize + spaceBetween;
+ prevSlideSize = slideSize;
+ index += 1;
+ }
+ swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
+ if (rtl && wrongRTL && (params.effect === "slide" || params.effect === "coverflow")) {
+ wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;
+ }
+ if (params.setWrapperSize) {
+ wrapperEl.style[swiper.getDirectionLabel("width")] = `${swiper.virtualSize + spaceBetween}px`;
+ }
+ if (gridEnabled) {
+ swiper.grid.updateWrapperSize(slideSize, snapGrid);
+ }
+ if (!params.centeredSlides) {
+ const newSlidesGrid = [];
+ for (let i = 0; i < snapGrid.length; i += 1) {
+ let slidesGridItem = snapGrid[i];
+ if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
+ if (snapGrid[i] <= swiper.virtualSize - swiperSize) {
+ newSlidesGrid.push(slidesGridItem);
+ }
+ }
+ snapGrid = newSlidesGrid;
+ if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
+ snapGrid.push(swiper.virtualSize - swiperSize);
+ }
+ }
+ if (isVirtual && params.loop) {
+ const size = slidesSizesGrid[0] + spaceBetween;
+ if (params.slidesPerGroup > 1) {
+ const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);
+ const groupSize = size * params.slidesPerGroup;
+ for (let i = 0; i < groups; i += 1) {
+ snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);
+ }
+ }
+ for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {
+ if (params.slidesPerGroup === 1) {
+ snapGrid.push(snapGrid[snapGrid.length - 1] + size);
+ }
+ slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);
+ swiper.virtualSize += size;
+ }
+ }
+ if (snapGrid.length === 0) snapGrid = [0];
+ if (spaceBetween !== 0) {
+ const key = swiper.isHorizontal() && rtl ? "marginLeft" : swiper.getDirectionLabel("marginRight");
+ slides.filter((_, slideIndex) => {
+ if (!params.cssMode || params.loop) return true;
+ if (slideIndex === slides.length - 1) {
+ return false;
+ }
+ return true;
+ }).forEach((slideEl) => {
+ slideEl.style[key] = `${spaceBetween}px`;
+ });
+ }
+ if (params.centeredSlides && params.centeredSlidesBounds) {
+ let allSlidesSize = 0;
+ slidesSizesGrid.forEach((slideSizeValue) => {
+ allSlidesSize += slideSizeValue + (spaceBetween || 0);
+ });
+ allSlidesSize -= spaceBetween;
+ const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;
+ snapGrid = snapGrid.map((snap) => {
+ if (snap <= 0) return -offsetBefore;
+ if (snap > maxSnap) return maxSnap + offsetAfter;
+ return snap;
+ });
+ }
+ if (params.centerInsufficientSlides) {
+ let allSlidesSize = 0;
+ slidesSizesGrid.forEach((slideSizeValue) => {
+ allSlidesSize += slideSizeValue + (spaceBetween || 0);
+ });
+ allSlidesSize -= spaceBetween;
+ const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);
+ if (allSlidesSize + offsetSize < swiperSize) {
+ const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;
+ snapGrid.forEach((snap, snapIndex) => {
+ snapGrid[snapIndex] = snap - allSlidesOffset;
+ });
+ slidesGrid.forEach((snap, snapIndex) => {
+ slidesGrid[snapIndex] = snap + allSlidesOffset;
+ });
+ }
+ }
+ Object.assign(swiper, {
+ slides,
+ snapGrid,
+ slidesGrid,
+ slidesSizesGrid
+ });
+ if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {
+ setCSSProperty(wrapperEl, "--swiper-centered-offset-before", `${-snapGrid[0]}px`);
+ setCSSProperty(wrapperEl, "--swiper-centered-offset-after", `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);
+ const addToSnapGrid = -swiper.snapGrid[0];
+ const addToSlidesGrid = -swiper.slidesGrid[0];
+ swiper.snapGrid = swiper.snapGrid.map((v) => v + addToSnapGrid);
+ swiper.slidesGrid = swiper.slidesGrid.map((v) => v + addToSlidesGrid);
+ }
+ if (slidesLength !== previousSlidesLength) {
+ swiper.emit("slidesLengthChange");
+ }
+ if (snapGrid.length !== previousSnapGridLength) {
+ if (swiper.params.watchOverflow) swiper.checkOverflow();
+ swiper.emit("snapGridLengthChange");
+ }
+ if (slidesGrid.length !== previousSlidesGridLength) {
+ swiper.emit("slidesGridLengthChange");
+ }
+ if (params.watchSlidesProgress) {
+ swiper.updateSlidesOffset();
+ }
+ swiper.emit("slidesUpdated");
+ if (!isVirtual && !params.cssMode && (params.effect === "slide" || params.effect === "fade")) {
+ const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;
+ const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);
+ if (slidesLength <= params.maxBackfaceHiddenSlides) {
+ if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);
+ } else if (hasClassBackfaceClassAdded) {
+ swiper.el.classList.remove(backFaceHiddenClass);
+ }
+ }
+}
+function updateAutoHeight(speed) {
+ const swiper = this;
+ const activeSlides = [];
+ const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
+ let newHeight = 0;
+ let i;
+ if (typeof speed === "number") {
+ swiper.setTransition(speed);
+ } else if (speed === true) {
+ swiper.setTransition(swiper.params.speed);
+ }
+ const getSlideByIndex = (index) => {
+ if (isVirtual) {
+ return swiper.slides[swiper.getSlideIndexByData(index)];
+ }
+ return swiper.slides[index];
+ };
+ if (swiper.params.slidesPerView !== "auto" && swiper.params.slidesPerView > 1) {
+ if (swiper.params.centeredSlides) {
+ (swiper.visibleSlides || []).forEach((slide2) => {
+ activeSlides.push(slide2);
+ });
+ } else {
+ for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
+ const index = swiper.activeIndex + i;
+ if (index > swiper.slides.length && !isVirtual) break;
+ activeSlides.push(getSlideByIndex(index));
+ }
+ }
+ } else {
+ activeSlides.push(getSlideByIndex(swiper.activeIndex));
+ }
+ for (i = 0; i < activeSlides.length; i += 1) {
+ if (typeof activeSlides[i] !== "undefined") {
+ const height = activeSlides[i].offsetHeight;
+ newHeight = height > newHeight ? height : newHeight;
+ }
+ }
+ if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;
+}
+function updateSlidesOffset() {
+ const swiper = this;
+ const slides = swiper.slides;
+ const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;
+ for (let i = 0; i < slides.length; i += 1) {
+ slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();
+ }
+}
+var toggleSlideClasses$1 = (slideEl, condition, className) => {
+ if (condition && !slideEl.classList.contains(className)) {
+ slideEl.classList.add(className);
+ } else if (!condition && slideEl.classList.contains(className)) {
+ slideEl.classList.remove(className);
+ }
+};
+function updateSlidesProgress(translate2) {
+ if (translate2 === void 0) {
+ translate2 = this && this.translate || 0;
+ }
+ const swiper = this;
+ const params = swiper.params;
+ const {
+ slides,
+ rtlTranslate: rtl,
+ snapGrid
+ } = swiper;
+ if (slides.length === 0) return;
+ if (typeof slides[0].swiperSlideOffset === "undefined") swiper.updateSlidesOffset();
+ let offsetCenter = -translate2;
+ if (rtl) offsetCenter = translate2;
+ swiper.visibleSlidesIndexes = [];
+ swiper.visibleSlides = [];
+ let spaceBetween = params.spaceBetween;
+ if (typeof spaceBetween === "string" && spaceBetween.indexOf("%") >= 0) {
+ spaceBetween = parseFloat(spaceBetween.replace("%", "")) / 100 * swiper.size;
+ } else if (typeof spaceBetween === "string") {
+ spaceBetween = parseFloat(spaceBetween);
+ }
+ for (let i = 0; i < slides.length; i += 1) {
+ const slide2 = slides[i];
+ let slideOffset = slide2.swiperSlideOffset;
+ if (params.cssMode && params.centeredSlides) {
+ slideOffset -= slides[0].swiperSlideOffset;
+ }
+ const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide2.swiperSlideSize + spaceBetween);
+ const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide2.swiperSlideSize + spaceBetween);
+ const slideBefore = -(offsetCenter - slideOffset);
+ const slideAfter = slideBefore + swiper.slidesSizesGrid[i];
+ const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];
+ const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;
+ if (isVisible) {
+ swiper.visibleSlides.push(slide2);
+ swiper.visibleSlidesIndexes.push(i);
+ }
+ toggleSlideClasses$1(slide2, isVisible, params.slideVisibleClass);
+ toggleSlideClasses$1(slide2, isFullyVisible, params.slideFullyVisibleClass);
+ slide2.progress = rtl ? -slideProgress : slideProgress;
+ slide2.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;
+ }
+}
+function updateProgress(translate2) {
+ const swiper = this;
+ if (typeof translate2 === "undefined") {
+ const multiplier = swiper.rtlTranslate ? -1 : 1;
+ translate2 = swiper && swiper.translate && swiper.translate * multiplier || 0;
+ }
+ const params = swiper.params;
+ const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
+ let {
+ progress,
+ isBeginning,
+ isEnd,
+ progressLoop
+ } = swiper;
+ const wasBeginning = isBeginning;
+ const wasEnd = isEnd;
+ if (translatesDiff === 0) {
+ progress = 0;
+ isBeginning = true;
+ isEnd = true;
+ } else {
+ progress = (translate2 - swiper.minTranslate()) / translatesDiff;
+ const isBeginningRounded = Math.abs(translate2 - swiper.minTranslate()) < 1;
+ const isEndRounded = Math.abs(translate2 - swiper.maxTranslate()) < 1;
+ isBeginning = isBeginningRounded || progress <= 0;
+ isEnd = isEndRounded || progress >= 1;
+ if (isBeginningRounded) progress = 0;
+ if (isEndRounded) progress = 1;
+ }
+ if (params.loop) {
+ const firstSlideIndex = swiper.getSlideIndexByData(0);
+ const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);
+ const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];
+ const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];
+ const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];
+ const translateAbs = Math.abs(translate2);
+ if (translateAbs >= firstSlideTranslate) {
+ progressLoop = (translateAbs - firstSlideTranslate) / translateMax;
+ } else {
+ progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;
+ }
+ if (progressLoop > 1) progressLoop -= 1;
+ }
+ Object.assign(swiper, {
+ progress,
+ progressLoop,
+ isBeginning,
+ isEnd
+ });
+ if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate2);
+ if (isBeginning && !wasBeginning) {
+ swiper.emit("reachBeginning toEdge");
+ }
+ if (isEnd && !wasEnd) {
+ swiper.emit("reachEnd toEdge");
+ }
+ if (wasBeginning && !isBeginning || wasEnd && !isEnd) {
+ swiper.emit("fromEdge");
+ }
+ swiper.emit("progress", progress);
+}
+var toggleSlideClasses = (slideEl, condition, className) => {
+ if (condition && !slideEl.classList.contains(className)) {
+ slideEl.classList.add(className);
+ } else if (!condition && slideEl.classList.contains(className)) {
+ slideEl.classList.remove(className);
+ }
+};
+function updateSlidesClasses() {
+ const swiper = this;
+ const {
+ slides,
+ params,
+ slidesEl,
+ activeIndex
+ } = swiper;
+ const isVirtual = swiper.virtual && params.virtual.enabled;
+ const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
+ const getFilteredSlide = (selector) => {
+ return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];
+ };
+ let activeSlide;
+ let prevSlide;
+ let nextSlide;
+ if (isVirtual) {
+ if (params.loop) {
+ let slideIndex = activeIndex - swiper.virtual.slidesBefore;
+ if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;
+ if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;
+ activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`);
+ } else {
+ activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`);
+ }
+ } else {
+ if (gridEnabled) {
+ activeSlide = slides.find((slideEl) => slideEl.column === activeIndex);
+ nextSlide = slides.find((slideEl) => slideEl.column === activeIndex + 1);
+ prevSlide = slides.find((slideEl) => slideEl.column === activeIndex - 1);
+ } else {
+ activeSlide = slides[activeIndex];
+ }
+ }
+ if (activeSlide) {
+ if (!gridEnabled) {
+ nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];
+ if (params.loop && !nextSlide) {
+ nextSlide = slides[0];
+ }
+ prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];
+ if (params.loop && !prevSlide === 0) {
+ prevSlide = slides[slides.length - 1];
+ }
+ }
+ }
+ slides.forEach((slideEl) => {
+ toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);
+ toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);
+ toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);
+ });
+ swiper.emitSlidesClasses();
+}
+var processLazyPreloader = (swiper, imageEl) => {
+ if (!swiper || swiper.destroyed || !swiper.params) return;
+ const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;
+ const slideEl = imageEl.closest(slideSelector());
+ if (slideEl) {
+ let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);
+ if (!lazyEl && swiper.isElement) {
+ if (slideEl.shadowRoot) {
+ lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);
+ } else {
+ requestAnimationFrame(() => {
+ if (slideEl.shadowRoot) {
+ lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);
+ if (lazyEl) lazyEl.remove();
+ }
+ });
+ }
+ }
+ if (lazyEl) lazyEl.remove();
+ }
+};
+var unlazy = (swiper, index) => {
+ if (!swiper.slides[index]) return;
+ const imageEl = swiper.slides[index].querySelector('[loading="lazy"]');
+ if (imageEl) imageEl.removeAttribute("loading");
+};
+var preload = (swiper) => {
+ if (!swiper || swiper.destroyed || !swiper.params) return;
+ let amount = swiper.params.lazyPreloadPrevNext;
+ const len = swiper.slides.length;
+ if (!len || !amount || amount < 0) return;
+ amount = Math.min(amount, len);
+ const slidesPerView = swiper.params.slidesPerView === "auto" ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);
+ const activeIndex = swiper.activeIndex;
+ if (swiper.params.grid && swiper.params.grid.rows > 1) {
+ const activeColumn = activeIndex;
+ const preloadColumns = [activeColumn - amount];
+ preloadColumns.push(...Array.from({
+ length: amount
+ }).map((_, i) => {
+ return activeColumn + slidesPerView + i;
+ }));
+ swiper.slides.forEach((slideEl, i) => {
+ if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);
+ });
+ return;
+ }
+ const slideIndexLastInView = activeIndex + slidesPerView - 1;
+ if (swiper.params.rewind || swiper.params.loop) {
+ for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {
+ const realIndex = (i % len + len) % len;
+ if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);
+ }
+ } else {
+ for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {
+ if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {
+ unlazy(swiper, i);
+ }
+ }
+ }
+};
+function getActiveIndexByTranslate(swiper) {
+ const {
+ slidesGrid,
+ params
+ } = swiper;
+ const translate2 = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
+ let activeIndex;
+ for (let i = 0; i < slidesGrid.length; i += 1) {
+ if (typeof slidesGrid[i + 1] !== "undefined") {
+ if (translate2 >= slidesGrid[i] && translate2 < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {
+ activeIndex = i;
+ } else if (translate2 >= slidesGrid[i] && translate2 < slidesGrid[i + 1]) {
+ activeIndex = i + 1;
+ }
+ } else if (translate2 >= slidesGrid[i]) {
+ activeIndex = i;
+ }
+ }
+ if (params.normalizeSlideIndex) {
+ if (activeIndex < 0 || typeof activeIndex === "undefined") activeIndex = 0;
+ }
+ return activeIndex;
+}
+function updateActiveIndex(newActiveIndex) {
+ const swiper = this;
+ const translate2 = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
+ const {
+ snapGrid,
+ params,
+ activeIndex: previousIndex,
+ realIndex: previousRealIndex,
+ snapIndex: previousSnapIndex
+ } = swiper;
+ let activeIndex = newActiveIndex;
+ let snapIndex;
+ const getVirtualRealIndex = (aIndex) => {
+ let realIndex2 = aIndex - swiper.virtual.slidesBefore;
+ if (realIndex2 < 0) {
+ realIndex2 = swiper.virtual.slides.length + realIndex2;
+ }
+ if (realIndex2 >= swiper.virtual.slides.length) {
+ realIndex2 -= swiper.virtual.slides.length;
+ }
+ return realIndex2;
+ };
+ if (typeof activeIndex === "undefined") {
+ activeIndex = getActiveIndexByTranslate(swiper);
+ }
+ if (snapGrid.indexOf(translate2) >= 0) {
+ snapIndex = snapGrid.indexOf(translate2);
+ } else {
+ const skip = Math.min(params.slidesPerGroupSkip, activeIndex);
+ snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
+ }
+ if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
+ if (activeIndex === previousIndex && !swiper.params.loop) {
+ if (snapIndex !== previousSnapIndex) {
+ swiper.snapIndex = snapIndex;
+ swiper.emit("snapIndexChange");
+ }
+ return;
+ }
+ if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {
+ swiper.realIndex = getVirtualRealIndex(activeIndex);
+ return;
+ }
+ const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
+ let realIndex;
+ if (swiper.virtual && params.virtual.enabled && params.loop) {
+ realIndex = getVirtualRealIndex(activeIndex);
+ } else if (gridEnabled) {
+ const firstSlideInColumn = swiper.slides.find((slideEl) => slideEl.column === activeIndex);
+ let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute("data-swiper-slide-index"), 10);
+ if (Number.isNaN(activeSlideIndex)) {
+ activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);
+ }
+ realIndex = Math.floor(activeSlideIndex / params.grid.rows);
+ } else if (swiper.slides[activeIndex]) {
+ const slideIndex = swiper.slides[activeIndex].getAttribute("data-swiper-slide-index");
+ if (slideIndex) {
+ realIndex = parseInt(slideIndex, 10);
+ } else {
+ realIndex = activeIndex;
+ }
+ } else {
+ realIndex = activeIndex;
+ }
+ Object.assign(swiper, {
+ previousSnapIndex,
+ snapIndex,
+ previousRealIndex,
+ realIndex,
+ previousIndex,
+ activeIndex
+ });
+ if (swiper.initialized) {
+ preload(swiper);
+ }
+ swiper.emit("activeIndexChange");
+ swiper.emit("snapIndexChange");
+ if (swiper.initialized || swiper.params.runCallbacksOnInit) {
+ if (previousRealIndex !== realIndex) {
+ swiper.emit("realIndexChange");
+ }
+ swiper.emit("slideChange");
+ }
+}
+function updateClickedSlide(el, path) {
+ const swiper = this;
+ const params = swiper.params;
+ let slide2 = el.closest(`.${params.slideClass}, swiper-slide`);
+ if (!slide2 && swiper.isElement && path && path.length > 1 && path.includes(el)) {
+ [...path.slice(path.indexOf(el) + 1, path.length)].forEach((pathEl) => {
+ if (!slide2 && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {
+ slide2 = pathEl;
+ }
+ });
+ }
+ let slideFound = false;
+ let slideIndex;
+ if (slide2) {
+ for (let i = 0; i < swiper.slides.length; i += 1) {
+ if (swiper.slides[i] === slide2) {
+ slideFound = true;
+ slideIndex = i;
+ break;
+ }
+ }
+ }
+ if (slide2 && slideFound) {
+ swiper.clickedSlide = slide2;
+ if (swiper.virtual && swiper.params.virtual.enabled) {
+ swiper.clickedIndex = parseInt(slide2.getAttribute("data-swiper-slide-index"), 10);
+ } else {
+ swiper.clickedIndex = slideIndex;
+ }
+ } else {
+ swiper.clickedSlide = void 0;
+ swiper.clickedIndex = void 0;
+ return;
+ }
+ if (params.slideToClickedSlide && swiper.clickedIndex !== void 0 && swiper.clickedIndex !== swiper.activeIndex) {
+ swiper.slideToClickedSlide();
+ }
+}
+var update = {
+ updateSize,
+ updateSlides,
+ updateAutoHeight,
+ updateSlidesOffset,
+ updateSlidesProgress,
+ updateProgress,
+ updateSlidesClasses,
+ updateActiveIndex,
+ updateClickedSlide
+};
+function getSwiperTranslate(axis) {
+ if (axis === void 0) {
+ axis = this.isHorizontal() ? "x" : "y";
+ }
+ const swiper = this;
+ const {
+ params,
+ rtlTranslate: rtl,
+ translate: translate2,
+ wrapperEl
+ } = swiper;
+ if (params.virtualTranslate) {
+ return rtl ? -translate2 : translate2;
+ }
+ if (params.cssMode) {
+ return translate2;
+ }
+ let currentTranslate = getTranslate(wrapperEl, axis);
+ currentTranslate += swiper.cssOverflowAdjustment();
+ if (rtl) currentTranslate = -currentTranslate;
+ return currentTranslate || 0;
+}
+function setTranslate(translate2, byController) {
+ const swiper = this;
+ const {
+ rtlTranslate: rtl,
+ params,
+ wrapperEl,
+ progress
+ } = swiper;
+ let x = 0;
+ let y = 0;
+ const z = 0;
+ if (swiper.isHorizontal()) {
+ x = rtl ? -translate2 : translate2;
+ } else {
+ y = translate2;
+ }
+ if (params.roundLengths) {
+ x = Math.floor(x);
+ y = Math.floor(y);
+ }
+ swiper.previousTranslate = swiper.translate;
+ swiper.translate = swiper.isHorizontal() ? x : y;
+ if (params.cssMode) {
+ wrapperEl[swiper.isHorizontal() ? "scrollLeft" : "scrollTop"] = swiper.isHorizontal() ? -x : -y;
+ } else if (!params.virtualTranslate) {
+ if (swiper.isHorizontal()) {
+ x -= swiper.cssOverflowAdjustment();
+ } else {
+ y -= swiper.cssOverflowAdjustment();
+ }
+ wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;
+ }
+ let newProgress;
+ const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
+ if (translatesDiff === 0) {
+ newProgress = 0;
+ } else {
+ newProgress = (translate2 - swiper.minTranslate()) / translatesDiff;
+ }
+ if (newProgress !== progress) {
+ swiper.updateProgress(translate2);
+ }
+ swiper.emit("setTranslate", swiper.translate, byController);
+}
+function minTranslate() {
+ return -this.snapGrid[0];
+}
+function maxTranslate() {
+ return -this.snapGrid[this.snapGrid.length - 1];
+}
+function translateTo(translate2, speed, runCallbacks, translateBounds, internal) {
+ if (translate2 === void 0) {
+ translate2 = 0;
+ }
+ if (speed === void 0) {
+ speed = this.params.speed;
+ }
+ if (runCallbacks === void 0) {
+ runCallbacks = true;
+ }
+ if (translateBounds === void 0) {
+ translateBounds = true;
+ }
+ const swiper = this;
+ const {
+ params,
+ wrapperEl
+ } = swiper;
+ if (swiper.animating && params.preventInteractionOnTransition) {
+ return false;
+ }
+ const minTranslate2 = swiper.minTranslate();
+ const maxTranslate2 = swiper.maxTranslate();
+ let newTranslate;
+ if (translateBounds && translate2 > minTranslate2) newTranslate = minTranslate2;
+ else if (translateBounds && translate2 < maxTranslate2) newTranslate = maxTranslate2;
+ else newTranslate = translate2;
+ swiper.updateProgress(newTranslate);
+ if (params.cssMode) {
+ const isH = swiper.isHorizontal();
+ if (speed === 0) {
+ wrapperEl[isH ? "scrollLeft" : "scrollTop"] = -newTranslate;
+ } else {
+ if (!swiper.support.smoothScroll) {
+ animateCSSModeScroll({
+ swiper,
+ targetPosition: -newTranslate,
+ side: isH ? "left" : "top"
+ });
+ return true;
+ }
+ wrapperEl.scrollTo({
+ [isH ? "left" : "top"]: -newTranslate,
+ behavior: "smooth"
+ });
+ }
+ return true;
+ }
+ if (speed === 0) {
+ swiper.setTransition(0);
+ swiper.setTranslate(newTranslate);
+ if (runCallbacks) {
+ swiper.emit("beforeTransitionStart", speed, internal);
+ swiper.emit("transitionEnd");
+ }
+ } else {
+ swiper.setTransition(speed);
+ swiper.setTranslate(newTranslate);
+ if (runCallbacks) {
+ swiper.emit("beforeTransitionStart", speed, internal);
+ swiper.emit("transitionStart");
+ }
+ if (!swiper.animating) {
+ swiper.animating = true;
+ if (!swiper.onTranslateToWrapperTransitionEnd) {
+ swiper.onTranslateToWrapperTransitionEnd = function transitionEnd2(e) {
+ if (!swiper || swiper.destroyed) return;
+ if (e.target !== this) return;
+ swiper.wrapperEl.removeEventListener("transitionend", swiper.onTranslateToWrapperTransitionEnd);
+ swiper.onTranslateToWrapperTransitionEnd = null;
+ delete swiper.onTranslateToWrapperTransitionEnd;
+ swiper.animating = false;
+ if (runCallbacks) {
+ swiper.emit("transitionEnd");
+ }
+ };
+ }
+ swiper.wrapperEl.addEventListener("transitionend", swiper.onTranslateToWrapperTransitionEnd);
+ }
+ }
+ return true;
+}
+var translate = {
+ getTranslate: getSwiperTranslate,
+ setTranslate,
+ minTranslate,
+ maxTranslate,
+ translateTo
+};
+function setTransition(duration, byController) {
+ const swiper = this;
+ if (!swiper.params.cssMode) {
+ swiper.wrapperEl.style.transitionDuration = `${duration}ms`;
+ swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : "";
+ }
+ swiper.emit("setTransition", duration, byController);
+}
+function transitionEmit(_ref) {
+ let {
+ swiper,
+ runCallbacks,
+ direction,
+ step
+ } = _ref;
+ const {
+ activeIndex,
+ previousIndex
+ } = swiper;
+ let dir = direction;
+ if (!dir) {
+ if (activeIndex > previousIndex) dir = "next";
+ else if (activeIndex < previousIndex) dir = "prev";
+ else dir = "reset";
+ }
+ swiper.emit(`transition${step}`);
+ if (runCallbacks && activeIndex !== previousIndex) {
+ if (dir === "reset") {
+ swiper.emit(`slideResetTransition${step}`);
+ return;
+ }
+ swiper.emit(`slideChangeTransition${step}`);
+ if (dir === "next") {
+ swiper.emit(`slideNextTransition${step}`);
+ } else {
+ swiper.emit(`slidePrevTransition${step}`);
+ }
+ }
+}
+function transitionStart(runCallbacks, direction) {
+ if (runCallbacks === void 0) {
+ runCallbacks = true;
+ }
+ const swiper = this;
+ const {
+ params
+ } = swiper;
+ if (params.cssMode) return;
+ if (params.autoHeight) {
+ swiper.updateAutoHeight();
+ }
+ transitionEmit({
+ swiper,
+ runCallbacks,
+ direction,
+ step: "Start"
+ });
+}
+function transitionEnd(runCallbacks, direction) {
+ if (runCallbacks === void 0) {
+ runCallbacks = true;
+ }
+ const swiper = this;
+ const {
+ params
+ } = swiper;
+ swiper.animating = false;
+ if (params.cssMode) return;
+ swiper.setTransition(0);
+ transitionEmit({
+ swiper,
+ runCallbacks,
+ direction,
+ step: "End"
+ });
+}
+var transition = {
+ setTransition,
+ transitionStart,
+ transitionEnd
+};
+function slideTo(index, speed, runCallbacks, internal, initial) {
+ if (index === void 0) {
+ index = 0;
+ }
+ if (runCallbacks === void 0) {
+ runCallbacks = true;
+ }
+ if (typeof index === "string") {
+ index = parseInt(index, 10);
+ }
+ const swiper = this;
+ let slideIndex = index;
+ if (slideIndex < 0) slideIndex = 0;
+ const {
+ params,
+ snapGrid,
+ slidesGrid,
+ previousIndex,
+ activeIndex,
+ rtlTranslate: rtl,
+ wrapperEl,
+ enabled
+ } = swiper;
+ if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {
+ return false;
+ }
+ if (typeof speed === "undefined") {
+ speed = swiper.params.speed;
+ }
+ const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);
+ let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);
+ if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
+ const translate2 = -snapGrid[snapIndex];
+ if (params.normalizeSlideIndex) {
+ for (let i = 0; i < slidesGrid.length; i += 1) {
+ const normalizedTranslate = -Math.floor(translate2 * 100);
+ const normalizedGrid = Math.floor(slidesGrid[i] * 100);
+ const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);
+ if (typeof slidesGrid[i + 1] !== "undefined") {
+ if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {
+ slideIndex = i;
+ } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {
+ slideIndex = i + 1;
+ }
+ } else if (normalizedTranslate >= normalizedGrid) {
+ slideIndex = i;
+ }
+ }
+ }
+ if (swiper.initialized && slideIndex !== activeIndex) {
+ if (!swiper.allowSlideNext && (rtl ? translate2 > swiper.translate && translate2 > swiper.minTranslate() : translate2 < swiper.translate && translate2 < swiper.minTranslate())) {
+ return false;
+ }
+ if (!swiper.allowSlidePrev && translate2 > swiper.translate && translate2 > swiper.maxTranslate()) {
+ if ((activeIndex || 0) !== slideIndex) {
+ return false;
+ }
+ }
+ }
+ if (slideIndex !== (previousIndex || 0) && runCallbacks) {
+ swiper.emit("beforeSlideChangeStart");
+ }
+ swiper.updateProgress(translate2);
+ let direction;
+ if (slideIndex > activeIndex) direction = "next";
+ else if (slideIndex < activeIndex) direction = "prev";
+ else direction = "reset";
+ const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
+ const isInitialVirtual = isVirtual && initial;
+ if (!isInitialVirtual && (rtl && -translate2 === swiper.translate || !rtl && translate2 === swiper.translate)) {
+ swiper.updateActiveIndex(slideIndex);
+ if (params.autoHeight) {
+ swiper.updateAutoHeight();
+ }
+ swiper.updateSlidesClasses();
+ if (params.effect !== "slide") {
+ swiper.setTranslate(translate2);
+ }
+ if (direction !== "reset") {
+ swiper.transitionStart(runCallbacks, direction);
+ swiper.transitionEnd(runCallbacks, direction);
+ }
+ return false;
+ }
+ if (params.cssMode) {
+ const isH = swiper.isHorizontal();
+ const t = rtl ? translate2 : -translate2;
+ if (speed === 0) {
+ if (isVirtual) {
+ swiper.wrapperEl.style.scrollSnapType = "none";
+ swiper._immediateVirtual = true;
+ }
+ if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {
+ swiper._cssModeVirtualInitialSet = true;
+ requestAnimationFrame(() => {
+ wrapperEl[isH ? "scrollLeft" : "scrollTop"] = t;
+ });
+ } else {
+ wrapperEl[isH ? "scrollLeft" : "scrollTop"] = t;
+ }
+ if (isVirtual) {
+ requestAnimationFrame(() => {
+ swiper.wrapperEl.style.scrollSnapType = "";
+ swiper._immediateVirtual = false;
+ });
+ }
+ } else {
+ if (!swiper.support.smoothScroll) {
+ animateCSSModeScroll({
+ swiper,
+ targetPosition: t,
+ side: isH ? "left" : "top"
+ });
+ return true;
+ }
+ wrapperEl.scrollTo({
+ [isH ? "left" : "top"]: t,
+ behavior: "smooth"
+ });
+ }
+ return true;
+ }
+ const browser2 = getBrowser();
+ const isSafari = browser2.isSafari;
+ if (isVirtual && !initial && isSafari && swiper.isElement) {
+ swiper.virtual.update(false, false, slideIndex);
+ }
+ swiper.setTransition(speed);
+ swiper.setTranslate(translate2);
+ swiper.updateActiveIndex(slideIndex);
+ swiper.updateSlidesClasses();
+ swiper.emit("beforeTransitionStart", speed, internal);
+ swiper.transitionStart(runCallbacks, direction);
+ if (speed === 0) {
+ swiper.transitionEnd(runCallbacks, direction);
+ } else if (!swiper.animating) {
+ swiper.animating = true;
+ if (!swiper.onSlideToWrapperTransitionEnd) {
+ swiper.onSlideToWrapperTransitionEnd = function transitionEnd2(e) {
+ if (!swiper || swiper.destroyed) return;
+ if (e.target !== this) return;
+ swiper.wrapperEl.removeEventListener("transitionend", swiper.onSlideToWrapperTransitionEnd);
+ swiper.onSlideToWrapperTransitionEnd = null;
+ delete swiper.onSlideToWrapperTransitionEnd;
+ swiper.transitionEnd(runCallbacks, direction);
+ };
+ }
+ swiper.wrapperEl.addEventListener("transitionend", swiper.onSlideToWrapperTransitionEnd);
+ }
+ return true;
+}
+function slideToLoop(index, speed, runCallbacks, internal) {
+ if (index === void 0) {
+ index = 0;
+ }
+ if (runCallbacks === void 0) {
+ runCallbacks = true;
+ }
+ if (typeof index === "string") {
+ const indexAsNumber = parseInt(index, 10);
+ index = indexAsNumber;
+ }
+ const swiper = this;
+ if (swiper.destroyed) return;
+ if (typeof speed === "undefined") {
+ speed = swiper.params.speed;
+ }
+ const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;
+ let newIndex = index;
+ if (swiper.params.loop) {
+ if (swiper.virtual && swiper.params.virtual.enabled) {
+ newIndex = newIndex + swiper.virtual.slidesBefore;
+ } else {
+ let targetSlideIndex;
+ if (gridEnabled) {
+ const slideIndex = newIndex * swiper.params.grid.rows;
+ targetSlideIndex = swiper.slides.find((slideEl) => slideEl.getAttribute("data-swiper-slide-index") * 1 === slideIndex).column;
+ } else {
+ targetSlideIndex = swiper.getSlideIndexByData(newIndex);
+ }
+ const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;
+ const {
+ centeredSlides
+ } = swiper.params;
+ let slidesPerView = swiper.params.slidesPerView;
+ if (slidesPerView === "auto") {
+ slidesPerView = swiper.slidesPerViewDynamic();
+ } else {
+ slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));
+ if (centeredSlides && slidesPerView % 2 === 0) {
+ slidesPerView = slidesPerView + 1;
+ }
+ }
+ let needLoopFix = cols - targetSlideIndex < slidesPerView;
+ if (centeredSlides) {
+ needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);
+ }
+ if (internal && centeredSlides && swiper.params.slidesPerView !== "auto" && !gridEnabled) {
+ needLoopFix = false;
+ }
+ if (needLoopFix) {
+ const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? "prev" : "next" : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? "next" : "prev";
+ swiper.loopFix({
+ direction,
+ slideTo: true,
+ activeSlideIndex: direction === "next" ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,
+ slideRealIndex: direction === "next" ? swiper.realIndex : void 0
+ });
+ }
+ if (gridEnabled) {
+ const slideIndex = newIndex * swiper.params.grid.rows;
+ newIndex = swiper.slides.find((slideEl) => slideEl.getAttribute("data-swiper-slide-index") * 1 === slideIndex).column;
+ } else {
+ newIndex = swiper.getSlideIndexByData(newIndex);
+ }
+ }
+ }
+ requestAnimationFrame(() => {
+ swiper.slideTo(newIndex, speed, runCallbacks, internal);
+ });
+ return swiper;
+}
+function slideNext(speed, runCallbacks, internal) {
+ if (runCallbacks === void 0) {
+ runCallbacks = true;
+ }
+ const swiper = this;
+ const {
+ enabled,
+ params,
+ animating
+ } = swiper;
+ if (!enabled || swiper.destroyed) return swiper;
+ if (typeof speed === "undefined") {
+ speed = swiper.params.speed;
+ }
+ let perGroup = params.slidesPerGroup;
+ if (params.slidesPerView === "auto" && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {
+ perGroup = Math.max(swiper.slidesPerViewDynamic("current", true), 1);
+ }
+ const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;
+ const isVirtual = swiper.virtual && params.virtual.enabled;
+ if (params.loop) {
+ if (animating && !isVirtual && params.loopPreventsSliding) return false;
+ swiper.loopFix({
+ direction: "next"
+ });
+ swiper._clientLeft = swiper.wrapperEl.clientLeft;
+ if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {
+ requestAnimationFrame(() => {
+ swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
+ });
+ return true;
+ }
+ }
+ if (params.rewind && swiper.isEnd) {
+ return swiper.slideTo(0, speed, runCallbacks, internal);
+ }
+ return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
+}
+function slidePrev(speed, runCallbacks, internal) {
+ if (runCallbacks === void 0) {
+ runCallbacks = true;
+ }
+ const swiper = this;
+ const {
+ params,
+ snapGrid,
+ slidesGrid,
+ rtlTranslate,
+ enabled,
+ animating
+ } = swiper;
+ if (!enabled || swiper.destroyed) return swiper;
+ if (typeof speed === "undefined") {
+ speed = swiper.params.speed;
+ }
+ const isVirtual = swiper.virtual && params.virtual.enabled;
+ if (params.loop) {
+ if (animating && !isVirtual && params.loopPreventsSliding) return false;
+ swiper.loopFix({
+ direction: "prev"
+ });
+ swiper._clientLeft = swiper.wrapperEl.clientLeft;
+ }
+ const translate2 = rtlTranslate ? swiper.translate : -swiper.translate;
+ function normalize(val) {
+ if (val < 0) return -Math.floor(Math.abs(val));
+ return Math.floor(val);
+ }
+ const normalizedTranslate = normalize(translate2);
+ const normalizedSnapGrid = snapGrid.map((val) => normalize(val));
+ const isFreeMode = params.freeMode && params.freeMode.enabled;
+ let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
+ if (typeof prevSnap === "undefined" && (params.cssMode || isFreeMode)) {
+ let prevSnapIndex;
+ snapGrid.forEach((snap, snapIndex) => {
+ if (normalizedTranslate >= snap) {
+ prevSnapIndex = snapIndex;
+ }
+ });
+ if (typeof prevSnapIndex !== "undefined") {
+ prevSnap = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];
+ }
+ }
+ let prevIndex = 0;
+ if (typeof prevSnap !== "undefined") {
+ prevIndex = slidesGrid.indexOf(prevSnap);
+ if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;
+ if (params.slidesPerView === "auto" && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {
+ prevIndex = prevIndex - swiper.slidesPerViewDynamic("previous", true) + 1;
+ prevIndex = Math.max(prevIndex, 0);
+ }
+ }
+ if (params.rewind && swiper.isBeginning) {
+ const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;
+ return swiper.slideTo(lastIndex, speed, runCallbacks, internal);
+ } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {
+ requestAnimationFrame(() => {
+ swiper.slideTo(prevIndex, speed, runCallbacks, internal);
+ });
+ return true;
+ }
+ return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
+}
+function slideReset(speed, runCallbacks, internal) {
+ if (runCallbacks === void 0) {
+ runCallbacks = true;
+ }
+ const swiper = this;
+ if (swiper.destroyed) return;
+ if (typeof speed === "undefined") {
+ speed = swiper.params.speed;
+ }
+ return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
+}
+function slideToClosest(speed, runCallbacks, internal, threshold) {
+ if (runCallbacks === void 0) {
+ runCallbacks = true;
+ }
+ if (threshold === void 0) {
+ threshold = 0.5;
+ }
+ const swiper = this;
+ if (swiper.destroyed) return;
+ if (typeof speed === "undefined") {
+ speed = swiper.params.speed;
+ }
+ let index = swiper.activeIndex;
+ const skip = Math.min(swiper.params.slidesPerGroupSkip, index);
+ const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);
+ const translate2 = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
+ if (translate2 >= swiper.snapGrid[snapIndex]) {
+ const currentSnap = swiper.snapGrid[snapIndex];
+ const nextSnap = swiper.snapGrid[snapIndex + 1];
+ if (translate2 - currentSnap > (nextSnap - currentSnap) * threshold) {
+ index += swiper.params.slidesPerGroup;
+ }
+ } else {
+ const prevSnap = swiper.snapGrid[snapIndex - 1];
+ const currentSnap = swiper.snapGrid[snapIndex];
+ if (translate2 - prevSnap <= (currentSnap - prevSnap) * threshold) {
+ index -= swiper.params.slidesPerGroup;
+ }
+ }
+ index = Math.max(index, 0);
+ index = Math.min(index, swiper.slidesGrid.length - 1);
+ return swiper.slideTo(index, speed, runCallbacks, internal);
+}
+function slideToClickedSlide() {
+ const swiper = this;
+ if (swiper.destroyed) return;
+ const {
+ params,
+ slidesEl
+ } = swiper;
+ const slidesPerView = params.slidesPerView === "auto" ? swiper.slidesPerViewDynamic() : params.slidesPerView;
+ let slideToIndex = swiper.clickedIndex;
+ let realIndex;
+ const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;
+ if (params.loop) {
+ if (swiper.animating) return;
+ realIndex = parseInt(swiper.clickedSlide.getAttribute("data-swiper-slide-index"), 10);
+ if (params.centeredSlides) {
+ if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {
+ swiper.loopFix();
+ slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]);
+ nextTick(() => {
+ swiper.slideTo(slideToIndex);
+ });
+ } else {
+ swiper.slideTo(slideToIndex);
+ }
+ } else if (slideToIndex > swiper.slides.length - slidesPerView) {
+ swiper.loopFix();
+ slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]);
+ nextTick(() => {
+ swiper.slideTo(slideToIndex);
+ });
+ } else {
+ swiper.slideTo(slideToIndex);
+ }
+ } else {
+ swiper.slideTo(slideToIndex);
+ }
+}
+var slide = {
+ slideTo,
+ slideToLoop,
+ slideNext,
+ slidePrev,
+ slideReset,
+ slideToClosest,
+ slideToClickedSlide
+};
+function loopCreate(slideRealIndex, initial) {
+ const swiper = this;
+ const {
+ params,
+ slidesEl
+ } = swiper;
+ if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;
+ const initSlides = () => {
+ const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);
+ slides.forEach((el, index) => {
+ el.setAttribute("data-swiper-slide-index", index);
+ });
+ };
+ const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
+ const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);
+ const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;
+ const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;
+ const addBlankSlides = (amountOfSlides) => {
+ for (let i = 0; i < amountOfSlides; i += 1) {
+ const slideEl = swiper.isElement ? createElement("swiper-slide", [params.slideBlankClass]) : createElement("div", [params.slideClass, params.slideBlankClass]);
+ swiper.slidesEl.append(slideEl);
+ }
+ };
+ if (shouldFillGroup) {
+ if (params.loopAddBlankSlides) {
+ const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;
+ addBlankSlides(slidesToAdd);
+ swiper.recalcSlides();
+ swiper.updateSlides();
+ } else {
+ showWarning("Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)");
+ }
+ initSlides();
+ } else if (shouldFillGrid) {
+ if (params.loopAddBlankSlides) {
+ const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;
+ addBlankSlides(slidesToAdd);
+ swiper.recalcSlides();
+ swiper.updateSlides();
+ } else {
+ showWarning("Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)");
+ }
+ initSlides();
+ } else {
+ initSlides();
+ }
+ swiper.loopFix({
+ slideRealIndex,
+ direction: params.centeredSlides ? void 0 : "next",
+ initial
+ });
+}
+function loopFix(_temp) {
+ let {
+ slideRealIndex,
+ slideTo: slideTo2 = true,
+ direction,
+ setTranslate: setTranslate2,
+ activeSlideIndex,
+ initial,
+ byController,
+ byMousewheel
+ } = _temp === void 0 ? {} : _temp;
+ const swiper = this;
+ if (!swiper.params.loop) return;
+ swiper.emit("beforeLoopFix");
+ const {
+ slides,
+ allowSlidePrev,
+ allowSlideNext,
+ slidesEl,
+ params
+ } = swiper;
+ const {
+ centeredSlides,
+ initialSlide
+ } = params;
+ swiper.allowSlidePrev = true;
+ swiper.allowSlideNext = true;
+ if (swiper.virtual && params.virtual.enabled) {
+ if (slideTo2) {
+ if (!params.centeredSlides && swiper.snapIndex === 0) {
+ swiper.slideTo(swiper.virtual.slides.length, 0, false, true);
+ } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {
+ swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);
+ } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {
+ swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);
+ }
+ }
+ swiper.allowSlidePrev = allowSlidePrev;
+ swiper.allowSlideNext = allowSlideNext;
+ swiper.emit("loopFix");
+ return;
+ }
+ let slidesPerView = params.slidesPerView;
+ if (slidesPerView === "auto") {
+ slidesPerView = swiper.slidesPerViewDynamic();
+ } else {
+ slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));
+ if (centeredSlides && slidesPerView % 2 === 0) {
+ slidesPerView = slidesPerView + 1;
+ }
+ }
+ const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;
+ let loopedSlides = slidesPerGroup;
+ if (loopedSlides % slidesPerGroup !== 0) {
+ loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;
+ }
+ loopedSlides += params.loopAdditionalSlides;
+ swiper.loopedSlides = loopedSlides;
+ const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
+ if (slides.length < slidesPerView + loopedSlides || swiper.params.effect === "cards" && slides.length < slidesPerView + loopedSlides * 2) {
+ showWarning("Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled or not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters");
+ } else if (gridEnabled && params.grid.fill === "row") {
+ showWarning("Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`");
+ }
+ const prependSlidesIndexes = [];
+ const appendSlidesIndexes = [];
+ const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;
+ const isInitialOverflow = initial && cols - initialSlide < slidesPerView && !centeredSlides;
+ let activeIndex = isInitialOverflow ? initialSlide : swiper.activeIndex;
+ if (typeof activeSlideIndex === "undefined") {
+ activeSlideIndex = swiper.getSlideIndex(slides.find((el) => el.classList.contains(params.slideActiveClass)));
+ } else {
+ activeIndex = activeSlideIndex;
+ }
+ const isNext = direction === "next" || !direction;
+ const isPrev = direction === "prev" || !direction;
+ let slidesPrepended = 0;
+ let slidesAppended = 0;
+ const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;
+ const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate2 === "undefined" ? -slidesPerView / 2 + 0.5 : 0);
+ if (activeColIndexWithShift < loopedSlides) {
+ slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);
+ for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {
+ const index = i - Math.floor(i / cols) * cols;
+ if (gridEnabled) {
+ const colIndexToPrepend = cols - index - 1;
+ for (let i2 = slides.length - 1; i2 >= 0; i2 -= 1) {
+ if (slides[i2].column === colIndexToPrepend) prependSlidesIndexes.push(i2);
+ }
+ } else {
+ prependSlidesIndexes.push(cols - index - 1);
+ }
+ }
+ } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {
+ slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);
+ if (isInitialOverflow) {
+ slidesAppended = Math.max(slidesAppended, slidesPerView - cols + initialSlide + 1);
+ }
+ for (let i = 0; i < slidesAppended; i += 1) {
+ const index = i - Math.floor(i / cols) * cols;
+ if (gridEnabled) {
+ slides.forEach((slide2, slideIndex) => {
+ if (slide2.column === index) appendSlidesIndexes.push(slideIndex);
+ });
+ } else {
+ appendSlidesIndexes.push(index);
+ }
+ }
+ }
+ swiper.__preventObserver__ = true;
+ requestAnimationFrame(() => {
+ swiper.__preventObserver__ = false;
+ });
+ if (swiper.params.effect === "cards" && slides.length < slidesPerView + loopedSlides * 2) {
+ if (appendSlidesIndexes.includes(activeSlideIndex)) {
+ appendSlidesIndexes.splice(appendSlidesIndexes.indexOf(activeSlideIndex), 1);
+ }
+ if (prependSlidesIndexes.includes(activeSlideIndex)) {
+ prependSlidesIndexes.splice(prependSlidesIndexes.indexOf(activeSlideIndex), 1);
+ }
+ }
+ if (isPrev) {
+ prependSlidesIndexes.forEach((index) => {
+ slides[index].swiperLoopMoveDOM = true;
+ slidesEl.prepend(slides[index]);
+ slides[index].swiperLoopMoveDOM = false;
+ });
+ }
+ if (isNext) {
+ appendSlidesIndexes.forEach((index) => {
+ slides[index].swiperLoopMoveDOM = true;
+ slidesEl.append(slides[index]);
+ slides[index].swiperLoopMoveDOM = false;
+ });
+ }
+ swiper.recalcSlides();
+ if (params.slidesPerView === "auto") {
+ swiper.updateSlides();
+ } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {
+ swiper.slides.forEach((slide2, slideIndex) => {
+ swiper.grid.updateSlide(slideIndex, slide2, swiper.slides);
+ });
+ }
+ if (params.watchSlidesProgress) {
+ swiper.updateSlidesOffset();
+ }
+ if (slideTo2) {
+ if (prependSlidesIndexes.length > 0 && isPrev) {
+ if (typeof slideRealIndex === "undefined") {
+ const currentSlideTranslate = swiper.slidesGrid[activeIndex];
+ const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];
+ const diff = newSlideTranslate - currentSlideTranslate;
+ if (byMousewheel) {
+ swiper.setTranslate(swiper.translate - diff);
+ } else {
+ swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);
+ if (setTranslate2) {
+ swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;
+ swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;
+ }
+ }
+ } else {
+ if (setTranslate2) {
+ const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;
+ swiper.slideTo(swiper.activeIndex + shift, 0, false, true);
+ swiper.touchEventsData.currentTranslate = swiper.translate;
+ }
+ }
+ } else if (appendSlidesIndexes.length > 0 && isNext) {
+ if (typeof slideRealIndex === "undefined") {
+ const currentSlideTranslate = swiper.slidesGrid[activeIndex];
+ const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];
+ const diff = newSlideTranslate - currentSlideTranslate;
+ if (byMousewheel) {
+ swiper.setTranslate(swiper.translate - diff);
+ } else {
+ swiper.slideTo(activeIndex - slidesAppended, 0, false, true);
+ if (setTranslate2) {
+ swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;
+ swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;
+ }
+ }
+ } else {
+ const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;
+ swiper.slideTo(swiper.activeIndex - shift, 0, false, true);
+ }
+ }
+ }
+ swiper.allowSlidePrev = allowSlidePrev;
+ swiper.allowSlideNext = allowSlideNext;
+ if (swiper.controller && swiper.controller.control && !byController) {
+ const loopParams = {
+ slideRealIndex,
+ direction,
+ setTranslate: setTranslate2,
+ activeSlideIndex,
+ byController: true
+ };
+ if (Array.isArray(swiper.controller.control)) {
+ swiper.controller.control.forEach((c) => {
+ if (!c.destroyed && c.params.loop) c.loopFix({
+ ...loopParams,
+ slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo2 : false
+ });
+ });
+ } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {
+ swiper.controller.control.loopFix({
+ ...loopParams,
+ slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo2 : false
+ });
+ }
+ }
+ swiper.emit("loopFix");
+}
+function loopDestroy() {
+ const swiper = this;
+ const {
+ params,
+ slidesEl
+ } = swiper;
+ if (!params.loop || !slidesEl || swiper.virtual && swiper.params.virtual.enabled) return;
+ swiper.recalcSlides();
+ const newSlidesOrder = [];
+ swiper.slides.forEach((slideEl) => {
+ const index = typeof slideEl.swiperSlideIndex === "undefined" ? slideEl.getAttribute("data-swiper-slide-index") * 1 : slideEl.swiperSlideIndex;
+ newSlidesOrder[index] = slideEl;
+ });
+ swiper.slides.forEach((slideEl) => {
+ slideEl.removeAttribute("data-swiper-slide-index");
+ });
+ newSlidesOrder.forEach((slideEl) => {
+ slidesEl.append(slideEl);
+ });
+ swiper.recalcSlides();
+ swiper.slideTo(swiper.realIndex, 0);
+}
+var loop = {
+ loopCreate,
+ loopFix,
+ loopDestroy
+};
+function setGrabCursor(moving) {
+ const swiper = this;
+ if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;
+ const el = swiper.params.touchEventsTarget === "container" ? swiper.el : swiper.wrapperEl;
+ if (swiper.isElement) {
+ swiper.__preventObserver__ = true;
+ }
+ el.style.cursor = "move";
+ el.style.cursor = moving ? "grabbing" : "grab";
+ if (swiper.isElement) {
+ requestAnimationFrame(() => {
+ swiper.__preventObserver__ = false;
+ });
+ }
+}
+function unsetGrabCursor() {
+ const swiper = this;
+ if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {
+ return;
+ }
+ if (swiper.isElement) {
+ swiper.__preventObserver__ = true;
+ }
+ swiper[swiper.params.touchEventsTarget === "container" ? "el" : "wrapperEl"].style.cursor = "";
+ if (swiper.isElement) {
+ requestAnimationFrame(() => {
+ swiper.__preventObserver__ = false;
+ });
+ }
+}
+var grabCursor = {
+ setGrabCursor,
+ unsetGrabCursor
+};
+function closestElement(selector, base) {
+ if (base === void 0) {
+ base = this;
+ }
+ function __closestFrom(el) {
+ if (!el || el === getDocument() || el === getWindow()) return null;
+ if (el.assignedSlot) el = el.assignedSlot;
+ const found = el.closest(selector);
+ if (!found && !el.getRootNode) {
+ return null;
+ }
+ return found || __closestFrom(el.getRootNode().host);
+ }
+ return __closestFrom(base);
+}
+function preventEdgeSwipe(swiper, event, startX) {
+ const window2 = getWindow();
+ const {
+ params
+ } = swiper;
+ const edgeSwipeDetection = params.edgeSwipeDetection;
+ const edgeSwipeThreshold = params.edgeSwipeThreshold;
+ if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window2.innerWidth - edgeSwipeThreshold)) {
+ if (edgeSwipeDetection === "prevent") {
+ event.preventDefault();
+ return true;
+ }
+ return false;
+ }
+ return true;
+}
+function onTouchStart(event) {
+ const swiper = this;
+ const document2 = getDocument();
+ let e = event;
+ if (e.originalEvent) e = e.originalEvent;
+ const data = swiper.touchEventsData;
+ if (e.type === "pointerdown") {
+ if (data.pointerId !== null && data.pointerId !== e.pointerId) {
+ return;
+ }
+ data.pointerId = e.pointerId;
+ } else if (e.type === "touchstart" && e.targetTouches.length === 1) {
+ data.touchId = e.targetTouches[0].identifier;
+ }
+ if (e.type === "touchstart") {
+ preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);
+ return;
+ }
+ const {
+ params,
+ touches,
+ enabled
+ } = swiper;
+ if (!enabled) return;
+ if (!params.simulateTouch && e.pointerType === "mouse") return;
+ if (swiper.animating && params.preventInteractionOnTransition) {
+ return;
+ }
+ if (!swiper.animating && params.cssMode && params.loop) {
+ swiper.loopFix();
+ }
+ let targetEl = e.target;
+ if (params.touchEventsTarget === "wrapper") {
+ if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;
+ }
+ if ("which" in e && e.which === 3) return;
+ if ("button" in e && e.button > 0) return;
+ if (data.isTouched && data.isMoved) return;
+ const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== "";
+ const eventPath = e.composedPath ? e.composedPath() : e.path;
+ if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {
+ targetEl = eventPath[0];
+ }
+ const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;
+ const isTargetShadow = !!(e.target && e.target.shadowRoot);
+ if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {
+ swiper.allowClick = true;
+ return;
+ }
+ if (params.swipeHandler) {
+ if (!targetEl.closest(params.swipeHandler)) return;
+ }
+ touches.currentX = e.pageX;
+ touches.currentY = e.pageY;
+ const startX = touches.currentX;
+ const startY = touches.currentY;
+ if (!preventEdgeSwipe(swiper, e, startX)) {
+ return;
+ }
+ Object.assign(data, {
+ isTouched: true,
+ isMoved: false,
+ allowTouchCallbacks: true,
+ isScrolling: void 0,
+ startMoving: void 0
+ });
+ touches.startX = startX;
+ touches.startY = startY;
+ data.touchStartTime = now();
+ swiper.allowClick = true;
+ swiper.updateSize();
+ swiper.swipeDirection = void 0;
+ if (params.threshold > 0) data.allowThresholdMove = false;
+ let preventDefault = true;
+ if (targetEl.matches(data.focusableElements)) {
+ preventDefault = false;
+ if (targetEl.nodeName === "SELECT") {
+ data.isTouched = false;
+ }
+ }
+ if (document2.activeElement && document2.activeElement.matches(data.focusableElements) && document2.activeElement !== targetEl && (e.pointerType === "mouse" || e.pointerType !== "mouse" && !targetEl.matches(data.focusableElements))) {
+ document2.activeElement.blur();
+ }
+ const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
+ if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {
+ e.preventDefault();
+ }
+ if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {
+ swiper.freeMode.onTouchStart();
+ }
+ swiper.emit("touchStart", e);
+}
+function onTouchMove(event) {
+ const document2 = getDocument();
+ const swiper = this;
+ const data = swiper.touchEventsData;
+ const {
+ params,
+ touches,
+ rtlTranslate: rtl,
+ enabled
+ } = swiper;
+ if (!enabled) return;
+ if (!params.simulateTouch && event.pointerType === "mouse") return;
+ let e = event;
+ if (e.originalEvent) e = e.originalEvent;
+ if (e.type === "pointermove") {
+ if (data.touchId !== null) return;
+ const id = e.pointerId;
+ if (id !== data.pointerId) return;
+ }
+ let targetTouch;
+ if (e.type === "touchmove") {
+ targetTouch = [...e.changedTouches].find((t) => t.identifier === data.touchId);
+ if (!targetTouch || targetTouch.identifier !== data.touchId) return;
+ } else {
+ targetTouch = e;
+ }
+ if (!data.isTouched) {
+ if (data.startMoving && data.isScrolling) {
+ swiper.emit("touchMoveOpposite", e);
+ }
+ return;
+ }
+ const pageX = targetTouch.pageX;
+ const pageY = targetTouch.pageY;
+ if (e.preventedByNestedSwiper) {
+ touches.startX = pageX;
+ touches.startY = pageY;
+ return;
+ }
+ if (!swiper.allowTouchMove) {
+ if (!e.target.matches(data.focusableElements)) {
+ swiper.allowClick = false;
+ }
+ if (data.isTouched) {
+ Object.assign(touches, {
+ startX: pageX,
+ startY: pageY,
+ currentX: pageX,
+ currentY: pageY
+ });
+ data.touchStartTime = now();
+ }
+ return;
+ }
+ if (params.touchReleaseOnEdges && !params.loop) {
+ if (swiper.isVertical()) {
+ if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {
+ data.isTouched = false;
+ data.isMoved = false;
+ return;
+ }
+ } else if (rtl && (pageX > touches.startX && -swiper.translate <= swiper.maxTranslate() || pageX < touches.startX && -swiper.translate >= swiper.minTranslate())) {
+ return;
+ } else if (!rtl && (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate())) {
+ return;
+ }
+ }
+ if (document2.activeElement && document2.activeElement.matches(data.focusableElements) && document2.activeElement !== e.target && e.pointerType !== "mouse") {
+ document2.activeElement.blur();
+ }
+ if (document2.activeElement) {
+ if (e.target === document2.activeElement && e.target.matches(data.focusableElements)) {
+ data.isMoved = true;
+ swiper.allowClick = false;
+ return;
+ }
+ }
+ if (data.allowTouchCallbacks) {
+ swiper.emit("touchMove", e);
+ }
+ touches.previousX = touches.currentX;
+ touches.previousY = touches.currentY;
+ touches.currentX = pageX;
+ touches.currentY = pageY;
+ const diffX = touches.currentX - touches.startX;
+ const diffY = touches.currentY - touches.startY;
+ if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;
+ if (typeof data.isScrolling === "undefined") {
+ let touchAngle;
+ if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {
+ data.isScrolling = false;
+ } else {
+ if (diffX * diffX + diffY * diffY >= 25) {
+ touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;
+ data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;
+ }
+ }
+ }
+ if (data.isScrolling) {
+ swiper.emit("touchMoveOpposite", e);
+ }
+ if (typeof data.startMoving === "undefined") {
+ if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
+ data.startMoving = true;
+ }
+ }
+ if (data.isScrolling || e.type === "touchmove" && data.preventTouchMoveFromPointerMove) {
+ data.isTouched = false;
+ return;
+ }
+ if (!data.startMoving) {
+ return;
+ }
+ swiper.allowClick = false;
+ if (!params.cssMode && e.cancelable) {
+ e.preventDefault();
+ }
+ if (params.touchMoveStopPropagation && !params.nested) {
+ e.stopPropagation();
+ }
+ let diff = swiper.isHorizontal() ? diffX : diffY;
+ let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;
+ if (params.oneWayMovement) {
+ diff = Math.abs(diff) * (rtl ? 1 : -1);
+ touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);
+ }
+ touches.diff = diff;
+ diff *= params.touchRatio;
+ if (rtl) {
+ diff = -diff;
+ touchesDiff = -touchesDiff;
+ }
+ const prevTouchesDirection = swiper.touchesDirection;
+ swiper.swipeDirection = diff > 0 ? "prev" : "next";
+ swiper.touchesDirection = touchesDiff > 0 ? "prev" : "next";
+ const isLoop = swiper.params.loop && !params.cssMode;
+ const allowLoopFix = swiper.touchesDirection === "next" && swiper.allowSlideNext || swiper.touchesDirection === "prev" && swiper.allowSlidePrev;
+ if (!data.isMoved) {
+ if (isLoop && allowLoopFix) {
+ swiper.loopFix({
+ direction: swiper.swipeDirection
+ });
+ }
+ data.startTranslate = swiper.getTranslate();
+ swiper.setTransition(0);
+ if (swiper.animating) {
+ const evt = new window.CustomEvent("transitionend", {
+ bubbles: true,
+ cancelable: true,
+ detail: {
+ bySwiperTouchMove: true
+ }
+ });
+ swiper.wrapperEl.dispatchEvent(evt);
+ }
+ data.allowMomentumBounce = false;
+ if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
+ swiper.setGrabCursor(true);
+ }
+ swiper.emit("sliderFirstMove", e);
+ }
+ let loopFixed;
+ (/* @__PURE__ */ new Date()).getTime();
+ if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {
+ Object.assign(touches, {
+ startX: pageX,
+ startY: pageY,
+ currentX: pageX,
+ currentY: pageY,
+ startTranslate: data.currentTranslate
+ });
+ data.loopSwapReset = true;
+ data.startTranslate = data.currentTranslate;
+ return;
+ }
+ swiper.emit("sliderMove", e);
+ data.isMoved = true;
+ data.currentTranslate = diff + data.startTranslate;
+ let disableParentSwiper = true;
+ let resistanceRatio = params.resistanceRatio;
+ if (params.touchReleaseOnEdges) {
+ resistanceRatio = 0;
+ }
+ if (diff > 0) {
+ if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== "auto" && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {
+ swiper.loopFix({
+ direction: "prev",
+ setTranslate: true,
+ activeSlideIndex: 0
+ });
+ }
+ if (data.currentTranslate > swiper.minTranslate()) {
+ disableParentSwiper = false;
+ if (params.resistance) {
+ data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;
+ }
+ }
+ } else if (diff < 0) {
+ if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== "auto" && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {
+ swiper.loopFix({
+ direction: "next",
+ setTranslate: true,
+ activeSlideIndex: swiper.slides.length - (params.slidesPerView === "auto" ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))
+ });
+ }
+ if (data.currentTranslate < swiper.maxTranslate()) {
+ disableParentSwiper = false;
+ if (params.resistance) {
+ data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;
+ }
+ }
+ }
+ if (disableParentSwiper) {
+ e.preventedByNestedSwiper = true;
+ }
+ if (!swiper.allowSlideNext && swiper.swipeDirection === "next" && data.currentTranslate < data.startTranslate) {
+ data.currentTranslate = data.startTranslate;
+ }
+ if (!swiper.allowSlidePrev && swiper.swipeDirection === "prev" && data.currentTranslate > data.startTranslate) {
+ data.currentTranslate = data.startTranslate;
+ }
+ if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {
+ data.currentTranslate = data.startTranslate;
+ }
+ if (params.threshold > 0) {
+ if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
+ if (!data.allowThresholdMove) {
+ data.allowThresholdMove = true;
+ touches.startX = touches.currentX;
+ touches.startY = touches.currentY;
+ data.currentTranslate = data.startTranslate;
+ touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
+ return;
+ }
+ } else {
+ data.currentTranslate = data.startTranslate;
+ return;
+ }
+ }
+ if (!params.followFinger || params.cssMode) return;
+ if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {
+ swiper.updateActiveIndex();
+ swiper.updateSlidesClasses();
+ }
+ if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {
+ swiper.freeMode.onTouchMove();
+ }
+ swiper.updateProgress(data.currentTranslate);
+ swiper.setTranslate(data.currentTranslate);
+}
+function onTouchEnd(event) {
+ const swiper = this;
+ const data = swiper.touchEventsData;
+ let e = event;
+ if (e.originalEvent) e = e.originalEvent;
+ let targetTouch;
+ const isTouchEvent = e.type === "touchend" || e.type === "touchcancel";
+ if (!isTouchEvent) {
+ if (data.touchId !== null) return;
+ if (e.pointerId !== data.pointerId) return;
+ targetTouch = e;
+ } else {
+ targetTouch = [...e.changedTouches].find((t) => t.identifier === data.touchId);
+ if (!targetTouch || targetTouch.identifier !== data.touchId) return;
+ }
+ if (["pointercancel", "pointerout", "pointerleave", "contextmenu"].includes(e.type)) {
+ const proceed = ["pointercancel", "contextmenu"].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);
+ if (!proceed) {
+ return;
+ }
+ }
+ data.pointerId = null;
+ data.touchId = null;
+ const {
+ params,
+ touches,
+ rtlTranslate: rtl,
+ slidesGrid,
+ enabled
+ } = swiper;
+ if (!enabled) return;
+ if (!params.simulateTouch && e.pointerType === "mouse") return;
+ if (data.allowTouchCallbacks) {
+ swiper.emit("touchEnd", e);
+ }
+ data.allowTouchCallbacks = false;
+ if (!data.isTouched) {
+ if (data.isMoved && params.grabCursor) {
+ swiper.setGrabCursor(false);
+ }
+ data.isMoved = false;
+ data.startMoving = false;
+ return;
+ }
+ if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
+ swiper.setGrabCursor(false);
+ }
+ const touchEndTime = now();
+ const timeDiff = touchEndTime - data.touchStartTime;
+ if (swiper.allowClick) {
+ const pathTree = e.path || e.composedPath && e.composedPath();
+ swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);
+ swiper.emit("tap click", e);
+ if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {
+ swiper.emit("doubleTap doubleClick", e);
+ }
+ }
+ data.lastClickTime = now();
+ nextTick(() => {
+ if (!swiper.destroyed) swiper.allowClick = true;
+ });
+ if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {
+ data.isTouched = false;
+ data.isMoved = false;
+ data.startMoving = false;
+ return;
+ }
+ data.isTouched = false;
+ data.isMoved = false;
+ data.startMoving = false;
+ let currentPos;
+ if (params.followFinger) {
+ currentPos = rtl ? swiper.translate : -swiper.translate;
+ } else {
+ currentPos = -data.currentTranslate;
+ }
+ if (params.cssMode) {
+ return;
+ }
+ if (params.freeMode && params.freeMode.enabled) {
+ swiper.freeMode.onTouchEnd({
+ currentPos
+ });
+ return;
+ }
+ const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;
+ let stopIndex = 0;
+ let groupSize = swiper.slidesSizesGrid[0];
+ for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {
+ const increment2 = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
+ if (typeof slidesGrid[i + increment2] !== "undefined") {
+ if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment2]) {
+ stopIndex = i;
+ groupSize = slidesGrid[i + increment2] - slidesGrid[i];
+ }
+ } else if (swipeToLast || currentPos >= slidesGrid[i]) {
+ stopIndex = i;
+ groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
+ }
+ }
+ let rewindFirstIndex = null;
+ let rewindLastIndex = null;
+ if (params.rewind) {
+ if (swiper.isBeginning) {
+ rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;
+ } else if (swiper.isEnd) {
+ rewindFirstIndex = 0;
+ }
+ }
+ const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
+ const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
+ if (timeDiff > params.longSwipesMs) {
+ if (!params.longSwipes) {
+ swiper.slideTo(swiper.activeIndex);
+ return;
+ }
+ if (swiper.swipeDirection === "next") {
+ if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);
+ else swiper.slideTo(stopIndex);
+ }
+ if (swiper.swipeDirection === "prev") {
+ if (ratio > 1 - params.longSwipesRatio) {
+ swiper.slideTo(stopIndex + increment);
+ } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {
+ swiper.slideTo(rewindLastIndex);
+ } else {
+ swiper.slideTo(stopIndex);
+ }
+ }
+ } else {
+ if (!params.shortSwipes) {
+ swiper.slideTo(swiper.activeIndex);
+ return;
+ }
+ const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);
+ if (!isNavButtonTarget) {
+ if (swiper.swipeDirection === "next") {
+ swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);
+ }
+ if (swiper.swipeDirection === "prev") {
+ swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);
+ }
+ } else if (e.target === swiper.navigation.nextEl) {
+ swiper.slideTo(stopIndex + increment);
+ } else {
+ swiper.slideTo(stopIndex);
+ }
+ }
+}
+function onResize() {
+ const swiper = this;
+ const {
+ params,
+ el
+ } = swiper;
+ if (el && el.offsetWidth === 0) return;
+ if (params.breakpoints) {
+ swiper.setBreakpoint();
+ }
+ const {
+ allowSlideNext,
+ allowSlidePrev,
+ snapGrid
+ } = swiper;
+ const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
+ swiper.allowSlideNext = true;
+ swiper.allowSlidePrev = true;
+ swiper.updateSize();
+ swiper.updateSlides();
+ swiper.updateSlidesClasses();
+ const isVirtualLoop = isVirtual && params.loop;
+ if ((params.slidesPerView === "auto" || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {
+ swiper.slideTo(swiper.slides.length - 1, 0, false, true);
+ } else {
+ if (swiper.params.loop && !isVirtual) {
+ swiper.slideToLoop(swiper.realIndex, 0, false, true);
+ } else {
+ swiper.slideTo(swiper.activeIndex, 0, false, true);
+ }
+ }
+ if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
+ clearTimeout(swiper.autoplay.resizeTimeout);
+ swiper.autoplay.resizeTimeout = setTimeout(() => {
+ if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
+ swiper.autoplay.resume();
+ }
+ }, 500);
+ }
+ swiper.allowSlidePrev = allowSlidePrev;
+ swiper.allowSlideNext = allowSlideNext;
+ if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
+ swiper.checkOverflow();
+ }
+}
+function onClick(e) {
+ const swiper = this;
+ if (!swiper.enabled) return;
+ if (!swiper.allowClick) {
+ if (swiper.params.preventClicks) e.preventDefault();
+ if (swiper.params.preventClicksPropagation && swiper.animating) {
+ e.stopPropagation();
+ e.stopImmediatePropagation();
+ }
+ }
+}
+function onScroll() {
+ const swiper = this;
+ const {
+ wrapperEl,
+ rtlTranslate,
+ enabled
+ } = swiper;
+ if (!enabled) return;
+ swiper.previousTranslate = swiper.translate;
+ if (swiper.isHorizontal()) {
+ swiper.translate = -wrapperEl.scrollLeft;
+ } else {
+ swiper.translate = -wrapperEl.scrollTop;
+ }
+ if (swiper.translate === 0) swiper.translate = 0;
+ swiper.updateActiveIndex();
+ swiper.updateSlidesClasses();
+ let newProgress;
+ const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
+ if (translatesDiff === 0) {
+ newProgress = 0;
+ } else {
+ newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;
+ }
+ if (newProgress !== swiper.progress) {
+ swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);
+ }
+ swiper.emit("setTranslate", swiper.translate, false);
+}
+function onLoad(e) {
+ const swiper = this;
+ processLazyPreloader(swiper, e.target);
+ if (swiper.params.cssMode || swiper.params.slidesPerView !== "auto" && !swiper.params.autoHeight) {
+ return;
+ }
+ swiper.update();
+}
+function onDocumentTouchStart() {
+ const swiper = this;
+ if (swiper.documentTouchHandlerProceeded) return;
+ swiper.documentTouchHandlerProceeded = true;
+ if (swiper.params.touchReleaseOnEdges) {
+ swiper.el.style.touchAction = "auto";
+ }
+}
+var events = (swiper, method) => {
+ const document2 = getDocument();
+ const {
+ params,
+ el,
+ wrapperEl,
+ device
+ } = swiper;
+ const capture = !!params.nested;
+ const domMethod = method === "on" ? "addEventListener" : "removeEventListener";
+ const swiperMethod = method;
+ if (!el || typeof el === "string") return;
+ document2[domMethod]("touchstart", swiper.onDocumentTouchStart, {
+ passive: false,
+ capture
+ });
+ el[domMethod]("touchstart", swiper.onTouchStart, {
+ passive: false
+ });
+ el[domMethod]("pointerdown", swiper.onTouchStart, {
+ passive: false
+ });
+ document2[domMethod]("touchmove", swiper.onTouchMove, {
+ passive: false,
+ capture
+ });
+ document2[domMethod]("pointermove", swiper.onTouchMove, {
+ passive: false,
+ capture
+ });
+ document2[domMethod]("touchend", swiper.onTouchEnd, {
+ passive: true
+ });
+ document2[domMethod]("pointerup", swiper.onTouchEnd, {
+ passive: true
+ });
+ document2[domMethod]("pointercancel", swiper.onTouchEnd, {
+ passive: true
+ });
+ document2[domMethod]("touchcancel", swiper.onTouchEnd, {
+ passive: true
+ });
+ document2[domMethod]("pointerout", swiper.onTouchEnd, {
+ passive: true
+ });
+ document2[domMethod]("pointerleave", swiper.onTouchEnd, {
+ passive: true
+ });
+ document2[domMethod]("contextmenu", swiper.onTouchEnd, {
+ passive: true
+ });
+ if (params.preventClicks || params.preventClicksPropagation) {
+ el[domMethod]("click", swiper.onClick, true);
+ }
+ if (params.cssMode) {
+ wrapperEl[domMethod]("scroll", swiper.onScroll);
+ }
+ if (params.updateOnWindowResize) {
+ swiper[swiperMethod](device.ios || device.android ? "resize orientationchange observerUpdate" : "resize observerUpdate", onResize, true);
+ } else {
+ swiper[swiperMethod]("observerUpdate", onResize, true);
+ }
+ el[domMethod]("load", swiper.onLoad, {
+ capture: true
+ });
+};
+function attachEvents() {
+ const swiper = this;
+ const {
+ params
+ } = swiper;
+ swiper.onTouchStart = onTouchStart.bind(swiper);
+ swiper.onTouchMove = onTouchMove.bind(swiper);
+ swiper.onTouchEnd = onTouchEnd.bind(swiper);
+ swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);
+ if (params.cssMode) {
+ swiper.onScroll = onScroll.bind(swiper);
+ }
+ swiper.onClick = onClick.bind(swiper);
+ swiper.onLoad = onLoad.bind(swiper);
+ events(swiper, "on");
+}
+function detachEvents() {
+ const swiper = this;
+ events(swiper, "off");
+}
+var events$1 = {
+ attachEvents,
+ detachEvents
+};
+var isGridEnabled = (swiper, params) => {
+ return swiper.grid && params.grid && params.grid.rows > 1;
+};
+function setBreakpoint() {
+ const swiper = this;
+ const {
+ realIndex,
+ initialized,
+ params,
+ el
+ } = swiper;
+ const breakpoints2 = params.breakpoints;
+ if (!breakpoints2 || breakpoints2 && Object.keys(breakpoints2).length === 0) return;
+ const document2 = getDocument();
+ const breakpointsBase = params.breakpointsBase === "window" || !params.breakpointsBase ? params.breakpointsBase : "container";
+ const breakpointContainer = ["window", "container"].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document2.querySelector(params.breakpointsBase);
+ const breakpoint = swiper.getBreakpoint(breakpoints2, breakpointsBase, breakpointContainer);
+ if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;
+ const breakpointOnlyParams = breakpoint in breakpoints2 ? breakpoints2[breakpoint] : void 0;
+ const breakpointParams = breakpointOnlyParams || swiper.originalParams;
+ const wasMultiRow = isGridEnabled(swiper, params);
+ const isMultiRow = isGridEnabled(swiper, breakpointParams);
+ const wasGrabCursor = swiper.params.grabCursor;
+ const isGrabCursor = breakpointParams.grabCursor;
+ const wasEnabled = params.enabled;
+ if (wasMultiRow && !isMultiRow) {
+ el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);
+ swiper.emitContainerClasses();
+ } else if (!wasMultiRow && isMultiRow) {
+ el.classList.add(`${params.containerModifierClass}grid`);
+ if (breakpointParams.grid.fill && breakpointParams.grid.fill === "column" || !breakpointParams.grid.fill && params.grid.fill === "column") {
+ el.classList.add(`${params.containerModifierClass}grid-column`);
+ }
+ swiper.emitContainerClasses();
+ }
+ if (wasGrabCursor && !isGrabCursor) {
+ swiper.unsetGrabCursor();
+ } else if (!wasGrabCursor && isGrabCursor) {
+ swiper.setGrabCursor();
+ }
+ ["navigation", "pagination", "scrollbar"].forEach((prop) => {
+ if (typeof breakpointParams[prop] === "undefined") return;
+ const wasModuleEnabled = params[prop] && params[prop].enabled;
+ const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;
+ if (wasModuleEnabled && !isModuleEnabled) {
+ swiper[prop].disable();
+ }
+ if (!wasModuleEnabled && isModuleEnabled) {
+ swiper[prop].enable();
+ }
+ });
+ const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
+ const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
+ const wasLoop = params.loop;
+ if (directionChanged && initialized) {
+ swiper.changeDirection();
+ }
+ extend(swiper.params, breakpointParams);
+ const isEnabled = swiper.params.enabled;
+ const hasLoop = swiper.params.loop;
+ Object.assign(swiper, {
+ allowTouchMove: swiper.params.allowTouchMove,
+ allowSlideNext: swiper.params.allowSlideNext,
+ allowSlidePrev: swiper.params.allowSlidePrev
+ });
+ if (wasEnabled && !isEnabled) {
+ swiper.disable();
+ } else if (!wasEnabled && isEnabled) {
+ swiper.enable();
+ }
+ swiper.currentBreakpoint = breakpoint;
+ swiper.emit("_beforeBreakpoint", breakpointParams);
+ if (initialized) {
+ if (needsReLoop) {
+ swiper.loopDestroy();
+ swiper.loopCreate(realIndex);
+ swiper.updateSlides();
+ } else if (!wasLoop && hasLoop) {
+ swiper.loopCreate(realIndex);
+ swiper.updateSlides();
+ } else if (wasLoop && !hasLoop) {
+ swiper.loopDestroy();
+ }
+ }
+ swiper.emit("breakpoint", breakpointParams);
+}
+function getBreakpoint(breakpoints2, base, containerEl) {
+ if (base === void 0) {
+ base = "window";
+ }
+ if (!breakpoints2 || base === "container" && !containerEl) return void 0;
+ let breakpoint = false;
+ const window2 = getWindow();
+ const currentHeight = base === "window" ? window2.innerHeight : containerEl.clientHeight;
+ const points = Object.keys(breakpoints2).map((point) => {
+ if (typeof point === "string" && point.indexOf("@") === 0) {
+ const minRatio = parseFloat(point.substr(1));
+ const value = currentHeight * minRatio;
+ return {
+ value,
+ point
+ };
+ }
+ return {
+ value: point,
+ point
+ };
+ });
+ points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));
+ for (let i = 0; i < points.length; i += 1) {
+ const {
+ point,
+ value
+ } = points[i];
+ if (base === "window") {
+ if (window2.matchMedia(`(min-width: ${value}px)`).matches) {
+ breakpoint = point;
+ }
+ } else if (value <= containerEl.clientWidth) {
+ breakpoint = point;
+ }
+ }
+ return breakpoint || "max";
+}
+var breakpoints = {
+ setBreakpoint,
+ getBreakpoint
+};
+function prepareClasses(entries, prefix) {
+ const resultClasses = [];
+ entries.forEach((item) => {
+ if (typeof item === "object") {
+ Object.keys(item).forEach((classNames) => {
+ if (item[classNames]) {
+ resultClasses.push(prefix + classNames);
+ }
+ });
+ } else if (typeof item === "string") {
+ resultClasses.push(prefix + item);
+ }
+ });
+ return resultClasses;
+}
+function addClasses() {
+ const swiper = this;
+ const {
+ classNames,
+ params,
+ rtl,
+ el,
+ device
+ } = swiper;
+ const suffixes = prepareClasses(["initialized", params.direction, {
+ "free-mode": swiper.params.freeMode && params.freeMode.enabled
+ }, {
+ "autoheight": params.autoHeight
+ }, {
+ "rtl": rtl
+ }, {
+ "grid": params.grid && params.grid.rows > 1
+ }, {
+ "grid-column": params.grid && params.grid.rows > 1 && params.grid.fill === "column"
+ }, {
+ "android": device.android
+ }, {
+ "ios": device.ios
+ }, {
+ "css-mode": params.cssMode
+ }, {
+ "centered": params.cssMode && params.centeredSlides
+ }, {
+ "watch-progress": params.watchSlidesProgress
+ }], params.containerModifierClass);
+ classNames.push(...suffixes);
+ el.classList.add(...classNames);
+ swiper.emitContainerClasses();
+}
+function removeClasses() {
+ const swiper = this;
+ const {
+ el,
+ classNames
+ } = swiper;
+ if (!el || typeof el === "string") return;
+ el.classList.remove(...classNames);
+ swiper.emitContainerClasses();
+}
+var classes = {
+ addClasses,
+ removeClasses
+};
+function checkOverflow() {
+ const swiper = this;
+ const {
+ isLocked: wasLocked,
+ params
+ } = swiper;
+ const {
+ slidesOffsetBefore
+ } = params;
+ if (slidesOffsetBefore) {
+ const lastSlideIndex = swiper.slides.length - 1;
+ const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;
+ swiper.isLocked = swiper.size > lastSlideRightEdge;
+ } else {
+ swiper.isLocked = swiper.snapGrid.length === 1;
+ }
+ if (params.allowSlideNext === true) {
+ swiper.allowSlideNext = !swiper.isLocked;
+ }
+ if (params.allowSlidePrev === true) {
+ swiper.allowSlidePrev = !swiper.isLocked;
+ }
+ if (wasLocked && wasLocked !== swiper.isLocked) {
+ swiper.isEnd = false;
+ }
+ if (wasLocked !== swiper.isLocked) {
+ swiper.emit(swiper.isLocked ? "lock" : "unlock");
+ }
+}
+var checkOverflow$1 = {
+ checkOverflow
+};
+var defaults = {
+ init: true,
+ direction: "horizontal",
+ oneWayMovement: false,
+ swiperElementNodeName: "SWIPER-CONTAINER",
+ touchEventsTarget: "wrapper",
+ initialSlide: 0,
+ speed: 300,
+ cssMode: false,
+ updateOnWindowResize: true,
+ resizeObserver: true,
+ nested: false,
+ createElements: false,
+ eventsPrefix: "swiper",
+ enabled: true,
+ focusableElements: "input, select, option, textarea, button, video, label",
+ // Overrides
+ width: null,
+ height: null,
+ //
+ preventInteractionOnTransition: false,
+ // ssr
+ userAgent: null,
+ url: null,
+ // To support iOS's swipe-to-go-back gesture (when being used in-app).
+ edgeSwipeDetection: false,
+ edgeSwipeThreshold: 20,
+ // Autoheight
+ autoHeight: false,
+ // Set wrapper width
+ setWrapperSize: false,
+ // Virtual Translate
+ virtualTranslate: false,
+ // Effects
+ effect: "slide",
+ // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
+ // Breakpoints
+ breakpoints: void 0,
+ breakpointsBase: "window",
+ // Slides grid
+ spaceBetween: 0,
+ slidesPerView: 1,
+ slidesPerGroup: 1,
+ slidesPerGroupSkip: 0,
+ slidesPerGroupAuto: false,
+ centeredSlides: false,
+ centeredSlidesBounds: false,
+ slidesOffsetBefore: 0,
+ // in px
+ slidesOffsetAfter: 0,
+ // in px
+ normalizeSlideIndex: true,
+ centerInsufficientSlides: false,
+ // Disable swiper and hide navigation when container not overflow
+ watchOverflow: true,
+ // Round length
+ roundLengths: false,
+ // Touches
+ touchRatio: 1,
+ touchAngle: 45,
+ simulateTouch: true,
+ shortSwipes: true,
+ longSwipes: true,
+ longSwipesRatio: 0.5,
+ longSwipesMs: 300,
+ followFinger: true,
+ allowTouchMove: true,
+ threshold: 5,
+ touchMoveStopPropagation: false,
+ touchStartPreventDefault: true,
+ touchStartForcePreventDefault: false,
+ touchReleaseOnEdges: false,
+ // Unique Navigation Elements
+ uniqueNavElements: true,
+ // Resistance
+ resistance: true,
+ resistanceRatio: 0.85,
+ // Progress
+ watchSlidesProgress: false,
+ // Cursor
+ grabCursor: false,
+ // Clicks
+ preventClicks: true,
+ preventClicksPropagation: true,
+ slideToClickedSlide: false,
+ // loop
+ loop: false,
+ loopAddBlankSlides: true,
+ loopAdditionalSlides: 0,
+ loopPreventsSliding: true,
+ // rewind
+ rewind: false,
+ // Swiping/no swiping
+ allowSlidePrev: true,
+ allowSlideNext: true,
+ swipeHandler: null,
+ // '.swipe-handler',
+ noSwiping: true,
+ noSwipingClass: "swiper-no-swiping",
+ noSwipingSelector: null,
+ // Passive Listeners
+ passiveListeners: true,
+ maxBackfaceHiddenSlides: 10,
+ // NS
+ containerModifierClass: "swiper-",
+ // NEW
+ slideClass: "swiper-slide",
+ slideBlankClass: "swiper-slide-blank",
+ slideActiveClass: "swiper-slide-active",
+ slideVisibleClass: "swiper-slide-visible",
+ slideFullyVisibleClass: "swiper-slide-fully-visible",
+ slideNextClass: "swiper-slide-next",
+ slidePrevClass: "swiper-slide-prev",
+ wrapperClass: "swiper-wrapper",
+ lazyPreloaderClass: "swiper-lazy-preloader",
+ lazyPreloadPrevNext: 0,
+ // Callbacks
+ runCallbacksOnInit: true,
+ // Internals
+ _emitClasses: false
+};
+function moduleExtendParams(params, allModulesParams) {
+ return function extendParams(obj) {
+ if (obj === void 0) {
+ obj = {};
+ }
+ const moduleParamName = Object.keys(obj)[0];
+ const moduleParams = obj[moduleParamName];
+ if (typeof moduleParams !== "object" || moduleParams === null) {
+ extend(allModulesParams, obj);
+ return;
+ }
+ if (params[moduleParamName] === true) {
+ params[moduleParamName] = {
+ enabled: true
+ };
+ }
+ if (moduleParamName === "navigation" && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {
+ params[moduleParamName].auto = true;
+ }
+ if (["pagination", "scrollbar"].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {
+ params[moduleParamName].auto = true;
+ }
+ if (!(moduleParamName in params && "enabled" in moduleParams)) {
+ extend(allModulesParams, obj);
+ return;
+ }
+ if (typeof params[moduleParamName] === "object" && !("enabled" in params[moduleParamName])) {
+ params[moduleParamName].enabled = true;
+ }
+ if (!params[moduleParamName]) params[moduleParamName] = {
+ enabled: false
+ };
+ extend(allModulesParams, obj);
+ };
+}
+var prototypes = {
+ eventsEmitter,
+ update,
+ translate,
+ transition,
+ slide,
+ loop,
+ grabCursor,
+ events: events$1,
+ breakpoints,
+ checkOverflow: checkOverflow$1,
+ classes
+};
+var extendedDefaults = {};
+var Swiper = class _Swiper {
+ constructor() {
+ let el;
+ let params;
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+ if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === "Object") {
+ params = args[0];
+ } else {
+ [el, params] = args;
+ }
+ if (!params) params = {};
+ params = extend({}, params);
+ if (el && !params.el) params.el = el;
+ const document2 = getDocument();
+ if (params.el && typeof params.el === "string" && document2.querySelectorAll(params.el).length > 1) {
+ const swipers = [];
+ document2.querySelectorAll(params.el).forEach((containerEl) => {
+ const newParams = extend({}, params, {
+ el: containerEl
+ });
+ swipers.push(new _Swiper(newParams));
+ });
+ return swipers;
+ }
+ const swiper = this;
+ swiper.__swiper__ = true;
+ swiper.support = getSupport();
+ swiper.device = getDevice({
+ userAgent: params.userAgent
+ });
+ swiper.browser = getBrowser();
+ swiper.eventsListeners = {};
+ swiper.eventsAnyListeners = [];
+ swiper.modules = [...swiper.__modules__];
+ if (params.modules && Array.isArray(params.modules)) {
+ swiper.modules.push(...params.modules);
+ }
+ const allModulesParams = {};
+ swiper.modules.forEach((mod) => {
+ mod({
+ params,
+ swiper,
+ extendParams: moduleExtendParams(params, allModulesParams),
+ on: swiper.on.bind(swiper),
+ once: swiper.once.bind(swiper),
+ off: swiper.off.bind(swiper),
+ emit: swiper.emit.bind(swiper)
+ });
+ });
+ const swiperParams = extend({}, defaults, allModulesParams);
+ swiper.params = extend({}, swiperParams, extendedDefaults, params);
+ swiper.originalParams = extend({}, swiper.params);
+ swiper.passedParams = extend({}, params);
+ if (swiper.params && swiper.params.on) {
+ Object.keys(swiper.params.on).forEach((eventName) => {
+ swiper.on(eventName, swiper.params.on[eventName]);
+ });
+ }
+ if (swiper.params && swiper.params.onAny) {
+ swiper.onAny(swiper.params.onAny);
+ }
+ Object.assign(swiper, {
+ enabled: swiper.params.enabled,
+ el,
+ // Classes
+ classNames: [],
+ // Slides
+ slides: [],
+ slidesGrid: [],
+ snapGrid: [],
+ slidesSizesGrid: [],
+ // isDirection
+ isHorizontal() {
+ return swiper.params.direction === "horizontal";
+ },
+ isVertical() {
+ return swiper.params.direction === "vertical";
+ },
+ // Indexes
+ activeIndex: 0,
+ realIndex: 0,
+ //
+ isBeginning: true,
+ isEnd: false,
+ // Props
+ translate: 0,
+ previousTranslate: 0,
+ progress: 0,
+ velocity: 0,
+ animating: false,
+ cssOverflowAdjustment() {
+ return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;
+ },
+ // Locks
+ allowSlideNext: swiper.params.allowSlideNext,
+ allowSlidePrev: swiper.params.allowSlidePrev,
+ // Touch Events
+ touchEventsData: {
+ isTouched: void 0,
+ isMoved: void 0,
+ allowTouchCallbacks: void 0,
+ touchStartTime: void 0,
+ isScrolling: void 0,
+ currentTranslate: void 0,
+ startTranslate: void 0,
+ allowThresholdMove: void 0,
+ // Form elements to match
+ focusableElements: swiper.params.focusableElements,
+ // Last click time
+ lastClickTime: 0,
+ clickTimeout: void 0,
+ // Velocities
+ velocities: [],
+ allowMomentumBounce: void 0,
+ startMoving: void 0,
+ pointerId: null,
+ touchId: null
+ },
+ // Clicks
+ allowClick: true,
+ // Touches
+ allowTouchMove: swiper.params.allowTouchMove,
+ touches: {
+ startX: 0,
+ startY: 0,
+ currentX: 0,
+ currentY: 0,
+ diff: 0
+ },
+ // Images
+ imagesToLoad: [],
+ imagesLoaded: 0
+ });
+ swiper.emit("_swiper");
+ if (swiper.params.init) {
+ swiper.init();
+ }
+ return swiper;
+ }
+ getDirectionLabel(property) {
+ if (this.isHorizontal()) {
+ return property;
+ }
+ return {
+ "width": "height",
+ "margin-top": "margin-left",
+ "margin-bottom ": "margin-right",
+ "margin-left": "margin-top",
+ "margin-right": "margin-bottom",
+ "padding-left": "padding-top",
+ "padding-right": "padding-bottom",
+ "marginRight": "marginBottom"
+ }[property];
+ }
+ getSlideIndex(slideEl) {
+ const {
+ slidesEl,
+ params
+ } = this;
+ const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);
+ const firstSlideIndex = elementIndex(slides[0]);
+ return elementIndex(slideEl) - firstSlideIndex;
+ }
+ getSlideIndexByData(index) {
+ return this.getSlideIndex(this.slides.find((slideEl) => slideEl.getAttribute("data-swiper-slide-index") * 1 === index));
+ }
+ recalcSlides() {
+ const swiper = this;
+ const {
+ slidesEl,
+ params
+ } = swiper;
+ swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);
+ }
+ enable() {
+ const swiper = this;
+ if (swiper.enabled) return;
+ swiper.enabled = true;
+ if (swiper.params.grabCursor) {
+ swiper.setGrabCursor();
+ }
+ swiper.emit("enable");
+ }
+ disable() {
+ const swiper = this;
+ if (!swiper.enabled) return;
+ swiper.enabled = false;
+ if (swiper.params.grabCursor) {
+ swiper.unsetGrabCursor();
+ }
+ swiper.emit("disable");
+ }
+ setProgress(progress, speed) {
+ const swiper = this;
+ progress = Math.min(Math.max(progress, 0), 1);
+ const min = swiper.minTranslate();
+ const max = swiper.maxTranslate();
+ const current = (max - min) * progress + min;
+ swiper.translateTo(current, typeof speed === "undefined" ? 0 : speed);
+ swiper.updateActiveIndex();
+ swiper.updateSlidesClasses();
+ }
+ emitContainerClasses() {
+ const swiper = this;
+ if (!swiper.params._emitClasses || !swiper.el) return;
+ const cls = swiper.el.className.split(" ").filter((className) => {
+ return className.indexOf("swiper") === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;
+ });
+ swiper.emit("_containerClasses", cls.join(" "));
+ }
+ getSlideClasses(slideEl) {
+ const swiper = this;
+ if (swiper.destroyed) return "";
+ return slideEl.className.split(" ").filter((className) => {
+ return className.indexOf("swiper-slide") === 0 || className.indexOf(swiper.params.slideClass) === 0;
+ }).join(" ");
+ }
+ emitSlidesClasses() {
+ const swiper = this;
+ if (!swiper.params._emitClasses || !swiper.el) return;
+ const updates = [];
+ swiper.slides.forEach((slideEl) => {
+ const classNames = swiper.getSlideClasses(slideEl);
+ updates.push({
+ slideEl,
+ classNames
+ });
+ swiper.emit("_slideClass", slideEl, classNames);
+ });
+ swiper.emit("_slideClasses", updates);
+ }
+ slidesPerViewDynamic(view, exact) {
+ if (view === void 0) {
+ view = "current";
+ }
+ if (exact === void 0) {
+ exact = false;
+ }
+ const swiper = this;
+ const {
+ params,
+ slides,
+ slidesGrid,
+ slidesSizesGrid,
+ size: swiperSize,
+ activeIndex
+ } = swiper;
+ let spv = 1;
+ if (typeof params.slidesPerView === "number") return params.slidesPerView;
+ if (params.centeredSlides) {
+ let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;
+ let breakLoop;
+ for (let i = activeIndex + 1; i < slides.length; i += 1) {
+ if (slides[i] && !breakLoop) {
+ slideSize += Math.ceil(slides[i].swiperSlideSize);
+ spv += 1;
+ if (slideSize > swiperSize) breakLoop = true;
+ }
+ }
+ for (let i = activeIndex - 1; i >= 0; i -= 1) {
+ if (slides[i] && !breakLoop) {
+ slideSize += slides[i].swiperSlideSize;
+ spv += 1;
+ if (slideSize > swiperSize) breakLoop = true;
+ }
+ }
+ } else {
+ if (view === "current") {
+ for (let i = activeIndex + 1; i < slides.length; i += 1) {
+ const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;
+ if (slideInView) {
+ spv += 1;
+ }
+ }
+ } else {
+ for (let i = activeIndex - 1; i >= 0; i -= 1) {
+ const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;
+ if (slideInView) {
+ spv += 1;
+ }
+ }
+ }
+ }
+ return spv;
+ }
+ update() {
+ const swiper = this;
+ if (!swiper || swiper.destroyed) return;
+ const {
+ snapGrid,
+ params
+ } = swiper;
+ if (params.breakpoints) {
+ swiper.setBreakpoint();
+ }
+ [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach((imageEl) => {
+ if (imageEl.complete) {
+ processLazyPreloader(swiper, imageEl);
+ }
+ });
+ swiper.updateSize();
+ swiper.updateSlides();
+ swiper.updateProgress();
+ swiper.updateSlidesClasses();
+ function setTranslate2() {
+ const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
+ const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
+ swiper.setTranslate(newTranslate);
+ swiper.updateActiveIndex();
+ swiper.updateSlidesClasses();
+ }
+ let translated;
+ if (params.freeMode && params.freeMode.enabled && !params.cssMode) {
+ setTranslate2();
+ if (params.autoHeight) {
+ swiper.updateAutoHeight();
+ }
+ } else {
+ if ((params.slidesPerView === "auto" || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {
+ const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;
+ translated = swiper.slideTo(slides.length - 1, 0, false, true);
+ } else {
+ translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
+ }
+ if (!translated) {
+ setTranslate2();
+ }
+ }
+ if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
+ swiper.checkOverflow();
+ }
+ swiper.emit("update");
+ }
+ changeDirection(newDirection, needUpdate) {
+ if (needUpdate === void 0) {
+ needUpdate = true;
+ }
+ const swiper = this;
+ const currentDirection = swiper.params.direction;
+ if (!newDirection) {
+ newDirection = currentDirection === "horizontal" ? "vertical" : "horizontal";
+ }
+ if (newDirection === currentDirection || newDirection !== "horizontal" && newDirection !== "vertical") {
+ return swiper;
+ }
+ swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);
+ swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);
+ swiper.emitContainerClasses();
+ swiper.params.direction = newDirection;
+ swiper.slides.forEach((slideEl) => {
+ if (newDirection === "vertical") {
+ slideEl.style.width = "";
+ } else {
+ slideEl.style.height = "";
+ }
+ });
+ swiper.emit("changeDirection");
+ if (needUpdate) swiper.update();
+ return swiper;
+ }
+ changeLanguageDirection(direction) {
+ const swiper = this;
+ if (swiper.rtl && direction === "rtl" || !swiper.rtl && direction === "ltr") return;
+ swiper.rtl = direction === "rtl";
+ swiper.rtlTranslate = swiper.params.direction === "horizontal" && swiper.rtl;
+ if (swiper.rtl) {
+ swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);
+ swiper.el.dir = "rtl";
+ } else {
+ swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);
+ swiper.el.dir = "ltr";
+ }
+ swiper.update();
+ }
+ mount(element) {
+ const swiper = this;
+ if (swiper.mounted) return true;
+ let el = element || swiper.params.el;
+ if (typeof el === "string") {
+ el = document.querySelector(el);
+ }
+ if (!el) {
+ return false;
+ }
+ el.swiper = swiper;
+ if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {
+ swiper.isElement = true;
+ }
+ const getWrapperSelector = () => {
+ return `.${(swiper.params.wrapperClass || "").trim().split(" ").join(".")}`;
+ };
+ const getWrapper = () => {
+ if (el && el.shadowRoot && el.shadowRoot.querySelector) {
+ const res = el.shadowRoot.querySelector(getWrapperSelector());
+ return res;
+ }
+ return elementChildren(el, getWrapperSelector())[0];
+ };
+ let wrapperEl = getWrapper();
+ if (!wrapperEl && swiper.params.createElements) {
+ wrapperEl = createElement("div", swiper.params.wrapperClass);
+ el.append(wrapperEl);
+ elementChildren(el, `.${swiper.params.slideClass}`).forEach((slideEl) => {
+ wrapperEl.append(slideEl);
+ });
+ }
+ Object.assign(swiper, {
+ el,
+ wrapperEl,
+ slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,
+ hostEl: swiper.isElement ? el.parentNode.host : el,
+ mounted: true,
+ // RTL
+ rtl: el.dir.toLowerCase() === "rtl" || elementStyle(el, "direction") === "rtl",
+ rtlTranslate: swiper.params.direction === "horizontal" && (el.dir.toLowerCase() === "rtl" || elementStyle(el, "direction") === "rtl"),
+ wrongRTL: elementStyle(wrapperEl, "display") === "-webkit-box"
+ });
+ return true;
+ }
+ init(el) {
+ const swiper = this;
+ if (swiper.initialized) return swiper;
+ const mounted = swiper.mount(el);
+ if (mounted === false) return swiper;
+ swiper.emit("beforeInit");
+ if (swiper.params.breakpoints) {
+ swiper.setBreakpoint();
+ }
+ swiper.addClasses();
+ swiper.updateSize();
+ swiper.updateSlides();
+ if (swiper.params.watchOverflow) {
+ swiper.checkOverflow();
+ }
+ if (swiper.params.grabCursor && swiper.enabled) {
+ swiper.setGrabCursor();
+ }
+ if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {
+ swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);
+ } else {
+ swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);
+ }
+ if (swiper.params.loop) {
+ swiper.loopCreate(void 0, true);
+ }
+ swiper.attachEvents();
+ const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')];
+ if (swiper.isElement) {
+ lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]'));
+ }
+ lazyElements.forEach((imageEl) => {
+ if (imageEl.complete) {
+ processLazyPreloader(swiper, imageEl);
+ } else {
+ imageEl.addEventListener("load", (e) => {
+ processLazyPreloader(swiper, e.target);
+ });
+ }
+ });
+ preload(swiper);
+ swiper.initialized = true;
+ preload(swiper);
+ swiper.emit("init");
+ swiper.emit("afterInit");
+ return swiper;
+ }
+ destroy(deleteInstance, cleanStyles) {
+ if (deleteInstance === void 0) {
+ deleteInstance = true;
+ }
+ if (cleanStyles === void 0) {
+ cleanStyles = true;
+ }
+ const swiper = this;
+ const {
+ params,
+ el,
+ wrapperEl,
+ slides
+ } = swiper;
+ if (typeof swiper.params === "undefined" || swiper.destroyed) {
+ return null;
+ }
+ swiper.emit("beforeDestroy");
+ swiper.initialized = false;
+ swiper.detachEvents();
+ if (params.loop) {
+ swiper.loopDestroy();
+ }
+ if (cleanStyles) {
+ swiper.removeClasses();
+ if (el && typeof el !== "string") {
+ el.removeAttribute("style");
+ }
+ if (wrapperEl) {
+ wrapperEl.removeAttribute("style");
+ }
+ if (slides && slides.length) {
+ slides.forEach((slideEl) => {
+ slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);
+ slideEl.removeAttribute("style");
+ slideEl.removeAttribute("data-swiper-slide-index");
+ });
+ }
+ }
+ swiper.emit("destroy");
+ Object.keys(swiper.eventsListeners).forEach((eventName) => {
+ swiper.off(eventName);
+ });
+ if (deleteInstance !== false) {
+ if (swiper.el && typeof swiper.el !== "string") {
+ swiper.el.swiper = null;
+ }
+ deleteProps(swiper);
+ }
+ swiper.destroyed = true;
+ return null;
+ }
+ static extendDefaults(newDefaults) {
+ extend(extendedDefaults, newDefaults);
+ }
+ static get extendedDefaults() {
+ return extendedDefaults;
+ }
+ static get defaults() {
+ return defaults;
+ }
+ static installModule(mod) {
+ if (!_Swiper.prototype.__modules__) _Swiper.prototype.__modules__ = [];
+ const modules = _Swiper.prototype.__modules__;
+ if (typeof mod === "function" && modules.indexOf(mod) < 0) {
+ modules.push(mod);
+ }
+ }
+ static use(module) {
+ if (Array.isArray(module)) {
+ module.forEach((m) => _Swiper.installModule(m));
+ return _Swiper;
+ }
+ _Swiper.installModule(module);
+ return _Swiper;
+ }
+};
+Object.keys(prototypes).forEach((prototypeGroup) => {
+ Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {
+ Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
+ });
+});
+Swiper.use([Resize, Observer]);
+
+// node_modules/swiper/shared/update-swiper.mjs
+var paramsList = [
+ "eventsPrefix",
+ "injectStyles",
+ "injectStylesUrls",
+ "modules",
+ "init",
+ "_direction",
+ "oneWayMovement",
+ "swiperElementNodeName",
+ "touchEventsTarget",
+ "initialSlide",
+ "_speed",
+ "cssMode",
+ "updateOnWindowResize",
+ "resizeObserver",
+ "nested",
+ "focusableElements",
+ "_enabled",
+ "_width",
+ "_height",
+ "preventInteractionOnTransition",
+ "userAgent",
+ "url",
+ "_edgeSwipeDetection",
+ "_edgeSwipeThreshold",
+ "_freeMode",
+ "_autoHeight",
+ "setWrapperSize",
+ "virtualTranslate",
+ "_effect",
+ "breakpoints",
+ "breakpointsBase",
+ "_spaceBetween",
+ "_slidesPerView",
+ "maxBackfaceHiddenSlides",
+ "_grid",
+ "_slidesPerGroup",
+ "_slidesPerGroupSkip",
+ "_slidesPerGroupAuto",
+ "_centeredSlides",
+ "_centeredSlidesBounds",
+ "_slidesOffsetBefore",
+ "_slidesOffsetAfter",
+ "normalizeSlideIndex",
+ "_centerInsufficientSlides",
+ "_watchOverflow",
+ "roundLengths",
+ "touchRatio",
+ "touchAngle",
+ "simulateTouch",
+ "_shortSwipes",
+ "_longSwipes",
+ "longSwipesRatio",
+ "longSwipesMs",
+ "_followFinger",
+ "allowTouchMove",
+ "_threshold",
+ "touchMoveStopPropagation",
+ "touchStartPreventDefault",
+ "touchStartForcePreventDefault",
+ "touchReleaseOnEdges",
+ "uniqueNavElements",
+ "_resistance",
+ "_resistanceRatio",
+ "_watchSlidesProgress",
+ "_grabCursor",
+ "preventClicks",
+ "preventClicksPropagation",
+ "_slideToClickedSlide",
+ "_loop",
+ "loopAdditionalSlides",
+ "loopAddBlankSlides",
+ "loopPreventsSliding",
+ "_rewind",
+ "_allowSlidePrev",
+ "_allowSlideNext",
+ "_swipeHandler",
+ "_noSwiping",
+ "noSwipingClass",
+ "noSwipingSelector",
+ "passiveListeners",
+ "containerModifierClass",
+ "slideClass",
+ "slideActiveClass",
+ "slideVisibleClass",
+ "slideFullyVisibleClass",
+ "slideNextClass",
+ "slidePrevClass",
+ "slideBlankClass",
+ "wrapperClass",
+ "lazyPreloaderClass",
+ "lazyPreloadPrevNext",
+ "runCallbacksOnInit",
+ "observer",
+ "observeParents",
+ "observeSlideChildren",
+ // modules
+ "a11y",
+ "_autoplay",
+ "_controller",
+ "coverflowEffect",
+ "cubeEffect",
+ "fadeEffect",
+ "flipEffect",
+ "creativeEffect",
+ "cardsEffect",
+ "hashNavigation",
+ "history",
+ "keyboard",
+ "mousewheel",
+ "_navigation",
+ "_pagination",
+ "parallax",
+ "_scrollbar",
+ "_thumbs",
+ "virtual",
+ "zoom",
+ "control"
+];
+function isObject(o) {
+ return typeof o === "object" && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === "Object" && !o.__swiper__;
+}
+function extend2(target, src) {
+ const noExtend = ["__proto__", "constructor", "prototype"];
+ Object.keys(src).filter((key) => noExtend.indexOf(key) < 0).forEach((key) => {
+ if (typeof target[key] === "undefined") target[key] = src[key];
+ else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {
+ if (src[key].__swiper__) target[key] = src[key];
+ else extend2(target[key], src[key]);
+ } else {
+ target[key] = src[key];
+ }
+ });
+}
+function needsNavigation(params) {
+ if (params === void 0) {
+ params = {};
+ }
+ return params.navigation && typeof params.navigation.nextEl === "undefined" && typeof params.navigation.prevEl === "undefined";
+}
+function needsPagination(params) {
+ if (params === void 0) {
+ params = {};
+ }
+ return params.pagination && typeof params.pagination.el === "undefined";
+}
+function needsScrollbar(params) {
+ if (params === void 0) {
+ params = {};
+ }
+ return params.scrollbar && typeof params.scrollbar.el === "undefined";
+}
+function uniqueClasses(classNames) {
+ if (classNames === void 0) {
+ classNames = "";
+ }
+ const classes2 = classNames.split(" ").map((c) => c.trim()).filter((c) => !!c);
+ const unique = [];
+ classes2.forEach((c) => {
+ if (unique.indexOf(c) < 0) unique.push(c);
+ });
+ return unique.join(" ");
+}
+function wrapperClass(className) {
+ if (className === void 0) {
+ className = "";
+ }
+ if (!className) return "swiper-wrapper";
+ if (!className.includes("swiper-wrapper")) return `swiper-wrapper ${className}`;
+ return className;
+}
+function updateSwiper(_ref) {
+ let {
+ swiper,
+ slides,
+ passedParams,
+ changedParams,
+ nextEl,
+ prevEl,
+ scrollbarEl,
+ paginationEl
+ } = _ref;
+ const updateParams = changedParams.filter((key) => key !== "children" && key !== "direction" && key !== "wrapperClass");
+ const {
+ params: currentParams,
+ pagination,
+ navigation,
+ scrollbar,
+ virtual,
+ thumbs
+ } = swiper;
+ let needThumbsInit;
+ let needControllerInit;
+ let needPaginationInit;
+ let needScrollbarInit;
+ let needNavigationInit;
+ let loopNeedDestroy;
+ let loopNeedEnable;
+ let loopNeedReloop;
+ if (changedParams.includes("thumbs") && passedParams.thumbs && passedParams.thumbs.swiper && !passedParams.thumbs.swiper.destroyed && currentParams.thumbs && (!currentParams.thumbs.swiper || currentParams.thumbs.swiper.destroyed)) {
+ needThumbsInit = true;
+ }
+ if (changedParams.includes("controller") && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {
+ needControllerInit = true;
+ }
+ if (changedParams.includes("pagination") && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) {
+ needPaginationInit = true;
+ }
+ if (changedParams.includes("scrollbar") && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) {
+ needScrollbarInit = true;
+ }
+ if (changedParams.includes("navigation") && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) {
+ needNavigationInit = true;
+ }
+ const destroyModule = (mod) => {
+ if (!swiper[mod]) return;
+ swiper[mod].destroy();
+ if (mod === "navigation") {
+ if (swiper.isElement) {
+ swiper[mod].prevEl.remove();
+ swiper[mod].nextEl.remove();
+ }
+ currentParams[mod].prevEl = void 0;
+ currentParams[mod].nextEl = void 0;
+ swiper[mod].prevEl = void 0;
+ swiper[mod].nextEl = void 0;
+ } else {
+ if (swiper.isElement) {
+ swiper[mod].el.remove();
+ }
+ currentParams[mod].el = void 0;
+ swiper[mod].el = void 0;
+ }
+ };
+ if (changedParams.includes("loop") && swiper.isElement) {
+ if (currentParams.loop && !passedParams.loop) {
+ loopNeedDestroy = true;
+ } else if (!currentParams.loop && passedParams.loop) {
+ loopNeedEnable = true;
+ } else {
+ loopNeedReloop = true;
+ }
+ }
+ updateParams.forEach((key) => {
+ if (isObject(currentParams[key]) && isObject(passedParams[key])) {
+ Object.assign(currentParams[key], passedParams[key]);
+ if ((key === "navigation" || key === "pagination" || key === "scrollbar") && "enabled" in passedParams[key] && !passedParams[key].enabled) {
+ destroyModule(key);
+ }
+ } else {
+ const newValue = passedParams[key];
+ if ((newValue === true || newValue === false) && (key === "navigation" || key === "pagination" || key === "scrollbar")) {
+ if (newValue === false) {
+ destroyModule(key);
+ }
+ } else {
+ currentParams[key] = passedParams[key];
+ }
+ }
+ });
+ if (updateParams.includes("controller") && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) {
+ swiper.controller.control = currentParams.controller.control;
+ }
+ if (changedParams.includes("children") && slides && virtual && currentParams.virtual.enabled) {
+ virtual.slides = slides;
+ virtual.update(true);
+ } else if (changedParams.includes("virtual") && virtual && currentParams.virtual.enabled) {
+ if (slides) virtual.slides = slides;
+ virtual.update(true);
+ }
+ if (changedParams.includes("children") && slides && currentParams.loop) {
+ loopNeedReloop = true;
+ }
+ if (needThumbsInit) {
+ const initialized = thumbs.init();
+ if (initialized) thumbs.update(true);
+ }
+ if (needControllerInit) {
+ swiper.controller.control = currentParams.controller.control;
+ }
+ if (needPaginationInit) {
+ if (swiper.isElement && (!paginationEl || typeof paginationEl === "string")) {
+ paginationEl = document.createElement("div");
+ paginationEl.classList.add("swiper-pagination");
+ paginationEl.part.add("pagination");
+ swiper.el.appendChild(paginationEl);
+ }
+ if (paginationEl) currentParams.pagination.el = paginationEl;
+ pagination.init();
+ pagination.render();
+ pagination.update();
+ }
+ if (needScrollbarInit) {
+ if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === "string")) {
+ scrollbarEl = document.createElement("div");
+ scrollbarEl.classList.add("swiper-scrollbar");
+ scrollbarEl.part.add("scrollbar");
+ swiper.el.appendChild(scrollbarEl);
+ }
+ if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl;
+ scrollbar.init();
+ scrollbar.updateSize();
+ scrollbar.setTranslate();
+ }
+ if (needNavigationInit) {
+ if (swiper.isElement) {
+ if (!nextEl || typeof nextEl === "string") {
+ nextEl = document.createElement("div");
+ nextEl.classList.add("swiper-button-next");
+ nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg;
+ nextEl.part.add("button-next");
+ swiper.el.appendChild(nextEl);
+ }
+ if (!prevEl || typeof prevEl === "string") {
+ prevEl = document.createElement("div");
+ prevEl.classList.add("swiper-button-prev");
+ prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg;
+ prevEl.part.add("button-prev");
+ swiper.el.appendChild(prevEl);
+ }
+ }
+ if (nextEl) currentParams.navigation.nextEl = nextEl;
+ if (prevEl) currentParams.navigation.prevEl = prevEl;
+ navigation.init();
+ navigation.update();
+ }
+ if (changedParams.includes("allowSlideNext")) {
+ swiper.allowSlideNext = passedParams.allowSlideNext;
+ }
+ if (changedParams.includes("allowSlidePrev")) {
+ swiper.allowSlidePrev = passedParams.allowSlidePrev;
+ }
+ if (changedParams.includes("direction")) {
+ swiper.changeDirection(passedParams.direction, false);
+ }
+ if (loopNeedDestroy || loopNeedReloop) {
+ swiper.loopDestroy();
+ }
+ if (loopNeedEnable || loopNeedReloop) {
+ swiper.loopCreate();
+ }
+ swiper.update();
+}
+
+// node_modules/swiper/shared/update-on-virtual-data.mjs
+function getParams(obj, splitEvents) {
+ if (obj === void 0) {
+ obj = {};
+ }
+ if (splitEvents === void 0) {
+ splitEvents = true;
+ }
+ const params = {
+ on: {}
+ };
+ const events2 = {};
+ const passedParams = {};
+ extend2(params, defaults);
+ params._emitClasses = true;
+ params.init = false;
+ const rest = {};
+ const allowedParams = paramsList.map((key) => key.replace(/_/, ""));
+ const plainObj = Object.assign({}, obj);
+ Object.keys(plainObj).forEach((key) => {
+ if (typeof obj[key] === "undefined") return;
+ if (allowedParams.indexOf(key) >= 0) {
+ if (isObject(obj[key])) {
+ params[key] = {};
+ passedParams[key] = {};
+ extend2(params[key], obj[key]);
+ extend2(passedParams[key], obj[key]);
+ } else {
+ params[key] = obj[key];
+ passedParams[key] = obj[key];
+ }
+ } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === "function") {
+ if (splitEvents) {
+ events2[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];
+ } else {
+ params.on[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];
+ }
+ } else {
+ rest[key] = obj[key];
+ }
+ });
+ ["navigation", "pagination", "scrollbar"].forEach((key) => {
+ if (params[key] === true) params[key] = {};
+ if (params[key] === false) delete params[key];
+ });
+ return {
+ params,
+ passedParams,
+ rest,
+ events: events2
+ };
+}
+function mountSwiper(_ref, swiperParams) {
+ let {
+ el,
+ nextEl,
+ prevEl,
+ paginationEl,
+ scrollbarEl,
+ swiper
+ } = _ref;
+ if (needsNavigation(swiperParams) && nextEl && prevEl) {
+ swiper.params.navigation.nextEl = nextEl;
+ swiper.originalParams.navigation.nextEl = nextEl;
+ swiper.params.navigation.prevEl = prevEl;
+ swiper.originalParams.navigation.prevEl = prevEl;
+ }
+ if (needsPagination(swiperParams) && paginationEl) {
+ swiper.params.pagination.el = paginationEl;
+ swiper.originalParams.pagination.el = paginationEl;
+ }
+ if (needsScrollbar(swiperParams) && scrollbarEl) {
+ swiper.params.scrollbar.el = scrollbarEl;
+ swiper.originalParams.scrollbar.el = scrollbarEl;
+ }
+ swiper.init(el);
+}
+function getChangedParams(swiperParams, oldParams, children, oldChildren, getKey) {
+ const keys = [];
+ if (!oldParams) return keys;
+ const addKey = (key) => {
+ if (keys.indexOf(key) < 0) keys.push(key);
+ };
+ if (children && oldChildren) {
+ const oldChildrenKeys = oldChildren.map(getKey);
+ const childrenKeys = children.map(getKey);
+ if (oldChildrenKeys.join("") !== childrenKeys.join("")) addKey("children");
+ if (oldChildren.length !== children.length) addKey("children");
+ }
+ const watchParams = paramsList.filter((key) => key[0] === "_").map((key) => key.replace(/_/, ""));
+ watchParams.forEach((key) => {
+ if (key in swiperParams && key in oldParams) {
+ if (isObject(swiperParams[key]) && isObject(oldParams[key])) {
+ const newKeys = Object.keys(swiperParams[key]);
+ const oldKeys = Object.keys(oldParams[key]);
+ if (newKeys.length !== oldKeys.length) {
+ addKey(key);
+ } else {
+ newKeys.forEach((newKey) => {
+ if (swiperParams[key][newKey] !== oldParams[key][newKey]) {
+ addKey(key);
+ }
+ });
+ oldKeys.forEach((oldKey) => {
+ if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key);
+ });
+ }
+ } else if (swiperParams[key] !== oldParams[key]) {
+ addKey(key);
+ }
+ }
+ });
+ return keys;
+}
+var updateOnVirtualData = (swiper) => {
+ if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return;
+ swiper.updateSlides();
+ swiper.updateProgress();
+ swiper.updateSlidesClasses();
+ if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) {
+ swiper.parallax.setTranslate();
+ }
+};
+
+// node_modules/swiper/swiper-react.mjs
+function _extends() {
+ _extends = Object.assign ? Object.assign.bind() : function(target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
+ for (var key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key];
+ }
+ }
+ }
+ return target;
+ };
+ return _extends.apply(this, arguments);
+}
+function isChildSwiperSlide(child) {
+ return child.type && child.type.displayName && child.type.displayName.includes("SwiperSlide");
+}
+function processChildren(c) {
+ const slides = [];
+ import_react.default.Children.toArray(c).forEach((child) => {
+ if (isChildSwiperSlide(child)) {
+ slides.push(child);
+ } else if (child.props && child.props.children) {
+ processChildren(child.props.children).forEach((slide2) => slides.push(slide2));
+ }
+ });
+ return slides;
+}
+function getChildren(c) {
+ const slides = [];
+ const slots = {
+ "container-start": [],
+ "container-end": [],
+ "wrapper-start": [],
+ "wrapper-end": []
+ };
+ import_react.default.Children.toArray(c).forEach((child) => {
+ if (isChildSwiperSlide(child)) {
+ slides.push(child);
+ } else if (child.props && child.props.slot && slots[child.props.slot]) {
+ slots[child.props.slot].push(child);
+ } else if (child.props && child.props.children) {
+ const foundSlides = processChildren(child.props.children);
+ if (foundSlides.length > 0) {
+ foundSlides.forEach((slide2) => slides.push(slide2));
+ } else {
+ slots["container-end"].push(child);
+ }
+ } else {
+ slots["container-end"].push(child);
+ }
+ });
+ return {
+ slides,
+ slots
+ };
+}
+function renderVirtual(swiper, slides, virtualData) {
+ if (!virtualData) return null;
+ const getSlideIndex = (index) => {
+ let slideIndex = index;
+ if (index < 0) {
+ slideIndex = slides.length + index;
+ } else if (slideIndex >= slides.length) {
+ slideIndex = slideIndex - slides.length;
+ }
+ return slideIndex;
+ };
+ const style = swiper.isHorizontal() ? {
+ [swiper.rtlTranslate ? "right" : "left"]: `${virtualData.offset}px`
+ } : {
+ top: `${virtualData.offset}px`
+ };
+ const {
+ from,
+ to
+ } = virtualData;
+ const loopFrom = swiper.params.loop ? -slides.length : 0;
+ const loopTo = swiper.params.loop ? slides.length * 2 : slides.length;
+ const slidesToRender = [];
+ for (let i = loopFrom; i < loopTo; i += 1) {
+ if (i >= from && i <= to) {
+ slidesToRender.push(slides[getSlideIndex(i)]);
+ }
+ }
+ return slidesToRender.map((child, index) => {
+ return import_react.default.cloneElement(child, {
+ swiper,
+ style,
+ key: child.props.virtualIndex || child.key || `slide-${index}`
+ });
+ });
+}
+function useIsomorphicLayoutEffect(callback, deps) {
+ if (typeof window === "undefined") return (0, import_react.useEffect)(callback, deps);
+ return (0, import_react.useLayoutEffect)(callback, deps);
+}
+var SwiperSlideContext = (0, import_react.createContext)(null);
+var useSwiperSlide = () => {
+ return (0, import_react.useContext)(SwiperSlideContext);
+};
+var SwiperContext = (0, import_react.createContext)(null);
+var useSwiper = () => {
+ return (0, import_react.useContext)(SwiperContext);
+};
+var Swiper2 = (0, import_react.forwardRef)(function(_temp, externalElRef) {
+ let {
+ className,
+ tag: Tag = "div",
+ wrapperTag: WrapperTag = "div",
+ children,
+ onSwiper,
+ ...rest
+ } = _temp === void 0 ? {} : _temp;
+ let eventsAssigned = false;
+ const [containerClasses, setContainerClasses] = (0, import_react.useState)("swiper");
+ const [virtualData, setVirtualData] = (0, import_react.useState)(null);
+ const [breakpointChanged, setBreakpointChanged] = (0, import_react.useState)(false);
+ const initializedRef = (0, import_react.useRef)(false);
+ const swiperElRef = (0, import_react.useRef)(null);
+ const swiperRef = (0, import_react.useRef)(null);
+ const oldPassedParamsRef = (0, import_react.useRef)(null);
+ const oldSlides = (0, import_react.useRef)(null);
+ const nextElRef = (0, import_react.useRef)(null);
+ const prevElRef = (0, import_react.useRef)(null);
+ const paginationElRef = (0, import_react.useRef)(null);
+ const scrollbarElRef = (0, import_react.useRef)(null);
+ const {
+ params: swiperParams,
+ passedParams,
+ rest: restProps,
+ events: events2
+ } = getParams(rest);
+ const {
+ slides,
+ slots
+ } = getChildren(children);
+ const onBeforeBreakpoint = () => {
+ setBreakpointChanged(!breakpointChanged);
+ };
+ Object.assign(swiperParams.on, {
+ _containerClasses(swiper, classes2) {
+ setContainerClasses(classes2);
+ }
+ });
+ const initSwiper = () => {
+ Object.assign(swiperParams.on, events2);
+ eventsAssigned = true;
+ const passParams = {
+ ...swiperParams
+ };
+ delete passParams.wrapperClass;
+ swiperRef.current = new Swiper(passParams);
+ if (swiperRef.current.virtual && swiperRef.current.params.virtual.enabled) {
+ swiperRef.current.virtual.slides = slides;
+ const extendWith = {
+ cache: false,
+ slides,
+ renderExternal: setVirtualData,
+ renderExternalUpdate: false
+ };
+ extend2(swiperRef.current.params.virtual, extendWith);
+ extend2(swiperRef.current.originalParams.virtual, extendWith);
+ }
+ };
+ if (!swiperElRef.current) {
+ initSwiper();
+ }
+ if (swiperRef.current) {
+ swiperRef.current.on("_beforeBreakpoint", onBeforeBreakpoint);
+ }
+ const attachEvents2 = () => {
+ if (eventsAssigned || !events2 || !swiperRef.current) return;
+ Object.keys(events2).forEach((eventName) => {
+ swiperRef.current.on(eventName, events2[eventName]);
+ });
+ };
+ const detachEvents2 = () => {
+ if (!events2 || !swiperRef.current) return;
+ Object.keys(events2).forEach((eventName) => {
+ swiperRef.current.off(eventName, events2[eventName]);
+ });
+ };
+ (0, import_react.useEffect)(() => {
+ return () => {
+ if (swiperRef.current) swiperRef.current.off("_beforeBreakpoint", onBeforeBreakpoint);
+ };
+ });
+ (0, import_react.useEffect)(() => {
+ if (!initializedRef.current && swiperRef.current) {
+ swiperRef.current.emitSlidesClasses();
+ initializedRef.current = true;
+ }
+ });
+ useIsomorphicLayoutEffect(() => {
+ if (externalElRef) {
+ externalElRef.current = swiperElRef.current;
+ }
+ if (!swiperElRef.current) return;
+ if (swiperRef.current.destroyed) {
+ initSwiper();
+ }
+ mountSwiper({
+ el: swiperElRef.current,
+ nextEl: nextElRef.current,
+ prevEl: prevElRef.current,
+ paginationEl: paginationElRef.current,
+ scrollbarEl: scrollbarElRef.current,
+ swiper: swiperRef.current
+ }, swiperParams);
+ if (onSwiper && !swiperRef.current.destroyed) onSwiper(swiperRef.current);
+ return () => {
+ if (swiperRef.current && !swiperRef.current.destroyed) {
+ swiperRef.current.destroy(true, false);
+ }
+ };
+ }, []);
+ useIsomorphicLayoutEffect(() => {
+ attachEvents2();
+ const changedParams = getChangedParams(passedParams, oldPassedParamsRef.current, slides, oldSlides.current, (c) => c.key);
+ oldPassedParamsRef.current = passedParams;
+ oldSlides.current = slides;
+ if (changedParams.length && swiperRef.current && !swiperRef.current.destroyed) {
+ updateSwiper({
+ swiper: swiperRef.current,
+ slides,
+ passedParams,
+ changedParams,
+ nextEl: nextElRef.current,
+ prevEl: prevElRef.current,
+ scrollbarEl: scrollbarElRef.current,
+ paginationEl: paginationElRef.current
+ });
+ }
+ return () => {
+ detachEvents2();
+ };
+ });
+ useIsomorphicLayoutEffect(() => {
+ updateOnVirtualData(swiperRef.current);
+ }, [virtualData]);
+ function renderSlides() {
+ if (swiperParams.virtual) {
+ return renderVirtual(swiperRef.current, slides, virtualData);
+ }
+ return slides.map((child, index) => {
+ return import_react.default.cloneElement(child, {
+ swiper: swiperRef.current,
+ swiperSlideIndex: index
+ });
+ });
+ }
+ return import_react.default.createElement(Tag, _extends({
+ ref: swiperElRef,
+ className: uniqueClasses(`${containerClasses}${className ? ` ${className}` : ""}`)
+ }, restProps), import_react.default.createElement(SwiperContext.Provider, {
+ value: swiperRef.current
+ }, slots["container-start"], import_react.default.createElement(WrapperTag, {
+ className: wrapperClass(swiperParams.wrapperClass)
+ }, slots["wrapper-start"], renderSlides(), slots["wrapper-end"]), needsNavigation(swiperParams) && import_react.default.createElement(import_react.default.Fragment, null, import_react.default.createElement("div", {
+ ref: prevElRef,
+ className: "swiper-button-prev"
+ }), import_react.default.createElement("div", {
+ ref: nextElRef,
+ className: "swiper-button-next"
+ })), needsScrollbar(swiperParams) && import_react.default.createElement("div", {
+ ref: scrollbarElRef,
+ className: "swiper-scrollbar"
+ }), needsPagination(swiperParams) && import_react.default.createElement("div", {
+ ref: paginationElRef,
+ className: "swiper-pagination"
+ }), slots["container-end"]));
+});
+Swiper2.displayName = "Swiper";
+var SwiperSlide = (0, import_react.forwardRef)(function(_temp, externalRef) {
+ let {
+ tag: Tag = "div",
+ children,
+ className = "",
+ swiper,
+ zoom,
+ lazy,
+ virtualIndex,
+ swiperSlideIndex,
+ ...rest
+ } = _temp === void 0 ? {} : _temp;
+ const slideElRef = (0, import_react.useRef)(null);
+ const [slideClasses, setSlideClasses] = (0, import_react.useState)("swiper-slide");
+ const [lazyLoaded, setLazyLoaded] = (0, import_react.useState)(false);
+ function updateClasses(_s, el, classNames) {
+ if (el === slideElRef.current) {
+ setSlideClasses(classNames);
+ }
+ }
+ useIsomorphicLayoutEffect(() => {
+ if (typeof swiperSlideIndex !== "undefined") {
+ slideElRef.current.swiperSlideIndex = swiperSlideIndex;
+ }
+ if (externalRef) {
+ externalRef.current = slideElRef.current;
+ }
+ if (!slideElRef.current || !swiper) {
+ return;
+ }
+ if (swiper.destroyed) {
+ if (slideClasses !== "swiper-slide") {
+ setSlideClasses("swiper-slide");
+ }
+ return;
+ }
+ swiper.on("_slideClass", updateClasses);
+ return () => {
+ if (!swiper) return;
+ swiper.off("_slideClass", updateClasses);
+ };
+ });
+ useIsomorphicLayoutEffect(() => {
+ if (swiper && slideElRef.current && !swiper.destroyed) {
+ setSlideClasses(swiper.getSlideClasses(slideElRef.current));
+ }
+ }, [swiper]);
+ const slideData = {
+ isActive: slideClasses.indexOf("swiper-slide-active") >= 0,
+ isVisible: slideClasses.indexOf("swiper-slide-visible") >= 0,
+ isPrev: slideClasses.indexOf("swiper-slide-prev") >= 0,
+ isNext: slideClasses.indexOf("swiper-slide-next") >= 0
+ };
+ const renderChildren = () => {
+ return typeof children === "function" ? children(slideData) : children;
+ };
+ const onLoad2 = () => {
+ setLazyLoaded(true);
+ };
+ return import_react.default.createElement(Tag, _extends({
+ ref: slideElRef,
+ className: uniqueClasses(`${slideClasses}${className ? ` ${className}` : ""}`),
+ "data-swiper-slide-index": virtualIndex,
+ onLoad: onLoad2
+ }, rest), zoom && import_react.default.createElement(SwiperSlideContext.Provider, {
+ value: slideData
+ }, import_react.default.createElement("div", {
+ className: "swiper-zoom-container",
+ "data-swiper-zoom": typeof zoom === "number" ? zoom : void 0
+ }, renderChildren(), lazy && !lazyLoaded && import_react.default.createElement("div", {
+ className: "swiper-lazy-preloader"
+ }))), !zoom && import_react.default.createElement(SwiperSlideContext.Provider, {
+ value: slideData
+ }, renderChildren(), lazy && !lazyLoaded && import_react.default.createElement("div", {
+ className: "swiper-lazy-preloader"
+ })));
+});
+SwiperSlide.displayName = "SwiperSlide";
+export {
+ Swiper2 as Swiper,
+ SwiperSlide,
+ useSwiper,
+ useSwiperSlide
+};
+//# sourceMappingURL=swiper_react.js.map
diff --git a/.vite/deps/swiper_react.js.map b/.vite/deps/swiper_react.js.map
new file mode 100644
index 0000000..ae5f6d9
--- /dev/null
+++ b/.vite/deps/swiper_react.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/swiper/swiper-react.mjs", "../../node_modules/swiper/shared/swiper-core.mjs", "../../node_modules/swiper/shared/update-swiper.mjs", "../../node_modules/swiper/shared/update-on-virtual-data.mjs"],
+ "sourcesContent": ["/**\n * Swiper React 11.2.6\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2025 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: March 19, 2025\n */\n\nimport React, { useEffect, useLayoutEffect, useContext, createContext, forwardRef, useState, useRef } from 'react';\nimport { S as Swiper$1 } from './shared/swiper-core.mjs';\nimport { g as getParams, m as mountSwiper, a as getChangedParams, u as updateOnVirtualData } from './shared/update-on-virtual-data.mjs';\nimport { d as uniqueClasses, w as wrapperClass, n as needsNavigation, b as needsScrollbar, a as needsPagination, e as extend, u as updateSwiper } from './shared/update-swiper.mjs';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nfunction isChildSwiperSlide(child) {\n return child.type && child.type.displayName && child.type.displayName.includes('SwiperSlide');\n}\nfunction processChildren(c) {\n const slides = [];\n React.Children.toArray(c).forEach(child => {\n if (isChildSwiperSlide(child)) {\n slides.push(child);\n } else if (child.props && child.props.children) {\n processChildren(child.props.children).forEach(slide => slides.push(slide));\n }\n });\n return slides;\n}\nfunction getChildren(c) {\n const slides = [];\n const slots = {\n 'container-start': [],\n 'container-end': [],\n 'wrapper-start': [],\n 'wrapper-end': []\n };\n React.Children.toArray(c).forEach(child => {\n if (isChildSwiperSlide(child)) {\n slides.push(child);\n } else if (child.props && child.props.slot && slots[child.props.slot]) {\n slots[child.props.slot].push(child);\n } else if (child.props && child.props.children) {\n const foundSlides = processChildren(child.props.children);\n if (foundSlides.length > 0) {\n foundSlides.forEach(slide => slides.push(slide));\n } else {\n slots['container-end'].push(child);\n }\n } else {\n slots['container-end'].push(child);\n }\n });\n return {\n slides,\n slots\n };\n}\n\nfunction renderVirtual(swiper, slides, virtualData) {\n if (!virtualData) return null;\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n const style = swiper.isHorizontal() ? {\n [swiper.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`\n } : {\n top: `${virtualData.offset}px`\n };\n const {\n from,\n to\n } = virtualData;\n const loopFrom = swiper.params.loop ? -slides.length : 0;\n const loopTo = swiper.params.loop ? slides.length * 2 : slides.length;\n const slidesToRender = [];\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n slidesToRender.push(slides[getSlideIndex(i)]);\n }\n }\n return slidesToRender.map((child, index) => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper,\n style,\n key: child.props.virtualIndex || child.key || `slide-${index}`\n });\n });\n}\n\nfunction useIsomorphicLayoutEffect(callback, deps) {\n // eslint-disable-next-line\n if (typeof window === 'undefined') return useEffect(callback, deps);\n return useLayoutEffect(callback, deps);\n}\n\nconst SwiperSlideContext = /*#__PURE__*/createContext(null);\nconst useSwiperSlide = () => {\n return useContext(SwiperSlideContext);\n};\nconst SwiperContext = /*#__PURE__*/createContext(null);\nconst useSwiper = () => {\n return useContext(SwiperContext);\n};\n\nconst Swiper = /*#__PURE__*/forwardRef(function (_temp, externalElRef) {\n let {\n className,\n tag: Tag = 'div',\n wrapperTag: WrapperTag = 'div',\n children,\n onSwiper,\n ...rest\n } = _temp === void 0 ? {} : _temp;\n let eventsAssigned = false;\n const [containerClasses, setContainerClasses] = useState('swiper');\n const [virtualData, setVirtualData] = useState(null);\n const [breakpointChanged, setBreakpointChanged] = useState(false);\n const initializedRef = useRef(false);\n const swiperElRef = useRef(null);\n const swiperRef = useRef(null);\n const oldPassedParamsRef = useRef(null);\n const oldSlides = useRef(null);\n const nextElRef = useRef(null);\n const prevElRef = useRef(null);\n const paginationElRef = useRef(null);\n const scrollbarElRef = useRef(null);\n const {\n params: swiperParams,\n passedParams,\n rest: restProps,\n events\n } = getParams(rest);\n const {\n slides,\n slots\n } = getChildren(children);\n const onBeforeBreakpoint = () => {\n setBreakpointChanged(!breakpointChanged);\n };\n Object.assign(swiperParams.on, {\n _containerClasses(swiper, classes) {\n setContainerClasses(classes);\n }\n });\n const initSwiper = () => {\n // init swiper\n Object.assign(swiperParams.on, events);\n eventsAssigned = true;\n const passParams = {\n ...swiperParams\n };\n delete passParams.wrapperClass;\n swiperRef.current = new Swiper$1(passParams);\n if (swiperRef.current.virtual && swiperRef.current.params.virtual.enabled) {\n swiperRef.current.virtual.slides = slides;\n const extendWith = {\n cache: false,\n slides,\n renderExternal: setVirtualData,\n renderExternalUpdate: false\n };\n extend(swiperRef.current.params.virtual, extendWith);\n extend(swiperRef.current.originalParams.virtual, extendWith);\n }\n };\n if (!swiperElRef.current) {\n initSwiper();\n }\n\n // Listen for breakpoints change\n if (swiperRef.current) {\n swiperRef.current.on('_beforeBreakpoint', onBeforeBreakpoint);\n }\n const attachEvents = () => {\n if (eventsAssigned || !events || !swiperRef.current) return;\n Object.keys(events).forEach(eventName => {\n swiperRef.current.on(eventName, events[eventName]);\n });\n };\n const detachEvents = () => {\n if (!events || !swiperRef.current) return;\n Object.keys(events).forEach(eventName => {\n swiperRef.current.off(eventName, events[eventName]);\n });\n };\n useEffect(() => {\n return () => {\n if (swiperRef.current) swiperRef.current.off('_beforeBreakpoint', onBeforeBreakpoint);\n };\n });\n\n // set initialized flag\n useEffect(() => {\n if (!initializedRef.current && swiperRef.current) {\n swiperRef.current.emitSlidesClasses();\n initializedRef.current = true;\n }\n });\n\n // mount swiper\n useIsomorphicLayoutEffect(() => {\n if (externalElRef) {\n externalElRef.current = swiperElRef.current;\n }\n if (!swiperElRef.current) return;\n if (swiperRef.current.destroyed) {\n initSwiper();\n }\n mountSwiper({\n el: swiperElRef.current,\n nextEl: nextElRef.current,\n prevEl: prevElRef.current,\n paginationEl: paginationElRef.current,\n scrollbarEl: scrollbarElRef.current,\n swiper: swiperRef.current\n }, swiperParams);\n if (onSwiper && !swiperRef.current.destroyed) onSwiper(swiperRef.current);\n // eslint-disable-next-line\n return () => {\n if (swiperRef.current && !swiperRef.current.destroyed) {\n swiperRef.current.destroy(true, false);\n }\n };\n }, []);\n\n // watch for params change\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n const changedParams = getChangedParams(passedParams, oldPassedParamsRef.current, slides, oldSlides.current, c => c.key);\n oldPassedParamsRef.current = passedParams;\n oldSlides.current = slides;\n if (changedParams.length && swiperRef.current && !swiperRef.current.destroyed) {\n updateSwiper({\n swiper: swiperRef.current,\n slides,\n passedParams,\n changedParams,\n nextEl: nextElRef.current,\n prevEl: prevElRef.current,\n scrollbarEl: scrollbarElRef.current,\n paginationEl: paginationElRef.current\n });\n }\n return () => {\n detachEvents();\n };\n });\n\n // update on virtual update\n useIsomorphicLayoutEffect(() => {\n updateOnVirtualData(swiperRef.current);\n }, [virtualData]);\n\n // bypass swiper instance to slides\n function renderSlides() {\n if (swiperParams.virtual) {\n return renderVirtual(swiperRef.current, slides, virtualData);\n }\n return slides.map((child, index) => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper: swiperRef.current,\n swiperSlideIndex: index\n });\n });\n }\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: swiperElRef,\n className: uniqueClasses(`${containerClasses}${className ? ` ${className}` : ''}`)\n }, restProps), /*#__PURE__*/React.createElement(SwiperContext.Provider, {\n value: swiperRef.current\n }, slots['container-start'], /*#__PURE__*/React.createElement(WrapperTag, {\n className: wrapperClass(swiperParams.wrapperClass)\n }, slots['wrapper-start'], renderSlides(), slots['wrapper-end']), needsNavigation(swiperParams) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n ref: prevElRef,\n className: \"swiper-button-prev\"\n }), /*#__PURE__*/React.createElement(\"div\", {\n ref: nextElRef,\n className: \"swiper-button-next\"\n })), needsScrollbar(swiperParams) && /*#__PURE__*/React.createElement(\"div\", {\n ref: scrollbarElRef,\n className: \"swiper-scrollbar\"\n }), needsPagination(swiperParams) && /*#__PURE__*/React.createElement(\"div\", {\n ref: paginationElRef,\n className: \"swiper-pagination\"\n }), slots['container-end']));\n});\nSwiper.displayName = 'Swiper';\n\nconst SwiperSlide = /*#__PURE__*/forwardRef(function (_temp, externalRef) {\n let {\n tag: Tag = 'div',\n children,\n className = '',\n swiper,\n zoom,\n lazy,\n virtualIndex,\n swiperSlideIndex,\n ...rest\n } = _temp === void 0 ? {} : _temp;\n const slideElRef = useRef(null);\n const [slideClasses, setSlideClasses] = useState('swiper-slide');\n const [lazyLoaded, setLazyLoaded] = useState(false);\n function updateClasses(_s, el, classNames) {\n if (el === slideElRef.current) {\n setSlideClasses(classNames);\n }\n }\n useIsomorphicLayoutEffect(() => {\n if (typeof swiperSlideIndex !== 'undefined') {\n slideElRef.current.swiperSlideIndex = swiperSlideIndex;\n }\n if (externalRef) {\n externalRef.current = slideElRef.current;\n }\n if (!slideElRef.current || !swiper) {\n return;\n }\n if (swiper.destroyed) {\n if (slideClasses !== 'swiper-slide') {\n setSlideClasses('swiper-slide');\n }\n return;\n }\n swiper.on('_slideClass', updateClasses);\n // eslint-disable-next-line\n return () => {\n if (!swiper) return;\n swiper.off('_slideClass', updateClasses);\n };\n });\n useIsomorphicLayoutEffect(() => {\n if (swiper && slideElRef.current && !swiper.destroyed) {\n setSlideClasses(swiper.getSlideClasses(slideElRef.current));\n }\n }, [swiper]);\n const slideData = {\n isActive: slideClasses.indexOf('swiper-slide-active') >= 0,\n isVisible: slideClasses.indexOf('swiper-slide-visible') >= 0,\n isPrev: slideClasses.indexOf('swiper-slide-prev') >= 0,\n isNext: slideClasses.indexOf('swiper-slide-next') >= 0\n };\n const renderChildren = () => {\n return typeof children === 'function' ? children(slideData) : children;\n };\n const onLoad = () => {\n setLazyLoaded(true);\n };\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: slideElRef,\n className: uniqueClasses(`${slideClasses}${className ? ` ${className}` : ''}`),\n \"data-swiper-slide-index\": virtualIndex,\n onLoad: onLoad\n }, rest), zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, {\n value: slideData\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-zoom-container\",\n \"data-swiper-zoom\": typeof zoom === 'number' ? zoom : undefined\n }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-lazy-preloader\"\n }))), !zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, {\n value: slideData\n }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-lazy-preloader\"\n })));\n});\nSwiperSlide.displayName = 'SwiperSlide';\n\nexport { Swiper, SwiperSlide, useSwiper, useSwiperSlide };\n", "import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, p as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, q as elementNextAll, r as elementPrevAll, j as getTranslate, t as animateCSSModeScroll, n as nextTick, u as showWarning, c as createElement, v as elementIsChildOf, d as now, w as extend, h as elementIndex, x as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n const device = getDevice();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n const isSafariBrowser = isSafari();\n const need3dFix = isSafariBrowser || isWebView && device.ios;\n return {\n isSafari: needPerspectiveFix || isSafariBrowser,\n needPerspectiveFix,\n need3dFix,\n isWebView\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[swiper.getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);\n if (allSlidesSize + offsetSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n swiper.emit('slidesUpdated');\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n }\n toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.find(slideEl => slideEl.column === activeIndex);\n nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1);\n prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1);\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n if (!gridEnabled) {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n }\n }\n slides.forEach(slideEl => {\n toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n });\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex);\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n swiper.animating = false;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // initial virtual\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const isInitialVirtual = isVirtual && initial;\n // Update Index\n if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n const browser = getBrowser();\n const isSafari = browser.isSafari;\n if (isVirtual && !initial && isSafari && swiper.isElement) {\n swiper.virtual.update(false, false, slideIndex);\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const {\n centeredSlides\n } = swiper.params;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (centeredSlides) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n needLoopFix = false;\n }\n if (needLoopFix) {\n const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n const isFreeMode = params.freeMode && params.freeMode.enabled;\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && (params.cssMode || isFreeMode)) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n if (swiper.destroyed) return;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex, initial) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const initSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = amountOfSlides => {\n for (let i = 0; i < amountOfSlides; i += 1) {\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else {\n initSlides();\n }\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next',\n initial\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n initial,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n const {\n centeredSlides,\n initialSlide\n } = params;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n let slidesPerView = params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) {\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n }\n loopedSlides += params.loopAdditionalSlides;\n swiper.loopedSlides = loopedSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides || swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled or not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n } else if (gridEnabled && params.grid.fill === 'row') {\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n }\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const isInitialOverflow = initial && cols - initialSlide < slidesPerView && !centeredSlides;\n let activeIndex = isInitialOverflow ? initialSlide : swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass)));\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else {\n prependSlidesIndexes.push(cols - index - 1);\n }\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n if (isInitialOverflow) {\n slidesAppended = Math.max(slidesAppended, slidesPerView - cols + initialSlide + 1);\n }\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n slides.forEach((slide, slideIndex) => {\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n } else {\n appendSlidesIndexes.push(index);\n }\n }\n }\n swiper.__preventObserver__ = true;\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n if (swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) {\n if (appendSlidesIndexes.includes(activeSlideIndex)) {\n appendSlidesIndexes.splice(appendSlidesIndexes.indexOf(activeSlideIndex), 1);\n }\n if (prependSlidesIndexes.includes(activeSlideIndex)) {\n prependSlidesIndexes.splice(prependSlidesIndexes.indexOf(activeSlideIndex), 1);\n }\n }\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n swiper.slides.forEach((slide, slideIndex) => {\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || !slidesEl || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const {\n params\n } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else {\n targetTouch = e;\n }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (rtl && (pageX > touches.startX && -swiper.translate <= swiper.maxTranslate() || pageX < touches.startX && -swiper.translate >= swiper.minTranslate())) {\n return;\n } else if (!rtl && (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate())) {\n return;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {\n document.activeElement.blur();\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true,\n detail: {\n bySwiperTouchMove: true\n }\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n new Date().getTime();\n if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nfunction onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n if (!el || typeof el === 'string') return;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n const document = getDocument();\n\n // Get breakpoint for window/container width and update parameters\n const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container';\n const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase);\n const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasGrabCursor = swiper.params.grabCursor;\n const isGrabCursor = breakpointParams.grabCursor;\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n if (wasGrabCursor && !isGrabCursor) {\n swiper.unsetGrabCursor();\n } else if (!wasGrabCursor && isGrabCursor) {\n swiper.setGrabCursor();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n if (!el || typeof el === 'string') return;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n swiperElementNodeName: 'SWIPER-CONTAINER',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index));\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += Math.ceil(slides[i].swiperSlideSize);\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate(undefined, true);\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n if (el && typeof el !== 'string') {\n el.removeAttribute('style');\n }\n if (wrapperEl) {\n wrapperEl.removeAttribute('style');\n }\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.swiper = null;\n }\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n", "/* underscore in name -> watch for changes */\nconst paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'swiperElementNodeName', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopAdditionalSlides', 'loopAddBlankSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideFullyVisibleClass', 'slideNextClass', 'slidePrevClass', 'slideBlankClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren',\n// modules\n'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control'];\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__;\n}\nfunction extend(target, src) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]);\n } else {\n target[key] = src[key];\n }\n });\n}\nfunction needsNavigation(params) {\n if (params === void 0) {\n params = {};\n }\n return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined';\n}\nfunction needsPagination(params) {\n if (params === void 0) {\n params = {};\n }\n return params.pagination && typeof params.pagination.el === 'undefined';\n}\nfunction needsScrollbar(params) {\n if (params === void 0) {\n params = {};\n }\n return params.scrollbar && typeof params.scrollbar.el === 'undefined';\n}\nfunction uniqueClasses(classNames) {\n if (classNames === void 0) {\n classNames = '';\n }\n const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c);\n const unique = [];\n classes.forEach(c => {\n if (unique.indexOf(c) < 0) unique.push(c);\n });\n return unique.join(' ');\n}\nfunction attrToProp(attrName) {\n if (attrName === void 0) {\n attrName = '';\n }\n return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', ''));\n}\nfunction wrapperClass(className) {\n if (className === void 0) {\n className = '';\n }\n if (!className) return 'swiper-wrapper';\n if (!className.includes('swiper-wrapper')) return `swiper-wrapper ${className}`;\n return className;\n}\n\nfunction updateSwiper(_ref) {\n let {\n swiper,\n slides,\n passedParams,\n changedParams,\n nextEl,\n prevEl,\n scrollbarEl,\n paginationEl\n } = _ref;\n const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass');\n const {\n params: currentParams,\n pagination,\n navigation,\n scrollbar,\n virtual,\n thumbs\n } = swiper;\n let needThumbsInit;\n let needControllerInit;\n let needPaginationInit;\n let needScrollbarInit;\n let needNavigationInit;\n let loopNeedDestroy;\n let loopNeedEnable;\n let loopNeedReloop;\n if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && !passedParams.thumbs.swiper.destroyed && currentParams.thumbs && (!currentParams.thumbs.swiper || currentParams.thumbs.swiper.destroyed)) {\n needThumbsInit = true;\n }\n if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {\n needControllerInit = true;\n }\n if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) {\n needPaginationInit = true;\n }\n if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) {\n needScrollbarInit = true;\n }\n if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) {\n needNavigationInit = true;\n }\n const destroyModule = mod => {\n if (!swiper[mod]) return;\n swiper[mod].destroy();\n if (mod === 'navigation') {\n if (swiper.isElement) {\n swiper[mod].prevEl.remove();\n swiper[mod].nextEl.remove();\n }\n currentParams[mod].prevEl = undefined;\n currentParams[mod].nextEl = undefined;\n swiper[mod].prevEl = undefined;\n swiper[mod].nextEl = undefined;\n } else {\n if (swiper.isElement) {\n swiper[mod].el.remove();\n }\n currentParams[mod].el = undefined;\n swiper[mod].el = undefined;\n }\n };\n if (changedParams.includes('loop') && swiper.isElement) {\n if (currentParams.loop && !passedParams.loop) {\n loopNeedDestroy = true;\n } else if (!currentParams.loop && passedParams.loop) {\n loopNeedEnable = true;\n } else {\n loopNeedReloop = true;\n }\n }\n updateParams.forEach(key => {\n if (isObject(currentParams[key]) && isObject(passedParams[key])) {\n Object.assign(currentParams[key], passedParams[key]);\n if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) {\n destroyModule(key);\n }\n } else {\n const newValue = passedParams[key];\n if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) {\n if (newValue === false) {\n destroyModule(key);\n }\n } else {\n currentParams[key] = passedParams[key];\n }\n }\n });\n if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) {\n virtual.slides = slides;\n virtual.update(true);\n } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) {\n if (slides) virtual.slides = slides;\n virtual.update(true);\n }\n if (changedParams.includes('children') && slides && currentParams.loop) {\n loopNeedReloop = true;\n }\n if (needThumbsInit) {\n const initialized = thumbs.init();\n if (initialized) thumbs.update(true);\n }\n if (needControllerInit) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (needPaginationInit) {\n if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) {\n paginationEl = document.createElement('div');\n paginationEl.classList.add('swiper-pagination');\n paginationEl.part.add('pagination');\n swiper.el.appendChild(paginationEl);\n }\n if (paginationEl) currentParams.pagination.el = paginationEl;\n pagination.init();\n pagination.render();\n pagination.update();\n }\n if (needScrollbarInit) {\n if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) {\n scrollbarEl = document.createElement('div');\n scrollbarEl.classList.add('swiper-scrollbar');\n scrollbarEl.part.add('scrollbar');\n swiper.el.appendChild(scrollbarEl);\n }\n if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl;\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n }\n if (needNavigationInit) {\n if (swiper.isElement) {\n if (!nextEl || typeof nextEl === 'string') {\n nextEl = document.createElement('div');\n nextEl.classList.add('swiper-button-next');\n nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg;\n nextEl.part.add('button-next');\n swiper.el.appendChild(nextEl);\n }\n if (!prevEl || typeof prevEl === 'string') {\n prevEl = document.createElement('div');\n prevEl.classList.add('swiper-button-prev');\n prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg;\n prevEl.part.add('button-prev');\n swiper.el.appendChild(prevEl);\n }\n }\n if (nextEl) currentParams.navigation.nextEl = nextEl;\n if (prevEl) currentParams.navigation.prevEl = prevEl;\n navigation.init();\n navigation.update();\n }\n if (changedParams.includes('allowSlideNext')) {\n swiper.allowSlideNext = passedParams.allowSlideNext;\n }\n if (changedParams.includes('allowSlidePrev')) {\n swiper.allowSlidePrev = passedParams.allowSlidePrev;\n }\n if (changedParams.includes('direction')) {\n swiper.changeDirection(passedParams.direction, false);\n }\n if (loopNeedDestroy || loopNeedReloop) {\n swiper.loopDestroy();\n }\n if (loopNeedEnable || loopNeedReloop) {\n swiper.loopCreate();\n }\n swiper.update();\n}\n\nexport { needsPagination as a, needsScrollbar as b, attrToProp as c, uniqueClasses as d, extend as e, isObject as i, needsNavigation as n, paramsList as p, updateSwiper as u, wrapperClass as w };\n", "import { e as extend, p as paramsList, i as isObject, n as needsNavigation, a as needsPagination, b as needsScrollbar } from './update-swiper.mjs';\nimport { d as defaults } from './swiper-core.mjs';\n\nfunction getParams(obj, splitEvents) {\n if (obj === void 0) {\n obj = {};\n }\n if (splitEvents === void 0) {\n splitEvents = true;\n }\n const params = {\n on: {}\n };\n const events = {};\n const passedParams = {};\n extend(params, defaults);\n params._emitClasses = true;\n params.init = false;\n const rest = {};\n const allowedParams = paramsList.map(key => key.replace(/_/, ''));\n const plainObj = Object.assign({}, obj);\n Object.keys(plainObj).forEach(key => {\n if (typeof obj[key] === 'undefined') return;\n if (allowedParams.indexOf(key) >= 0) {\n if (isObject(obj[key])) {\n params[key] = {};\n passedParams[key] = {};\n extend(params[key], obj[key]);\n extend(passedParams[key], obj[key]);\n } else {\n params[key] = obj[key];\n passedParams[key] = obj[key];\n }\n } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') {\n if (splitEvents) {\n events[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n } else {\n params.on[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n }\n } else {\n rest[key] = obj[key];\n }\n });\n ['navigation', 'pagination', 'scrollbar'].forEach(key => {\n if (params[key] === true) params[key] = {};\n if (params[key] === false) delete params[key];\n });\n return {\n params,\n passedParams,\n rest,\n events\n };\n}\n\nfunction mountSwiper(_ref, swiperParams) {\n let {\n el,\n nextEl,\n prevEl,\n paginationEl,\n scrollbarEl,\n swiper\n } = _ref;\n if (needsNavigation(swiperParams) && nextEl && prevEl) {\n swiper.params.navigation.nextEl = nextEl;\n swiper.originalParams.navigation.nextEl = nextEl;\n swiper.params.navigation.prevEl = prevEl;\n swiper.originalParams.navigation.prevEl = prevEl;\n }\n if (needsPagination(swiperParams) && paginationEl) {\n swiper.params.pagination.el = paginationEl;\n swiper.originalParams.pagination.el = paginationEl;\n }\n if (needsScrollbar(swiperParams) && scrollbarEl) {\n swiper.params.scrollbar.el = scrollbarEl;\n swiper.originalParams.scrollbar.el = scrollbarEl;\n }\n swiper.init(el);\n}\n\nfunction getChangedParams(swiperParams, oldParams, children, oldChildren, getKey) {\n const keys = [];\n if (!oldParams) return keys;\n const addKey = key => {\n if (keys.indexOf(key) < 0) keys.push(key);\n };\n if (children && oldChildren) {\n const oldChildrenKeys = oldChildren.map(getKey);\n const childrenKeys = children.map(getKey);\n if (oldChildrenKeys.join('') !== childrenKeys.join('')) addKey('children');\n if (oldChildren.length !== children.length) addKey('children');\n }\n const watchParams = paramsList.filter(key => key[0] === '_').map(key => key.replace(/_/, ''));\n watchParams.forEach(key => {\n if (key in swiperParams && key in oldParams) {\n if (isObject(swiperParams[key]) && isObject(oldParams[key])) {\n const newKeys = Object.keys(swiperParams[key]);\n const oldKeys = Object.keys(oldParams[key]);\n if (newKeys.length !== oldKeys.length) {\n addKey(key);\n } else {\n newKeys.forEach(newKey => {\n if (swiperParams[key][newKey] !== oldParams[key][newKey]) {\n addKey(key);\n }\n });\n oldKeys.forEach(oldKey => {\n if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key);\n });\n }\n } else if (swiperParams[key] !== oldParams[key]) {\n addKey(key);\n }\n }\n });\n return keys;\n}\n\nconst updateOnVirtualData = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return;\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) {\n swiper.parallax.setTranslate();\n }\n};\n\nexport { getChangedParams as a, getParams as g, mountSwiper as m, updateOnVirtualData as u };\n"],
+ "mappings": "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",
+ "names": ["window", "document", "support", "observerUpdate", "events", "slide", "translate", "realIndex", "minTranslate", "maxTranslate", "transitionEnd", "browser", "slideTo", "setTranslate", "i", "increment", "breakpoints", "extend", "classes", "events", "extend", "React", "slide", "Swiper", "events", "classes", "extend", "attachEvents", "detachEvents", "onLoad"]
+}
diff --git a/config/routing.php b/config/routing.php
index cb1fd4e..22eb588 100644
--- a/config/routing.php
+++ b/config/routing.php
@@ -8,4 +8,133 @@ return [
'query' => [],
'url' => '/buildpc',
],
+ // product
+ "/danh-muc-cap1.html" => [
+ 'module' => 'category',
+ 'view' => 'home',
+ 'view_id'=> 0,
+ 'query' => [],
+ 'url' => '/danh-muc-cap1.html',
+ ],
+ "/danh-muc-cap2.html" => [
+ 'module' => 'category',
+ 'view' => 'detail',
+ 'view_id'=> 0,
+ 'query' => [],
+ 'url' => '/danh-muc-cap2.html',
+ ],
+ "/product-detail" => [
+ 'module' => 'product',
+ 'view' => 'detail',
+ 'view_id'=> 0,
+ 'query' => [],
+ 'url' => '/product-detail',
+ ],
+ // san pham da luu
+ "/san-pham-da-luu" => [
+ 'module' => 'product',
+ 'view' => 'productsave',
+ 'view_id'=> 0,
+ 'query' => [],
+ 'url' => '/san-pham-da-luu',
+ ],
+ // tim nguoi ban
+ "/tim-nguoi-ban" => [
+ 'module' => 'shop',
+ 'view' => 'home',
+ 'view_id'=> 0,
+ 'query' => [],
+ 'url' => '/tim-nguoi-ban',
+ ],
+ // địa chỉ sửa chữa
+ "/dia-chi-sua-chua" => [
+ 'module' => 'repair',
+ 'view' => 'home',
+ 'view_id'=> 0,
+ 'query' => [],
+ 'url' => '/dia-chi-sua-chua',
+ ],
+ // hoi dap
+ "/hoi-dap" => [
+ 'module' => 'faq',
+ 'view' => 'home',
+ 'view_id'=> 0,
+ 'query' => [],
+ 'url' => '/hoi-dap',
+ ],
+ "/question-form" => [
+ 'module' => 'faq',
+ 'view' => 'form',
+ 'view_id'=> 0,
+ 'query' => [],
+ 'url' => '/question-form',
+ ],
+ "/chi-tiet-cau-hoi-dap" => [
+ 'module' => 'faq',
+ 'view' => 'detail',
+ 'view_id'=> 0,
+ 'query' => [],
+ 'url' => '/chi-tiet-cau-hoi-dap',
+ ],
+ // tin rao vat
+ "/tin-rao-vat" => [
+ 'module' => 'classifieds',
+ 'view' => 'home',
+ 'view_id'=> 0,
+ 'query' => [],
+ 'url' => '/tin-rao-vat',
+ ],
+ "/san-pham-nguoi-ban" => [
+ 'module' => 'classifieds',
+ 'view' => 'detail',
+ 'view_id'=> 0,
+ 'query' => [],
+ 'url' => '/san-pham-nguoi-ban',
+ ],
+ // taikhoan
+ "/taikhoan" => [
+ 'module' => 'account',
+ 'view' => 'home',
+ 'view_id'=> 0,
+ 'query' => [
+ "view" => "info"
+ ],
+ 'url' => '/taikhoan?view=info',
+ ],
+ "/taikhoan?view=question" => [
+ 'module' => 'account',
+ 'view' => 'home',
+ 'view_id'=> 0,
+ 'query' => [
+ "view" => "question"
+ ],
+ 'url' => '/taikhoan?view=question',
+ ],
+ "/taikhoan?view=classifieds" => [
+ 'module' => 'account',
+ 'view' => 'layout',
+ 'view_id'=> 0,
+ 'query' => [
+ "view" => "classifieds"
+ ],
+ 'url' => '/taikhoan?view=classifieds',
+ ],
+ "/taikhoan?view=inbox" => [
+ 'module' => 'account',
+ 'view' => 'layout',
+ 'view_id'=> 0,
+ 'query' => [
+ "view" => "inbox"
+ ],
+ 'url' => '/taikhoan?view=inbox',
+ ],
+ "/taikhoan?view=info-save" => [
+ 'module' => 'account',
+ 'view' => 'layout',
+ 'view_id'=> 0,
+ 'query' => [
+ "view" => "product_save"
+ ],
+ 'url' => '/taikhoan?view=info-save',
+ ],
];
diff --git a/old/index.html b/old/index.html
index aec7b04..2871fd7 100644
--- a/old/index.html
+++ b/old/index.html
@@ -19,4 +19,4 @@