Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-09 07:58:23

0001 /*!

0002   * Bootstrap v5.0.0-beta1 (https://getbootstrap.com/)

0003   * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)

0004   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)

0005   */
0006 (function (global, factory) {
0007   typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
0008   typeof define === 'function' && define.amd ? define(factory) :
0009   (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.bootstrap = factory());
0010 }(this, (function () { 'use strict';
0011 
0012   function _defineProperties(target, props) {
0013     for (var i = 0; i < props.length; i++) {
0014       var descriptor = props[i];
0015       descriptor.enumerable = descriptor.enumerable || false;
0016       descriptor.configurable = true;
0017       if ("value" in descriptor) descriptor.writable = true;
0018       Object.defineProperty(target, descriptor.key, descriptor);
0019     }
0020   }
0021 
0022   function _createClass(Constructor, protoProps, staticProps) {
0023     if (protoProps) _defineProperties(Constructor.prototype, protoProps);
0024     if (staticProps) _defineProperties(Constructor, staticProps);
0025     return Constructor;
0026   }
0027 
0028   function _extends() {
0029     _extends = Object.assign || function (target) {
0030       for (var i = 1; i < arguments.length; i++) {
0031         var source = arguments[i];
0032 
0033         for (var key in source) {
0034           if (Object.prototype.hasOwnProperty.call(source, key)) {
0035             target[key] = source[key];
0036           }
0037         }
0038       }
0039 
0040       return target;
0041     };
0042 
0043     return _extends.apply(this, arguments);
0044   }
0045 
0046   function _inheritsLoose(subClass, superClass) {
0047     subClass.prototype = Object.create(superClass.prototype);
0048     subClass.prototype.constructor = subClass;
0049     subClass.__proto__ = superClass;
0050   }
0051 
0052   /**

0053    * --------------------------------------------------------------------------

0054    * Bootstrap (v5.0.0-beta1): util/index.js

0055    * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)

0056    * --------------------------------------------------------------------------

0057    */
0058   var MAX_UID = 1000000;
0059   var MILLISECONDS_MULTIPLIER = 1000;
0060   var TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)

0061 
0062   var toType = function toType(obj) {
0063     if (obj === null || obj === undefined) {
0064       return "" + obj;
0065     }
0066 
0067     return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
0068   };
0069   /**

0070    * --------------------------------------------------------------------------

0071    * Public Util Api

0072    * --------------------------------------------------------------------------

0073    */
0074 
0075 
0076   var getUID = function getUID(prefix) {
0077     do {
0078       prefix += Math.floor(Math.random() * MAX_UID);
0079     } while (document.getElementById(prefix));
0080 
0081     return prefix;
0082   };
0083 
0084   var getSelector = function getSelector(element) {
0085     var selector = element.getAttribute('data-bs-target');
0086 
0087     if (!selector || selector === '#') {
0088       var hrefAttr = element.getAttribute('href');
0089       selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
0090     }
0091 
0092     return selector;
0093   };
0094 
0095   var getSelectorFromElement = function getSelectorFromElement(element) {
0096     var selector = getSelector(element);
0097 
0098     if (selector) {
0099       return document.querySelector(selector) ? selector : null;
0100     }
0101 
0102     return null;
0103   };
0104 
0105   var getElementFromSelector = function getElementFromSelector(element) {
0106     var selector = getSelector(element);
0107     return selector ? document.querySelector(selector) : null;
0108   };
0109 
0110   var getTransitionDurationFromElement = function getTransitionDurationFromElement(element) {
0111     if (!element) {
0112       return 0;
0113     } // Get transition-duration of the element

0114 
0115 
0116     var _window$getComputedSt = window.getComputedStyle(element),
0117         transitionDuration = _window$getComputedSt.transitionDuration,
0118         transitionDelay = _window$getComputedSt.transitionDelay;
0119 
0120     var floatTransitionDuration = Number.parseFloat(transitionDuration);
0121     var floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found

0122 
0123     if (!floatTransitionDuration && !floatTransitionDelay) {
0124       return 0;
0125     } // If multiple durations are defined, take the first

0126 
0127 
0128     transitionDuration = transitionDuration.split(',')[0];
0129     transitionDelay = transitionDelay.split(',')[0];
0130     return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
0131   };
0132 
0133   var triggerTransitionEnd = function triggerTransitionEnd(element) {
0134     element.dispatchEvent(new Event(TRANSITION_END));
0135   };
0136 
0137   var isElement = function isElement(obj) {
0138     return (obj[0] || obj).nodeType;
0139   };
0140 
0141   var emulateTransitionEnd = function emulateTransitionEnd(element, duration) {
0142     var called = false;
0143     var durationPadding = 5;
0144     var emulatedDuration = duration + durationPadding;
0145 
0146     function listener() {
0147       called = true;
0148       element.removeEventListener(TRANSITION_END, listener);
0149     }
0150 
0151     element.addEventListener(TRANSITION_END, listener);
0152     setTimeout(function () {
0153       if (!called) {
0154         triggerTransitionEnd(element);
0155       }
0156     }, emulatedDuration);
0157   };
0158 
0159   var typeCheckConfig = function typeCheckConfig(componentName, config, configTypes) {
0160     Object.keys(configTypes).forEach(function (property) {
0161       var expectedTypes = configTypes[property];
0162       var value = config[property];
0163       var valueType = value && isElement(value) ? 'element' : toType(value);
0164 
0165       if (!new RegExp(expectedTypes).test(valueType)) {
0166         throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
0167       }
0168     });
0169   };
0170 
0171   var isVisible = function isVisible(element) {
0172     if (!element) {
0173       return false;
0174     }
0175 
0176     if (element.style && element.parentNode && element.parentNode.style) {
0177       var elementStyle = getComputedStyle(element);
0178       var parentNodeStyle = getComputedStyle(element.parentNode);
0179       return elementStyle.display !== 'none' && parentNodeStyle.display !== 'none' && elementStyle.visibility !== 'hidden';
0180     }
0181 
0182     return false;
0183   };
0184 
0185   var findShadowRoot = function findShadowRoot(element) {
0186     if (!document.documentElement.attachShadow) {
0187       return null;
0188     } // Can find the shadow root otherwise it'll return the document

0189 
0190 
0191     if (typeof element.getRootNode === 'function') {
0192       var root = element.getRootNode();
0193       return root instanceof ShadowRoot ? root : null;
0194     }
0195 
0196     if (element instanceof ShadowRoot) {
0197       return element;
0198     } // when we don't find a shadow root

0199 
0200 
0201     if (!element.parentNode) {
0202       return null;
0203     }
0204 
0205     return findShadowRoot(element.parentNode);
0206   };
0207 
0208   var noop = function noop() {
0209     return function () {};
0210   };
0211 
0212   var reflow = function reflow(element) {
0213     return element.offsetHeight;
0214   };
0215 
0216   var getjQuery = function getjQuery() {
0217     var _window = window,
0218         jQuery = _window.jQuery;
0219 
0220     if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
0221       return jQuery;
0222     }
0223 
0224     return null;
0225   };
0226 
0227   var onDOMContentLoaded = function onDOMContentLoaded(callback) {
0228     if (document.readyState === 'loading') {
0229       document.addEventListener('DOMContentLoaded', callback);
0230     } else {
0231       callback();
0232     }
0233   };
0234 
0235   var isRTL = document.documentElement.dir === 'rtl';
0236 
0237   /**

0238    * --------------------------------------------------------------------------

0239    * Bootstrap (v5.0.0-beta1): dom/data.js

0240    * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)

0241    * --------------------------------------------------------------------------

0242    */
0243 
0244   /**

0245    * ------------------------------------------------------------------------

0246    * Constants

0247    * ------------------------------------------------------------------------

0248    */
0249   var mapData = function () {
0250     var storeData = {};
0251     var id = 1;
0252     return {
0253       set: function set(element, key, data) {
0254         if (typeof element.bsKey === 'undefined') {
0255           element.bsKey = {
0256             key: key,
0257             id: id
0258           };
0259           id++;
0260         }
0261 
0262         storeData[element.bsKey.id] = data;
0263       },
0264       get: function get(element, key) {
0265         if (!element || typeof element.bsKey === 'undefined') {
0266           return null;
0267         }
0268 
0269         var keyProperties = element.bsKey;
0270 
0271         if (keyProperties.key === key) {
0272           return storeData[keyProperties.id];
0273         }
0274 
0275         return null;
0276       },
0277       delete: function _delete(element, key) {
0278         if (typeof element.bsKey === 'undefined') {
0279           return;
0280         }
0281 
0282         var keyProperties = element.bsKey;
0283 
0284         if (keyProperties.key === key) {
0285           delete storeData[keyProperties.id];
0286           delete element.bsKey;
0287         }
0288       }
0289     };
0290   }();
0291 
0292   var Data = {
0293     setData: function setData(instance, key, data) {
0294       mapData.set(instance, key, data);
0295     },
0296     getData: function getData(instance, key) {
0297       return mapData.get(instance, key);
0298     },
0299     removeData: function removeData(instance, key) {
0300       mapData.delete(instance, key);
0301     }
0302   };
0303 
0304   /**

0305    * --------------------------------------------------------------------------

0306    * Bootstrap (v5.0.0-beta1): dom/event-handler.js

0307    * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)

0308    * --------------------------------------------------------------------------

0309    */
0310   /**

0311    * ------------------------------------------------------------------------

0312    * Constants

0313    * ------------------------------------------------------------------------

0314    */
0315 
0316   var namespaceRegex = /[^.]*(?=\..*)\.|.*/;
0317   var stripNameRegex = /\..*/;
0318   var stripUidRegex = /::\d+$/;
0319   var eventRegistry = {}; // Events storage

0320 
0321   var uidEvent = 1;
0322   var customEvents = {
0323     mouseenter: 'mouseover',
0324     mouseleave: 'mouseout'
0325   };
0326   var nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);
0327   /**

0328    * ------------------------------------------------------------------------

0329    * Private methods

0330    * ------------------------------------------------------------------------

0331    */
0332 
0333   function getUidEvent(element, uid) {
0334     return uid && uid + "::" + uidEvent++ || element.uidEvent || uidEvent++;
0335   }
0336 
0337   function getEvent(element) {
0338     var uid = getUidEvent(element);
0339     element.uidEvent = uid;
0340     eventRegistry[uid] = eventRegistry[uid] || {};
0341     return eventRegistry[uid];
0342   }
0343 
0344   function bootstrapHandler(element, fn) {
0345     return function handler(event) {
0346       event.delegateTarget = element;
0347 
0348       if (handler.oneOff) {
0349         EventHandler.off(element, event.type, fn);
0350       }
0351 
0352       return fn.apply(element, [event]);
0353     };
0354   }
0355 
0356   function bootstrapDelegationHandler(element, selector, fn) {
0357     return function handler(event) {
0358       var domElements = element.querySelectorAll(selector);
0359 
0360       for (var target = event.target; target && target !== this; target = target.parentNode) {
0361         for (var i = domElements.length; i--;) {
0362           if (domElements[i] === target) {
0363             event.delegateTarget = target;
0364 
0365             if (handler.oneOff) {
0366               EventHandler.off(element, event.type, fn);
0367             }
0368 
0369             return fn.apply(target, [event]);
0370           }
0371         }
0372       } // To please ESLint

0373 
0374 
0375       return null;
0376     };
0377   }
0378 
0379   function findHandler(events, handler, delegationSelector) {
0380     if (delegationSelector === void 0) {
0381       delegationSelector = null;
0382     }
0383 
0384     var uidEventList = Object.keys(events);
0385 
0386     for (var i = 0, len = uidEventList.length; i < len; i++) {
0387       var event = events[uidEventList[i]];
0388 
0389       if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {
0390         return event;
0391       }
0392     }
0393 
0394     return null;
0395   }
0396 
0397   function normalizeParams(originalTypeEvent, handler, delegationFn) {
0398     var delegation = typeof handler === 'string';
0399     var originalHandler = delegation ? delegationFn : handler; // allow to get the native events from namespaced events ('click.bs.button' --> 'click')

0400 
0401     var typeEvent = originalTypeEvent.replace(stripNameRegex, '');
0402     var custom = customEvents[typeEvent];
0403 
0404     if (custom) {
0405       typeEvent = custom;
0406     }
0407 
0408     var isNative = nativeEvents.has(typeEvent);
0409 
0410     if (!isNative) {
0411       typeEvent = originalTypeEvent;
0412     }
0413 
0414     return [delegation, originalHandler, typeEvent];
0415   }
0416 
0417   function addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {
0418     if (typeof originalTypeEvent !== 'string' || !element) {
0419       return;
0420     }
0421 
0422     if (!handler) {
0423       handler = delegationFn;
0424       delegationFn = null;
0425     }
0426 
0427     var _normalizeParams = normalizeParams(originalTypeEvent, handler, delegationFn),
0428         delegation = _normalizeParams[0],
0429         originalHandler = _normalizeParams[1],
0430         typeEvent = _normalizeParams[2];
0431 
0432     var events = getEvent(element);
0433     var handlers = events[typeEvent] || (events[typeEvent] = {});
0434     var previousFn = findHandler(handlers, originalHandler, delegation ? handler : null);
0435 
0436     if (previousFn) {
0437       previousFn.oneOff = previousFn.oneOff && oneOff;
0438       return;
0439     }
0440 
0441     var uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''));
0442     var fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler);
0443     fn.delegationSelector = delegation ? handler : null;
0444     fn.originalHandler = originalHandler;
0445     fn.oneOff = oneOff;
0446     fn.uidEvent = uid;
0447     handlers[uid] = fn;
0448     element.addEventListener(typeEvent, fn, delegation);
0449   }
0450 
0451   function removeHandler(element, events, typeEvent, handler, delegationSelector) {
0452     var fn = findHandler(events[typeEvent], handler, delegationSelector);
0453 
0454     if (!fn) {
0455       return;
0456     }
0457 
0458     element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));
0459     delete events[typeEvent][fn.uidEvent];
0460   }
0461 
0462   function removeNamespacedHandlers(element, events, typeEvent, namespace) {
0463     var storeElementEvent = events[typeEvent] || {};
0464     Object.keys(storeElementEvent).forEach(function (handlerKey) {
0465       if (handlerKey.includes(namespace)) {
0466         var event = storeElementEvent[handlerKey];
0467         removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);
0468       }
0469     });
0470   }
0471 
0472   var EventHandler = {
0473     on: function on(element, event, handler, delegationFn) {
0474       addHandler(element, event, handler, delegationFn, false);
0475     },
0476     one: function one(element, event, handler, delegationFn) {
0477       addHandler(element, event, handler, delegationFn, true);
0478     },
0479     off: function off(element, originalTypeEvent, handler, delegationFn) {
0480       if (typeof originalTypeEvent !== 'string' || !element) {
0481         return;
0482       }
0483 
0484       var _normalizeParams2 = normalizeParams(originalTypeEvent, handler, delegationFn),
0485           delegation = _normalizeParams2[0],
0486           originalHandler = _normalizeParams2[1],
0487           typeEvent = _normalizeParams2[2];
0488 
0489       var inNamespace = typeEvent !== originalTypeEvent;
0490       var events = getEvent(element);
0491       var isNamespace = originalTypeEvent.startsWith('.');
0492 
0493       if (typeof originalHandler !== 'undefined') {
0494         // Simplest case: handler is passed, remove that listener ONLY.

0495         if (!events || !events[typeEvent]) {
0496           return;
0497         }
0498 
0499         removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null);
0500         return;
0501       }
0502 
0503       if (isNamespace) {
0504         Object.keys(events).forEach(function (elementEvent) {
0505           removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
0506         });
0507       }
0508 
0509       var storeElementEvent = events[typeEvent] || {};
0510       Object.keys(storeElementEvent).forEach(function (keyHandlers) {
0511         var handlerKey = keyHandlers.replace(stripUidRegex, '');
0512 
0513         if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
0514           var event = storeElementEvent[keyHandlers];
0515           removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);
0516         }
0517       });
0518     },
0519     trigger: function trigger(element, event, args) {
0520       if (typeof event !== 'string' || !element) {
0521         return null;
0522       }
0523 
0524       var $ = getjQuery();
0525       var typeEvent = event.replace(stripNameRegex, '');
0526       var inNamespace = event !== typeEvent;
0527       var isNative = nativeEvents.has(typeEvent);
0528       var jQueryEvent;
0529       var bubbles = true;
0530       var nativeDispatch = true;
0531       var defaultPrevented = false;
0532       var evt = null;
0533 
0534       if (inNamespace && $) {
0535         jQueryEvent = $.Event(event, args);
0536         $(element).trigger(jQueryEvent);
0537         bubbles = !jQueryEvent.isPropagationStopped();
0538         nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();
0539         defaultPrevented = jQueryEvent.isDefaultPrevented();
0540       }
0541 
0542       if (isNative) {
0543         evt = document.createEvent('HTMLEvents');
0544         evt.initEvent(typeEvent, bubbles, true);
0545       } else {
0546         evt = new CustomEvent(event, {
0547           bubbles: bubbles,
0548           cancelable: true
0549         });
0550       } // merge custom information in our event

0551 
0552 
0553       if (typeof args !== 'undefined') {
0554         Object.keys(args).forEach(function (key) {
0555           Object.defineProperty(evt, key, {
0556             get: function get() {
0557               return args[key];
0558             }
0559           });
0560         });
0561       }
0562 
0563       if (defaultPrevented) {
0564         evt.preventDefault();
0565       }
0566 
0567       if (nativeDispatch) {
0568         element.dispatchEvent(evt);
0569       }
0570 
0571       if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {
0572         jQueryEvent.preventDefault();
0573       }
0574 
0575       return evt;
0576     }
0577   };
0578 
0579   /**

0580    * ------------------------------------------------------------------------

0581    * Constants

0582    * ------------------------------------------------------------------------

0583    */
0584 
0585   var VERSION = '5.0.0-beta1';
0586 
0587   var BaseComponent = /*#__PURE__*/function () {
0588     function BaseComponent(element) {
0589       if (!element) {
0590         return;
0591       }
0592 
0593       this._element = element;
0594       Data.setData(element, this.constructor.DATA_KEY, this);
0595     }
0596 
0597     var _proto = BaseComponent.prototype;
0598 
0599     _proto.dispose = function dispose() {
0600       Data.removeData(this._element, this.constructor.DATA_KEY);
0601       this._element = null;
0602     }
0603     /** Static */
0604     ;
0605 
0606     BaseComponent.getInstance = function getInstance(element) {
0607       return Data.getData(element, this.DATA_KEY);
0608     };
0609 
0610     _createClass(BaseComponent, null, [{
0611       key: "VERSION",
0612       get: function get() {
0613         return VERSION;
0614       }
0615     }]);
0616 
0617     return BaseComponent;
0618   }();
0619 
0620   /**

0621    * ------------------------------------------------------------------------

0622    * Constants

0623    * ------------------------------------------------------------------------

0624    */
0625 
0626   var NAME = 'alert';
0627   var DATA_KEY = 'bs.alert';
0628   var EVENT_KEY = "." + DATA_KEY;
0629   var DATA_API_KEY = '.data-api';
0630   var SELECTOR_DISMISS = '[data-bs-dismiss="alert"]';
0631   var EVENT_CLOSE = "close" + EVENT_KEY;
0632   var EVENT_CLOSED = "closed" + EVENT_KEY;
0633   var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
0634   var CLASSNAME_ALERT = 'alert';
0635   var CLASSNAME_FADE = 'fade';
0636   var CLASSNAME_SHOW = 'show';
0637   /**

0638    * ------------------------------------------------------------------------

0639    * Class Definition

0640    * ------------------------------------------------------------------------

0641    */
0642 
0643   var Alert = /*#__PURE__*/function (_BaseComponent) {
0644     _inheritsLoose(Alert, _BaseComponent);
0645 
0646     function Alert() {
0647       return _BaseComponent.apply(this, arguments) || this;
0648     }
0649 
0650     var _proto = Alert.prototype;
0651 
0652     // Public

0653     _proto.close = function close(element) {
0654       var rootElement = element ? this._getRootElement(element) : this._element;
0655 
0656       var customEvent = this._triggerCloseEvent(rootElement);
0657 
0658       if (customEvent === null || customEvent.defaultPrevented) {
0659         return;
0660       }
0661 
0662       this._removeElement(rootElement);
0663     } // Private

0664     ;
0665 
0666     _proto._getRootElement = function _getRootElement(element) {
0667       return getElementFromSelector(element) || element.closest("." + CLASSNAME_ALERT);
0668     };
0669 
0670     _proto._triggerCloseEvent = function _triggerCloseEvent(element) {
0671       return EventHandler.trigger(element, EVENT_CLOSE);
0672     };
0673 
0674     _proto._removeElement = function _removeElement(element) {
0675       var _this = this;
0676 
0677       element.classList.remove(CLASSNAME_SHOW);
0678 
0679       if (!element.classList.contains(CLASSNAME_FADE)) {
0680         this._destroyElement(element);
0681 
0682         return;
0683       }
0684 
0685       var transitionDuration = getTransitionDurationFromElement(element);
0686       EventHandler.one(element, TRANSITION_END, function () {
0687         return _this._destroyElement(element);
0688       });
0689       emulateTransitionEnd(element, transitionDuration);
0690     };
0691 
0692     _proto._destroyElement = function _destroyElement(element) {
0693       if (element.parentNode) {
0694         element.parentNode.removeChild(element);
0695       }
0696 
0697       EventHandler.trigger(element, EVENT_CLOSED);
0698     } // Static

0699     ;
0700 
0701     Alert.jQueryInterface = function jQueryInterface(config) {
0702       return this.each(function () {
0703         var data = Data.getData(this, DATA_KEY);
0704 
0705         if (!data) {
0706           data = new Alert(this);
0707         }
0708 
0709         if (config === 'close') {
0710           data[config](this);
0711         }
0712       });
0713     };
0714 
0715     Alert.handleDismiss = function handleDismiss(alertInstance) {
0716       return function (event) {
0717         if (event) {
0718           event.preventDefault();
0719         }
0720 
0721         alertInstance.close(this);
0722       };
0723     };
0724 
0725     _createClass(Alert, null, [{
0726       key: "DATA_KEY",
0727       // Getters

0728       get: function get() {
0729         return DATA_KEY;
0730       }
0731     }]);
0732 
0733     return Alert;
0734   }(BaseComponent);
0735   /**

0736    * ------------------------------------------------------------------------

0737    * Data Api implementation

0738    * ------------------------------------------------------------------------

0739    */
0740 
0741 
0742   EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()));
0743   /**

0744    * ------------------------------------------------------------------------

0745    * jQuery

0746    * ------------------------------------------------------------------------

0747    * add .Alert to jQuery only if jQuery is present

0748    */
0749 
0750   onDOMContentLoaded(function () {
0751     var $ = getjQuery();
0752     /* istanbul ignore if */
0753 
0754     if ($) {
0755       var JQUERY_NO_CONFLICT = $.fn[NAME];
0756       $.fn[NAME] = Alert.jQueryInterface;
0757       $.fn[NAME].Constructor = Alert;
0758 
0759       $.fn[NAME].noConflict = function () {
0760         $.fn[NAME] = JQUERY_NO_CONFLICT;
0761         return Alert.jQueryInterface;
0762       };
0763     }
0764   });
0765 
0766   /**

0767    * ------------------------------------------------------------------------

0768    * Constants

0769    * ------------------------------------------------------------------------

0770    */
0771 
0772   var NAME$1 = 'button';
0773   var DATA_KEY$1 = 'bs.button';
0774   var EVENT_KEY$1 = "." + DATA_KEY$1;
0775   var DATA_API_KEY$1 = '.data-api';
0776   var CLASS_NAME_ACTIVE = 'active';
0777   var SELECTOR_DATA_TOGGLE = '[data-bs-toggle="button"]';
0778   var EVENT_CLICK_DATA_API$1 = "click" + EVENT_KEY$1 + DATA_API_KEY$1;
0779   /**

0780    * ------------------------------------------------------------------------

0781    * Class Definition

0782    * ------------------------------------------------------------------------

0783    */
0784 
0785   var Button = /*#__PURE__*/function (_BaseComponent) {
0786     _inheritsLoose(Button, _BaseComponent);
0787 
0788     function Button() {
0789       return _BaseComponent.apply(this, arguments) || this;
0790     }
0791 
0792     var _proto = Button.prototype;
0793 
0794     // Public

0795     _proto.toggle = function toggle() {
0796       // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method

0797       this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE));
0798     } // Static

0799     ;
0800 
0801     Button.jQueryInterface = function jQueryInterface(config) {
0802       return this.each(function () {
0803         var data = Data.getData(this, DATA_KEY$1);
0804 
0805         if (!data) {
0806           data = new Button(this);
0807         }
0808 
0809         if (config === 'toggle') {
0810           data[config]();
0811         }
0812       });
0813     };
0814 
0815     _createClass(Button, null, [{
0816       key: "DATA_KEY",
0817       // Getters

0818       get: function get() {
0819         return DATA_KEY$1;
0820       }
0821     }]);
0822 
0823     return Button;
0824   }(BaseComponent);
0825   /**

0826    * ------------------------------------------------------------------------

0827    * Data Api implementation

0828    * ------------------------------------------------------------------------

0829    */
0830 
0831 
0832   EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE, function (event) {
0833     event.preventDefault();
0834     var button = event.target.closest(SELECTOR_DATA_TOGGLE);
0835     var data = Data.getData(button, DATA_KEY$1);
0836 
0837     if (!data) {
0838       data = new Button(button);
0839     }
0840 
0841     data.toggle();
0842   });
0843   /**

0844    * ------------------------------------------------------------------------

0845    * jQuery

0846    * ------------------------------------------------------------------------

0847    * add .Button to jQuery only if jQuery is present

0848    */
0849 
0850   onDOMContentLoaded(function () {
0851     var $ = getjQuery();
0852     /* istanbul ignore if */
0853 
0854     if ($) {
0855       var JQUERY_NO_CONFLICT = $.fn[NAME$1];
0856       $.fn[NAME$1] = Button.jQueryInterface;
0857       $.fn[NAME$1].Constructor = Button;
0858 
0859       $.fn[NAME$1].noConflict = function () {
0860         $.fn[NAME$1] = JQUERY_NO_CONFLICT;
0861         return Button.jQueryInterface;
0862       };
0863     }
0864   });
0865 
0866   /**

0867    * --------------------------------------------------------------------------

0868    * Bootstrap (v5.0.0-beta1): dom/manipulator.js

0869    * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)

0870    * --------------------------------------------------------------------------

0871    */
0872   function normalizeData(val) {
0873     if (val === 'true') {
0874       return true;
0875     }
0876 
0877     if (val === 'false') {
0878       return false;
0879     }
0880 
0881     if (val === Number(val).toString()) {
0882       return Number(val);
0883     }
0884 
0885     if (val === '' || val === 'null') {
0886       return null;
0887     }
0888 
0889     return val;
0890   }
0891 
0892   function normalizeDataKey(key) {
0893     return key.replace(/[A-Z]/g, function (chr) {
0894       return "-" + chr.toLowerCase();
0895     });
0896   }
0897 
0898   var Manipulator = {
0899     setDataAttribute: function setDataAttribute(element, key, value) {
0900       element.setAttribute("data-bs-" + normalizeDataKey(key), value);
0901     },
0902     removeDataAttribute: function removeDataAttribute(element, key) {
0903       element.removeAttribute("data-bs-" + normalizeDataKey(key));
0904     },
0905     getDataAttributes: function getDataAttributes(element) {
0906       if (!element) {
0907         return {};
0908       }
0909 
0910       var attributes = {};
0911       Object.keys(element.dataset).filter(function (key) {
0912         return key.startsWith('bs');
0913       }).forEach(function (key) {
0914         var pureKey = key.replace(/^bs/, '');
0915         pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);
0916         attributes[pureKey] = normalizeData(element.dataset[key]);
0917       });
0918       return attributes;
0919     },
0920     getDataAttribute: function getDataAttribute(element, key) {
0921       return normalizeData(element.getAttribute("data-bs-" + normalizeDataKey(key)));
0922     },
0923     offset: function offset(element) {
0924       var rect = element.getBoundingClientRect();
0925       return {
0926         top: rect.top + document.body.scrollTop,
0927         left: rect.left + document.body.scrollLeft
0928       };
0929     },
0930     position: function position(element) {
0931       return {
0932         top: element.offsetTop,
0933         left: element.offsetLeft
0934       };
0935     }
0936   };
0937 
0938   /**

0939    * --------------------------------------------------------------------------

0940    * Bootstrap (v5.0.0-beta1): dom/selector-engine.js

0941    * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)

0942    * --------------------------------------------------------------------------

0943    */
0944 
0945   /**

0946    * ------------------------------------------------------------------------

0947    * Constants

0948    * ------------------------------------------------------------------------

0949    */
0950   var NODE_TEXT = 3;
0951   var SelectorEngine = {
0952     matches: function matches(element, selector) {
0953       return element.matches(selector);
0954     },
0955     find: function find(selector, element) {
0956       var _ref;
0957 
0958       if (element === void 0) {
0959         element = document.documentElement;
0960       }
0961 
0962       return (_ref = []).concat.apply(_ref, Element.prototype.querySelectorAll.call(element, selector));
0963     },
0964     findOne: function findOne(selector, element) {
0965       if (element === void 0) {
0966         element = document.documentElement;
0967       }
0968 
0969       return Element.prototype.querySelector.call(element, selector);
0970     },
0971     children: function children(element, selector) {
0972       var _ref2;
0973 
0974       var children = (_ref2 = []).concat.apply(_ref2, element.children);
0975 
0976       return children.filter(function (child) {
0977         return child.matches(selector);
0978       });
0979     },
0980     parents: function parents(element, selector) {
0981       var parents = [];
0982       var ancestor = element.parentNode;
0983 
0984       while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {
0985         if (this.matches(ancestor, selector)) {
0986           parents.push(ancestor);
0987         }
0988 
0989         ancestor = ancestor.parentNode;
0990       }
0991 
0992       return parents;
0993     },
0994     prev: function prev(element, selector) {
0995       var previous = element.previousElementSibling;
0996 
0997       while (previous) {
0998         if (previous.matches(selector)) {
0999           return [previous];
1000         }
1001 
1002         previous = previous.previousElementSibling;
1003       }
1004 
1005       return [];
1006     },
1007     next: function next(element, selector) {
1008       var next = element.nextElementSibling;
1009 
1010       while (next) {
1011         if (this.matches(next, selector)) {
1012           return [next];
1013         }
1014 
1015         next = next.nextElementSibling;
1016       }
1017 
1018       return [];
1019     }
1020   };
1021 
1022   /**

1023    * ------------------------------------------------------------------------

1024    * Constants

1025    * ------------------------------------------------------------------------

1026    */
1027 
1028   var NAME$2 = 'carousel';
1029   var DATA_KEY$2 = 'bs.carousel';
1030   var EVENT_KEY$2 = "." + DATA_KEY$2;
1031   var DATA_API_KEY$2 = '.data-api';
1032   var ARROW_LEFT_KEY = 'ArrowLeft';
1033   var ARROW_RIGHT_KEY = 'ArrowRight';
1034   var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch

1035 
1036   var SWIPE_THRESHOLD = 40;
1037   var Default = {
1038     interval: 5000,
1039     keyboard: true,
1040     slide: false,
1041     pause: 'hover',
1042     wrap: true,
1043     touch: true
1044   };
1045   var DefaultType = {
1046     interval: '(number|boolean)',
1047     keyboard: 'boolean',
1048     slide: '(boolean|string)',
1049     pause: '(string|boolean)',
1050     wrap: 'boolean',
1051     touch: 'boolean'
1052   };
1053   var DIRECTION_NEXT = 'next';
1054   var DIRECTION_PREV = 'prev';
1055   var DIRECTION_LEFT = 'left';
1056   var DIRECTION_RIGHT = 'right';
1057   var EVENT_SLIDE = "slide" + EVENT_KEY$2;
1058   var EVENT_SLID = "slid" + EVENT_KEY$2;
1059   var EVENT_KEYDOWN = "keydown" + EVENT_KEY$2;
1060   var EVENT_MOUSEENTER = "mouseenter" + EVENT_KEY$2;
1061   var EVENT_MOUSELEAVE = "mouseleave" + EVENT_KEY$2;
1062   var EVENT_TOUCHSTART = "touchstart" + EVENT_KEY$2;
1063   var EVENT_TOUCHMOVE = "touchmove" + EVENT_KEY$2;
1064   var EVENT_TOUCHEND = "touchend" + EVENT_KEY$2;
1065   var EVENT_POINTERDOWN = "pointerdown" + EVENT_KEY$2;
1066   var EVENT_POINTERUP = "pointerup" + EVENT_KEY$2;
1067   var EVENT_DRAG_START = "dragstart" + EVENT_KEY$2;
1068   var EVENT_LOAD_DATA_API = "load" + EVENT_KEY$2 + DATA_API_KEY$2;
1069   var EVENT_CLICK_DATA_API$2 = "click" + EVENT_KEY$2 + DATA_API_KEY$2;
1070   var CLASS_NAME_CAROUSEL = 'carousel';
1071   var CLASS_NAME_ACTIVE$1 = 'active';
1072   var CLASS_NAME_SLIDE = 'slide';
1073   var CLASS_NAME_END = 'carousel-item-end';
1074   var CLASS_NAME_START = 'carousel-item-start';
1075   var CLASS_NAME_NEXT = 'carousel-item-next';
1076   var CLASS_NAME_PREV = 'carousel-item-prev';
1077   var CLASS_NAME_POINTER_EVENT = 'pointer-event';
1078   var SELECTOR_ACTIVE = '.active';
1079   var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';
1080   var SELECTOR_ITEM = '.carousel-item';
1081   var SELECTOR_ITEM_IMG = '.carousel-item img';
1082   var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';
1083   var SELECTOR_INDICATORS = '.carousel-indicators';
1084   var SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';
1085   var SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]';
1086   var PointerType = {
1087     TOUCH: 'touch',
1088     PEN: 'pen'
1089   };
1090   /**

1091    * ------------------------------------------------------------------------

1092    * Class Definition

1093    * ------------------------------------------------------------------------

1094    */
1095 
1096   var Carousel = /*#__PURE__*/function (_BaseComponent) {
1097     _inheritsLoose(Carousel, _BaseComponent);
1098 
1099     function Carousel(element, config) {
1100       var _this;
1101 
1102       _this = _BaseComponent.call(this, element) || this;
1103       _this._items = null;
1104       _this._interval = null;
1105       _this._activeElement = null;
1106       _this._isPaused = false;
1107       _this._isSliding = false;
1108       _this.touchTimeout = null;
1109       _this.touchStartX = 0;
1110       _this.touchDeltaX = 0;
1111       _this._config = _this._getConfig(config);
1112       _this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, _this._element);
1113       _this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
1114       _this._pointerEvent = Boolean(window.PointerEvent);
1115 
1116       _this._addEventListeners();
1117 
1118       return _this;
1119     } // Getters

1120 
1121 
1122     var _proto = Carousel.prototype;
1123 
1124     // Public

1125     _proto.next = function next() {
1126       if (!this._isSliding) {
1127         this._slide(DIRECTION_NEXT);
1128       }
1129     };
1130 
1131     _proto.nextWhenVisible = function nextWhenVisible() {
1132       // Don't call next when the page isn't visible

1133       // or the carousel or its parent isn't visible

1134       if (!document.hidden && isVisible(this._element)) {
1135         this.next();
1136       }
1137     };
1138 
1139     _proto.prev = function prev() {
1140       if (!this._isSliding) {
1141         this._slide(DIRECTION_PREV);
1142       }
1143     };
1144 
1145     _proto.pause = function pause(event) {
1146       if (!event) {
1147         this._isPaused = true;
1148       }
1149 
1150       if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {
1151         triggerTransitionEnd(this._element);
1152         this.cycle(true);
1153       }
1154 
1155       clearInterval(this._interval);
1156       this._interval = null;
1157     };
1158 
1159     _proto.cycle = function cycle(event) {
1160       if (!event) {
1161         this._isPaused = false;
1162       }
1163 
1164       if (this._interval) {
1165         clearInterval(this._interval);
1166         this._interval = null;
1167       }
1168 
1169       if (this._config && this._config.interval && !this._isPaused) {
1170         this._updateInterval();
1171 
1172         this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
1173       }
1174     };
1175 
1176     _proto.to = function to(index) {
1177       var _this2 = this;
1178 
1179       this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
1180 
1181       var activeIndex = this._getItemIndex(this._activeElement);
1182 
1183       if (index > this._items.length - 1 || index < 0) {
1184         return;
1185       }
1186 
1187       if (this._isSliding) {
1188         EventHandler.one(this._element, EVENT_SLID, function () {
1189           return _this2.to(index);
1190         });
1191         return;
1192       }
1193 
1194       if (activeIndex === index) {
1195         this.pause();
1196         this.cycle();
1197         return;
1198       }
1199 
1200       var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;
1201 
1202       this._slide(direction, this._items[index]);
1203     };
1204 
1205     _proto.dispose = function dispose() {
1206       _BaseComponent.prototype.dispose.call(this);
1207 
1208       EventHandler.off(this._element, EVENT_KEY$2);
1209       this._items = null;
1210       this._config = null;
1211       this._interval = null;
1212       this._isPaused = null;
1213       this._isSliding = null;
1214       this._activeElement = null;
1215       this._indicatorsElement = null;
1216     } // Private

1217     ;
1218 
1219     _proto._getConfig = function _getConfig(config) {
1220       config = _extends({}, Default, config);
1221       typeCheckConfig(NAME$2, config, DefaultType);
1222       return config;
1223     };
1224 
1225     _proto._handleSwipe = function _handleSwipe() {
1226       var absDeltax = Math.abs(this.touchDeltaX);
1227 
1228       if (absDeltax <= SWIPE_THRESHOLD) {
1229         return;
1230       }
1231 
1232       var direction = absDeltax / this.touchDeltaX;
1233       this.touchDeltaX = 0; // swipe left

1234 
1235       if (direction > 0) {
1236         this.prev();
1237       } // swipe right

1238 
1239 
1240       if (direction < 0) {
1241         this.next();
1242       }
1243     };
1244 
1245     _proto._addEventListeners = function _addEventListeners() {
1246       var _this3 = this;
1247 
1248       if (this._config.keyboard) {
1249         EventHandler.on(this._element, EVENT_KEYDOWN, function (event) {
1250           return _this3._keydown(event);
1251         });
1252       }
1253 
1254       if (this._config.pause === 'hover') {
1255         EventHandler.on(this._element, EVENT_MOUSEENTER, function (event) {
1256           return _this3.pause(event);
1257         });
1258         EventHandler.on(this._element, EVENT_MOUSELEAVE, function (event) {
1259           return _this3.cycle(event);
1260         });
1261       }
1262 
1263       if (this._config.touch && this._touchSupported) {
1264         this._addTouchEventListeners();
1265       }
1266     };
1267 
1268     _proto._addTouchEventListeners = function _addTouchEventListeners() {
1269       var _this4 = this;
1270 
1271       var start = function start(event) {
1272         if (_this4._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {
1273           _this4.touchStartX = event.clientX;
1274         } else if (!_this4._pointerEvent) {
1275           _this4.touchStartX = event.touches[0].clientX;
1276         }
1277       };
1278 
1279       var move = function move(event) {
1280         // ensure swiping with one touch and not pinching

1281         if (event.touches && event.touches.length > 1) {
1282           _this4.touchDeltaX = 0;
1283         } else {
1284           _this4.touchDeltaX = event.touches[0].clientX - _this4.touchStartX;
1285         }
1286       };
1287 
1288       var end = function end(event) {
1289         if (_this4._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {
1290           _this4.touchDeltaX = event.clientX - _this4.touchStartX;
1291         }
1292 
1293         _this4._handleSwipe();
1294 
1295         if (_this4._config.pause === 'hover') {
1296           // If it's a touch-enabled device, mouseenter/leave are fired as

1297           // part of the mouse compatibility events on first tap - the carousel

1298           // would stop cycling until user tapped out of it;

1299           // here, we listen for touchend, explicitly pause the carousel

1300           // (as if it's the second time we tap on it, mouseenter compat event

1301           // is NOT fired) and after a timeout (to allow for mouse compatibility

1302           // events to fire) we explicitly restart cycling

1303           _this4.pause();
1304 
1305           if (_this4.touchTimeout) {
1306             clearTimeout(_this4.touchTimeout);
1307           }
1308 
1309           _this4.touchTimeout = setTimeout(function (event) {
1310             return _this4.cycle(event);
1311           }, TOUCHEVENT_COMPAT_WAIT + _this4._config.interval);
1312         }
1313       };
1314 
1315       SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(function (itemImg) {
1316         EventHandler.on(itemImg, EVENT_DRAG_START, function (e) {
1317           return e.preventDefault();
1318         });
1319       });
1320 
1321       if (this._pointerEvent) {
1322         EventHandler.on(this._element, EVENT_POINTERDOWN, function (event) {
1323           return start(event);
1324         });
1325         EventHandler.on(this._element, EVENT_POINTERUP, function (event) {
1326           return end(event);
1327         });
1328 
1329         this._element.classList.add(CLASS_NAME_POINTER_EVENT);
1330       } else {
1331         EventHandler.on(this._element, EVENT_TOUCHSTART, function (event) {
1332           return start(event);
1333         });
1334         EventHandler.on(this._element, EVENT_TOUCHMOVE, function (event) {
1335           return move(event);
1336         });
1337         EventHandler.on(this._element, EVENT_TOUCHEND, function (event) {
1338           return end(event);
1339         });
1340       }
1341     };
1342 
1343     _proto._keydown = function _keydown(event) {
1344       if (/input|textarea/i.test(event.target.tagName)) {
1345         return;
1346       }
1347 
1348       switch (event.key) {
1349         case ARROW_LEFT_KEY:
1350           event.preventDefault();
1351           this.prev();
1352           break;
1353 
1354         case ARROW_RIGHT_KEY:
1355           event.preventDefault();
1356           this.next();
1357           break;
1358       }
1359     };
1360 
1361     _proto._getItemIndex = function _getItemIndex(element) {
1362       this._items = element && element.parentNode ? SelectorEngine.find(SELECTOR_ITEM, element.parentNode) : [];
1363       return this._items.indexOf(element);
1364     };
1365 
1366     _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
1367       var isNextDirection = direction === DIRECTION_NEXT;
1368       var isPrevDirection = direction === DIRECTION_PREV;
1369 
1370       var activeIndex = this._getItemIndex(activeElement);
1371 
1372       var lastItemIndex = this._items.length - 1;
1373       var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;
1374 
1375       if (isGoingToWrap && !this._config.wrap) {
1376         return activeElement;
1377       }
1378 
1379       var delta = direction === DIRECTION_PREV ? -1 : 1;
1380       var itemIndex = (activeIndex + delta) % this._items.length;
1381       return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
1382     };
1383 
1384     _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
1385       var targetIndex = this._getItemIndex(relatedTarget);
1386 
1387       var fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element));
1388 
1389       return EventHandler.trigger(this._element, EVENT_SLIDE, {
1390         relatedTarget: relatedTarget,
1391         direction: eventDirectionName,
1392         from: fromIndex,
1393         to: targetIndex
1394       });
1395     };
1396 
1397     _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
1398       if (this._indicatorsElement) {
1399         var indicators = SelectorEngine.find(SELECTOR_ACTIVE, this._indicatorsElement);
1400 
1401         for (var i = 0; i < indicators.length; i++) {
1402           indicators[i].classList.remove(CLASS_NAME_ACTIVE$1);
1403         }
1404 
1405         var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
1406 
1407         if (nextIndicator) {
1408           nextIndicator.classList.add(CLASS_NAME_ACTIVE$1);
1409         }
1410       }
1411     };
1412 
1413     _proto._updateInterval = function _updateInterval() {
1414       var element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
1415 
1416       if (!element) {
1417         return;
1418       }
1419 
1420       var elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);
1421 
1422       if (elementInterval) {
1423         this._config.defaultInterval = this._config.defaultInterval || this._config.interval;
1424         this._config.interval = elementInterval;
1425       } else {
1426         this._config.interval = this._config.defaultInterval || this._config.interval;
1427       }
1428     };
1429 
1430     _proto._slide = function _slide(direction, element) {
1431       var _this5 = this;
1432 
1433       var activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
1434 
1435       var activeElementIndex = this._getItemIndex(activeElement);
1436 
1437       var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);
1438 
1439       var nextElementIndex = this._getItemIndex(nextElement);
1440 
1441       var isCycling = Boolean(this._interval);
1442       var directionalClassName;
1443       var orderClassName;
1444       var eventDirectionName;
1445 
1446       if (direction === DIRECTION_NEXT) {
1447         directionalClassName = CLASS_NAME_START;
1448         orderClassName = CLASS_NAME_NEXT;
1449         eventDirectionName = DIRECTION_LEFT;
1450       } else {
1451         directionalClassName = CLASS_NAME_END;
1452         orderClassName = CLASS_NAME_PREV;
1453         eventDirectionName = DIRECTION_RIGHT;
1454       }
1455 
1456       if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE$1)) {
1457         this._isSliding = false;
1458         return;
1459       }
1460 
1461       var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
1462 
1463       if (slideEvent.defaultPrevented) {
1464         return;
1465       }
1466 
1467       if (!activeElement || !nextElement) {
1468         // Some weirdness is happening, so we bail

1469         return;
1470       }
1471 
1472       this._isSliding = true;
1473 
1474       if (isCycling) {
1475         this.pause();
1476       }
1477 
1478       this._setActiveIndicatorElement(nextElement);
1479 
1480       this._activeElement = nextElement;
1481 
1482       if (this._element.classList.contains(CLASS_NAME_SLIDE)) {
1483         nextElement.classList.add(orderClassName);
1484         reflow(nextElement);
1485         activeElement.classList.add(directionalClassName);
1486         nextElement.classList.add(directionalClassName);
1487         var transitionDuration = getTransitionDurationFromElement(activeElement);
1488         EventHandler.one(activeElement, TRANSITION_END, function () {
1489           nextElement.classList.remove(directionalClassName, orderClassName);
1490           nextElement.classList.add(CLASS_NAME_ACTIVE$1);
1491           activeElement.classList.remove(CLASS_NAME_ACTIVE$1, orderClassName, directionalClassName);
1492           _this5._isSliding = false;
1493           setTimeout(function () {
1494             EventHandler.trigger(_this5._element, EVENT_SLID, {
1495               relatedTarget: nextElement,
1496               direction: eventDirectionName,
1497               from: activeElementIndex,
1498               to: nextElementIndex
1499             });
1500           }, 0);
1501         });
1502         emulateTransitionEnd(activeElement, transitionDuration);
1503       } else {
1504         activeElement.classList.remove(CLASS_NAME_ACTIVE$1);
1505         nextElement.classList.add(CLASS_NAME_ACTIVE$1);
1506         this._isSliding = false;
1507         EventHandler.trigger(this._element, EVENT_SLID, {
1508           relatedTarget: nextElement,
1509           direction: eventDirectionName,
1510           from: activeElementIndex,
1511           to: nextElementIndex
1512         });
1513       }
1514 
1515       if (isCycling) {
1516         this.cycle();
1517       }
1518     } // Static

1519     ;
1520 
1521     Carousel.carouselInterface = function carouselInterface(element, config) {
1522       var data = Data.getData(element, DATA_KEY$2);
1523 
1524       var _config = _extends({}, Default, Manipulator.getDataAttributes(element));
1525 
1526       if (typeof config === 'object') {
1527         _config = _extends({}, _config, config);
1528       }
1529 
1530       var action = typeof config === 'string' ? config : _config.slide;
1531 
1532       if (!data) {
1533         data = new Carousel(element, _config);
1534       }
1535 
1536       if (typeof config === 'number') {
1537         data.to(config);
1538       } else if (typeof action === 'string') {
1539         if (typeof data[action] === 'undefined') {
1540           throw new TypeError("No method named \"" + action + "\"");
1541         }
1542 
1543         data[action]();
1544       } else if (_config.interval && _config.ride) {
1545         data.pause();
1546         data.cycle();
1547       }
1548     };
1549 
1550     Carousel.jQueryInterface = function jQueryInterface(config) {
1551       return this.each(function () {
1552         Carousel.carouselInterface(this, config);
1553       });
1554     };
1555 
1556     Carousel.dataApiClickHandler = function dataApiClickHandler(event) {
1557       var target = getElementFromSelector(this);
1558 
1559       if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
1560         return;
1561       }
1562 
1563       var config = _extends({}, Manipulator.getDataAttributes(target), Manipulator.getDataAttributes(this));
1564 
1565       var slideIndex = this.getAttribute('data-bs-slide-to');
1566 
1567       if (slideIndex) {
1568         config.interval = false;
1569       }
1570 
1571       Carousel.carouselInterface(target, config);
1572 
1573       if (slideIndex) {
1574         Data.getData(target, DATA_KEY$2).to(slideIndex);
1575       }
1576 
1577       event.preventDefault();
1578     };
1579 
1580     _createClass(Carousel, null, [{
1581       key: "Default",
1582       get: function get() {
1583         return Default;
1584       }
1585     }, {
1586       key: "DATA_KEY",
1587       get: function get() {
1588         return DATA_KEY$2;
1589       }
1590     }]);
1591 
1592     return Carousel;
1593   }(BaseComponent);
1594   /**

1595    * ------------------------------------------------------------------------

1596    * Data Api implementation

1597    * ------------------------------------------------------------------------

1598    */
1599 
1600 
1601   EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler);
1602   EventHandler.on(window, EVENT_LOAD_DATA_API, function () {
1603     var carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);
1604 
1605     for (var i = 0, len = carousels.length; i < len; i++) {
1606       Carousel.carouselInterface(carousels[i], Data.getData(carousels[i], DATA_KEY$2));
1607     }
1608   });
1609   /**

1610    * ------------------------------------------------------------------------

1611    * jQuery

1612    * ------------------------------------------------------------------------

1613    * add .Carousel to jQuery only if jQuery is present

1614    */
1615 
1616   onDOMContentLoaded(function () {
1617     var $ = getjQuery();
1618     /* istanbul ignore if */
1619 
1620     if ($) {
1621       var JQUERY_NO_CONFLICT = $.fn[NAME$2];
1622       $.fn[NAME$2] = Carousel.jQueryInterface;
1623       $.fn[NAME$2].Constructor = Carousel;
1624 
1625       $.fn[NAME$2].noConflict = function () {
1626         $.fn[NAME$2] = JQUERY_NO_CONFLICT;
1627         return Carousel.jQueryInterface;
1628       };
1629     }
1630   });
1631 
1632   /**

1633    * ------------------------------------------------------------------------

1634    * Constants

1635    * ------------------------------------------------------------------------

1636    */
1637 
1638   var NAME$3 = 'collapse';
1639   var DATA_KEY$3 = 'bs.collapse';
1640   var EVENT_KEY$3 = "." + DATA_KEY$3;
1641   var DATA_API_KEY$3 = '.data-api';
1642   var Default$1 = {
1643     toggle: true,
1644     parent: ''
1645   };
1646   var DefaultType$1 = {
1647     toggle: 'boolean',
1648     parent: '(string|element)'
1649   };
1650   var EVENT_SHOW = "show" + EVENT_KEY$3;
1651   var EVENT_SHOWN = "shown" + EVENT_KEY$3;
1652   var EVENT_HIDE = "hide" + EVENT_KEY$3;
1653   var EVENT_HIDDEN = "hidden" + EVENT_KEY$3;
1654   var EVENT_CLICK_DATA_API$3 = "click" + EVENT_KEY$3 + DATA_API_KEY$3;
1655   var CLASS_NAME_SHOW = 'show';
1656   var CLASS_NAME_COLLAPSE = 'collapse';
1657   var CLASS_NAME_COLLAPSING = 'collapsing';
1658   var CLASS_NAME_COLLAPSED = 'collapsed';
1659   var WIDTH = 'width';
1660   var HEIGHT = 'height';
1661   var SELECTOR_ACTIVES = '.show, .collapsing';
1662   var SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="collapse"]';
1663   /**

1664    * ------------------------------------------------------------------------

1665    * Class Definition

1666    * ------------------------------------------------------------------------

1667    */
1668 
1669   var Collapse = /*#__PURE__*/function (_BaseComponent) {
1670     _inheritsLoose(Collapse, _BaseComponent);
1671 
1672     function Collapse(element, config) {
1673       var _this;
1674 
1675       _this = _BaseComponent.call(this, element) || this;
1676       _this._isTransitioning = false;
1677       _this._config = _this._getConfig(config);
1678       _this._triggerArray = SelectorEngine.find(SELECTOR_DATA_TOGGLE$1 + "[href=\"#" + element.id + "\"]," + (SELECTOR_DATA_TOGGLE$1 + "[data-bs-target=\"#" + element.id + "\"]"));
1679       var toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$1);
1680 
1681       for (var i = 0, len = toggleList.length; i < len; i++) {
1682         var elem = toggleList[i];
1683         var selector = getSelectorFromElement(elem);
1684         var filterElement = SelectorEngine.find(selector).filter(function (foundElem) {
1685           return foundElem === element;
1686         });
1687 
1688         if (selector !== null && filterElement.length) {
1689           _this._selector = selector;
1690 
1691           _this._triggerArray.push(elem);
1692         }
1693       }
1694 
1695       _this._parent = _this._config.parent ? _this._getParent() : null;
1696 
1697       if (!_this._config.parent) {
1698         _this._addAriaAndCollapsedClass(_this._element, _this._triggerArray);
1699       }
1700 
1701       if (_this._config.toggle) {
1702         _this.toggle();
1703       }
1704 
1705       return _this;
1706     } // Getters

1707 
1708 
1709     var _proto = Collapse.prototype;
1710 
1711     // Public

1712     _proto.toggle = function toggle() {
1713       if (this._element.classList.contains(CLASS_NAME_SHOW)) {
1714         this.hide();
1715       } else {
1716         this.show();
1717       }
1718     };
1719 
1720     _proto.show = function show() {
1721       var _this2 = this;
1722 
1723       if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {
1724         return;
1725       }
1726 
1727       var actives;
1728       var activesData;
1729 
1730       if (this._parent) {
1731         actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent).filter(function (elem) {
1732           if (typeof _this2._config.parent === 'string') {
1733             return elem.getAttribute('data-bs-parent') === _this2._config.parent;
1734           }
1735 
1736           return elem.classList.contains(CLASS_NAME_COLLAPSE);
1737         });
1738 
1739         if (actives.length === 0) {
1740           actives = null;
1741         }
1742       }
1743 
1744       var container = SelectorEngine.findOne(this._selector);
1745 
1746       if (actives) {
1747         var tempActiveData = actives.find(function (elem) {
1748           return container !== elem;
1749         });
1750         activesData = tempActiveData ? Data.getData(tempActiveData, DATA_KEY$3) : null;
1751 
1752         if (activesData && activesData._isTransitioning) {
1753           return;
1754         }
1755       }
1756 
1757       var startEvent = EventHandler.trigger(this._element, EVENT_SHOW);
1758 
1759       if (startEvent.defaultPrevented) {
1760         return;
1761       }
1762 
1763       if (actives) {
1764         actives.forEach(function (elemActive) {
1765           if (container !== elemActive) {
1766             Collapse.collapseInterface(elemActive, 'hide');
1767           }
1768 
1769           if (!activesData) {
1770             Data.setData(elemActive, DATA_KEY$3, null);
1771           }
1772         });
1773       }
1774 
1775       var dimension = this._getDimension();
1776 
1777       this._element.classList.remove(CLASS_NAME_COLLAPSE);
1778 
1779       this._element.classList.add(CLASS_NAME_COLLAPSING);
1780 
1781       this._element.style[dimension] = 0;
1782 
1783       if (this._triggerArray.length) {
1784         this._triggerArray.forEach(function (element) {
1785           element.classList.remove(CLASS_NAME_COLLAPSED);
1786           element.setAttribute('aria-expanded', true);
1787         });
1788       }
1789 
1790       this.setTransitioning(true);
1791 
1792       var complete = function complete() {
1793         _this2._element.classList.remove(CLASS_NAME_COLLAPSING);
1794 
1795         _this2._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
1796 
1797         _this2._element.style[dimension] = '';
1798 
1799         _this2.setTransitioning(false);
1800 
1801         EventHandler.trigger(_this2._element, EVENT_SHOWN);
1802       };
1803 
1804       var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
1805       var scrollSize = "scroll" + capitalizedDimension;
1806       var transitionDuration = getTransitionDurationFromElement(this._element);
1807       EventHandler.one(this._element, TRANSITION_END, complete);
1808       emulateTransitionEnd(this._element, transitionDuration);
1809       this._element.style[dimension] = this._element[scrollSize] + "px";
1810     };
1811 
1812     _proto.hide = function hide() {
1813       var _this3 = this;
1814 
1815       if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {
1816         return;
1817       }
1818 
1819       var startEvent = EventHandler.trigger(this._element, EVENT_HIDE);
1820 
1821       if (startEvent.defaultPrevented) {
1822         return;
1823       }
1824 
1825       var dimension = this._getDimension();
1826 
1827       this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
1828       reflow(this._element);
1829 
1830       this._element.classList.add(CLASS_NAME_COLLAPSING);
1831 
1832       this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
1833 
1834       var triggerArrayLength = this._triggerArray.length;
1835 
1836       if (triggerArrayLength > 0) {
1837         for (var i = 0; i < triggerArrayLength; i++) {
1838           var trigger = this._triggerArray[i];
1839           var elem = getElementFromSelector(trigger);
1840 
1841           if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {
1842             trigger.classList.add(CLASS_NAME_COLLAPSED);
1843             trigger.setAttribute('aria-expanded', false);
1844           }
1845         }
1846       }
1847 
1848       this.setTransitioning(true);
1849 
1850       var complete = function complete() {
1851         _this3.setTransitioning(false);
1852 
1853         _this3._element.classList.remove(CLASS_NAME_COLLAPSING);
1854 
1855         _this3._element.classList.add(CLASS_NAME_COLLAPSE);
1856 
1857         EventHandler.trigger(_this3._element, EVENT_HIDDEN);
1858       };
1859 
1860       this._element.style[dimension] = '';
1861       var transitionDuration = getTransitionDurationFromElement(this._element);
1862       EventHandler.one(this._element, TRANSITION_END, complete);
1863       emulateTransitionEnd(this._element, transitionDuration);
1864     };
1865 
1866     _proto.setTransitioning = function setTransitioning(isTransitioning) {
1867       this._isTransitioning = isTransitioning;
1868     };
1869 
1870     _proto.dispose = function dispose() {
1871       _BaseComponent.prototype.dispose.call(this);
1872 
1873       this._config = null;
1874       this._parent = null;
1875       this._triggerArray = null;
1876       this._isTransitioning = null;
1877     } // Private

1878     ;
1879 
1880     _proto._getConfig = function _getConfig(config) {
1881       config = _extends({}, Default$1, config);
1882       config.toggle = Boolean(config.toggle); // Coerce string values

1883 
1884       typeCheckConfig(NAME$3, config, DefaultType$1);
1885       return config;
1886     };
1887 
1888     _proto._getDimension = function _getDimension() {
1889       return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT;
1890     };
1891 
1892     _proto._getParent = function _getParent() {
1893       var _this4 = this;
1894 
1895       var parent = this._config.parent;
1896 
1897       if (isElement(parent)) {
1898         // it's a jQuery object

1899         if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') {
1900           parent = parent[0];
1901         }
1902       } else {
1903         parent = SelectorEngine.findOne(parent);
1904       }
1905 
1906       var selector = SELECTOR_DATA_TOGGLE$1 + "[data-bs-parent=\"" + parent + "\"]";
1907       SelectorEngine.find(selector, parent).forEach(function (element) {
1908         var selected = getElementFromSelector(element);
1909 
1910         _this4._addAriaAndCollapsedClass(selected, [element]);
1911       });
1912       return parent;
1913     };
1914 
1915     _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
1916       if (!element || !triggerArray.length) {
1917         return;
1918       }
1919 
1920       var isOpen = element.classList.contains(CLASS_NAME_SHOW);
1921       triggerArray.forEach(function (elem) {
1922         if (isOpen) {
1923           elem.classList.remove(CLASS_NAME_COLLAPSED);
1924         } else {
1925           elem.classList.add(CLASS_NAME_COLLAPSED);
1926         }
1927 
1928         elem.setAttribute('aria-expanded', isOpen);
1929       });
1930     } // Static

1931     ;
1932 
1933     Collapse.collapseInterface = function collapseInterface(element, config) {
1934       var data = Data.getData(element, DATA_KEY$3);
1935 
1936       var _config = _extends({}, Default$1, Manipulator.getDataAttributes(element), typeof config === 'object' && config ? config : {});
1937 
1938       if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {
1939         _config.toggle = false;
1940       }
1941 
1942       if (!data) {
1943         data = new Collapse(element, _config);
1944       }
1945 
1946       if (typeof config === 'string') {
1947         if (typeof data[config] === 'undefined') {
1948           throw new TypeError("No method named \"" + config + "\"");
1949         }
1950 
1951         data[config]();
1952       }
1953     };
1954 
1955     Collapse.jQueryInterface = function jQueryInterface(config) {
1956       return this.each(function () {
1957         Collapse.collapseInterface(this, config);
1958       });
1959     };
1960 
1961     _createClass(Collapse, null, [{
1962       key: "Default",
1963       get: function get() {
1964         return Default$1;
1965       }
1966     }, {
1967       key: "DATA_KEY",
1968       get: function get() {
1969         return DATA_KEY$3;
1970       }
1971     }]);
1972 
1973     return Collapse;
1974   }(BaseComponent);
1975   /**

1976    * ------------------------------------------------------------------------

1977    * Data Api implementation

1978    * ------------------------------------------------------------------------

1979    */
1980 
1981 
1982   EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$1, function (event) {
1983     // preventDefault only for <a> elements (which change the URL) not inside the collapsible element

1984     if (event.target.tagName === 'A') {
1985       event.preventDefault();
1986     }
1987 
1988     var triggerData = Manipulator.getDataAttributes(this);
1989     var selector = getSelectorFromElement(this);
1990     var selectorElements = SelectorEngine.find(selector);
1991     selectorElements.forEach(function (element) {
1992       var data = Data.getData(element, DATA_KEY$3);
1993       var config;
1994 
1995       if (data) {
1996         // update parent attribute

1997         if (data._parent === null && typeof triggerData.parent === 'string') {
1998           data._config.parent = triggerData.parent;
1999           data._parent = data._getParent();
2000         }
2001 
2002         config = 'toggle';
2003       } else {
2004         config = triggerData;
2005       }
2006 
2007       Collapse.collapseInterface(element, config);
2008     });
2009   });
2010   /**

2011    * ------------------------------------------------------------------------

2012    * jQuery

2013    * ------------------------------------------------------------------------

2014    * add .Collapse to jQuery only if jQuery is present

2015    */
2016 
2017   onDOMContentLoaded(function () {
2018     var $ = getjQuery();
2019     /* istanbul ignore if */
2020 
2021     if ($) {
2022       var JQUERY_NO_CONFLICT = $.fn[NAME$3];
2023       $.fn[NAME$3] = Collapse.jQueryInterface;
2024       $.fn[NAME$3].Constructor = Collapse;
2025 
2026       $.fn[NAME$3].noConflict = function () {
2027         $.fn[NAME$3] = JQUERY_NO_CONFLICT;
2028         return Collapse.jQueryInterface;
2029       };
2030     }
2031   });
2032 
2033   var top = 'top';
2034   var bottom = 'bottom';
2035   var right = 'right';
2036   var left = 'left';
2037   var auto = 'auto';
2038   var basePlacements = [top, bottom, right, left];
2039   var start = 'start';
2040   var end = 'end';
2041   var clippingParents = 'clippingParents';
2042   var viewport = 'viewport';
2043   var popper = 'popper';
2044   var reference = 'reference';
2045   var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {
2046     return acc.concat([placement + "-" + start, placement + "-" + end]);
2047   }, []);
2048   var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {
2049     return acc.concat([placement, placement + "-" + start, placement + "-" + end]);
2050   }, []); // modifiers that need to read the DOM

2051 
2052   var beforeRead = 'beforeRead';
2053   var read = 'read';
2054   var afterRead = 'afterRead'; // pure-logic modifiers

2055 
2056   var beforeMain = 'beforeMain';
2057   var main = 'main';
2058   var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)

2059 
2060   var beforeWrite = 'beforeWrite';
2061   var write = 'write';
2062   var afterWrite = 'afterWrite';
2063   var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];
2064 
2065   function getNodeName(element) {
2066     return element ? (element.nodeName || '').toLowerCase() : null;
2067   }
2068 
2069   /*:: import type { Window } from '../types'; */
2070 
2071   /*:: declare function getWindow(node: Node | Window): Window; */
2072   function getWindow(node) {
2073     if (node.toString() !== '[object Window]') {
2074       var ownerDocument = node.ownerDocument;
2075       return ownerDocument ? ownerDocument.defaultView || window : window;
2076     }
2077 
2078     return node;
2079   }
2080 
2081   /*:: declare function isElement(node: mixed): boolean %checks(node instanceof

2082     Element); */
2083 
2084   function isElement$1(node) {
2085     var OwnElement = getWindow(node).Element;
2086     return node instanceof OwnElement || node instanceof Element;
2087   }
2088   /*:: declare function isHTMLElement(node: mixed): boolean %checks(node instanceof

2089     HTMLElement); */
2090 
2091 
2092   function isHTMLElement(node) {
2093     var OwnElement = getWindow(node).HTMLElement;
2094     return node instanceof OwnElement || node instanceof HTMLElement;
2095   }
2096   /*:: declare function isShadowRoot(node: mixed): boolean %checks(node instanceof

2097     ShadowRoot); */
2098 
2099 
2100   function isShadowRoot(node) {
2101     var OwnElement = getWindow(node).ShadowRoot;
2102     return node instanceof OwnElement || node instanceof ShadowRoot;
2103   }
2104 
2105   // and applies them to the HTMLElements such as popper and arrow

2106 
2107   function applyStyles(_ref) {
2108     var state = _ref.state;
2109     Object.keys(state.elements).forEach(function (name) {
2110       var style = state.styles[name] || {};
2111       var attributes = state.attributes[name] || {};
2112       var element = state.elements[name]; // arrow is optional + virtual elements

2113 
2114       if (!isHTMLElement(element) || !getNodeName(element)) {
2115         return;
2116       } // Flow doesn't support to extend this property, but it's the most

2117       // effective way to apply styles to an HTMLElement

2118       // $FlowFixMe

2119 
2120 
2121       Object.assign(element.style, style);
2122       Object.keys(attributes).forEach(function (name) {
2123         var value = attributes[name];
2124 
2125         if (value === false) {
2126           element.removeAttribute(name);
2127         } else {
2128           element.setAttribute(name, value === true ? '' : value);
2129         }
2130       });
2131     });
2132   }
2133 
2134   function effect(_ref2) {
2135     var state = _ref2.state;
2136     var initialStyles = {
2137       popper: {
2138         position: state.options.strategy,
2139         left: '0',
2140         top: '0',
2141         margin: '0'
2142       },
2143       arrow: {
2144         position: 'absolute'
2145       },
2146       reference: {}
2147     };
2148     Object.assign(state.elements.popper.style, initialStyles.popper);
2149 
2150     if (state.elements.arrow) {
2151       Object.assign(state.elements.arrow.style, initialStyles.arrow);
2152     }
2153 
2154     return function () {
2155       Object.keys(state.elements).forEach(function (name) {
2156         var element = state.elements[name];
2157         var attributes = state.attributes[name] || {};
2158         var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them

2159 
2160         var style = styleProperties.reduce(function (style, property) {
2161           style[property] = '';
2162           return style;
2163         }, {}); // arrow is optional + virtual elements

2164 
2165         if (!isHTMLElement(element) || !getNodeName(element)) {
2166           return;
2167         } // Flow doesn't support to extend this property, but it's the most

2168         // effective way to apply styles to an HTMLElement

2169         // $FlowFixMe

2170 
2171 
2172         Object.assign(element.style, style);
2173         Object.keys(attributes).forEach(function (attribute) {
2174           element.removeAttribute(attribute);
2175         });
2176       });
2177     };
2178   } // eslint-disable-next-line import/no-unused-modules

2179 
2180 
2181   var applyStyles$1 = {
2182     name: 'applyStyles',
2183     enabled: true,
2184     phase: 'write',
2185     fn: applyStyles,
2186     effect: effect,
2187     requires: ['computeStyles']
2188   };
2189 
2190   function getBasePlacement(placement) {
2191     return placement.split('-')[0];
2192   }
2193 
2194   // Returns the layout rect of an element relative to its offsetParent. Layout

2195   // means it doesn't take into account transforms.

2196   function getLayoutRect(element) {
2197     return {
2198       x: element.offsetLeft,
2199       y: element.offsetTop,
2200       width: element.offsetWidth,
2201       height: element.offsetHeight
2202     };
2203   }
2204 
2205   function contains(parent, child) {
2206     var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method

2207 
2208     if (parent.contains(child)) {
2209       return true;
2210     } // then fallback to custom implementation with Shadow DOM support

2211     else if (rootNode && isShadowRoot(rootNode)) {
2212         var next = child;
2213 
2214         do {
2215           if (next && parent.isSameNode(next)) {
2216             return true;
2217           } // $FlowFixMe: need a better way to handle this...

2218 
2219 
2220           next = next.parentNode || next.host;
2221         } while (next);
2222       } // Give up, the result is false

2223 
2224 
2225     return false;
2226   }
2227 
2228   function getComputedStyle$1(element) {
2229     return getWindow(element).getComputedStyle(element);
2230   }
2231 
2232   function isTableElement(element) {
2233     return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;
2234   }
2235 
2236   function getDocumentElement(element) {
2237     // $FlowFixMe: assume body is always available

2238     return ((isElement$1(element) ? element.ownerDocument : element.document) || window.document).documentElement;
2239   }
2240 
2241   function getParentNode(element) {
2242     if (getNodeName(element) === 'html') {
2243       return element;
2244     }
2245 
2246     return (// $FlowFixMe: this is a quicker (but less type safe) way to save quite some bytes from the bundle

2247       element.assignedSlot || // step into the shadow DOM of the parent of a slotted node

2248       element.parentNode || // DOM Element detected

2249       // $FlowFixMe: need a better way to handle this...

2250       element.host || // ShadowRoot detected

2251       // $FlowFixMe: HTMLElement is a Node

2252       getDocumentElement(element) // fallback

2253 
2254     );
2255   }
2256 
2257   function getTrueOffsetParent(element) {
2258     if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837

2259     getComputedStyle$1(element).position === 'fixed') {
2260       return null;
2261     }
2262 
2263     var offsetParent = element.offsetParent;
2264 
2265     if (offsetParent) {
2266       var html = getDocumentElement(offsetParent);
2267 
2268       if (getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static' && getComputedStyle$1(html).position !== 'static') {
2269         return html;
2270       }
2271     }
2272 
2273     return offsetParent;
2274   } // `.offsetParent` reports `null` for fixed elements, while absolute elements

2275   // return the containing block

2276 
2277 
2278   function getContainingBlock(element) {
2279     var currentNode = getParentNode(element);
2280 
2281     while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {
2282       var css = getComputedStyle$1(currentNode); // This is non-exhaustive but covers the most common CSS properties that

2283       // create a containing block.

2284 
2285       if (css.transform !== 'none' || css.perspective !== 'none' || css.willChange && css.willChange !== 'auto') {
2286         return currentNode;
2287       } else {
2288         currentNode = currentNode.parentNode;
2289       }
2290     }
2291 
2292     return null;
2293   } // Gets the closest ancestor positioned element. Handles some edge cases,

2294   // such as table ancestors and cross browser bugs.

2295 
2296 
2297   function getOffsetParent(element) {
2298     var window = getWindow(element);
2299     var offsetParent = getTrueOffsetParent(element);
2300 
2301     while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') {
2302       offsetParent = getTrueOffsetParent(offsetParent);
2303     }
2304 
2305     if (offsetParent && getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static') {
2306       return window;
2307     }
2308 
2309     return offsetParent || getContainingBlock(element) || window;
2310   }
2311 
2312   function getMainAxisFromPlacement(placement) {
2313     return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';
2314   }
2315 
2316   function within(min, value, max) {
2317     return Math.max(min, Math.min(value, max));
2318   }
2319 
2320   function getFreshSideObject() {
2321     return {
2322       top: 0,
2323       right: 0,
2324       bottom: 0,
2325       left: 0
2326     };
2327   }
2328 
2329   function mergePaddingObject(paddingObject) {
2330     return Object.assign(Object.assign({}, getFreshSideObject()), paddingObject);
2331   }
2332 
2333   function expandToHashMap(value, keys) {
2334     return keys.reduce(function (hashMap, key) {
2335       hashMap[key] = value;
2336       return hashMap;
2337     }, {});
2338   }
2339 
2340   function arrow(_ref) {
2341     var _state$modifiersData$;
2342 
2343     var state = _ref.state,
2344         name = _ref.name;
2345     var arrowElement = state.elements.arrow;
2346     var popperOffsets = state.modifiersData.popperOffsets;
2347     var basePlacement = getBasePlacement(state.placement);
2348     var axis = getMainAxisFromPlacement(basePlacement);
2349     var isVertical = [left, right].indexOf(basePlacement) >= 0;
2350     var len = isVertical ? 'height' : 'width';
2351 
2352     if (!arrowElement || !popperOffsets) {
2353       return;
2354     }
2355 
2356     var paddingObject = state.modifiersData[name + "#persistent"].padding;
2357     var arrowRect = getLayoutRect(arrowElement);
2358     var minProp = axis === 'y' ? top : left;
2359     var maxProp = axis === 'y' ? bottom : right;
2360     var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];
2361     var startDiff = popperOffsets[axis] - state.rects.reference[axis];
2362     var arrowOffsetParent = getOffsetParent(arrowElement);
2363     var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
2364     var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is

2365     // outside of the popper bounds

2366 
2367     var min = paddingObject[minProp];
2368     var max = clientSize - arrowRect[len] - paddingObject[maxProp];
2369     var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;
2370     var offset = within(min, center, max); // Prevents breaking syntax highlighting...

2371 
2372     var axisProp = axis;
2373     state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);
2374   }
2375 
2376   function effect$1(_ref2) {
2377     var state = _ref2.state,
2378         options = _ref2.options,
2379         name = _ref2.name;
2380     var _options$element = options.element,
2381         arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element,
2382         _options$padding = options.padding,
2383         padding = _options$padding === void 0 ? 0 : _options$padding;
2384 
2385     if (arrowElement == null) {
2386       return;
2387     } // CSS selector

2388 
2389 
2390     if (typeof arrowElement === 'string') {
2391       arrowElement = state.elements.popper.querySelector(arrowElement);
2392 
2393       if (!arrowElement) {
2394         return;
2395       }
2396     }
2397 
2398     if (!contains(state.elements.popper, arrowElement)) {
2399 
2400       return;
2401     }
2402 
2403     state.elements.arrow = arrowElement;
2404     state.modifiersData[name + "#persistent"] = {
2405       padding: mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements))
2406     };
2407   } // eslint-disable-next-line import/no-unused-modules

2408 
2409 
2410   var arrow$1 = {
2411     name: 'arrow',
2412     enabled: true,
2413     phase: 'main',
2414     fn: arrow,
2415     effect: effect$1,
2416     requires: ['popperOffsets'],
2417     requiresIfExists: ['preventOverflow']
2418   };
2419 
2420   var unsetSides = {
2421     top: 'auto',
2422     right: 'auto',
2423     bottom: 'auto',
2424     left: 'auto'
2425   }; // Round the offsets to the nearest suitable subpixel based on the DPR.

2426   // Zooming can change the DPR, but it seems to report a value that will

2427   // cleanly divide the values into the appropriate subpixels.

2428 
2429   function roundOffsets(_ref) {
2430     var x = _ref.x,
2431         y = _ref.y;
2432     var win = window;
2433     var dpr = win.devicePixelRatio || 1;
2434     return {
2435       x: Math.round(x * dpr) / dpr || 0,
2436       y: Math.round(y * dpr) / dpr || 0
2437     };
2438   }
2439 
2440   function mapToStyles(_ref2) {
2441     var _Object$assign2;
2442 
2443     var popper = _ref2.popper,
2444         popperRect = _ref2.popperRect,
2445         placement = _ref2.placement,
2446         offsets = _ref2.offsets,
2447         position = _ref2.position,
2448         gpuAcceleration = _ref2.gpuAcceleration,
2449         adaptive = _ref2.adaptive;
2450 
2451     var _roundOffsets = roundOffsets(offsets),
2452         x = _roundOffsets.x,
2453         y = _roundOffsets.y;
2454 
2455     var hasX = offsets.hasOwnProperty('x');
2456     var hasY = offsets.hasOwnProperty('y');
2457     var sideX = left;
2458     var sideY = top;
2459     var win = window;
2460 
2461     if (adaptive) {
2462       var offsetParent = getOffsetParent(popper);
2463 
2464       if (offsetParent === getWindow(popper)) {
2465         offsetParent = getDocumentElement(popper);
2466       } // $FlowFixMe: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it

2467 
2468       /*:: offsetParent = (offsetParent: Element); */
2469 
2470 
2471       if (placement === top) {
2472         sideY = bottom;
2473         y -= offsetParent.clientHeight - popperRect.height;
2474         y *= gpuAcceleration ? 1 : -1;
2475       }
2476 
2477       if (placement === left) {
2478         sideX = right;
2479         x -= offsetParent.clientWidth - popperRect.width;
2480         x *= gpuAcceleration ? 1 : -1;
2481       }
2482     }
2483 
2484     var commonStyles = Object.assign({
2485       position: position
2486     }, adaptive && unsetSides);
2487 
2488     if (gpuAcceleration) {
2489       var _Object$assign;
2490 
2491       return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
2492     }
2493 
2494     return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2));
2495   }
2496 
2497   function computeStyles(_ref3) {
2498     var state = _ref3.state,
2499         options = _ref3.options;
2500     var _options$gpuAccelerat = options.gpuAcceleration,
2501         gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,
2502         _options$adaptive = options.adaptive,
2503         adaptive = _options$adaptive === void 0 ? true : _options$adaptive;
2504 
2505     var commonStyles = {
2506       placement: getBasePlacement(state.placement),
2507       popper: state.elements.popper,
2508       popperRect: state.rects.popper,
2509       gpuAcceleration: gpuAcceleration
2510     };
2511 
2512     if (state.modifiersData.popperOffsets != null) {
2513       state.styles.popper = Object.assign(Object.assign({}, state.styles.popper), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {
2514         offsets: state.modifiersData.popperOffsets,
2515         position: state.options.strategy,
2516         adaptive: adaptive
2517       })));
2518     }
2519 
2520     if (state.modifiersData.arrow != null) {
2521       state.styles.arrow = Object.assign(Object.assign({}, state.styles.arrow), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {
2522         offsets: state.modifiersData.arrow,
2523         position: 'absolute',
2524         adaptive: false
2525       })));
2526     }
2527 
2528     state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {
2529       'data-popper-placement': state.placement
2530     });
2531   } // eslint-disable-next-line import/no-unused-modules

2532 
2533 
2534   var computeStyles$1 = {
2535     name: 'computeStyles',
2536     enabled: true,
2537     phase: 'beforeWrite',
2538     fn: computeStyles,
2539     data: {}
2540   };
2541 
2542   var passive = {
2543     passive: true
2544   };
2545 
2546   function effect$2(_ref) {
2547     var state = _ref.state,
2548         instance = _ref.instance,
2549         options = _ref.options;
2550     var _options$scroll = options.scroll,
2551         scroll = _options$scroll === void 0 ? true : _options$scroll,
2552         _options$resize = options.resize,
2553         resize = _options$resize === void 0 ? true : _options$resize;
2554     var window = getWindow(state.elements.popper);
2555     var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
2556 
2557     if (scroll) {
2558       scrollParents.forEach(function (scrollParent) {
2559         scrollParent.addEventListener('scroll', instance.update, passive);
2560       });
2561     }
2562 
2563     if (resize) {
2564       window.addEventListener('resize', instance.update, passive);
2565     }
2566 
2567     return function () {
2568       if (scroll) {
2569         scrollParents.forEach(function (scrollParent) {
2570           scrollParent.removeEventListener('scroll', instance.update, passive);
2571         });
2572       }
2573 
2574       if (resize) {
2575         window.removeEventListener('resize', instance.update, passive);
2576       }
2577     };
2578   } // eslint-disable-next-line import/no-unused-modules

2579 
2580 
2581   var eventListeners = {
2582     name: 'eventListeners',
2583     enabled: true,
2584     phase: 'write',
2585     fn: function fn() {},
2586     effect: effect$2,
2587     data: {}
2588   };
2589 
2590   var hash = {
2591     left: 'right',
2592     right: 'left',
2593     bottom: 'top',
2594     top: 'bottom'
2595   };
2596   function getOppositePlacement(placement) {
2597     return placement.replace(/left|right|bottom|top/g, function (matched) {
2598       return hash[matched];
2599     });
2600   }
2601 
2602   var hash$1 = {
2603     start: 'end',
2604     end: 'start'
2605   };
2606   function getOppositeVariationPlacement(placement) {
2607     return placement.replace(/start|end/g, function (matched) {
2608       return hash$1[matched];
2609     });
2610   }
2611 
2612   function getBoundingClientRect(element) {
2613     var rect = element.getBoundingClientRect();
2614     return {
2615       width: rect.width,
2616       height: rect.height,
2617       top: rect.top,
2618       right: rect.right,
2619       bottom: rect.bottom,
2620       left: rect.left,
2621       x: rect.left,
2622       y: rect.top
2623     };
2624   }
2625 
2626   function getWindowScroll(node) {
2627     var win = getWindow(node);
2628     var scrollLeft = win.pageXOffset;
2629     var scrollTop = win.pageYOffset;
2630     return {
2631       scrollLeft: scrollLeft,
2632       scrollTop: scrollTop
2633     };
2634   }
2635 
2636   function getWindowScrollBarX(element) {
2637     // If <html> has a CSS width greater than the viewport, then this will be

2638     // incorrect for RTL.

2639     // Popper 1 is broken in this case and never had a bug report so let's assume

2640     // it's not an issue. I don't think anyone ever specifies width on <html>

2641     // anyway.

2642     // Browsers where the left scrollbar doesn't cause an issue report `0` for

2643     // this (e.g. Edge 2019, IE11, Safari)

2644     return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
2645   }
2646 
2647   function getViewportRect(element) {
2648     var win = getWindow(element);
2649     var html = getDocumentElement(element);
2650     var visualViewport = win.visualViewport;
2651     var width = html.clientWidth;
2652     var height = html.clientHeight;
2653     var x = 0;
2654     var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper

2655     // can be obscured underneath it.

2656     // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even

2657     // if it isn't open, so if this isn't available, the popper will be detected

2658     // to overflow the bottom of the screen too early.

2659 
2660     if (visualViewport) {
2661       width = visualViewport.width;
2662       height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)

2663       // In Chrome, it returns a value very close to 0 (+/-) but contains rounding

2664       // errors due to floating point numbers, so we need to check precision.

2665       // Safari returns a number <= 0, usually < -1 when pinch-zoomed

2666       // Feature detection fails in mobile emulation mode in Chrome.

2667       // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <

2668       // 0.001

2669       // Fallback here: "Not Safari" userAgent

2670 
2671       if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {
2672         x = visualViewport.offsetLeft;
2673         y = visualViewport.offsetTop;
2674       }
2675     }
2676 
2677     return {
2678       width: width,
2679       height: height,
2680       x: x + getWindowScrollBarX(element),
2681       y: y
2682     };
2683   }
2684 
2685   // of the `<html>` and `<body>` rect bounds if horizontally scrollable

2686 
2687   function getDocumentRect(element) {
2688     var html = getDocumentElement(element);
2689     var winScroll = getWindowScroll(element);
2690     var body = element.ownerDocument.body;
2691     var width = Math.max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
2692     var height = Math.max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
2693     var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
2694     var y = -winScroll.scrollTop;
2695 
2696     if (getComputedStyle$1(body || html).direction === 'rtl') {
2697       x += Math.max(html.clientWidth, body ? body.clientWidth : 0) - width;
2698     }
2699 
2700     return {
2701       width: width,
2702       height: height,
2703       x: x,
2704       y: y
2705     };
2706   }
2707 
2708   function isScrollParent(element) {
2709     // Firefox wants us to check `-x` and `-y` variations as well

2710     var _getComputedStyle = getComputedStyle$1(element),
2711         overflow = _getComputedStyle.overflow,
2712         overflowX = _getComputedStyle.overflowX,
2713         overflowY = _getComputedStyle.overflowY;
2714 
2715     return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
2716   }
2717 
2718   function getScrollParent(node) {
2719     if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {
2720       // $FlowFixMe: assume body is always available

2721       return node.ownerDocument.body;
2722     }
2723 
2724     if (isHTMLElement(node) && isScrollParent(node)) {
2725       return node;
2726     }
2727 
2728     return getScrollParent(getParentNode(node));
2729   }
2730 
2731   /*

2732   given a DOM element, return the list of all scroll parents, up the list of ancesors

2733   until we get to the top window object. This list is what we attach scroll listeners

2734   to, because if any of these parent elements scroll, we'll need to re-calculate the 

2735   reference element's position.

2736   */
2737 
2738   function listScrollParents(element, list) {
2739     if (list === void 0) {
2740       list = [];
2741     }
2742 
2743     var scrollParent = getScrollParent(element);
2744     var isBody = getNodeName(scrollParent) === 'body';
2745     var win = getWindow(scrollParent);
2746     var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
2747     var updatedList = list.concat(target);
2748     return isBody ? updatedList : // $FlowFixMe: isBody tells us target will be an HTMLElement here

2749     updatedList.concat(listScrollParents(getParentNode(target)));
2750   }
2751 
2752   function rectToClientRect(rect) {
2753     return Object.assign(Object.assign({}, rect), {}, {
2754       left: rect.x,
2755       top: rect.y,
2756       right: rect.x + rect.width,
2757       bottom: rect.y + rect.height
2758     });
2759   }
2760 
2761   function getInnerBoundingClientRect(element) {
2762     var rect = getBoundingClientRect(element);
2763     rect.top = rect.top + element.clientTop;
2764     rect.left = rect.left + element.clientLeft;
2765     rect.bottom = rect.top + element.clientHeight;
2766     rect.right = rect.left + element.clientWidth;
2767     rect.width = element.clientWidth;
2768     rect.height = element.clientHeight;
2769     rect.x = rect.left;
2770     rect.y = rect.top;
2771     return rect;
2772   }
2773 
2774   function getClientRectFromMixedType(element, clippingParent) {
2775     return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
2776   } // A "clipping parent" is an overflowable container with the characteristic of

2777   // clipping (or hiding) overflowing elements with a position different from

2778   // `initial`

2779 
2780 
2781   function getClippingParents(element) {
2782     var clippingParents = listScrollParents(getParentNode(element));
2783     var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle$1(element).position) >= 0;
2784     var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
2785 
2786     if (!isElement$1(clipperElement)) {
2787       return [];
2788     } // $FlowFixMe: https://github.com/facebook/flow/issues/1414

2789 
2790 
2791     return clippingParents.filter(function (clippingParent) {
2792       return isElement$1(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';
2793     });
2794   } // Gets the maximum area that the element is visible in due to any number of

2795   // clipping parents

2796 
2797 
2798   function getClippingRect(element, boundary, rootBoundary) {
2799     var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);
2800     var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
2801     var firstClippingParent = clippingParents[0];
2802     var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
2803       var rect = getClientRectFromMixedType(element, clippingParent);
2804       accRect.top = Math.max(rect.top, accRect.top);
2805       accRect.right = Math.min(rect.right, accRect.right);
2806       accRect.bottom = Math.min(rect.bottom, accRect.bottom);
2807       accRect.left = Math.max(rect.left, accRect.left);
2808       return accRect;
2809     }, getClientRectFromMixedType(element, firstClippingParent));
2810     clippingRect.width = clippingRect.right - clippingRect.left;
2811     clippingRect.height = clippingRect.bottom - clippingRect.top;
2812     clippingRect.x = clippingRect.left;
2813     clippingRect.y = clippingRect.top;
2814     return clippingRect;
2815   }
2816 
2817   function getVariation(placement) {
2818     return placement.split('-')[1];
2819   }
2820 
2821   function computeOffsets(_ref) {
2822     var reference = _ref.reference,
2823         element = _ref.element,
2824         placement = _ref.placement;
2825     var basePlacement = placement ? getBasePlacement(placement) : null;
2826     var variation = placement ? getVariation(placement) : null;
2827     var commonX = reference.x + reference.width / 2 - element.width / 2;
2828     var commonY = reference.y + reference.height / 2 - element.height / 2;
2829     var offsets;
2830 
2831     switch (basePlacement) {
2832       case top:
2833         offsets = {
2834           x: commonX,
2835           y: reference.y - element.height
2836         };
2837         break;
2838 
2839       case bottom:
2840         offsets = {
2841           x: commonX,
2842           y: reference.y + reference.height
2843         };
2844         break;
2845 
2846       case right:
2847         offsets = {
2848           x: reference.x + reference.width,
2849           y: commonY
2850         };
2851         break;
2852 
2853       case left:
2854         offsets = {
2855           x: reference.x - element.width,
2856           y: commonY
2857         };
2858         break;
2859 
2860       default:
2861         offsets = {
2862           x: reference.x,
2863           y: reference.y
2864         };
2865     }
2866 
2867     var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
2868 
2869     if (mainAxis != null) {
2870       var len = mainAxis === 'y' ? 'height' : 'width';
2871 
2872       switch (variation) {
2873         case start:
2874           offsets[mainAxis] = Math.floor(offsets[mainAxis]) - Math.floor(reference[len] / 2 - element[len] / 2);
2875           break;
2876 
2877         case end:
2878           offsets[mainAxis] = Math.floor(offsets[mainAxis]) + Math.ceil(reference[len] / 2 - element[len] / 2);
2879           break;
2880       }
2881     }
2882 
2883     return offsets;
2884   }
2885 
2886   function detectOverflow(state, options) {
2887     if (options === void 0) {
2888       options = {};
2889     }
2890 
2891     var _options = options,
2892         _options$placement = _options.placement,
2893         placement = _options$placement === void 0 ? state.placement : _options$placement,
2894         _options$boundary = _options.boundary,
2895         boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,
2896         _options$rootBoundary = _options.rootBoundary,
2897         rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,
2898         _options$elementConte = _options.elementContext,
2899         elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,
2900         _options$altBoundary = _options.altBoundary,
2901         altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,
2902         _options$padding = _options.padding,
2903         padding = _options$padding === void 0 ? 0 : _options$padding;
2904     var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
2905     var altContext = elementContext === popper ? reference : popper;
2906     var referenceElement = state.elements.reference;
2907     var popperRect = state.rects.popper;
2908     var element = state.elements[altBoundary ? altContext : elementContext];
2909     var clippingClientRect = getClippingRect(isElement$1(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);
2910     var referenceClientRect = getBoundingClientRect(referenceElement);
2911     var popperOffsets = computeOffsets({
2912       reference: referenceClientRect,
2913       element: popperRect,
2914       strategy: 'absolute',
2915       placement: placement
2916     });
2917     var popperClientRect = rectToClientRect(Object.assign(Object.assign({}, popperRect), popperOffsets));
2918     var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect

2919     // 0 or negative = within the clipping rect

2920 
2921     var overflowOffsets = {
2922       top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
2923       bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
2924       left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
2925       right: elementClientRect.right - clippingClientRect.right + paddingObject.right
2926     };
2927     var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element

2928 
2929     if (elementContext === popper && offsetData) {
2930       var offset = offsetData[placement];
2931       Object.keys(overflowOffsets).forEach(function (key) {
2932         var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
2933         var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';
2934         overflowOffsets[key] += offset[axis] * multiply;
2935       });
2936     }
2937 
2938     return overflowOffsets;
2939   }
2940 
2941   /*:: type OverflowsMap = { [ComputedPlacement]: number }; */
2942 
2943   /*;; type OverflowsMap = { [key in ComputedPlacement]: number }; */
2944   function computeAutoPlacement(state, options) {
2945     if (options === void 0) {
2946       options = {};
2947     }
2948 
2949     var _options = options,
2950         placement = _options.placement,
2951         boundary = _options.boundary,
2952         rootBoundary = _options.rootBoundary,
2953         padding = _options.padding,
2954         flipVariations = _options.flipVariations,
2955         _options$allowedAutoP = _options.allowedAutoPlacements,
2956         allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
2957     var variation = getVariation(placement);
2958     var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {
2959       return getVariation(placement) === variation;
2960     }) : basePlacements; // $FlowFixMe

2961 
2962     var allowedPlacements = placements$1.filter(function (placement) {
2963       return allowedAutoPlacements.indexOf(placement) >= 0;
2964     });
2965 
2966     if (allowedPlacements.length === 0) {
2967       allowedPlacements = placements$1;
2968     } // $FlowFixMe: Flow seems to have problems with two array unions...

2969 
2970 
2971     var overflows = allowedPlacements.reduce(function (acc, placement) {
2972       acc[placement] = detectOverflow(state, {
2973         placement: placement,
2974         boundary: boundary,
2975         rootBoundary: rootBoundary,
2976         padding: padding
2977       })[getBasePlacement(placement)];
2978       return acc;
2979     }, {});
2980     return Object.keys(overflows).sort(function (a, b) {
2981       return overflows[a] - overflows[b];
2982     });
2983   }
2984 
2985   function getExpandedFallbackPlacements(placement) {
2986     if (getBasePlacement(placement) === auto) {
2987       return [];
2988     }
2989 
2990     var oppositePlacement = getOppositePlacement(placement);
2991     return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];
2992   }
2993 
2994   function flip(_ref) {
2995     var state = _ref.state,
2996         options = _ref.options,
2997         name = _ref.name;
2998 
2999     if (state.modifiersData[name]._skip) {
3000       return;
3001     }
3002 
3003     var _options$mainAxis = options.mainAxis,
3004         checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
3005         _options$altAxis = options.altAxis,
3006         checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,
3007         specifiedFallbackPlacements = options.fallbackPlacements,
3008         padding = options.padding,
3009         boundary = options.boundary,
3010         rootBoundary = options.rootBoundary,
3011         altBoundary = options.altBoundary,
3012         _options$flipVariatio = options.flipVariations,
3013         flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,
3014         allowedAutoPlacements = options.allowedAutoPlacements;
3015     var preferredPlacement = state.options.placement;
3016     var basePlacement = getBasePlacement(preferredPlacement);
3017     var isBasePlacement = basePlacement === preferredPlacement;
3018     var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
3019     var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {
3020       return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {
3021         placement: placement,
3022         boundary: boundary,
3023         rootBoundary: rootBoundary,
3024         padding: padding,
3025         flipVariations: flipVariations,
3026         allowedAutoPlacements: allowedAutoPlacements
3027       }) : placement);
3028     }, []);
3029     var referenceRect = state.rects.reference;
3030     var popperRect = state.rects.popper;
3031     var checksMap = new Map();
3032     var makeFallbackChecks = true;
3033     var firstFittingPlacement = placements[0];
3034 
3035     for (var i = 0; i < placements.length; i++) {
3036       var placement = placements[i];
3037 
3038       var _basePlacement = getBasePlacement(placement);
3039 
3040       var isStartVariation = getVariation(placement) === start;
3041       var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;
3042       var len = isVertical ? 'width' : 'height';
3043       var overflow = detectOverflow(state, {
3044         placement: placement,
3045         boundary: boundary,
3046         rootBoundary: rootBoundary,
3047         altBoundary: altBoundary,
3048         padding: padding
3049       });
3050       var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;
3051 
3052       if (referenceRect[len] > popperRect[len]) {
3053         mainVariationSide = getOppositePlacement(mainVariationSide);
3054       }
3055 
3056       var altVariationSide = getOppositePlacement(mainVariationSide);
3057       var checks = [];
3058 
3059       if (checkMainAxis) {
3060         checks.push(overflow[_basePlacement] <= 0);
3061       }
3062 
3063       if (checkAltAxis) {
3064         checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
3065       }
3066 
3067       if (checks.every(function (check) {
3068         return check;
3069       })) {
3070         firstFittingPlacement = placement;
3071         makeFallbackChecks = false;
3072         break;
3073       }
3074 
3075       checksMap.set(placement, checks);
3076     }
3077 
3078     if (makeFallbackChecks) {
3079       // `2` may be desired in some cases – research later

3080       var numberOfChecks = flipVariations ? 3 : 1;
3081 
3082       var _loop = function _loop(_i) {
3083         var fittingPlacement = placements.find(function (placement) {
3084           var checks = checksMap.get(placement);
3085 
3086           if (checks) {
3087             return checks.slice(0, _i).every(function (check) {
3088               return check;
3089             });
3090           }
3091         });
3092 
3093         if (fittingPlacement) {
3094           firstFittingPlacement = fittingPlacement;
3095           return "break";
3096         }
3097       };
3098 
3099       for (var _i = numberOfChecks; _i > 0; _i--) {
3100         var _ret = _loop(_i);
3101 
3102         if (_ret === "break") break;
3103       }
3104     }
3105 
3106     if (state.placement !== firstFittingPlacement) {
3107       state.modifiersData[name]._skip = true;
3108       state.placement = firstFittingPlacement;
3109       state.reset = true;
3110     }
3111   } // eslint-disable-next-line import/no-unused-modules

3112 
3113 
3114   var flip$1 = {
3115     name: 'flip',
3116     enabled: true,
3117     phase: 'main',
3118     fn: flip,
3119     requiresIfExists: ['offset'],
3120     data: {
3121       _skip: false
3122     }
3123   };
3124 
3125   function getSideOffsets(overflow, rect, preventedOffsets) {
3126     if (preventedOffsets === void 0) {
3127       preventedOffsets = {
3128         x: 0,
3129         y: 0
3130       };
3131     }
3132 
3133     return {
3134       top: overflow.top - rect.height - preventedOffsets.y,
3135       right: overflow.right - rect.width + preventedOffsets.x,
3136       bottom: overflow.bottom - rect.height + preventedOffsets.y,
3137       left: overflow.left - rect.width - preventedOffsets.x
3138     };
3139   }
3140 
3141   function isAnySideFullyClipped(overflow) {
3142     return [top, right, bottom, left].some(function (side) {
3143       return overflow[side] >= 0;
3144     });
3145   }
3146 
3147   function hide(_ref) {
3148     var state = _ref.state,
3149         name = _ref.name;
3150     var referenceRect = state.rects.reference;
3151     var popperRect = state.rects.popper;
3152     var preventedOffsets = state.modifiersData.preventOverflow;
3153     var referenceOverflow = detectOverflow(state, {
3154       elementContext: 'reference'
3155     });
3156     var popperAltOverflow = detectOverflow(state, {
3157       altBoundary: true
3158     });
3159     var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
3160     var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
3161     var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
3162     var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
3163     state.modifiersData[name] = {
3164       referenceClippingOffsets: referenceClippingOffsets,
3165       popperEscapeOffsets: popperEscapeOffsets,
3166       isReferenceHidden: isReferenceHidden,
3167       hasPopperEscaped: hasPopperEscaped
3168     };
3169     state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {
3170       'data-popper-reference-hidden': isReferenceHidden,
3171       'data-popper-escaped': hasPopperEscaped
3172     });
3173   } // eslint-disable-next-line import/no-unused-modules

3174 
3175 
3176   var hide$1 = {
3177     name: 'hide',
3178     enabled: true,
3179     phase: 'main',
3180     requiresIfExists: ['preventOverflow'],
3181     fn: hide
3182   };
3183 
3184   function distanceAndSkiddingToXY(placement, rects, offset) {
3185     var basePlacement = getBasePlacement(placement);
3186     var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
3187 
3188     var _ref = typeof offset === 'function' ? offset(Object.assign(Object.assign({}, rects), {}, {
3189       placement: placement
3190     })) : offset,
3191         skidding = _ref[0],
3192         distance = _ref[1];
3193 
3194     skidding = skidding || 0;
3195     distance = (distance || 0) * invertDistance;
3196     return [left, right].indexOf(basePlacement) >= 0 ? {
3197       x: distance,
3198       y: skidding
3199     } : {
3200       x: skidding,
3201       y: distance
3202     };
3203   }
3204 
3205   function offset(_ref2) {
3206     var state = _ref2.state,
3207         options = _ref2.options,
3208         name = _ref2.name;
3209     var _options$offset = options.offset,
3210         offset = _options$offset === void 0 ? [0, 0] : _options$offset;
3211     var data = placements.reduce(function (acc, placement) {
3212       acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);
3213       return acc;
3214     }, {});
3215     var _data$state$placement = data[state.placement],
3216         x = _data$state$placement.x,
3217         y = _data$state$placement.y;
3218 
3219     if (state.modifiersData.popperOffsets != null) {
3220       state.modifiersData.popperOffsets.x += x;
3221       state.modifiersData.popperOffsets.y += y;
3222     }
3223 
3224     state.modifiersData[name] = data;
3225   } // eslint-disable-next-line import/no-unused-modules

3226 
3227 
3228   var offset$1 = {
3229     name: 'offset',
3230     enabled: true,
3231     phase: 'main',
3232     requires: ['popperOffsets'],
3233     fn: offset
3234   };
3235 
3236   function popperOffsets(_ref) {
3237     var state = _ref.state,
3238         name = _ref.name;
3239     // Offsets are the actual position the popper needs to have to be

3240     // properly positioned near its reference element

3241     // This is the most basic placement, and will be adjusted by

3242     // the modifiers in the next step

3243     state.modifiersData[name] = computeOffsets({
3244       reference: state.rects.reference,
3245       element: state.rects.popper,
3246       strategy: 'absolute',
3247       placement: state.placement
3248     });
3249   } // eslint-disable-next-line import/no-unused-modules

3250 
3251 
3252   var popperOffsets$1 = {
3253     name: 'popperOffsets',
3254     enabled: true,
3255     phase: 'read',
3256     fn: popperOffsets,
3257     data: {}
3258   };
3259 
3260   function getAltAxis(axis) {
3261     return axis === 'x' ? 'y' : 'x';
3262   }
3263 
3264   function preventOverflow(_ref) {
3265     var state = _ref.state,
3266         options = _ref.options,
3267         name = _ref.name;
3268     var _options$mainAxis = options.mainAxis,
3269         checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
3270         _options$altAxis = options.altAxis,
3271         checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,
3272         boundary = options.boundary,
3273         rootBoundary = options.rootBoundary,
3274         altBoundary = options.altBoundary,
3275         padding = options.padding,
3276         _options$tether = options.tether,
3277         tether = _options$tether === void 0 ? true : _options$tether,
3278         _options$tetherOffset = options.tetherOffset,
3279         tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
3280     var overflow = detectOverflow(state, {
3281       boundary: boundary,
3282       rootBoundary: rootBoundary,
3283       padding: padding,
3284       altBoundary: altBoundary
3285     });
3286     var basePlacement = getBasePlacement(state.placement);
3287     var variation = getVariation(state.placement);
3288     var isBasePlacement = !variation;
3289     var mainAxis = getMainAxisFromPlacement(basePlacement);
3290     var altAxis = getAltAxis(mainAxis);
3291     var popperOffsets = state.modifiersData.popperOffsets;
3292     var referenceRect = state.rects.reference;
3293     var popperRect = state.rects.popper;
3294     var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign(Object.assign({}, state.rects), {}, {
3295       placement: state.placement
3296     })) : tetherOffset;
3297     var data = {
3298       x: 0,
3299       y: 0
3300     };
3301 
3302     if (!popperOffsets) {
3303       return;
3304     }
3305 
3306     if (checkMainAxis) {
3307       var mainSide = mainAxis === 'y' ? top : left;
3308       var altSide = mainAxis === 'y' ? bottom : right;
3309       var len = mainAxis === 'y' ? 'height' : 'width';
3310       var offset = popperOffsets[mainAxis];
3311       var min = popperOffsets[mainAxis] + overflow[mainSide];
3312       var max = popperOffsets[mainAxis] - overflow[altSide];
3313       var additive = tether ? -popperRect[len] / 2 : 0;
3314       var minLen = variation === start ? referenceRect[len] : popperRect[len];
3315       var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go

3316       // outside the reference bounds

3317 
3318       var arrowElement = state.elements.arrow;
3319       var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {
3320         width: 0,
3321         height: 0
3322       };
3323       var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();
3324       var arrowPaddingMin = arrowPaddingObject[mainSide];
3325       var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want

3326       // to include its full size in the calculation. If the reference is small

3327       // and near the edge of a boundary, the popper can overflow even if the

3328       // reference is not overflowing as well (e.g. virtual elements with no

3329       // width or height)

3330 
3331       var arrowLen = within(0, referenceRect[len], arrowRect[len]);
3332       var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;
3333       var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;
3334       var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
3335       var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
3336       var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;
3337       var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;
3338       var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;
3339       var preventedOffset = within(tether ? Math.min(min, tetherMin) : min, offset, tether ? Math.max(max, tetherMax) : max);
3340       popperOffsets[mainAxis] = preventedOffset;
3341       data[mainAxis] = preventedOffset - offset;
3342     }
3343 
3344     if (checkAltAxis) {
3345       var _mainSide = mainAxis === 'x' ? top : left;
3346 
3347       var _altSide = mainAxis === 'x' ? bottom : right;
3348 
3349       var _offset = popperOffsets[altAxis];
3350 
3351       var _min = _offset + overflow[_mainSide];
3352 
3353       var _max = _offset - overflow[_altSide];
3354 
3355       var _preventedOffset = within(_min, _offset, _max);
3356 
3357       popperOffsets[altAxis] = _preventedOffset;
3358       data[altAxis] = _preventedOffset - _offset;
3359     }
3360 
3361     state.modifiersData[name] = data;
3362   } // eslint-disable-next-line import/no-unused-modules

3363 
3364 
3365   var preventOverflow$1 = {
3366     name: 'preventOverflow',
3367     enabled: true,
3368     phase: 'main',
3369     fn: preventOverflow,
3370     requiresIfExists: ['offset']
3371   };
3372 
3373   function getHTMLElementScroll(element) {
3374     return {
3375       scrollLeft: element.scrollLeft,
3376       scrollTop: element.scrollTop
3377     };
3378   }
3379 
3380   function getNodeScroll(node) {
3381     if (node === getWindow(node) || !isHTMLElement(node)) {
3382       return getWindowScroll(node);
3383     } else {
3384       return getHTMLElementScroll(node);
3385     }
3386   }
3387 
3388   // Composite means it takes into account transforms as well as layout.

3389 
3390   function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
3391     if (isFixed === void 0) {
3392       isFixed = false;
3393     }
3394 
3395     var documentElement = getDocumentElement(offsetParent);
3396     var rect = getBoundingClientRect(elementOrVirtualElement);
3397     var isOffsetParentAnElement = isHTMLElement(offsetParent);
3398     var scroll = {
3399       scrollLeft: 0,
3400       scrollTop: 0
3401     };
3402     var offsets = {
3403       x: 0,
3404       y: 0
3405     };
3406 
3407     if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
3408       if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078

3409       isScrollParent(documentElement)) {
3410         scroll = getNodeScroll(offsetParent);
3411       }
3412 
3413       if (isHTMLElement(offsetParent)) {
3414         offsets = getBoundingClientRect(offsetParent);
3415         offsets.x += offsetParent.clientLeft;
3416         offsets.y += offsetParent.clientTop;
3417       } else if (documentElement) {
3418         offsets.x = getWindowScrollBarX(documentElement);
3419       }
3420     }
3421 
3422     return {
3423       x: rect.left + scroll.scrollLeft - offsets.x,
3424       y: rect.top + scroll.scrollTop - offsets.y,
3425       width: rect.width,
3426       height: rect.height
3427     };
3428   }
3429 
3430   function order(modifiers) {
3431     var map = new Map();
3432     var visited = new Set();
3433     var result = [];
3434     modifiers.forEach(function (modifier) {
3435       map.set(modifier.name, modifier);
3436     }); // On visiting object, check for its dependencies and visit them recursively

3437 
3438     function sort(modifier) {
3439       visited.add(modifier.name);
3440       var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);
3441       requires.forEach(function (dep) {
3442         if (!visited.has(dep)) {
3443           var depModifier = map.get(dep);
3444 
3445           if (depModifier) {
3446             sort(depModifier);
3447           }
3448         }
3449       });
3450       result.push(modifier);
3451     }
3452 
3453     modifiers.forEach(function (modifier) {
3454       if (!visited.has(modifier.name)) {
3455         // check for visited object

3456         sort(modifier);
3457       }
3458     });
3459     return result;
3460   }
3461 
3462   function orderModifiers(modifiers) {
3463     // order based on dependencies

3464     var orderedModifiers = order(modifiers); // order based on phase

3465 
3466     return modifierPhases.reduce(function (acc, phase) {
3467       return acc.concat(orderedModifiers.filter(function (modifier) {
3468         return modifier.phase === phase;
3469       }));
3470     }, []);
3471   }
3472 
3473   function debounce(fn) {
3474     var pending;
3475     return function () {
3476       if (!pending) {
3477         pending = new Promise(function (resolve) {
3478           Promise.resolve().then(function () {
3479             pending = undefined;
3480             resolve(fn());
3481           });
3482         });
3483       }
3484 
3485       return pending;
3486     };
3487   }
3488 
3489   function mergeByName(modifiers) {
3490     var merged = modifiers.reduce(function (merged, current) {
3491       var existing = merged[current.name];
3492       merged[current.name] = existing ? Object.assign(Object.assign(Object.assign({}, existing), current), {}, {
3493         options: Object.assign(Object.assign({}, existing.options), current.options),
3494         data: Object.assign(Object.assign({}, existing.data), current.data)
3495       }) : current;
3496       return merged;
3497     }, {}); // IE11 does not support Object.values

3498 
3499     return Object.keys(merged).map(function (key) {
3500       return merged[key];
3501     });
3502   }
3503 
3504   var DEFAULT_OPTIONS = {
3505     placement: 'bottom',
3506     modifiers: [],
3507     strategy: 'absolute'
3508   };
3509 
3510   function areValidElements() {
3511     for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
3512       args[_key] = arguments[_key];
3513     }
3514 
3515     return !args.some(function (element) {
3516       return !(element && typeof element.getBoundingClientRect === 'function');
3517     });
3518   }
3519 
3520   function popperGenerator(generatorOptions) {
3521     if (generatorOptions === void 0) {
3522       generatorOptions = {};
3523     }
3524 
3525     var _generatorOptions = generatorOptions,
3526         _generatorOptions$def = _generatorOptions.defaultModifiers,
3527         defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,
3528         _generatorOptions$def2 = _generatorOptions.defaultOptions,
3529         defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
3530     return function createPopper(reference, popper, options) {
3531       if (options === void 0) {
3532         options = defaultOptions;
3533       }
3534 
3535       var state = {
3536         placement: 'bottom',
3537         orderedModifiers: [],
3538         options: Object.assign(Object.assign({}, DEFAULT_OPTIONS), defaultOptions),
3539         modifiersData: {},
3540         elements: {
3541           reference: reference,
3542           popper: popper
3543         },
3544         attributes: {},
3545         styles: {}
3546       };
3547       var effectCleanupFns = [];
3548       var isDestroyed = false;
3549       var instance = {
3550         state: state,
3551         setOptions: function setOptions(options) {
3552           cleanupModifierEffects();
3553           state.options = Object.assign(Object.assign(Object.assign({}, defaultOptions), state.options), options);
3554           state.scrollParents = {
3555             reference: isElement$1(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],
3556             popper: listScrollParents(popper)
3557           }; // Orders the modifiers based on their dependencies and `phase`

3558           // properties

3559 
3560           var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers

3561 
3562           state.orderedModifiers = orderedModifiers.filter(function (m) {
3563             return m.enabled;
3564           }); // Validate the provided modifiers so that the consumer will get warned

3565 
3566           runModifierEffects();
3567           return instance.update();
3568         },
3569         // Sync update – it will always be executed, even if not necessary. This

3570         // is useful for low frequency updates where sync behavior simplifies the

3571         // logic.

3572         // For high frequency updates (e.g. `resize` and `scroll` events), always

3573         // prefer the async Popper#update method

3574         forceUpdate: function forceUpdate() {
3575           if (isDestroyed) {
3576             return;
3577           }
3578 
3579           var _state$elements = state.elements,
3580               reference = _state$elements.reference,
3581               popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements

3582           // anymore

3583 
3584           if (!areValidElements(reference, popper)) {
3585 
3586             return;
3587           } // Store the reference and popper rects to be read by modifiers

3588 
3589 
3590           state.rects = {
3591             reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),
3592             popper: getLayoutRect(popper)
3593           }; // Modifiers have the ability to reset the current update cycle. The

3594           // most common use case for this is the `flip` modifier changing the

3595           // placement, which then needs to re-run all the modifiers, because the

3596           // logic was previously ran for the previous placement and is therefore

3597           // stale/incorrect

3598 
3599           state.reset = false;
3600           state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier

3601           // is filled with the initial data specified by the modifier. This means

3602           // it doesn't persist and is fresh on each update.

3603           // To ensure persistent data, use `${name}#persistent`

3604 
3605           state.orderedModifiers.forEach(function (modifier) {
3606             return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
3607           });
3608 
3609           for (var index = 0; index < state.orderedModifiers.length; index++) {
3610 
3611             if (state.reset === true) {
3612               state.reset = false;
3613               index = -1;
3614               continue;
3615             }
3616 
3617             var _state$orderedModifie = state.orderedModifiers[index],
3618                 fn = _state$orderedModifie.fn,
3619                 _state$orderedModifie2 = _state$orderedModifie.options,
3620                 _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,
3621                 name = _state$orderedModifie.name;
3622 
3623             if (typeof fn === 'function') {
3624               state = fn({
3625                 state: state,
3626                 options: _options,
3627                 name: name,
3628                 instance: instance
3629               }) || state;
3630             }
3631           }
3632         },
3633         // Async and optimistically optimized update – it will not be executed if

3634         // not necessary (debounced to run at most once-per-tick)

3635         update: debounce(function () {
3636           return new Promise(function (resolve) {
3637             instance.forceUpdate();
3638             resolve(state);
3639           });
3640         }),
3641         destroy: function destroy() {
3642           cleanupModifierEffects();
3643           isDestroyed = true;
3644         }
3645       };
3646 
3647       if (!areValidElements(reference, popper)) {
3648 
3649         return instance;
3650       }
3651 
3652       instance.setOptions(options).then(function (state) {
3653         if (!isDestroyed && options.onFirstUpdate) {
3654           options.onFirstUpdate(state);
3655         }
3656       }); // Modifiers have the ability to execute arbitrary code before the first

3657       // update cycle runs. They will be executed in the same order as the update

3658       // cycle. This is useful when a modifier adds some persistent data that

3659       // other modifiers need to use, but the modifier is run after the dependent

3660       // one.

3661 
3662       function runModifierEffects() {
3663         state.orderedModifiers.forEach(function (_ref3) {
3664           var name = _ref3.name,
3665               _ref3$options = _ref3.options,
3666               options = _ref3$options === void 0 ? {} : _ref3$options,
3667               effect = _ref3.effect;
3668 
3669           if (typeof effect === 'function') {
3670             var cleanupFn = effect({
3671               state: state,
3672               name: name,
3673               instance: instance,
3674               options: options
3675             });
3676 
3677             var noopFn = function noopFn() {};
3678 
3679             effectCleanupFns.push(cleanupFn || noopFn);
3680           }
3681         });
3682       }
3683 
3684       function cleanupModifierEffects() {
3685         effectCleanupFns.forEach(function (fn) {
3686           return fn();
3687         });
3688         effectCleanupFns = [];
3689       }
3690 
3691       return instance;
3692     };
3693   }
3694   var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules

3695 
3696   var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1];
3697   var createPopper$1 = /*#__PURE__*/popperGenerator({
3698     defaultModifiers: defaultModifiers
3699   }); // eslint-disable-next-line import/no-unused-modules

3700 
3701   var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1];
3702   var createPopper$2 = /*#__PURE__*/popperGenerator({
3703     defaultModifiers: defaultModifiers$1
3704   }); // eslint-disable-next-line import/no-unused-modules

3705 
3706   var Popper = /*#__PURE__*/Object.freeze({
3707     __proto__: null,
3708     popperGenerator: popperGenerator,
3709     detectOverflow: detectOverflow,
3710     createPopperBase: createPopper,
3711     createPopper: createPopper$2,
3712     createPopperLite: createPopper$1,
3713     top: top,
3714     bottom: bottom,
3715     right: right,
3716     left: left,
3717     auto: auto,
3718     basePlacements: basePlacements,
3719     start: start,
3720     end: end,
3721     clippingParents: clippingParents,
3722     viewport: viewport,
3723     popper: popper,
3724     reference: reference,
3725     variationPlacements: variationPlacements,
3726     placements: placements,
3727     beforeRead: beforeRead,
3728     read: read,
3729     afterRead: afterRead,
3730     beforeMain: beforeMain,
3731     main: main,
3732     afterMain: afterMain,
3733     beforeWrite: beforeWrite,
3734     write: write,
3735     afterWrite: afterWrite,
3736     modifierPhases: modifierPhases,
3737     applyStyles: applyStyles$1,
3738     arrow: arrow$1,
3739     computeStyles: computeStyles$1,
3740     eventListeners: eventListeners,
3741     flip: flip$1,
3742     hide: hide$1,
3743     offset: offset$1,
3744     popperOffsets: popperOffsets$1,
3745     preventOverflow: preventOverflow$1
3746   });
3747 
3748   /**

3749    * ------------------------------------------------------------------------

3750    * Constants

3751    * ------------------------------------------------------------------------

3752    */
3753 
3754   var NAME$4 = 'dropdown';
3755   var DATA_KEY$4 = 'bs.dropdown';
3756   var EVENT_KEY$4 = "." + DATA_KEY$4;
3757   var DATA_API_KEY$4 = '.data-api';
3758   var ESCAPE_KEY = 'Escape';
3759   var SPACE_KEY = 'Space';
3760   var TAB_KEY = 'Tab';
3761   var ARROW_UP_KEY = 'ArrowUp';
3762   var ARROW_DOWN_KEY = 'ArrowDown';
3763   var RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button

3764 
3765   var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEY + "|" + ARROW_DOWN_KEY + "|" + ESCAPE_KEY);
3766   var EVENT_HIDE$1 = "hide" + EVENT_KEY$4;
3767   var EVENT_HIDDEN$1 = "hidden" + EVENT_KEY$4;
3768   var EVENT_SHOW$1 = "show" + EVENT_KEY$4;
3769   var EVENT_SHOWN$1 = "shown" + EVENT_KEY$4;
3770   var EVENT_CLICK = "click" + EVENT_KEY$4;
3771   var EVENT_CLICK_DATA_API$4 = "click" + EVENT_KEY$4 + DATA_API_KEY$4;
3772   var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY$4 + DATA_API_KEY$4;
3773   var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY$4 + DATA_API_KEY$4;
3774   var CLASS_NAME_DISABLED = 'disabled';
3775   var CLASS_NAME_SHOW$1 = 'show';
3776   var CLASS_NAME_DROPUP = 'dropup';
3777   var CLASS_NAME_DROPEND = 'dropend';
3778   var CLASS_NAME_DROPSTART = 'dropstart';
3779   var CLASS_NAME_NAVBAR = 'navbar';
3780   var SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="dropdown"]';
3781   var SELECTOR_FORM_CHILD = '.dropdown form';
3782   var SELECTOR_MENU = '.dropdown-menu';
3783   var SELECTOR_NAVBAR_NAV = '.navbar-nav';
3784   var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';
3785   var PLACEMENT_TOP = isRTL ? 'top-end' : 'top-start';
3786   var PLACEMENT_TOPEND = isRTL ? 'top-start' : 'top-end';
3787   var PLACEMENT_BOTTOM = isRTL ? 'bottom-end' : 'bottom-start';
3788   var PLACEMENT_BOTTOMEND = isRTL ? 'bottom-start' : 'bottom-end';
3789   var PLACEMENT_RIGHT = isRTL ? 'left-start' : 'right-start';
3790   var PLACEMENT_LEFT = isRTL ? 'right-start' : 'left-start';
3791   var Default$2 = {
3792     offset: 0,
3793     flip: true,
3794     boundary: 'clippingParents',
3795     reference: 'toggle',
3796     display: 'dynamic',
3797     popperConfig: null
3798   };
3799   var DefaultType$2 = {
3800     offset: '(number|string|function)',
3801     flip: 'boolean',
3802     boundary: '(string|element)',
3803     reference: '(string|element)',
3804     display: 'string',
3805     popperConfig: '(null|object)'
3806   };
3807   /**

3808    * ------------------------------------------------------------------------

3809    * Class Definition

3810    * ------------------------------------------------------------------------

3811    */
3812 
3813   var Dropdown = /*#__PURE__*/function (_BaseComponent) {
3814     _inheritsLoose(Dropdown, _BaseComponent);
3815 
3816     function Dropdown(element, config) {
3817       var _this;
3818 
3819       _this = _BaseComponent.call(this, element) || this;
3820       _this._popper = null;
3821       _this._config = _this._getConfig(config);
3822       _this._menu = _this._getMenuElement();
3823       _this._inNavbar = _this._detectNavbar();
3824 
3825       _this._addEventListeners();
3826 
3827       return _this;
3828     } // Getters

3829 
3830 
3831     var _proto = Dropdown.prototype;
3832 
3833     // Public

3834     _proto.toggle = function toggle() {
3835       if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED)) {
3836         return;
3837       }
3838 
3839       var isActive = this._element.classList.contains(CLASS_NAME_SHOW$1);
3840 
3841       Dropdown.clearMenus();
3842 
3843       if (isActive) {
3844         return;
3845       }
3846 
3847       this.show();
3848     };
3849 
3850     _proto.show = function show() {
3851       if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || this._menu.classList.contains(CLASS_NAME_SHOW$1)) {
3852         return;
3853       }
3854 
3855       var parent = Dropdown.getParentFromElement(this._element);
3856       var relatedTarget = {
3857         relatedTarget: this._element
3858       };
3859       var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$1, relatedTarget);
3860 
3861       if (showEvent.defaultPrevented) {
3862         return;
3863       } // Totally disable Popper for Dropdowns in Navbar

3864 
3865 
3866       if (!this._inNavbar) {
3867         if (typeof Popper === 'undefined') {
3868           throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)');
3869         }
3870 
3871         var referenceElement = this._element;
3872 
3873         if (this._config.reference === 'parent') {
3874           referenceElement = parent;
3875         } else if (isElement(this._config.reference)) {
3876           referenceElement = this._config.reference; // Check if it's jQuery element

3877 
3878           if (typeof this._config.reference.jquery !== 'undefined') {
3879             referenceElement = this._config.reference[0];
3880           }
3881         }
3882 
3883         this._popper = createPopper$2(referenceElement, this._menu, this._getPopperConfig());
3884       } // If this is a touch-enabled device we add extra

3885       // empty mouseover listeners to the body's immediate children;

3886       // only needed because of broken event delegation on iOS

3887       // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html

3888 
3889 
3890       if ('ontouchstart' in document.documentElement && !parent.closest(SELECTOR_NAVBAR_NAV)) {
3891         var _ref;
3892 
3893         (_ref = []).concat.apply(_ref, document.body.children).forEach(function (elem) {
3894           return EventHandler.on(elem, 'mouseover', null, noop());
3895         });
3896       }
3897 
3898       this._element.focus();
3899 
3900       this._element.setAttribute('aria-expanded', true);
3901 
3902       this._menu.classList.toggle(CLASS_NAME_SHOW$1);
3903 
3904       this._element.classList.toggle(CLASS_NAME_SHOW$1);
3905 
3906       EventHandler.trigger(parent, EVENT_SHOWN$1, relatedTarget);
3907     };
3908 
3909     _proto.hide = function hide() {
3910       if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || !this._menu.classList.contains(CLASS_NAME_SHOW$1)) {
3911         return;
3912       }
3913 
3914       var parent = Dropdown.getParentFromElement(this._element);
3915       var relatedTarget = {
3916         relatedTarget: this._element
3917       };
3918       var hideEvent = EventHandler.trigger(parent, EVENT_HIDE$1, relatedTarget);
3919 
3920       if (hideEvent.defaultPrevented) {
3921         return;
3922       }
3923 
3924       if (this._popper) {
3925         this._popper.destroy();
3926       }
3927 
3928       this._menu.classList.toggle(CLASS_NAME_SHOW$1);
3929 
3930       this._element.classList.toggle(CLASS_NAME_SHOW$1);
3931 
3932       EventHandler.trigger(parent, EVENT_HIDDEN$1, relatedTarget);
3933     };
3934 
3935     _proto.dispose = function dispose() {
3936       _BaseComponent.prototype.dispose.call(this);
3937 
3938       EventHandler.off(this._element, EVENT_KEY$4);
3939       this._menu = null;
3940 
3941       if (this._popper) {
3942         this._popper.destroy();
3943 
3944         this._popper = null;
3945       }
3946     };
3947 
3948     _proto.update = function update() {
3949       this._inNavbar = this._detectNavbar();
3950 
3951       if (this._popper) {
3952         this._popper.update();
3953       }
3954     } // Private

3955     ;
3956 
3957     _proto._addEventListeners = function _addEventListeners() {
3958       var _this2 = this;
3959 
3960       EventHandler.on(this._element, EVENT_CLICK, function (event) {
3961         event.preventDefault();
3962         event.stopPropagation();
3963 
3964         _this2.toggle();
3965       });
3966     };
3967 
3968     _proto._getConfig = function _getConfig(config) {
3969       config = _extends({}, this.constructor.Default, Manipulator.getDataAttributes(this._element), config);
3970       typeCheckConfig(NAME$4, config, this.constructor.DefaultType);
3971       return config;
3972     };
3973 
3974     _proto._getMenuElement = function _getMenuElement() {
3975       return SelectorEngine.next(this._element, SELECTOR_MENU)[0];
3976     };
3977 
3978     _proto._getPlacement = function _getPlacement() {
3979       var parentDropdown = this._element.parentNode;
3980 
3981       if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {
3982         return PLACEMENT_RIGHT;
3983       }
3984 
3985       if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {
3986         return PLACEMENT_LEFT;
3987       } // We need to trim the value because custom properties can also include spaces

3988 
3989 
3990       var isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';
3991 
3992       if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {
3993         return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;
3994       }
3995 
3996       return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;
3997     };
3998 
3999     _proto._detectNavbar = function _detectNavbar() {
4000       return this._element.closest("." + CLASS_NAME_NAVBAR) !== null;
4001     };
4002 
4003     _proto._getPopperConfig = function _getPopperConfig() {
4004       var popperConfig = {
4005         placement: this._getPlacement(),
4006         modifiers: [{
4007           name: 'preventOverflow',
4008           options: {
4009             altBoundary: this._config.flip,
4010             rootBoundary: this._config.boundary
4011           }
4012         }]
4013       }; // Disable Popper if we have a static display

4014 
4015       if (this._config.display === 'static') {
4016         popperConfig.modifiers = [{
4017           name: 'applyStyles',
4018           enabled: false
4019         }];
4020       }
4021 
4022       return _extends({}, popperConfig, this._config.popperConfig);
4023     } // Static

4024     ;
4025 
4026     Dropdown.dropdownInterface = function dropdownInterface(element, config) {
4027       var data = Data.getData(element, DATA_KEY$4);
4028 
4029       var _config = typeof config === 'object' ? config : null;
4030 
4031       if (!data) {
4032         data = new Dropdown(element, _config);
4033       }
4034 
4035       if (typeof config === 'string') {
4036         if (typeof data[config] === 'undefined') {
4037           throw new TypeError("No method named \"" + config + "\"");
4038         }
4039 
4040         data[config]();
4041       }
4042     };
4043 
4044     Dropdown.jQueryInterface = function jQueryInterface(config) {
4045       return this.each(function () {
4046         Dropdown.dropdownInterface(this, config);
4047       });
4048     };
4049 
4050     Dropdown.clearMenus = function clearMenus(event) {
4051       if (event && (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY)) {
4052         return;
4053       }
4054 
4055       var toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE$2);
4056 
4057       for (var i = 0, len = toggles.length; i < len; i++) {
4058         var parent = Dropdown.getParentFromElement(toggles[i]);
4059         var context = Data.getData(toggles[i], DATA_KEY$4);
4060         var relatedTarget = {
4061           relatedTarget: toggles[i]
4062         };
4063 
4064         if (event && event.type === 'click') {
4065           relatedTarget.clickEvent = event;
4066         }
4067 
4068         if (!context) {
4069           continue;
4070         }
4071 
4072         var dropdownMenu = context._menu;
4073 
4074         if (!toggles[i].classList.contains(CLASS_NAME_SHOW$1)) {
4075           continue;
4076         }
4077 
4078         if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.key === TAB_KEY) && dropdownMenu.contains(event.target)) {
4079           continue;
4080         }
4081 
4082         var hideEvent = EventHandler.trigger(parent, EVENT_HIDE$1, relatedTarget);
4083 
4084         if (hideEvent.defaultPrevented) {
4085           continue;
4086         } // If this is a touch-enabled device we remove the extra

4087         // empty mouseover listeners we added for iOS support

4088 
4089 
4090         if ('ontouchstart' in document.documentElement) {
4091           var _ref2;
4092 
4093           (_ref2 = []).concat.apply(_ref2, document.body.children).forEach(function (elem) {
4094             return EventHandler.off(elem, 'mouseover', null, noop());
4095           });
4096         }
4097 
4098         toggles[i].setAttribute('aria-expanded', 'false');
4099 
4100         if (context._popper) {
4101           context._popper.destroy();
4102         }
4103 
4104         dropdownMenu.classList.remove(CLASS_NAME_SHOW$1);
4105         toggles[i].classList.remove(CLASS_NAME_SHOW$1);
4106         EventHandler.trigger(parent, EVENT_HIDDEN$1, relatedTarget);
4107       }
4108     };
4109 
4110     Dropdown.getParentFromElement = function getParentFromElement(element) {
4111       return getElementFromSelector(element) || element.parentNode;
4112     };
4113 
4114     Dropdown.dataApiKeydownHandler = function dataApiKeydownHandler(event) {
4115       // If not input/textarea:

4116       //  - And not a key in REGEXP_KEYDOWN => not a dropdown command

4117       // If input/textarea:

4118       //  - If space key => not a dropdown command

4119       //  - If key is other than escape

4120       //    - If key is not up or down => not a dropdown command

4121       //    - If trigger inside the menu => not a dropdown command

4122       if (/input|textarea/i.test(event.target.tagName) ? event.key === SPACE_KEY || event.key !== ESCAPE_KEY && (event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY || event.target.closest(SELECTOR_MENU)) : !REGEXP_KEYDOWN.test(event.key)) {
4123         return;
4124       }
4125 
4126       event.preventDefault();
4127       event.stopPropagation();
4128 
4129       if (this.disabled || this.classList.contains(CLASS_NAME_DISABLED)) {
4130         return;
4131       }
4132 
4133       var parent = Dropdown.getParentFromElement(this);
4134       var isActive = this.classList.contains(CLASS_NAME_SHOW$1);
4135 
4136       if (event.key === ESCAPE_KEY) {
4137         var button = this.matches(SELECTOR_DATA_TOGGLE$2) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$2)[0];
4138         button.focus();
4139         Dropdown.clearMenus();
4140         return;
4141       }
4142 
4143       if (!isActive || event.key === SPACE_KEY) {
4144         Dropdown.clearMenus();
4145         return;
4146       }
4147 
4148       var items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, parent).filter(isVisible);
4149 
4150       if (!items.length) {
4151         return;
4152       }
4153 
4154       var index = items.indexOf(event.target); // Up

4155 
4156       if (event.key === ARROW_UP_KEY && index > 0) {
4157         index--;
4158       } // Down

4159 
4160 
4161       if (event.key === ARROW_DOWN_KEY && index < items.length - 1) {
4162         index++;
4163       } // index is -1 if the first keydown is an ArrowUp

4164 
4165 
4166       index = index === -1 ? 0 : index;
4167       items[index].focus();
4168     };
4169 
4170     _createClass(Dropdown, null, [{
4171       key: "Default",
4172       get: function get() {
4173         return Default$2;
4174       }
4175     }, {
4176       key: "DefaultType",
4177       get: function get() {
4178         return DefaultType$2;
4179       }
4180     }, {
4181       key: "DATA_KEY",
4182       get: function get() {
4183         return DATA_KEY$4;
4184       }
4185     }]);
4186 
4187     return Dropdown;
4188   }(BaseComponent);
4189   /**

4190    * ------------------------------------------------------------------------

4191    * Data Api implementation

4192    * ------------------------------------------------------------------------

4193    */
4194 
4195 
4196   EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown.dataApiKeydownHandler);
4197   EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
4198   EventHandler.on(document, EVENT_CLICK_DATA_API$4, Dropdown.clearMenus);
4199   EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
4200   EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$2, function (event) {
4201     event.preventDefault();
4202     event.stopPropagation();
4203     Dropdown.dropdownInterface(this, 'toggle');
4204   });
4205   EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_FORM_CHILD, function (e) {
4206     return e.stopPropagation();
4207   });
4208   /**

4209    * ------------------------------------------------------------------------

4210    * jQuery

4211    * ------------------------------------------------------------------------

4212    * add .Dropdown to jQuery only if jQuery is present

4213    */
4214 
4215   onDOMContentLoaded(function () {
4216     var $ = getjQuery();
4217     /* istanbul ignore if */
4218 
4219     if ($) {
4220       var JQUERY_NO_CONFLICT = $.fn[NAME$4];
4221       $.fn[NAME$4] = Dropdown.jQueryInterface;
4222       $.fn[NAME$4].Constructor = Dropdown;
4223 
4224       $.fn[NAME$4].noConflict = function () {
4225         $.fn[NAME$4] = JQUERY_NO_CONFLICT;
4226         return Dropdown.jQueryInterface;
4227       };
4228     }
4229   });
4230 
4231   /**

4232    * ------------------------------------------------------------------------

4233    * Constants

4234    * ------------------------------------------------------------------------

4235    */
4236 
4237   var NAME$5 = 'modal';
4238   var DATA_KEY$5 = 'bs.modal';
4239   var EVENT_KEY$5 = "." + DATA_KEY$5;
4240   var DATA_API_KEY$5 = '.data-api';
4241   var ESCAPE_KEY$1 = 'Escape';
4242   var Default$3 = {
4243     backdrop: true,
4244     keyboard: true,
4245     focus: true
4246   };
4247   var DefaultType$3 = {
4248     backdrop: '(boolean|string)',
4249     keyboard: 'boolean',
4250     focus: 'boolean'
4251   };
4252   var EVENT_HIDE$2 = "hide" + EVENT_KEY$5;
4253   var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY$5;
4254   var EVENT_HIDDEN$2 = "hidden" + EVENT_KEY$5;
4255   var EVENT_SHOW$2 = "show" + EVENT_KEY$5;
4256   var EVENT_SHOWN$2 = "shown" + EVENT_KEY$5;
4257   var EVENT_FOCUSIN = "focusin" + EVENT_KEY$5;
4258   var EVENT_RESIZE = "resize" + EVENT_KEY$5;
4259   var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY$5;
4260   var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY$5;
4261   var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY$5;
4262   var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY$5;
4263   var EVENT_CLICK_DATA_API$5 = "click" + EVENT_KEY$5 + DATA_API_KEY$5;
4264   var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';
4265   var CLASS_NAME_BACKDROP = 'modal-backdrop';
4266   var CLASS_NAME_OPEN = 'modal-open';
4267   var CLASS_NAME_FADE = 'fade';
4268   var CLASS_NAME_SHOW$2 = 'show';
4269   var CLASS_NAME_STATIC = 'modal-static';
4270   var SELECTOR_DIALOG = '.modal-dialog';
4271   var SELECTOR_MODAL_BODY = '.modal-body';
4272   var SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="modal"]';
4273   var SELECTOR_DATA_DISMISS = '[data-bs-dismiss="modal"]';
4274   var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
4275   var SELECTOR_STICKY_CONTENT = '.sticky-top';
4276   /**

4277    * ------------------------------------------------------------------------

4278    * Class Definition

4279    * ------------------------------------------------------------------------

4280    */
4281 
4282   var Modal = /*#__PURE__*/function (_BaseComponent) {
4283     _inheritsLoose(Modal, _BaseComponent);
4284 
4285     function Modal(element, config) {
4286       var _this;
4287 
4288       _this = _BaseComponent.call(this, element) || this;
4289       _this._config = _this._getConfig(config);
4290       _this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, element);
4291       _this._backdrop = null;
4292       _this._isShown = false;
4293       _this._isBodyOverflowing = false;
4294       _this._ignoreBackdropClick = false;
4295       _this._isTransitioning = false;
4296       _this._scrollbarWidth = 0;
4297       return _this;
4298     } // Getters

4299 
4300 
4301     var _proto = Modal.prototype;
4302 
4303     // Public

4304     _proto.toggle = function toggle(relatedTarget) {
4305       return this._isShown ? this.hide() : this.show(relatedTarget);
4306     };
4307 
4308     _proto.show = function show(relatedTarget) {
4309       var _this2 = this;
4310 
4311       if (this._isShown || this._isTransitioning) {
4312         return;
4313       }
4314 
4315       if (this._element.classList.contains(CLASS_NAME_FADE)) {
4316         this._isTransitioning = true;
4317       }
4318 
4319       var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$2, {
4320         relatedTarget: relatedTarget
4321       });
4322 
4323       if (this._isShown || showEvent.defaultPrevented) {
4324         return;
4325       }
4326 
4327       this._isShown = true;
4328 
4329       this._checkScrollbar();
4330 
4331       this._setScrollbar();
4332 
4333       this._adjustDialog();
4334 
4335       this._setEscapeEvent();
4336 
4337       this._setResizeEvent();
4338 
4339       EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) {
4340         return _this2.hide(event);
4341       });
4342       EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, function () {
4343         EventHandler.one(_this2._element, EVENT_MOUSEUP_DISMISS, function (event) {
4344           if (event.target === _this2._element) {
4345             _this2._ignoreBackdropClick = true;
4346           }
4347         });
4348       });
4349 
4350       this._showBackdrop(function () {
4351         return _this2._showElement(relatedTarget);
4352       });
4353     };
4354 
4355     _proto.hide = function hide(event) {
4356       var _this3 = this;
4357 
4358       if (event) {
4359         event.preventDefault();
4360       }
4361 
4362       if (!this._isShown || this._isTransitioning) {
4363         return;
4364       }
4365 
4366       var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$2);
4367 
4368       if (hideEvent.defaultPrevented) {
4369         return;
4370       }
4371 
4372       this._isShown = false;
4373 
4374       var transition = this._element.classList.contains(CLASS_NAME_FADE);
4375 
4376       if (transition) {
4377         this._isTransitioning = true;
4378       }
4379 
4380       this._setEscapeEvent();
4381 
4382       this._setResizeEvent();
4383 
4384       EventHandler.off(document, EVENT_FOCUSIN);
4385 
4386       this._element.classList.remove(CLASS_NAME_SHOW$2);
4387 
4388       EventHandler.off(this._element, EVENT_CLICK_DISMISS);
4389       EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS);
4390 
4391       if (transition) {
4392         var transitionDuration = getTransitionDurationFromElement(this._element);
4393         EventHandler.one(this._element, TRANSITION_END, function (event) {
4394           return _this3._hideModal(event);
4395         });
4396         emulateTransitionEnd(this._element, transitionDuration);
4397       } else {
4398         this._hideModal();
4399       }
4400     };
4401 
4402     _proto.dispose = function dispose() {
4403       [window, this._element, this._dialog].forEach(function (htmlElement) {
4404         return EventHandler.off(htmlElement, EVENT_KEY$5);
4405       });
4406 
4407       _BaseComponent.prototype.dispose.call(this);
4408       /**

4409        * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`

4410        * Do not move `document` in `htmlElements` array

4411        * It will remove `EVENT_CLICK_DATA_API` event that should remain

4412        */
4413 
4414 
4415       EventHandler.off(document, EVENT_FOCUSIN);
4416       this._config = null;
4417       this._dialog = null;
4418       this._backdrop = null;
4419       this._isShown = null;
4420       this._isBodyOverflowing = null;
4421       this._ignoreBackdropClick = null;
4422       this._isTransitioning = null;
4423       this._scrollbarWidth = null;
4424     };
4425 
4426     _proto.handleUpdate = function handleUpdate() {
4427       this._adjustDialog();
4428     } // Private

4429     ;
4430 
4431     _proto._getConfig = function _getConfig(config) {
4432       config = _extends({}, Default$3, config);
4433       typeCheckConfig(NAME$5, config, DefaultType$3);
4434       return config;
4435     };
4436 
4437     _proto._showElement = function _showElement(relatedTarget) {
4438       var _this4 = this;
4439 
4440       var transition = this._element.classList.contains(CLASS_NAME_FADE);
4441 
4442       var modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);
4443 
4444       if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
4445         // Don't move modal's DOM position

4446         document.body.appendChild(this._element);
4447       }
4448 
4449       this._element.style.display = 'block';
4450 
4451       this._element.removeAttribute('aria-hidden');
4452 
4453       this._element.setAttribute('aria-modal', true);
4454 
4455       this._element.setAttribute('role', 'dialog');
4456 
4457       this._element.scrollTop = 0;
4458 
4459       if (modalBody) {
4460         modalBody.scrollTop = 0;
4461       }
4462 
4463       if (transition) {
4464         reflow(this._element);
4465       }
4466 
4467       this._element.classList.add(CLASS_NAME_SHOW$2);
4468 
4469       if (this._config.focus) {
4470         this._enforceFocus();
4471       }
4472 
4473       var transitionComplete = function transitionComplete() {
4474         if (_this4._config.focus) {
4475           _this4._element.focus();
4476         }
4477 
4478         _this4._isTransitioning = false;
4479         EventHandler.trigger(_this4._element, EVENT_SHOWN$2, {
4480           relatedTarget: relatedTarget
4481         });
4482       };
4483 
4484       if (transition) {
4485         var transitionDuration = getTransitionDurationFromElement(this._dialog);
4486         EventHandler.one(this._dialog, TRANSITION_END, transitionComplete);
4487         emulateTransitionEnd(this._dialog, transitionDuration);
4488       } else {
4489         transitionComplete();
4490       }
4491     };
4492 
4493     _proto._enforceFocus = function _enforceFocus() {
4494       var _this5 = this;
4495 
4496       EventHandler.off(document, EVENT_FOCUSIN); // guard against infinite focus loop

4497 
4498       EventHandler.on(document, EVENT_FOCUSIN, function (event) {
4499         if (document !== event.target && _this5._element !== event.target && !_this5._element.contains(event.target)) {
4500           _this5._element.focus();
4501         }
4502       });
4503     };
4504 
4505     _proto._setEscapeEvent = function _setEscapeEvent() {
4506       var _this6 = this;
4507 
4508       if (this._isShown) {
4509         EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, function (event) {
4510           if (_this6._config.keyboard && event.key === ESCAPE_KEY$1) {
4511             event.preventDefault();
4512 
4513             _this6.hide();
4514           } else if (!_this6._config.keyboard && event.key === ESCAPE_KEY$1) {
4515             _this6._triggerBackdropTransition();
4516           }
4517         });
4518       } else {
4519         EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS);
4520       }
4521     };
4522 
4523     _proto._setResizeEvent = function _setResizeEvent() {
4524       var _this7 = this;
4525 
4526       if (this._isShown) {
4527         EventHandler.on(window, EVENT_RESIZE, function () {
4528           return _this7._adjustDialog();
4529         });
4530       } else {
4531         EventHandler.off(window, EVENT_RESIZE);
4532       }
4533     };
4534 
4535     _proto._hideModal = function _hideModal() {
4536       var _this8 = this;
4537 
4538       this._element.style.display = 'none';
4539 
4540       this._element.setAttribute('aria-hidden', true);
4541 
4542       this._element.removeAttribute('aria-modal');
4543 
4544       this._element.removeAttribute('role');
4545 
4546       this._isTransitioning = false;
4547 
4548       this._showBackdrop(function () {
4549         document.body.classList.remove(CLASS_NAME_OPEN);
4550 
4551         _this8._resetAdjustments();
4552 
4553         _this8._resetScrollbar();
4554 
4555         EventHandler.trigger(_this8._element, EVENT_HIDDEN$2);
4556       });
4557     };
4558 
4559     _proto._removeBackdrop = function _removeBackdrop() {
4560       this._backdrop.parentNode.removeChild(this._backdrop);
4561 
4562       this._backdrop = null;
4563     };
4564 
4565     _proto._showBackdrop = function _showBackdrop(callback) {
4566       var _this9 = this;
4567 
4568       var animate = this._element.classList.contains(CLASS_NAME_FADE) ? CLASS_NAME_FADE : '';
4569 
4570       if (this._isShown && this._config.backdrop) {
4571         this._backdrop = document.createElement('div');
4572         this._backdrop.className = CLASS_NAME_BACKDROP;
4573 
4574         if (animate) {
4575           this._backdrop.classList.add(animate);
4576         }
4577 
4578         document.body.appendChild(this._backdrop);
4579         EventHandler.on(this._element, EVENT_CLICK_DISMISS, function (event) {
4580           if (_this9._ignoreBackdropClick) {
4581             _this9._ignoreBackdropClick = false;
4582             return;
4583           }
4584 
4585           if (event.target !== event.currentTarget) {
4586             return;
4587           }
4588 
4589           if (_this9._config.backdrop === 'static') {
4590             _this9._triggerBackdropTransition();
4591           } else {
4592             _this9.hide();
4593           }
4594         });
4595 
4596         if (animate) {
4597           reflow(this._backdrop);
4598         }
4599 
4600         this._backdrop.classList.add(CLASS_NAME_SHOW$2);
4601 
4602         if (!animate) {
4603           callback();
4604           return;
4605         }
4606 
4607         var backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop);
4608         EventHandler.one(this._backdrop, TRANSITION_END, callback);
4609         emulateTransitionEnd(this._backdrop, backdropTransitionDuration);
4610       } else if (!this._isShown && this._backdrop) {
4611         this._backdrop.classList.remove(CLASS_NAME_SHOW$2);
4612 
4613         var callbackRemove = function callbackRemove() {
4614           _this9._removeBackdrop();
4615 
4616           callback();
4617         };
4618 
4619         if (this._element.classList.contains(CLASS_NAME_FADE)) {
4620           var _backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop);
4621 
4622           EventHandler.one(this._backdrop, TRANSITION_END, callbackRemove);
4623           emulateTransitionEnd(this._backdrop, _backdropTransitionDuration);
4624         } else {
4625           callbackRemove();
4626         }
4627       } else {
4628         callback();
4629       }
4630     };
4631 
4632     _proto._triggerBackdropTransition = function _triggerBackdropTransition() {
4633       var _this10 = this;
4634 
4635       var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
4636 
4637       if (hideEvent.defaultPrevented) {
4638         return;
4639       }
4640 
4641       var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
4642 
4643       if (!isModalOverflowing) {
4644         this._element.style.overflowY = 'hidden';
4645       }
4646 
4647       this._element.classList.add(CLASS_NAME_STATIC);
4648 
4649       var modalTransitionDuration = getTransitionDurationFromElement(this._dialog);
4650       EventHandler.off(this._element, TRANSITION_END);
4651       EventHandler.one(this._element, TRANSITION_END, function () {
4652         _this10._element.classList.remove(CLASS_NAME_STATIC);
4653 
4654         if (!isModalOverflowing) {
4655           EventHandler.one(_this10._element, TRANSITION_END, function () {
4656             _this10._element.style.overflowY = '';
4657           });
4658           emulateTransitionEnd(_this10._element, modalTransitionDuration);
4659         }
4660       });
4661       emulateTransitionEnd(this._element, modalTransitionDuration);
4662 
4663       this._element.focus();
4664     } // ----------------------------------------------------------------------

4665     // the following methods are used to handle overflowing modals

4666     // ----------------------------------------------------------------------

4667     ;
4668 
4669     _proto._adjustDialog = function _adjustDialog() {
4670       var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
4671 
4672       if (!this._isBodyOverflowing && isModalOverflowing && !isRTL || this._isBodyOverflowing && !isModalOverflowing && isRTL) {
4673         this._element.style.paddingLeft = this._scrollbarWidth + "px";
4674       }
4675 
4676       if (this._isBodyOverflowing && !isModalOverflowing && !isRTL || !this._isBodyOverflowing && isModalOverflowing && isRTL) {
4677         this._element.style.paddingRight = this._scrollbarWidth + "px";
4678       }
4679     };
4680 
4681     _proto._resetAdjustments = function _resetAdjustments() {
4682       this._element.style.paddingLeft = '';
4683       this._element.style.paddingRight = '';
4684     };
4685 
4686     _proto._checkScrollbar = function _checkScrollbar() {
4687       var rect = document.body.getBoundingClientRect();
4688       this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;
4689       this._scrollbarWidth = this._getScrollbarWidth();
4690     };
4691 
4692     _proto._setScrollbar = function _setScrollbar() {
4693       var _this11 = this;
4694 
4695       if (this._isBodyOverflowing) {
4696         // Note: DOMNode.style.paddingRight returns the actual value or '' if not set

4697         //   while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set

4698         // Adjust fixed content padding

4699         SelectorEngine.find(SELECTOR_FIXED_CONTENT).forEach(function (element) {
4700           var actualPadding = element.style.paddingRight;
4701           var calculatedPadding = window.getComputedStyle(element)['padding-right'];
4702           Manipulator.setDataAttribute(element, 'padding-right', actualPadding);
4703           element.style.paddingRight = Number.parseFloat(calculatedPadding) + _this11._scrollbarWidth + "px";
4704         }); // Adjust sticky content margin

4705 
4706         SelectorEngine.find(SELECTOR_STICKY_CONTENT).forEach(function (element) {
4707           var actualMargin = element.style.marginRight;
4708           var calculatedMargin = window.getComputedStyle(element)['margin-right'];
4709           Manipulator.setDataAttribute(element, 'margin-right', actualMargin);
4710           element.style.marginRight = Number.parseFloat(calculatedMargin) - _this11._scrollbarWidth + "px";
4711         }); // Adjust body padding

4712 
4713         var actualPadding = document.body.style.paddingRight;
4714         var calculatedPadding = window.getComputedStyle(document.body)['padding-right'];
4715         Manipulator.setDataAttribute(document.body, 'padding-right', actualPadding);
4716         document.body.style.paddingRight = Number.parseFloat(calculatedPadding) + this._scrollbarWidth + "px";
4717       }
4718 
4719       document.body.classList.add(CLASS_NAME_OPEN);
4720     };
4721 
4722     _proto._resetScrollbar = function _resetScrollbar() {
4723       // Restore fixed content padding

4724       SelectorEngine.find(SELECTOR_FIXED_CONTENT).forEach(function (element) {
4725         var padding = Manipulator.getDataAttribute(element, 'padding-right');
4726 
4727         if (typeof padding !== 'undefined') {
4728           Manipulator.removeDataAttribute(element, 'padding-right');
4729           element.style.paddingRight = padding;
4730         }
4731       }); // Restore sticky content and navbar-toggler margin

4732 
4733       SelectorEngine.find("" + SELECTOR_STICKY_CONTENT).forEach(function (element) {
4734         var margin = Manipulator.getDataAttribute(element, 'margin-right');
4735 
4736         if (typeof margin !== 'undefined') {
4737           Manipulator.removeDataAttribute(element, 'margin-right');
4738           element.style.marginRight = margin;
4739         }
4740       }); // Restore body padding

4741 
4742       var padding = Manipulator.getDataAttribute(document.body, 'padding-right');
4743 
4744       if (typeof padding === 'undefined') {
4745         document.body.style.paddingRight = '';
4746       } else {
4747         Manipulator.removeDataAttribute(document.body, 'padding-right');
4748         document.body.style.paddingRight = padding;
4749       }
4750     };
4751 
4752     _proto._getScrollbarWidth = function _getScrollbarWidth() {
4753       // thx d.walsh

4754       var scrollDiv = document.createElement('div');
4755       scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;
4756       document.body.appendChild(scrollDiv);
4757       var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
4758       document.body.removeChild(scrollDiv);
4759       return scrollbarWidth;
4760     } // Static

4761     ;
4762 
4763     Modal.jQueryInterface = function jQueryInterface(config, relatedTarget) {
4764       return this.each(function () {
4765         var data = Data.getData(this, DATA_KEY$5);
4766 
4767         var _config = _extends({}, Default$3, Manipulator.getDataAttributes(this), typeof config === 'object' && config ? config : {});
4768 
4769         if (!data) {
4770           data = new Modal(this, _config);
4771         }
4772 
4773         if (typeof config === 'string') {
4774           if (typeof data[config] === 'undefined') {
4775             throw new TypeError("No method named \"" + config + "\"");
4776           }
4777 
4778           data[config](relatedTarget);
4779         }
4780       });
4781     };
4782 
4783     _createClass(Modal, null, [{
4784       key: "Default",
4785       get: function get() {
4786         return Default$3;
4787       }
4788     }, {
4789       key: "DATA_KEY",
4790       get: function get() {
4791         return DATA_KEY$5;
4792       }
4793     }]);
4794 
4795     return Modal;
4796   }(BaseComponent);
4797   /**

4798    * ------------------------------------------------------------------------

4799    * Data Api implementation

4800    * ------------------------------------------------------------------------

4801    */
4802 
4803 
4804   EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$3, function (event) {
4805     var _this12 = this;
4806 
4807     var target = getElementFromSelector(this);
4808 
4809     if (this.tagName === 'A' || this.tagName === 'AREA') {
4810       event.preventDefault();
4811     }
4812 
4813     EventHandler.one(target, EVENT_SHOW$2, function (showEvent) {
4814       if (showEvent.defaultPrevented) {
4815         // only register focus restorer if modal will actually get shown

4816         return;
4817       }
4818 
4819       EventHandler.one(target, EVENT_HIDDEN$2, function () {
4820         if (isVisible(_this12)) {
4821           _this12.focus();
4822         }
4823       });
4824     });
4825     var data = Data.getData(target, DATA_KEY$5);
4826 
4827     if (!data) {
4828       var config = _extends({}, Manipulator.getDataAttributes(target), Manipulator.getDataAttributes(this));
4829 
4830       data = new Modal(target, config);
4831     }
4832 
4833     data.show(this);
4834   });
4835   /**

4836    * ------------------------------------------------------------------------

4837    * jQuery

4838    * ------------------------------------------------------------------------

4839    * add .Modal to jQuery only if jQuery is present

4840    */
4841 
4842   onDOMContentLoaded(function () {
4843     var $ = getjQuery();
4844     /* istanbul ignore if */
4845 
4846     if ($) {
4847       var JQUERY_NO_CONFLICT = $.fn[NAME$5];
4848       $.fn[NAME$5] = Modal.jQueryInterface;
4849       $.fn[NAME$5].Constructor = Modal;
4850 
4851       $.fn[NAME$5].noConflict = function () {
4852         $.fn[NAME$5] = JQUERY_NO_CONFLICT;
4853         return Modal.jQueryInterface;
4854       };
4855     }
4856   });
4857 
4858   /**

4859    * --------------------------------------------------------------------------

4860    * Bootstrap (v5.0.0-beta1): util/sanitizer.js

4861    * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)

4862    * --------------------------------------------------------------------------

4863    */
4864   var uriAttrs = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);
4865   var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
4866   /**

4867    * A pattern that recognizes a commonly useful subset of URLs that are safe.

4868    *

4869    * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts

4870    */
4871 
4872   var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi;
4873   /**

4874    * A pattern that matches safe data URLs. Only matches image, video and audio types.

4875    *

4876    * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts

4877    */
4878 
4879   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;
4880 
4881   var allowedAttribute = function allowedAttribute(attr, allowedAttributeList) {
4882     var attrName = attr.nodeName.toLowerCase();
4883 
4884     if (allowedAttributeList.includes(attrName)) {
4885       if (uriAttrs.has(attrName)) {
4886         return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));
4887       }
4888 
4889       return true;
4890     }
4891 
4892     var regExp = allowedAttributeList.filter(function (attrRegex) {
4893       return attrRegex instanceof RegExp;
4894     }); // Check if a regular expression validates the attribute.

4895 
4896     for (var i = 0, len = regExp.length; i < len; i++) {
4897       if (attrName.match(regExp[i])) {
4898         return true;
4899       }
4900     }
4901 
4902     return false;
4903   };
4904 
4905   var DefaultAllowlist = {
4906     // Global attributes allowed on any supplied element below.

4907     '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
4908     a: ['target', 'href', 'title', 'rel'],
4909     area: [],
4910     b: [],
4911     br: [],
4912     col: [],
4913     code: [],
4914     div: [],
4915     em: [],
4916     hr: [],
4917     h1: [],
4918     h2: [],
4919     h3: [],
4920     h4: [],
4921     h5: [],
4922     h6: [],
4923     i: [],
4924     img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
4925     li: [],
4926     ol: [],
4927     p: [],
4928     pre: [],
4929     s: [],
4930     small: [],
4931     span: [],
4932     sub: [],
4933     sup: [],
4934     strong: [],
4935     u: [],
4936     ul: []
4937   };
4938   function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {
4939     var _ref;
4940 
4941     if (!unsafeHtml.length) {
4942       return unsafeHtml;
4943     }
4944 
4945     if (sanitizeFn && typeof sanitizeFn === 'function') {
4946       return sanitizeFn(unsafeHtml);
4947     }
4948 
4949     var domParser = new window.DOMParser();
4950     var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
4951     var allowlistKeys = Object.keys(allowList);
4952 
4953     var elements = (_ref = []).concat.apply(_ref, createdDocument.body.querySelectorAll('*'));
4954 
4955     var _loop = function _loop(i, len) {
4956       var _ref2;
4957 
4958       var el = elements[i];
4959       var elName = el.nodeName.toLowerCase();
4960 
4961       if (!allowlistKeys.includes(elName)) {
4962         el.parentNode.removeChild(el);
4963         return "continue";
4964       }
4965 
4966       var attributeList = (_ref2 = []).concat.apply(_ref2, el.attributes);
4967 
4968       var allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || []);
4969       attributeList.forEach(function (attr) {
4970         if (!allowedAttribute(attr, allowedAttributes)) {
4971           el.removeAttribute(attr.nodeName);
4972         }
4973       });
4974     };
4975 
4976     for (var i = 0, len = elements.length; i < len; i++) {
4977       var _ret = _loop(i);
4978 
4979       if (_ret === "continue") continue;
4980     }
4981 
4982     return createdDocument.body.innerHTML;
4983   }
4984 
4985   /**

4986    * ------------------------------------------------------------------------

4987    * Constants

4988    * ------------------------------------------------------------------------

4989    */
4990 
4991   var NAME$6 = 'tooltip';
4992   var DATA_KEY$6 = 'bs.tooltip';
4993   var EVENT_KEY$6 = "." + DATA_KEY$6;
4994   var CLASS_PREFIX = 'bs-tooltip';
4995   var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
4996   var DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);
4997   var DefaultType$4 = {
4998     animation: 'boolean',
4999     template: 'string',
5000     title: '(string|element|function)',
5001     trigger: 'string',
5002     delay: '(number|object)',
5003     html: 'boolean',
5004     selector: '(string|boolean)',
5005     placement: '(string|function)',
5006     container: '(string|element|boolean)',
5007     fallbackPlacements: '(null|array)',
5008     boundary: '(string|element)',
5009     customClass: '(string|function)',
5010     sanitize: 'boolean',
5011     sanitizeFn: '(null|function)',
5012     allowList: 'object',
5013     popperConfig: '(null|object)'
5014   };
5015   var AttachmentMap = {
5016     AUTO: 'auto',
5017     TOP: 'top',
5018     RIGHT: isRTL ? 'left' : 'right',
5019     BOTTOM: 'bottom',
5020     LEFT: isRTL ? 'right' : 'left'
5021   };
5022   var Default$4 = {
5023     animation: true,
5024     template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-arrow"></div>' + '<div class="tooltip-inner"></div>' + '</div>',
5025     trigger: 'hover focus',
5026     title: '',
5027     delay: 0,
5028     html: false,
5029     selector: false,
5030     placement: 'top',
5031     container: false,
5032     fallbackPlacements: null,
5033     boundary: 'clippingParents',
5034     customClass: '',
5035     sanitize: true,
5036     sanitizeFn: null,
5037     allowList: DefaultAllowlist,
5038     popperConfig: null
5039   };
5040   var Event$1 = {
5041     HIDE: "hide" + EVENT_KEY$6,
5042     HIDDEN: "hidden" + EVENT_KEY$6,
5043     SHOW: "show" + EVENT_KEY$6,
5044     SHOWN: "shown" + EVENT_KEY$6,
5045     INSERTED: "inserted" + EVENT_KEY$6,
5046     CLICK: "click" + EVENT_KEY$6,
5047     FOCUSIN: "focusin" + EVENT_KEY$6,
5048     FOCUSOUT: "focusout" + EVENT_KEY$6,
5049     MOUSEENTER: "mouseenter" + EVENT_KEY$6,
5050     MOUSELEAVE: "mouseleave" + EVENT_KEY$6
5051   };
5052   var CLASS_NAME_FADE$1 = 'fade';
5053   var CLASS_NAME_MODAL = 'modal';
5054   var CLASS_NAME_SHOW$3 = 'show';
5055   var HOVER_STATE_SHOW = 'show';
5056   var HOVER_STATE_OUT = 'out';
5057   var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';
5058   var TRIGGER_HOVER = 'hover';
5059   var TRIGGER_FOCUS = 'focus';
5060   var TRIGGER_CLICK = 'click';
5061   var TRIGGER_MANUAL = 'manual';
5062   /**

5063    * ------------------------------------------------------------------------

5064    * Class Definition

5065    * ------------------------------------------------------------------------

5066    */
5067 
5068   var Tooltip = /*#__PURE__*/function (_BaseComponent) {
5069     _inheritsLoose(Tooltip, _BaseComponent);
5070 
5071     function Tooltip(element, config) {
5072       var _this;
5073 
5074       if (typeof Popper === 'undefined') {
5075         throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)');
5076       }
5077 
5078       _this = _BaseComponent.call(this, element) || this; // private

5079 
5080       _this._isEnabled = true;
5081       _this._timeout = 0;
5082       _this._hoverState = '';
5083       _this._activeTrigger = {};
5084       _this._popper = null; // Protected

5085 
5086       _this.config = _this._getConfig(config);
5087       _this.tip = null;
5088 
5089       _this._setListeners();
5090 
5091       return _this;
5092     } // Getters

5093 
5094 
5095     var _proto = Tooltip.prototype;
5096 
5097     // Public

5098     _proto.enable = function enable() {
5099       this._isEnabled = true;
5100     };
5101 
5102     _proto.disable = function disable() {
5103       this._isEnabled = false;
5104     };
5105 
5106     _proto.toggleEnabled = function toggleEnabled() {
5107       this._isEnabled = !this._isEnabled;
5108     };
5109 
5110     _proto.toggle = function toggle(event) {
5111       if (!this._isEnabled) {
5112         return;
5113       }
5114 
5115       if (event) {
5116         var dataKey = this.constructor.DATA_KEY;
5117         var context = Data.getData(event.delegateTarget, dataKey);
5118 
5119         if (!context) {
5120           context = new this.constructor(event.delegateTarget, this._getDelegateConfig());
5121           Data.setData(event.delegateTarget, dataKey, context);
5122         }
5123 
5124         context._activeTrigger.click = !context._activeTrigger.click;
5125 
5126         if (context._isWithActiveTrigger()) {
5127           context._enter(null, context);
5128         } else {
5129           context._leave(null, context);
5130         }
5131       } else {
5132         if (this.getTipElement().classList.contains(CLASS_NAME_SHOW$3)) {
5133           this._leave(null, this);
5134 
5135           return;
5136         }
5137 
5138         this._enter(null, this);
5139       }
5140     };
5141 
5142     _proto.dispose = function dispose() {
5143       clearTimeout(this._timeout);
5144       EventHandler.off(this._element, this.constructor.EVENT_KEY);
5145       EventHandler.off(this._element.closest("." + CLASS_NAME_MODAL), 'hide.bs.modal', this._hideModalHandler);
5146 
5147       if (this.tip) {
5148         this.tip.parentNode.removeChild(this.tip);
5149       }
5150 
5151       this._isEnabled = null;
5152       this._timeout = null;
5153       this._hoverState = null;
5154       this._activeTrigger = null;
5155 
5156       if (this._popper) {
5157         this._popper.destroy();
5158       }
5159 
5160       this._popper = null;
5161       this.config = null;
5162       this.tip = null;
5163 
5164       _BaseComponent.prototype.dispose.call(this);
5165     };
5166 
5167     _proto.show = function show() {
5168       var _this2 = this;
5169 
5170       if (this._element.style.display === 'none') {
5171         throw new Error('Please use show on visible elements');
5172       }
5173 
5174       if (this.isWithContent() && this._isEnabled) {
5175         var showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW);
5176         var shadowRoot = findShadowRoot(this._element);
5177         var isInTheDom = shadowRoot === null ? this._element.ownerDocument.documentElement.contains(this._element) : shadowRoot.contains(this._element);
5178 
5179         if (showEvent.defaultPrevented || !isInTheDom) {
5180           return;
5181         }
5182 
5183         var tip = this.getTipElement();
5184         var tipId = getUID(this.constructor.NAME);
5185         tip.setAttribute('id', tipId);
5186 
5187         this._element.setAttribute('aria-describedby', tipId);
5188 
5189         this.setContent();
5190 
5191         if (this.config.animation) {
5192           tip.classList.add(CLASS_NAME_FADE$1);
5193         }
5194 
5195         var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this._element) : this.config.placement;
5196 
5197         var attachment = this._getAttachment(placement);
5198 
5199         this._addAttachmentClass(attachment);
5200 
5201         var container = this._getContainer();
5202 
5203         Data.setData(tip, this.constructor.DATA_KEY, this);
5204 
5205         if (!this._element.ownerDocument.documentElement.contains(this.tip)) {
5206           container.appendChild(tip);
5207         }
5208 
5209         EventHandler.trigger(this._element, this.constructor.Event.INSERTED);
5210         this._popper = createPopper$2(this._element, tip, this._getPopperConfig(attachment));
5211         tip.classList.add(CLASS_NAME_SHOW$3);
5212         var customClass = typeof this.config.customClass === 'function' ? this.config.customClass() : this.config.customClass;
5213 
5214         if (customClass) {
5215           var _tip$classList;
5216 
5217           (_tip$classList = tip.classList).add.apply(_tip$classList, customClass.split(' '));
5218         } // If this is a touch-enabled device we add extra

5219         // empty mouseover listeners to the body's immediate children;

5220         // only needed because of broken event delegation on iOS

5221         // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html

5222 
5223 
5224         if ('ontouchstart' in document.documentElement) {
5225           var _ref;
5226 
5227           (_ref = []).concat.apply(_ref, document.body.children).forEach(function (element) {
5228             EventHandler.on(element, 'mouseover', noop());
5229           });
5230         }
5231 
5232         var complete = function complete() {
5233           var prevHoverState = _this2._hoverState;
5234           _this2._hoverState = null;
5235           EventHandler.trigger(_this2._element, _this2.constructor.Event.SHOWN);
5236 
5237           if (prevHoverState === HOVER_STATE_OUT) {
5238             _this2._leave(null, _this2);
5239           }
5240         };
5241 
5242         if (this.tip.classList.contains(CLASS_NAME_FADE$1)) {
5243           var transitionDuration = getTransitionDurationFromElement(this.tip);
5244           EventHandler.one(this.tip, TRANSITION_END, complete);
5245           emulateTransitionEnd(this.tip, transitionDuration);
5246         } else {
5247           complete();
5248         }
5249       }
5250     };
5251 
5252     _proto.hide = function hide() {
5253       var _this3 = this;
5254 
5255       if (!this._popper) {
5256         return;
5257       }
5258 
5259       var tip = this.getTipElement();
5260 
5261       var complete = function complete() {
5262         if (_this3._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {
5263           tip.parentNode.removeChild(tip);
5264         }
5265 
5266         _this3._cleanTipClass();
5267 
5268         _this3._element.removeAttribute('aria-describedby');
5269 
5270         EventHandler.trigger(_this3._element, _this3.constructor.Event.HIDDEN);
5271 
5272         if (_this3._popper) {
5273           _this3._popper.destroy();
5274 
5275           _this3._popper = null;
5276         }
5277       };
5278 
5279       var hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE);
5280 
5281       if (hideEvent.defaultPrevented) {
5282         return;
5283       }
5284 
5285       tip.classList.remove(CLASS_NAME_SHOW$3); // If this is a touch-enabled device we remove the extra

5286       // empty mouseover listeners we added for iOS support

5287 
5288       if ('ontouchstart' in document.documentElement) {
5289         var _ref2;
5290 
5291         (_ref2 = []).concat.apply(_ref2, document.body.children).forEach(function (element) {
5292           return EventHandler.off(element, 'mouseover', noop);
5293         });
5294       }
5295 
5296       this._activeTrigger[TRIGGER_CLICK] = false;
5297       this._activeTrigger[TRIGGER_FOCUS] = false;
5298       this._activeTrigger[TRIGGER_HOVER] = false;
5299 
5300       if (this.tip.classList.contains(CLASS_NAME_FADE$1)) {
5301         var transitionDuration = getTransitionDurationFromElement(tip);
5302         EventHandler.one(tip, TRANSITION_END, complete);
5303         emulateTransitionEnd(tip, transitionDuration);
5304       } else {
5305         complete();
5306       }
5307 
5308       this._hoverState = '';
5309     };
5310 
5311     _proto.update = function update() {
5312       if (this._popper !== null) {
5313         this._popper.update();
5314       }
5315     } // Protected

5316     ;
5317 
5318     _proto.isWithContent = function isWithContent() {
5319       return Boolean(this.getTitle());
5320     };
5321 
5322     _proto.getTipElement = function getTipElement() {
5323       if (this.tip) {
5324         return this.tip;
5325       }
5326 
5327       var element = document.createElement('div');
5328       element.innerHTML = this.config.template;
5329       this.tip = element.children[0];
5330       return this.tip;
5331     };
5332 
5333     _proto.setContent = function setContent() {
5334       var tip = this.getTipElement();
5335       this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle());
5336       tip.classList.remove(CLASS_NAME_FADE$1, CLASS_NAME_SHOW$3);
5337     };
5338 
5339     _proto.setElementContent = function setElementContent(element, content) {
5340       if (element === null) {
5341         return;
5342       }
5343 
5344       if (typeof content === 'object' && isElement(content)) {
5345         if (content.jquery) {
5346           content = content[0];
5347         } // content is a DOM node or a jQuery

5348 
5349 
5350         if (this.config.html) {
5351           if (content.parentNode !== element) {
5352             element.innerHTML = '';
5353             element.appendChild(content);
5354           }
5355         } else {
5356           element.textContent = content.textContent;
5357         }
5358 
5359         return;
5360       }
5361 
5362       if (this.config.html) {
5363         if (this.config.sanitize) {
5364           content = sanitizeHtml(content, this.config.allowList, this.config.sanitizeFn);
5365         }
5366 
5367         element.innerHTML = content;
5368       } else {
5369         element.textContent = content;
5370       }
5371     };
5372 
5373     _proto.getTitle = function getTitle() {
5374       var title = this._element.getAttribute('data-bs-original-title');
5375 
5376       if (!title) {
5377         title = typeof this.config.title === 'function' ? this.config.title.call(this._element) : this.config.title;
5378       }
5379 
5380       return title;
5381     };
5382 
5383     _proto.updateAttachment = function updateAttachment(attachment) {
5384       if (attachment === 'right') {
5385         return 'end';
5386       }
5387 
5388       if (attachment === 'left') {
5389         return 'start';
5390       }
5391 
5392       return attachment;
5393     } // Private

5394     ;
5395 
5396     _proto._getPopperConfig = function _getPopperConfig(attachment) {
5397       var _this4 = this;
5398 
5399       var flipModifier = {
5400         name: 'flip',
5401         options: {
5402           altBoundary: true
5403         }
5404       };
5405 
5406       if (this.config.fallbackPlacements) {
5407         flipModifier.options.fallbackPlacements = this.config.fallbackPlacements;
5408       }
5409 
5410       var defaultBsConfig = {
5411         placement: attachment,
5412         modifiers: [flipModifier, {
5413           name: 'preventOverflow',
5414           options: {
5415             rootBoundary: this.config.boundary
5416           }
5417         }, {
5418           name: 'arrow',
5419           options: {
5420             element: "." + this.constructor.NAME + "-arrow"
5421           }
5422         }, {
5423           name: 'onChange',
5424           enabled: true,
5425           phase: 'afterWrite',
5426           fn: function fn(data) {
5427             return _this4._handlePopperPlacementChange(data);
5428           }
5429         }],
5430         onFirstUpdate: function onFirstUpdate(data) {
5431           if (data.options.placement !== data.placement) {
5432             _this4._handlePopperPlacementChange(data);
5433           }
5434         }
5435       };
5436       return _extends({}, defaultBsConfig, this.config.popperConfig);
5437     };
5438 
5439     _proto._addAttachmentClass = function _addAttachmentClass(attachment) {
5440       this.getTipElement().classList.add(CLASS_PREFIX + "-" + this.updateAttachment(attachment));
5441     };
5442 
5443     _proto._getContainer = function _getContainer() {
5444       if (this.config.container === false) {
5445         return document.body;
5446       }
5447 
5448       if (isElement(this.config.container)) {
5449         return this.config.container;
5450       }
5451 
5452       return SelectorEngine.findOne(this.config.container);
5453     };
5454 
5455     _proto._getAttachment = function _getAttachment(placement) {
5456       return AttachmentMap[placement.toUpperCase()];
5457     };
5458 
5459     _proto._setListeners = function _setListeners() {
5460       var _this5 = this;
5461 
5462       var triggers = this.config.trigger.split(' ');
5463       triggers.forEach(function (trigger) {
5464         if (trigger === 'click') {
5465           EventHandler.on(_this5._element, _this5.constructor.Event.CLICK, _this5.config.selector, function (event) {
5466             return _this5.toggle(event);
5467           });
5468         } else if (trigger !== TRIGGER_MANUAL) {
5469           var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;
5470           var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;
5471           EventHandler.on(_this5._element, eventIn, _this5.config.selector, function (event) {
5472             return _this5._enter(event);
5473           });
5474           EventHandler.on(_this5._element, eventOut, _this5.config.selector, function (event) {
5475             return _this5._leave(event);
5476           });
5477         }
5478       });
5479 
5480       this._hideModalHandler = function () {
5481         if (_this5._element) {
5482           _this5.hide();
5483         }
5484       };
5485 
5486       EventHandler.on(this._element.closest("." + CLASS_NAME_MODAL), 'hide.bs.modal', this._hideModalHandler);
5487 
5488       if (this.config.selector) {
5489         this.config = _extends({}, this.config, {
5490           trigger: 'manual',
5491           selector: ''
5492         });
5493       } else {
5494         this._fixTitle();
5495       }
5496     };
5497 
5498     _proto._fixTitle = function _fixTitle() {
5499       var title = this._element.getAttribute('title');
5500 
5501       var originalTitleType = typeof this._element.getAttribute('data-bs-original-title');
5502 
5503       if (title || originalTitleType !== 'string') {
5504         this._element.setAttribute('data-bs-original-title', title || '');
5505 
5506         if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {
5507           this._element.setAttribute('aria-label', title);
5508         }
5509 
5510         this._element.setAttribute('title', '');
5511       }
5512     };
5513 
5514     _proto._enter = function _enter(event, context) {
5515       var dataKey = this.constructor.DATA_KEY;
5516       context = context || Data.getData(event.delegateTarget, dataKey);
5517 
5518       if (!context) {
5519         context = new this.constructor(event.delegateTarget, this._getDelegateConfig());
5520         Data.setData(event.delegateTarget, dataKey, context);
5521       }
5522 
5523       if (event) {
5524         context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
5525       }
5526 
5527       if (context.getTipElement().classList.contains(CLASS_NAME_SHOW$3) || context._hoverState === HOVER_STATE_SHOW) {
5528         context._hoverState = HOVER_STATE_SHOW;
5529         return;
5530       }
5531 
5532       clearTimeout(context._timeout);
5533       context._hoverState = HOVER_STATE_SHOW;
5534 
5535       if (!context.config.delay || !context.config.delay.show) {
5536         context.show();
5537         return;
5538       }
5539 
5540       context._timeout = setTimeout(function () {
5541         if (context._hoverState === HOVER_STATE_SHOW) {
5542           context.show();
5543         }
5544       }, context.config.delay.show);
5545     };
5546 
5547     _proto._leave = function _leave(event, context) {
5548       var dataKey = this.constructor.DATA_KEY;
5549       context = context || Data.getData(event.delegateTarget, dataKey);
5550 
5551       if (!context) {
5552         context = new this.constructor(event.delegateTarget, this._getDelegateConfig());
5553         Data.setData(event.delegateTarget, dataKey, context);
5554       }
5555 
5556       if (event) {
5557         context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;
5558       }
5559 
5560       if (context._isWithActiveTrigger()) {
5561         return;
5562       }
5563 
5564       clearTimeout(context._timeout);
5565       context._hoverState = HOVER_STATE_OUT;
5566 
5567       if (!context.config.delay || !context.config.delay.hide) {
5568         context.hide();
5569         return;
5570       }
5571 
5572       context._timeout = setTimeout(function () {
5573         if (context._hoverState === HOVER_STATE_OUT) {
5574           context.hide();
5575         }
5576       }, context.config.delay.hide);
5577     };
5578 
5579     _proto._isWithActiveTrigger = function _isWithActiveTrigger() {
5580       for (var trigger in this._activeTrigger) {
5581         if (this._activeTrigger[trigger]) {
5582           return true;
5583         }
5584       }
5585 
5586       return false;
5587     };
5588 
5589     _proto._getConfig = function _getConfig(config) {
5590       var dataAttributes = Manipulator.getDataAttributes(this._element);
5591       Object.keys(dataAttributes).forEach(function (dataAttr) {
5592         if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {
5593           delete dataAttributes[dataAttr];
5594         }
5595       });
5596 
5597       if (config && typeof config.container === 'object' && config.container.jquery) {
5598         config.container = config.container[0];
5599       }
5600 
5601       config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});
5602 
5603       if (typeof config.delay === 'number') {
5604         config.delay = {
5605           show: config.delay,
5606           hide: config.delay
5607         };
5608       }
5609 
5610       if (typeof config.title === 'number') {
5611         config.title = config.title.toString();
5612       }
5613 
5614       if (typeof config.content === 'number') {
5615         config.content = config.content.toString();
5616       }
5617 
5618       typeCheckConfig(NAME$6, config, this.constructor.DefaultType);
5619 
5620       if (config.sanitize) {
5621         config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn);
5622       }
5623 
5624       return config;
5625     };
5626 
5627     _proto._getDelegateConfig = function _getDelegateConfig() {
5628       var config = {};
5629 
5630       if (this.config) {
5631         for (var key in this.config) {
5632           if (this.constructor.Default[key] !== this.config[key]) {
5633             config[key] = this.config[key];
5634           }
5635         }
5636       }
5637 
5638       return config;
5639     };
5640 
5641     _proto._cleanTipClass = function _cleanTipClass() {
5642       var tip = this.getTipElement();
5643       var tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX);
5644 
5645       if (tabClass !== null && tabClass.length > 0) {
5646         tabClass.map(function (token) {
5647           return token.trim();
5648         }).forEach(function (tClass) {
5649           return tip.classList.remove(tClass);
5650         });
5651       }
5652     };
5653 
5654     _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {
5655       var state = popperData.state;
5656 
5657       if (!state) {
5658         return;
5659       }
5660 
5661       this.tip = state.elements.popper;
5662 
5663       this._cleanTipClass();
5664 
5665       this._addAttachmentClass(this._getAttachment(state.placement));
5666     } // Static

5667     ;
5668 
5669     Tooltip.jQueryInterface = function jQueryInterface(config) {
5670       return this.each(function () {
5671         var data = Data.getData(this, DATA_KEY$6);
5672 
5673         var _config = typeof config === 'object' && config;
5674 
5675         if (!data && /dispose|hide/.test(config)) {
5676           return;
5677         }
5678 
5679         if (!data) {
5680           data = new Tooltip(this, _config);
5681         }
5682 
5683         if (typeof config === 'string') {
5684           if (typeof data[config] === 'undefined') {
5685             throw new TypeError("No method named \"" + config + "\"");
5686           }
5687 
5688           data[config]();
5689         }
5690       });
5691     };
5692 
5693     _createClass(Tooltip, null, [{
5694       key: "Default",
5695       get: function get() {
5696         return Default$4;
5697       }
5698     }, {
5699       key: "NAME",
5700       get: function get() {
5701         return NAME$6;
5702       }
5703     }, {
5704       key: "DATA_KEY",
5705       get: function get() {
5706         return DATA_KEY$6;
5707       }
5708     }, {
5709       key: "Event",
5710       get: function get() {
5711         return Event$1;
5712       }
5713     }, {
5714       key: "EVENT_KEY",
5715       get: function get() {
5716         return EVENT_KEY$6;
5717       }
5718     }, {
5719       key: "DefaultType",
5720       get: function get() {
5721         return DefaultType$4;
5722       }
5723     }]);
5724 
5725     return Tooltip;
5726   }(BaseComponent);
5727   /**

5728    * ------------------------------------------------------------------------

5729    * jQuery

5730    * ------------------------------------------------------------------------

5731    * add .Tooltip to jQuery only if jQuery is present

5732    */
5733 
5734 
5735   onDOMContentLoaded(function () {
5736     var $ = getjQuery();
5737     /* istanbul ignore if */
5738 
5739     if ($) {
5740       var JQUERY_NO_CONFLICT = $.fn[NAME$6];
5741       $.fn[NAME$6] = Tooltip.jQueryInterface;
5742       $.fn[NAME$6].Constructor = Tooltip;
5743 
5744       $.fn[NAME$6].noConflict = function () {
5745         $.fn[NAME$6] = JQUERY_NO_CONFLICT;
5746         return Tooltip.jQueryInterface;
5747       };
5748     }
5749   });
5750 
5751   /**

5752    * ------------------------------------------------------------------------

5753    * Constants

5754    * ------------------------------------------------------------------------

5755    */
5756 
5757   var NAME$7 = 'popover';
5758   var DATA_KEY$7 = 'bs.popover';
5759   var EVENT_KEY$7 = "." + DATA_KEY$7;
5760   var CLASS_PREFIX$1 = 'bs-popover';
5761   var BSCLS_PREFIX_REGEX$1 = new RegExp("(^|\\s)" + CLASS_PREFIX$1 + "\\S+", 'g');
5762 
5763   var Default$5 = _extends({}, Tooltip.Default, {
5764     placement: 'right',
5765     trigger: 'click',
5766     content: '',
5767     template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div>' + '</div>'
5768   });
5769 
5770   var DefaultType$5 = _extends({}, Tooltip.DefaultType, {
5771     content: '(string|element|function)'
5772   });
5773 
5774   var Event$2 = {
5775     HIDE: "hide" + EVENT_KEY$7,
5776     HIDDEN: "hidden" + EVENT_KEY$7,
5777     SHOW: "show" + EVENT_KEY$7,
5778     SHOWN: "shown" + EVENT_KEY$7,
5779     INSERTED: "inserted" + EVENT_KEY$7,
5780     CLICK: "click" + EVENT_KEY$7,
5781     FOCUSIN: "focusin" + EVENT_KEY$7,
5782     FOCUSOUT: "focusout" + EVENT_KEY$7,
5783     MOUSEENTER: "mouseenter" + EVENT_KEY$7,
5784     MOUSELEAVE: "mouseleave" + EVENT_KEY$7
5785   };
5786   var CLASS_NAME_FADE$2 = 'fade';
5787   var CLASS_NAME_SHOW$4 = 'show';
5788   var SELECTOR_TITLE = '.popover-header';
5789   var SELECTOR_CONTENT = '.popover-body';
5790   /**

5791    * ------------------------------------------------------------------------

5792    * Class Definition

5793    * ------------------------------------------------------------------------

5794    */
5795 
5796   var Popover = /*#__PURE__*/function (_Tooltip) {
5797     _inheritsLoose(Popover, _Tooltip);
5798 
5799     function Popover() {
5800       return _Tooltip.apply(this, arguments) || this;
5801     }
5802 
5803     var _proto = Popover.prototype;
5804 
5805     // Overrides

5806     _proto.isWithContent = function isWithContent() {
5807       return this.getTitle() || this._getContent();
5808     };
5809 
5810     _proto.setContent = function setContent() {
5811       var tip = this.getTipElement(); // we use append for html objects to maintain js events

5812 
5813       this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle());
5814 
5815       var content = this._getContent();
5816 
5817       if (typeof content === 'function') {
5818         content = content.call(this._element);
5819       }
5820 
5821       this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content);
5822       tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$4);
5823     } // Private

5824     ;
5825 
5826     _proto._addAttachmentClass = function _addAttachmentClass(attachment) {
5827       this.getTipElement().classList.add(CLASS_PREFIX$1 + "-" + this.updateAttachment(attachment));
5828     };
5829 
5830     _proto._getContent = function _getContent() {
5831       return this._element.getAttribute('data-bs-content') || this.config.content;
5832     };
5833 
5834     _proto._cleanTipClass = function _cleanTipClass() {
5835       var tip = this.getTipElement();
5836       var tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX$1);
5837 
5838       if (tabClass !== null && tabClass.length > 0) {
5839         tabClass.map(function (token) {
5840           return token.trim();
5841         }).forEach(function (tClass) {
5842           return tip.classList.remove(tClass);
5843         });
5844       }
5845     } // Static

5846     ;
5847 
5848     Popover.jQueryInterface = function jQueryInterface(config) {
5849       return this.each(function () {
5850         var data = Data.getData(this, DATA_KEY$7);
5851 
5852         var _config = typeof config === 'object' ? config : null;
5853 
5854         if (!data && /dispose|hide/.test(config)) {
5855           return;
5856         }
5857 
5858         if (!data) {
5859           data = new Popover(this, _config);
5860           Data.setData(this, DATA_KEY$7, data);
5861         }
5862 
5863         if (typeof config === 'string') {
5864           if (typeof data[config] === 'undefined') {
5865             throw new TypeError("No method named \"" + config + "\"");
5866           }
5867 
5868           data[config]();
5869         }
5870       });
5871     };
5872 
5873     _createClass(Popover, null, [{
5874       key: "Default",
5875       // Getters

5876       get: function get() {
5877         return Default$5;
5878       }
5879     }, {
5880       key: "NAME",
5881       get: function get() {
5882         return NAME$7;
5883       }
5884     }, {
5885       key: "DATA_KEY",
5886       get: function get() {
5887         return DATA_KEY$7;
5888       }
5889     }, {
5890       key: "Event",
5891       get: function get() {
5892         return Event$2;
5893       }
5894     }, {
5895       key: "EVENT_KEY",
5896       get: function get() {
5897         return EVENT_KEY$7;
5898       }
5899     }, {
5900       key: "DefaultType",
5901       get: function get() {
5902         return DefaultType$5;
5903       }
5904     }]);
5905 
5906     return Popover;
5907   }(Tooltip);
5908   /**

5909    * ------------------------------------------------------------------------

5910    * jQuery

5911    * ------------------------------------------------------------------------

5912    * add .Popover to jQuery only if jQuery is present

5913    */
5914 
5915 
5916   onDOMContentLoaded(function () {
5917     var $ = getjQuery();
5918     /* istanbul ignore if */
5919 
5920     if ($) {
5921       var JQUERY_NO_CONFLICT = $.fn[NAME$7];
5922       $.fn[NAME$7] = Popover.jQueryInterface;
5923       $.fn[NAME$7].Constructor = Popover;
5924 
5925       $.fn[NAME$7].noConflict = function () {
5926         $.fn[NAME$7] = JQUERY_NO_CONFLICT;
5927         return Popover.jQueryInterface;
5928       };
5929     }
5930   });
5931 
5932   /**

5933    * ------------------------------------------------------------------------

5934    * Constants

5935    * ------------------------------------------------------------------------

5936    */
5937 
5938   var NAME$8 = 'scrollspy';
5939   var DATA_KEY$8 = 'bs.scrollspy';
5940   var EVENT_KEY$8 = "." + DATA_KEY$8;
5941   var DATA_API_KEY$6 = '.data-api';
5942   var Default$6 = {
5943     offset: 10,
5944     method: 'auto',
5945     target: ''
5946   };
5947   var DefaultType$6 = {
5948     offset: 'number',
5949     method: 'string',
5950     target: '(string|element)'
5951   };
5952   var EVENT_ACTIVATE = "activate" + EVENT_KEY$8;
5953   var EVENT_SCROLL = "scroll" + EVENT_KEY$8;
5954   var EVENT_LOAD_DATA_API$1 = "load" + EVENT_KEY$8 + DATA_API_KEY$6;
5955   var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
5956   var CLASS_NAME_ACTIVE$2 = 'active';
5957   var SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]';
5958   var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
5959   var SELECTOR_NAV_LINKS = '.nav-link';
5960   var SELECTOR_NAV_ITEMS = '.nav-item';
5961   var SELECTOR_LIST_ITEMS = '.list-group-item';
5962   var SELECTOR_DROPDOWN = '.dropdown';
5963   var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
5964   var METHOD_OFFSET = 'offset';
5965   var METHOD_POSITION = 'position';
5966   /**

5967    * ------------------------------------------------------------------------

5968    * Class Definition

5969    * ------------------------------------------------------------------------

5970    */
5971 
5972   var ScrollSpy = /*#__PURE__*/function (_BaseComponent) {
5973     _inheritsLoose(ScrollSpy, _BaseComponent);
5974 
5975     function ScrollSpy(element, config) {
5976       var _this;
5977 
5978       _this = _BaseComponent.call(this, element) || this;
5979       _this._scrollElement = element.tagName === 'BODY' ? window : element;
5980       _this._config = _this._getConfig(config);
5981       _this._selector = _this._config.target + " " + SELECTOR_NAV_LINKS + ", " + _this._config.target + " " + SELECTOR_LIST_ITEMS + ", " + _this._config.target + " ." + CLASS_NAME_DROPDOWN_ITEM;
5982       _this._offsets = [];
5983       _this._targets = [];
5984       _this._activeTarget = null;
5985       _this._scrollHeight = 0;
5986       EventHandler.on(_this._scrollElement, EVENT_SCROLL, function (event) {
5987         return _this._process(event);
5988       });
5989 
5990       _this.refresh();
5991 
5992       _this._process();
5993 
5994       return _this;
5995     } // Getters

5996 
5997 
5998     var _proto = ScrollSpy.prototype;
5999 
6000     // Public

6001     _proto.refresh = function refresh() {
6002       var _this2 = this;
6003 
6004       var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;
6005       var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
6006       var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;
6007       this._offsets = [];
6008       this._targets = [];
6009       this._scrollHeight = this._getScrollHeight();
6010       var targets = SelectorEngine.find(this._selector);
6011       targets.map(function (element) {
6012         var targetSelector = getSelectorFromElement(element);
6013         var target = targetSelector ? SelectorEngine.findOne(targetSelector) : null;
6014 
6015         if (target) {
6016           var targetBCR = target.getBoundingClientRect();
6017 
6018           if (targetBCR.width || targetBCR.height) {
6019             return [Manipulator[offsetMethod](target).top + offsetBase, targetSelector];
6020           }
6021         }
6022 
6023         return null;
6024       }).filter(function (item) {
6025         return item;
6026       }).sort(function (a, b) {
6027         return a[0] - b[0];
6028       }).forEach(function (item) {
6029         _this2._offsets.push(item[0]);
6030 
6031         _this2._targets.push(item[1]);
6032       });
6033     };
6034 
6035     _proto.dispose = function dispose() {
6036       _BaseComponent.prototype.dispose.call(this);
6037 
6038       EventHandler.off(this._scrollElement, EVENT_KEY$8);
6039       this._scrollElement = null;
6040       this._config = null;
6041       this._selector = null;
6042       this._offsets = null;
6043       this._targets = null;
6044       this._activeTarget = null;
6045       this._scrollHeight = null;
6046     } // Private

6047     ;
6048 
6049     _proto._getConfig = function _getConfig(config) {
6050       config = _extends({}, Default$6, typeof config === 'object' && config ? config : {});
6051 
6052       if (typeof config.target !== 'string' && isElement(config.target)) {
6053         var id = config.target.id;
6054 
6055         if (!id) {
6056           id = getUID(NAME$8);
6057           config.target.id = id;
6058         }
6059 
6060         config.target = "#" + id;
6061       }
6062 
6063       typeCheckConfig(NAME$8, config, DefaultType$6);
6064       return config;
6065     };
6066 
6067     _proto._getScrollTop = function _getScrollTop() {
6068       return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
6069     };
6070 
6071     _proto._getScrollHeight = function _getScrollHeight() {
6072       return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
6073     };
6074 
6075     _proto._getOffsetHeight = function _getOffsetHeight() {
6076       return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
6077     };
6078 
6079     _proto._process = function _process() {
6080       var scrollTop = this._getScrollTop() + this._config.offset;
6081 
6082       var scrollHeight = this._getScrollHeight();
6083 
6084       var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
6085 
6086       if (this._scrollHeight !== scrollHeight) {
6087         this.refresh();
6088       }
6089 
6090       if (scrollTop >= maxScroll) {
6091         var target = this._targets[this._targets.length - 1];
6092 
6093         if (this._activeTarget !== target) {
6094           this._activate(target);
6095         }
6096 
6097         return;
6098       }
6099 
6100       if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
6101         this._activeTarget = null;
6102 
6103         this._clear();
6104 
6105         return;
6106       }
6107 
6108       for (var i = this._offsets.length; i--;) {
6109         var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
6110 
6111         if (isActiveTarget) {
6112           this._activate(this._targets[i]);
6113         }
6114       }
6115     };
6116 
6117     _proto._activate = function _activate(target) {
6118       this._activeTarget = target;
6119 
6120       this._clear();
6121 
6122       var queries = this._selector.split(',').map(function (selector) {
6123         return selector + "[data-bs-target=\"" + target + "\"]," + selector + "[href=\"" + target + "\"]";
6124       });
6125 
6126       var link = SelectorEngine.findOne(queries.join(','));
6127 
6128       if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
6129         SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$2);
6130         link.classList.add(CLASS_NAME_ACTIVE$2);
6131       } else {
6132         // Set triggered link as active

6133         link.classList.add(CLASS_NAME_ACTIVE$2);
6134         SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP).forEach(function (listGroup) {
6135           // Set triggered links parents as active

6136           // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor

6137           SelectorEngine.prev(listGroup, SELECTOR_NAV_LINKS + ", " + SELECTOR_LIST_ITEMS).forEach(function (item) {
6138             return item.classList.add(CLASS_NAME_ACTIVE$2);
6139           }); // Handle special case when .nav-link is inside .nav-item

6140 
6141           SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS).forEach(function (navItem) {
6142             SelectorEngine.children(navItem, SELECTOR_NAV_LINKS).forEach(function (item) {
6143               return item.classList.add(CLASS_NAME_ACTIVE$2);
6144             });
6145           });
6146         });
6147       }
6148 
6149       EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {
6150         relatedTarget: target
6151       });
6152     };
6153 
6154     _proto._clear = function _clear() {
6155       SelectorEngine.find(this._selector).filter(function (node) {
6156         return node.classList.contains(CLASS_NAME_ACTIVE$2);
6157       }).forEach(function (node) {
6158         return node.classList.remove(CLASS_NAME_ACTIVE$2);
6159       });
6160     } // Static

6161     ;
6162 
6163     ScrollSpy.jQueryInterface = function jQueryInterface(config) {
6164       return this.each(function () {
6165         var data = Data.getData(this, DATA_KEY$8);
6166 
6167         var _config = typeof config === 'object' && config;
6168 
6169         if (!data) {
6170           data = new ScrollSpy(this, _config);
6171         }
6172 
6173         if (typeof config === 'string') {
6174           if (typeof data[config] === 'undefined') {
6175             throw new TypeError("No method named \"" + config + "\"");
6176           }
6177 
6178           data[config]();
6179         }
6180       });
6181     };
6182 
6183     _createClass(ScrollSpy, null, [{
6184       key: "Default",
6185       get: function get() {
6186         return Default$6;
6187       }
6188     }, {
6189       key: "DATA_KEY",
6190       get: function get() {
6191         return DATA_KEY$8;
6192       }
6193     }]);
6194 
6195     return ScrollSpy;
6196   }(BaseComponent);
6197   /**

6198    * ------------------------------------------------------------------------

6199    * Data Api implementation

6200    * ------------------------------------------------------------------------

6201    */
6202 
6203 
6204   EventHandler.on(window, EVENT_LOAD_DATA_API$1, function () {
6205     SelectorEngine.find(SELECTOR_DATA_SPY).forEach(function (spy) {
6206       return new ScrollSpy(spy, Manipulator.getDataAttributes(spy));
6207     });
6208   });
6209   /**

6210    * ------------------------------------------------------------------------

6211    * jQuery

6212    * ------------------------------------------------------------------------

6213    * add .ScrollSpy to jQuery only if jQuery is present

6214    */
6215 
6216   onDOMContentLoaded(function () {
6217     var $ = getjQuery();
6218     /* istanbul ignore if */
6219 
6220     if ($) {
6221       var JQUERY_NO_CONFLICT = $.fn[NAME$8];
6222       $.fn[NAME$8] = ScrollSpy.jQueryInterface;
6223       $.fn[NAME$8].Constructor = ScrollSpy;
6224 
6225       $.fn[NAME$8].noConflict = function () {
6226         $.fn[NAME$8] = JQUERY_NO_CONFLICT;
6227         return ScrollSpy.jQueryInterface;
6228       };
6229     }
6230   });
6231 
6232   /**

6233    * ------------------------------------------------------------------------

6234    * Constants

6235    * ------------------------------------------------------------------------

6236    */
6237 
6238   var NAME$9 = 'tab';
6239   var DATA_KEY$9 = 'bs.tab';
6240   var EVENT_KEY$9 = "." + DATA_KEY$9;
6241   var DATA_API_KEY$7 = '.data-api';
6242   var EVENT_HIDE$3 = "hide" + EVENT_KEY$9;
6243   var EVENT_HIDDEN$3 = "hidden" + EVENT_KEY$9;
6244   var EVENT_SHOW$3 = "show" + EVENT_KEY$9;
6245   var EVENT_SHOWN$3 = "shown" + EVENT_KEY$9;
6246   var EVENT_CLICK_DATA_API$6 = "click" + EVENT_KEY$9 + DATA_API_KEY$7;
6247   var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';
6248   var CLASS_NAME_ACTIVE$3 = 'active';
6249   var CLASS_NAME_DISABLED$1 = 'disabled';
6250   var CLASS_NAME_FADE$3 = 'fade';
6251   var CLASS_NAME_SHOW$5 = 'show';
6252   var SELECTOR_DROPDOWN$1 = '.dropdown';
6253   var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';
6254   var SELECTOR_ACTIVE$1 = '.active';
6255   var SELECTOR_ACTIVE_UL = ':scope > li > .active';
6256   var SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]';
6257   var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';
6258   var SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active';
6259   /**

6260    * ------------------------------------------------------------------------

6261    * Class Definition

6262    * ------------------------------------------------------------------------

6263    */
6264 
6265   var Tab = /*#__PURE__*/function (_BaseComponent) {
6266     _inheritsLoose(Tab, _BaseComponent);
6267 
6268     function Tab() {
6269       return _BaseComponent.apply(this, arguments) || this;
6270     }
6271 
6272     var _proto = Tab.prototype;
6273 
6274     // Public

6275     _proto.show = function show() {
6276       var _this = this;
6277 
6278       if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && this._element.classList.contains(CLASS_NAME_ACTIVE$3) || this._element.classList.contains(CLASS_NAME_DISABLED$1)) {
6279         return;
6280       }
6281 
6282       var previous;
6283       var target = getElementFromSelector(this._element);
6284 
6285       var listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP$1);
6286 
6287       if (listElement) {
6288         var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE$1;
6289         previous = SelectorEngine.find(itemSelector, listElement);
6290         previous = previous[previous.length - 1];
6291       }
6292 
6293       var hideEvent = null;
6294 
6295       if (previous) {
6296         hideEvent = EventHandler.trigger(previous, EVENT_HIDE$3, {
6297           relatedTarget: this._element
6298         });
6299       }
6300 
6301       var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {
6302         relatedTarget: previous
6303       });
6304 
6305       if (showEvent.defaultPrevented || hideEvent !== null && hideEvent.defaultPrevented) {
6306         return;
6307       }
6308 
6309       this._activate(this._element, listElement);
6310 
6311       var complete = function complete() {
6312         EventHandler.trigger(previous, EVENT_HIDDEN$3, {
6313           relatedTarget: _this._element
6314         });
6315         EventHandler.trigger(_this._element, EVENT_SHOWN$3, {
6316           relatedTarget: previous
6317         });
6318       };
6319 
6320       if (target) {
6321         this._activate(target, target.parentNode, complete);
6322       } else {
6323         complete();
6324       }
6325     } // Private

6326     ;
6327 
6328     _proto._activate = function _activate(element, container, callback) {
6329       var _this2 = this;
6330 
6331       var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? SelectorEngine.find(SELECTOR_ACTIVE_UL, container) : SelectorEngine.children(container, SELECTOR_ACTIVE$1);
6332       var active = activeElements[0];
6333       var isTransitioning = callback && active && active.classList.contains(CLASS_NAME_FADE$3);
6334 
6335       var complete = function complete() {
6336         return _this2._transitionComplete(element, active, callback);
6337       };
6338 
6339       if (active && isTransitioning) {
6340         var transitionDuration = getTransitionDurationFromElement(active);
6341         active.classList.remove(CLASS_NAME_SHOW$5);
6342         EventHandler.one(active, TRANSITION_END, complete);
6343         emulateTransitionEnd(active, transitionDuration);
6344       } else {
6345         complete();
6346       }
6347     };
6348 
6349     _proto._transitionComplete = function _transitionComplete(element, active, callback) {
6350       if (active) {
6351         active.classList.remove(CLASS_NAME_ACTIVE$3);
6352         var dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode);
6353 
6354         if (dropdownChild) {
6355           dropdownChild.classList.remove(CLASS_NAME_ACTIVE$3);
6356         }
6357 
6358         if (active.getAttribute('role') === 'tab') {
6359           active.setAttribute('aria-selected', false);
6360         }
6361       }
6362 
6363       element.classList.add(CLASS_NAME_ACTIVE$3);
6364 
6365       if (element.getAttribute('role') === 'tab') {
6366         element.setAttribute('aria-selected', true);
6367       }
6368 
6369       reflow(element);
6370 
6371       if (element.classList.contains(CLASS_NAME_FADE$3)) {
6372         element.classList.add(CLASS_NAME_SHOW$5);
6373       }
6374 
6375       if (element.parentNode && element.parentNode.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {
6376         var dropdownElement = element.closest(SELECTOR_DROPDOWN$1);
6377 
6378         if (dropdownElement) {
6379           SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE$1).forEach(function (dropdown) {
6380             return dropdown.classList.add(CLASS_NAME_ACTIVE$3);
6381           });
6382         }
6383 
6384         element.setAttribute('aria-expanded', true);
6385       }
6386 
6387       if (callback) {
6388         callback();
6389       }
6390     } // Static

6391     ;
6392 
6393     Tab.jQueryInterface = function jQueryInterface(config) {
6394       return this.each(function () {
6395         var data = Data.getData(this, DATA_KEY$9) || new Tab(this);
6396 
6397         if (typeof config === 'string') {
6398           if (typeof data[config] === 'undefined') {
6399             throw new TypeError("No method named \"" + config + "\"");
6400           }
6401 
6402           data[config]();
6403         }
6404       });
6405     };
6406 
6407     _createClass(Tab, null, [{
6408       key: "DATA_KEY",
6409       // Getters

6410       get: function get() {
6411         return DATA_KEY$9;
6412       }
6413     }]);
6414 
6415     return Tab;
6416   }(BaseComponent);
6417   /**

6418    * ------------------------------------------------------------------------

6419    * Data Api implementation

6420    * ------------------------------------------------------------------------

6421    */
6422 
6423 
6424   EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$4, function (event) {
6425     event.preventDefault();
6426     var data = Data.getData(this, DATA_KEY$9) || new Tab(this);
6427     data.show();
6428   });
6429   /**

6430    * ------------------------------------------------------------------------

6431    * jQuery

6432    * ------------------------------------------------------------------------

6433    * add .Tab to jQuery only if jQuery is present

6434    */
6435 
6436   onDOMContentLoaded(function () {
6437     var $ = getjQuery();
6438     /* istanbul ignore if */
6439 
6440     if ($) {
6441       var JQUERY_NO_CONFLICT = $.fn[NAME$9];
6442       $.fn[NAME$9] = Tab.jQueryInterface;
6443       $.fn[NAME$9].Constructor = Tab;
6444 
6445       $.fn[NAME$9].noConflict = function () {
6446         $.fn[NAME$9] = JQUERY_NO_CONFLICT;
6447         return Tab.jQueryInterface;
6448       };
6449     }
6450   });
6451 
6452   /**

6453    * ------------------------------------------------------------------------

6454    * Constants

6455    * ------------------------------------------------------------------------

6456    */
6457 
6458   var NAME$a = 'toast';
6459   var DATA_KEY$a = 'bs.toast';
6460   var EVENT_KEY$a = "." + DATA_KEY$a;
6461   var EVENT_CLICK_DISMISS$1 = "click.dismiss" + EVENT_KEY$a;
6462   var EVENT_HIDE$4 = "hide" + EVENT_KEY$a;
6463   var EVENT_HIDDEN$4 = "hidden" + EVENT_KEY$a;
6464   var EVENT_SHOW$4 = "show" + EVENT_KEY$a;
6465   var EVENT_SHOWN$4 = "shown" + EVENT_KEY$a;
6466   var CLASS_NAME_FADE$4 = 'fade';
6467   var CLASS_NAME_HIDE = 'hide';
6468   var CLASS_NAME_SHOW$6 = 'show';
6469   var CLASS_NAME_SHOWING = 'showing';
6470   var DefaultType$7 = {
6471     animation: 'boolean',
6472     autohide: 'boolean',
6473     delay: 'number'
6474   };
6475   var Default$7 = {
6476     animation: true,
6477     autohide: true,
6478     delay: 5000
6479   };
6480   var SELECTOR_DATA_DISMISS$1 = '[data-bs-dismiss="toast"]';
6481   /**

6482    * ------------------------------------------------------------------------

6483    * Class Definition

6484    * ------------------------------------------------------------------------

6485    */
6486 
6487   var Toast = /*#__PURE__*/function (_BaseComponent) {
6488     _inheritsLoose(Toast, _BaseComponent);
6489 
6490     function Toast(element, config) {
6491       var _this;
6492 
6493       _this = _BaseComponent.call(this, element) || this;
6494       _this._config = _this._getConfig(config);
6495       _this._timeout = null;
6496 
6497       _this._setListeners();
6498 
6499       return _this;
6500     } // Getters

6501 
6502 
6503     var _proto = Toast.prototype;
6504 
6505     // Public

6506     _proto.show = function show() {
6507       var _this2 = this;
6508 
6509       var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4);
6510 
6511       if (showEvent.defaultPrevented) {
6512         return;
6513       }
6514 
6515       this._clearTimeout();
6516 
6517       if (this._config.animation) {
6518         this._element.classList.add(CLASS_NAME_FADE$4);
6519       }
6520 
6521       var complete = function complete() {
6522         _this2._element.classList.remove(CLASS_NAME_SHOWING);
6523 
6524         _this2._element.classList.add(CLASS_NAME_SHOW$6);
6525 
6526         EventHandler.trigger(_this2._element, EVENT_SHOWN$4);
6527 
6528         if (_this2._config.autohide) {
6529           _this2._timeout = setTimeout(function () {
6530             _this2.hide();
6531           }, _this2._config.delay);
6532         }
6533       };
6534 
6535       this._element.classList.remove(CLASS_NAME_HIDE);
6536 
6537       reflow(this._element);
6538 
6539       this._element.classList.add(CLASS_NAME_SHOWING);
6540 
6541       if (this._config.animation) {
6542         var transitionDuration = getTransitionDurationFromElement(this._element);
6543         EventHandler.one(this._element, TRANSITION_END, complete);
6544         emulateTransitionEnd(this._element, transitionDuration);
6545       } else {
6546         complete();
6547       }
6548     };
6549 
6550     _proto.hide = function hide() {
6551       var _this3 = this;
6552 
6553       if (!this._element.classList.contains(CLASS_NAME_SHOW$6)) {
6554         return;
6555       }
6556 
6557       var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);
6558 
6559       if (hideEvent.defaultPrevented) {
6560         return;
6561       }
6562 
6563       var complete = function complete() {
6564         _this3._element.classList.add(CLASS_NAME_HIDE);
6565 
6566         EventHandler.trigger(_this3._element, EVENT_HIDDEN$4);
6567       };
6568 
6569       this._element.classList.remove(CLASS_NAME_SHOW$6);
6570 
6571       if (this._config.animation) {
6572         var transitionDuration = getTransitionDurationFromElement(this._element);
6573         EventHandler.one(this._element, TRANSITION_END, complete);
6574         emulateTransitionEnd(this._element, transitionDuration);
6575       } else {
6576         complete();
6577       }
6578     };
6579 
6580     _proto.dispose = function dispose() {
6581       this._clearTimeout();
6582 
6583       if (this._element.classList.contains(CLASS_NAME_SHOW$6)) {
6584         this._element.classList.remove(CLASS_NAME_SHOW$6);
6585       }
6586 
6587       EventHandler.off(this._element, EVENT_CLICK_DISMISS$1);
6588 
6589       _BaseComponent.prototype.dispose.call(this);
6590 
6591       this._config = null;
6592     } // Private

6593     ;
6594 
6595     _proto._getConfig = function _getConfig(config) {
6596       config = _extends({}, Default$7, Manipulator.getDataAttributes(this._element), typeof config === 'object' && config ? config : {});
6597       typeCheckConfig(NAME$a, config, this.constructor.DefaultType);
6598       return config;
6599     };
6600 
6601     _proto._setListeners = function _setListeners() {
6602       var _this4 = this;
6603 
6604       EventHandler.on(this._element, EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function () {
6605         return _this4.hide();
6606       });
6607     };
6608 
6609     _proto._clearTimeout = function _clearTimeout() {
6610       clearTimeout(this._timeout);
6611       this._timeout = null;
6612     } // Static

6613     ;
6614 
6615     Toast.jQueryInterface = function jQueryInterface(config) {
6616       return this.each(function () {
6617         var data = Data.getData(this, DATA_KEY$a);
6618 
6619         var _config = typeof config === 'object' && config;
6620 
6621         if (!data) {
6622           data = new Toast(this, _config);
6623         }
6624 
6625         if (typeof config === 'string') {
6626           if (typeof data[config] === 'undefined') {
6627             throw new TypeError("No method named \"" + config + "\"");
6628           }
6629 
6630           data[config](this);
6631         }
6632       });
6633     };
6634 
6635     _createClass(Toast, null, [{
6636       key: "DefaultType",
6637       get: function get() {
6638         return DefaultType$7;
6639       }
6640     }, {
6641       key: "Default",
6642       get: function get() {
6643         return Default$7;
6644       }
6645     }, {
6646       key: "DATA_KEY",
6647       get: function get() {
6648         return DATA_KEY$a;
6649       }
6650     }]);
6651 
6652     return Toast;
6653   }(BaseComponent);
6654   /**

6655    * ------------------------------------------------------------------------

6656    * jQuery

6657    * ------------------------------------------------------------------------

6658    * add .Toast to jQuery only if jQuery is present

6659    */
6660 
6661 
6662   onDOMContentLoaded(function () {
6663     var $ = getjQuery();
6664     /* istanbul ignore if */
6665 
6666     if ($) {
6667       var JQUERY_NO_CONFLICT = $.fn[NAME$a];
6668       $.fn[NAME$a] = Toast.jQueryInterface;
6669       $.fn[NAME$a].Constructor = Toast;
6670 
6671       $.fn[NAME$a].noConflict = function () {
6672         $.fn[NAME$a] = JQUERY_NO_CONFLICT;
6673         return Toast.jQueryInterface;
6674       };
6675     }
6676   });
6677 
6678   /**

6679    * --------------------------------------------------------------------------

6680    * Bootstrap (v5.0.0-beta1): index.umd.js

6681    * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)

6682    * --------------------------------------------------------------------------

6683    */
6684   var index_umd = {
6685     Alert: Alert,
6686     Button: Button,
6687     Carousel: Carousel,
6688     Collapse: Collapse,
6689     Dropdown: Dropdown,
6690     Modal: Modal,
6691     Popover: Popover,
6692     ScrollSpy: ScrollSpy,
6693     Tab: Tab,
6694     Toast: Toast,
6695     Tooltip: Tooltip
6696   };
6697 
6698   return index_umd;
6699 
6700 })));
6701 //# sourceMappingURL=bootstrap.bundle.js.map