diff --git a/app.bundle.js b/app.bundle.js index 7c138bf..d1b70c5 100644 --- a/app.bundle.js +++ b/app.bundle.js @@ -1,2 +1,2 @@ /*! For license information please see app.bundle.js.LICENSE.txt */ -(self.webpackChunkopenlayers_vs_maplibre=self.webpackChunkopenlayers_vs_maplibre||[]).push([["app"],{"./assets/js/app.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var bootstrap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! bootstrap */ "./node_modules/bootstrap/dist/js/bootstrap.js");\n/* harmony import */ var bootstrap__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(bootstrap__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _scss_main_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../scss/main.scss */ "./assets/scss/main.scss");\n// import \'bootstrap/dist/css/bootstrap.min.css\';\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvYXBwLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb3BlbmxheWVycy12cy1tYXBsaWJyZS8uL2Fzc2V0cy9qcy9hcHAuanM/OWUwZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgJ2Jvb3RzdHJhcC9kaXN0L2Nzcy9ib290c3RyYXAubWluLmNzcyc7XG5pbXBvcnQgJ2Jvb3RzdHJhcCc7XG5pbXBvcnQgJy4vLi4vc2Nzcy9tYWluLnNjc3MnOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./assets/js/app.js\n')},"./node_modules/bootstrap/dist/js/bootstrap.js":function(__unused_webpack_module,exports,__webpack_require__){eval('/*!\n * Bootstrap v4.6.1 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n true ? factory(exports, __webpack_require__(/*! jquery */ "./node_modules/jquery/src/jquery.js"), __webpack_require__(/*! popper.js */ "./node_modules/popper.js/dist/esm/popper.js")) :\n 0;\n})(this, (function (exports, $, Popper) { \'use strict\';\n\n function _interopDefaultLegacy (e) { return e && typeof e === \'object\' && \'default\' in e ? e : { \'default\': e }; }\n\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n var Popper__default = /*#__PURE__*/_interopDefaultLegacy(Popper);\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ("value" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n }\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n /**\n * Private TransitionEnd Helpers\n */\n\n var TRANSITION_END = \'transitionend\';\n var MAX_UID = 1000000;\n var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n function toType(obj) {\n if (obj === null || typeof obj === \'undefined\') {\n return "" + obj;\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n }\n\n function getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle: function handle(event) {\n if ($__default["default"](event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n\n return undefined;\n }\n };\n }\n\n function transitionEndEmulator(duration) {\n var _this = this;\n\n var called = false;\n $__default["default"](this).one(Util.TRANSITION_END, function () {\n called = true;\n });\n setTimeout(function () {\n if (!called) {\n Util.triggerTransitionEnd(_this);\n }\n }, duration);\n return this;\n }\n\n function setTransitionEndSupport() {\n $__default["default"].fn.emulateTransitionEnd = transitionEndEmulator;\n $__default["default"].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n }\n /**\n * Public Util API\n */\n\n\n var Util = {\n TRANSITION_END: \'bsTransitionEnd\',\n getUID: function getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here\n } while (document.getElementById(prefix));\n\n return prefix;\n },\n getSelectorFromElement: function getSelectorFromElement(element) {\n var selector = element.getAttribute(\'data-target\');\n\n if (!selector || selector === \'#\') {\n var hrefAttr = element.getAttribute(\'href\');\n selector = hrefAttr && hrefAttr !== \'#\' ? hrefAttr.trim() : \'\';\n }\n\n try {\n return document.querySelector(selector) ? selector : null;\n } catch (_) {\n return null;\n }\n },\n getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n\n var transitionDuration = $__default["default"](element).css(\'transition-duration\');\n var transitionDelay = $__default["default"](element).css(\'transition-delay\');\n var floatTransitionDuration = parseFloat(transitionDuration);\n var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n\n transitionDuration = transitionDuration.split(\',\')[0];\n transitionDelay = transitionDelay.split(\',\')[0];\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n },\n reflow: function reflow(element) {\n return element.offsetHeight;\n },\n triggerTransitionEnd: function triggerTransitionEnd(element) {\n $__default["default"](element).trigger(TRANSITION_END);\n },\n supportsTransitionEnd: function supportsTransitionEnd() {\n return Boolean(TRANSITION_END);\n },\n isElement: function isElement(obj) {\n return (obj[0] || obj).nodeType;\n },\n typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {\n for (var property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n var expectedTypes = configTypes[property];\n var value = config[property];\n var valueType = value && Util.isElement(value) ? \'element\' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(componentName.toUpperCase() + ": " + ("Option \\"" + property + "\\" provided type \\"" + valueType + "\\" ") + ("but expected type \\"" + expectedTypes + "\\"."));\n }\n }\n }\n },\n findShadowRoot: function findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null;\n } // Can find the shadow root otherwise it\'ll return the document\n\n\n if (typeof element.getRootNode === \'function\') {\n var root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n\n if (element instanceof ShadowRoot) {\n return element;\n } // when we don\'t find a shadow root\n\n\n if (!element.parentNode) {\n return null;\n }\n\n return Util.findShadowRoot(element.parentNode);\n },\n jQueryDetection: function jQueryDetection() {\n if (typeof $__default["default"] === \'undefined\') {\n throw new TypeError(\'Bootstrap\\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\\'s JavaScript.\');\n }\n\n var version = $__default["default"].fn.jquery.split(\' \')[0].split(\'.\');\n var minMajor = 1;\n var ltMajor = 2;\n var minMinor = 9;\n var minPatch = 1;\n var maxMajor = 4;\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error(\'Bootstrap\\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0\');\n }\n }\n };\n Util.jQueryDetection();\n setTransitionEndSupport();\n\n /**\n * Constants\n */\n\n var NAME$a = \'alert\';\n var VERSION$a = \'4.6.1\';\n var DATA_KEY$a = \'bs.alert\';\n var EVENT_KEY$a = "." + DATA_KEY$a;\n var DATA_API_KEY$7 = \'.data-api\';\n var JQUERY_NO_CONFLICT$a = $__default["default"].fn[NAME$a];\n var CLASS_NAME_ALERT = \'alert\';\n var CLASS_NAME_FADE$5 = \'fade\';\n var CLASS_NAME_SHOW$7 = \'show\';\n var EVENT_CLOSE = "close" + EVENT_KEY$a;\n var EVENT_CLOSED = "closed" + EVENT_KEY$a;\n var EVENT_CLICK_DATA_API$6 = "click" + EVENT_KEY$a + DATA_API_KEY$7;\n var SELECTOR_DISMISS = \'[data-dismiss="alert"]\';\n /**\n * Class definition\n */\n\n var Alert = /*#__PURE__*/function () {\n function Alert(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Alert.prototype;\n\n // Public\n _proto.close = function close(element) {\n var rootElement = this._element;\n\n if (element) {\n rootElement = this._getRootElement(element);\n }\n\n var customEvent = this._triggerCloseEvent(rootElement);\n\n if (customEvent.isDefaultPrevented()) {\n return;\n }\n\n this._removeElement(rootElement);\n };\n\n _proto.dispose = function dispose() {\n $__default["default"].removeData(this._element, DATA_KEY$a);\n this._element = null;\n } // Private\n ;\n\n _proto._getRootElement = function _getRootElement(element) {\n var selector = Util.getSelectorFromElement(element);\n var parent = false;\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n if (!parent) {\n parent = $__default["default"](element).closest("." + CLASS_NAME_ALERT)[0];\n }\n\n return parent;\n };\n\n _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n var closeEvent = $__default["default"].Event(EVENT_CLOSE);\n $__default["default"](element).trigger(closeEvent);\n return closeEvent;\n };\n\n _proto._removeElement = function _removeElement(element) {\n var _this = this;\n\n $__default["default"](element).removeClass(CLASS_NAME_SHOW$7);\n\n if (!$__default["default"](element).hasClass(CLASS_NAME_FADE$5)) {\n this._destroyElement(element);\n\n return;\n }\n\n var transitionDuration = Util.getTransitionDurationFromElement(element);\n $__default["default"](element).one(Util.TRANSITION_END, function (event) {\n return _this._destroyElement(element, event);\n }).emulateTransitionEnd(transitionDuration);\n };\n\n _proto._destroyElement = function _destroyElement(element) {\n $__default["default"](element).detach().trigger(EVENT_CLOSED).remove();\n } // Static\n ;\n\n Alert._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default["default"](this);\n var data = $element.data(DATA_KEY$a);\n\n if (!data) {\n data = new Alert(this);\n $element.data(DATA_KEY$a, data);\n }\n\n if (config === \'close\') {\n data[config](this);\n }\n });\n };\n\n Alert._handleDismiss = function _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault();\n }\n\n alertInstance.close(this);\n };\n };\n\n _createClass(Alert, null, [{\n key: "VERSION",\n get: function get() {\n return VERSION$a;\n }\n }]);\n\n return Alert;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default["default"](document).on(EVENT_CLICK_DATA_API$6, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));\n /**\n * jQuery\n */\n\n $__default["default"].fn[NAME$a] = Alert._jQueryInterface;\n $__default["default"].fn[NAME$a].Constructor = Alert;\n\n $__default["default"].fn[NAME$a].noConflict = function () {\n $__default["default"].fn[NAME$a] = JQUERY_NO_CONFLICT$a;\n return Alert._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME$9 = \'button\';\n var VERSION$9 = \'4.6.1\';\n var DATA_KEY$9 = \'bs.button\';\n var EVENT_KEY$9 = "." + DATA_KEY$9;\n var DATA_API_KEY$6 = \'.data-api\';\n var JQUERY_NO_CONFLICT$9 = $__default["default"].fn[NAME$9];\n var CLASS_NAME_ACTIVE$3 = \'active\';\n var CLASS_NAME_BUTTON = \'btn\';\n var CLASS_NAME_FOCUS = \'focus\';\n var EVENT_CLICK_DATA_API$5 = "click" + EVENT_KEY$9 + DATA_API_KEY$6;\n var EVENT_FOCUS_BLUR_DATA_API = "focus" + EVENT_KEY$9 + DATA_API_KEY$6 + " " + ("blur" + EVENT_KEY$9 + DATA_API_KEY$6);\n var EVENT_LOAD_DATA_API$2 = "load" + EVENT_KEY$9 + DATA_API_KEY$6;\n var SELECTOR_DATA_TOGGLE_CARROT = \'[data-toggle^="button"]\';\n var SELECTOR_DATA_TOGGLES = \'[data-toggle="buttons"]\';\n var SELECTOR_DATA_TOGGLE$4 = \'[data-toggle="button"]\';\n var SELECTOR_DATA_TOGGLES_BUTTONS = \'[data-toggle="buttons"] .btn\';\n var SELECTOR_INPUT = \'input:not([type="hidden"])\';\n var SELECTOR_ACTIVE$2 = \'.active\';\n var SELECTOR_BUTTON = \'.btn\';\n /**\n * Class definition\n */\n\n var Button = /*#__PURE__*/function () {\n function Button(element) {\n this._element = element;\n this.shouldAvoidTriggerChange = false;\n } // Getters\n\n\n var _proto = Button.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n var triggerChangeEvent = true;\n var addAriaPressed = true;\n var rootElement = $__default["default"](this._element).closest(SELECTOR_DATA_TOGGLES)[0];\n\n if (rootElement) {\n var input = this._element.querySelector(SELECTOR_INPUT);\n\n if (input) {\n if (input.type === \'radio\') {\n if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE$3)) {\n triggerChangeEvent = false;\n } else {\n var activeElement = rootElement.querySelector(SELECTOR_ACTIVE$2);\n\n if (activeElement) {\n $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE$3);\n }\n }\n }\n\n if (triggerChangeEvent) {\n // if it\'s not a radio button or checkbox don\'t add a pointless/invalid checked property to the input\n if (input.type === \'checkbox\' || input.type === \'radio\') {\n input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE$3);\n }\n\n if (!this.shouldAvoidTriggerChange) {\n $__default["default"](input).trigger(\'change\');\n }\n }\n\n input.focus();\n addAriaPressed = false;\n }\n }\n\n if (!(this._element.hasAttribute(\'disabled\') || this._element.classList.contains(\'disabled\'))) {\n if (addAriaPressed) {\n this._element.setAttribute(\'aria-pressed\', !this._element.classList.contains(CLASS_NAME_ACTIVE$3));\n }\n\n if (triggerChangeEvent) {\n $__default["default"](this._element).toggleClass(CLASS_NAME_ACTIVE$3);\n }\n }\n };\n\n _proto.dispose = function dispose() {\n $__default["default"].removeData(this._element, DATA_KEY$9);\n this._element = null;\n } // Static\n ;\n\n Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) {\n return this.each(function () {\n var $element = $__default["default"](this);\n var data = $element.data(DATA_KEY$9);\n\n if (!data) {\n data = new Button(this);\n $element.data(DATA_KEY$9, data);\n }\n\n data.shouldAvoidTriggerChange = avoidTriggerChange;\n\n if (config === \'toggle\') {\n data[config]();\n }\n });\n };\n\n _createClass(Button, null, [{\n key: "VERSION",\n get: function get() {\n return VERSION$9;\n }\n }]);\n\n return Button;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default["default"](document).on(EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n var button = event.target;\n var initialButton = button;\n\n if (!$__default["default"](button).hasClass(CLASS_NAME_BUTTON)) {\n button = $__default["default"](button).closest(SELECTOR_BUTTON)[0];\n }\n\n if (!button || button.hasAttribute(\'disabled\') || button.classList.contains(\'disabled\')) {\n event.preventDefault(); // work around Firefox bug #1540995\n } else {\n var inputBtn = button.querySelector(SELECTOR_INPUT);\n\n if (inputBtn && (inputBtn.hasAttribute(\'disabled\') || inputBtn.classList.contains(\'disabled\'))) {\n event.preventDefault(); // work around Firefox bug #1540995\n\n return;\n }\n\n if (initialButton.tagName === \'INPUT\' || button.tagName !== \'LABEL\') {\n Button._jQueryInterface.call($__default["default"](button), \'toggle\', initialButton.tagName === \'INPUT\');\n }\n }\n }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n var button = $__default["default"](event.target).closest(SELECTOR_BUTTON)[0];\n $__default["default"](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));\n });\n $__default["default"](window).on(EVENT_LOAD_DATA_API$2, function () {\n // ensure correct active class is set to match the controls\' actual values/states\n // find all checkboxes/readio buttons inside data-toggle groups\n var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));\n\n for (var i = 0, len = buttons.length; i < len; i++) {\n var button = buttons[i];\n var input = button.querySelector(SELECTOR_INPUT);\n\n if (input.checked || input.hasAttribute(\'checked\')) {\n button.classList.add(CLASS_NAME_ACTIVE$3);\n } else {\n button.classList.remove(CLASS_NAME_ACTIVE$3);\n }\n } // find all button toggles\n\n\n buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$4));\n\n for (var _i = 0, _len = buttons.length; _i < _len; _i++) {\n var _button = buttons[_i];\n\n if (_button.getAttribute(\'aria-pressed\') === \'true\') {\n _button.classList.add(CLASS_NAME_ACTIVE$3);\n } else {\n _button.classList.remove(CLASS_NAME_ACTIVE$3);\n }\n }\n });\n /**\n * jQuery\n */\n\n $__default["default"].fn[NAME$9] = Button._jQueryInterface;\n $__default["default"].fn[NAME$9].Constructor = Button;\n\n $__default["default"].fn[NAME$9].noConflict = function () {\n $__default["default"].fn[NAME$9] = JQUERY_NO_CONFLICT$9;\n return Button._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME$8 = \'carousel\';\n var VERSION$8 = \'4.6.1\';\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 JQUERY_NO_CONFLICT$8 = $__default["default"].fn[NAME$8];\n var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key\n\n var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key\n\n var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n var SWIPE_THRESHOLD = 40;\n var CLASS_NAME_CAROUSEL = \'carousel\';\n var CLASS_NAME_ACTIVE$2 = \'active\';\n var CLASS_NAME_SLIDE = \'slide\';\n var CLASS_NAME_RIGHT = \'carousel-item-right\';\n var CLASS_NAME_LEFT = \'carousel-item-left\';\n var CLASS_NAME_NEXT = \'carousel-item-next\';\n var CLASS_NAME_PREV = \'carousel-item-prev\';\n var CLASS_NAME_POINTER_EVENT = \'pointer-event\';\n var DIRECTION_NEXT = \'next\';\n var DIRECTION_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 = "keydown" + EVENT_KEY$8;\n var EVENT_MOUSEENTER = "mouseenter" + EVENT_KEY$8;\n var EVENT_MOUSELEAVE = "mouseleave" + EVENT_KEY$8;\n var EVENT_TOUCHSTART = "touchstart" + EVENT_KEY$8;\n var EVENT_TOUCHMOVE = "touchmove" + EVENT_KEY$8;\n var EVENT_TOUCHEND = "touchend" + EVENT_KEY$8;\n var EVENT_POINTERDOWN = "pointerdown" + EVENT_KEY$8;\n var EVENT_POINTERUP = "pointerup" + EVENT_KEY$8;\n var EVENT_DRAG_START = "dragstart" + EVENT_KEY$8;\n var EVENT_LOAD_DATA_API$1 = "load" + EVENT_KEY$8 + DATA_API_KEY$5;\n var EVENT_CLICK_DATA_API$4 = "click" + EVENT_KEY$8 + DATA_API_KEY$5;\n var SELECTOR_ACTIVE$1 = \'.active\';\n var SELECTOR_ACTIVE_ITEM = \'.active.carousel-item\';\n var SELECTOR_ITEM = \'.carousel-item\';\n var SELECTOR_ITEM_IMG = \'.carousel-item img\';\n var SELECTOR_NEXT_PREV = \'.carousel-item-next, .carousel-item-prev\';\n var SELECTOR_INDICATORS = \'.carousel-indicators\';\n var SELECTOR_DATA_SLIDE = \'[data-slide], [data-slide-to]\';\n var SELECTOR_DATA_RIDE = \'[data-ride="carousel"]\';\n var Default$7 = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: \'hover\',\n wrap: true,\n touch: true\n };\n var DefaultType$7 = {\n interval: \'(number|boolean)\',\n keyboard: \'boolean\',\n slide: \'(boolean|string)\',\n pause: \'(string|boolean)\',\n wrap: \'boolean\',\n touch: \'boolean\'\n };\n var PointerType = {\n TOUCH: \'touch\',\n PEN: \'pen\'\n };\n /**\n * Class definition\n */\n\n var Carousel = /*#__PURE__*/function () {\n function Carousel(element, config) {\n this._items = null;\n this._interval = null;\n this._activeElement = null;\n this._isPaused = false;\n this._isSliding = false;\n this.touchTimeout = null;\n this.touchStartX = 0;\n this.touchDeltaX = 0;\n this._config = this._getConfig(config);\n this._element = element;\n this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS);\n this._touchSupported = \'ontouchstart\' in document.documentElement || navigator.maxTouchPoints > 0;\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);\n\n this._addEventListeners();\n } // Getters\n\n\n var _proto = Carousel.prototype;\n\n // Public\n _proto.next = function next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_NEXT);\n }\n };\n\n _proto.nextWhenVisible = function nextWhenVisible() {\n var $element = $__default["default"](this._element); // Don\'t call next when the page isn\'t visible\n // or the carousel or its parent isn\'t visible\n\n if (!document.hidden && $element.is(\':visible\') && $element.css(\'visibility\') !== \'hidden\') {\n this.next();\n }\n };\n\n _proto.prev = function prev() {\n if (!this._isSliding) {\n this._slide(DIRECTION_PREV);\n }\n };\n\n _proto.pause = function pause(event) {\n if (!event) {\n this._isPaused = true;\n }\n\n if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element);\n this.cycle(true);\n }\n\n clearInterval(this._interval);\n this._interval = null;\n };\n\n _proto.cycle = function cycle(event) {\n if (!event) {\n this._isPaused = false;\n }\n\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n\n if (this._config.interval && !this._isPaused) {\n this._updateInterval();\n\n this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n }\n };\n\n _proto.to = function to(index) {\n var _this = this;\n\n this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n var activeIndex = this._getItemIndex(this._activeElement);\n\n if (index > this._items.length - 1 || index < 0) {\n return;\n }\n\n if (this._isSliding) {\n $__default["default"](this._element).one(EVENT_SLID, function () {\n return _this.to(index);\n });\n return;\n }\n\n if (activeIndex === index) {\n this.pause();\n this.cycle();\n return;\n }\n\n var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;\n\n this._slide(direction, this._items[index]);\n };\n\n _proto.dispose = function dispose() {\n $__default["default"](this._element).off(EVENT_KEY$8);\n $__default["default"].removeData(this._element, DATA_KEY$8);\n this._items = null;\n this._config = null;\n this._element = null;\n this._interval = null;\n this._isPaused = null;\n this._isSliding = null;\n this._activeElement = null;\n this._indicatorsElement = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$7, config);\n Util.typeCheckConfig(NAME$8, config, DefaultType$7);\n return config;\n };\n\n _proto._handleSwipe = function _handleSwipe() {\n var absDeltax = Math.abs(this.touchDeltaX);\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return;\n }\n\n var direction = absDeltax / this.touchDeltaX;\n this.touchDeltaX = 0; // swipe left\n\n if (direction > 0) {\n this.prev();\n } // swipe right\n\n\n if (direction < 0) {\n this.next();\n }\n };\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this2 = this;\n\n if (this._config.keyboard) {\n $__default["default"](this._element).on(EVENT_KEYDOWN, function (event) {\n return _this2._keydown(event);\n });\n }\n\n if (this._config.pause === \'hover\') {\n $__default["default"](this._element).on(EVENT_MOUSEENTER, function (event) {\n return _this2.pause(event);\n }).on(EVENT_MOUSELEAVE, function (event) {\n return _this2.cycle(event);\n });\n }\n\n if (this._config.touch) {\n this._addTouchEventListeners();\n }\n };\n\n _proto._addTouchEventListeners = function _addTouchEventListeners() {\n var _this3 = this;\n\n if (!this._touchSupported) {\n return;\n }\n\n var start = function start(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchStartX = event.originalEvent.clientX;\n } else if (!_this3._pointerEvent) {\n _this3.touchStartX = event.originalEvent.touches[0].clientX;\n }\n };\n\n var move = function move(event) {\n // ensure swiping with one touch and not pinching\n _this3.touchDeltaX = event.originalEvent.touches && event.originalEvent.touches.length > 1 ? 0 : event.originalEvent.touches[0].clientX - _this3.touchStartX;\n };\n\n var end = function end(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;\n }\n\n _this3._handleSwipe();\n\n if (_this3._config.pause === \'hover\') {\n // If it\'s a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it\'s the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n _this3.pause();\n\n if (_this3.touchTimeout) {\n clearTimeout(_this3.touchTimeout);\n }\n\n _this3.touchTimeout = setTimeout(function (event) {\n return _this3.cycle(event);\n }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);\n }\n };\n\n $__default["default"](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) {\n return e.preventDefault();\n });\n\n if (this._pointerEvent) {\n $__default["default"](this._element).on(EVENT_POINTERDOWN, function (event) {\n return start(event);\n });\n $__default["default"](this._element).on(EVENT_POINTERUP, function (event) {\n return end(event);\n });\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n $__default["default"](this._element).on(EVENT_TOUCHSTART, function (event) {\n return start(event);\n });\n $__default["default"](this._element).on(EVENT_TOUCHMOVE, function (event) {\n return move(event);\n });\n $__default["default"](this._element).on(EVENT_TOUCHEND, function (event) {\n return end(event);\n });\n }\n };\n\n _proto._keydown = function _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault();\n this.prev();\n break;\n\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault();\n this.next();\n break;\n }\n };\n\n _proto._getItemIndex = function _getItemIndex(element) {\n this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];\n return this._items.indexOf(element);\n };\n\n _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {\n var isNextDirection = direction === DIRECTION_NEXT;\n var isPrevDirection = direction === DIRECTION_PREV;\n\n var activeIndex = this._getItemIndex(activeElement);\n\n var lastItemIndex = this._items.length - 1;\n var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement;\n }\n\n var delta = direction === DIRECTION_PREV ? -1 : 1;\n var itemIndex = (activeIndex + delta) % this._items.length;\n return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];\n };\n\n _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {\n var targetIndex = this._getItemIndex(relatedTarget);\n\n var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));\n\n var slideEvent = $__default["default"].Event(EVENT_SLIDE, {\n relatedTarget: relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n });\n $__default["default"](this._element).trigger(slideEvent);\n return slideEvent;\n };\n\n _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE$1));\n $__default["default"](indicators).removeClass(CLASS_NAME_ACTIVE$2);\n\n var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];\n\n if (nextIndicator) {\n $__default["default"](nextIndicator).addClass(CLASS_NAME_ACTIVE$2);\n }\n }\n };\n\n _proto._updateInterval = function _updateInterval() {\n var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n if (!element) {\n return;\n }\n\n var elementInterval = parseInt(element.getAttribute(\'data-interval\'), 10);\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n this._config.interval = elementInterval;\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval;\n }\n };\n\n _proto._slide = function _slide(direction, element) {\n var _this4 = this;\n\n var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n var activeElementIndex = this._getItemIndex(activeElement);\n\n var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);\n\n var nextElementIndex = this._getItemIndex(nextElement);\n\n var isCycling = Boolean(this._interval);\n var directionalClassName;\n var orderClassName;\n var eventDirectionName;\n\n if (direction === DIRECTION_NEXT) {\n directionalClassName = CLASS_NAME_LEFT;\n orderClassName = CLASS_NAME_NEXT;\n eventDirectionName = DIRECTION_LEFT;\n } else {\n directionalClassName = CLASS_NAME_RIGHT;\n orderClassName = CLASS_NAME_PREV;\n eventDirectionName = DIRECTION_RIGHT;\n }\n\n if (nextElement && $__default["default"](nextElement).hasClass(CLASS_NAME_ACTIVE$2)) {\n this._isSliding = false;\n return;\n }\n\n var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n\n if (slideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return;\n }\n\n this._isSliding = true;\n\n if (isCycling) {\n this.pause();\n }\n\n this._setActiveIndicatorElement(nextElement);\n\n this._activeElement = nextElement;\n var slidEvent = $__default["default"].Event(EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n });\n\n if ($__default["default"](this._element).hasClass(CLASS_NAME_SLIDE)) {\n $__default["default"](nextElement).addClass(orderClassName);\n Util.reflow(nextElement);\n $__default["default"](activeElement).addClass(directionalClassName);\n $__default["default"](nextElement).addClass(directionalClassName);\n var transitionDuration = Util.getTransitionDurationFromElement(activeElement);\n $__default["default"](activeElement).one(Util.TRANSITION_END, function () {\n $__default["default"](nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(CLASS_NAME_ACTIVE$2);\n $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE$2 + " " + orderClassName + " " + directionalClassName);\n _this4._isSliding = false;\n setTimeout(function () {\n return $__default["default"](_this4._element).trigger(slidEvent);\n }, 0);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE$2);\n $__default["default"](nextElement).addClass(CLASS_NAME_ACTIVE$2);\n this._isSliding = false;\n $__default["default"](this._element).trigger(slidEvent);\n }\n\n if (isCycling) {\n this.cycle();\n }\n } // Static\n ;\n\n Carousel._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default["default"](this).data(DATA_KEY$8);\n\n var _config = _extends({}, Default$7, $__default["default"](this).data());\n\n if (typeof config === \'object\') {\n _config = _extends({}, _config, config);\n }\n\n var action = typeof config === \'string\' ? config : _config.slide;\n\n if (!data) {\n data = new Carousel(this, _config);\n $__default["default"](this).data(DATA_KEY$8, data);\n }\n\n if (typeof config === \'number\') {\n data.to(config);\n } else if (typeof action === \'string\') {\n if (typeof data[action] === \'undefined\') {\n throw new TypeError("No method named \\"" + action + "\\"");\n }\n\n data[action]();\n } else if (_config.interval && _config.ride) {\n data.pause();\n data.cycle();\n }\n });\n };\n\n Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {\n var selector = Util.getSelectorFromElement(this);\n\n if (!selector) {\n return;\n }\n\n var target = $__default["default"](selector)[0];\n\n if (!target || !$__default["default"](target).hasClass(CLASS_NAME_CAROUSEL)) {\n return;\n }\n\n var config = _extends({}, $__default["default"](target).data(), $__default["default"](this).data());\n\n var slideIndex = this.getAttribute(\'data-slide-to\');\n\n if (slideIndex) {\n config.interval = false;\n }\n\n Carousel._jQueryInterface.call($__default["default"](target), config);\n\n if (slideIndex) {\n $__default["default"](target).data(DATA_KEY$8).to(slideIndex);\n }\n\n event.preventDefault();\n };\n\n _createClass(Carousel, null, [{\n key: "VERSION",\n get: function get() {\n return VERSION$8;\n }\n }, {\n key: "Default",\n get: function get() {\n return Default$7;\n }\n }]);\n\n return Carousel;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default["default"](document).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler);\n $__default["default"](window).on(EVENT_LOAD_DATA_API$1, function () {\n var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE));\n\n for (var i = 0, len = carousels.length; i < len; i++) {\n var $carousel = $__default["default"](carousels[i]);\n\n Carousel._jQueryInterface.call($carousel, $carousel.data());\n }\n });\n /**\n * jQuery\n */\n\n $__default["default"].fn[NAME$8] = Carousel._jQueryInterface;\n $__default["default"].fn[NAME$8].Constructor = Carousel;\n\n $__default["default"].fn[NAME$8].noConflict = function () {\n $__default["default"].fn[NAME$8] = JQUERY_NO_CONFLICT$8;\n return Carousel._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME$7 = \'collapse\';\n var VERSION$7 = \'4.6.1\';\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 JQUERY_NO_CONFLICT$7 = $__default["default"].fn[NAME$7];\n var CLASS_NAME_SHOW$6 = \'show\';\n var CLASS_NAME_COLLAPSE = \'collapse\';\n var CLASS_NAME_COLLAPSING = \'collapsing\';\n var CLASS_NAME_COLLAPSED = \'collapsed\';\n var DIMENSION_WIDTH = \'width\';\n var DIMENSION_HEIGHT = \'height\';\n var EVENT_SHOW$4 = "show" + EVENT_KEY$7;\n var EVENT_SHOWN$4 = "shown" + EVENT_KEY$7;\n var EVENT_HIDE$4 = "hide" + EVENT_KEY$7;\n var EVENT_HIDDEN$4 = "hidden" + EVENT_KEY$7;\n var EVENT_CLICK_DATA_API$3 = "click" + EVENT_KEY$7 + DATA_API_KEY$4;\n var SELECTOR_ACTIVES = \'.show, .collapsing\';\n var SELECTOR_DATA_TOGGLE$3 = \'[data-toggle="collapse"]\';\n var Default$6 = {\n toggle: true,\n parent: \'\'\n };\n var DefaultType$6 = {\n toggle: \'boolean\',\n parent: \'(string|element)\'\n };\n /**\n * Class definition\n */\n\n var Collapse = /*#__PURE__*/function () {\n function Collapse(element, config) {\n this._isTransitioning = false;\n this._element = element;\n this._config = this._getConfig(config);\n this._triggerArray = [].slice.call(document.querySelectorAll("[data-toggle=\\"collapse\\"][href=\\"#" + element.id + "\\"]," + ("[data-toggle=\\"collapse\\"][data-target=\\"#" + element.id + "\\"]")));\n var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$3));\n\n for (var i = 0, len = toggleList.length; i < len; i++) {\n var elem = toggleList[i];\n var selector = Util.getSelectorFromElement(elem);\n var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {\n return foundElem === element;\n });\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector;\n\n this._triggerArray.push(elem);\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null;\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray);\n }\n\n if (this._config.toggle) {\n this.toggle();\n }\n } // Getters\n\n\n var _proto = Collapse.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if ($__default["default"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n this.hide();\n } else {\n this.show();\n }\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if (this._isTransitioning || $__default["default"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n return;\n }\n\n var actives;\n var activesData;\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) {\n if (typeof _this._config.parent === \'string\') {\n return elem.getAttribute(\'data-parent\') === _this._config.parent;\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE);\n });\n\n if (actives.length === 0) {\n actives = null;\n }\n }\n\n if (actives) {\n activesData = $__default["default"](actives).not(this._selector).data(DATA_KEY$7);\n\n if (activesData && activesData._isTransitioning) {\n return;\n }\n }\n\n var startEvent = $__default["default"].Event(EVENT_SHOW$4);\n $__default["default"](this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($__default["default"](actives).not(this._selector), \'hide\');\n\n if (!activesData) {\n $__default["default"](actives).data(DATA_KEY$7, null);\n }\n }\n\n var dimension = this._getDimension();\n\n $__default["default"](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);\n this._element.style[dimension] = 0;\n\n if (this._triggerArray.length) {\n $__default["default"](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr(\'aria-expanded\', true);\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n $__default["default"](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW$6);\n _this._element.style[dimension] = \'\';\n\n _this.setTransitioning(false);\n\n $__default["default"](_this._element).trigger(EVENT_SHOWN$4);\n };\n\n var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n var scrollSize = "scroll" + capitalizedDimension;\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default["default"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n this._element.style[dimension] = this._element[scrollSize] + "px";\n };\n\n _proto.hide = function hide() {\n var _this2 = this;\n\n if (this._isTransitioning || !$__default["default"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n return;\n }\n\n var startEvent = $__default["default"].Event(EVENT_HIDE$4);\n $__default["default"](this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n var dimension = this._getDimension();\n\n this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";\n Util.reflow(this._element);\n $__default["default"](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW$6);\n var triggerArrayLength = this._triggerArray.length;\n\n if (triggerArrayLength > 0) {\n for (var i = 0; i < triggerArrayLength; i++) {\n var trigger = this._triggerArray[i];\n var selector = Util.getSelectorFromElement(trigger);\n\n if (selector !== null) {\n var $elem = $__default["default"]([].slice.call(document.querySelectorAll(selector)));\n\n if (!$elem.hasClass(CLASS_NAME_SHOW$6)) {\n $__default["default"](trigger).addClass(CLASS_NAME_COLLAPSED).attr(\'aria-expanded\', false);\n }\n }\n }\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n _this2.setTransitioning(false);\n\n $__default["default"](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN$4);\n };\n\n this._element.style[dimension] = \'\';\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default["default"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n };\n\n _proto.setTransitioning = function setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning;\n };\n\n _proto.dispose = function dispose() {\n $__default["default"].removeData(this._element, DATA_KEY$7);\n this._config = null;\n this._parent = null;\n this._element = null;\n this._triggerArray = null;\n this._isTransitioning = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$6, config);\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n Util.typeCheckConfig(NAME$7, config, DefaultType$6);\n return config;\n };\n\n _proto._getDimension = function _getDimension() {\n var hasWidth = $__default["default"](this._element).hasClass(DIMENSION_WIDTH);\n return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;\n };\n\n _proto._getParent = function _getParent() {\n var _this3 = this;\n\n var parent;\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent; // It\'s a jQuery object\n\n if (typeof this._config.parent.jquery !== \'undefined\') {\n parent = this._config.parent[0];\n }\n } else {\n parent = document.querySelector(this._config.parent);\n }\n\n var selector = "[data-toggle=\\"collapse\\"][data-parent=\\"" + this._config.parent + "\\"]";\n var children = [].slice.call(parent.querySelectorAll(selector));\n $__default["default"](children).each(function (i, element) {\n _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);\n });\n return parent;\n };\n\n _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {\n var isOpen = $__default["default"](element).hasClass(CLASS_NAME_SHOW$6);\n\n if (triggerArray.length) {\n $__default["default"](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr(\'aria-expanded\', isOpen);\n }\n } // Static\n ;\n\n Collapse._getTargetFromElement = function _getTargetFromElement(element) {\n var selector = Util.getSelectorFromElement(element);\n return selector ? document.querySelector(selector) : null;\n };\n\n Collapse._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default["default"](this);\n var data = $element.data(DATA_KEY$7);\n\n var _config = _extends({}, Default$6, $element.data(), typeof config === \'object\' && config ? config : {});\n\n if (!data && _config.toggle && typeof config === \'string\' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n\n if (!data) {\n data = new Collapse(this, _config);\n $element.data(DATA_KEY$7, data);\n }\n\n if (typeof config === \'string\') {\n if (typeof data[config] === \'undefined\') {\n throw new TypeError("No method named \\"" + config + "\\"");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Collapse, null, [{\n key: "VERSION",\n get: function get() {\n return VERSION$7;\n }\n }, {\n key: "Default",\n get: function get() {\n return Default$6;\n }\n }]);\n\n return Collapse;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default["default"](document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === \'A\') {\n event.preventDefault();\n }\n\n var $trigger = $__default["default"](this);\n var selector = Util.getSelectorFromElement(this);\n var selectors = [].slice.call(document.querySelectorAll(selector));\n $__default["default"](selectors).each(function () {\n var $target = $__default["default"](this);\n var data = $target.data(DATA_KEY$7);\n var config = data ? \'toggle\' : $trigger.data();\n\n Collapse._jQueryInterface.call($target, config);\n });\n });\n /**\n * jQuery\n */\n\n $__default["default"].fn[NAME$7] = Collapse._jQueryInterface;\n $__default["default"].fn[NAME$7].Constructor = Collapse;\n\n $__default["default"].fn[NAME$7].noConflict = function () {\n $__default["default"].fn[NAME$7] = JQUERY_NO_CONFLICT$7;\n return Collapse._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME$6 = \'dropdown\';\n var VERSION$6 = \'4.6.1\';\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 JQUERY_NO_CONFLICT$6 = $__default["default"].fn[NAME$6];\n var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key\n\n var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key\n\n var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key\n\n var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key\n\n var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)\n\n var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE$1);\n var CLASS_NAME_DISABLED$1 = \'disabled\';\n var CLASS_NAME_SHOW$5 = \'show\';\n var CLASS_NAME_DROPUP = \'dropup\';\n var CLASS_NAME_DROPRIGHT = \'dropright\';\n var CLASS_NAME_DROPLEFT = \'dropleft\';\n var CLASS_NAME_MENURIGHT = \'dropdown-menu-right\';\n var CLASS_NAME_POSITION_STATIC = \'position-static\';\n var EVENT_HIDE$3 = "hide" + EVENT_KEY$6;\n var EVENT_HIDDEN$3 = "hidden" + EVENT_KEY$6;\n var EVENT_SHOW$3 = "show" + EVENT_KEY$6;\n var EVENT_SHOWN$3 = "shown" + EVENT_KEY$6;\n var EVENT_CLICK = "click" + EVENT_KEY$6;\n var EVENT_CLICK_DATA_API$2 = "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 SELECTOR_DATA_TOGGLE$2 = \'[data-toggle="dropdown"]\';\n var SELECTOR_FORM_CHILD = \'.dropdown form\';\n var SELECTOR_MENU = \'.dropdown-menu\';\n var SELECTOR_NAVBAR_NAV = \'.navbar-nav\';\n var SELECTOR_VISIBLE_ITEMS = \'.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)\';\n var PLACEMENT_TOP = \'top-start\';\n var PLACEMENT_TOPEND = \'top-end\';\n var PLACEMENT_BOTTOM = \'bottom-start\';\n var PLACEMENT_BOTTOMEND = \'bottom-end\';\n var PLACEMENT_RIGHT = \'right-start\';\n var PLACEMENT_LEFT = \'left-start\';\n var Default$5 = {\n offset: 0,\n flip: true,\n boundary: \'scrollParent\',\n reference: \'toggle\',\n display: \'dynamic\',\n popperConfig: null\n };\n var DefaultType$5 = {\n offset: \'(number|string|function)\',\n flip: \'boolean\',\n boundary: \'(string|element)\',\n reference: \'(string|element)\',\n display: \'string\',\n popperConfig: \'(null|object)\'\n };\n /**\n * Class definition\n */\n\n var Dropdown = /*#__PURE__*/function () {\n function Dropdown(element, config) {\n this._element = element;\n this._popper = null;\n this._config = this._getConfig(config);\n this._menu = this._getMenuElement();\n this._inNavbar = this._detectNavbar();\n\n this._addEventListeners();\n } // Getters\n\n\n var _proto = Dropdown.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED$1)) {\n return;\n }\n\n var isActive = $__default["default"](this._menu).hasClass(CLASS_NAME_SHOW$5);\n\n Dropdown._clearMenus();\n\n if (isActive) {\n return;\n }\n\n this.show(true);\n };\n\n _proto.show = function show(usePopper) {\n if (usePopper === void 0) {\n usePopper = false;\n }\n\n if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED$1) || $__default["default"](this._menu).hasClass(CLASS_NAME_SHOW$5)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var showEvent = $__default["default"].Event(EVENT_SHOW$3, relatedTarget);\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n $__default["default"](parent).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n } // Totally disable Popper for Dropdowns in Navbar\n\n\n if (!this._inNavbar && usePopper) {\n // Check for Popper dependency\n if (typeof Popper__default["default"] === \'undefined\') {\n throw new TypeError(\'Bootstrap\\\'s dropdowns require Popper (https://popper.js.org)\');\n }\n\n var referenceElement = this._element;\n\n if (this._config.reference === \'parent\') {\n referenceElement = parent;\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference; // Check if it\'s jQuery element\n\n if (typeof this._config.reference.jquery !== \'undefined\') {\n referenceElement = this._config.reference[0];\n }\n } // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to "escape" the scroll parent\'s boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n\n\n if (this._config.boundary !== \'scrollParent\') {\n $__default["default"](parent).addClass(CLASS_NAME_POSITION_STATIC);\n }\n\n this._popper = new Popper__default["default"](referenceElement, this._menu, this._getPopperConfig());\n } // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body\'s immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n if (\'ontouchstart\' in document.documentElement && $__default["default"](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n $__default["default"](document.body).children().on(\'mouseover\', null, $__default["default"].noop);\n }\n\n this._element.focus();\n\n this._element.setAttribute(\'aria-expanded\', true);\n\n $__default["default"](this._menu).toggleClass(CLASS_NAME_SHOW$5);\n $__default["default"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default["default"].Event(EVENT_SHOWN$3, relatedTarget));\n };\n\n _proto.hide = function hide() {\n if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED$1) || !$__default["default"](this._menu).hasClass(CLASS_NAME_SHOW$5)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var hideEvent = $__default["default"].Event(EVENT_HIDE$3, relatedTarget);\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n $__default["default"](parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n $__default["default"](this._menu).toggleClass(CLASS_NAME_SHOW$5);\n $__default["default"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default["default"].Event(EVENT_HIDDEN$3, relatedTarget));\n };\n\n _proto.dispose = function dispose() {\n $__default["default"].removeData(this._element, DATA_KEY$6);\n $__default["default"](this._element).off(EVENT_KEY$6);\n this._element = null;\n this._menu = null;\n\n if (this._popper !== null) {\n this._popper.destroy();\n\n this._popper = null;\n }\n };\n\n _proto.update = function update() {\n this._inNavbar = this._detectNavbar();\n\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Private\n ;\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this = this;\n\n $__default["default"](this._element).on(EVENT_CLICK, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.toggle();\n });\n };\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, this.constructor.Default, $__default["default"](this._element).data(), config);\n Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._getMenuElement = function _getMenuElement() {\n if (!this._menu) {\n var parent = Dropdown._getParentFromElement(this._element);\n\n if (parent) {\n this._menu = parent.querySelector(SELECTOR_MENU);\n }\n }\n\n return this._menu;\n };\n\n _proto._getPlacement = function _getPlacement() {\n var $parentDropdown = $__default["default"](this._element.parentNode);\n var placement = PLACEMENT_BOTTOM; // Handle dropup\n\n if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n placement = $__default["default"](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {\n placement = PLACEMENT_RIGHT;\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {\n placement = PLACEMENT_LEFT;\n } else if ($__default["default"](this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n placement = PLACEMENT_BOTTOMEND;\n }\n\n return placement;\n };\n\n _proto._detectNavbar = function _detectNavbar() {\n return $__default["default"](this._element).closest(\'.navbar\').length > 0;\n };\n\n _proto._getOffset = function _getOffset() {\n var _this2 = this;\n\n var offset = {};\n\n if (typeof this._config.offset === \'function\') {\n offset.fn = function (data) {\n data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element));\n return data;\n };\n } else {\n offset.offset = this._config.offset;\n }\n\n return offset;\n };\n\n _proto._getPopperConfig = function _getPopperConfig() {\n var popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }; // Disable Popper if we have a static display\n\n if (this._config.display === \'static\') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n };\n }\n\n return _extends({}, popperConfig, this._config.popperConfig);\n } // Static\n ;\n\n Dropdown._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default["default"](this).data(DATA_KEY$6);\n\n var _config = typeof config === \'object\' ? config : null;\n\n if (!data) {\n data = new Dropdown(this, _config);\n $__default["default"](this).data(DATA_KEY$6, data);\n }\n\n if (typeof config === \'string\') {\n if (typeof data[config] === \'undefined\') {\n throw new TypeError("No method named \\"" + config + "\\"");\n }\n\n data[config]();\n }\n });\n };\n\n Dropdown._clearMenus = function _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === \'keyup\' && event.which !== TAB_KEYCODE)) {\n return;\n }\n\n var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$2));\n\n for (var i = 0, len = toggles.length; i < len; i++) {\n var parent = Dropdown._getParentFromElement(toggles[i]);\n\n var context = $__default["default"](toggles[i]).data(DATA_KEY$6);\n var relatedTarget = {\n relatedTarget: toggles[i]\n };\n\n if (event && event.type === \'click\') {\n relatedTarget.clickEvent = event;\n }\n\n if (!context) {\n continue;\n }\n\n var dropdownMenu = context._menu;\n\n if (!$__default["default"](parent).hasClass(CLASS_NAME_SHOW$5)) {\n continue;\n }\n\n if (event && (event.type === \'click\' && /input|textarea/i.test(event.target.tagName) || event.type === \'keyup\' && event.which === TAB_KEYCODE) && $__default["default"].contains(parent, event.target)) {\n continue;\n }\n\n var hideEvent = $__default["default"].Event(EVENT_HIDE$3, relatedTarget);\n $__default["default"](parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n continue;\n } // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n\n if (\'ontouchstart\' in document.documentElement) {\n $__default["default"](document.body).children().off(\'mouseover\', null, $__default["default"].noop);\n }\n\n toggles[i].setAttribute(\'aria-expanded\', \'false\');\n\n if (context._popper) {\n context._popper.destroy();\n }\n\n $__default["default"](dropdownMenu).removeClass(CLASS_NAME_SHOW$5);\n $__default["default"](parent).removeClass(CLASS_NAME_SHOW$5).trigger($__default["default"].Event(EVENT_HIDDEN$3, relatedTarget));\n }\n };\n\n Dropdown._getParentFromElement = function _getParentFromElement(element) {\n var parent;\n var selector = Util.getSelectorFromElement(element);\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n return parent || element.parentNode;\n } // eslint-disable-next-line complexity\n ;\n\n Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE$1 && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default["default"](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return;\n }\n\n if (this.disabled || $__default["default"](this).hasClass(CLASS_NAME_DISABLED$1)) {\n return;\n }\n\n var parent = Dropdown._getParentFromElement(this);\n\n var isActive = $__default["default"](parent).hasClass(CLASS_NAME_SHOW$5);\n\n if (!isActive && event.which === ESCAPE_KEYCODE$1) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if (!isActive || event.which === ESCAPE_KEYCODE$1 || event.which === SPACE_KEYCODE) {\n if (event.which === ESCAPE_KEYCODE$1) {\n $__default["default"](parent.querySelector(SELECTOR_DATA_TOGGLE$2)).trigger(\'focus\');\n }\n\n $__default["default"](this).trigger(\'click\');\n return;\n }\n\n var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {\n return $__default["default"](item).is(\':visible\');\n });\n\n if (items.length === 0) {\n return;\n }\n\n var index = items.indexOf(event.target);\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) {\n // Up\n index--;\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {\n // Down\n index++;\n }\n\n if (index < 0) {\n index = 0;\n }\n\n items[index].focus();\n };\n\n _createClass(Dropdown, null, [{\n key: "VERSION",\n get: function get() {\n return VERSION$6;\n }\n }, {\n key: "Default",\n get: function get() {\n return Default$5;\n }\n }, {\n key: "DefaultType",\n get: function get() {\n return DefaultType$5;\n }\n }]);\n\n return Dropdown;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default["default"](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API$2 + " " + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n Dropdown._jQueryInterface.call($__default["default"](this), \'toggle\');\n }).on(EVENT_CLICK_DATA_API$2, SELECTOR_FORM_CHILD, function (e) {\n e.stopPropagation();\n });\n /**\n * jQuery\n */\n\n $__default["default"].fn[NAME$6] = Dropdown._jQueryInterface;\n $__default["default"].fn[NAME$6].Constructor = Dropdown;\n\n $__default["default"].fn[NAME$6].noConflict = function () {\n $__default["default"].fn[NAME$6] = JQUERY_NO_CONFLICT$6;\n return Dropdown._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME$5 = \'modal\';\n var VERSION$5 = \'4.6.1\';\n var DATA_KEY$5 = \'bs.modal\';\n var EVENT_KEY$5 = "." + DATA_KEY$5;\n var DATA_API_KEY$2 = \'.data-api\';\n var JQUERY_NO_CONFLICT$5 = $__default["default"].fn[NAME$5];\n var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var CLASS_NAME_SCROLLABLE = \'modal-dialog-scrollable\';\n var CLASS_NAME_SCROLLBAR_MEASURER = \'modal-scrollbar-measure\';\n var CLASS_NAME_BACKDROP = \'modal-backdrop\';\n var CLASS_NAME_OPEN = \'modal-open\';\n var CLASS_NAME_FADE$4 = \'fade\';\n var CLASS_NAME_SHOW$4 = \'show\';\n var CLASS_NAME_STATIC = \'modal-static\';\n var EVENT_HIDE$2 = "hide" + EVENT_KEY$5;\n var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY$5;\n var EVENT_HIDDEN$2 = "hidden" + EVENT_KEY$5;\n var EVENT_SHOW$2 = "show" + EVENT_KEY$5;\n var EVENT_SHOWN$2 = "shown" + EVENT_KEY$5;\n var EVENT_FOCUSIN = "focusin" + EVENT_KEY$5;\n var EVENT_RESIZE = "resize" + EVENT_KEY$5;\n var EVENT_CLICK_DISMISS$1 = "click.dismiss" + EVENT_KEY$5;\n var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY$5;\n var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY$5;\n var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY$5;\n var EVENT_CLICK_DATA_API$1 = "click" + EVENT_KEY$5 + DATA_API_KEY$2;\n var SELECTOR_DIALOG = \'.modal-dialog\';\n var SELECTOR_MODAL_BODY = \'.modal-body\';\n var SELECTOR_DATA_TOGGLE$1 = \'[data-toggle="modal"]\';\n var SELECTOR_DATA_DISMISS$1 = \'[data-dismiss="modal"]\';\n var SELECTOR_FIXED_CONTENT = \'.fixed-top, .fixed-bottom, .is-fixed, .sticky-top\';\n var SELECTOR_STICKY_CONTENT = \'.sticky-top\';\n var Default$4 = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: true\n };\n var DefaultType$4 = {\n backdrop: \'(boolean|string)\',\n keyboard: \'boolean\',\n focus: \'boolean\',\n show: \'boolean\'\n };\n /**\n * Class definition\n */\n\n var Modal = /*#__PURE__*/function () {\n function Modal(element, config) {\n this._config = this._getConfig(config);\n this._element = element;\n this._dialog = element.querySelector(SELECTOR_DIALOG);\n this._backdrop = null;\n this._isShown = false;\n this._isBodyOverflowing = false;\n this._ignoreBackdropClick = false;\n this._isTransitioning = false;\n this._scrollbarWidth = 0;\n } // Getters\n\n\n var _proto = Modal.prototype;\n\n // Public\n _proto.toggle = function toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n };\n\n _proto.show = function show(relatedTarget) {\n var _this = this;\n\n if (this._isShown || this._isTransitioning) {\n return;\n }\n\n var showEvent = $__default["default"].Event(EVENT_SHOW$2, {\n relatedTarget: relatedTarget\n });\n $__default["default"](this._element).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = true;\n\n if ($__default["default"](this._element).hasClass(CLASS_NAME_FADE$4)) {\n this._isTransitioning = true;\n }\n\n this._checkScrollbar();\n\n this._setScrollbar();\n\n this._adjustDialog();\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $__default["default"](this._element).on(EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function (event) {\n return _this.hide(event);\n });\n $__default["default"](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {\n $__default["default"](_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {\n if ($__default["default"](event.target).is(_this._element)) {\n _this._ignoreBackdropClick = true;\n }\n });\n });\n\n this._showBackdrop(function () {\n return _this._showElement(relatedTarget);\n });\n };\n\n _proto.hide = function hide(event) {\n var _this2 = this;\n\n if (event) {\n event.preventDefault();\n }\n\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n\n var hideEvent = $__default["default"].Event(EVENT_HIDE$2);\n $__default["default"](this._element).trigger(hideEvent);\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = false;\n var transition = $__default["default"](this._element).hasClass(CLASS_NAME_FADE$4);\n\n if (transition) {\n this._isTransitioning = true;\n }\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $__default["default"](document).off(EVENT_FOCUSIN);\n $__default["default"](this._element).removeClass(CLASS_NAME_SHOW$4);\n $__default["default"](this._element).off(EVENT_CLICK_DISMISS$1);\n $__default["default"](this._dialog).off(EVENT_MOUSEDOWN_DISMISS);\n\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default["default"](this._element).one(Util.TRANSITION_END, function (event) {\n return _this2._hideModal(event);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n this._hideModal();\n }\n };\n\n _proto.dispose = function dispose() {\n [window, this._element, this._dialog].forEach(function (htmlElement) {\n return $__default["default"](htmlElement).off(EVENT_KEY$5);\n });\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n\n $__default["default"](document).off(EVENT_FOCUSIN);\n $__default["default"].removeData(this._element, DATA_KEY$5);\n this._config = null;\n this._element = null;\n this._dialog = null;\n this._backdrop = null;\n this._isShown = null;\n this._isBodyOverflowing = null;\n this._ignoreBackdropClick = null;\n this._isTransitioning = null;\n this._scrollbarWidth = null;\n };\n\n _proto.handleUpdate = function handleUpdate() {\n this._adjustDialog();\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$4, config);\n Util.typeCheckConfig(NAME$5, config, DefaultType$4);\n return config;\n };\n\n _proto._triggerBackdropTransition = function _triggerBackdropTransition() {\n var _this3 = this;\n\n var hideEventPrevented = $__default["default"].Event(EVENT_HIDE_PREVENTED);\n $__default["default"](this._element).trigger(hideEventPrevented);\n\n if (hideEventPrevented.isDefaultPrevented()) {\n return;\n }\n\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = \'hidden\';\n }\n\n this._element.classList.add(CLASS_NAME_STATIC);\n\n var modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n $__default["default"](this._element).off(Util.TRANSITION_END);\n $__default["default"](this._element).one(Util.TRANSITION_END, function () {\n _this3._element.classList.remove(CLASS_NAME_STATIC);\n\n if (!isModalOverflowing) {\n $__default["default"](_this3._element).one(Util.TRANSITION_END, function () {\n _this3._element.style.overflowY = \'\';\n }).emulateTransitionEnd(_this3._element, modalTransitionDuration);\n }\n }).emulateTransitionEnd(modalTransitionDuration);\n\n this._element.focus();\n };\n\n _proto._showElement = function _showElement(relatedTarget) {\n var _this4 = this;\n\n var transition = $__default["default"](this._element).hasClass(CLASS_NAME_FADE$4);\n var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don\'t move modal\'s DOM position\n document.body.appendChild(this._element);\n }\n\n this._element.style.display = \'block\';\n\n this._element.removeAttribute(\'aria-hidden\');\n\n this._element.setAttribute(\'aria-modal\', true);\n\n this._element.setAttribute(\'role\', \'dialog\');\n\n if ($__default["default"](this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n modalBody.scrollTop = 0;\n } else {\n this._element.scrollTop = 0;\n }\n\n if (transition) {\n Util.reflow(this._element);\n }\n\n $__default["default"](this._element).addClass(CLASS_NAME_SHOW$4);\n\n if (this._config.focus) {\n this._enforceFocus();\n }\n\n var shownEvent = $__default["default"].Event(EVENT_SHOWN$2, {\n relatedTarget: relatedTarget\n });\n\n var transitionComplete = function transitionComplete() {\n if (_this4._config.focus) {\n _this4._element.focus();\n }\n\n _this4._isTransitioning = false;\n $__default["default"](_this4._element).trigger(shownEvent);\n };\n\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n $__default["default"](this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);\n } else {\n transitionComplete();\n }\n };\n\n _proto._enforceFocus = function _enforceFocus() {\n var _this5 = this;\n\n $__default["default"](document).off(EVENT_FOCUSIN) // Guard against infinite focus loop\n .on(EVENT_FOCUSIN, function (event) {\n if (document !== event.target && _this5._element !== event.target && $__default["default"](_this5._element).has(event.target).length === 0) {\n _this5._element.focus();\n }\n });\n };\n\n _proto._setEscapeEvent = function _setEscapeEvent() {\n var _this6 = this;\n\n if (this._isShown) {\n $__default["default"](this._element).on(EVENT_KEYDOWN_DISMISS, function (event) {\n if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {\n event.preventDefault();\n\n _this6.hide();\n } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {\n _this6._triggerBackdropTransition();\n }\n });\n } else if (!this._isShown) {\n $__default["default"](this._element).off(EVENT_KEYDOWN_DISMISS);\n }\n };\n\n _proto._setResizeEvent = function _setResizeEvent() {\n var _this7 = this;\n\n if (this._isShown) {\n $__default["default"](window).on(EVENT_RESIZE, function (event) {\n return _this7.handleUpdate(event);\n });\n } else {\n $__default["default"](window).off(EVENT_RESIZE);\n }\n };\n\n _proto._hideModal = function _hideModal() {\n var _this8 = this;\n\n this._element.style.display = \'none\';\n\n this._element.setAttribute(\'aria-hidden\', true);\n\n this._element.removeAttribute(\'aria-modal\');\n\n this._element.removeAttribute(\'role\');\n\n this._isTransitioning = false;\n\n this._showBackdrop(function () {\n $__default["default"](document.body).removeClass(CLASS_NAME_OPEN);\n\n _this8._resetAdjustments();\n\n _this8._resetScrollbar();\n\n $__default["default"](_this8._element).trigger(EVENT_HIDDEN$2);\n });\n };\n\n _proto._removeBackdrop = function _removeBackdrop() {\n if (this._backdrop) {\n $__default["default"](this._backdrop).remove();\n this._backdrop = null;\n }\n };\n\n _proto._showBackdrop = function _showBackdrop(callback) {\n var _this9 = this;\n\n var animate = $__default["default"](this._element).hasClass(CLASS_NAME_FADE$4) ? CLASS_NAME_FADE$4 : \'\';\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement(\'div\');\n this._backdrop.className = CLASS_NAME_BACKDROP;\n\n if (animate) {\n this._backdrop.classList.add(animate);\n }\n\n $__default["default"](this._backdrop).appendTo(document.body);\n $__default["default"](this._element).on(EVENT_CLICK_DISMISS$1, function (event) {\n if (_this9._ignoreBackdropClick) {\n _this9._ignoreBackdropClick = false;\n return;\n }\n\n if (event.target !== event.currentTarget) {\n return;\n }\n\n if (_this9._config.backdrop === \'static\') {\n _this9._triggerBackdropTransition();\n } else {\n _this9.hide();\n }\n });\n\n if (animate) {\n Util.reflow(this._backdrop);\n }\n\n $__default["default"](this._backdrop).addClass(CLASS_NAME_SHOW$4);\n\n if (!callback) {\n return;\n }\n\n if (!animate) {\n callback();\n return;\n }\n\n var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n $__default["default"](this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n } else if (!this._isShown && this._backdrop) {\n $__default["default"](this._backdrop).removeClass(CLASS_NAME_SHOW$4);\n\n var callbackRemove = function callbackRemove() {\n _this9._removeBackdrop();\n\n if (callback) {\n callback();\n }\n };\n\n if ($__default["default"](this._element).hasClass(CLASS_NAME_FADE$4)) {\n var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n\n $__default["default"](this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);\n } else {\n callbackRemove();\n }\n } else if (callback) {\n callback();\n }\n } // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n ;\n\n _proto._adjustDialog = function _adjustDialog() {\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = this._scrollbarWidth + "px";\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = this._scrollbarWidth + "px";\n }\n };\n\n _proto._resetAdjustments = function _resetAdjustments() {\n this._element.style.paddingLeft = \'\';\n this._element.style.paddingRight = \'\';\n };\n\n _proto._checkScrollbar = function _checkScrollbar() {\n var rect = document.body.getBoundingClientRect();\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;\n this._scrollbarWidth = this._getScrollbarWidth();\n };\n\n _proto._setScrollbar = function _setScrollbar() {\n var _this10 = this;\n\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or \'\' if not set\n // while $(DOMNode).css(\'padding-right\') returns the calculated value or 0 if not set\n var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding\n\n $__default["default"](fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight;\n var calculatedPadding = $__default["default"](element).css(\'padding-right\');\n $__default["default"](element).data(\'padding-right\', actualPadding).css(\'padding-right\', parseFloat(calculatedPadding) + _this10._scrollbarWidth + "px");\n }); // Adjust sticky content margin\n\n $__default["default"](stickyContent).each(function (index, element) {\n var actualMargin = element.style.marginRight;\n var calculatedMargin = $__default["default"](element).css(\'margin-right\');\n $__default["default"](element).data(\'margin-right\', actualMargin).css(\'margin-right\', parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px");\n }); // Adjust body padding\n\n var actualPadding = document.body.style.paddingRight;\n var calculatedPadding = $__default["default"](document.body).css(\'padding-right\');\n $__default["default"](document.body).data(\'padding-right\', actualPadding).css(\'padding-right\', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");\n }\n\n $__default["default"](document.body).addClass(CLASS_NAME_OPEN);\n };\n\n _proto._resetScrollbar = function _resetScrollbar() {\n // Restore fixed content padding\n var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n $__default["default"](fixedContent).each(function (index, element) {\n var padding = $__default["default"](element).data(\'padding-right\');\n $__default["default"](element).removeData(\'padding-right\');\n element.style.paddingRight = padding ? padding : \'\';\n }); // Restore sticky content\n\n var elements = [].slice.call(document.querySelectorAll("" + SELECTOR_STICKY_CONTENT));\n $__default["default"](elements).each(function (index, element) {\n var margin = $__default["default"](element).data(\'margin-right\');\n\n if (typeof margin !== \'undefined\') {\n $__default["default"](element).css(\'margin-right\', margin).removeData(\'margin-right\');\n }\n }); // Restore body padding\n\n var padding = $__default["default"](document.body).data(\'padding-right\');\n $__default["default"](document.body).removeData(\'padding-right\');\n document.body.style.paddingRight = padding ? padding : \'\';\n };\n\n _proto._getScrollbarWidth = function _getScrollbarWidth() {\n // thx d.walsh\n var scrollDiv = document.createElement(\'div\');\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n } // Static\n ;\n\n Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n var data = $__default["default"](this).data(DATA_KEY$5);\n\n var _config = _extends({}, Default$4, $__default["default"](this).data(), typeof config === \'object\' && config ? config : {});\n\n if (!data) {\n data = new Modal(this, _config);\n $__default["default"](this).data(DATA_KEY$5, data);\n }\n\n if (typeof config === \'string\') {\n if (typeof data[config] === \'undefined\') {\n throw new TypeError("No method named \\"" + config + "\\"");\n }\n\n data[config](relatedTarget);\n } else if (_config.show) {\n data.show(relatedTarget);\n }\n });\n };\n\n _createClass(Modal, null, [{\n key: "VERSION",\n get: function get() {\n return VERSION$5;\n }\n }, {\n key: "Default",\n get: function get() {\n return Default$4;\n }\n }]);\n\n return Modal;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default["default"](document).on(EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n var _this11 = this;\n\n var target;\n var selector = Util.getSelectorFromElement(this);\n\n if (selector) {\n target = document.querySelector(selector);\n }\n\n var config = $__default["default"](target).data(DATA_KEY$5) ? \'toggle\' : _extends({}, $__default["default"](target).data(), $__default["default"](this).data());\n\n if (this.tagName === \'A\' || this.tagName === \'AREA\') {\n event.preventDefault();\n }\n\n var $target = $__default["default"](target).one(EVENT_SHOW$2, function (showEvent) {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return;\n }\n\n $target.one(EVENT_HIDDEN$2, function () {\n if ($__default["default"](_this11).is(\':visible\')) {\n _this11.focus();\n }\n });\n });\n\n Modal._jQueryInterface.call($__default["default"](target), config, this);\n });\n /**\n * jQuery\n */\n\n $__default["default"].fn[NAME$5] = Modal._jQueryInterface;\n $__default["default"].fn[NAME$5].Constructor = Modal;\n\n $__default["default"].fn[NAME$5].noConflict = function () {\n $__default["default"].fn[NAME$5] = JQUERY_NO_CONFLICT$5;\n return Modal._jQueryInterface;\n };\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.1): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n var uriAttrs = [\'background\', \'cite\', \'href\', \'itemtype\', \'longdesc\', \'poster\', \'src\', \'xlink:href\'];\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n var DefaultWhitelist = {\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 div: [],\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 /**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;\n /**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase();\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue));\n }\n\n return true;\n }\n\n var regExp = allowedAttributeList.filter(function (attrRegex) {\n return attrRegex instanceof RegExp;\n }); // Check if a regular expression validates the attribute.\n\n for (var i = 0, len = regExp.length; i < len; i++) {\n if (regExp[i].test(attrName)) {\n return true;\n }\n }\n\n return false;\n }\n\n function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml;\n }\n\n if (sanitizeFn && typeof sanitizeFn === \'function\') {\n return sanitizeFn(unsafeHtml);\n }\n\n var domParser = new window.DOMParser();\n var createdDocument = domParser.parseFromString(unsafeHtml, \'text/html\');\n var whitelistKeys = Object.keys(whiteList);\n var elements = [].slice.call(createdDocument.body.querySelectorAll(\'*\'));\n\n var _loop = function _loop(i, len) {\n var el = elements[i];\n var elName = el.nodeName.toLowerCase();\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el);\n return "continue";\n }\n\n var attributeList = [].slice.call(el.attributes); // eslint-disable-next-line unicorn/prefer-spread\n\n var whitelistedAttributes = [].concat(whiteList[\'*\'] || [], whiteList[elName] || []);\n attributeList.forEach(function (attr) {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName);\n }\n });\n };\n\n for (var i = 0, len = elements.length; i < len; i++) {\n var _ret = _loop(i);\n\n if (_ret === "continue") continue;\n }\n\n return createdDocument.body.innerHTML;\n }\n\n /**\n * Constants\n */\n\n var NAME$4 = \'tooltip\';\n var VERSION$4 = \'4.6.1\';\n var DATA_KEY$4 = \'bs.tooltip\';\n var EVENT_KEY$4 = "." + DATA_KEY$4;\n var JQUERY_NO_CONFLICT$4 = $__default["default"].fn[NAME$4];\n var CLASS_PREFIX$1 = \'bs-tooltip\';\n var BSCLS_PREFIX_REGEX$1 = new RegExp("(^|\\\\s)" + CLASS_PREFIX$1 + "\\\\S+", \'g\');\n var DISALLOWED_ATTRIBUTES = [\'sanitize\', \'whiteList\', \'sanitizeFn\'];\n var CLASS_NAME_FADE$3 = \'fade\';\n var CLASS_NAME_SHOW$3 = \'show\';\n var HOVER_STATE_SHOW = \'show\';\n var HOVER_STATE_OUT = \'out\';\n var SELECTOR_TOOLTIP_INNER = \'.tooltip-inner\';\n var SELECTOR_ARROW = \'.arrow\';\n var TRIGGER_HOVER = \'hover\';\n var TRIGGER_FOCUS = \'focus\';\n var TRIGGER_CLICK = \'click\';\n var TRIGGER_MANUAL = \'manual\';\n var AttachmentMap = {\n AUTO: \'auto\',\n TOP: \'top\',\n RIGHT: \'right\',\n BOTTOM: \'bottom\',\n LEFT: \'left\'\n };\n var Default$3 = {\n animation: true,\n template: \'\',\n trigger: \'hover focus\',\n title: \'\',\n delay: 0,\n html: false,\n selector: false,\n placement: \'top\',\n offset: 0,\n container: false,\n fallbackPlacement: \'flip\',\n boundary: \'scrollParent\',\n customClass: \'\',\n sanitize: true,\n sanitizeFn: null,\n whiteList: DefaultWhitelist,\n popperConfig: null\n };\n var DefaultType$3 = {\n animation: \'boolean\',\n template: \'string\',\n title: \'(string|element|function)\',\n trigger: \'string\',\n delay: \'(number|object)\',\n html: \'boolean\',\n selector: \'(string|boolean)\',\n placement: \'(string|function)\',\n offset: \'(number|string|function)\',\n container: \'(string|element|boolean)\',\n fallbackPlacement: \'(string|array)\',\n boundary: \'(string|element)\',\n customClass: \'(string|function)\',\n sanitize: \'boolean\',\n sanitizeFn: \'(null|function)\',\n whiteList: \'object\',\n popperConfig: \'(null|object)\'\n };\n var Event$1 = {\n HIDE: "hide" + EVENT_KEY$4,\n HIDDEN: "hidden" + EVENT_KEY$4,\n SHOW: "show" + EVENT_KEY$4,\n SHOWN: "shown" + EVENT_KEY$4,\n INSERTED: "inserted" + EVENT_KEY$4,\n CLICK: "click" + EVENT_KEY$4,\n FOCUSIN: "focusin" + EVENT_KEY$4,\n FOCUSOUT: "focusout" + EVENT_KEY$4,\n MOUSEENTER: "mouseenter" + EVENT_KEY$4,\n MOUSELEAVE: "mouseleave" + EVENT_KEY$4\n };\n /**\n * Class definition\n */\n\n var Tooltip = /*#__PURE__*/function () {\n function Tooltip(element, config) {\n if (typeof Popper__default["default"] === \'undefined\') {\n throw new TypeError(\'Bootstrap\\\'s tooltips require Popper (https://popper.js.org)\');\n } // Private\n\n\n this._isEnabled = true;\n this._timeout = 0;\n this._hoverState = \'\';\n this._activeTrigger = {};\n this._popper = null; // Protected\n\n this.element = element;\n this.config = this._getConfig(config);\n this.tip = null;\n\n this._setListeners();\n } // Getters\n\n\n var _proto = Tooltip.prototype;\n\n // Public\n _proto.enable = function enable() {\n this._isEnabled = true;\n };\n\n _proto.disable = function disable() {\n this._isEnabled = false;\n };\n\n _proto.toggleEnabled = function toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n };\n\n _proto.toggle = function toggle(event) {\n if (!this._isEnabled) {\n return;\n }\n\n if (event) {\n var dataKey = this.constructor.DATA_KEY;\n var context = $__default["default"](event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default["default"](event.currentTarget).data(dataKey, context);\n }\n\n context._activeTrigger.click = !context._activeTrigger.click;\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context);\n } else {\n context._leave(null, context);\n }\n } else {\n if ($__default["default"](this.getTipElement()).hasClass(CLASS_NAME_SHOW$3)) {\n this._leave(null, this);\n\n return;\n }\n\n this._enter(null, this);\n }\n };\n\n _proto.dispose = function dispose() {\n clearTimeout(this._timeout);\n $__default["default"].removeData(this.element, this.constructor.DATA_KEY);\n $__default["default"](this.element).off(this.constructor.EVENT_KEY);\n $__default["default"](this.element).closest(\'.modal\').off(\'hide.bs.modal\', this._hideModalHandler);\n\n if (this.tip) {\n $__default["default"](this.tip).remove();\n }\n\n this._isEnabled = null;\n this._timeout = null;\n this._hoverState = null;\n this._activeTrigger = null;\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n this._popper = null;\n this.element = null;\n this.config = null;\n this.tip = null;\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if ($__default["default"](this.element).css(\'display\') === \'none\') {\n throw new Error(\'Please use show on visible elements\');\n }\n\n var showEvent = $__default["default"].Event(this.constructor.Event.SHOW);\n\n if (this.isWithContent() && this._isEnabled) {\n $__default["default"](this.element).trigger(showEvent);\n var shadowRoot = Util.findShadowRoot(this.element);\n var isInTheDom = $__default["default"].contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return;\n }\n\n var tip = this.getTipElement();\n var tipId = Util.getUID(this.constructor.NAME);\n tip.setAttribute(\'id\', tipId);\n this.element.setAttribute(\'aria-describedby\', tipId);\n this.setContent();\n\n if (this.config.animation) {\n $__default["default"](tip).addClass(CLASS_NAME_FADE$3);\n }\n\n var placement = typeof this.config.placement === \'function\' ? this.config.placement.call(this, tip, this.element) : this.config.placement;\n\n var attachment = this._getAttachment(placement);\n\n this.addAttachmentClass(attachment);\n\n var container = this._getContainer();\n\n $__default["default"](tip).data(this.constructor.DATA_KEY, this);\n\n if (!$__default["default"].contains(this.element.ownerDocument.documentElement, this.tip)) {\n $__default["default"](tip).appendTo(container);\n }\n\n $__default["default"](this.element).trigger(this.constructor.Event.INSERTED);\n this._popper = new Popper__default["default"](this.element, tip, this._getPopperConfig(attachment));\n $__default["default"](tip).addClass(CLASS_NAME_SHOW$3);\n $__default["default"](tip).addClass(this.config.customClass); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body\'s immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n if (\'ontouchstart\' in document.documentElement) {\n $__default["default"](document.body).children().on(\'mouseover\', null, $__default["default"].noop);\n }\n\n var complete = function complete() {\n if (_this.config.animation) {\n _this._fixTransition();\n }\n\n var prevHoverState = _this._hoverState;\n _this._hoverState = null;\n $__default["default"](_this.element).trigger(_this.constructor.Event.SHOWN);\n\n if (prevHoverState === HOVER_STATE_OUT) {\n _this._leave(null, _this);\n }\n };\n\n if ($__default["default"](this.tip).hasClass(CLASS_NAME_FADE$3)) {\n var transitionDuration = Util.getTransitionDurationFromElement(this.tip);\n $__default["default"](this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n }\n };\n\n _proto.hide = function hide(callback) {\n var _this2 = this;\n\n var tip = this.getTipElement();\n var hideEvent = $__default["default"].Event(this.constructor.Event.HIDE);\n\n var complete = function complete() {\n if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip);\n }\n\n _this2._cleanTipClass();\n\n _this2.element.removeAttribute(\'aria-describedby\');\n\n $__default["default"](_this2.element).trigger(_this2.constructor.Event.HIDDEN);\n\n if (_this2._popper !== null) {\n _this2._popper.destroy();\n }\n\n if (callback) {\n callback();\n }\n };\n\n $__default["default"](this.element).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n $__default["default"](tip).removeClass(CLASS_NAME_SHOW$3); // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if (\'ontouchstart\' in document.documentElement) {\n $__default["default"](document.body).children().off(\'mouseover\', null, $__default["default"].noop);\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n\n if ($__default["default"](this.tip).hasClass(CLASS_NAME_FADE$3)) {\n var transitionDuration = Util.getTransitionDurationFromElement(tip);\n $__default["default"](tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n\n this._hoverState = \'\';\n };\n\n _proto.update = function update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Protected\n ;\n\n _proto.isWithContent = function isWithContent() {\n return Boolean(this.getTitle());\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $__default["default"](this.getTipElement()).addClass(CLASS_PREFIX$1 + "-" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $__default["default"](this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var tip = this.getTipElement();\n this.setElementContent($__default["default"](tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle());\n $__default["default"](tip).removeClass(CLASS_NAME_FADE$3 + " " + CLASS_NAME_SHOW$3);\n };\n\n _proto.setElementContent = function setElementContent($element, content) {\n if (typeof content === \'object\' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$__default["default"](content).parent().is($element)) {\n $element.empty().append(content);\n }\n } else {\n $element.text($__default["default"](content).text());\n }\n\n return;\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);\n }\n\n $element.html(content);\n } else {\n $element.text(content);\n }\n };\n\n _proto.getTitle = function getTitle() {\n var title = this.element.getAttribute(\'data-original-title\');\n\n if (!title) {\n title = typeof this.config.title === \'function\' ? this.config.title.call(this.element) : this.config.title;\n }\n\n return title;\n } // Private\n ;\n\n _proto._getPopperConfig = function _getPopperConfig(attachment) {\n var _this3 = this;\n\n var defaultBsConfig = {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: SELECTOR_ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: function onCreate(data) {\n if (data.originalPlacement !== data.placement) {\n _this3._handlePopperPlacementChange(data);\n }\n },\n onUpdate: function onUpdate(data) {\n return _this3._handlePopperPlacementChange(data);\n }\n };\n return _extends({}, defaultBsConfig, this.config.popperConfig);\n };\n\n _proto._getOffset = function _getOffset() {\n var _this4 = this;\n\n var offset = {};\n\n if (typeof this.config.offset === \'function\') {\n offset.fn = function (data) {\n data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element));\n return data;\n };\n } else {\n offset.offset = this.config.offset;\n }\n\n return offset;\n };\n\n _proto._getContainer = function _getContainer() {\n if (this.config.container === false) {\n return document.body;\n }\n\n if (Util.isElement(this.config.container)) {\n return $__default["default"](this.config.container);\n }\n\n return $__default["default"](document).find(this.config.container);\n };\n\n _proto._getAttachment = function _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()];\n };\n\n _proto._setListeners = function _setListeners() {\n var _this5 = this;\n\n var triggers = this.config.trigger.split(\' \');\n triggers.forEach(function (trigger) {\n if (trigger === \'click\') {\n $__default["default"](_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) {\n return _this5.toggle(event);\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;\n var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;\n $__default["default"](_this5.element).on(eventIn, _this5.config.selector, function (event) {\n return _this5._enter(event);\n }).on(eventOut, _this5.config.selector, function (event) {\n return _this5._leave(event);\n });\n }\n });\n\n this._hideModalHandler = function () {\n if (_this5.element) {\n _this5.hide();\n }\n };\n\n $__default["default"](this.element).closest(\'.modal\').on(\'hide.bs.modal\', this._hideModalHandler);\n\n if (this.config.selector) {\n this.config = _extends({}, this.config, {\n trigger: \'manual\',\n selector: \'\'\n });\n } else {\n this._fixTitle();\n }\n };\n\n _proto._fixTitle = function _fixTitle() {\n var titleType = typeof this.element.getAttribute(\'data-original-title\');\n\n if (this.element.getAttribute(\'title\') || titleType !== \'string\') {\n this.element.setAttribute(\'data-original-title\', this.element.getAttribute(\'title\') || \'\');\n this.element.setAttribute(\'title\', \'\');\n }\n };\n\n _proto._enter = function _enter(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $__default["default"](event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default["default"](event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === \'focusin\' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n }\n\n if ($__default["default"](context.getTipElement()).hasClass(CLASS_NAME_SHOW$3) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW;\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HOVER_STATE_SHOW;\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show();\n }\n }, context.config.delay.show);\n };\n\n _proto._leave = function _leave(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $__default["default"](event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default["default"](event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === \'focusout\' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;\n }\n\n if (context._isWithActiveTrigger()) {\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HOVER_STATE_OUT;\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide();\n }\n }, context.config.delay.hide);\n };\n\n _proto._isWithActiveTrigger = function _isWithActiveTrigger() {\n for (var trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true;\n }\n }\n\n return false;\n };\n\n _proto._getConfig = function _getConfig(config) {\n var dataAttributes = $__default["default"](this.element).data();\n Object.keys(dataAttributes).forEach(function (dataAttr) {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr];\n }\n });\n config = _extends({}, this.constructor.Default, dataAttributes, typeof config === \'object\' && config ? config : {});\n\n if (typeof config.delay === \'number\') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n\n if (typeof config.title === \'number\') {\n config.title = config.title.toString();\n }\n\n if (typeof config.content === \'number\') {\n config.content = config.content.toString();\n }\n\n Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);\n }\n\n return config;\n };\n\n _proto._getDelegateConfig = function _getDelegateConfig() {\n var config = {};\n\n if (this.config) {\n for (var key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key];\n }\n }\n }\n\n return config;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $__default["default"](this.getTipElement());\n var tabClass = $tip.attr(\'class\').match(BSCLS_PREFIX_REGEX$1);\n\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(\'\'));\n }\n };\n\n _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {\n this.tip = popperData.instance.popper;\n\n this._cleanTipClass();\n\n this.addAttachmentClass(this._getAttachment(popperData.placement));\n };\n\n _proto._fixTransition = function _fixTransition() {\n var tip = this.getTipElement();\n var initConfigAnimation = this.config.animation;\n\n if (tip.getAttribute(\'x-placement\') !== null) {\n return;\n }\n\n $__default["default"](tip).removeClass(CLASS_NAME_FADE$3);\n this.config.animation = false;\n this.hide();\n this.show();\n this.config.animation = initConfigAnimation;\n } // Static\n ;\n\n Tooltip._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default["default"](this);\n var data = $element.data(DATA_KEY$4);\n\n var _config = typeof config === \'object\' && config;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Tooltip(this, _config);\n $element.data(DATA_KEY$4, data);\n }\n\n if (typeof config === \'string\') {\n if (typeof data[config] === \'undefined\') {\n throw new TypeError("No method named \\"" + config + "\\"");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Tooltip, null, [{\n key: "VERSION",\n get: function get() {\n return VERSION$4;\n }\n }, {\n key: "Default",\n get: function get() {\n return Default$3;\n }\n }, {\n key: "NAME",\n get: function get() {\n return NAME$4;\n }\n }, {\n key: "DATA_KEY",\n get: function get() {\n return DATA_KEY$4;\n }\n }, {\n key: "Event",\n get: function get() {\n return Event$1;\n }\n }, {\n key: "EVENT_KEY",\n get: function get() {\n return EVENT_KEY$4;\n }\n }, {\n key: "DefaultType",\n get: function get() {\n return DefaultType$3;\n }\n }]);\n\n return Tooltip;\n }();\n /**\n * jQuery\n */\n\n\n $__default["default"].fn[NAME$4] = Tooltip._jQueryInterface;\n $__default["default"].fn[NAME$4].Constructor = Tooltip;\n\n $__default["default"].fn[NAME$4].noConflict = function () {\n $__default["default"].fn[NAME$4] = JQUERY_NO_CONFLICT$4;\n return Tooltip._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME$3 = \'popover\';\n var VERSION$3 = \'4.6.1\';\n var DATA_KEY$3 = \'bs.popover\';\n var EVENT_KEY$3 = "." + DATA_KEY$3;\n var JQUERY_NO_CONFLICT$3 = $__default["default"].fn[NAME$3];\n var CLASS_PREFIX = \'bs-popover\';\n var BSCLS_PREFIX_REGEX = new RegExp("(^|\\\\s)" + CLASS_PREFIX + "\\\\S+", \'g\');\n var CLASS_NAME_FADE$2 = \'fade\';\n var CLASS_NAME_SHOW$2 = \'show\';\n var SELECTOR_TITLE = \'.popover-header\';\n var SELECTOR_CONTENT = \'.popover-body\';\n\n var Default$2 = _extends({}, Tooltip.Default, {\n placement: \'right\',\n trigger: \'click\',\n content: \'\',\n template: \'\'\n });\n\n var DefaultType$2 = _extends({}, Tooltip.DefaultType, {\n content: \'(string|element|function)\'\n });\n\n var Event = {\n HIDE: "hide" + EVENT_KEY$3,\n HIDDEN: "hidden" + EVENT_KEY$3,\n SHOW: "show" + EVENT_KEY$3,\n SHOWN: "shown" + EVENT_KEY$3,\n INSERTED: "inserted" + EVENT_KEY$3,\n CLICK: "click" + EVENT_KEY$3,\n FOCUSIN: "focusin" + EVENT_KEY$3,\n FOCUSOUT: "focusout" + EVENT_KEY$3,\n MOUSEENTER: "mouseenter" + EVENT_KEY$3,\n MOUSELEAVE: "mouseleave" + EVENT_KEY$3\n };\n /**\n * Class definition\n */\n\n var Popover = /*#__PURE__*/function (_Tooltip) {\n _inheritsLoose(Popover, _Tooltip);\n\n function Popover() {\n return _Tooltip.apply(this, arguments) || this;\n }\n\n var _proto = Popover.prototype;\n\n // Overrides\n _proto.isWithContent = function isWithContent() {\n return this.getTitle() || this._getContent();\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $__default["default"](this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $__default["default"](this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var $tip = $__default["default"](this.getTipElement()); // We use append for html objects to maintain js events\n\n this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle());\n\n var content = this._getContent();\n\n if (typeof content === \'function\') {\n content = content.call(this.element);\n }\n\n this.setElementContent($tip.find(SELECTOR_CONTENT), content);\n $tip.removeClass(CLASS_NAME_FADE$2 + " " + CLASS_NAME_SHOW$2);\n } // Private\n ;\n\n _proto._getContent = function _getContent() {\n return this.element.getAttribute(\'data-content\') || this.config.content;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $__default["default"](this.getTipElement());\n var tabClass = $tip.attr(\'class\').match(BSCLS_PREFIX_REGEX);\n\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(\'\'));\n }\n } // Static\n ;\n\n Popover._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default["default"](this).data(DATA_KEY$3);\n\n var _config = typeof config === \'object\' ? config : null;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Popover(this, _config);\n $__default["default"](this).data(DATA_KEY$3, data);\n }\n\n if (typeof config === \'string\') {\n if (typeof data[config] === \'undefined\') {\n throw new TypeError("No method named \\"" + config + "\\"");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Popover, null, [{\n key: "VERSION",\n get: // Getters\n function get() {\n return VERSION$3;\n }\n }, {\n key: "Default",\n get: function get() {\n return Default$2;\n }\n }, {\n key: "NAME",\n get: function get() {\n return NAME$3;\n }\n }, {\n key: "DATA_KEY",\n get: function get() {\n return DATA_KEY$3;\n }\n }, {\n key: "Event",\n get: function get() {\n return Event;\n }\n }, {\n key: "EVENT_KEY",\n get: function get() {\n return EVENT_KEY$3;\n }\n }, {\n key: "DefaultType",\n get: function get() {\n return DefaultType$2;\n }\n }]);\n\n return Popover;\n }(Tooltip);\n /**\n * jQuery\n */\n\n\n $__default["default"].fn[NAME$3] = Popover._jQueryInterface;\n $__default["default"].fn[NAME$3].Constructor = Popover;\n\n $__default["default"].fn[NAME$3].noConflict = function () {\n $__default["default"].fn[NAME$3] = JQUERY_NO_CONFLICT$3;\n return Popover._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME$2 = \'scrollspy\';\n var VERSION$2 = \'4.6.1\';\n var DATA_KEY$2 = \'bs.scrollspy\';\n var EVENT_KEY$2 = "." + DATA_KEY$2;\n var DATA_API_KEY$1 = \'.data-api\';\n var JQUERY_NO_CONFLICT$2 = $__default["default"].fn[NAME$2];\n var CLASS_NAME_DROPDOWN_ITEM = \'dropdown-item\';\n var CLASS_NAME_ACTIVE$1 = \'active\';\n var EVENT_ACTIVATE = "activate" + EVENT_KEY$2;\n var EVENT_SCROLL = "scroll" + EVENT_KEY$2;\n var EVENT_LOAD_DATA_API = "load" + EVENT_KEY$2 + DATA_API_KEY$1;\n var METHOD_OFFSET = \'offset\';\n var METHOD_POSITION = \'position\';\n var SELECTOR_DATA_SPY = \'[data-spy="scroll"]\';\n var SELECTOR_NAV_LIST_GROUP$1 = \'.nav, .list-group\';\n var SELECTOR_NAV_LINKS = \'.nav-link\';\n var SELECTOR_NAV_ITEMS = \'.nav-item\';\n var SELECTOR_LIST_ITEMS = \'.list-group-item\';\n var SELECTOR_DROPDOWN$1 = \'.dropdown\';\n var SELECTOR_DROPDOWN_ITEMS = \'.dropdown-item\';\n var SELECTOR_DROPDOWN_TOGGLE$1 = \'.dropdown-toggle\';\n var Default$1 = {\n offset: 10,\n method: \'auto\',\n target: \'\'\n };\n var DefaultType$1 = {\n offset: \'number\',\n method: \'string\',\n target: \'(string|element)\'\n };\n /**\n * Class definition\n */\n\n var ScrollSpy = /*#__PURE__*/function () {\n function ScrollSpy(element, config) {\n var _this = this;\n\n this._element = element;\n this._scrollElement = element.tagName === \'BODY\' ? window : element;\n this._config = this._getConfig(config);\n this._selector = this._config.target + " " + SELECTOR_NAV_LINKS + "," + (this._config.target + " " + SELECTOR_LIST_ITEMS + ",") + (this._config.target + " " + SELECTOR_DROPDOWN_ITEMS);\n this._offsets = [];\n this._targets = [];\n this._activeTarget = null;\n this._scrollHeight = 0;\n $__default["default"](this._scrollElement).on(EVENT_SCROLL, function (event) {\n return _this._process(event);\n });\n this.refresh();\n\n this._process();\n } // Getters\n\n\n var _proto = ScrollSpy.prototype;\n\n // Public\n _proto.refresh = function refresh() {\n var _this2 = this;\n\n var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;\n var offsetMethod = this._config.method === \'auto\' ? autoMethod : this._config.method;\n var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;\n this._offsets = [];\n this._targets = [];\n this._scrollHeight = this._getScrollHeight();\n var targets = [].slice.call(document.querySelectorAll(this._selector));\n targets.map(function (element) {\n var target;\n var targetSelector = Util.getSelectorFromElement(element);\n\n if (targetSelector) {\n target = document.querySelector(targetSelector);\n }\n\n if (target) {\n var targetBCR = target.getBoundingClientRect();\n\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [$__default["default"](target)[offsetMethod]().top + offsetBase, targetSelector];\n }\n }\n\n return null;\n }).filter(function (item) {\n return item;\n }).sort(function (a, b) {\n return a[0] - b[0];\n }).forEach(function (item) {\n _this2._offsets.push(item[0]);\n\n _this2._targets.push(item[1]);\n });\n };\n\n _proto.dispose = function dispose() {\n $__default["default"].removeData(this._element, DATA_KEY$2);\n $__default["default"](this._scrollElement).off(EVENT_KEY$2);\n this._element = null;\n this._scrollElement = null;\n this._config = null;\n this._selector = null;\n this._offsets = null;\n this._targets = null;\n this._activeTarget = null;\n this._scrollHeight = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$1, typeof config === \'object\' && config ? config : {});\n\n if (typeof config.target !== \'string\' && Util.isElement(config.target)) {\n var id = $__default["default"](config.target).attr(\'id\');\n\n if (!id) {\n id = Util.getUID(NAME$2);\n $__default["default"](config.target).attr(\'id\', id);\n }\n\n config.target = "#" + id;\n }\n\n Util.typeCheckConfig(NAME$2, config, DefaultType$1);\n return config;\n };\n\n _proto._getScrollTop = function _getScrollTop() {\n return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n };\n\n _proto._getScrollHeight = function _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n };\n\n _proto._getOffsetHeight = function _getOffsetHeight() {\n return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n };\n\n _proto._process = function _process() {\n var scrollTop = this._getScrollTop() + this._config.offset;\n\n var scrollHeight = this._getScrollHeight();\n\n var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh();\n }\n\n if (scrollTop >= maxScroll) {\n var target = this._targets[this._targets.length - 1];\n\n if (this._activeTarget !== target) {\n this._activate(target);\n }\n\n return;\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null;\n\n this._clear();\n\n return;\n }\n\n for (var i = this._offsets.length; i--;) {\n var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === \'undefined\' || scrollTop < this._offsets[i + 1]);\n\n if (isActiveTarget) {\n this._activate(this._targets[i]);\n }\n }\n };\n\n _proto._activate = function _activate(target) {\n this._activeTarget = target;\n\n this._clear();\n\n var queries = this._selector.split(\',\').map(function (selector) {\n return selector + "[data-target=\\"" + target + "\\"]," + selector + "[href=\\"" + target + "\\"]";\n });\n\n var $link = $__default["default"]([].slice.call(document.querySelectorAll(queries.join(\',\'))));\n\n if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n $link.closest(SELECTOR_DROPDOWN$1).find(SELECTOR_DROPDOWN_TOGGLE$1).addClass(CLASS_NAME_ACTIVE$1);\n $link.addClass(CLASS_NAME_ACTIVE$1);\n } else {\n // Set triggered link as active\n $link.addClass(CLASS_NAME_ACTIVE$1); // Set triggered links parents as active\n // With both