{"version":3,"file":"main.min.js","sources":["main.min.js"],"sourcesContent":["(() => {\n var __create = Object.create;\n var __defProp = Object.defineProperty;\n var __getOwnPropDesc = Object.getOwnPropertyDescriptor;\n var __getOwnPropNames = Object.getOwnPropertyNames;\n var __getProtoOf = Object.getPrototypeOf;\n var __hasOwnProp = Object.prototype.hasOwnProperty;\n var __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n };\n var __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n };\n var __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n };\n var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n ));\n\n // node_modules/lax.js/lib/lax.min.js\n var require_lax_min = __commonJS({\n \"node_modules/lax.js/lib/lax.min.js\"(exports, module) {\n \"use strict\";\n function _classCallCheck(e, t) {\n if (!(e instanceof t))\n throw new TypeError(\"Cannot call a class as a function\");\n }\n function _defineProperty(e, t, n) {\n return t in e ? Object.defineProperty(e, t, { value: n, enumerable: true, configurable: true, writable: true }) : e[t] = n, e;\n }\n function _slicedToArray(e, t) {\n return _arrayWithHoles(e) || _iterableToArrayLimit(e, t) || _unsupportedIterableToArray(e, t) || _nonIterableRest();\n }\n function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n function _unsupportedIterableToArray(e, t) {\n if (e) {\n if (\"string\" == typeof e)\n return _arrayLikeToArray(e, t);\n var n = Object.prototype.toString.call(e).slice(8, -1);\n return \"Object\" === n && e.constructor && (n = e.constructor.name), \"Map\" === n || \"Set\" === n ? Array.from(e) : \"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? _arrayLikeToArray(e, t) : void 0;\n }\n }\n function _arrayLikeToArray(e, t) {\n (null == t || t > e.length) && (t = e.length);\n for (var n = 0, r = new Array(t); n < t; n++)\n r[n] = e[n];\n return r;\n }\n function _iterableToArrayLimit(e, t) {\n if (\"undefined\" != typeof Symbol && Symbol.iterator in Object(e)) {\n var n = [], r = true, i = false, o = void 0;\n try {\n for (var a, l = e[Symbol.iterator](); !(r = (a = l.next()).done) && (n.push(a.value), !t || n.length !== t); r = true)\n ;\n } catch (e2) {\n i = true, o = e2;\n } finally {\n try {\n r || null == l.return || l.return();\n } finally {\n if (i)\n throw o;\n }\n }\n return n;\n }\n }\n function _arrayWithHoles(e) {\n if (Array.isArray(e))\n return e;\n }\n !function() {\n function n(e2) {\n return [\"elInY+elHeight\", \"elCenterY-\".concat(e2 = 0 < arguments.length && void 0 !== e2 ? e2 : 30), \"elCenterY\", \"elCenterY+\".concat(e2), \"elOutY-elHeight\"];\n }\n var l, u, s, _, P, I, t = { fadeInOut: function(e2, t2) {\n t2 = 1 < arguments.length && void 0 !== t2 ? t2 : 0;\n return { opacity: [n(0 < arguments.length && void 0 !== e2 ? e2 : 30), [t2, 1, 1, 1, t2]] };\n }, fadeIn: function(e2, t2) {\n return { opacity: [[\"elInY+elHeight\", 0 < arguments.length && void 0 !== e2 ? e2 : \"elCenterY\"], [1 < arguments.length && void 0 !== t2 ? t2 : 0, 1]] };\n }, fadeOut: function(e2, t2) {\n return { opacity: [[0 < arguments.length && void 0 !== e2 ? e2 : \"elCenterY\", \"elOutY-elHeight\"], [1, 1 < arguments.length && void 0 !== t2 ? t2 : 0]] };\n }, blurInOut: function(e2, t2) {\n t2 = 1 < arguments.length && void 0 !== t2 ? t2 : 20;\n return { blur: [n(0 < arguments.length && void 0 !== e2 ? e2 : 100), [t2, 0, 0, 0, t2]] };\n }, blurIn: function(e2, t2) {\n return { blur: [[\"elInY+elHeight\", 0 < arguments.length && void 0 !== e2 ? e2 : \"elCenterY\"], [1 < arguments.length && void 0 !== t2 ? t2 : 20, 0]] };\n }, blurOut: function(e2, t2) {\n return { opacity: [[0 < arguments.length && void 0 !== e2 ? e2 : \"elCenterY\", \"elOutY-elHeight\"], [0, 1 < arguments.length && void 0 !== t2 ? t2 : 20]] };\n }, scaleInOut: function(e2, t2) {\n t2 = 1 < arguments.length && void 0 !== t2 ? t2 : 0.6;\n return { scale: [n(0 < arguments.length && void 0 !== e2 ? e2 : 100), [t2, 1, 1, 1, t2]] };\n }, scaleIn: function(e2, t2) {\n return { scale: [[\"elInY+elHeight\", 0 < arguments.length && void 0 !== e2 ? e2 : \"elCenterY\"], [1 < arguments.length && void 0 !== t2 ? t2 : 0.6, 1]] };\n }, scaleOut: function(e2, t2) {\n return { scale: [[0 < arguments.length && void 0 !== e2 ? e2 : \"elCenterY\", \"elOutY-elHeight\"], [1, 1 < arguments.length && void 0 !== t2 ? t2 : 0.6]] };\n }, slideX: function(e2, t2) {\n return { translateX: [[\"elInY\", 0 < arguments.length && void 0 !== e2 ? e2 : 0], [0, 1 < arguments.length && void 0 !== t2 ? t2 : 500]] };\n }, slideY: function(e2, t2) {\n return { translateY: [[\"elInY\", 0 < arguments.length && void 0 !== e2 ? e2 : 0], [0, 1 < arguments.length && void 0 !== t2 ? t2 : 500]] };\n }, spin: function(e2, t2) {\n e2 = 0 < arguments.length && void 0 !== e2 ? e2 : 1e3;\n return { rotate: [[0, e2], [0, 1 < arguments.length && void 0 !== t2 ? t2 : 360], { modValue: e2 }] };\n }, flipX: function(e2, t2) {\n e2 = 0 < arguments.length && void 0 !== e2 ? e2 : 1e3;\n return { rotateX: [[0, e2], [0, 1 < arguments.length && void 0 !== t2 ? t2 : 360], { modValue: e2 }] };\n }, flipY: function(e2, t2) {\n e2 = 0 < arguments.length && void 0 !== e2 ? e2 : 1e3;\n return { rotateY: [[0, e2], [0, 1 < arguments.length && void 0 !== t2 ? t2 : 360], { modValue: e2 }] };\n }, jiggle: function(e2, t2) {\n e2 = 0 < arguments.length && void 0 !== e2 ? e2 : 50, t2 = 1 < arguments.length && void 0 !== t2 ? t2 : 40;\n return { skewX: [[0, +e2, 2 * e2, 3 * e2, 4 * e2], [0, t2, 0, -t2, 0], { modValue: 4 * e2 }] };\n }, seesaw: function(e2, t2) {\n e2 = 0 < arguments.length && void 0 !== e2 ? e2 : 50, t2 = 1 < arguments.length && void 0 !== t2 ? t2 : 40;\n return { skewY: [[0, +e2, 2 * e2, 3 * e2, 4 * e2], [0, t2, 0, -t2, 0], { modValue: 4 * e2 }] };\n }, zigzag: function(e2, t2) {\n e2 = 0 < arguments.length && void 0 !== e2 ? e2 : 100, t2 = 1 < arguments.length && void 0 !== t2 ? t2 : 100;\n return { translateX: [[0, +e2, 2 * e2, 3 * e2, 4 * e2], [0, t2, 0, -t2, 0], { modValue: 4 * e2 }] };\n }, hueRotate: function(e2, t2) {\n e2 = 0 < arguments.length && void 0 !== e2 ? e2 : 600;\n return { \"hue-rotate\": [[0, e2], [0, 1 < arguments.length && void 0 !== t2 ? t2 : 360], { modValue: e2 }] };\n } }, e = (l = [\"perspective\", \"scaleX\", \"scaleY\", \"scale\", \"skewX\", \"skewY\", \"skew\", \"rotateX\", \"rotateY\", \"rotate\"], u = [\"blur\", \"hue-rotate\", \"brightness\"], s = [\"translateX\", \"translateY\", \"translateZ\"], _ = [\"perspective\", \"border-radius\", \"blur\", \"translateX\", \"translateY\", \"translateZ\"], P = [\"hue-rotate\", \"rotate\", \"rotateX\", \"rotateY\", \"skew\", \"skewX\", \"skewY\"], I = { easeInQuad: function(e2) {\n return e2 * e2;\n }, easeOutQuad: function(e2) {\n return e2 * (2 - e2);\n }, easeInOutQuad: function(e2) {\n return e2 < 0.5 ? 2 * e2 * e2 : (4 - 2 * e2) * e2 - 1;\n }, easeInCubic: function(e2) {\n return e2 * e2 * e2;\n }, easeOutCubic: function(e2) {\n return --e2 * e2 * e2 + 1;\n }, easeInOutCubic: function(e2) {\n return e2 < 0.5 ? 4 * e2 * e2 * e2 : (e2 - 1) * (2 * e2 - 2) * (2 * e2 - 2) + 1;\n }, easeInQuart: function(e2) {\n return e2 * e2 * e2 * e2;\n }, easeOutQuart: function(e2) {\n return 1 - --e2 * e2 * e2 * e2;\n }, easeInOutQuart: function(e2) {\n return e2 < 0.5 ? 8 * e2 * e2 * e2 * e2 : 1 - 8 * --e2 * e2 * e2 * e2;\n }, easeInQuint: function(e2) {\n return e2 * e2 * e2 * e2 * e2;\n }, easeOutQuint: function(e2) {\n return 1 + --e2 * e2 * e2 * e2 * e2;\n }, easeInOutQuint: function(e2) {\n return e2 < 0.5 ? 16 * e2 * e2 * e2 * e2 * e2 : 1 + 16 * --e2 * e2 * e2 * e2 * e2;\n }, easeOutBounce: function(e2) {\n var t2 = 7.5625, n2 = 2.75;\n return e2 < 1 / n2 ? t2 * e2 * e2 : e2 < 2 / n2 ? t2 * (e2 -= 1.5 / n2) * e2 + 0.75 : e2 < 2.5 / n2 ? t2 * (e2 -= 2.25 / n2) * e2 + 0.9375 : t2 * (e2 -= 2.625 / n2) * e2 + 0.984375;\n }, easeInBounce: function(e2) {\n return 1 - I.easeOutBounce(1 - e2);\n }, easeOutBack: function(e2) {\n return 1 + 2.70158 * Math.pow(e2 - 1, 3) + 1.70158 * Math.pow(e2 - 1, 2);\n }, easeInBack: function(e2) {\n return 2.70158 * e2 * e2 * e2 - 1.70158 * e2 * e2;\n } }, new function e2() {\n var o = this;\n _classCallCheck(this, e2), _defineProperty(this, \"drivers\", []), _defineProperty(this, \"elements\", []), _defineProperty(this, \"frame\", 0), _defineProperty(this, \"debug\", false), _defineProperty(this, \"windowWidth\", 0), _defineProperty(this, \"windowHeight\", 0), _defineProperty(this, \"presets\", t), _defineProperty(this, \"debugData\", { frameLengths: [] }), _defineProperty(this, \"init\", function() {\n o.findAndAddElements(), window.requestAnimationFrame(o.onAnimationFrame), o.windowWidth = document.body.clientWidth, o.windowHeight = document.body.clientHeight, window.onresize = o.onWindowResize;\n }), _defineProperty(this, \"onWindowResize\", function() {\n document.body.clientWidth === o.windowWidth && document.body.clientHeight === o.windowHeight || (o.windowWidth = document.body.clientWidth, o.windowHeight = document.body.clientHeight, o.elements.forEach(function(e3) {\n return e3.calculateTransforms();\n }));\n }), _defineProperty(this, \"onAnimationFrame\", function(e3) {\n o.debug && (o.debugData.frameStart = Date.now());\n var t2, n2 = {};\n o.drivers.forEach(function(e4) {\n n2[e4.name] = e4.getValue(o.frame);\n }), o.elements.forEach(function(e4) {\n e4.update(n2, o.frame);\n }), o.debug && o.debugData.frameLengths.push(Date.now() - o.debugData.frameStart), o.frame % 60 == 0 && o.debug && (t2 = Math.ceil(o.debugData.frameLengths.reduce(function(e4, t3) {\n return e4 + t3;\n }, 0) / 60), console.log(\"Average frame calculation time: \".concat(t2, \"ms\")), o.debugData.frameLengths = []), o.frame++, window.requestAnimationFrame(o.onAnimationFrame);\n }), _defineProperty(this, \"addDriver\", function(e3, t2) {\n var n2 = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {};\n o.drivers.push(new i(e3, t2, n2));\n }), _defineProperty(this, \"removeDriver\", function(t2) {\n o.drivers = o.drivers.filter(function(e3) {\n return e3.name !== t2;\n });\n }), _defineProperty(this, \"findAndAddElements\", function() {\n o.elements = [], document.querySelectorAll(\".lax\").forEach(function(e3) {\n var t2 = [];\n e3.classList.forEach(function(e4) {\n e4.includes(\"lax_preset\") && (e4 = e4.replace(\"lax_preset_\", \"\"), t2.push(e4));\n });\n var n2 = _defineProperty({}, \"scrollY\", { presets: t2 });\n o.elements.push(new f(\".lax\", o, e3, n2, 0, {}));\n });\n }), _defineProperty(this, \"addElements\", function(n2, r, i2) {\n document.querySelectorAll(n2).forEach(function(e3, t2) {\n o.elements.push(new f(n2, o, e3, r, t2, i2));\n });\n }), _defineProperty(this, \"removeElements\", function(t2) {\n o.elements = o.elements.filter(function(e3) {\n return e3.selector !== t2;\n });\n }), _defineProperty(this, \"addElement\", function(e3, t2, n2) {\n o.elements.push(new f(\"\", o, e3, t2, 0, n2));\n }), _defineProperty(this, \"removeElement\", function(t2) {\n o.elements = o.elements.filter(function(e3) {\n return e3.domElement !== t2;\n });\n });\n }());\n function c(e2, t2) {\n if (Array.isArray(e2))\n return e2;\n for (var n2 = Object.keys(e2).map(function(e3) {\n return parseInt(e3);\n }).sort(function(e3, t3) {\n return t3 < e3 ? 1 : -1;\n }), r = n2[n2.length - 1], i2 = 0; i2 < n2.length; i2++) {\n var o = n2[i2];\n if (t2 < o) {\n r = o;\n break;\n }\n }\n return e2[r];\n }\n function d(e2, t2, n2) {\n var r = t2.width, i2 = t2.height, o = t2.x, a = t2.y;\n if (\"number\" == typeof e2)\n return e2;\n var l2, u2 = document.body.scrollHeight, s2 = document.body.scrollWidth, c2 = window.innerWidth, d2 = window.innerHeight, f2 = _slicedToArray((l2 = void 0 !== window.pageXOffset, f2 = \"CSS1Compat\" === (document.compatMode || \"\"), t2 = l2 ? window.pageXOffset : (f2 ? document.documentElement : document.body).scrollLeft, [l2 ? window.pageYOffset : (f2 ? document.documentElement : document.body).scrollTop, t2]), 2), t2 = f2[0], o = o + f2[1], f2 = o + r, a = a + t2, t2 = a + i2;\n return Function(\"return \".concat(e2.replace(/screenWidth/g, c2).replace(/screenHeight/g, d2).replace(/pageHeight/g, u2).replace(/pageWidth/g, s2).replace(/elWidth/g, r).replace(/elHeight/g, i2).replace(/elInY/g, a - d2).replace(/elOutY/g, t2).replace(/elCenterY/g, a + i2 / 2 - d2 / 2).replace(/elInX/g, o - c2).replace(/elOutX/g, f2).replace(/elCenterX/g, o + r / 2 - c2 / 2).replace(/index/g, n2)))();\n }\n function i(e2, t2) {\n var n2 = this, r = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {};\n _classCallCheck(this, i), _defineProperty(this, \"getValueFn\", void 0), _defineProperty(this, \"name\", \"\"), _defineProperty(this, \"lastValue\", 0), _defineProperty(this, \"frameStep\", 1), _defineProperty(this, \"m1\", 0), _defineProperty(this, \"m2\", 0), _defineProperty(this, \"inertia\", 0), _defineProperty(this, \"inertiaEnabled\", false), _defineProperty(this, \"getValue\", function(e3) {\n var t3 = n2.lastValue;\n return e3 % n2.frameStep == 0 && (t3 = n2.getValueFn(e3)), n2.inertiaEnabled && (e3 = t3 - n2.lastValue, n2.m1 = 0.8 * n2.m1 + e3 * (1 - 0.8), n2.m2 = 0.8 * n2.m2 + n2.m1 * (1 - 0.8), n2.inertia = Math.round(5e3 * n2.m2) / 15e3), n2.lastValue = t3, [n2.lastValue, n2.inertia];\n }), this.name = e2, this.getValueFn = t2, Object.keys(r).forEach(function(e3) {\n n2[e3] = r[e3];\n }), this.lastValue = this.getValueFn(0);\n }\n function f(e2, t2, n2, r) {\n var b = this, i2 = 4 < arguments.length && void 0 !== arguments[4] ? arguments[4] : 0, o = 5 < arguments.length && void 0 !== arguments[5] ? arguments[5] : {};\n _classCallCheck(this, f), _defineProperty(this, \"domElement\", void 0), _defineProperty(this, \"transformsData\", void 0), _defineProperty(this, \"styles\", {}), _defineProperty(this, \"selector\", \"\"), _defineProperty(this, \"groupIndex\", 0), _defineProperty(this, \"laxInstance\", void 0), _defineProperty(this, \"onUpdate\", void 0), _defineProperty(this, \"update\", function(e3, t3) {\n var n3, r2 = b.transforms, i3 = {};\n for (n3 in r2) {\n var o2 = r2[n3];\n e3[n3] || console.error(\"No lax driver with name: \", n3);\n var a2, l2 = _slicedToArray(e3[n3], 2), u2 = l2[0], s2 = l2[1];\n for (a2 in o2) {\n var c2, d2 = _slicedToArray(o2[a2], 3), f2 = d2[0], h = d2[1], m = d2[2], p = void 0 === m ? {} : m, g = p.modValue, y = p.frameStep, v = void 0 === y ? 1 : y, w = p.easing, d2 = p.inertia, m = p.inertiaMode, y = p.cssFn, p = p.cssUnit, p = void 0 === p ? \"\" : p, w = I[w];\n t3 % v == 0 && (w = function(e4, t4, n4, r3) {\n var i4 = 0;\n if (e4.forEach(function(e5) {\n e5 < n4 && i4++;\n }), i4 <= 0)\n return t4[0];\n if (i4 >= e4.length)\n return t4[e4.length - 1];\n var o3, a3 = (a3 = e4[o3 = i4 - 1], e4 = e4[i4], (n4 - a3) / (e4 - a3));\n return r3 && (a3 = r3(a3)), o3 = t4[o3], t4 = t4[i4], o3 * (1 - (a3 = a3)) + t4 * a3;\n }(f2, h, g ? u2 % g : u2, w), d2 && (c2 = s2 * d2, \"absolute\" === m && (c2 = Math.abs(c2)), w += c2), c2 = \"px\" == (p || _.includes(a2) ? \"px\" : P.includes(a2) ? \"deg\" : \"\") ? 0 : 3, c2 = w.toFixed(c2), i3[a2] = y ? y(c2, b.domElement) : c2 + p);\n }\n }\n b.applyStyles(i3), b.onUpdate && b.onUpdate(e3, b.domElement);\n }), _defineProperty(this, \"calculateTransforms\", function() {\n b.transforms = {};\n var e3, l2 = b.laxInstance.windowWidth;\n for (e3 in b.transformsData)\n !function(e4) {\n var o2 = b.transformsData[e4], a2 = {}, t3 = o2.presets;\n (void 0 === t3 ? [] : t3).forEach(function(e5) {\n var t4, n4 = _slicedToArray(e5.split(\":\"), 3), r2 = n4[0], i3 = n4[1], e5 = n4[2], n4 = window.lax.presets[r2];\n n4 ? (t4 = n4(i3, e5), Object.keys(t4).forEach(function(e6) {\n o2[e6] = t4[e6];\n })) : console.error(\"Lax preset cannot be found with name: \", r2);\n }), delete o2.presets;\n for (var n3 in o2)\n !function(e5) {\n var t4 = _slicedToArray(o2[e5], 3), n4 = t4[0], r2 = void 0 === n4 ? [-1e9, 1e9] : n4, n4 = t4[1], n4 = void 0 === n4 ? [-1e9, 1e9] : n4, t4 = t4[2], t4 = void 0 === t4 ? {} : t4, i3 = b.domElement.getBoundingClientRect(), r2 = c(r2, l2).map(function(e6) {\n return d(e6, i3, b.groupIndex);\n }), n4 = c(n4, l2).map(function(e6) {\n return d(e6, i3, b.groupIndex);\n });\n a2[e5] = [r2, n4, t4];\n }(n3);\n b.transforms[e4] = a2;\n }(e3);\n }), _defineProperty(this, \"applyStyles\", function(e3) {\n var r2, i3, o2, t3 = (r2 = e3, i3 = { transform: \"\", filter: \"\" }, o2 = { translateX: 1e-5, translateY: 1e-5, translateZ: 1e-5 }, Object.keys(r2).forEach(function(e4) {\n var t4 = r2[e4], n3 = _.includes(e4) ? \"px\" : P.includes(e4) ? \"deg\" : \"\";\n s.includes(e4) ? o2[e4] = t4 : l.includes(e4) ? i3.transform += \"\".concat(e4, \"(\").concat(t4).concat(n3, \") \") : u.includes(e4) ? i3.filter += \"\".concat(e4, \"(\").concat(t4).concat(n3, \") \") : i3[e4] = \"\".concat(t4).concat(n3, \" \");\n }), i3.transform = \"translate3d(\".concat(o2.translateX, \"px, \").concat(o2.translateY, \"px, \").concat(o2.translateZ, \"px) \").concat(i3.transform), i3);\n Object.keys(t3).forEach(function(e4) {\n b.domElement.style.setProperty(e4, t3[e4]);\n });\n }), this.selector = e2, this.laxInstance = t2, this.domElement = n2, this.transformsData = r, this.groupIndex = i2;\n var a = void 0 === (i2 = o.style) ? {} : i2, o = o.onUpdate;\n Object.keys(a).forEach(function(e3) {\n n2.style.setProperty(e3, a[e3]);\n }), o && (this.onUpdate = o), this.calculateTransforms();\n }\n \"undefined\" != typeof module && void 0 !== module.exports ? module.exports = e : window.lax = e;\n }();\n }\n });\n\n // node_modules/@popperjs/core/lib/index.js\n var lib_exports = {};\n __export(lib_exports, {\n afterMain: () => afterMain,\n afterRead: () => afterRead,\n afterWrite: () => afterWrite,\n applyStyles: () => applyStyles_default,\n arrow: () => arrow_default,\n auto: () => auto,\n basePlacements: () => basePlacements,\n beforeMain: () => beforeMain,\n beforeRead: () => beforeRead,\n beforeWrite: () => beforeWrite,\n bottom: () => bottom,\n clippingParents: () => clippingParents,\n computeStyles: () => computeStyles_default,\n createPopper: () => createPopper3,\n createPopperBase: () => createPopper,\n createPopperLite: () => createPopper2,\n detectOverflow: () => detectOverflow,\n end: () => end,\n eventListeners: () => eventListeners_default,\n flip: () => flip_default,\n hide: () => hide_default,\n left: () => left,\n main: () => main,\n modifierPhases: () => modifierPhases,\n offset: () => offset_default,\n placements: () => placements,\n popper: () => popper,\n popperGenerator: () => popperGenerator,\n popperOffsets: () => popperOffsets_default,\n preventOverflow: () => preventOverflow_default,\n read: () => read,\n reference: () => reference,\n right: () => right,\n start: () => start,\n top: () => top,\n variationPlacements: () => variationPlacements,\n viewport: () => viewport,\n write: () => write\n });\n\n // node_modules/@popperjs/core/lib/enums.js\n var top = \"top\";\n var bottom = \"bottom\";\n var right = \"right\";\n var left = \"left\";\n var auto = \"auto\";\n var basePlacements = [top, bottom, right, left];\n var start = \"start\";\n var end = \"end\";\n var clippingParents = \"clippingParents\";\n var viewport = \"viewport\";\n var popper = \"popper\";\n var reference = \"reference\";\n var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n }, []);\n var placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n }, []);\n var beforeRead = \"beforeRead\";\n var read = \"read\";\n var afterRead = \"afterRead\";\n var beforeMain = \"beforeMain\";\n var main = \"main\";\n var afterMain = \"afterMain\";\n var beforeWrite = \"beforeWrite\";\n var write = \"write\";\n var afterWrite = \"afterWrite\";\n var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];\n\n // node_modules/@popperjs/core/lib/dom-utils/getNodeName.js\n function getNodeName(element) {\n return element ? (element.nodeName || \"\").toLowerCase() : null;\n }\n\n // node_modules/@popperjs/core/lib/dom-utils/getWindow.js\n function getWindow(node) {\n if (node == null) {\n return window;\n }\n if (node.toString() !== \"[object Window]\") {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n return node;\n }\n\n // node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\n function isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n }\n function isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n }\n function isShadowRoot(node) {\n if (typeof ShadowRoot === \"undefined\") {\n return false;\n }\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n }\n\n // node_modules/@popperjs/core/lib/modifiers/applyStyles.js\n function applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function(name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name];\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function(name2) {\n var value = attributes[name2];\n if (value === false) {\n element.removeAttribute(name2);\n } else {\n element.setAttribute(name2, value === true ? \"\" : value);\n }\n });\n });\n }\n function effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: \"0\",\n top: \"0\",\n margin: \"0\"\n },\n arrow: {\n position: \"absolute\"\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n return function() {\n Object.keys(state.elements).forEach(function(name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]);\n var style = styleProperties.reduce(function(style2, property) {\n style2[property] = \"\";\n return style2;\n }, {});\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function(attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n }\n var applyStyles_default = {\n name: \"applyStyles\",\n enabled: true,\n phase: \"write\",\n fn: applyStyles,\n effect,\n requires: [\"computeStyles\"]\n };\n\n // node_modules/@popperjs/core/lib/utils/getBasePlacement.js\n function getBasePlacement(placement) {\n return placement.split(\"-\")[0];\n }\n\n // node_modules/@popperjs/core/lib/utils/math.js\n var max = Math.max;\n var min = Math.min;\n var round = Math.round;\n\n // node_modules/@popperjs/core/lib/utils/userAgent.js\n function getUAString() {\n var uaData = navigator.userAgentData;\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function(item) {\n return item.brand + \"/\" + item.version;\n }).join(\" \");\n }\n return navigator.userAgent;\n }\n\n // node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js\n function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n }\n\n // node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js\n function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n var _ref = isElement(element) ? getWindow(element) : window, visualViewport = _ref.visualViewport;\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width,\n height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x,\n y\n };\n }\n\n // node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js\n function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element);\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width,\n height\n };\n }\n\n // node_modules/@popperjs/core/lib/dom-utils/contains.js\n function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode();\n if (parent.contains(child)) {\n return true;\n } else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n }\n next = next.parentNode || next.host;\n } while (next);\n }\n return false;\n }\n\n // node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js\n function getComputedStyle2(element) {\n return getWindow(element).getComputedStyle(element);\n }\n\n // node_modules/@popperjs/core/lib/dom-utils/isTableElement.js\n function isTableElement(element) {\n return [\"table\", \"td\", \"th\"].indexOf(getNodeName(element)) >= 0;\n }\n\n // node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js\n function getDocumentElement(element) {\n return ((isElement(element) ? element.ownerDocument : (\n // $FlowFixMe[prop-missing]\n element.document\n )) || window.document).documentElement;\n }\n\n // node_modules/@popperjs/core/lib/dom-utils/getParentNode.js\n function getParentNode(element) {\n if (getNodeName(element) === \"html\") {\n return element;\n }\n return (\n // this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || // DOM Element detected\n (isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element)\n );\n }\n\n // node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js\n function getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle2(element).position === \"fixed\") {\n return null;\n }\n return element.offsetParent;\n }\n function getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n if (isIE && isHTMLElement(element)) {\n var elementCss = getComputedStyle2(element);\n if (elementCss.position === \"fixed\") {\n return null;\n }\n }\n var currentNode = getParentNode(element);\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n while (isHTMLElement(currentNode) && [\"html\", \"body\"].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle2(currentNode);\n if (css.transform !== \"none\" || css.perspective !== \"none\" || css.contain === \"paint\" || [\"transform\", \"perspective\"].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === \"filter\" || isFirefox && css.filter && css.filter !== \"none\") {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n return null;\n }\n function getOffsetParent(element) {\n var window2 = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle2(offsetParent).position === \"static\") {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n if (offsetParent && (getNodeName(offsetParent) === \"html\" || getNodeName(offsetParent) === \"body\" && getComputedStyle2(offsetParent).position === \"static\")) {\n return window2;\n }\n return offsetParent || getContainingBlock(element) || window2;\n }\n\n // node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js\n function getMainAxisFromPlacement(placement) {\n return [\"top\", \"bottom\"].indexOf(placement) >= 0 ? \"x\" : \"y\";\n }\n\n // node_modules/@popperjs/core/lib/utils/within.js\n function within(min2, value, max2) {\n return max(min2, min(value, max2));\n }\n function withinMaxClamp(min2, value, max2) {\n var v = within(min2, value, max2);\n return v > max2 ? max2 : v;\n }\n\n // node_modules/@popperjs/core/lib/utils/getFreshSideObject.js\n function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n }\n\n // node_modules/@popperjs/core/lib/utils/mergePaddingObject.js\n function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n }\n\n // node_modules/@popperjs/core/lib/utils/expandToHashMap.js\n function expandToHashMap(value, keys) {\n return keys.reduce(function(hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n }\n\n // node_modules/@popperjs/core/lib/modifiers/arrow.js\n var toPaddingObject = function toPaddingObject2(padding, state) {\n padding = typeof padding === \"function\" ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== \"number\" ? padding : expandToHashMap(padding, basePlacements));\n };\n function arrow(_ref) {\n var _state$modifiersData$;\n var state = _ref.state, name = _ref.name, options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets2 = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? \"height\" : \"width\";\n if (!arrowElement || !popperOffsets2) {\n return;\n }\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === \"y\" ? top : left;\n var maxProp = axis === \"y\" ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len];\n var startDiff = popperOffsets2[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === \"y\" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2;\n var min2 = paddingObject[minProp];\n var max2 = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset2 = within(min2, center, max2);\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$);\n }\n function effect2(_ref2) {\n var state = _ref2.state, options = _ref2.options;\n var _options$element = options.element, arrowElement = _options$element === void 0 ? \"[data-popper-arrow]\" : _options$element;\n if (arrowElement == null) {\n return;\n }\n if (typeof arrowElement === \"string\") {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n if (!arrowElement) {\n return;\n }\n }\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n state.elements.arrow = arrowElement;\n }\n var arrow_default = {\n name: \"arrow\",\n enabled: true,\n phase: \"main\",\n fn: arrow,\n effect: effect2,\n requires: [\"popperOffsets\"],\n requiresIfExists: [\"preventOverflow\"]\n };\n\n // node_modules/@popperjs/core/lib/utils/getVariation.js\n function getVariation(placement) {\n return placement.split(\"-\")[1];\n }\n\n // node_modules/@popperjs/core/lib/modifiers/computeStyles.js\n var unsetSides = {\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n left: \"auto\"\n };\n function roundOffsetsByDPR(_ref, win) {\n var x = _ref.x, y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n }\n function mapToStyles(_ref2) {\n var _Object$assign2;\n var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x, x = _offsets$x === void 0 ? 0 : _offsets$x, _offsets$y = offsets.y, y = _offsets$y === void 0 ? 0 : _offsets$y;\n var _ref3 = typeof roundOffsets === \"function\" ? roundOffsets({\n x,\n y\n }) : {\n x,\n y\n };\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty(\"x\");\n var hasY = offsets.hasOwnProperty(\"y\");\n var sideX = left;\n var sideY = top;\n var win = window;\n if (adaptive) {\n var offsetParent = getOffsetParent(popper2);\n var heightProp = \"clientHeight\";\n var widthProp = \"clientWidth\";\n if (offsetParent === getWindow(popper2)) {\n offsetParent = getDocumentElement(popper2);\n if (getComputedStyle2(offsetParent).position !== \"static\" && position === \"absolute\") {\n heightProp = \"scrollHeight\";\n widthProp = \"scrollWidth\";\n }\n }\n offsetParent = offsetParent;\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : (\n // $FlowFixMe[prop-missing]\n offsetParent[heightProp]\n );\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : (\n // $FlowFixMe[prop-missing]\n offsetParent[widthProp]\n );\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n var commonStyles = Object.assign({\n position\n }, adaptive && unsetSides);\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x,\n y\n }, getWindow(popper2)) : {\n x,\n y\n };\n x = _ref4.x;\n y = _ref4.y;\n if (gpuAcceleration) {\n var _Object$assign;\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? \"0\" : \"\", _Object$assign[sideX] = hasX ? \"0\" : \"\", _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : \"\", _Object$assign2[sideX] = hasX ? x + \"px\" : \"\", _Object$assign2.transform = \"\", _Object$assign2));\n }\n function computeStyles(_ref5) {\n var state = _ref5.state, options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration,\n isFixed: state.options.strategy === \"fixed\"\n };\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive,\n roundOffsets\n })));\n }\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: \"absolute\",\n adaptive: false,\n roundOffsets\n })));\n }\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n \"data-popper-placement\": state.placement\n });\n }\n var computeStyles_default = {\n name: \"computeStyles\",\n enabled: true,\n phase: \"beforeWrite\",\n fn: computeStyles,\n data: {}\n };\n\n // node_modules/@popperjs/core/lib/modifiers/eventListeners.js\n var passive = {\n passive: true\n };\n function effect3(_ref) {\n var state = _ref.state, instance = _ref.instance, options = _ref.options;\n var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize;\n var window2 = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n if (scroll) {\n scrollParents.forEach(function(scrollParent) {\n scrollParent.addEventListener(\"scroll\", instance.update, passive);\n });\n }\n if (resize) {\n window2.addEventListener(\"resize\", instance.update, passive);\n }\n return function() {\n if (scroll) {\n scrollParents.forEach(function(scrollParent) {\n scrollParent.removeEventListener(\"scroll\", instance.update, passive);\n });\n }\n if (resize) {\n window2.removeEventListener(\"resize\", instance.update, passive);\n }\n };\n }\n var eventListeners_default = {\n name: \"eventListeners\",\n enabled: true,\n phase: \"write\",\n fn: function fn() {\n },\n effect: effect3,\n data: {}\n };\n\n // node_modules/@popperjs/core/lib/utils/getOppositePlacement.js\n var hash = {\n left: \"right\",\n right: \"left\",\n bottom: \"top\",\n top: \"bottom\"\n };\n function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function(matched) {\n return hash[matched];\n });\n }\n\n // node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js\n var hash2 = {\n start: \"end\",\n end: \"start\"\n };\n function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function(matched) {\n return hash2[matched];\n });\n }\n\n // node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js\n function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft,\n scrollTop\n };\n }\n\n // node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js\n function getWindowScrollBarX(element) {\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n }\n\n // node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js\n function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n if (layoutViewport || !layoutViewport && strategy === \"fixed\") {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x: x + getWindowScrollBarX(element),\n y\n };\n }\n\n // node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js\n function getDocumentRect(element) {\n var _element$ownerDocumen;\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n if (getComputedStyle2(body || html).direction === \"rtl\") {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n }\n\n // node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js\n function isScrollParent(element) {\n var _getComputedStyle = getComputedStyle2(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY;\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n }\n\n // node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js\n function getScrollParent(node) {\n if ([\"html\", \"body\", \"#document\"].indexOf(getNodeName(node)) >= 0) {\n return node.ownerDocument.body;\n }\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n return getScrollParent(getParentNode(node));\n }\n\n // node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js\n function listScrollParents(element, list) {\n var _element$ownerDocumen;\n if (list === void 0) {\n list = [];\n }\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : (\n // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)))\n );\n }\n\n // node_modules/@popperjs/core/lib/utils/rectToClientRect.js\n function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n }\n\n // node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js\n function getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === \"fixed\");\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n }\n function getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n }\n function getClippingParents(element) {\n var clippingParents2 = listScrollParents(getParentNode(element));\n var canEscapeClipping = [\"absolute\", \"fixed\"].indexOf(getComputedStyle2(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n if (!isElement(clipperElement)) {\n return [];\n }\n return clippingParents2.filter(function(clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== \"body\";\n });\n }\n function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === \"clippingParents\" ? getClippingParents(element) : [].concat(boundary);\n var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents2[0];\n var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n }\n\n // node_modules/@popperjs/core/lib/utils/computeOffsets.js\n function computeOffsets(_ref) {\n var reference2 = _ref.reference, element = _ref.element, placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference2.x + reference2.width / 2 - element.width / 2;\n var commonY = reference2.y + reference2.height / 2 - element.height / 2;\n var offsets;\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference2.y - element.height\n };\n break;\n case bottom:\n offsets = {\n x: commonX,\n y: reference2.y + reference2.height\n };\n break;\n case right:\n offsets = {\n x: reference2.x + reference2.width,\n y: commonY\n };\n break;\n case left:\n offsets = {\n x: reference2.x - element.width,\n y: commonY\n };\n break;\n default:\n offsets = {\n x: reference2.x,\n y: reference2.y\n };\n }\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n if (mainAxis != null) {\n var len = mainAxis === \"y\" ? \"height\" : \"width\";\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element[len] / 2);\n break;\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element[len] / 2);\n break;\n default:\n }\n }\n return offsets;\n }\n\n // node_modules/@popperjs/core/lib/utils/detectOverflow.js\n function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$strategy = _options.strategy, strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== \"number\" ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets2 = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: \"absolute\",\n placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect;\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset;\n if (elementContext === popper && offsetData) {\n var offset2 = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function(key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? \"y\" : \"x\";\n overflowOffsets[key] += offset2[axis] * multiply;\n });\n }\n return overflowOffsets;\n }\n\n // node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js\n function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements2 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) {\n return getVariation(placement2) === variation;\n }) : basePlacements;\n var allowedPlacements = placements2.filter(function(placement2) {\n return allowedAutoPlacements.indexOf(placement2) >= 0;\n });\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements2;\n }\n var overflows = allowedPlacements.reduce(function(acc, placement2) {\n acc[placement2] = detectOverflow(state, {\n placement: placement2,\n boundary,\n rootBoundary,\n padding\n })[getBasePlacement(placement2)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function(a, b) {\n return overflows[a] - overflows[b];\n });\n }\n\n // node_modules/@popperjs/core/lib/modifiers/flip.js\n function getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n }\n function flip(_ref) {\n var state = _ref.state, options = _ref.options, name = _ref.name;\n if (state.modifiersData[name]._skip) {\n return;\n }\n var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) {\n return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, {\n placement: placement2,\n boundary,\n rootBoundary,\n padding,\n flipVariations,\n allowedAutoPlacements\n }) : placement2);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = /* @__PURE__ */ new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements2[0];\n for (var i = 0; i < placements2.length; i++) {\n var placement = placements2[i];\n var _basePlacement = getBasePlacement(placement);\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? \"width\" : \"height\";\n var overflow = detectOverflow(state, {\n placement,\n boundary,\n rootBoundary,\n altBoundary,\n padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n if (checks.every(function(check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n checksMap.set(placement, checks);\n }\n if (makeFallbackChecks) {\n var numberOfChecks = flipVariations ? 3 : 1;\n var _loop = function _loop2(_i2) {\n var fittingPlacement = placements2.find(function(placement2) {\n var checks2 = checksMap.get(placement2);\n if (checks2) {\n return checks2.slice(0, _i2).every(function(check) {\n return check;\n });\n }\n });\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n if (_ret === \"break\")\n break;\n }\n }\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n }\n var flip_default = {\n name: \"flip\",\n enabled: true,\n phase: \"main\",\n fn: flip,\n requiresIfExists: [\"offset\"],\n data: {\n _skip: false\n }\n };\n\n // node_modules/@popperjs/core/lib/modifiers/hide.js\n function getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n }\n function isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function(side) {\n return overflow[side] >= 0;\n });\n }\n function hide(_ref) {\n var state = _ref.state, name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: \"reference\"\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets,\n popperEscapeOffsets,\n isReferenceHidden,\n hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n \"data-popper-reference-hidden\": isReferenceHidden,\n \"data-popper-escaped\": hasPopperEscaped\n });\n }\n var hide_default = {\n name: \"hide\",\n enabled: true,\n phase: \"main\",\n requiresIfExists: [\"preventOverflow\"],\n fn: hide\n };\n\n // node_modules/@popperjs/core/lib/modifiers/offset.js\n function distanceAndSkiddingToXY(placement, rects, offset2) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n var _ref = typeof offset2 === \"function\" ? offset2(Object.assign({}, rects, {\n placement\n })) : offset2, skidding = _ref[0], distance = _ref[1];\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n }\n function offset(_ref2) {\n var state = _ref2.state, options = _ref2.options, name = _ref2.name;\n var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function(acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y;\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n state.modifiersData[name] = data;\n }\n var offset_default = {\n name: \"offset\",\n enabled: true,\n phase: \"main\",\n requires: [\"popperOffsets\"],\n fn: offset\n };\n\n // node_modules/@popperjs/core/lib/modifiers/popperOffsets.js\n function popperOffsets(_ref) {\n var state = _ref.state, name = _ref.name;\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: \"absolute\",\n placement: state.placement\n });\n }\n var popperOffsets_default = {\n name: \"popperOffsets\",\n enabled: true,\n phase: \"read\",\n fn: popperOffsets,\n data: {}\n };\n\n // node_modules/@popperjs/core/lib/utils/getAltAxis.js\n function getAltAxis(axis) {\n return axis === \"x\" ? \"y\" : \"x\";\n }\n\n // node_modules/@popperjs/core/lib/modifiers/preventOverflow.js\n function preventOverflow(_ref) {\n var state = _ref.state, options = _ref.options, name = _ref.name;\n var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary,\n rootBoundary,\n padding,\n altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets2 = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === \"function\" ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === \"number\" ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n if (!popperOffsets2) {\n return;\n }\n if (checkMainAxis) {\n var _offsetModifierState$;\n var mainSide = mainAxis === \"y\" ? top : left;\n var altSide = mainAxis === \"y\" ? bottom : right;\n var len = mainAxis === \"y\" ? \"height\" : \"width\";\n var offset2 = popperOffsets2[mainAxis];\n var min2 = offset2 + overflow[mainSide];\n var max2 = offset2 - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len];\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData[\"arrow#persistent\"] ? state.modifiersData[\"arrow#persistent\"].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide];\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === \"y\" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset2 + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset2 + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? min(min2, tetherMin) : min2, offset2, tether ? max(max2, tetherMax) : max2);\n popperOffsets2[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset2;\n }\n if (checkAltAxis) {\n var _offsetModifierState$2;\n var _mainSide = mainAxis === \"x\" ? top : left;\n var _altSide = mainAxis === \"x\" ? bottom : right;\n var _offset = popperOffsets2[altAxis];\n var _len = altAxis === \"y\" ? \"height\" : \"width\";\n var _min = _offset + overflow[_mainSide];\n var _max = _offset - overflow[_altSide];\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n popperOffsets2[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n state.modifiersData[name] = data;\n }\n var preventOverflow_default = {\n name: \"preventOverflow\",\n enabled: true,\n phase: \"main\",\n fn: preventOverflow,\n requiresIfExists: [\"offset\"]\n };\n\n // node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js\n function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n\n // node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js\n function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n }\n\n // node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js\n function isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n }\n function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== \"body\" || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n }\n\n // node_modules/@popperjs/core/lib/utils/orderModifiers.js\n function order(modifiers) {\n var map = /* @__PURE__ */ new Map();\n var visited = /* @__PURE__ */ new Set();\n var result = [];\n modifiers.forEach(function(modifier) {\n map.set(modifier.name, modifier);\n });\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function(dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n modifiers.forEach(function(modifier) {\n if (!visited.has(modifier.name)) {\n sort(modifier);\n }\n });\n return result;\n }\n function orderModifiers(modifiers) {\n var orderedModifiers = order(modifiers);\n return modifierPhases.reduce(function(acc, phase) {\n return acc.concat(orderedModifiers.filter(function(modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n }\n\n // node_modules/@popperjs/core/lib/utils/debounce.js\n function debounce(fn2) {\n var pending;\n return function() {\n if (!pending) {\n pending = new Promise(function(resolve) {\n Promise.resolve().then(function() {\n pending = void 0;\n resolve(fn2());\n });\n });\n }\n return pending;\n };\n }\n\n // node_modules/@popperjs/core/lib/utils/mergeByName.js\n function mergeByName(modifiers) {\n var merged = modifiers.reduce(function(merged2, current) {\n var existing = merged2[current.name];\n merged2[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged2;\n }, {});\n return Object.keys(merged).map(function(key) {\n return merged[key];\n });\n }\n\n // node_modules/@popperjs/core/lib/createPopper.js\n var DEFAULT_OPTIONS = {\n placement: \"bottom\",\n modifiers: [],\n strategy: \"absolute\"\n };\n function areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return !args.some(function(element) {\n return !(element && typeof element.getBoundingClientRect === \"function\");\n });\n }\n function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers3 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper4(reference2, popper2, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n var state = {\n placement: \"bottom\",\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference2,\n popper: popper2\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state,\n setOptions: function setOptions(setOptionsAction) {\n var options2 = typeof setOptionsAction === \"function\" ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options2);\n state.scrollParents = {\n reference: isElement(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [],\n popper: listScrollParents(popper2)\n };\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers3, state.options.modifiers)));\n state.orderedModifiers = orderedModifiers.filter(function(m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper;\n if (!areValidElements(reference3, popper3)) {\n return;\n }\n state.rects = {\n reference: getCompositeRect(reference3, getOffsetParent(popper3), state.options.strategy === \"fixed\"),\n popper: getLayoutRect(popper3)\n };\n state.reset = false;\n state.placement = state.options.placement;\n state.orderedModifiers.forEach(function(modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n var _state$orderedModifie = state.orderedModifiers[index], fn2 = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name;\n if (typeof fn2 === \"function\") {\n state = fn2({\n state,\n options: _options,\n name,\n instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function() {\n return new Promise(function(resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n if (!areValidElements(reference2, popper2)) {\n return instance;\n }\n instance.setOptions(options).then(function(state2) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state2);\n }\n });\n function runModifierEffects() {\n state.orderedModifiers.forEach(function(_ref) {\n var name = _ref.name, _ref$options = _ref.options, options2 = _ref$options === void 0 ? {} : _ref$options, effect4 = _ref.effect;\n if (typeof effect4 === \"function\") {\n var cleanupFn = effect4({\n state,\n name,\n instance,\n options: options2\n });\n var noopFn = function noopFn2() {\n };\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function(fn2) {\n return fn2();\n });\n effectCleanupFns = [];\n }\n return instance;\n };\n }\n var createPopper = /* @__PURE__ */ popperGenerator();\n\n // node_modules/@popperjs/core/lib/popper-lite.js\n var defaultModifiers = [eventListeners_default, popperOffsets_default, computeStyles_default, applyStyles_default];\n var createPopper2 = /* @__PURE__ */ popperGenerator({\n defaultModifiers\n });\n\n // node_modules/@popperjs/core/lib/popper.js\n var defaultModifiers2 = [eventListeners_default, popperOffsets_default, computeStyles_default, applyStyles_default, offset_default, flip_default, preventOverflow_default, arrow_default, hide_default];\n var createPopper3 = /* @__PURE__ */ popperGenerator({\n defaultModifiers: defaultModifiers2\n });\n\n // node_modules/bootstrap/dist/js/bootstrap.esm.js\n var elementMap = /* @__PURE__ */ new Map();\n var Data = {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, /* @__PURE__ */ new Map());\n }\n const instanceMap = elementMap.get(element);\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);\n return;\n }\n instanceMap.set(key, instance);\n },\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null;\n }\n return null;\n },\n remove(element, key) {\n if (!elementMap.has(element)) {\n return;\n }\n const instanceMap = elementMap.get(element);\n instanceMap.delete(key);\n if (instanceMap.size === 0) {\n elementMap.delete(element);\n }\n }\n };\n var MAX_UID = 1e6;\n var MILLISECONDS_MULTIPLIER = 1e3;\n var TRANSITION_END = \"transitionend\";\n var parseSelector = (selector) => {\n if (selector && window.CSS && window.CSS.escape) {\n selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`);\n }\n return selector;\n };\n var toType = (object) => {\n if (object === null || object === void 0) {\n return `${object}`;\n }\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase();\n };\n var getUID = (prefix) => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID);\n } while (document.getElementById(prefix));\n return prefix;\n };\n var getTransitionDurationFromElement = (element) => {\n if (!element) {\n return 0;\n }\n let {\n transitionDuration,\n transitionDelay\n } = window.getComputedStyle(element);\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n transitionDuration = transitionDuration.split(\",\")[0];\n transitionDelay = transitionDelay.split(\",\")[0];\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n };\n var triggerTransitionEnd = (element) => {\n element.dispatchEvent(new Event(TRANSITION_END));\n };\n var isElement2 = (object) => {\n if (!object || typeof object !== \"object\") {\n return false;\n }\n if (typeof object.jquery !== \"undefined\") {\n object = object[0];\n }\n return typeof object.nodeType !== \"undefined\";\n };\n var getElement = (object) => {\n if (isElement2(object)) {\n return object.jquery ? object[0] : object;\n }\n if (typeof object === \"string\" && object.length > 0) {\n return document.querySelector(parseSelector(object));\n }\n return null;\n };\n var isVisible = (element) => {\n if (!isElement2(element) || element.getClientRects().length === 0) {\n return false;\n }\n const elementIsVisible = getComputedStyle(element).getPropertyValue(\"visibility\") === \"visible\";\n const closedDetails = element.closest(\"details:not([open])\");\n if (!closedDetails) {\n return elementIsVisible;\n }\n if (closedDetails !== element) {\n const summary = element.closest(\"summary\");\n if (summary && summary.parentNode !== closedDetails) {\n return false;\n }\n if (summary === null) {\n return false;\n }\n }\n return elementIsVisible;\n };\n var isDisabled = (element) => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true;\n }\n if (element.classList.contains(\"disabled\")) {\n return true;\n }\n if (typeof element.disabled !== \"undefined\") {\n return element.disabled;\n }\n return element.hasAttribute(\"disabled\") && element.getAttribute(\"disabled\") !== \"false\";\n };\n var findShadowRoot = (element) => {\n if (!document.documentElement.attachShadow) {\n return null;\n }\n if (typeof element.getRootNode === \"function\") {\n const root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n if (element instanceof ShadowRoot) {\n return element;\n }\n if (!element.parentNode) {\n return null;\n }\n return findShadowRoot(element.parentNode);\n };\n var noop = () => {\n };\n var reflow = (element) => {\n element.offsetHeight;\n };\n var getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute(\"data-bs-no-jquery\")) {\n return window.jQuery;\n }\n return null;\n };\n var DOMContentLoadedCallbacks = [];\n var onDOMContentLoaded = (callback) => {\n if (document.readyState === \"loading\") {\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener(\"DOMContentLoaded\", () => {\n for (const callback2 of DOMContentLoadedCallbacks) {\n callback2();\n }\n });\n }\n DOMContentLoadedCallbacks.push(callback);\n } else {\n callback();\n }\n };\n var isRTL = () => document.documentElement.dir === \"rtl\";\n var defineJQueryPlugin = (plugin) => {\n onDOMContentLoaded(() => {\n const $ = getjQuery();\n if ($) {\n const name = plugin.NAME;\n const JQUERY_NO_CONFLICT = $.fn[name];\n $.fn[name] = plugin.jQueryInterface;\n $.fn[name].Constructor = plugin;\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT;\n return plugin.jQueryInterface;\n };\n }\n });\n };\n var execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n return typeof possibleCallback === \"function\" ? possibleCallback(...args) : defaultValue;\n };\n var executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback);\n return;\n }\n const durationPadding = 5;\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n let called = false;\n const handler = ({\n target\n }) => {\n if (target !== transitionElement) {\n return;\n }\n called = true;\n transitionElement.removeEventListener(TRANSITION_END, handler);\n execute(callback);\n };\n transitionElement.addEventListener(TRANSITION_END, handler);\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement);\n }\n }, emulatedDuration);\n };\n var getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length;\n let index = list.indexOf(activeElement);\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];\n }\n index += shouldGetNext ? 1 : -1;\n if (isCycleAllowed) {\n index = (index + listLength) % listLength;\n }\n return list[Math.max(0, Math.min(index, listLength - 1))];\n };\n var namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\n var stripNameRegex = /\\..*/;\n var stripUidRegex = /::\\d+$/;\n var eventRegistry = {};\n var uidEvent = 1;\n var customEvents = {\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\"\n };\n var nativeEvents = /* @__PURE__ */ new Set([\"click\", \"dblclick\", \"mouseup\", \"mousedown\", \"contextmenu\", \"mousewheel\", \"DOMMouseScroll\", \"mouseover\", \"mouseout\", \"mousemove\", \"selectstart\", \"selectend\", \"keydown\", \"keypress\", \"keyup\", \"orientationchange\", \"touchstart\", \"touchmove\", \"touchend\", \"touchcancel\", \"pointerdown\", \"pointermove\", \"pointerup\", \"pointerleave\", \"pointercancel\", \"gesturestart\", \"gesturechange\", \"gestureend\", \"focus\", \"blur\", \"change\", \"reset\", \"select\", \"submit\", \"focusin\", \"focusout\", \"load\", \"unload\", \"beforeunload\", \"resize\", \"move\", \"DOMContentLoaded\", \"readystatechange\", \"error\", \"abort\", \"scroll\"]);\n function makeEventUid(element, uid) {\n return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;\n }\n function getElementEvents(element) {\n const uid = makeEventUid(element);\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n return eventRegistry[uid];\n }\n function bootstrapHandler(element, fn2) {\n return function handler(event2) {\n hydrateObj(event2, {\n delegateTarget: element\n });\n if (handler.oneOff) {\n EventHandler.off(element, event2.type, fn2);\n }\n return fn2.apply(element, [event2]);\n };\n }\n function bootstrapDelegationHandler(element, selector, fn2) {\n return function handler(event2) {\n const domElements = element.querySelectorAll(selector);\n for (let {\n target\n } = event2; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue;\n }\n hydrateObj(event2, {\n delegateTarget: target\n });\n if (handler.oneOff) {\n EventHandler.off(element, event2.type, selector, fn2);\n }\n return fn2.apply(target, [event2]);\n }\n }\n };\n }\n function findHandler(events2, callable, delegationSelector = null) {\n return Object.values(events2).find((event2) => event2.callable === callable && event2.delegationSelector === delegationSelector);\n }\n function normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === \"string\";\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n let typeEvent = getTypeEvent(originalTypeEvent);\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent;\n }\n return [isDelegated, callable, typeEvent];\n }\n function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== \"string\" || !element) {\n return;\n }\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n if (originalTypeEvent in customEvents) {\n const wrapFunction = (fn3) => {\n return function(event2) {\n if (!event2.relatedTarget || event2.relatedTarget !== event2.delegateTarget && !event2.delegateTarget.contains(event2.relatedTarget)) {\n return fn3.call(this, event2);\n }\n };\n };\n callable = wrapFunction(callable);\n }\n const events2 = getElementEvents(element);\n const handlers = events2[typeEvent] || (events2[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n return;\n }\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, \"\"));\n const fn2 = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);\n fn2.delegationSelector = isDelegated ? handler : null;\n fn2.callable = callable;\n fn2.oneOff = oneOff;\n fn2.uidEvent = uid;\n handlers[uid] = fn2;\n element.addEventListener(typeEvent, fn2, isDelegated);\n }\n function removeHandler(element, events2, typeEvent, handler, delegationSelector) {\n const fn2 = findHandler(events2[typeEvent], handler, delegationSelector);\n if (!fn2) {\n return;\n }\n element.removeEventListener(typeEvent, fn2, Boolean(delegationSelector));\n delete events2[typeEvent][fn2.uidEvent];\n }\n function removeNamespacedHandlers(element, events2, typeEvent, namespace) {\n const storeElementEvent = events2[typeEvent] || {};\n for (const [handlerKey, event2] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events2, typeEvent, event2.callable, event2.delegationSelector);\n }\n }\n }\n function getTypeEvent(event2) {\n event2 = event2.replace(stripNameRegex, \"\");\n return customEvents[event2] || event2;\n }\n var EventHandler = {\n on(element, event2, handler, delegationFunction) {\n addHandler(element, event2, handler, delegationFunction, false);\n },\n one(element, event2, handler, delegationFunction) {\n addHandler(element, event2, handler, delegationFunction, true);\n },\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== \"string\" || !element) {\n return;\n }\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n const inNamespace = typeEvent !== originalTypeEvent;\n const events2 = getElementEvents(element);\n const storeElementEvent = events2[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith(\".\");\n if (typeof callable !== \"undefined\") {\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n removeHandler(element, events2, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n if (isNamespace) {\n for (const elementEvent of Object.keys(events2)) {\n removeNamespacedHandlers(element, events2, elementEvent, originalTypeEvent.slice(1));\n }\n }\n for (const [keyHandlers, event2] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, \"\");\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events2, typeEvent, event2.callable, event2.delegationSelector);\n }\n }\n },\n trigger(element, event2, args) {\n if (typeof event2 !== \"string\" || !element) {\n return null;\n }\n const $ = getjQuery();\n const typeEvent = getTypeEvent(event2);\n const inNamespace = event2 !== typeEvent;\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n if (inNamespace && $) {\n jQueryEvent = $.Event(event2, args);\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n const evt = hydrateObj(new Event(event2, {\n bubbles,\n cancelable: true\n }), args);\n if (defaultPrevented) {\n evt.preventDefault();\n }\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n return evt;\n }\n };\n function hydrateObj(obj, meta = {}) {\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value;\n } catch (_unused) {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value;\n }\n });\n }\n }\n return obj;\n }\n function normalizeData(value) {\n if (value === \"true\") {\n return true;\n }\n if (value === \"false\") {\n return false;\n }\n if (value === Number(value).toString()) {\n return Number(value);\n }\n if (value === \"\" || value === \"null\") {\n return null;\n }\n if (typeof value !== \"string\") {\n return value;\n }\n try {\n return JSON.parse(decodeURIComponent(value));\n } catch (_unused) {\n return value;\n }\n }\n function normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, (chr) => `-${chr.toLowerCase()}`);\n }\n var Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);\n },\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);\n },\n getDataAttributes(element) {\n if (!element) {\n return {};\n }\n const attributes = {};\n const bsKeys = Object.keys(element.dataset).filter((key) => key.startsWith(\"bs\") && !key.startsWith(\"bsConfig\"));\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, \"\");\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);\n attributes[pureKey] = normalizeData(element.dataset[key]);\n }\n return attributes;\n },\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));\n }\n };\n var Config = class {\n // Getters\n static get Default() {\n return {};\n }\n static get DefaultType() {\n return {};\n }\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!');\n }\n _getConfig(config) {\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n _configAfterMerge(config) {\n return config;\n }\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement2(element) ? Manipulator.getDataAttribute(element, \"config\") : {};\n return {\n ...this.constructor.Default,\n ...typeof jsonConfig === \"object\" ? jsonConfig : {},\n ...isElement2(element) ? Manipulator.getDataAttributes(element) : {},\n ...typeof config === \"object\" ? config : {}\n };\n }\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const [property, expectedTypes] of Object.entries(configTypes)) {\n const value = config[property];\n const valueType = isElement2(value) ? \"element\" : toType(value);\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n }\n }\n }\n };\n var VERSION = \"5.3.3\";\n var BaseComponent = class extends Config {\n constructor(element, config) {\n super();\n element = getElement(element);\n if (!element) {\n return;\n }\n this._element = element;\n this._config = this._getConfig(config);\n Data.set(this._element, this.constructor.DATA_KEY, this);\n }\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY);\n EventHandler.off(this._element, this.constructor.EVENT_KEY);\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null;\n }\n }\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated);\n }\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n // Static\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY);\n }\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === \"object\" ? config : null);\n }\n static get VERSION() {\n return VERSION;\n }\n static get DATA_KEY() {\n return `bs.${this.NAME}`;\n }\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`;\n }\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`;\n }\n };\n var getSelector = (element) => {\n let selector = element.getAttribute(\"data-bs-target\");\n if (!selector || selector === \"#\") {\n let hrefAttribute = element.getAttribute(\"href\");\n if (!hrefAttribute || !hrefAttribute.includes(\"#\") && !hrefAttribute.startsWith(\".\")) {\n return null;\n }\n if (hrefAttribute.includes(\"#\") && !hrefAttribute.startsWith(\"#\")) {\n hrefAttribute = `#${hrefAttribute.split(\"#\")[1]}`;\n }\n selector = hrefAttribute && hrefAttribute !== \"#\" ? hrefAttribute.trim() : null;\n }\n return selector ? selector.split(\",\").map((sel) => parseSelector(sel)).join(\",\") : null;\n };\n var SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n },\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector);\n },\n children(element, selector) {\n return [].concat(...element.children).filter((child) => child.matches(selector));\n },\n parents(element, selector) {\n const parents = [];\n let ancestor = element.parentNode.closest(selector);\n while (ancestor) {\n parents.push(ancestor);\n ancestor = ancestor.parentNode.closest(selector);\n }\n return parents;\n },\n prev(element, selector) {\n let previous = element.previousElementSibling;\n while (previous) {\n if (previous.matches(selector)) {\n return [previous];\n }\n previous = previous.previousElementSibling;\n }\n return [];\n },\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling;\n while (next) {\n if (next.matches(selector)) {\n return [next];\n }\n next = next.nextElementSibling;\n }\n return [];\n },\n focusableChildren(element) {\n const focusables = [\"a\", \"button\", \"input\", \"textarea\", \"select\", \"details\", \"[tabindex]\", '[contenteditable=\"true\"]'].map((selector) => `${selector}:not([tabindex^=\"-\"])`).join(\",\");\n return this.find(focusables, element).filter((el) => !isDisabled(el) && isVisible(el));\n },\n getSelectorFromElement(element) {\n const selector = getSelector(element);\n if (selector) {\n return SelectorEngine.findOne(selector) ? selector : null;\n }\n return null;\n },\n getElementFromSelector(element) {\n const selector = getSelector(element);\n return selector ? SelectorEngine.findOne(selector) : null;\n },\n getMultipleElementsFromSelector(element) {\n const selector = getSelector(element);\n return selector ? SelectorEngine.find(selector) : [];\n }\n };\n var enableDismissTrigger = (component, method = \"hide\") => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`;\n const name = component.NAME;\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function(event2) {\n if ([\"A\", \"AREA\"].includes(this.tagName)) {\n event2.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`);\n const instance = component.getOrCreateInstance(target);\n instance[method]();\n });\n };\n var NAME$f = \"alert\";\n var DATA_KEY$a = \"bs.alert\";\n var EVENT_KEY$b = `.${DATA_KEY$a}`;\n var EVENT_CLOSE = `close${EVENT_KEY$b}`;\n var EVENT_CLOSED = `closed${EVENT_KEY$b}`;\n var CLASS_NAME_FADE$5 = \"fade\";\n var CLASS_NAME_SHOW$8 = \"show\";\n var Alert = class _Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$f;\n }\n // Public\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);\n if (closeEvent.defaultPrevented) {\n return;\n }\n this._element.classList.remove(CLASS_NAME_SHOW$8);\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated);\n }\n // Private\n _destroyElement() {\n this._element.remove();\n EventHandler.trigger(this._element, EVENT_CLOSED);\n this.dispose();\n }\n // Static\n static jQueryInterface(config) {\n return this.each(function() {\n const data = _Alert.getOrCreateInstance(this);\n if (typeof config !== \"string\") {\n return;\n }\n if (data[config] === void 0 || config.startsWith(\"_\") || config === \"constructor\") {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n });\n }\n };\n enableDismissTrigger(Alert, \"close\");\n defineJQueryPlugin(Alert);\n var NAME$e = \"button\";\n var DATA_KEY$9 = \"bs.button\";\n var EVENT_KEY$a = `.${DATA_KEY$9}`;\n var DATA_API_KEY$6 = \".data-api\";\n var CLASS_NAME_ACTIVE$3 = \"active\";\n var SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle=\"button\"]';\n var EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;\n var Button = class _Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$e;\n }\n // Public\n toggle() {\n this._element.setAttribute(\"aria-pressed\", this._element.classList.toggle(CLASS_NAME_ACTIVE$3));\n }\n // Static\n static jQueryInterface(config) {\n return this.each(function() {\n const data = _Button.getOrCreateInstance(this);\n if (config === \"toggle\") {\n data[config]();\n }\n });\n }\n };\n EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, (event2) => {\n event2.preventDefault();\n const button = event2.target.closest(SELECTOR_DATA_TOGGLE$5);\n const data = Button.getOrCreateInstance(button);\n data.toggle();\n });\n defineJQueryPlugin(Button);\n var NAME$d = \"swipe\";\n var EVENT_KEY$9 = \".bs.swipe\";\n var EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;\n var EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;\n var EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;\n var EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;\n var EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;\n var POINTER_TYPE_TOUCH = \"touch\";\n var POINTER_TYPE_PEN = \"pen\";\n var CLASS_NAME_POINTER_EVENT = \"pointer-event\";\n var SWIPE_THRESHOLD = 40;\n var Default$c = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n };\n var DefaultType$c = {\n endCallback: \"(function|null)\",\n leftCallback: \"(function|null)\",\n rightCallback: \"(function|null)\"\n };\n var Swipe = class _Swipe extends Config {\n constructor(element, config) {\n super();\n this._element = element;\n if (!element || !_Swipe.isSupported()) {\n return;\n }\n this._config = this._getConfig(config);\n this._deltaX = 0;\n this._supportPointerEvents = Boolean(window.PointerEvent);\n this._initEvents();\n }\n // Getters\n static get Default() {\n return Default$c;\n }\n static get DefaultType() {\n return DefaultType$c;\n }\n static get NAME() {\n return NAME$d;\n }\n // Public\n dispose() {\n EventHandler.off(this._element, EVENT_KEY$9);\n }\n // Private\n _start(event2) {\n if (!this._supportPointerEvents) {\n this._deltaX = event2.touches[0].clientX;\n return;\n }\n if (this._eventIsPointerPenTouch(event2)) {\n this._deltaX = event2.clientX;\n }\n }\n _end(event2) {\n if (this._eventIsPointerPenTouch(event2)) {\n this._deltaX = event2.clientX - this._deltaX;\n }\n this._handleSwipe();\n execute(this._config.endCallback);\n }\n _move(event2) {\n this._deltaX = event2.touches && event2.touches.length > 1 ? 0 : event2.touches[0].clientX - this._deltaX;\n }\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX);\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return;\n }\n const direction = absDeltaX / this._deltaX;\n this._deltaX = 0;\n if (!direction) {\n return;\n }\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);\n }\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, (event2) => this._start(event2));\n EventHandler.on(this._element, EVENT_POINTERUP, (event2) => this._end(event2));\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, (event2) => this._start(event2));\n EventHandler.on(this._element, EVENT_TOUCHMOVE, (event2) => this._move(event2));\n EventHandler.on(this._element, EVENT_TOUCHEND, (event2) => this._end(event2));\n }\n }\n _eventIsPointerPenTouch(event2) {\n return this._supportPointerEvents && (event2.pointerType === POINTER_TYPE_PEN || event2.pointerType === POINTER_TYPE_TOUCH);\n }\n // Static\n static isSupported() {\n return \"ontouchstart\" in document.documentElement || navigator.maxTouchPoints > 0;\n }\n };\n var NAME$c = \"carousel\";\n var DATA_KEY$8 = \"bs.carousel\";\n var EVENT_KEY$8 = `.${DATA_KEY$8}`;\n var DATA_API_KEY$5 = \".data-api\";\n var ARROW_LEFT_KEY$1 = \"ArrowLeft\";\n var ARROW_RIGHT_KEY$1 = \"ArrowRight\";\n var TOUCHEVENT_COMPAT_WAIT = 500;\n var ORDER_NEXT = \"next\";\n var ORDER_PREV = \"prev\";\n var DIRECTION_LEFT = \"left\";\n var DIRECTION_RIGHT = \"right\";\n var EVENT_SLIDE = `slide${EVENT_KEY$8}`;\n var EVENT_SLID = `slid${EVENT_KEY$8}`;\n var EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`;\n var EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`;\n var EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`;\n var EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;\n var EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;\n var EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;\n var CLASS_NAME_CAROUSEL = \"carousel\";\n var CLASS_NAME_ACTIVE$2 = \"active\";\n var CLASS_NAME_SLIDE = \"slide\";\n var CLASS_NAME_END = \"carousel-item-end\";\n var CLASS_NAME_START = \"carousel-item-start\";\n var CLASS_NAME_NEXT = \"carousel-item-next\";\n var CLASS_NAME_PREV = \"carousel-item-prev\";\n var SELECTOR_ACTIVE = \".active\";\n var SELECTOR_ITEM = \".carousel-item\";\n var SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;\n var SELECTOR_ITEM_IMG = \".carousel-item img\";\n var SELECTOR_INDICATORS = \".carousel-indicators\";\n var SELECTOR_DATA_SLIDE = \"[data-bs-slide], [data-bs-slide-to]\";\n var SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]';\n var KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT\n };\n var Default$b = {\n interval: 5e3,\n keyboard: true,\n pause: \"hover\",\n ride: false,\n touch: true,\n wrap: true\n };\n var DefaultType$b = {\n interval: \"(number|boolean)\",\n // TODO:v6 remove boolean support\n keyboard: \"boolean\",\n pause: \"(string|boolean)\",\n ride: \"(boolean|string)\",\n touch: \"boolean\",\n wrap: \"boolean\"\n };\n var Carousel = class _Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._interval = null;\n this._activeElement = null;\n this._isSliding = false;\n this.touchTimeout = null;\n this._swipeHelper = null;\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);\n this._addEventListeners();\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle();\n }\n }\n // Getters\n static get Default() {\n return Default$b;\n }\n static get DefaultType() {\n return DefaultType$b;\n }\n static get NAME() {\n return NAME$c;\n }\n // Public\n next() {\n this._slide(ORDER_NEXT);\n }\n nextWhenVisible() {\n if (!document.hidden && isVisible(this._element)) {\n this.next();\n }\n }\n prev() {\n this._slide(ORDER_PREV);\n }\n pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element);\n }\n this._clearInterval();\n }\n cycle() {\n this._clearInterval();\n this._updateInterval();\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);\n }\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return;\n }\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle());\n return;\n }\n this.cycle();\n }\n to(index) {\n const items = this._getItems();\n if (index > items.length - 1 || index < 0) {\n return;\n }\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index));\n return;\n }\n const activeIndex = this._getItemIndex(this._getActive());\n if (activeIndex === index) {\n return;\n }\n const order2 = index > activeIndex ? ORDER_NEXT : ORDER_PREV;\n this._slide(order2, items[index]);\n }\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose();\n }\n super.dispose();\n }\n // Private\n _configAfterMerge(config) {\n config.defaultInterval = config.interval;\n return config;\n }\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN$1, (event2) => this._keydown(event2));\n }\n if (this._config.pause === \"hover\") {\n EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());\n EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());\n }\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners();\n }\n }\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, (event2) => event2.preventDefault());\n }\n const endCallBack = () => {\n if (this._config.pause !== \"hover\") {\n return;\n }\n this.pause();\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout);\n }\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);\n };\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack\n };\n this._swipeHelper = new Swipe(this._element, swipeConfig);\n }\n _keydown(event2) {\n if (/input|textarea/i.test(event2.target.tagName)) {\n return;\n }\n const direction = KEY_TO_DIRECTION[event2.key];\n if (direction) {\n event2.preventDefault();\n this._slide(this._directionToOrder(direction));\n }\n }\n _getItemIndex(element) {\n return this._getItems().indexOf(element);\n }\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return;\n }\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);\n activeIndicator.removeAttribute(\"aria-current\");\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement);\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);\n newActiveIndicator.setAttribute(\"aria-current\", \"true\");\n }\n }\n _updateInterval() {\n const element = this._activeElement || this._getActive();\n if (!element) {\n return;\n }\n const elementInterval = Number.parseInt(element.getAttribute(\"data-bs-interval\"), 10);\n this._config.interval = elementInterval || this._config.defaultInterval;\n }\n _slide(order2, element = null) {\n if (this._isSliding) {\n return;\n }\n const activeElement = this._getActive();\n const isNext = order2 === ORDER_NEXT;\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);\n if (nextElement === activeElement) {\n return;\n }\n const nextElementIndex = this._getItemIndex(nextElement);\n const triggerEvent = (eventName) => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order2),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n });\n };\n const slideEvent = triggerEvent(EVENT_SLIDE);\n if (slideEvent.defaultPrevented) {\n return;\n }\n if (!activeElement || !nextElement) {\n return;\n }\n const isCycling = Boolean(this._interval);\n this.pause();\n this._isSliding = true;\n this._setActiveIndicatorElement(nextElementIndex);\n this._activeElement = nextElement;\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;\n nextElement.classList.add(orderClassName);\n reflow(nextElement);\n activeElement.classList.add(directionalClassName);\n nextElement.classList.add(directionalClassName);\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName);\n nextElement.classList.add(CLASS_NAME_ACTIVE$2);\n activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);\n this._isSliding = false;\n triggerEvent(EVENT_SLID);\n };\n this._queueCallback(completeCallBack, activeElement, this._isAnimated());\n if (isCycling) {\n this.cycle();\n }\n }\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE);\n }\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n }\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element);\n }\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n }\n _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;\n }\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;\n }\n _orderToDirection(order2) {\n if (isRTL()) {\n return order2 === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return order2 === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;\n }\n // Static\n static jQueryInterface(config) {\n return this.each(function() {\n const data = _Carousel.getOrCreateInstance(this, config);\n if (typeof config === \"number\") {\n data.to(config);\n return;\n }\n if (typeof config === \"string\") {\n if (data[config] === void 0 || config.startsWith(\"_\") || config === \"constructor\") {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n };\n EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function(event2) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return;\n }\n event2.preventDefault();\n const carousel = Carousel.getOrCreateInstance(target);\n const slideIndex = this.getAttribute(\"data-bs-slide-to\");\n if (slideIndex) {\n carousel.to(slideIndex);\n carousel._maybeEnableCycle();\n return;\n }\n if (Manipulator.getDataAttribute(this, \"slide\") === \"next\") {\n carousel.next();\n carousel._maybeEnableCycle();\n return;\n }\n carousel.prev();\n carousel._maybeEnableCycle();\n });\n EventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel);\n }\n });\n defineJQueryPlugin(Carousel);\n var NAME$b = \"collapse\";\n var DATA_KEY$7 = \"bs.collapse\";\n var EVENT_KEY$7 = `.${DATA_KEY$7}`;\n var DATA_API_KEY$4 = \".data-api\";\n var EVENT_SHOW$6 = `show${EVENT_KEY$7}`;\n var EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`;\n var EVENT_HIDE$6 = `hide${EVENT_KEY$7}`;\n var EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`;\n var EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;\n var CLASS_NAME_SHOW$7 = \"show\";\n var CLASS_NAME_COLLAPSE = \"collapse\";\n var CLASS_NAME_COLLAPSING = \"collapsing\";\n var CLASS_NAME_COLLAPSED = \"collapsed\";\n var CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\n var CLASS_NAME_HORIZONTAL = \"collapse-horizontal\";\n var WIDTH = \"width\";\n var HEIGHT = \"height\";\n var SELECTOR_ACTIVES = \".collapse.show, .collapse.collapsing\";\n var SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle=\"collapse\"]';\n var Default$a = {\n parent: null,\n toggle: true\n };\n var DefaultType$a = {\n parent: \"(null|element)\",\n toggle: \"boolean\"\n };\n var Collapse = class _Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isTransitioning = false;\n this._triggerArray = [];\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);\n for (const elem of toggleList) {\n const selector = SelectorEngine.getSelectorFromElement(elem);\n const filterElement = SelectorEngine.find(selector).filter((foundElement) => foundElement === this._element);\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem);\n }\n }\n this._initializeChildren();\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n }\n if (this._config.toggle) {\n this.toggle();\n }\n }\n // Getters\n static get Default() {\n return Default$a;\n }\n static get DefaultType() {\n return DefaultType$a;\n }\n static get NAME() {\n return NAME$b;\n }\n // Public\n toggle() {\n if (this._isShown()) {\n this.hide();\n } else {\n this.show();\n }\n }\n show() {\n if (this._isTransitioning || this._isShown()) {\n return;\n }\n let activeChildren = [];\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter((element) => element !== this._element).map((element) => _Collapse.getOrCreateInstance(element, {\n toggle: false\n }));\n }\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return;\n }\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);\n if (startEvent.defaultPrevented) {\n return;\n }\n for (const activeInstance of activeChildren) {\n activeInstance.hide();\n }\n const dimension = this._getDimension();\n this._element.classList.remove(CLASS_NAME_COLLAPSE);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.style[dimension] = 0;\n this._addAriaAndCollapsedClass(this._triggerArray, true);\n this._isTransitioning = true;\n const complete = () => {\n this._isTransitioning = false;\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n this._element.style[dimension] = \"\";\n EventHandler.trigger(this._element, EVENT_SHOWN$6);\n };\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n const scrollSize = `scroll${capitalizedDimension}`;\n this._queueCallback(complete, this._element, true);\n this._element.style[dimension] = `${this._element[scrollSize]}px`;\n }\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return;\n }\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);\n if (startEvent.defaultPrevented) {\n return;\n }\n const dimension = this._getDimension();\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n for (const trigger of this._triggerArray) {\n const element = SelectorEngine.getElementFromSelector(trigger);\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false);\n }\n }\n this._isTransitioning = true;\n const complete = () => {\n this._isTransitioning = false;\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n this._element.classList.add(CLASS_NAME_COLLAPSE);\n EventHandler.trigger(this._element, EVENT_HIDDEN$6);\n };\n this._element.style[dimension] = \"\";\n this._queueCallback(complete, this._element, true);\n }\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW$7);\n }\n // Private\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle);\n config.parent = getElement(config.parent);\n return config;\n }\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n }\n _initializeChildren() {\n if (!this._config.parent) {\n return;\n }\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);\n for (const element of children) {\n const selected = SelectorEngine.getElementFromSelector(element);\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected));\n }\n }\n }\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n return SelectorEngine.find(selector, this._config.parent).filter((element) => !children.includes(element));\n }\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return;\n }\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);\n element.setAttribute(\"aria-expanded\", isOpen);\n }\n }\n // Static\n static jQueryInterface(config) {\n const _config = {};\n if (typeof config === \"string\" && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n return this.each(function() {\n const data = _Collapse.getOrCreateInstance(this, _config);\n if (typeof config === \"string\") {\n if (typeof data[config] === \"undefined\") {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n };\n EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function(event2) {\n if (event2.target.tagName === \"A\" || event2.delegateTarget && event2.delegateTarget.tagName === \"A\") {\n event2.preventDefault();\n }\n for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n Collapse.getOrCreateInstance(element, {\n toggle: false\n }).toggle();\n }\n });\n defineJQueryPlugin(Collapse);\n var NAME$a = \"dropdown\";\n var DATA_KEY$6 = \"bs.dropdown\";\n var EVENT_KEY$6 = `.${DATA_KEY$6}`;\n var DATA_API_KEY$3 = \".data-api\";\n var ESCAPE_KEY$2 = \"Escape\";\n var TAB_KEY$1 = \"Tab\";\n var ARROW_UP_KEY$1 = \"ArrowUp\";\n var ARROW_DOWN_KEY$1 = \"ArrowDown\";\n var RIGHT_MOUSE_BUTTON = 2;\n var EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;\n var EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;\n var EVENT_SHOW$5 = `show${EVENT_KEY$6}`;\n var EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;\n var EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;\n var EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;\n var EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;\n var CLASS_NAME_SHOW$6 = \"show\";\n var CLASS_NAME_DROPUP = \"dropup\";\n var CLASS_NAME_DROPEND = \"dropend\";\n var CLASS_NAME_DROPSTART = \"dropstart\";\n var CLASS_NAME_DROPUP_CENTER = \"dropup-center\";\n var CLASS_NAME_DROPDOWN_CENTER = \"dropdown-center\";\n var SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)';\n var SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`;\n var SELECTOR_MENU = \".dropdown-menu\";\n var SELECTOR_NAVBAR = \".navbar\";\n var SELECTOR_NAVBAR_NAV = \".navbar-nav\";\n var SELECTOR_VISIBLE_ITEMS = \".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)\";\n var PLACEMENT_TOP = isRTL() ? \"top-end\" : \"top-start\";\n var PLACEMENT_TOPEND = isRTL() ? \"top-start\" : \"top-end\";\n var PLACEMENT_BOTTOM = isRTL() ? \"bottom-end\" : \"bottom-start\";\n var PLACEMENT_BOTTOMEND = isRTL() ? \"bottom-start\" : \"bottom-end\";\n var PLACEMENT_RIGHT = isRTL() ? \"left-start\" : \"right-start\";\n var PLACEMENT_LEFT = isRTL() ? \"right-start\" : \"left-start\";\n var PLACEMENT_TOPCENTER = \"top\";\n var PLACEMENT_BOTTOMCENTER = \"bottom\";\n var Default$9 = {\n autoClose: true,\n boundary: \"clippingParents\",\n display: \"dynamic\",\n offset: [0, 2],\n popperConfig: null,\n reference: \"toggle\"\n };\n var DefaultType$9 = {\n autoClose: \"(boolean|string)\",\n boundary: \"(string|element)\",\n display: \"string\",\n offset: \"(array|string|function)\",\n popperConfig: \"(null|object|function)\",\n reference: \"(string|element|object)\"\n };\n var Dropdown = class _Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._popper = null;\n this._parent = this._element.parentNode;\n this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);\n this._inNavbar = this._detectNavbar();\n }\n // Getters\n static get Default() {\n return Default$9;\n }\n static get DefaultType() {\n return DefaultType$9;\n }\n static get NAME() {\n return NAME$a;\n }\n // Public\n toggle() {\n return this._isShown() ? this.hide() : this.show();\n }\n show() {\n if (isDisabled(this._element) || this._isShown()) {\n return;\n }\n const relatedTarget = {\n relatedTarget: this._element\n };\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);\n if (showEvent.defaultPrevented) {\n return;\n }\n this._createPopper();\n if (\"ontouchstart\" in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, \"mouseover\", noop);\n }\n }\n this._element.focus();\n this._element.setAttribute(\"aria-expanded\", true);\n this._menu.classList.add(CLASS_NAME_SHOW$6);\n this._element.classList.add(CLASS_NAME_SHOW$6);\n EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);\n }\n hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return;\n }\n const relatedTarget = {\n relatedTarget: this._element\n };\n this._completeHide(relatedTarget);\n }\n dispose() {\n if (this._popper) {\n this._popper.destroy();\n }\n super.dispose();\n }\n update() {\n this._inNavbar = this._detectNavbar();\n if (this._popper) {\n this._popper.update();\n }\n }\n // Private\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);\n if (hideEvent.defaultPrevented) {\n return;\n }\n if (\"ontouchstart\" in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, \"mouseover\", noop);\n }\n }\n if (this._popper) {\n this._popper.destroy();\n }\n this._menu.classList.remove(CLASS_NAME_SHOW$6);\n this._element.classList.remove(CLASS_NAME_SHOW$6);\n this._element.setAttribute(\"aria-expanded\", \"false\");\n Manipulator.removeDataAttribute(this._menu, \"popper\");\n EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);\n }\n _getConfig(config) {\n config = super._getConfig(config);\n if (typeof config.reference === \"object\" && !isElement2(config.reference) && typeof config.reference.getBoundingClientRect !== \"function\") {\n throw new TypeError(`${NAME$a.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`);\n }\n return config;\n }\n _createPopper() {\n if (typeof lib_exports === \"undefined\") {\n throw new TypeError(\"Bootstrap's dropdowns require Popper (https://popper.js.org)\");\n }\n let referenceElement = this._element;\n if (this._config.reference === \"parent\") {\n referenceElement = this._parent;\n } else if (isElement2(this._config.reference)) {\n referenceElement = getElement(this._config.reference);\n } else if (typeof this._config.reference === \"object\") {\n referenceElement = this._config.reference;\n }\n const popperConfig = this._getPopperConfig();\n this._popper = createPopper3(referenceElement, this._menu, popperConfig);\n }\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW$6);\n }\n _getPlacement() {\n const parentDropdown = this._parent;\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER;\n }\n const isEnd = getComputedStyle(this._menu).getPropertyValue(\"--bs-position\").trim() === \"end\";\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n }\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;\n }\n _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null;\n }\n _getOffset() {\n const {\n offset: offset2\n } = this._config;\n if (typeof offset2 === \"string\") {\n return offset2.split(\",\").map((value) => Number.parseInt(value, 10));\n }\n if (typeof offset2 === \"function\") {\n return (popperData) => offset2(popperData, this._element);\n }\n return offset2;\n }\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: \"preventOverflow\",\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: \"offset\",\n options: {\n offset: this._getOffset()\n }\n }]\n };\n if (this._inNavbar || this._config.display === \"static\") {\n Manipulator.setDataAttribute(this._menu, \"popper\", \"static\");\n defaultBsPopperConfig.modifiers = [{\n name: \"applyStyles\",\n enabled: false\n }];\n }\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n };\n }\n _selectMenuItem({\n key,\n target\n }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter((element) => isVisible(element));\n if (!items.length) {\n return;\n }\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();\n }\n // Static\n static jQueryInterface(config) {\n return this.each(function() {\n const data = _Dropdown.getOrCreateInstance(this, config);\n if (typeof config !== \"string\") {\n return;\n }\n if (typeof data[config] === \"undefined\") {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n static clearMenus(event2) {\n if (event2.button === RIGHT_MOUSE_BUTTON || event2.type === \"keyup\" && event2.key !== TAB_KEY$1) {\n return;\n }\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);\n for (const toggle of openToggles) {\n const context = _Dropdown.getInstance(toggle);\n if (!context || context._config.autoClose === false) {\n continue;\n }\n const composedPath = event2.composedPath();\n const isMenuTarget = composedPath.includes(context._menu);\n if (composedPath.includes(context._element) || context._config.autoClose === \"inside\" && !isMenuTarget || context._config.autoClose === \"outside\" && isMenuTarget) {\n continue;\n }\n if (context._menu.contains(event2.target) && (event2.type === \"keyup\" && event2.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event2.target.tagName))) {\n continue;\n }\n const relatedTarget = {\n relatedTarget: context._element\n };\n if (event2.type === \"click\") {\n relatedTarget.clickEvent = event2;\n }\n context._completeHide(relatedTarget);\n }\n }\n static dataApiKeydownHandler(event2) {\n const isInput = /input|textarea/i.test(event2.target.tagName);\n const isEscapeEvent = event2.key === ESCAPE_KEY$2;\n const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event2.key);\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return;\n }\n if (isInput && !isEscapeEvent) {\n return;\n }\n event2.preventDefault();\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event2.delegateTarget.parentNode);\n const instance = _Dropdown.getOrCreateInstance(getToggleButton);\n if (isUpOrDownEvent) {\n event2.stopPropagation();\n instance.show();\n instance._selectMenuItem(event2);\n return;\n }\n if (instance._isShown()) {\n event2.stopPropagation();\n instance.hide();\n getToggleButton.focus();\n }\n }\n };\n EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);\n EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);\n EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);\n EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);\n EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function(event2) {\n event2.preventDefault();\n Dropdown.getOrCreateInstance(this).toggle();\n });\n defineJQueryPlugin(Dropdown);\n var NAME$9 = \"backdrop\";\n var CLASS_NAME_FADE$4 = \"fade\";\n var CLASS_NAME_SHOW$5 = \"show\";\n var EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;\n var Default$8 = {\n className: \"modal-backdrop\",\n clickCallback: null,\n isAnimated: false,\n isVisible: true,\n // if false, we use the backdrop helper without adding any element to the dom\n rootElement: \"body\"\n // give the choice to place backdrop under different elements\n };\n var DefaultType$8 = {\n className: \"string\",\n clickCallback: \"(function|null)\",\n isAnimated: \"boolean\",\n isVisible: \"boolean\",\n rootElement: \"(element|string)\"\n };\n var Backdrop = class extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isAppended = false;\n this._element = null;\n }\n // Getters\n static get Default() {\n return Default$8;\n }\n static get DefaultType() {\n return DefaultType$8;\n }\n static get NAME() {\n return NAME$9;\n }\n // Public\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n this._append();\n const element = this._getElement();\n if (this._config.isAnimated) {\n reflow(element);\n }\n element.classList.add(CLASS_NAME_SHOW$5);\n this._emulateAnimation(() => {\n execute(callback);\n });\n }\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n this._getElement().classList.remove(CLASS_NAME_SHOW$5);\n this._emulateAnimation(() => {\n this.dispose();\n execute(callback);\n });\n }\n dispose() {\n if (!this._isAppended) {\n return;\n }\n EventHandler.off(this._element, EVENT_MOUSEDOWN);\n this._element.remove();\n this._isAppended = false;\n }\n // Private\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement(\"div\");\n backdrop.className = this._config.className;\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE$4);\n }\n this._element = backdrop;\n }\n return this._element;\n }\n _configAfterMerge(config) {\n config.rootElement = getElement(config.rootElement);\n return config;\n }\n _append() {\n if (this._isAppended) {\n return;\n }\n const element = this._getElement();\n this._config.rootElement.append(element);\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback);\n });\n this._isAppended = true;\n }\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated);\n }\n };\n var NAME$8 = \"focustrap\";\n var DATA_KEY$5 = \"bs.focustrap\";\n var EVENT_KEY$5 = `.${DATA_KEY$5}`;\n var EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;\n var EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;\n var TAB_KEY = \"Tab\";\n var TAB_NAV_FORWARD = \"forward\";\n var TAB_NAV_BACKWARD = \"backward\";\n var Default$7 = {\n autofocus: true,\n trapElement: null\n // The element to trap focus inside of\n };\n var DefaultType$7 = {\n autofocus: \"boolean\",\n trapElement: \"element\"\n };\n var FocusTrap = class extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isActive = false;\n this._lastTabNavDirection = null;\n }\n // Getters\n static get Default() {\n return Default$7;\n }\n static get DefaultType() {\n return DefaultType$7;\n }\n static get NAME() {\n return NAME$8;\n }\n // Public\n activate() {\n if (this._isActive) {\n return;\n }\n if (this._config.autofocus) {\n this._config.trapElement.focus();\n }\n EventHandler.off(document, EVENT_KEY$5);\n EventHandler.on(document, EVENT_FOCUSIN$2, (event2) => this._handleFocusin(event2));\n EventHandler.on(document, EVENT_KEYDOWN_TAB, (event2) => this._handleKeydown(event2));\n this._isActive = true;\n }\n deactivate() {\n if (!this._isActive) {\n return;\n }\n this._isActive = false;\n EventHandler.off(document, EVENT_KEY$5);\n }\n // Private\n _handleFocusin(event2) {\n const {\n trapElement\n } = this._config;\n if (event2.target === document || event2.target === trapElement || trapElement.contains(event2.target)) {\n return;\n }\n const elements = SelectorEngine.focusableChildren(trapElement);\n if (elements.length === 0) {\n trapElement.focus();\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus();\n } else {\n elements[0].focus();\n }\n }\n _handleKeydown(event2) {\n if (event2.key !== TAB_KEY) {\n return;\n }\n this._lastTabNavDirection = event2.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;\n }\n };\n var SELECTOR_FIXED_CONTENT = \".fixed-top, .fixed-bottom, .is-fixed, .sticky-top\";\n var SELECTOR_STICKY_CONTENT = \".sticky-top\";\n var PROPERTY_PADDING = \"padding-right\";\n var PROPERTY_MARGIN = \"margin-right\";\n var ScrollBarHelper = class {\n constructor() {\n this._element = document.body;\n }\n // Public\n getWidth() {\n const documentWidth = document.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n }\n hide() {\n const width = this.getWidth();\n this._disableOverFlow();\n this._setElementAttributes(this._element, PROPERTY_PADDING, (calculatedValue) => calculatedValue + width);\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, (calculatedValue) => calculatedValue + width);\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, (calculatedValue) => calculatedValue - width);\n }\n reset() {\n this._resetElementAttributes(this._element, \"overflow\");\n this._resetElementAttributes(this._element, PROPERTY_PADDING);\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);\n }\n isOverflowing() {\n return this.getWidth() > 0;\n }\n // Private\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, \"overflow\");\n this._element.style.overflow = \"hidden\";\n }\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth();\n const manipulationCallBack = (element) => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return;\n }\n this._saveInitialAttribute(element, styleProperty);\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);\n };\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty);\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue);\n }\n }\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = (element) => {\n const value = Manipulator.getDataAttribute(element, styleProperty);\n if (value === null) {\n element.style.removeProperty(styleProperty);\n return;\n }\n Manipulator.removeDataAttribute(element, styleProperty);\n element.style.setProperty(styleProperty, value);\n };\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n _applyManipulationCallback(selector, callBack) {\n if (isElement2(selector)) {\n callBack(selector);\n return;\n }\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel);\n }\n }\n };\n var NAME$7 = \"modal\";\n var DATA_KEY$4 = \"bs.modal\";\n var EVENT_KEY$4 = `.${DATA_KEY$4}`;\n var DATA_API_KEY$2 = \".data-api\";\n var ESCAPE_KEY$1 = \"Escape\";\n var EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;\n var EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;\n var EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;\n var EVENT_SHOW$4 = `show${EVENT_KEY$4}`;\n var EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;\n var EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;\n var EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;\n var EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;\n var EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;\n var EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;\n var CLASS_NAME_OPEN = \"modal-open\";\n var CLASS_NAME_FADE$3 = \"fade\";\n var CLASS_NAME_SHOW$4 = \"show\";\n var CLASS_NAME_STATIC = \"modal-static\";\n var OPEN_SELECTOR$1 = \".modal.show\";\n var SELECTOR_DIALOG = \".modal-dialog\";\n var SELECTOR_MODAL_BODY = \".modal-body\";\n var SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle=\"modal\"]';\n var Default$6 = {\n backdrop: true,\n focus: true,\n keyboard: true\n };\n var DefaultType$6 = {\n backdrop: \"(boolean|string)\",\n focus: \"boolean\",\n keyboard: \"boolean\"\n };\n var Modal = class _Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._isShown = false;\n this._isTransitioning = false;\n this._scrollBar = new ScrollBarHelper();\n this._addEventListeners();\n }\n // Getters\n static get Default() {\n return Default$6;\n }\n static get DefaultType() {\n return DefaultType$6;\n }\n static get NAME() {\n return NAME$7;\n }\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {\n relatedTarget\n });\n if (showEvent.defaultPrevented) {\n return;\n }\n this._isShown = true;\n this._isTransitioning = true;\n this._scrollBar.hide();\n document.body.classList.add(CLASS_NAME_OPEN);\n this._adjustDialog();\n this._backdrop.show(() => this._showElement(relatedTarget));\n }\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);\n if (hideEvent.defaultPrevented) {\n return;\n }\n this._isShown = false;\n this._isTransitioning = true;\n this._focustrap.deactivate();\n this._element.classList.remove(CLASS_NAME_SHOW$4);\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());\n }\n dispose() {\n EventHandler.off(window, EVENT_KEY$4);\n EventHandler.off(this._dialog, EVENT_KEY$4);\n this._backdrop.dispose();\n this._focustrap.deactivate();\n super.dispose();\n }\n handleUpdate() {\n this._adjustDialog();\n }\n // Private\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop),\n // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n });\n }\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n _showElement(relatedTarget) {\n if (!document.body.contains(this._element)) {\n document.body.append(this._element);\n }\n this._element.style.display = \"block\";\n this._element.removeAttribute(\"aria-hidden\");\n this._element.setAttribute(\"aria-modal\", true);\n this._element.setAttribute(\"role\", \"dialog\");\n this._element.scrollTop = 0;\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);\n if (modalBody) {\n modalBody.scrollTop = 0;\n }\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_SHOW$4);\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate();\n }\n this._isTransitioning = false;\n EventHandler.trigger(this._element, EVENT_SHOWN$4, {\n relatedTarget\n });\n };\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated());\n }\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, (event2) => {\n if (event2.key !== ESCAPE_KEY$1) {\n return;\n }\n if (this._config.keyboard) {\n this.hide();\n return;\n }\n this._triggerBackdropTransition();\n });\n EventHandler.on(window, EVENT_RESIZE$1, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog();\n }\n });\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, (event2) => {\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, (event22) => {\n if (this._element !== event2.target || this._element !== event22.target) {\n return;\n }\n if (this._config.backdrop === \"static\") {\n this._triggerBackdropTransition();\n return;\n }\n if (this._config.backdrop) {\n this.hide();\n }\n });\n });\n }\n _hideModal() {\n this._element.style.display = \"none\";\n this._element.setAttribute(\"aria-hidden\", true);\n this._element.removeAttribute(\"aria-modal\");\n this._element.removeAttribute(\"role\");\n this._isTransitioning = false;\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN);\n this._resetAdjustments();\n this._scrollBar.reset();\n EventHandler.trigger(this._element, EVENT_HIDDEN$4);\n });\n }\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE$3);\n }\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);\n if (hideEvent.defaultPrevented) {\n return;\n }\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const initialOverflowY = this._element.style.overflowY;\n if (initialOverflowY === \"hidden\" || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return;\n }\n if (!isModalOverflowing) {\n this._element.style.overflowY = \"hidden\";\n }\n this._element.classList.add(CLASS_NAME_STATIC);\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC);\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY;\n }, this._dialog);\n }, this._dialog);\n this._element.focus();\n }\n /**\n * The following methods are used to handle overflowing modals\n */\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const scrollbarWidth = this._scrollBar.getWidth();\n const isBodyOverflowing = scrollbarWidth > 0;\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = isRTL() ? \"paddingLeft\" : \"paddingRight\";\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? \"paddingRight\" : \"paddingLeft\";\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n }\n _resetAdjustments() {\n this._element.style.paddingLeft = \"\";\n this._element.style.paddingRight = \"\";\n }\n // Static\n static jQueryInterface(config, relatedTarget) {\n return this.each(function() {\n const data = _Modal.getOrCreateInstance(this, config);\n if (typeof config !== \"string\") {\n return;\n }\n if (typeof data[config] === \"undefined\") {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](relatedTarget);\n });\n }\n };\n EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function(event2) {\n const target = SelectorEngine.getElementFromSelector(this);\n if ([\"A\", \"AREA\"].includes(this.tagName)) {\n event2.preventDefault();\n }\n EventHandler.one(target, EVENT_SHOW$4, (showEvent) => {\n if (showEvent.defaultPrevented) {\n return;\n }\n EventHandler.one(target, EVENT_HIDDEN$4, () => {\n if (isVisible(this)) {\n this.focus();\n }\n });\n });\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide();\n }\n const data = Modal.getOrCreateInstance(target);\n data.toggle(this);\n });\n enableDismissTrigger(Modal);\n defineJQueryPlugin(Modal);\n var NAME$6 = \"offcanvas\";\n var DATA_KEY$3 = \"bs.offcanvas\";\n var EVENT_KEY$3 = `.${DATA_KEY$3}`;\n var DATA_API_KEY$1 = \".data-api\";\n var EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;\n var ESCAPE_KEY = \"Escape\";\n var CLASS_NAME_SHOW$3 = \"show\";\n var CLASS_NAME_SHOWING$1 = \"showing\";\n var CLASS_NAME_HIDING = \"hiding\";\n var CLASS_NAME_BACKDROP = \"offcanvas-backdrop\";\n var OPEN_SELECTOR = \".offcanvas.show\";\n var EVENT_SHOW$3 = `show${EVENT_KEY$3}`;\n var EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;\n var EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;\n var EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;\n var EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;\n var EVENT_RESIZE = `resize${EVENT_KEY$3}`;\n var EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;\n var EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;\n var SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle=\"offcanvas\"]';\n var Default$5 = {\n backdrop: true,\n keyboard: true,\n scroll: false\n };\n var DefaultType$5 = {\n backdrop: \"(boolean|string)\",\n keyboard: \"boolean\",\n scroll: \"boolean\"\n };\n var Offcanvas = class _Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isShown = false;\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._addEventListeners();\n }\n // Getters\n static get Default() {\n return Default$5;\n }\n static get DefaultType() {\n return DefaultType$5;\n }\n static get NAME() {\n return NAME$6;\n }\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n show(relatedTarget) {\n if (this._isShown) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {\n relatedTarget\n });\n if (showEvent.defaultPrevented) {\n return;\n }\n this._isShown = true;\n this._backdrop.show();\n if (!this._config.scroll) {\n new ScrollBarHelper().hide();\n }\n this._element.setAttribute(\"aria-modal\", true);\n this._element.setAttribute(\"role\", \"dialog\");\n this._element.classList.add(CLASS_NAME_SHOWING$1);\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate();\n }\n this._element.classList.add(CLASS_NAME_SHOW$3);\n this._element.classList.remove(CLASS_NAME_SHOWING$1);\n EventHandler.trigger(this._element, EVENT_SHOWN$3, {\n relatedTarget\n });\n };\n this._queueCallback(completeCallBack, this._element, true);\n }\n hide() {\n if (!this._isShown) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);\n if (hideEvent.defaultPrevented) {\n return;\n }\n this._focustrap.deactivate();\n this._element.blur();\n this._isShown = false;\n this._element.classList.add(CLASS_NAME_HIDING);\n this._backdrop.hide();\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);\n this._element.removeAttribute(\"aria-modal\");\n this._element.removeAttribute(\"role\");\n if (!this._config.scroll) {\n new ScrollBarHelper().reset();\n }\n EventHandler.trigger(this._element, EVENT_HIDDEN$3);\n };\n this._queueCallback(completeCallback, this._element, true);\n }\n dispose() {\n this._backdrop.dispose();\n this._focustrap.deactivate();\n super.dispose();\n }\n // Private\n _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === \"static\") {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n return;\n }\n this.hide();\n };\n const isVisible3 = Boolean(this._config.backdrop);\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible: isVisible3,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible3 ? clickCallback : null\n });\n }\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, (event2) => {\n if (event2.key !== ESCAPE_KEY) {\n return;\n }\n if (this._config.keyboard) {\n this.hide();\n return;\n }\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n });\n }\n // Static\n static jQueryInterface(config) {\n return this.each(function() {\n const data = _Offcanvas.getOrCreateInstance(this, config);\n if (typeof config !== \"string\") {\n return;\n }\n if (data[config] === void 0 || config.startsWith(\"_\") || config === \"constructor\") {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n });\n }\n };\n EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function(event2) {\n const target = SelectorEngine.getElementFromSelector(this);\n if ([\"A\", \"AREA\"].includes(this.tagName)) {\n event2.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n EventHandler.one(target, EVENT_HIDDEN$3, () => {\n if (isVisible(this)) {\n this.focus();\n }\n });\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide();\n }\n const data = Offcanvas.getOrCreateInstance(target);\n data.toggle(this);\n });\n EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show();\n }\n });\n EventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find(\"[aria-modal][class*=show][class*=offcanvas-]\")) {\n if (getComputedStyle(element).position !== \"fixed\") {\n Offcanvas.getOrCreateInstance(element).hide();\n }\n }\n });\n enableDismissTrigger(Offcanvas);\n defineJQueryPlugin(Offcanvas);\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n var DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n \"*\": [\"class\", \"dir\", \"id\", \"lang\", \"role\", ARIA_ATTRIBUTE_PATTERN],\n a: [\"target\", \"href\", \"title\", \"rel\"],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n dd: [],\n div: [],\n dl: [],\n dt: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: [\"src\", \"srcset\", \"alt\", \"title\", \"width\", \"height\"],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n };\n var uriAttributes = /* @__PURE__ */ new Set([\"background\", \"cite\", \"href\", \"itemtype\", \"longdesc\", \"poster\", \"src\", \"xlink:href\"]);\n var SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;\n var allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase();\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue));\n }\n return true;\n }\n return allowedAttributeList.filter((attributeRegex) => attributeRegex instanceof RegExp).some((regex) => regex.test(attributeName));\n };\n function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml;\n }\n if (sanitizeFunction && typeof sanitizeFunction === \"function\") {\n return sanitizeFunction(unsafeHtml);\n }\n const domParser = new window.DOMParser();\n const createdDocument = domParser.parseFromString(unsafeHtml, \"text/html\");\n const elements = [].concat(...createdDocument.body.querySelectorAll(\"*\"));\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase();\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove();\n continue;\n }\n const attributeList = [].concat(...element.attributes);\n const allowedAttributes = [].concat(allowList[\"*\"] || [], allowList[elementName] || []);\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName);\n }\n }\n }\n return createdDocument.body.innerHTML;\n }\n var NAME$5 = \"TemplateFactory\";\n var Default$4 = {\n allowList: DefaultAllowlist,\n content: {},\n // { selector : text , selector2 : text2 , }\n extraClass: \"\",\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: \"
\"\n };\n var DefaultType$4 = {\n allowList: \"object\",\n content: \"object\",\n extraClass: \"(string|function)\",\n html: \"boolean\",\n sanitize: \"boolean\",\n sanitizeFn: \"(null|function)\",\n template: \"string\"\n };\n var DefaultContentType = {\n entry: \"(string|element|function|null)\",\n selector: \"(string|element)\"\n };\n var TemplateFactory = class extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n }\n // Getters\n static get Default() {\n return Default$4;\n }\n static get DefaultType() {\n return DefaultType$4;\n }\n static get NAME() {\n return NAME$5;\n }\n // Public\n getContent() {\n return Object.values(this._config.content).map((config) => this._resolvePossibleFunction(config)).filter(Boolean);\n }\n hasContent() {\n return this.getContent().length > 0;\n }\n changeContent(content) {\n this._checkContent(content);\n this._config.content = {\n ...this._config.content,\n ...content\n };\n return this;\n }\n toHtml() {\n const templateWrapper = document.createElement(\"div\");\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template);\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector);\n }\n const template = templateWrapper.children[0];\n const extraClass = this._resolvePossibleFunction(this._config.extraClass);\n if (extraClass) {\n template.classList.add(...extraClass.split(\" \"));\n }\n return template;\n }\n // Private\n _typeCheckConfig(config) {\n super._typeCheckConfig(config);\n this._checkContent(config.content);\n }\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({\n selector,\n entry: content\n }, DefaultContentType);\n }\n }\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template);\n if (!templateElement) {\n return;\n }\n content = this._resolvePossibleFunction(content);\n if (!content) {\n templateElement.remove();\n return;\n }\n if (isElement2(content)) {\n this._putElementInTemplate(getElement(content), templateElement);\n return;\n }\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content);\n return;\n }\n templateElement.textContent = content;\n }\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;\n }\n _resolvePossibleFunction(arg) {\n return execute(arg, [this]);\n }\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = \"\";\n templateElement.append(element);\n return;\n }\n templateElement.textContent = element.textContent;\n }\n };\n var NAME$4 = \"tooltip\";\n var DISALLOWED_ATTRIBUTES = /* @__PURE__ */ new Set([\"sanitize\", \"allowList\", \"sanitizeFn\"]);\n var CLASS_NAME_FADE$2 = \"fade\";\n var CLASS_NAME_MODAL = \"modal\";\n var CLASS_NAME_SHOW$2 = \"show\";\n var SELECTOR_TOOLTIP_INNER = \".tooltip-inner\";\n var SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;\n var EVENT_MODAL_HIDE = \"hide.bs.modal\";\n var TRIGGER_HOVER = \"hover\";\n var TRIGGER_FOCUS = \"focus\";\n var TRIGGER_CLICK = \"click\";\n var TRIGGER_MANUAL = \"manual\";\n var EVENT_HIDE$2 = \"hide\";\n var EVENT_HIDDEN$2 = \"hidden\";\n var EVENT_SHOW$2 = \"show\";\n var EVENT_SHOWN$2 = \"shown\";\n var EVENT_INSERTED = \"inserted\";\n var EVENT_CLICK$1 = \"click\";\n var EVENT_FOCUSIN$1 = \"focusin\";\n var EVENT_FOCUSOUT$1 = \"focusout\";\n var EVENT_MOUSEENTER = \"mouseenter\";\n var EVENT_MOUSELEAVE = \"mouseleave\";\n var AttachmentMap = {\n AUTO: \"auto\",\n TOP: \"top\",\n RIGHT: isRTL() ? \"left\" : \"right\",\n BOTTOM: \"bottom\",\n LEFT: isRTL() ? \"right\" : \"left\"\n };\n var Default$3 = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: \"clippingParents\",\n container: false,\n customClass: \"\",\n delay: 0,\n fallbackPlacements: [\"top\", \"right\", \"bottom\", \"left\"],\n html: false,\n offset: [0, 6],\n placement: \"top\",\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '