aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/twbs/bootstrap/dist/js/bootstrap.esm.min.js.map
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/twbs/bootstrap/dist/js/bootstrap.esm.min.js.map')
-rw-r--r--vendor/twbs/bootstrap/dist/js/bootstrap.esm.min.js.map2
1 files changed, 1 insertions, 1 deletions
diff --git a/vendor/twbs/bootstrap/dist/js/bootstrap.esm.min.js.map b/vendor/twbs/bootstrap/dist/js/bootstrap.esm.min.js.map
index 57912ef6b..802ac9f95 100644
--- a/vendor/twbs/bootstrap/dist/js/bootstrap.esm.min.js.map
+++ b/vendor/twbs/bootstrap/dist/js/bootstrap.esm.min.js.map
@@ -1 +1 @@
-{"version":3,"sources":["../../js/src/util/index.js","../../js/src/dom/event-handler.js","../../js/src/dom/data.js","../../js/src/base-component.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/manipulator.js","../../js/src/dom/selector-engine.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/util/scrollbar.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/modal.js","../../js/src/offcanvas.js","../../js/src/util/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js"],"names":["MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","toType","obj","toString","call","match","toLowerCase","getUID","prefix","Math","floor","random","document","getElementById","getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getSelectorFromElement","querySelector","getElementFromSelector","getTransitionDurationFromElement","transitionDuration","transitionDelay","window","getComputedStyle","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","triggerTransitionEnd","dispatchEvent","Event","isElement","jquery","nodeType","getElement","length","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","TypeError","toUpperCase","isVisible","getClientRects","getPropertyValue","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","parentNode","noop","reflow","offsetHeight","getjQuery","jQuery","body","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","addEventListener","push","isRTL","dir","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","execute","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","called","handler","target","removeEventListener","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","index","indexOf","listLength","max","min","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","customEventsRegex","nativeEvents","Set","getUidEvent","uid","getEvent","bootstrapHandler","event","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","domElements","querySelectorAll","this","i","findHandler","events","delegationSelector","uidEventList","len","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","getTypeEvent","has","addHandler","wrapFn","relatedTarget","handlers","previousFn","replace","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","on","one","inNamespace","isNamespace","elementEvent","slice","keyHandlers","trigger","args","isNative","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","evt","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","key","defineProperty","get","preventDefault","elementMap","Map","Data","set","instance","instanceMap","size","console","error","Array","from","remove","delete","VERSION","BaseComponent","constructor","_element","DATA_KEY","dispose","EVENT_KEY","getOwnPropertyNames","propertyName","_queueCallback","isAnimated","static","getInstance","Error","enableDismissTrigger","component","method","clickEvent","tagName","closest","getOrCreateInstance","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","_destroyElement","each","data","undefined","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","toggle","setAttribute","normalizeData","val","normalizeDataKey","chr","button","Manipulator","setDataAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","dataset","filter","pureKey","charAt","getDataAttribute","offset","rect","getBoundingClientRect","top","pageYOffset","left","pageXOffset","position","offsetTop","offsetLeft","NODE_TEXT","SelectorEngine","find","concat","Element","prototype","findOne","children","child","matches","parents","ancestor","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","map","join","el","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","TOUCHEVENT_COMPAT_WAIT","SWIPE_THRESHOLD","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","KEY_TO_DIRECTION","ArrowLeft","ArrowRight","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","EVENT_DRAG_START","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","CLASS_NAME_POINTER_EVENT","SELECTOR_ACTIVE","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM","SELECTOR_ITEM_IMG","SELECTOR_NEXT_PREV","SELECTOR_INDICATORS","SELECTOR_INDICATOR","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","Carousel","super","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","_addEventListeners","_slide","nextWhenVisible","hidden","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","activeIndex","_getItemIndex","order","_handleSwipe","absDeltax","abs","direction","_keydown","_addTouchEventListeners","hasPointerPenTouch","pointerType","start","clientX","touches","move","end","clearTimeout","itemImg","add","_getItemByOrder","isNext","_triggerSlideEvent","eventDirectionName","targetIndex","fromIndex","_setActiveIndicatorElement","activeIndicator","indicators","parseInt","elementInterval","defaultInterval","directionOrOrder","_directionToOrder","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","_orderToDirection","triggerSlidEvent","completeCallBack","action","ride","carouselInterface","slideIndex","dataApiClickHandler","carousels","parent","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElem","_selector","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activesData","actives","container","tempActiveData","elemActive","dimension","_getDimension","style","scrollSize","triggerArrayLength","selected","triggerArray","isOpen","ESCAPE_KEY","SPACE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","RIGHT_MOUSE_BUTTON","REGEXP_KEYDOWN","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_DROPUP","CLASS_NAME_DROPEND","CLASS_NAME_DROPSTART","CLASS_NAME_NAVBAR","SELECTOR_MENU","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","boundary","reference","display","popperConfig","autoClose","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","getParentFromElement","_createPopper","focus","_completeHide","destroy","update","Popper","referenceElement","_getPopperConfig","isDisplayStatic","modifiers","modifier","enabled","createPopper","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","placement","options","_selectMenuItem","items","toggles","context","composedPath","isMenuTarget","isActive","stopPropagation","getToggleButton","clearMenus","dataApiKeydownHandler","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","ScrollBarHelper","getWidth","documentWidth","clientWidth","innerWidth","width","_disableOverFlow","_setElementAttributes","calculatedValue","_saveInitialAttribute","overflow","styleProp","scrollbarWidth","_applyManipulationCallback","reset","_resetElementAttributes","actualValue","removeProperty","callBack","isOverflowing","className","rootElement","clickCallback","EVENT_MOUSEDOWN","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","append","trapElement","autofocus","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_NAV_FORWARD","TAB_NAV_BACKWARD","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","elements","shiftKey","EVENT_HIDE_PREVENTED","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEUP_DISMISS","EVENT_MOUSEDOWN_DISMISS","CLASS_NAME_OPEN","CLASS_NAME_STATIC","OPEN_SELECTOR","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_ignoreBackdropClick","_scrollBar","_isAnimated","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","_hideModal","htmlElement","handleUpdate","modalBody","scrollTop","_triggerBackdropTransition","_resetAdjustments","currentTarget","scrollHeight","isModalOverflowing","clientHeight","overflowY","isBodyOverflowing","paddingLeft","paddingRight","showEvent","allReadyOpen","scroll","CLASS_NAME_BACKDROP","Offcanvas","visibility","blur","uriAttributes","ARIA_ATTRIBUTE_PATTERN","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","attributeName","nodeName","nodeValue","regExp","attributeRegex","DefaultAllowlist","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","sanitizeHtml","unsafeHtml","allowList","sanitizeFn","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","innerHTML","CLASS_PREFIX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","html","fallbackPlacements","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","CLASS_NAME_MODAL","HOVER_STATE_SHOW","HOVER_STATE_OUT","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","_initializeOnDelegatedTarget","click","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","_disposePopper","isWithContent","shadowRoot","isInTheDom","ownerDocument","getTitle","tipId","attachment","_getAttachment","_addAttachmentClass","_resolvePossibleFunction","prevHoverState","_cleanTipClass","setContent","_sanitizeAndSetContent","content","templateElement","setElementContent","textContent","updateAttachment","_getDelegateConfig","phase","_handlePopperPlacementChange","onFirstUpdate","_getBasicClassPrefix","eventIn","eventOut","_fixTitle","originalTitleType","dataAttributes","dataAttr","basicClassPrefixRegex","tabClass","token","tClass","state","popper","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","EVENT_ACTIVATE","EVENT_SCROLL","CLASS_NAME_DROPDOWN_ITEM","SELECTOR_DATA_SPY","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","METHOD_OFFSET","METHOD_POSITION","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","height","item","sort","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","link","listGroup","navItem","node","spy","CLASS_NAME_DROPDOWN_MENU","SELECTOR_ACTIVE_UL","SELECTOR_DROPDOWN_ACTIVE_CHILD","Tab","listElement","itemSelector","hideEvent","complete","active","isTransitioning","_transitionComplete","dropdownChild","dropdownElement","dropdown","EVENT_MOUSEOVER","EVENT_MOUSEOUT","EVENT_FOCUSOUT","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","_onInteraction","isInteracting"],"mappings":";;;;;sCAOA,MAAMA,QAAU,IACVC,wBAA0B,IAC1BC,eAAiB,gBAGjBC,OAASC,GACTA,MAAAA,EACM,GAAEA,IAGL,GAAGC,SAASC,KAAKF,GAAKG,MAAM,eAAe,GAAGC,cASjDC,OAASC,IACb,GACEA,GAAUC,KAAKC,MArBH,IAqBSD,KAAKE,gBACnBC,SAASC,eAAeL,IAEjC,OAAOA,GAGHM,YAAcC,IAClB,IAAIC,EAAWD,EAAQE,aAAa,kBAEpC,IAAKD,GAAyB,MAAbA,EAAkB,CACjC,IAAIE,EAAWH,EAAQE,aAAa,QAMpC,IAAKC,IAAcA,EAASC,SAAS,OAASD,EAASE,WAAW,KAChE,OAAO,KAILF,EAASC,SAAS,OAASD,EAASE,WAAW,OACjDF,EAAY,IAAGA,EAASG,MAAM,KAAK,MAGrCL,EAAWE,GAAyB,MAAbA,EAAmBA,EAASI,OAAS,KAG9D,OAAON,GAGHO,uBAAyBR,IAC7B,MAAMC,EAAWF,YAAYC,GAE7B,OAAIC,GACKJ,SAASY,cAAcR,GAAYA,EAGrC,MAGHS,uBAAyBV,IAC7B,MAAMC,EAAWF,YAAYC,GAE7B,OAAOC,EAAWJ,SAASY,cAAcR,GAAY,MAGjDU,iCAAmCX,IACvC,IAAKA,EACH,OAAO,EAIT,IAAIY,mBAAEA,EAAFC,gBAAsBA,GAAoBC,OAAOC,iBAAiBf,GAEtE,MAAMgB,EAA0BC,OAAOC,WAAWN,GAC5CO,EAAuBF,OAAOC,WAAWL,GAG/C,OAAKG,GAA4BG,GAKjCP,EAAqBA,EAAmBN,MAAM,KAAK,GACnDO,EAAkBA,EAAgBP,MAAM,KAAK,GArFf,KAuFtBW,OAAOC,WAAWN,GAAsBK,OAAOC,WAAWL,KAPzD,GAULO,qBAAuBpB,IAC3BA,EAAQqB,cAAc,IAAIC,MAAMrC,kBAG5BsC,UAAYpC,MACXA,GAAsB,iBAARA,UAIO,IAAfA,EAAIqC,SACbrC,EAAMA,EAAI,SAGmB,IAAjBA,EAAIsC,UAGdC,WAAavC,GACboC,UAAUpC,GACLA,EAAIqC,OAASrC,EAAI,GAAKA,EAGZ,iBAARA,GAAoBA,EAAIwC,OAAS,EACnC9B,SAASY,cAActB,GAGzB,KAGHyC,gBAAkB,CAACC,EAAeC,EAAQC,KAC9CC,OAAOC,KAAKF,GAAaG,SAAQC,IAC/B,MAAMC,EAAgBL,EAAYI,GAC5BE,EAAQP,EAAOK,GACfG,EAAYD,GAASd,UAAUc,GAAS,UArH5ClD,OADSA,EAsHsDkD,GApHzD,GAAElD,IAGL,GAAGC,SAASC,KAAKF,GAAKG,MAAM,eAAe,GAAGC,cALxCJ,IAAAA,EAwHX,IAAK,IAAIoD,OAAOH,GAAeI,KAAKF,GAClC,MAAM,IAAIG,UACP,GAAEZ,EAAca,0BAA0BP,qBAA4BG,yBAAiCF,WAM1GO,UAAY3C,MACXuB,UAAUvB,IAAgD,IAApCA,EAAQ4C,iBAAiBjB,SAIgB,YAA7DZ,iBAAiBf,GAAS6C,iBAAiB,cAG9CC,WAAa9C,IACZA,GAAWA,EAAQyB,WAAasB,KAAKC,gBAItChD,EAAQiD,UAAUC,SAAS,mBAIC,IAArBlD,EAAQmD,SACVnD,EAAQmD,SAGVnD,EAAQoD,aAAa,aAAoD,UAArCpD,EAAQE,aAAa,aAG5DmD,eAAiBrD,IACrB,IAAKH,SAASyD,gBAAgBC,aAC5B,OAAO,KAIT,GAAmC,mBAAxBvD,EAAQwD,YAA4B,CAC7C,MAAMC,EAAOzD,EAAQwD,cACrB,OAAOC,aAAgBC,WAAaD,EAAO,KAG7C,OAAIzD,aAAmB0D,WACd1D,EAIJA,EAAQ2D,WAINN,eAAerD,EAAQ2D,YAHrB,MAMLC,KAAO,OAUPC,OAAS7D,IAEbA,EAAQ8D,cAGJC,UAAY,KAChB,MAAMC,OAAEA,GAAWlD,OAEnB,OAAIkD,IAAWnE,SAASoE,KAAKb,aAAa,qBACjCY,EAGF,MAGHE,0BAA4B,GAE5BC,mBAAqBC,IACG,YAAxBvE,SAASwE,YAENH,0BAA0BvC,QAC7B9B,SAASyE,iBAAiB,oBAAoB,KAC5CJ,0BAA0BhC,SAAQkC,GAAYA,SAIlDF,0BAA0BK,KAAKH,IAE/BA,KAIEI,MAAQ,IAAuC,QAAjC3E,SAASyD,gBAAgBmB,IAEvCC,mBAAqBC,IAjBAP,IAAAA,EAAAA,EAkBN,KACjB,MAAMQ,EAAIb,YAEV,GAAIa,EAAG,CACL,MAAMC,EAAOF,EAAOG,KACdC,EAAqBH,EAAEI,GAAGH,GAChCD,EAAEI,GAAGH,GAAQF,EAAOM,gBACpBL,EAAEI,GAAGH,GAAMK,YAAcP,EACzBC,EAAEI,GAAGH,GAAMM,WAAa,KACtBP,EAAEI,GAAGH,GAAQE,EACNJ,EAAOM,mBA3BQ,YAAxBpF,SAASwE,YAENH,0BAA0BvC,QAC7B9B,SAASyE,iBAAiB,oBAAoB,KAC5CJ,0BAA0BhC,SAAQkC,GAAYA,SAIlDF,0BAA0BK,KAAKH,IAE/BA,KAuBEgB,QAAUhB,IACU,mBAAbA,GACTA,KAIEiB,uBAAyB,CAACjB,EAAUkB,EAAmBC,GAAoB,KAC/E,IAAKA,EAEH,YADAH,QAAQhB,GAIV,MACMoB,EAAmB7E,iCAAiC2E,GADlC,EAGxB,IAAIG,GAAS,EAEb,MAAMC,EAAU,EAAGC,OAAAA,MACbA,IAAWL,IAIfG,GAAS,EACTH,EAAkBM,oBAAoB3G,eAAgByG,GACtDN,QAAQhB,KAGVkB,EAAkBhB,iBAAiBrF,eAAgByG,GACnDG,YAAW,KACJJ,GACHrE,qBAAqBkE,KAEtBE,IAYCM,qBAAuB,CAACC,EAAMC,EAAeC,EAAeC,KAChE,IAAIC,EAAQJ,EAAKK,QAAQJ,GAGzB,IAAe,IAAXG,EACF,OAAOJ,GAAME,GAAiBC,EAAiBH,EAAKpE,OAAS,EAAI,GAGnE,MAAM0E,EAAaN,EAAKpE,OAQxB,OANAwE,GAASF,EAAgB,GAAK,EAE1BC,IACFC,GAASA,EAAQE,GAAcA,GAG1BN,EAAKrG,KAAK4G,IAAI,EAAG5G,KAAK6G,IAAIJ,EAAOE,EAAa,MCrSjDG,eAAiB,qBACjBC,eAAiB,OACjBC,cAAgB,SAChBC,cAAgB,GACtB,IAAIC,SAAW,EACf,MAAMC,aAAe,CACnBC,WAAY,YACZC,WAAY,YAERC,kBAAoB,4BACpBC,aAAe,IAAIC,IAAI,CAC3B,QACA,WACA,UACA,YACA,cACA,aACA,iBACA,YACA,WACA,YACA,cACA,YACA,UACA,WACA,QACA,oBACA,aACA,YACA,WACA,cACA,cACA,cACA,YACA,eACA,gBACA,eACA,gBACA,aACA,QACA,OACA,SACA,QACA,SACA,SACA,UACA,WACA,OACA,SACA,eACA,SACA,OACA,mBACA,mBACA,QACA,QACA,WASF,SAASC,YAAYnH,EAASoH,GAC5B,OAAQA,GAAQ,GAAEA,MAAQR,cAAiB5G,EAAQ4G,UAAYA,WAGjE,SAASS,SAASrH,GAChB,MAAMoH,EAAMD,YAAYnH,GAKxB,OAHAA,EAAQ4G,SAAWQ,EACnBT,cAAcS,GAAOT,cAAcS,IAAQ,GAEpCT,cAAcS,GAGvB,SAASE,iBAAiBtH,EAASgF,GACjC,OAAO,SAASU,EAAQ6B,GAOtB,OANAA,EAAMC,eAAiBxH,EAEnB0F,EAAQ+B,QACVC,aAAaC,IAAI3H,EAASuH,EAAMK,KAAM5C,GAGjCA,EAAG6C,MAAM7H,EAAS,CAACuH,KAI9B,SAASO,2BAA2B9H,EAASC,EAAU+E,GACrD,OAAO,SAASU,EAAQ6B,GACtB,MAAMQ,EAAc/H,EAAQgI,iBAAiB/H,GAE7C,IAAK,IAAI0F,OAAEA,GAAW4B,EAAO5B,GAAUA,IAAWsC,KAAMtC,EAASA,EAAOhC,WACtE,IAAK,IAAIuE,EAAIH,EAAYpG,OAAQuG,KAC/B,GAAIH,EAAYG,KAAOvC,EAOrB,OANA4B,EAAMC,eAAiB7B,EAEnBD,EAAQ+B,QACVC,aAAaC,IAAI3H,EAASuH,EAAMK,KAAM3H,EAAU+E,GAG3CA,EAAG6C,MAAMlC,EAAQ,CAAC4B,IAM/B,OAAO,MAIX,SAASY,YAAYC,EAAQ1C,EAAS2C,EAAqB,MACzD,MAAMC,EAAetG,OAAOC,KAAKmG,GAEjC,IAAK,IAAIF,EAAI,EAAGK,EAAMD,EAAa3G,OAAQuG,EAAIK,EAAKL,IAAK,CACvD,MAAMX,EAAQa,EAAOE,EAAaJ,IAElC,GAAIX,EAAMiB,kBAAoB9C,GAAW6B,EAAMc,qBAAuBA,EACpE,OAAOd,EAIX,OAAO,KAGT,SAASkB,gBAAgBC,EAAmBhD,EAASiD,GACnD,MAAMC,EAAgC,iBAAZlD,EACpB8C,EAAkBI,EAAaD,EAAejD,EAEpD,IAAImD,EAAYC,aAAaJ,GAO7B,OANiBzB,aAAa8B,IAAIF,KAGhCA,EAAYH,GAGP,CAACE,EAAYJ,EAAiBK,GAGvC,SAASG,WAAWhJ,EAAS0I,EAAmBhD,EAASiD,EAAclB,GACrE,GAAiC,iBAAtBiB,IAAmC1I,EAC5C,OAUF,GAPK0F,IACHA,EAAUiD,EACVA,EAAe,MAKb3B,kBAAkBxE,KAAKkG,GAAoB,CAC7C,MAAMO,EAASjE,GACN,SAAUuC,GACf,IAAKA,EAAM2B,eAAkB3B,EAAM2B,gBAAkB3B,EAAMC,iBAAmBD,EAAMC,eAAetE,SAASqE,EAAM2B,eAChH,OAAOlE,EAAG3F,KAAK4I,KAAMV,IAKvBoB,EACFA,EAAeM,EAAON,GAEtBjD,EAAUuD,EAAOvD,GAIrB,MAAOkD,EAAYJ,EAAiBK,GAAaJ,gBAAgBC,EAAmBhD,EAASiD,GACvFP,EAASf,SAASrH,GAClBmJ,EAAWf,EAAOS,KAAeT,EAAOS,GAAa,IACrDO,EAAajB,YAAYgB,EAAUX,EAAiBI,EAAalD,EAAU,MAEjF,GAAI0D,EAGF,YAFAA,EAAW3B,OAAS2B,EAAW3B,QAAUA,GAK3C,MAAML,EAAMD,YAAYqB,EAAiBE,EAAkBW,QAAQ7C,eAAgB,KAC7ExB,EAAK4D,EACTd,2BAA2B9H,EAAS0F,EAASiD,GAC7CrB,iBAAiBtH,EAAS0F,GAE5BV,EAAGqD,mBAAqBO,EAAalD,EAAU,KAC/CV,EAAGwD,gBAAkBA,EACrBxD,EAAGyC,OAASA,EACZzC,EAAG4B,SAAWQ,EACd+B,EAAS/B,GAAOpC,EAEhBhF,EAAQsE,iBAAiBuE,EAAW7D,EAAI4D,GAG1C,SAASU,cAActJ,EAASoI,EAAQS,EAAWnD,EAAS2C,GAC1D,MAAMrD,EAAKmD,YAAYC,EAAOS,GAAYnD,EAAS2C,GAE9CrD,IAILhF,EAAQ4F,oBAAoBiD,EAAW7D,EAAIuE,QAAQlB,WAC5CD,EAAOS,GAAW7D,EAAG4B,WAG9B,SAAS4C,yBAAyBxJ,EAASoI,EAAQS,EAAWY,GAC5D,MAAMC,EAAoBtB,EAAOS,IAAc,GAE/C7G,OAAOC,KAAKyH,GAAmBxH,SAAQyH,IACrC,GAAIA,EAAWvJ,SAASqJ,GAAY,CAClC,MAAMlC,EAAQmC,EAAkBC,GAEhCL,cAActJ,EAASoI,EAAQS,EAAWtB,EAAMiB,gBAAiBjB,EAAMc,wBAK7E,SAASS,aAAavB,GAGpB,OADAA,EAAQA,EAAM8B,QAAQ5C,eAAgB,IAC/BI,aAAaU,IAAUA,EAGhC,MAAMG,aAAe,CACnBkC,GAAG5J,EAASuH,EAAO7B,EAASiD,GAC1BK,WAAWhJ,EAASuH,EAAO7B,EAASiD,GAAc,IAGpDkB,IAAI7J,EAASuH,EAAO7B,EAASiD,GAC3BK,WAAWhJ,EAASuH,EAAO7B,EAASiD,GAAc,IAGpDhB,IAAI3H,EAAS0I,EAAmBhD,EAASiD,GACvC,GAAiC,iBAAtBD,IAAmC1I,EAC5C,OAGF,MAAO4I,EAAYJ,EAAiBK,GAAaJ,gBAAgBC,EAAmBhD,EAASiD,GACvFmB,EAAcjB,IAAcH,EAC5BN,EAASf,SAASrH,GAClB+J,EAAcrB,EAAkBrI,WAAW,KAEjD,QAA+B,IAApBmI,EAAiC,CAE1C,IAAKJ,IAAWA,EAAOS,GACrB,OAIF,YADAS,cAActJ,EAASoI,EAAQS,EAAWL,EAAiBI,EAAalD,EAAU,MAIhFqE,GACF/H,OAAOC,KAAKmG,GAAQlG,SAAQ8H,IAC1BR,yBAAyBxJ,EAASoI,EAAQ4B,EAActB,EAAkBuB,MAAM,OAIpF,MAAMP,EAAoBtB,EAAOS,IAAc,GAC/C7G,OAAOC,KAAKyH,GAAmBxH,SAAQgI,IACrC,MAAMP,EAAaO,EAAYb,QAAQ3C,cAAe,IAEtD,IAAKoD,GAAepB,EAAkBtI,SAASuJ,GAAa,CAC1D,MAAMpC,EAAQmC,EAAkBQ,GAEhCZ,cAActJ,EAASoI,EAAQS,EAAWtB,EAAMiB,gBAAiBjB,EAAMc,yBAK7E8B,QAAQnK,EAASuH,EAAO6C,GACtB,GAAqB,iBAAV7C,IAAuBvH,EAChC,OAAO,KAGT,MAAM4E,EAAIb,YACJ8E,EAAYC,aAAavB,GACzBuC,EAAcvC,IAAUsB,EACxBwB,EAAWpD,aAAa8B,IAAIF,GAElC,IAAIyB,EACAC,GAAU,EACVC,GAAiB,EACjBC,GAAmB,EACnBC,EAAM,KA4CV,OA1CIZ,GAAelF,IACjB0F,EAAc1F,EAAEtD,MAAMiG,EAAO6C,GAE7BxF,EAAE5E,GAASmK,QAAQG,GACnBC,GAAWD,EAAYK,uBACvBH,GAAkBF,EAAYM,gCAC9BH,EAAmBH,EAAYO,sBAG7BR,GACFK,EAAM7K,SAASiL,YAAY,cAC3BJ,EAAIK,UAAUlC,EAAW0B,GAAS,IAElCG,EAAM,IAAIM,YAAYzD,EAAO,CAC3BgD,QAAAA,EACAU,YAAY,SAKI,IAATb,GACTpI,OAAOC,KAAKmI,GAAMlI,SAAQgJ,IACxBlJ,OAAOmJ,eAAeT,EAAKQ,EAAK,CAC9BE,IAAG,IACMhB,EAAKc,QAMhBT,GACFC,EAAIW,iBAGFb,GACFxK,EAAQqB,cAAcqJ,GAGpBA,EAAID,uBAA2C,IAAhBH,GACjCA,EAAYe,iBAGPX,IC1ULY,WAAa,IAAIC,IAEvBC,KAAe,CACbC,IAAIzL,EAASkL,EAAKQ,GACXJ,WAAWvC,IAAI/I,IAClBsL,WAAWG,IAAIzL,EAAS,IAAIuL,KAG9B,MAAMI,EAAcL,WAAWF,IAAIpL,GAI9B2L,EAAY5C,IAAImC,IAA6B,IAArBS,EAAYC,KAMzCD,EAAYF,IAAIP,EAAKQ,GAJnBG,QAAQC,MAAO,+EAA8EC,MAAMC,KAAKL,EAAY1J,QAAQ,QAOhImJ,IAAG,CAACpL,EAASkL,IACPI,WAAWvC,IAAI/I,IACVsL,WAAWF,IAAIpL,GAASoL,IAAIF,IAG9B,KAGTe,OAAOjM,EAASkL,GACd,IAAKI,WAAWvC,IAAI/I,GAClB,OAGF,MAAM2L,EAAcL,WAAWF,IAAIpL,GAEnC2L,EAAYO,OAAOhB,GAGM,IAArBS,EAAYC,MACdN,WAAWY,OAAOlM,KCjClBmM,QAAU,QAEhB,MAAMC,cACJC,YAAYrM,IACVA,EAAU0B,WAAW1B,MAMrBiI,KAAKqE,SAAWtM,EAChBwL,KAAKC,IAAIxD,KAAKqE,SAAUrE,KAAKoE,YAAYE,SAAUtE,OAGrDuE,UACEhB,KAAKS,OAAOhE,KAAKqE,SAAUrE,KAAKoE,YAAYE,UAC5C7E,aAAaC,IAAIM,KAAKqE,SAAUrE,KAAKoE,YAAYI,WAEjDzK,OAAO0K,oBAAoBzE,MAAM/F,SAAQyK,IACvC1E,KAAK0E,GAAgB,QAIzBC,eAAexI,EAAUpE,EAAS6M,GAAa,GAC7CxH,uBAAuBjB,EAAUpE,EAAS6M,GAK1BC,mBAAC9M,GACjB,OAAOwL,KAAKJ,IAAI1J,WAAW1B,GAAUiI,KAAKsE,UAGlBO,2BAAC9M,EAAS8B,EAAS,IAC3C,OAAOmG,KAAK8E,YAAY/M,IAAY,IAAIiI,KAAKjI,EAA2B,iBAAX8B,EAAsBA,EAAS,MAGnFqK,qBACT,MAtCY,QAyCHrH,kBACT,MAAM,IAAIkI,MAAM,uEAGPT,sBACT,MAAQ,MAAKtE,KAAKnD,OAGT2H,uBACT,MAAQ,IAAGxE,KAAKsE,YC5DpB,MAAMU,qBAAuB,CAACC,EAAWC,EAAS,UAChD,MAAMC,EAAc,gBAAeF,EAAUT,YACvC5H,EAAOqI,EAAUpI,KAEvB4C,aAAakC,GAAG/J,SAAUuN,EAAa,qBAAoBvI,OAAU,SAAU0C,GAK7E,GAJI,CAAC,IAAK,QAAQnH,SAAS6H,KAAKoF,UAC9B9F,EAAM8D,iBAGJvI,WAAWmF,MACb,OAGF,MAAMtC,EAASjF,uBAAuBuH,OAASA,KAAKqF,QAAS,IAAGzI,KAC/CqI,EAAUK,oBAAoB5H,GAGtCwH,SCTPrI,OAAO,QACPyH,WAAW,WACXE,YAAa,YAEbe,YAAe,iBACfC,aAAgB,kBAChBC,kBAAkB,OAClBC,kBAAkB,OAQxB,MAAMC,cAAcxB,cAGPtH,kBACT,OAAOA,OAKT+I,QAGE,GAFmBnG,aAAayC,QAAQlC,KAAKqE,SAAUkB,aAExC/C,iBACb,OAGFxC,KAAKqE,SAASrJ,UAAUgJ,OAxBJ,QA0BpB,MAAMY,EAAa5E,KAAKqE,SAASrJ,UAAUC,SA3BvB,QA4BpB+E,KAAK2E,gBAAe,IAAM3E,KAAK6F,mBAAmB7F,KAAKqE,SAAUO,GAInEiB,kBACE7F,KAAKqE,SAASL,SACdvE,aAAayC,QAAQlC,KAAKqE,SAAUmB,cACpCxF,KAAKuE,UAKeM,uBAAChL,GACrB,OAAOmG,KAAK8F,MAAK,WACf,MAAMC,EAAOJ,MAAML,oBAAoBtF,MAEvC,GAAsB,iBAAXnG,EAAX,CAIA,QAAqBmM,IAAjBD,EAAKlM,IAAyBA,EAAOzB,WAAW,MAAmB,gBAAXyB,EAC1D,MAAM,IAAIW,UAAW,oBAAmBX,MAG1CkM,EAAKlM,GAAQmG,WAWnBgF,qBAAqBW,MAAO,SAS5BlJ,mBAAmBkJ,OC/EnB,MAAM9I,OAAO,SACPyH,WAAW,YACXE,YAAa,aACbyB,eAAe,YAEfC,oBAAoB,SAEpBC,uBAAuB,4BAEvBC,uBAAwB,2BAQ9B,MAAMC,eAAelC,cAGRtH,kBACT,OAAOA,OAKTyJ,SAEEtG,KAAKqE,SAASkC,aAAa,eAAgBvG,KAAKqE,SAASrJ,UAAUsL,OAvB7C,WA4BFzB,uBAAChL,GACrB,OAAOmG,KAAK8F,MAAK,WACf,MAAMC,EAAOM,OAAOf,oBAAoBtF,MAEzB,WAAXnG,GACFkM,EAAKlM,SChDb,SAAS2M,cAAcC,GACrB,MAAY,SAARA,GAIQ,UAARA,IAIAA,IAAQzN,OAAOyN,GAAKtP,WACf6B,OAAOyN,GAGJ,KAARA,GAAsB,SAARA,EACT,KAGFA,GAGT,SAASC,iBAAiBzD,GACxB,OAAOA,EAAI7B,QAAQ,UAAUuF,GAAQ,IAAGA,EAAIrP,kBDuC9CmI,aAAakC,GAAG/J,SAAUwO,uBAAsBD,wBAAsB7G,IACpEA,EAAM8D,iBAEN,MAAMwD,EAAStH,EAAM5B,OAAO2H,QAAQc,wBACvBE,OAAOf,oBAAoBsB,GAEnCN,YAUP7J,mBAAmB4J,QCpDnB,MAAMQ,YAAc,CAClBC,iBAAiB/O,EAASkL,EAAK7I,GAC7BrC,EAAQwO,aAAc,WAAUG,iBAAiBzD,KAAQ7I,IAG3D2M,oBAAoBhP,EAASkL,GAC3BlL,EAAQiP,gBAAiB,WAAUN,iBAAiBzD,OAGtDgE,kBAAkBlP,GAChB,IAAKA,EACH,MAAO,GAGT,MAAMmP,EAAa,GAUnB,OARAnN,OAAOC,KAAKjC,EAAQoP,SACjBC,QAAOnE,GAAOA,EAAI7K,WAAW,QAC7B6B,SAAQgJ,IACP,IAAIoE,EAAUpE,EAAI7B,QAAQ,MAAO,IACjCiG,EAAUA,EAAQC,OAAO,GAAGhQ,cAAgB+P,EAAQrF,MAAM,EAAGqF,EAAQ3N,QACrEwN,EAAWG,GAAWb,cAAczO,EAAQoP,QAAQlE,OAGjDiE,GAGTK,iBAAgB,CAACxP,EAASkL,IACjBuD,cAAczO,EAAQE,aAAc,WAAUyO,iBAAiBzD,OAGxEuE,OAAOzP,GACL,MAAM0P,EAAO1P,EAAQ2P,wBAErB,MAAO,CACLC,IAAKF,EAAKE,IAAM9O,OAAO+O,YACvBC,KAAMJ,EAAKI,KAAOhP,OAAOiP,cAI7BC,SAAShQ,IACA,CACL4P,IAAK5P,EAAQiQ,UACbH,KAAM9P,EAAQkQ,cC3DdC,UAAY,EAEZC,eAAiB,CACrBC,KAAI,CAACpQ,EAAUD,EAAUH,SAASyD,kBACzB,GAAGgN,UAAUC,QAAQC,UAAUxI,iBAAiB3I,KAAKW,EAASC,IAGvEwQ,QAAO,CAACxQ,EAAUD,EAAUH,SAASyD,kBAC5BiN,QAAQC,UAAU/P,cAAcpB,KAAKW,EAASC,GAGvDyQ,SAAQ,CAAC1Q,EAASC,IACT,GAAGqQ,UAAUtQ,EAAQ0Q,UACzBrB,QAAOsB,GAASA,EAAMC,QAAQ3Q,KAGnC4Q,QAAQ7Q,EAASC,GACf,MAAM4Q,EAAU,GAEhB,IAAIC,EAAW9Q,EAAQ2D,WAEvB,KAAOmN,GAAYA,EAASrP,WAAasB,KAAKC,cArBhC,IAqBgD8N,EAASrP,UACjEqP,EAASF,QAAQ3Q,IACnB4Q,EAAQtM,KAAKuM,GAGfA,EAAWA,EAASnN,WAGtB,OAAOkN,GAGTE,KAAK/Q,EAASC,GACZ,IAAI+Q,EAAWhR,EAAQiR,uBAEvB,KAAOD,GAAU,CACf,GAAIA,EAASJ,QAAQ3Q,GACnB,MAAO,CAAC+Q,GAGVA,EAAWA,EAASC,uBAGtB,MAAO,IAGTC,KAAKlR,EAASC,GACZ,IAAIiR,EAAOlR,EAAQmR,mBAEnB,KAAOD,GAAM,CACX,GAAIA,EAAKN,QAAQ3Q,GACf,MAAO,CAACiR,GAGVA,EAAOA,EAAKC,mBAGd,MAAO,IAGTC,kBAAkBpR,GAChB,MAAMqR,EAAa,CACjB,IACA,SACA,QACA,WACA,SACA,UACA,aACA,4BACAC,KAAIrR,GAAa,GAAEA,2BAAiCsR,KAAK,MAE3D,OAAOtJ,KAAKoI,KAAKgB,EAAYrR,GAASqP,QAAOmC,IAAO1O,WAAW0O,IAAO7O,UAAU6O,OC3D9E1M,OAAO,WACPyH,WAAW,cACXE,YAAa,eACbyB,eAAe,YAEfuD,eAAiB,YACjBC,gBAAkB,aAClBC,uBAAyB,IACzBC,gBAAkB,GAElBC,UAAU,CACdC,SAAU,IACVC,UAAU,EACVC,OAAO,EACPC,MAAO,QACPC,MAAM,EACNC,OAAO,GAGHC,cAAc,CAClBN,SAAU,mBACVC,SAAU,UACVC,MAAO,mBACPC,MAAO,mBACPC,KAAM,UACNC,MAAO,WAGHE,WAAa,OACbC,WAAa,OACbC,eAAiB,OACjBC,gBAAkB,QAElBC,iBAAmB,CACvBC,UAAkBF,gBAClBG,WAAmBJ,gBAGfK,YAAe,oBACfC,WAAc,mBACdC,cAAiB,sBACjBC,iBAAoB,yBACpBC,iBAAoB,yBACpBC,iBAAoB,yBACpBC,gBAAmB,wBACnBC,eAAkB,uBAClBC,kBAAqB,0BACrBC,gBAAmB,wBACnBC,iBAAoB,wBACpBC,sBAAuB,4BACvBlF,uBAAwB,6BAExBmF,oBAAsB,WACtBrF,oBAAoB,SACpBsF,iBAAmB,QACnBC,eAAiB,oBACjBC,iBAAmB,sBACnBC,gBAAkB,qBAClBC,gBAAkB,qBAClBC,yBAA2B,gBAE3BC,kBAAkB,UAClBC,qBAAuB,wBACvBC,cAAgB,iBAChBC,kBAAoB,qBACpBC,mBAAqB,2CACrBC,oBAAsB,uBACtBC,mBAAqB,mBACrBC,oBAAsB,sCACtBC,mBAAqB,4BAErBC,mBAAqB,QACrBC,iBAAmB,MAOzB,MAAMC,iBAAiBtI,cACrBC,YAAYrM,EAAS8B,GACnB6S,MAAM3U,GAENiI,KAAK2M,OAAS,KACd3M,KAAK4M,UAAY,KACjB5M,KAAK6M,eAAiB,KACtB7M,KAAK8M,WAAY,EACjB9M,KAAK+M,YAAa,EAClB/M,KAAKgN,aAAe,KACpBhN,KAAKiN,YAAc,EACnBjN,KAAKkN,YAAc,EAEnBlN,KAAKmN,QAAUnN,KAAKoN,WAAWvT,GAC/BmG,KAAKqN,mBAAqBlF,eAAeK,QAAQ2D,oBAAqBnM,KAAKqE,UAC3ErE,KAAKsN,gBAAkB,iBAAkB1V,SAASyD,iBAAmBkS,UAAUC,eAAiB,EAChGxN,KAAKyN,cAAgBnM,QAAQzI,OAAO6U,cAEpC1N,KAAK2N,qBAKI/D,qBACT,OAAOA,UAGE/M,kBACT,OAAOA,OAKToM,OACEjJ,KAAK4N,OAAOxD,YAGdyD,mBAGOjW,SAASkW,QAAUpT,UAAUsF,KAAKqE,WACrCrE,KAAKiJ,OAITH,OACE9I,KAAK4N,OAAOvD,YAGdL,MAAM1K,GACCA,IACHU,KAAK8M,WAAY,GAGf3E,eAAeK,QAAQ0D,mBAAoBlM,KAAKqE,YAClDlL,qBAAqB6G,KAAKqE,UAC1BrE,KAAK+N,OAAM,IAGbC,cAAchO,KAAK4M,WACnB5M,KAAK4M,UAAY,KAGnBmB,MAAMzO,GACCA,IACHU,KAAK8M,WAAY,GAGf9M,KAAK4M,YACPoB,cAAchO,KAAK4M,WACnB5M,KAAK4M,UAAY,MAGf5M,KAAKmN,SAAWnN,KAAKmN,QAAQtD,WAAa7J,KAAK8M,YACjD9M,KAAKiO,kBAELjO,KAAK4M,UAAYsB,aACdtW,SAASuW,gBAAkBnO,KAAK6N,gBAAkB7N,KAAKiJ,MAAMmF,KAAKpO,MACnEA,KAAKmN,QAAQtD,WAKnBwE,GAAGnQ,GACD8B,KAAK6M,eAAiB1E,eAAeK,QAAQuD,qBAAsB/L,KAAKqE,UACxE,MAAMiK,EAActO,KAAKuO,cAAcvO,KAAK6M,gBAE5C,GAAI3O,EAAQ8B,KAAK2M,OAAOjT,OAAS,GAAKwE,EAAQ,EAC5C,OAGF,GAAI8B,KAAK+M,WAEP,YADAtN,aAAamC,IAAI5B,KAAKqE,SAAUuG,YAAY,IAAM5K,KAAKqO,GAAGnQ,KAI5D,GAAIoQ,IAAgBpQ,EAGlB,OAFA8B,KAAKgK,aACLhK,KAAK+N,QAIP,MAAMS,EAAQtQ,EAAQoQ,EACpBlE,WACAC,WAEFrK,KAAK4N,OAAOY,EAAOxO,KAAK2M,OAAOzO,IAKjCkP,WAAWvT,GAOT,OANAA,EAAS,IACJ+P,aACA/C,YAAYI,kBAAkBjH,KAAKqE,aAChB,iBAAXxK,EAAsBA,EAAS,IAE5CF,gBAAgBkD,OAAMhD,EAAQsQ,eACvBtQ,EAGT4U,eACE,MAAMC,EAAYjX,KAAKkX,IAAI3O,KAAKkN,aAEhC,GAAIwB,GAnMgB,GAoMlB,OAGF,MAAME,EAAYF,EAAY1O,KAAKkN,YAEnClN,KAAKkN,YAAc,EAEd0B,GAIL5O,KAAK4N,OAAOgB,EAAY,EAAIrE,gBAAkBD,gBAGhDqD,qBACM3N,KAAKmN,QAAQrD,UACfrK,aAAakC,GAAG3B,KAAKqE,SAAUwG,eAAevL,GAASU,KAAK6O,SAASvP,KAG5C,UAAvBU,KAAKmN,QAAQnD,QACfvK,aAAakC,GAAG3B,KAAKqE,SAAUyG,kBAAkBxL,GAASU,KAAKgK,MAAM1K,KACrEG,aAAakC,GAAG3B,KAAKqE,SAAU0G,kBAAkBzL,GAASU,KAAK+N,MAAMzO,MAGnEU,KAAKmN,QAAQjD,OAASlK,KAAKsN,iBAC7BtN,KAAK8O,0BAITA,0BACE,MAAMC,EAAqBzP,GAClBU,KAAKyN,gBAnKO,QAoKhBnO,EAAM0P,aArKY,UAqKwB1P,EAAM0P,aAG/CC,EAAQ3P,IACRyP,EAAmBzP,GACrBU,KAAKiN,YAAc3N,EAAM4P,QACflP,KAAKyN,gBACfzN,KAAKiN,YAAc3N,EAAM6P,QAAQ,GAAGD,UAIlCE,EAAO9P,IAEXU,KAAKkN,YAAc5N,EAAM6P,SAAW7P,EAAM6P,QAAQzV,OAAS,EACzD,EACA4F,EAAM6P,QAAQ,GAAGD,QAAUlP,KAAKiN,aAG9BoC,EAAM/P,IACNyP,EAAmBzP,KACrBU,KAAKkN,YAAc5N,EAAM4P,QAAUlP,KAAKiN,aAG1CjN,KAAKyO,eACsB,UAAvBzO,KAAKmN,QAAQnD,QASfhK,KAAKgK,QACDhK,KAAKgN,cACPsC,aAAatP,KAAKgN,cAGpBhN,KAAKgN,aAAepP,YAAW0B,GAASU,KAAK+N,MAAMzO,IA3Q5B,IA2Q6DU,KAAKmN,QAAQtD,YAIrG1B,eAAeC,KAAK6D,kBAAmBjM,KAAKqE,UAAUpK,SAAQsV,IAC5D9P,aAAakC,GAAG4N,EAASlE,kBAAkB/L,GAASA,EAAM8D,sBAGxDpD,KAAKyN,eACPhO,aAAakC,GAAG3B,KAAKqE,SAAU8G,mBAAmB7L,GAAS2P,EAAM3P,KACjEG,aAAakC,GAAG3B,KAAKqE,SAAU+G,iBAAiB9L,GAAS+P,EAAI/P,KAE7DU,KAAKqE,SAASrJ,UAAUwU,IAnOG,mBAqO3B/P,aAAakC,GAAG3B,KAAKqE,SAAU2G,kBAAkB1L,GAAS2P,EAAM3P,KAChEG,aAAakC,GAAG3B,KAAKqE,SAAU4G,iBAAiB3L,GAAS8P,EAAK9P,KAC9DG,aAAakC,GAAG3B,KAAKqE,SAAU6G,gBAAgB5L,GAAS+P,EAAI/P,MAIhEuP,SAASvP,GACP,GAAI,kBAAkB/E,KAAK+E,EAAM5B,OAAO0H,SACtC,OAGF,MAAMwJ,EAAYpE,iBAAiBlL,EAAM2D,KACrC2L,IACFtP,EAAM8D,iBACNpD,KAAK4N,OAAOgB,IAIhBL,cAAcxW,GAKZ,OAJAiI,KAAK2M,OAAS5U,GAAWA,EAAQ2D,WAC/ByM,eAAeC,KAAK4D,cAAejU,EAAQ2D,YAC3C,GAEKsE,KAAK2M,OAAOxO,QAAQpG,GAG7B0X,gBAAgBjB,EAAOzQ,GACrB,MAAM2R,EAASlB,IAAUpE,WACzB,OAAOvM,qBAAqBmC,KAAK2M,OAAQ5O,EAAe2R,EAAQ1P,KAAKmN,QAAQlD,MAG/E0F,mBAAmB1O,EAAe2O,GAChC,MAAMC,EAAc7P,KAAKuO,cAActN,GACjC6O,EAAY9P,KAAKuO,cAAcpG,eAAeK,QAAQuD,qBAAsB/L,KAAKqE,WAEvF,OAAO5E,aAAayC,QAAQlC,KAAKqE,SAAUsG,YAAa,CACtD1J,cAAAA,EACA2N,UAAWgB,EACX7L,KAAM+L,EACNzB,GAAIwB,IAIRE,2BAA2BhY,GACzB,GAAIiI,KAAKqN,mBAAoB,CAC3B,MAAM2C,EAAkB7H,eAAeK,QAhRrB,UAgR8CxI,KAAKqN,oBAErE2C,EAAgBhV,UAAUgJ,OA1RN,UA2RpBgM,EAAgBhJ,gBAAgB,gBAEhC,MAAMiJ,EAAa9H,eAAeC,KA/Qb,mBA+QsCpI,KAAKqN,oBAEhE,IAAK,IAAIpN,EAAI,EAAGA,EAAIgQ,EAAWvW,OAAQuG,IACrC,GAAIjH,OAAOkX,SAASD,EAAWhQ,GAAGhI,aAAa,oBAAqB,MAAQ+H,KAAKuO,cAAcxW,GAAU,CACvGkY,EAAWhQ,GAAGjF,UAAUwU,IAjSR,UAkShBS,EAAWhQ,GAAGsG,aAAa,eAAgB,QAC3C,QAMR0H,kBACE,MAAMlW,EAAUiI,KAAK6M,gBAAkB1E,eAAeK,QAAQuD,qBAAsB/L,KAAKqE,UAEzF,IAAKtM,EACH,OAGF,MAAMoY,EAAkBnX,OAAOkX,SAASnY,EAAQE,aAAa,oBAAqB,IAE9EkY,GACFnQ,KAAKmN,QAAQiD,gBAAkBpQ,KAAKmN,QAAQiD,iBAAmBpQ,KAAKmN,QAAQtD,SAC5E7J,KAAKmN,QAAQtD,SAAWsG,GAExBnQ,KAAKmN,QAAQtD,SAAW7J,KAAKmN,QAAQiD,iBAAmBpQ,KAAKmN,QAAQtD,SAIzE+D,OAAOyC,EAAkBtY,GACvB,MAAMyW,EAAQxO,KAAKsQ,kBAAkBD,GAC/BtS,EAAgBoK,eAAeK,QAAQuD,qBAAsB/L,KAAKqE,UAClEkM,EAAqBvQ,KAAKuO,cAAcxQ,GACxCyS,EAAczY,GAAWiI,KAAKyP,gBAAgBjB,EAAOzQ,GAErD0S,EAAmBzQ,KAAKuO,cAAciC,GACtCE,EAAYpP,QAAQtB,KAAK4M,WAEzB8C,EAASlB,IAAUpE,WACnBuG,EAAuBjB,EAAShE,iBAAmBD,eACnDmF,EAAiBlB,EAAS/D,gBAAkBC,gBAC5CgE,EAAqB5P,KAAK6Q,kBAAkBrC,GAElD,GAAIgC,GAAeA,EAAYxV,UAAUC,SAxUnB,UA0UpB,YADA+E,KAAK+M,YAAa,GAIpB,GAAI/M,KAAK+M,WACP,OAIF,GADmB/M,KAAK2P,mBAAmBa,EAAaZ,GACzCpN,iBACb,OAGF,IAAKzE,IAAkByS,EAErB,OAGFxQ,KAAK+M,YAAa,EAEd2D,GACF1Q,KAAKgK,QAGPhK,KAAK+P,2BAA2BS,GAChCxQ,KAAK6M,eAAiB2D,EAEtB,MAAMM,EAAmB,KACvBrR,aAAayC,QAAQlC,KAAKqE,SAAUuG,WAAY,CAC9C3J,cAAeuP,EACf5B,UAAWgB,EACX7L,KAAMwM,EACNlC,GAAIoC,KAIR,GAAIzQ,KAAKqE,SAASrJ,UAAUC,SA5WP,SA4WmC,CACtDuV,EAAYxV,UAAUwU,IAAIoB,GAE1BhV,OAAO4U,GAEPzS,EAAc/C,UAAUwU,IAAImB,GAC5BH,EAAYxV,UAAUwU,IAAImB,GAE1B,MAAMI,EAAmB,KACvBP,EAAYxV,UAAUgJ,OAAO2M,EAAsBC,GACnDJ,EAAYxV,UAAUwU,IAvXJ,UAyXlBzR,EAAc/C,UAAUgJ,OAzXN,SAyXgC4M,EAAgBD,GAElE3Q,KAAK+M,YAAa,EAElBnP,WAAWkT,EAAkB,IAG/B9Q,KAAK2E,eAAeoM,EAAkBhT,GAAe,QAErDA,EAAc/C,UAAUgJ,OAlYJ,UAmYpBwM,EAAYxV,UAAUwU,IAnYF,UAqYpBxP,KAAK+M,YAAa,EAClB+D,IAGEJ,GACF1Q,KAAK+N,QAITuC,kBAAkB1B,GAChB,MAAK,CAACrE,gBAAiBD,gBAAgBnS,SAASyW,GAI5CrS,QACKqS,IAActE,eAAiBD,WAAaD,WAG9CwE,IAActE,eAAiBF,WAAaC,WAP1CuE,EAUXiC,kBAAkBrC,GAChB,MAAK,CAACpE,WAAYC,YAAYlS,SAASqW,GAInCjS,QACKiS,IAAUnE,WAAaC,eAAiBC,gBAG1CiE,IAAUnE,WAAaE,gBAAkBD,eAPvCkE,EAYa3J,yBAAC9M,EAAS8B,GAChC,MAAMkM,EAAO0G,SAASnH,oBAAoBvN,EAAS8B,GAEnD,IAAIsT,QAAEA,GAAYpH,EACI,iBAAXlM,IACTsT,EAAU,IACLA,KACAtT,IAIP,MAAMmX,EAA2B,iBAAXnX,EAAsBA,EAASsT,EAAQpD,MAE7D,GAAsB,iBAAXlQ,EACTkM,EAAKsI,GAAGxU,QACH,GAAsB,iBAAXmX,EAAqB,CACrC,QAA4B,IAAjBjL,EAAKiL,GACd,MAAM,IAAIxW,UAAW,oBAAmBwW,MAG1CjL,EAAKiL,UACI7D,EAAQtD,UAAYsD,EAAQ8D,OACrClL,EAAKiE,QACLjE,EAAKgI,SAIalJ,uBAAChL,GACrB,OAAOmG,KAAK8F,MAAK,WACf2G,SAASyE,kBAAkBlR,KAAMnG,MAIXgL,2BAACvF,GACzB,MAAM5B,EAASjF,uBAAuBuH,MAEtC,IAAKtC,IAAWA,EAAO1C,UAAUC,SA7cT,YA8ctB,OAGF,MAAMpB,EAAS,IACVgN,YAAYI,kBAAkBvJ,MAC9BmJ,YAAYI,kBAAkBjH,OAE7BmR,EAAanR,KAAK/H,aAAa,oBAEjCkZ,IACFtX,EAAOgQ,UAAW,GAGpB4C,SAASyE,kBAAkBxT,EAAQ7D,GAE/BsX,GACF1E,SAAS3H,YAAYpH,GAAQ2Q,GAAG8C,GAGlC7R,EAAM8D,kBAUV3D,aAAakC,GAAG/J,SAAUwO,uBAAsBiG,oBAAqBI,SAAS2E,qBAE9E3R,aAAakC,GAAG9I,OAAQyS,uBAAqB,KAC3C,MAAM+F,EAAYlJ,eAAeC,KAAKkE,oBAEtC,IAAK,IAAIrM,EAAI,EAAGK,EAAM+Q,EAAU3X,OAAQuG,EAAIK,EAAKL,IAC/CwM,SAASyE,kBAAkBG,EAAUpR,GAAIwM,SAAS3H,YAAYuM,EAAUpR,QAW5ExD,mBAAmBgQ,UCjjBnB,MAAM5P,OAAO,WACPyH,WAAW,cACXE,YAAa,eACbyB,eAAe,YAEf2D,UAAU,CACdtD,QAAQ,EACRgL,OAAQ,MAGJnH,cAAc,CAClB7D,OAAQ,UACRgL,OAAQ,kBAGJC,aAAc,mBACdC,cAAe,oBACfC,aAAc,mBACdC,eAAgB,qBAChBtL,uBAAwB,6BAExBV,kBAAkB,OAClBiM,oBAAsB,WACtBC,sBAAwB,aACxBC,qBAAuB,YACvBC,2BAA8B,6BAC9BC,sBAAwB,sBAExBC,MAAQ,QACRC,OAAS,SAETC,iBAAmB,uCACnB/L,uBAAuB,8BAQ7B,MAAMgM,iBAAiBhO,cACrBC,YAAYrM,EAAS8B,GACnB6S,MAAM3U,GAENiI,KAAKoS,kBAAmB,EACxBpS,KAAKmN,QAAUnN,KAAKoN,WAAWvT,GAC/BmG,KAAKqS,cAAgB,GAErB,MAAMC,EAAanK,eAAeC,KAAKjC,wBAEvC,IAAK,IAAIlG,EAAI,EAAGK,EAAMgS,EAAW5Y,OAAQuG,EAAIK,EAAKL,IAAK,CACrD,MAAMsS,EAAOD,EAAWrS,GAClBjI,EAAWO,uBAAuBga,GAClCC,EAAgBrK,eAAeC,KAAKpQ,GACvCoP,QAAOqL,GAAaA,IAAczS,KAAKqE,WAEzB,OAAbrM,GAAqBwa,EAAc9Y,SACrCsG,KAAK0S,UAAY1a,EACjBgI,KAAKqS,cAAc/V,KAAKiW,IAI5BvS,KAAK2S,sBAEA3S,KAAKmN,QAAQmE,QAChBtR,KAAK4S,0BAA0B5S,KAAKqS,cAAerS,KAAK6S,YAGtD7S,KAAKmN,QAAQ7G,QACftG,KAAKsG,SAMEsD,qBACT,OAAOA,UAGE/M,kBACT,OAAOA,OAKTyJ,SACMtG,KAAK6S,WACP7S,KAAK8S,OAEL9S,KAAK+S,OAITA,OACE,GAAI/S,KAAKoS,kBAAoBpS,KAAK6S,WAChC,OAGF,IACIG,EADAC,EAAU,GAGd,GAAIjT,KAAKmN,QAAQmE,OAAQ,CACvB,MAAM7I,EAAWN,eAAeC,KAAK0J,2BAA4B9R,KAAKmN,QAAQmE,QAC9E2B,EAAU9K,eAAeC,KAAK8J,iBAAkBlS,KAAKmN,QAAQmE,QAAQlK,QAAOmL,IAAS9J,EAAStQ,SAASoa,KAGzG,MAAMW,EAAY/K,eAAeK,QAAQxI,KAAK0S,WAC9C,GAAIO,EAAQvZ,OAAQ,CAClB,MAAMyZ,EAAiBF,EAAQ7K,MAAKmK,GAAQW,IAAcX,IAG1D,GAFAS,EAAcG,EAAiBhB,SAASrN,YAAYqO,GAAkB,KAElEH,GAAeA,EAAYZ,iBAC7B,OAKJ,GADmB3S,aAAayC,QAAQlC,KAAKqE,SAAUkN,cACxC/O,iBACb,OAGFyQ,EAAQhZ,SAAQmZ,IACVF,IAAcE,GAChBjB,SAAS7M,oBAAoB8N,EAAY,CAAE9M,QAAQ,IAASwM,OAGzDE,GACHzP,KAAKC,IAAI4P,EAAY9O,WAAU,SAInC,MAAM+O,EAAYrT,KAAKsT,gBAEvBtT,KAAKqE,SAASrJ,UAAUgJ,OA/GA,YAgHxBhE,KAAKqE,SAASrJ,UAAUwU,IA/GE,cAiH1BxP,KAAKqE,SAASkP,MAAMF,GAAa,EAEjCrT,KAAK4S,0BAA0B5S,KAAKqS,eAAe,GACnDrS,KAAKoS,kBAAmB,EAExB,MAYMoB,EAAc,SADSH,EAAU,GAAG5Y,cAAgB4Y,EAAUrR,MAAM,KAG1EhC,KAAK2E,gBAdY,KACf3E,KAAKoS,kBAAmB,EAExBpS,KAAKqE,SAASrJ,UAAUgJ,OAzHA,cA0HxBhE,KAAKqE,SAASrJ,UAAUwU,IA3HF,WADJ,QA8HlBxP,KAAKqE,SAASkP,MAAMF,GAAa,GAEjC5T,aAAayC,QAAQlC,KAAKqE,SAAUmN,iBAMRxR,KAAKqE,UAAU,GAC7CrE,KAAKqE,SAASkP,MAAMF,GAAc,GAAErT,KAAKqE,SAASmP,OAGpDV,OACE,GAAI9S,KAAKoS,mBAAqBpS,KAAK6S,WACjC,OAIF,GADmBpT,aAAayC,QAAQlC,KAAKqE,SAAUoN,cACxCjP,iBACb,OAGF,MAAM6Q,EAAYrT,KAAKsT,gBAEvBtT,KAAKqE,SAASkP,MAAMF,GAAc,GAAErT,KAAKqE,SAASqD,wBAAwB2L,OAE1EzX,OAAOoE,KAAKqE,UAEZrE,KAAKqE,SAASrJ,UAAUwU,IAxJE,cAyJ1BxP,KAAKqE,SAASrJ,UAAUgJ,OA1JA,WADJ,QA6JpB,MAAMyP,EAAqBzT,KAAKqS,cAAc3Y,OAC9C,IAAK,IAAIuG,EAAI,EAAGA,EAAIwT,EAAoBxT,IAAK,CAC3C,MAAMiC,EAAUlC,KAAKqS,cAAcpS,GAC7BsS,EAAO9Z,uBAAuByJ,GAEhCqQ,IAASvS,KAAK6S,SAASN,IACzBvS,KAAK4S,0BAA0B,CAAC1Q,IAAU,GAI9ClC,KAAKoS,kBAAmB,EASxBpS,KAAKqE,SAASkP,MAAMF,GAAa,GAEjCrT,KAAK2E,gBATY,KACf3E,KAAKoS,kBAAmB,EACxBpS,KAAKqE,SAASrJ,UAAUgJ,OAzKA,cA0KxBhE,KAAKqE,SAASrJ,UAAUwU,IA3KF,YA4KtB/P,aAAayC,QAAQlC,KAAKqE,SAAUqN,kBAKR1R,KAAKqE,UAAU,GAG/CwO,SAAS9a,EAAUiI,KAAKqE,UACtB,OAAOtM,EAAQiD,UAAUC,SAtLL,QA2LtBmS,WAAWvT,GAST,OARAA,EAAS,IACJ+P,aACA/C,YAAYI,kBAAkBjH,KAAKqE,aACnCxK,IAEEyM,OAAShF,QAAQzH,EAAOyM,QAC/BzM,EAAOyX,OAAS7X,WAAWI,EAAOyX,QAClC3X,gBAAgBkD,OAAMhD,EAAQsQ,eACvBtQ,EAGTyZ,gBACE,OAAOtT,KAAKqE,SAASrJ,UAAUC,SAnML,uBAmMuC+W,MAAQC,OAG3EU,sBACE,IAAK3S,KAAKmN,QAAQmE,OAChB,OAGF,MAAM7I,EAAWN,eAAeC,KAAK0J,2BAA4B9R,KAAKmN,QAAQmE,QAC9EnJ,eAAeC,KAAKjC,uBAAsBnG,KAAKmN,QAAQmE,QAAQlK,QAAOmL,IAAS9J,EAAStQ,SAASoa,KAC9FtY,SAAQlC,IACP,MAAM2b,EAAWjb,uBAAuBV,GAEpC2b,GACF1T,KAAK4S,0BAA0B,CAAC7a,GAAUiI,KAAK6S,SAASa,OAKhEd,0BAA0Be,EAAcC,GACjCD,EAAaja,QAIlBia,EAAa1Z,SAAQsY,IACfqB,EACFrB,EAAKvX,UAAUgJ,OA/NM,aAiOrBuO,EAAKvX,UAAUwU,IAjOM,aAoOvB+C,EAAKhM,aAAa,gBAAiBqN,MAMjB/O,uBAAChL,GACrB,OAAOmG,KAAK8F,MAAK,WACf,MAAMqH,EAAU,GACM,iBAAXtT,GAAuB,YAAYU,KAAKV,KACjDsT,EAAQ7G,QAAS,GAGnB,MAAMP,EAAOoM,SAAS7M,oBAAoBtF,KAAMmN,GAEhD,GAAsB,iBAAXtT,EAAqB,CAC9B,QAA4B,IAAjBkM,EAAKlM,GACd,MAAM,IAAIW,UAAW,oBAAmBX,MAG1CkM,EAAKlM,UAYb4F,aAAakC,GAAG/J,SAAUwO,uBAAsBD,wBAAsB,SAAU7G,IAEjD,MAAzBA,EAAM5B,OAAO0H,SAAoB9F,EAAMC,gBAAmD,MAAjCD,EAAMC,eAAe6F,UAChF9F,EAAM8D,iBAGR,MAAMpL,EAAWO,uBAAuByH,MACfmI,eAAeC,KAAKpQ,GAE5BiC,SAAQlC,IACvBoa,SAAS7M,oBAAoBvN,EAAS,CAAEuO,QAAQ,IAASA,eAW7D7J,mBAAmB0V,UC5SnB,MAAMtV,OAAO,WACPyH,WAAW,cACXE,YAAa,eACbyB,eAAe,YAEf4N,aAAa,SACbC,UAAY,QACZC,UAAU,MACVC,aAAe,UACfC,eAAiB,YACjBC,mBAAqB,EAErBC,eAAiB,IAAI7Z,OAAQ,4BAE7BmX,aAAc,mBACdC,eAAgB,qBAChBH,aAAc,mBACdC,cAAe,oBACfpL,uBAAwB,6BACxBgO,uBAA0B,+BAC1BC,qBAAwB,6BAExB3O,kBAAkB,OAClB4O,kBAAoB,SACpBC,mBAAqB,UACrBC,qBAAuB,YACvBC,kBAAoB,SAEpBtO,uBAAuB,8BACvBuO,cAAgB,iBAChBC,oBAAsB,cACtBC,uBAAyB,8DAEzBC,cAAgBtY,QAAU,UAAY,YACtCuY,iBAAmBvY,QAAU,YAAc,UAC3CwY,iBAAmBxY,QAAU,aAAe,eAC5CyY,oBAAsBzY,QAAU,eAAiB,aACjD0Y,gBAAkB1Y,QAAU,aAAe,cAC3C2Y,eAAiB3Y,QAAU,cAAgB,aAE3CqN,UAAU,CACdpC,OAAQ,CAAC,EAAG,GACZ2N,SAAU,kBACVC,UAAW,SACXC,QAAS,UACTC,aAAc,KACdC,WAAW,GAGPpL,cAAc,CAClB3C,OAAQ,0BACR2N,SAAU,mBACVC,UAAW,0BACXC,QAAS,SACTC,aAAc,yBACdC,UAAW,oBASb,MAAMC,iBAAiBrR,cACrBC,YAAYrM,EAAS8B,GACnB6S,MAAM3U,GAENiI,KAAKyV,QAAU,KACfzV,KAAKmN,QAAUnN,KAAKoN,WAAWvT,GAC/BmG,KAAK0V,MAAQ1V,KAAK2V,kBAClB3V,KAAK4V,UAAY5V,KAAK6V,gBAKbjM,qBACT,OAAOA,UAGEO,yBACT,OAAOA,cAGEtN,kBACT,OAAOA,OAKTyJ,SACE,OAAOtG,KAAK6S,WAAa7S,KAAK8S,OAAS9S,KAAK+S,OAG9CA,OACE,GAAIlY,WAAWmF,KAAKqE,WAAarE,KAAK6S,SAAS7S,KAAK0V,OAClD,OAGF,MAAMzU,EAAgB,CACpBA,cAAejB,KAAKqE,UAKtB,GAFkB5E,aAAayC,QAAQlC,KAAKqE,SAAUkN,aAAYtQ,GAEpDuB,iBACZ,OAGF,MAAM8O,EAASkE,SAASM,qBAAqB9V,KAAKqE,UAE9CrE,KAAK4V,UACP/O,YAAYC,iBAAiB9G,KAAK0V,MAAO,SAAU,QAEnD1V,KAAK+V,cAAczE,GAOjB,iBAAkB1Z,SAASyD,kBAC5BiW,EAAOjM,QA5Fc,gBA6FtB,GAAGgD,UAAUzQ,SAASoE,KAAKyM,UACxBxO,SAAQsY,GAAQ9S,aAAakC,GAAG4Q,EAAM,YAAa5W,QAGxDqE,KAAKqE,SAAS2R,QACdhW,KAAKqE,SAASkC,aAAa,iBAAiB,GAE5CvG,KAAK0V,MAAM1a,UAAUwU,IA5GD,QA6GpBxP,KAAKqE,SAASrJ,UAAUwU,IA7GJ,QA8GpB/P,aAAayC,QAAQlC,KAAKqE,SAAUmN,cAAavQ,GAGnD6R,OACE,GAAIjY,WAAWmF,KAAKqE,YAAcrE,KAAK6S,SAAS7S,KAAK0V,OACnD,OAGF,MAAMzU,EAAgB,CACpBA,cAAejB,KAAKqE,UAGtBrE,KAAKiW,cAAchV,GAGrBsD,UACMvE,KAAKyV,SACPzV,KAAKyV,QAAQS,UAGfxJ,MAAMnI,UAGR4R,SACEnW,KAAK4V,UAAY5V,KAAK6V,gBAClB7V,KAAKyV,SACPzV,KAAKyV,QAAQU,SAMjBF,cAAchV,GACMxB,aAAayC,QAAQlC,KAAKqE,SAAUoN,aAAYxQ,GACpDuB,mBAMV,iBAAkB5K,SAASyD,iBAC7B,GAAGgN,UAAUzQ,SAASoE,KAAKyM,UACxBxO,SAAQsY,GAAQ9S,aAAaC,IAAI6S,EAAM,YAAa5W,QAGrDqE,KAAKyV,SACPzV,KAAKyV,QAAQS,UAGflW,KAAK0V,MAAM1a,UAAUgJ,OA/JD,QAgKpBhE,KAAKqE,SAASrJ,UAAUgJ,OAhKJ,QAiKpBhE,KAAKqE,SAASkC,aAAa,gBAAiB,SAC5CM,YAAYE,oBAAoB/G,KAAK0V,MAAO,UAC5CjW,aAAayC,QAAQlC,KAAKqE,SAAUqN,eAAczQ,IAGpDmM,WAAWvT,GAST,GARAA,EAAS,IACJmG,KAAKoE,YAAYwF,WACjB/C,YAAYI,kBAAkBjH,KAAKqE,aACnCxK,GAGLF,gBAAgBkD,OAAMhD,EAAQmG,KAAKoE,YAAY+F,aAEf,iBAArBtQ,EAAOub,YAA2B9b,UAAUO,EAAOub,YACV,mBAA3Cvb,EAAOub,UAAU1N,sBAGxB,MAAM,IAAIlN,UAAW,GAAEqC,OAAKpC,+GAG9B,OAAOZ,EAGTkc,cAAczE,GACZ,QAAsB,IAAX8E,OACT,MAAM,IAAI5b,UAAU,gEAGtB,IAAI6b,EAAmBrW,KAAKqE,SAEG,WAA3BrE,KAAKmN,QAAQiI,UACfiB,EAAmB/E,EACVhY,UAAU0G,KAAKmN,QAAQiI,WAChCiB,EAAmB5c,WAAWuG,KAAKmN,QAAQiI,WACA,iBAA3BpV,KAAKmN,QAAQiI,YAC7BiB,EAAmBrW,KAAKmN,QAAQiI,WAGlC,MAAME,EAAetV,KAAKsW,mBACpBC,EAAkBjB,EAAakB,UAAUpO,MAAKqO,GAA8B,gBAAlBA,EAAS7Z,OAA+C,IAArB6Z,EAASC,UAE5G1W,KAAKyV,QAAUW,OAAOO,aAAaN,EAAkBrW,KAAK0V,MAAOJ,GAE7DiB,GACF1P,YAAYC,iBAAiB9G,KAAK0V,MAAO,SAAU,UAIvD7C,SAAS9a,EAAUiI,KAAKqE,UACtB,OAAOtM,EAAQiD,UAAUC,SAnNL,QAsNtB0a,kBACE,OAAOxN,eAAec,KAAKjJ,KAAKqE,SAAUqQ,eAAe,GAG3DkC,gBACE,MAAMC,EAAiB7W,KAAKqE,SAAS3I,WAErC,GAAImb,EAAe7b,UAAUC,SA3NN,WA4NrB,OAAOga,gBAGT,GAAI4B,EAAe7b,UAAUC,SA9NJ,aA+NvB,OAAOia,eAIT,MAAM4B,EAAkF,QAA1Ehe,iBAAiBkH,KAAK0V,OAAO9a,iBAAiB,iBAAiBtC,OAE7E,OAAIue,EAAe7b,UAAUC,SAvOP,UAwOb6b,EAAQhC,iBAAmBD,cAG7BiC,EAAQ9B,oBAAsBD,iBAGvCc,gBACE,OAA0D,OAAnD7V,KAAKqE,SAASgB,QAAS,WAGhC0R,aACE,MAAMvP,OAAEA,GAAWxH,KAAKmN,QAExB,MAAsB,iBAAX3F,EACFA,EAAOnP,MAAM,KAAKgR,KAAI5C,GAAOzN,OAAOkX,SAASzJ,EAAK,MAGrC,mBAAXe,EACFwP,GAAcxP,EAAOwP,EAAYhX,KAAKqE,UAGxCmD,EAGT8O,mBACE,MAAMW,EAAwB,CAC5BC,UAAWlX,KAAK4W,gBAChBJ,UAAW,CAAC,CACV5Z,KAAM,kBACNua,QAAS,CACPhC,SAAUnV,KAAKmN,QAAQgI,WAG3B,CACEvY,KAAM,SACNua,QAAS,CACP3P,OAAQxH,KAAK+W,iBAanB,MAP6B,WAAzB/W,KAAKmN,QAAQkI,UACf4B,EAAsBT,UAAY,CAAC,CACjC5Z,KAAM,cACN8Z,SAAS,KAIN,IACFO,KACsC,mBAA9BjX,KAAKmN,QAAQmI,aAA8BtV,KAAKmN,QAAQmI,aAAa2B,GAAyBjX,KAAKmN,QAAQmI,cAI1H8B,iBAAgBnU,IAAEA,EAAFvF,OAAOA,IACrB,MAAM2Z,EAAQlP,eAAeC,KAAKwM,uBAAwB5U,KAAK0V,OAAOtO,OAAO1M,WAExE2c,EAAM3d,QAMXmE,qBAAqBwZ,EAAO3Z,EAtTT,cAsTiBuF,GAAyBoU,EAAMlf,SAASuF,IAASsY,QAKjEnR,uBAAChL,GACrB,OAAOmG,KAAK8F,MAAK,WACf,MAAMC,EAAOyP,SAASlQ,oBAAoBtF,KAAMnG,GAEhD,GAAsB,iBAAXA,EAAX,CAIA,QAA4B,IAAjBkM,EAAKlM,GACd,MAAM,IAAIW,UAAW,oBAAmBX,MAG1CkM,EAAKlM,SAIQgL,kBAACvF,GAChB,GAAIA,IA3UmB,IA2UTA,EAAMsH,QAAiD,UAAftH,EAAMK,MA9UhD,QA8UoEL,EAAM2D,KACpF,OAGF,MAAMqU,EAAUnP,eAAeC,KAAKjC,wBAEpC,IAAK,IAAIlG,EAAI,EAAGK,EAAMgX,EAAQ5d,OAAQuG,EAAIK,EAAKL,IAAK,CAClD,MAAMsX,EAAU/B,SAAS1Q,YAAYwS,EAAQrX,IAC7C,IAAKsX,IAAyC,IAA9BA,EAAQpK,QAAQoI,UAC9B,SAGF,IAAKgC,EAAQ1E,WACX,SAGF,MAAM5R,EAAgB,CACpBA,cAAesW,EAAQlT,UAGzB,GAAI/E,EAAO,CACT,MAAMkY,EAAelY,EAAMkY,eACrBC,EAAeD,EAAarf,SAASof,EAAQ7B,OACnD,GACE8B,EAAarf,SAASof,EAAQlT,WACC,WAA9BkT,EAAQpK,QAAQoI,YAA2BkC,GACb,YAA9BF,EAAQpK,QAAQoI,WAA2BkC,EAE5C,SAIF,GAAIF,EAAQ7B,MAAMza,SAASqE,EAAM5B,UAA4B,UAAf4B,EAAMK,MA9W5C,QA8WgEL,EAAM2D,KAAoB,qCAAqC1I,KAAK+E,EAAM5B,OAAO0H,UACvJ,SAGiB,UAAf9F,EAAMK,OACRsB,EAAckE,WAAa7F,GAI/BiY,EAAQtB,cAAchV,IAIC4D,4BAAC9M,GAC1B,OAAOU,uBAAuBV,IAAYA,EAAQ2D,WAGxBmJ,6BAACvF,GAQ3B,GAAI,kBAAkB/E,KAAK+E,EAAM5B,OAAO0H,SAxY1B,UAyYZ9F,EAAM2D,KA1YO,WA0Ye3D,EAAM2D,MAtYjB,cAuYf3D,EAAM2D,KAxYO,YAwYmB3D,EAAM2D,KACtC3D,EAAM5B,OAAO2H,QAAQqP,iBACtBP,eAAe5Z,KAAK+E,EAAM2D,KAC3B,OAGF,MAAMyU,EAAW1X,KAAKhF,UAAUC,SAhYZ,QAkYpB,IAAKyc,GAnZU,WAmZEpY,EAAM2D,IACrB,OAMF,GAHA3D,EAAM8D,iBACN9D,EAAMqY,kBAEF9c,WAAWmF,MACb,OAGF,MAAM4X,EAAkB5X,KAAK2I,QAAQxC,wBAAwBnG,KAAOmI,eAAeW,KAAK9I,KAAMmG,wBAAsB,GAC9G1C,EAAW+R,SAASlQ,oBAAoBsS,GAE9C,GAjae,WAiaXtY,EAAM2D,IAKV,MAnaiB,YAmab3D,EAAM2D,KAlaS,cAkae3D,EAAM2D,KACjCyU,GACHjU,EAASsP,YAGXtP,EAAS2T,gBAAgB9X,SAItBoY,GA9aS,UA8aGpY,EAAM2D,KACrBuS,SAASqC,cAdTpU,EAASqP,QAyBfrT,aAAakC,GAAG/J,SAAUwc,uBAAwBjO,uBAAsBqP,SAASsC,uBACjFrY,aAAakC,GAAG/J,SAAUwc,uBAAwBM,cAAec,SAASsC,uBAC1ErY,aAAakC,GAAG/J,SAAUwO,uBAAsBoP,SAASqC,YACzDpY,aAAakC,GAAG/J,SAAUyc,qBAAsBmB,SAASqC,YACzDpY,aAAakC,GAAG/J,SAAUwO,uBAAsBD,wBAAsB,SAAU7G,GAC9EA,EAAM8D,iBACNoS,SAASlQ,oBAAoBtF,MAAMsG,YAUrC7J,mBAAmB+Y,UCrenB,MAAMuC,uBAAyB,oDACzBC,wBAA0B,cAEhC,MAAMC,gBACJ7T,cACEpE,KAAKqE,SAAWzM,SAASoE,KAG3Bkc,WAEE,MAAMC,EAAgBvgB,SAASyD,gBAAgB+c,YAC/C,OAAO3gB,KAAKkX,IAAI9V,OAAOwf,WAAaF,GAGtCrF,OACE,MAAMwF,EAAQtY,KAAKkY,WACnBlY,KAAKuY,mBAELvY,KAAKwY,sBAAsBxY,KAAKqE,SAAU,gBAAgBoU,GAAmBA,EAAkBH,IAE/FtY,KAAKwY,sBAAsBT,uBAAwB,gBAAgBU,GAAmBA,EAAkBH,IACxGtY,KAAKwY,sBApBuB,cAoBwB,eAAeC,GAAmBA,EAAkBH,IAG1GC,mBACEvY,KAAK0Y,sBAAsB1Y,KAAKqE,SAAU,YAC1CrE,KAAKqE,SAASkP,MAAMoF,SAAW,SAGjCH,sBAAsBxgB,EAAU4gB,EAAWzc,GACzC,MAAM0c,EAAiB7Y,KAAKkY,WAW5BlY,KAAK8Y,2BAA2B9gB,GAVHD,IAC3B,GAAIA,IAAYiI,KAAKqE,UAAYxL,OAAOwf,WAAatgB,EAAQqgB,YAAcS,EACzE,OAGF7Y,KAAK0Y,sBAAsB3gB,EAAS6gB,GACpC,MAAMH,EAAkB5f,OAAOC,iBAAiBf,GAAS6gB,GACzD7gB,EAAQwb,MAAMqF,GAAc,GAAEzc,EAASnD,OAAOC,WAAWwf,WAM7DM,QACE/Y,KAAKgZ,wBAAwBhZ,KAAKqE,SAAU,YAC5CrE,KAAKgZ,wBAAwBhZ,KAAKqE,SAAU,gBAC5CrE,KAAKgZ,wBAAwBjB,uBAAwB,gBACrD/X,KAAKgZ,wBA/CuB,cA+C0B,eAGxDN,sBAAsB3gB,EAAS6gB,GAC7B,MAAMK,EAAclhB,EAAQwb,MAAMqF,GAC9BK,GACFpS,YAAYC,iBAAiB/O,EAAS6gB,EAAWK,GAIrDD,wBAAwBhhB,EAAU4gB,GAWhC5Y,KAAK8Y,2BAA2B9gB,GAVHD,IAC3B,MAAMqC,EAAQyM,YAAYU,iBAAiBxP,EAAS6gB,QAC/B,IAAVxe,EACTrC,EAAQwb,MAAM2F,eAAeN,IAE7B/R,YAAYE,oBAAoBhP,EAAS6gB,GACzC7gB,EAAQwb,MAAMqF,GAAaxe,MAOjC0e,2BAA2B9gB,EAAUmhB,GAC/B7f,UAAUtB,GACZmhB,EAASnhB,GAETmQ,eAAeC,KAAKpQ,EAAUgI,KAAKqE,UAAUpK,QAAQkf,GAIzDC,gBACE,OAAOpZ,KAAKkY,WAAa,GClF7B,MAAMtO,UAAU,CACdyP,UAAW,iBACX3e,WAAW,EACXkK,YAAY,EACZ0U,YAAa,OACbC,cAAe,MAGXpP,cAAc,CAClBkP,UAAW,SACX3e,UAAW,UACXkK,WAAY,UACZ0U,YAAa,mBACbC,cAAe,mBAEX1c,OAAO,WACP4I,kBAAkB,OAClBC,kBAAkB,OAElB8T,gBAAmB,wBAEzB,MAAMC,SACJrV,YAAYvK,GACVmG,KAAKmN,QAAUnN,KAAKoN,WAAWvT,GAC/BmG,KAAK0Z,aAAc,EACnB1Z,KAAKqE,SAAW,KAGlB0O,KAAK5W,GACE6D,KAAKmN,QAAQzS,WAKlBsF,KAAK2Z,UAED3Z,KAAKmN,QAAQvI,YACfhJ,OAAOoE,KAAK4Z,eAGd5Z,KAAK4Z,cAAc5e,UAAUwU,IAvBT,QAyBpBxP,KAAK6Z,mBAAkB,KACrB1c,QAAQhB,OAbRgB,QAAQhB,GAiBZ2W,KAAK3W,GACE6D,KAAKmN,QAAQzS,WAKlBsF,KAAK4Z,cAAc5e,UAAUgJ,OApCT,QAsCpBhE,KAAK6Z,mBAAkB,KACrB7Z,KAAKuE,UACLpH,QAAQhB,OARRgB,QAAQhB,GAcZyd,cACE,IAAK5Z,KAAKqE,SAAU,CAClB,MAAMyV,EAAWliB,SAASmiB,cAAc,OACxCD,EAAST,UAAYrZ,KAAKmN,QAAQkM,UAC9BrZ,KAAKmN,QAAQvI,YACfkV,EAAS9e,UAAUwU,IApDH,QAuDlBxP,KAAKqE,SAAWyV,EAGlB,OAAO9Z,KAAKqE,SAGd+I,WAAWvT,GAST,OARAA,EAAS,IACJ+P,aACmB,iBAAX/P,EAAsBA,EAAS,KAIrCyf,YAAc7f,WAAWI,EAAOyf,aACvC3f,gBAAgBkD,OAAMhD,EAAQsQ,eACvBtQ,EAGT8f,UACM3Z,KAAK0Z,cAIT1Z,KAAKmN,QAAQmM,YAAYU,OAAOha,KAAK4Z,eAErCna,aAAakC,GAAG3B,KAAK4Z,cAAeJ,iBAAiB,KACnDrc,QAAQ6C,KAAKmN,QAAQoM,kBAGvBvZ,KAAK0Z,aAAc,GAGrBnV,UACOvE,KAAK0Z,cAIVja,aAAaC,IAAIM,KAAKqE,SAAUmV,iBAEhCxZ,KAAKqE,SAASL,SACdhE,KAAK0Z,aAAc,GAGrBG,kBAAkB1d,GAChBiB,uBAAuBjB,EAAU6D,KAAK4Z,cAAe5Z,KAAKmN,QAAQvI,aClHtE,MAAMgF,UAAU,CACdqQ,YAAa,KACbC,WAAW,GAGP/P,cAAc,CAClB8P,YAAa,UACbC,UAAW,WAGPrd,OAAO,YACPyH,WAAW,eACXE,YAAa,gBACb2V,gBAAiB,uBACjBC,kBAAqB,2BAErBrG,QAAU,MACVsG,gBAAkB,UAClBC,iBAAmB,WAEzB,MAAMC,UACJnW,YAAYvK,GACVmG,KAAKmN,QAAUnN,KAAKoN,WAAWvT,GAC/BmG,KAAKwa,WAAY,EACjBxa,KAAKya,qBAAuB,KAG9BC,WACE,MAAMT,YAAEA,EAAFC,UAAeA,GAAcla,KAAKmN,QAEpCnN,KAAKwa,YAILN,GACFD,EAAYjE,QAGdvW,aAAaC,IAAI9H,SAAU4M,aAC3B/E,aAAakC,GAAG/J,SAAUuiB,iBAAe7a,GAASU,KAAK2a,eAAerb,KACtEG,aAAakC,GAAG/J,SAAUwiB,mBAAmB9a,GAASU,KAAK4a,eAAetb,KAE1EU,KAAKwa,WAAY,GAGnBK,aACO7a,KAAKwa,YAIVxa,KAAKwa,WAAY,EACjB/a,aAAaC,IAAI9H,SAAU4M,cAK7BmW,eAAerb,GACb,MAAM5B,OAAEA,GAAW4B,GACb2a,YAAEA,GAAgBja,KAAKmN,QAE7B,GAAIzP,IAAW9F,UAAY8F,IAAWuc,GAAeA,EAAYhf,SAASyC,GACxE,OAGF,MAAMod,EAAW3S,eAAegB,kBAAkB8Q,GAE1B,IAApBa,EAASphB,OACXugB,EAAYjE,QAjDO,aAkDVhW,KAAKya,qBACdK,EAASA,EAASphB,OAAS,GAAGsc,QAE9B8E,EAAS,GAAG9E,QAIhB4E,eAAetb,GA3DD,QA4DRA,EAAM2D,MAIVjD,KAAKya,qBAAuBnb,EAAMyb,SA9Db,WADD,WAkEtB3N,WAAWvT,GAMT,OALAA,EAAS,IACJ+P,aACmB,iBAAX/P,EAAsBA,EAAS,IAE5CF,gBAAgBkD,OAAMhD,EAAQsQ,eACvBtQ,GCtEX,MAAMgD,OAAO,QACPyH,WAAW,WACXE,YAAa,YACbyB,eAAe,YACf4N,aAAa,SAEbjK,UAAU,CACdkQ,UAAU,EACVhQ,UAAU,EACVkM,OAAO,GAGH7L,cAAc,CAClB2P,SAAU,mBACVhQ,SAAU,UACVkM,MAAO,WAGHvE,aAAc,gBACduJ,qBAAwB,yBACxBtJ,eAAgB,kBAChBH,aAAc,gBACdC,cAAe,iBACfyJ,aAAgB,kBAChBC,oBAAuB,yBACvBC,wBAAyB,2BACzBC,sBAAyB,2BACzBC,wBAA2B,6BAC3BjV,uBAAwB,0BAExBkV,gBAAkB,aAClB7V,kBAAkB,OAClBC,kBAAkB,OAClB6V,kBAAoB,eAEpBC,gBAAgB,cAChBC,gBAAkB,gBAClBC,oBAAsB,cACtBvV,uBAAuB,2BAQ7B,MAAMwV,cAAcxX,cAClBC,YAAYrM,EAAS8B,GACnB6S,MAAM3U,GAENiI,KAAKmN,QAAUnN,KAAKoN,WAAWvT,GAC/BmG,KAAK4b,QAAUzT,eAAeK,QAfV,gBAemCxI,KAAKqE,UAC5DrE,KAAK6b,UAAY7b,KAAK8b,sBACtB9b,KAAK+b,WAAa/b,KAAKgc,uBACvBhc,KAAK6S,UAAW,EAChB7S,KAAKic,sBAAuB,EAC5Bjc,KAAKoS,kBAAmB,EACxBpS,KAAKkc,WAAa,IAAIjE,gBAKbrO,qBACT,OAAOA,UAGE/M,kBACT,OAAOA,OAKTyJ,OAAOrF,GACL,OAAOjB,KAAK6S,SAAW7S,KAAK8S,OAAS9S,KAAK+S,KAAK9R,GAGjD8R,KAAK9R,GACCjB,KAAK6S,UAAY7S,KAAKoS,kBAIR3S,aAAayC,QAAQlC,KAAKqE,SAAUkN,aAAY,CAChEtQ,cAAAA,IAGYuB,mBAIdxC,KAAK6S,UAAW,EAEZ7S,KAAKmc,gBACPnc,KAAKoS,kBAAmB,GAG1BpS,KAAKkc,WAAWpJ,OAEhBlb,SAASoE,KAAKhB,UAAUwU,IAnEJ,cAqEpBxP,KAAKoc,gBAELpc,KAAKqc,kBACLrc,KAAKsc,kBAEL7c,aAAakC,GAAG3B,KAAK4b,QAASP,yBAAyB,KACrD5b,aAAamC,IAAI5B,KAAKqE,SAAU+W,uBAAuB9b,IACjDA,EAAM5B,SAAWsC,KAAKqE,WACxBrE,KAAKic,sBAAuB,SAKlCjc,KAAKuc,eAAc,IAAMvc,KAAKwc,aAAavb,MAG7C6R,OACE,IAAK9S,KAAK6S,UAAY7S,KAAKoS,iBACzB,OAKF,GAFkB3S,aAAayC,QAAQlC,KAAKqE,SAAUoN,cAExCjP,iBACZ,OAGFxC,KAAK6S,UAAW,EAChB,MAAMjO,EAAa5E,KAAKmc,cAEpBvX,IACF5E,KAAKoS,kBAAmB,GAG1BpS,KAAKqc,kBACLrc,KAAKsc,kBAELtc,KAAK+b,WAAWlB,aAEhB7a,KAAKqE,SAASrJ,UAAUgJ,OA1GJ,QA4GpBvE,aAAaC,IAAIM,KAAKqE,SAAU6W,qBAChCzb,aAAaC,IAAIM,KAAK4b,QAASP,yBAE/Brb,KAAK2E,gBAAe,IAAM3E,KAAKyc,cAAczc,KAAKqE,SAAUO,GAG9DL,UACE,CAAC1L,OAAQmH,KAAK4b,SACX3hB,SAAQyiB,GAAejd,aAAaC,IAAIgd,EAlJ5B,eAoJf1c,KAAK6b,UAAUtX,UACfvE,KAAK+b,WAAWlB,aAChBnO,MAAMnI,UAGRoY,eACE3c,KAAKoc,gBAKPN,sBACE,OAAO,IAAIrC,SAAS,CAClB/e,UAAW4G,QAAQtB,KAAKmN,QAAQ2M,UAChClV,WAAY5E,KAAKmc,gBAIrBH,uBACE,OAAO,IAAIzB,UAAU,CACnBN,YAAaja,KAAKqE,WAItB+I,WAAWvT,GAOT,OANAA,EAAS,IACJ+P,aACA/C,YAAYI,kBAAkBjH,KAAKqE,aAChB,iBAAXxK,EAAsBA,EAAS,IAE5CF,gBAAgBkD,OAAMhD,EAAQsQ,eACvBtQ,EAGT2iB,aAAavb,GACX,MAAM2D,EAAa5E,KAAKmc,cAClBS,EAAYzU,eAAeK,QArJT,cAqJsCxI,KAAK4b,SAE9D5b,KAAKqE,SAAS3I,YAAcsE,KAAKqE,SAAS3I,WAAWlC,WAAasB,KAAKC,cAE1EnD,SAASoE,KAAKge,OAAOha,KAAKqE,UAG5BrE,KAAKqE,SAASkP,MAAM8B,QAAU,QAC9BrV,KAAKqE,SAAS2C,gBAAgB,eAC9BhH,KAAKqE,SAASkC,aAAa,cAAc,GACzCvG,KAAKqE,SAASkC,aAAa,OAAQ,UACnCvG,KAAKqE,SAASwY,UAAY,EAEtBD,IACFA,EAAUC,UAAY,GAGpBjY,GACFhJ,OAAOoE,KAAKqE,UAGdrE,KAAKqE,SAASrJ,UAAUwU,IA/KJ,QA4LpBxP,KAAK2E,gBAXsB,KACrB3E,KAAKmN,QAAQ6I,OACfhW,KAAK+b,WAAWrB,WAGlB1a,KAAKoS,kBAAmB,EACxB3S,aAAayC,QAAQlC,KAAKqE,SAAUmN,cAAa,CAC/CvQ,cAAAA,MAIoCjB,KAAK4b,QAAShX,GAGxDyX,kBACMrc,KAAK6S,SACPpT,aAAakC,GAAG3B,KAAKqE,SAAU8W,yBAAuB7b,IAChDU,KAAKmN,QAAQrD,UA9NN,WA8NkBxK,EAAM2D,KACjC3D,EAAM8D,iBACNpD,KAAK8S,QACK9S,KAAKmN,QAAQrD,UAjOd,WAiO0BxK,EAAM2D,KACzCjD,KAAK8c,gCAITrd,aAAaC,IAAIM,KAAKqE,SAAU8W,yBAIpCmB,kBACMtc,KAAK6S,SACPpT,aAAakC,GAAG9I,OAAQoiB,cAAc,IAAMjb,KAAKoc,kBAEjD3c,aAAaC,IAAI7G,OAAQoiB,cAI7BwB,aACEzc,KAAKqE,SAASkP,MAAM8B,QAAU,OAC9BrV,KAAKqE,SAASkC,aAAa,eAAe,GAC1CvG,KAAKqE,SAAS2C,gBAAgB,cAC9BhH,KAAKqE,SAAS2C,gBAAgB,QAC9BhH,KAAKoS,kBAAmB,EACxBpS,KAAK6b,UAAU/I,MAAK,KAClBlb,SAASoE,KAAKhB,UAAUgJ,OA/NN,cAgOlBhE,KAAK+c,oBACL/c,KAAKkc,WAAWnD,QAChBtZ,aAAayC,QAAQlC,KAAKqE,SAAUqN,mBAIxC6K,cAAcpgB,GACZsD,aAAakC,GAAG3B,KAAKqE,SAAU6W,qBAAqB5b,IAC9CU,KAAKic,qBACPjc,KAAKic,sBAAuB,EAI1B3c,EAAM5B,SAAW4B,EAAM0d,iBAIG,IAA1Bhd,KAAKmN,QAAQ2M,SACf9Z,KAAK8S,OAC8B,WAA1B9S,KAAKmN,QAAQ2M,UACtB9Z,KAAK8c,iCAIT9c,KAAK6b,UAAU9I,KAAK5W,GAGtBggB,cACE,OAAOnc,KAAKqE,SAASrJ,UAAUC,SA3PX,QA8PtB6hB,6BAEE,GADkBrd,aAAayC,QAAQlC,KAAKqE,SAAU2W,sBACxCxY,iBACZ,OAGF,MAAMxH,UAAEA,EAAFiiB,aAAaA,EAAb1J,MAA2BA,GAAUvT,KAAKqE,SAC1C6Y,EAAqBD,EAAerlB,SAASyD,gBAAgB8hB,cAG7DD,GAA0C,WAApB3J,EAAM6J,WAA2BpiB,EAAUC,SAtQjD,kBA0QjBiiB,IACH3J,EAAM6J,UAAY,UAGpBpiB,EAAUwU,IA9QY,gBA+QtBxP,KAAK2E,gBAAe,KAClB3J,EAAUgJ,OAhRU,gBAiRfkZ,GACHld,KAAK2E,gBAAe,KAClB4O,EAAM6J,UAAY,KACjBpd,KAAK4b,WAET5b,KAAK4b,SAER5b,KAAKqE,SAAS2R,SAOhBoG,gBACE,MAAMc,EAAqBld,KAAKqE,SAAS4Y,aAAerlB,SAASyD,gBAAgB8hB,aAC3EtE,EAAiB7Y,KAAKkc,WAAWhE,WACjCmF,EAAoBxE,EAAiB,IAErCwE,GAAqBH,IAAuB3gB,SAAa8gB,IAAsBH,GAAsB3gB,WACzGyD,KAAKqE,SAASkP,MAAM+J,YAAe,GAAEzE,QAGlCwE,IAAsBH,IAAuB3gB,UAAc8gB,GAAqBH,GAAsB3gB,WACzGyD,KAAKqE,SAASkP,MAAMgK,aAAgB,GAAE1E,OAI1CkE,oBACE/c,KAAKqE,SAASkP,MAAM+J,YAAc,GAClCtd,KAAKqE,SAASkP,MAAMgK,aAAe,GAKf1Y,uBAAChL,EAAQoH,GAC7B,OAAOjB,KAAK8F,MAAK,WACf,MAAMC,EAAO4V,MAAMrW,oBAAoBtF,KAAMnG,GAE7C,GAAsB,iBAAXA,EAAX,CAIA,QAA4B,IAAjBkM,EAAKlM,GACd,MAAM,IAAIW,UAAW,oBAAmBX,MAG1CkM,EAAKlM,GAAQoH,QAWnBxB,aAAakC,GAAG/J,SAAUwO,uBAAsBD,wBAAsB,SAAU7G,GAC9E,MAAM5B,EAASjF,uBAAuBuH,MAElC,CAAC,IAAK,QAAQ7H,SAAS6H,KAAKoF,UAC9B9F,EAAM8D,iBAGR3D,aAAamC,IAAIlE,EAAQ6T,cAAYiM,IAC/BA,EAAUhb,kBAKd/C,aAAamC,IAAIlE,EAAQgU,gBAAc,KACjChX,UAAUsF,OACZA,KAAKgW,cAMX,MAAMyH,EAAetV,eAAeK,QA9VhB,eA+VhBiV,GACF9B,MAAM7W,YAAY2Y,GAAc3K,OAGrB6I,MAAMrW,oBAAoB5H,GAElC4I,OAAOtG,SAGdgF,qBAAqB2W,OASrBlf,mBAAmBkf,OCrZnB,MAAM9e,OAAO,YACPyH,WAAW,eACXE,YAAa,gBACbyB,eAAe,YACfqF,sBAAuB,6BACvBuI,WAAa,SAEbjK,UAAU,CACdkQ,UAAU,EACVhQ,UAAU,EACV4T,QAAQ,GAGJvT,cAAc,CAClB2P,SAAU,UACVhQ,SAAU,UACV4T,OAAQ,WAGJhY,kBAAkB,OAClBiY,oBAAsB,qBACtBnC,cAAgB,kBAEhBjK,aAAc,oBACdC,cAAe,qBACfC,aAAc,oBACdC,eAAgB,sBAChBtL,uBAAwB,8BACxB+U,sBAAyB,+BAEzBhV,uBAAuB,+BAQ7B,MAAMyX,kBAAkBzZ,cACtBC,YAAYrM,EAAS8B,GACnB6S,MAAM3U,GAENiI,KAAKmN,QAAUnN,KAAKoN,WAAWvT,GAC/BmG,KAAK6S,UAAW,EAChB7S,KAAK6b,UAAY7b,KAAK8b,sBACtB9b,KAAK+b,WAAa/b,KAAKgc,uBACvBhc,KAAK2N,qBAKI9Q,kBACT,OAAOA,OAGE+M,qBACT,OAAOA,UAKTtD,OAAOrF,GACL,OAAOjB,KAAK6S,SAAW7S,KAAK8S,OAAS9S,KAAK+S,KAAK9R,GAGjD8R,KAAK9R,GACCjB,KAAK6S,UAISpT,aAAayC,QAAQlC,KAAKqE,SAAUkN,aAAY,CAAEtQ,cAAAA,IAEtDuB,mBAIdxC,KAAK6S,UAAW,EAChB7S,KAAKqE,SAASkP,MAAMsK,WAAa,UAEjC7d,KAAK6b,UAAU9I,OAEV/S,KAAKmN,QAAQuQ,SAChB,IAAIzF,iBAAkBnF,OAGxB9S,KAAKqE,SAAS2C,gBAAgB,eAC9BhH,KAAKqE,SAASkC,aAAa,cAAc,GACzCvG,KAAKqE,SAASkC,aAAa,OAAQ,UACnCvG,KAAKqE,SAASrJ,UAAUwU,IArEJ,QA+EpBxP,KAAK2E,gBARoB,KAClB3E,KAAKmN,QAAQuQ,QAChB1d,KAAK+b,WAAWrB,WAGlBjb,aAAayC,QAAQlC,KAAKqE,SAAUmN,cAAa,CAAEvQ,cAAAA,MAGfjB,KAAKqE,UAAU,IAGvDyO,OACO9S,KAAK6S,WAIQpT,aAAayC,QAAQlC,KAAKqE,SAAUoN,cAExCjP,mBAIdxC,KAAK+b,WAAWlB,aAChB7a,KAAKqE,SAASyZ,OACd9d,KAAK6S,UAAW,EAChB7S,KAAKqE,SAASrJ,UAAUgJ,OAhGJ,QAiGpBhE,KAAK6b,UAAU/I,OAef9S,KAAK2E,gBAboB,KACvB3E,KAAKqE,SAASkC,aAAa,eAAe,GAC1CvG,KAAKqE,SAAS2C,gBAAgB,cAC9BhH,KAAKqE,SAAS2C,gBAAgB,QAC9BhH,KAAKqE,SAASkP,MAAMsK,WAAa,SAE5B7d,KAAKmN,QAAQuQ,SAChB,IAAIzF,iBAAkBc,QAGxBtZ,aAAayC,QAAQlC,KAAKqE,SAAUqN,kBAGA1R,KAAKqE,UAAU,KAGvDE,UACEvE,KAAK6b,UAAUtX,UACfvE,KAAK+b,WAAWlB,aAChBnO,MAAMnI,UAKR6I,WAAWvT,GAOT,OANAA,EAAS,IACJ+P,aACA/C,YAAYI,kBAAkBjH,KAAKqE,aAChB,iBAAXxK,EAAsBA,EAAS,IAE5CF,gBAAgBkD,OAAMhD,EAAQsQ,eACvBtQ,EAGTiiB,sBACE,OAAO,IAAIrC,SAAS,CAClBJ,UAAWsE,oBACXjjB,UAAWsF,KAAKmN,QAAQ2M,SACxBlV,YAAY,EACZ0U,YAAatZ,KAAKqE,SAAS3I,WAC3B6d,cAAe,IAAMvZ,KAAK8S,SAI9BkJ,uBACE,OAAO,IAAIzB,UAAU,CACnBN,YAAaja,KAAKqE,WAItBsJ,qBACElO,aAAakC,GAAG3B,KAAKqE,SAAU8W,uBAAuB7b,IAChDU,KAAKmN,QAAQrD,UArKJ,WAqKgBxK,EAAM2D,KACjCjD,KAAK8S,UAOWjO,uBAAChL,GACrB,OAAOmG,KAAK8F,MAAK,WACf,MAAMC,EAAO6X,UAAUtY,oBAAoBtF,KAAMnG,GAEjD,GAAsB,iBAAXA,EAAX,CAIA,QAAqBmM,IAAjBD,EAAKlM,IAAyBA,EAAOzB,WAAW,MAAmB,gBAAXyB,EAC1D,MAAM,IAAIW,UAAW,oBAAmBX,MAG1CkM,EAAKlM,GAAQmG,WAWnBP,aAAakC,GAAG/J,SAAUwO,uBAAsBD,wBAAsB,SAAU7G,GAC9E,MAAM5B,EAASjF,uBAAuBuH,MAMtC,GAJI,CAAC,IAAK,QAAQ7H,SAAS6H,KAAKoF,UAC9B9F,EAAM8D,iBAGJvI,WAAWmF,MACb,OAGFP,aAAamC,IAAIlE,EAAQgU,gBAAc,KAEjChX,UAAUsF,OACZA,KAAKgW,WAKT,MAAMyH,EAAetV,eAAeK,QAAQgT,eACxCiC,GAAgBA,IAAiB/f,GACnCkgB,UAAU9Y,YAAY2Y,GAAc3K,OAGzB8K,UAAUtY,oBAAoB5H,GACtC4I,OAAOtG,SAGdP,aAAakC,GAAG9I,OAAQyS,uBAAqB,IAC3CnD,eAAeC,KAAKoT,eAAevhB,SAAQsP,GAAMqU,UAAUtY,oBAAoBiE,GAAIwJ,WAGrF/N,qBAAqB4Y,WAOrBnhB,mBAAmBmhB,WCtQnB,MAAMG,cAAgB,IAAI9e,IAAI,CAC5B,aACA,OACA,OACA,WACA,WACA,SACA,MACA,eAGI+e,uBAAyB,iBAOzBC,iBAAmB,iEAOnBC,iBAAmB,qIAEnBC,iBAAmB,CAACC,EAAWC,KACnC,MAAMC,EAAgBF,EAAUG,SAASjnB,cAEzC,GAAI+mB,EAAqBlmB,SAASmmB,GAChC,OAAIP,cAAcjd,IAAIwd,IACbhd,QAAQ2c,iBAAiB1jB,KAAK6jB,EAAUI,YAAcN,iBAAiB3jB,KAAK6jB,EAAUI,YAMjG,MAAMC,EAASJ,EAAqBjX,QAAOsX,GAAkBA,aAA0BpkB,SAGvF,IAAK,IAAI2F,EAAI,EAAGK,EAAMme,EAAO/kB,OAAQuG,EAAIK,EAAKL,IAC5C,GAAIwe,EAAOxe,GAAG1F,KAAK+jB,GACjB,OAAO,EAIX,OAAO,GAGIK,iBAAmB,CAE9B,IAAK,CAAC,QAAS,MAAO,KAAM,OAAQ,OAAQX,wBAC5CY,EAAG,CAAC,SAAU,OAAQ,QAAS,OAC/BC,KAAM,GACNC,EAAG,GACHC,GAAI,GACJC,IAAK,GACLC,KAAM,GACNC,IAAK,GACLC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJzf,EAAG,GACH0f,IAAK,CAAC,MAAO,SAAU,MAAO,QAAS,QAAS,UAChDC,GAAI,GACJC,GAAI,GACJC,EAAG,GACHC,IAAK,GACLC,EAAG,GACHC,MAAO,GACPC,KAAM,GACNC,IAAK,GACLC,IAAK,GACLC,OAAQ,GACRC,EAAG,GACHC,GAAI,IAGC,SAASC,aAAaC,EAAYC,EAAWC,GAClD,IAAKF,EAAW/mB,OACd,OAAO+mB,EAGT,GAAIE,GAAoC,mBAAfA,EACvB,OAAOA,EAAWF,GAGpB,MACMG,GADY,IAAI/nB,OAAOgoB,WACKC,gBAAgBL,EAAY,aACxD3F,EAAW,GAAGzS,UAAUuY,EAAgB5kB,KAAK+D,iBAAiB,MAEpE,IAAK,IAAIE,EAAI,EAAGK,EAAMwa,EAASphB,OAAQuG,EAAIK,EAAKL,IAAK,CACnD,MAAMlI,EAAU+iB,EAAS7a,GACnB8gB,EAAchpB,EAAQwmB,SAASjnB,cAErC,IAAKyC,OAAOC,KAAK0mB,GAAWvoB,SAAS4oB,GAAc,CACjDhpB,EAAQiM,SAER,SAGF,MAAMgd,EAAgB,GAAG3Y,UAAUtQ,EAAQmP,YACrC+Z,EAAoB,GAAG5Y,OAAOqY,EAAU,MAAQ,GAAIA,EAAUK,IAAgB,IAEpFC,EAAc/mB,SAAQmkB,IACfD,iBAAiBC,EAAW6C,IAC/BlpB,EAAQiP,gBAAgBoX,EAAUG,aAKxC,OAAOqC,EAAgB5kB,KAAKklB,UC5F9B,MAAMrkB,OAAO,UACPyH,WAAW,aACXE,YAAa,cACb2c,eAAe,aACfC,sBAAwB,IAAIniB,IAAI,CAAC,WAAY,YAAa,eAE1DkL,cAAc,CAClBkX,UAAW,UACXC,SAAU,SACVC,MAAO,4BACPrf,QAAS,SACTsf,MAAO,kBACPC,KAAM,UACNzpB,SAAU,mBACVkf,UAAW,oBACX1P,OAAQ,0BACR0L,UAAW,2BACXwO,mBAAoB,QACpBvM,SAAU,mBACVwM,YAAa,oBACbC,SAAU,UACVjB,WAAY,kBACZD,UAAW,SACXpL,aAAc,0BAGVuM,cAAgB,CACpBC,KAAM,OACNC,IAAK,MACLC,MAAOzlB,QAAU,OAAS,QAC1B0lB,OAAQ,SACRC,KAAM3lB,QAAU,QAAU,QAGtBqN,UAAU,CACdyX,WAAW,EACXC,SAAU,+GAIVpf,QAAS,cACTqf,MAAO,GACPC,MAAO,EACPC,MAAM,EACNzpB,UAAU,EACVkf,UAAW,MACX1P,OAAQ,CAAC,EAAG,GACZ0L,WAAW,EACXwO,mBAAoB,CAAC,MAAO,QAAS,SAAU,QAC/CvM,SAAU,kBACVwM,YAAa,GACbC,UAAU,EACVjB,WAAY,KACZD,UAAW/B,iBACXrJ,aAAc,MAGVjc,QAAQ,CACZ8oB,KAAO,kBACPC,OAAS,oBACTC,KAAO,kBACPC,MAAQ,mBACRC,SAAW,sBACXC,MAAQ,mBACRC,QAAU,qBACVC,SAAW,sBACXC,WAAa,wBACbC,WAAa,yBAGTnd,kBAAkB,OAClBod,iBAAmB,QACnBnd,kBAAkB,OAElBod,iBAAmB,OACnBC,gBAAkB,MAElBC,uBAAyB,iBACzBC,eAAkB,SAElBC,iBAAmB,gBAEnBC,cAAgB,QAChBC,cAAgB,QAChBC,cAAgB,QAChBC,eAAiB,SAQvB,MAAMC,gBAAgBpf,cACpBC,YAAYrM,EAAS8B,GACnB,QAAsB,IAAXuc,OACT,MAAM,IAAI5b,UAAU,+DAGtBkS,MAAM3U,GAGNiI,KAAKwjB,YAAa,EAClBxjB,KAAKyjB,SAAW,EAChBzjB,KAAK0jB,YAAc,GACnB1jB,KAAK2jB,eAAiB,GACtB3jB,KAAKyV,QAAU,KAGfzV,KAAKmN,QAAUnN,KAAKoN,WAAWvT,GAC/BmG,KAAK4jB,IAAM,KAEX5jB,KAAK6jB,gBAKIja,qBACT,OAAOA,UAGE/M,kBACT,OAAOA,OAGExD,mBACT,OAAOA,QAGE8Q,yBACT,OAAOA,cAKT2Z,SACE9jB,KAAKwjB,YAAa,EAGpBO,UACE/jB,KAAKwjB,YAAa,EAGpBQ,gBACEhkB,KAAKwjB,YAAcxjB,KAAKwjB,WAG1Bld,OAAOhH,GACL,GAAKU,KAAKwjB,WAIV,GAAIlkB,EAAO,CACT,MAAMiY,EAAUvX,KAAKikB,6BAA6B3kB,GAElDiY,EAAQoM,eAAeO,OAAS3M,EAAQoM,eAAeO,MAEnD3M,EAAQ4M,uBACV5M,EAAQ6M,OAAO,KAAM7M,GAErBA,EAAQ8M,OAAO,KAAM9M,OAElB,CACL,GAAIvX,KAAKskB,gBAAgBtpB,UAAUC,SA3FjB,QA6FhB,YADA+E,KAAKqkB,OAAO,KAAMrkB,MAIpBA,KAAKokB,OAAO,KAAMpkB,OAItBuE,UACE+K,aAAatP,KAAKyjB,UAElBhkB,aAAaC,IAAIM,KAAKqE,SAASgB,QAjGX,UAEC,gBA+FqDrF,KAAKukB,mBAE3EvkB,KAAK4jB,KACP5jB,KAAK4jB,IAAI5f,SAGXhE,KAAKwkB,iBACL9X,MAAMnI,UAGRwO,OACE,GAAoC,SAAhC/S,KAAKqE,SAASkP,MAAM8B,QACtB,MAAM,IAAItQ,MAAM,uCAGlB,IAAM/E,KAAKykB,kBAAmBzkB,KAAKwjB,WACjC,OAGF,MAAMhG,EAAY/d,aAAayC,QAAQlC,KAAKqE,SAAUrE,KAAKoE,YAAY/K,MAAMgpB,MACvEqC,EAAatpB,eAAe4E,KAAKqE,UACjCsgB,EAA4B,OAAfD,EACjB1kB,KAAKqE,SAASugB,cAAcvpB,gBAAgBJ,SAAS+E,KAAKqE,UAC1DqgB,EAAWzpB,SAAS+E,KAAKqE,UAE3B,GAAImZ,EAAUhb,mBAAqBmiB,EACjC,OAK4B,YAA1B3kB,KAAKoE,YAAYvH,MAAsBmD,KAAK4jB,KAAO5jB,KAAK6kB,aAAe7kB,KAAK4jB,IAAIprB,cAjIzD,kBAiI+F0oB,YACxHlhB,KAAKwkB,iBACLxkB,KAAK4jB,IAAI5f,SACThE,KAAK4jB,IAAM,MAGb,MAAMA,EAAM5jB,KAAKskB,gBACXQ,EAAQvtB,OAAOyI,KAAKoE,YAAYvH,MAEtC+mB,EAAIrd,aAAa,KAAMue,GACvB9kB,KAAKqE,SAASkC,aAAa,mBAAoBue,GAE3C9kB,KAAKmN,QAAQkU,WACfuC,EAAI5oB,UAAUwU,IArJI,QAwJpB,MAAM0H,EAA8C,mBAA3BlX,KAAKmN,QAAQ+J,UACpClX,KAAKmN,QAAQ+J,UAAU9f,KAAK4I,KAAM4jB,EAAK5jB,KAAKqE,UAC5CrE,KAAKmN,QAAQ+J,UAET6N,EAAa/kB,KAAKglB,eAAe9N,GACvClX,KAAKilB,oBAAoBF,GAEzB,MAAM7R,UAAEA,GAAclT,KAAKmN,QAC3B5J,KAAKC,IAAIogB,EAAK5jB,KAAKoE,YAAYE,SAAUtE,MAEpCA,KAAKqE,SAASugB,cAAcvpB,gBAAgBJ,SAAS+E,KAAK4jB,OAC7D1Q,EAAU8G,OAAO4J,GACjBnkB,aAAayC,QAAQlC,KAAKqE,SAAUrE,KAAKoE,YAAY/K,MAAMkpB,WAGzDviB,KAAKyV,QACPzV,KAAKyV,QAAQU,SAEbnW,KAAKyV,QAAUW,OAAOO,aAAa3W,KAAKqE,SAAUuf,EAAK5jB,KAAKsW,iBAAiByO,IAG/EnB,EAAI5oB,UAAUwU,IA3KM,QA6KpB,MAAMmS,EAAc3hB,KAAKklB,yBAAyBllB,KAAKmN,QAAQwU,aAC3DA,GACFiC,EAAI5oB,UAAUwU,OAAOmS,EAAYtpB,MAAM,MAOrC,iBAAkBT,SAASyD,iBAC7B,GAAGgN,UAAUzQ,SAASoE,KAAKyM,UAAUxO,SAAQlC,IAC3C0H,aAAakC,GAAG5J,EAAS,YAAa4D,SAI1C,MAWMiJ,EAAa5E,KAAK4jB,IAAI5oB,UAAUC,SAzMlB,QA0MpB+E,KAAK2E,gBAZY,KACf,MAAMwgB,EAAiBnlB,KAAK0jB,YAE5B1jB,KAAK0jB,YAAc,KACnBjkB,aAAayC,QAAQlC,KAAKqE,SAAUrE,KAAKoE,YAAY/K,MAAMipB,OA7LzC,QA+Ld6C,GACFnlB,KAAKqkB,OAAO,KAAMrkB,QAKQA,KAAK4jB,IAAKhf,GAG1CkO,OACE,IAAK9S,KAAKyV,QACR,OAGF,MAAMmO,EAAM5jB,KAAKskB,gBAkBjB,GADkB7kB,aAAayC,QAAQlC,KAAKqE,SAAUrE,KAAKoE,YAAY/K,MAAM8oB,MAC/D3f,iBACZ,OAGFohB,EAAI5oB,UAAUgJ,OAtOM,QA0OhB,iBAAkBpM,SAASyD,iBAC7B,GAAGgN,UAAUzQ,SAASoE,KAAKyM,UACxBxO,SAAQlC,GAAW0H,aAAaC,IAAI3H,EAAS,YAAa4D,QAG/DqE,KAAK2jB,eAAL,OAAqC,EACrC3jB,KAAK2jB,eAAL,OAAqC,EACrC3jB,KAAK2jB,eAAL,OAAqC,EAErC,MAAM/e,EAAa5E,KAAK4jB,IAAI5oB,UAAUC,SArPlB,QAsPpB+E,KAAK2E,gBAnCY,KACX3E,KAAKmkB,yBAhNU,SAoNfnkB,KAAK0jB,aACPE,EAAI5f,SAGNhE,KAAKolB,iBACLplB,KAAKqE,SAAS2C,gBAAgB,oBAC9BvH,aAAayC,QAAQlC,KAAKqE,SAAUrE,KAAKoE,YAAY/K,MAAM+oB,QAE3DpiB,KAAKwkB,oBAsBuBxkB,KAAK4jB,IAAKhf,GACxC5E,KAAK0jB,YAAc,GAGrBvN,SACuB,OAAjBnW,KAAKyV,SACPzV,KAAKyV,QAAQU,SAMjBsO,gBACE,OAAOnjB,QAAQtB,KAAK6kB,YAGtBP,gBACE,GAAItkB,KAAK4jB,IACP,OAAO5jB,KAAK4jB,IAGd,MAAM7rB,EAAUH,SAASmiB,cAAc,OACvChiB,EAAQmpB,UAAYlhB,KAAKmN,QAAQmU,SAEjC,MAAMsC,EAAM7rB,EAAQ0Q,SAAS,GAK7B,OAJAzI,KAAKqlB,WAAWzB,GAChBA,EAAI5oB,UAAUgJ,OAhRM,OAEA,QAgRpBhE,KAAK4jB,IAAMA,EACJ5jB,KAAK4jB,IAGdyB,WAAWzB,GACT5jB,KAAKslB,uBAAuB1B,EAAK5jB,KAAK6kB,WAhRX,kBAmR7BS,uBAAuBhE,EAAUiE,EAASvtB,GACxC,MAAMwtB,EAAkBrd,eAAeK,QAAQxQ,EAAUspB,GAEpDiE,IAAWC,EAMhBxlB,KAAKylB,kBAAkBD,EAAiBD,GALtCC,EAAgBxhB,SAQpByhB,kBAAkB1tB,EAASwtB,GACzB,GAAgB,OAAZxtB,EAIJ,OAAIuB,UAAUisB,IACZA,EAAU9rB,WAAW8rB,QAGjBvlB,KAAKmN,QAAQsU,KACX8D,EAAQ7pB,aAAe3D,IACzBA,EAAQmpB,UAAY,GACpBnpB,EAAQiiB,OAAOuL,IAGjBxtB,EAAQ2tB,YAAcH,EAAQG,mBAM9B1lB,KAAKmN,QAAQsU,MACXzhB,KAAKmN,QAAQyU,WACf2D,EAAU/E,aAAa+E,EAASvlB,KAAKmN,QAAQuT,UAAW1gB,KAAKmN,QAAQwT,aAGvE5oB,EAAQmpB,UAAYqE,GAEpBxtB,EAAQ2tB,YAAcH,GAI1BV,WACE,MAAMtD,EAAQvhB,KAAKqE,SAASpM,aAAa,2BAA6B+H,KAAKmN,QAAQoU,MAEnF,OAAOvhB,KAAKklB,yBAAyB3D,GAGvCoE,iBAAiBZ,GACf,MAAmB,UAAfA,EACK,MAGU,SAAfA,EACK,QAGFA,EAKTd,6BAA6B3kB,EAAOiY,GAClC,OAAOA,GAAWvX,KAAKoE,YAAYkB,oBAAoBhG,EAAMC,eAAgBS,KAAK4lB,sBAGpF7O,aACE,MAAMvP,OAAEA,GAAWxH,KAAKmN,QAExB,MAAsB,iBAAX3F,EACFA,EAAOnP,MAAM,KAAKgR,KAAI5C,GAAOzN,OAAOkX,SAASzJ,EAAK,MAGrC,mBAAXe,EACFwP,GAAcxP,EAAOwP,EAAYhX,KAAKqE,UAGxCmD,EAGT0d,yBAAyBK,GACvB,MAA0B,mBAAZA,EAAyBA,EAAQnuB,KAAK4I,KAAKqE,UAAYkhB,EAGvEjP,iBAAiByO,GACf,MAAM9N,EAAwB,CAC5BC,UAAW6N,EACXvO,UAAW,CACT,CACE5Z,KAAM,OACNua,QAAS,CACPuK,mBAAoB1hB,KAAKmN,QAAQuU,qBAGrC,CACE9kB,KAAM,SACNua,QAAS,CACP3P,OAAQxH,KAAK+W,eAGjB,CACEna,KAAM,kBACNua,QAAS,CACPhC,SAAUnV,KAAKmN,QAAQgI,WAG3B,CACEvY,KAAM,QACNua,QAAS,CACPpf,QAAU,IAAGiI,KAAKoE,YAAYvH,eAGlC,CACED,KAAM,WACN8Z,SAAS,EACTmP,MAAO,aACP9oB,GAAIgJ,GAAQ/F,KAAK8lB,6BAA6B/f,KAGlDggB,cAAehgB,IACTA,EAAKoR,QAAQD,YAAcnR,EAAKmR,WAClClX,KAAK8lB,6BAA6B/f,KAKxC,MAAO,IACFkR,KACsC,mBAA9BjX,KAAKmN,QAAQmI,aAA8BtV,KAAKmN,QAAQmI,aAAa2B,GAAyBjX,KAAKmN,QAAQmI,cAI1H2P,oBAAoBF,GAClB/kB,KAAKskB,gBAAgBtpB,UAAUwU,IAAK,GAAExP,KAAKgmB,0BAA0BhmB,KAAK2lB,iBAAiBZ,MAG7FC,eAAe9N,GACb,OAAO2K,cAAc3K,EAAUzc,eAGjCopB,gBACmB7jB,KAAKmN,QAAQjL,QAAQ7J,MAAM,KAEnC4B,SAAQiI,IACf,GAAgB,UAAZA,EACFzC,aAAakC,GAAG3B,KAAKqE,SAAUrE,KAAKoE,YAAY/K,MAAMmpB,MAAOxiB,KAAKmN,QAAQnV,UAAUsH,GAASU,KAAKsG,OAAOhH,UACpG,GA/ZU,WA+ZN4C,EAA4B,CACrC,MAAM+jB,EAnaQ,UAmaE/jB,EACdlC,KAAKoE,YAAY/K,MAAMspB,WACvB3iB,KAAKoE,YAAY/K,MAAMopB,QACnByD,EAtaQ,UAsaGhkB,EACflC,KAAKoE,YAAY/K,MAAMupB,WACvB5iB,KAAKoE,YAAY/K,MAAMqpB,SAEzBjjB,aAAakC,GAAG3B,KAAKqE,SAAU4hB,EAASjmB,KAAKmN,QAAQnV,UAAUsH,GAASU,KAAKokB,OAAO9kB,KACpFG,aAAakC,GAAG3B,KAAKqE,SAAU6hB,EAAUlmB,KAAKmN,QAAQnV,UAAUsH,GAASU,KAAKqkB,OAAO/kB,SAIzFU,KAAKukB,kBAAoB,KACnBvkB,KAAKqE,UACPrE,KAAK8S,QAITrT,aAAakC,GAAG3B,KAAKqE,SAASgB,QAzbV,UAEC,gBAuboDrF,KAAKukB,mBAE1EvkB,KAAKmN,QAAQnV,SACfgI,KAAKmN,QAAU,IACVnN,KAAKmN,QACRjL,QAAS,SACTlK,SAAU,IAGZgI,KAAKmmB,YAITA,YACE,MAAM5E,EAAQvhB,KAAKqE,SAASpM,aAAa,SACnCmuB,SAA2BpmB,KAAKqE,SAASpM,aAAa,2BAExDspB,GAA+B,WAAtB6E,KACXpmB,KAAKqE,SAASkC,aAAa,yBAA0Bgb,GAAS,KAC1DA,GAAUvhB,KAAKqE,SAASpM,aAAa,eAAkB+H,KAAKqE,SAASqhB,aACvE1lB,KAAKqE,SAASkC,aAAa,aAAcgb,GAG3CvhB,KAAKqE,SAASkC,aAAa,QAAS,KAIxC6d,OAAO9kB,EAAOiY,GACZA,EAAUvX,KAAKikB,6BAA6B3kB,EAAOiY,GAE/CjY,IACFiY,EAAQoM,eACS,YAAfrkB,EAAMK,KApdQ,QADA,UAsdZ,GAGF4X,EAAQ+M,gBAAgBtpB,UAAUC,SAnelB,SAEC,SAie8Csc,EAAQmM,YACzEnM,EAAQmM,YAleW,QAserBpU,aAAaiI,EAAQkM,UAErBlM,EAAQmM,YAxea,OA0ehBnM,EAAQpK,QAAQqU,OAAUjK,EAAQpK,QAAQqU,MAAMzO,KAKrDwE,EAAQkM,SAAW7lB,YAAW,KA/eT,SAgff2Z,EAAQmM,aACVnM,EAAQxE,SAETwE,EAAQpK,QAAQqU,MAAMzO,MARvBwE,EAAQxE,QAWZsR,OAAO/kB,EAAOiY,GACZA,EAAUvX,KAAKikB,6BAA6B3kB,EAAOiY,GAE/CjY,IACFiY,EAAQoM,eACS,aAAfrkB,EAAMK,KAlfQ,QADA,SAofZ4X,EAAQlT,SAASpJ,SAASqE,EAAM2B,gBAGlCsW,EAAQ4M,yBAIZ7U,aAAaiI,EAAQkM,UAErBlM,EAAQmM,YApgBY,MAsgBfnM,EAAQpK,QAAQqU,OAAUjK,EAAQpK,QAAQqU,MAAM1O,KAKrDyE,EAAQkM,SAAW7lB,YAAW,KA3gBV,QA4gBd2Z,EAAQmM,aACVnM,EAAQzE,SAETyE,EAAQpK,QAAQqU,MAAM1O,MARvByE,EAAQzE,QAWZqR,uBACE,IAAK,MAAMjiB,KAAWlC,KAAK2jB,eACzB,GAAI3jB,KAAK2jB,eAAezhB,GACtB,OAAO,EAIX,OAAO,EAGTkL,WAAWvT,GACT,MAAMwsB,EAAiBxf,YAAYI,kBAAkBjH,KAAKqE,UAqC1D,OAnCAtK,OAAOC,KAAKqsB,GAAgBpsB,SAAQqsB,IAC9BlF,sBAAsBtgB,IAAIwlB,WACrBD,EAAeC,OAI1BzsB,EAAS,IACJmG,KAAKoE,YAAYwF,WACjByc,KACmB,iBAAXxsB,GAAuBA,EAASA,EAAS,KAG/CqZ,WAAiC,IAArBrZ,EAAOqZ,UAAsBtb,SAASoE,KAAOvC,WAAWI,EAAOqZ,WAEtD,iBAAjBrZ,EAAO2nB,QAChB3nB,EAAO2nB,MAAQ,CACbzO,KAAMlZ,EAAO2nB,MACb1O,KAAMjZ,EAAO2nB,QAIW,iBAAjB3nB,EAAO0nB,QAChB1nB,EAAO0nB,MAAQ1nB,EAAO0nB,MAAMpqB,YAGA,iBAAnB0C,EAAO0rB,UAChB1rB,EAAO0rB,QAAU1rB,EAAO0rB,QAAQpuB,YAGlCwC,gBAAgBkD,OAAMhD,EAAQmG,KAAKoE,YAAY+F,aAE3CtQ,EAAO+nB,WACT/nB,EAAOynB,SAAWd,aAAa3mB,EAAOynB,SAAUznB,EAAO6mB,UAAW7mB,EAAO8mB,aAGpE9mB,EAGT+rB,qBACE,MAAM/rB,EAAS,GAEf,IAAK,MAAMoJ,KAAOjD,KAAKmN,QACjBnN,KAAKoE,YAAYwF,QAAQ3G,KAASjD,KAAKmN,QAAQlK,KACjDpJ,EAAOoJ,GAAOjD,KAAKmN,QAAQlK,IAO/B,OAAOpJ,EAGTurB,iBACE,MAAMxB,EAAM5jB,KAAKskB,gBACXiC,EAAwB,IAAIjsB,OAAQ,UAAS0F,KAAKgmB,6BAA8B,KAChFQ,EAAW5C,EAAI3rB,aAAa,SAASZ,MAAMkvB,GAChC,OAAbC,GAAqBA,EAAS9sB,OAAS,GACzC8sB,EAASnd,KAAIod,GAASA,EAAMnuB,SACzB2B,SAAQysB,GAAU9C,EAAI5oB,UAAUgJ,OAAO0iB,KAI9CV,uBACE,MAvqBiB,aA0qBnBF,6BAA6B9O,GAC3B,MAAM2P,MAAEA,GAAU3P,EAEb2P,IAIL3mB,KAAK4jB,IAAM+C,EAAM7L,SAAS8L,OAC1B5mB,KAAKolB,iBACLplB,KAAKilB,oBAAoBjlB,KAAKglB,eAAe2B,EAAMzP,aAGrDsN,iBACMxkB,KAAKyV,UACPzV,KAAKyV,QAAQS,UACblW,KAAKyV,QAAU,MAMG5Q,uBAAChL,GACrB,OAAOmG,KAAK8F,MAAK,WACf,MAAMC,EAAOwd,QAAQje,oBAAoBtF,KAAMnG,GAE/C,GAAsB,iBAAXA,EAAqB,CAC9B,QAA4B,IAAjBkM,EAAKlM,GACd,MAAM,IAAIW,UAAW,oBAAmBX,MAG1CkM,EAAKlM,UAab4C,mBAAmB8mB,SCxuBnB,MAAM1mB,OAAO,UACPyH,WAAW,aACXE,YAAa,cACb2c,aAAe,aAEfvX,UAAU,IACX2Z,QAAQ3Z,QACXsN,UAAW,QACX1P,OAAQ,CAAC,EAAG,GACZtF,QAAS,QACTqjB,QAAS,GACTjE,SAAU,+IAONnX,cAAc,IACfoZ,QAAQpZ,YACXob,QAAS,6BAGLlsB,QAAQ,CACZ8oB,KAAO,kBACPC,OAAS,oBACTC,KAAO,kBACPC,MAAQ,mBACRC,SAAW,sBACXC,MAAQ,mBACRC,QAAU,qBACVC,SAAW,sBACXC,WAAa,wBACbC,WAAa,yBAGTiE,eAAiB,kBACjBC,iBAAmB,gBAQzB,MAAMC,gBAAgBxD,QAGT3Z,qBACT,OAAOA,UAGE/M,kBACT,OAAOA,OAGExD,mBACT,OAAOA,QAGE8Q,yBACT,OAAOA,cAKTsa,gBACE,OAAOzkB,KAAK6kB,YAAc7kB,KAAKgnB,cAGjC3B,WAAWzB,GACT5jB,KAAKslB,uBAAuB1B,EAAK5jB,KAAK6kB,WAAYgC,gBAClD7mB,KAAKslB,uBAAuB1B,EAAK5jB,KAAKgnB,cAnCjB,iBAwCvBA,cACE,OAAOhnB,KAAKklB,yBAAyBllB,KAAKmN,QAAQoY,SAGpDS,uBACE,MA/EiB,aAoFGnhB,uBAAChL,GACrB,OAAOmG,KAAK8F,MAAK,WACf,MAAMC,EAAOghB,QAAQzhB,oBAAoBtF,KAAMnG,GAE/C,GAAsB,iBAAXA,EAAqB,CAC9B,QAA4B,IAAjBkM,EAAKlM,GACd,MAAM,IAAIW,UAAW,oBAAmBX,MAG1CkM,EAAKlM,UAab4C,mBAAmBsqB,SCrGnB,MAAMlqB,OAAO,YACPyH,WAAW,eACXE,YAAa,gBACbyB,eAAe,YAEf2D,UAAU,CACdpC,OAAQ,GACRtC,OAAQ,OACRxH,OAAQ,IAGJyM,cAAc,CAClB3C,OAAQ,SACRtC,OAAQ,SACRxH,OAAQ,oBAGJupB,eAAkB,wBAClBC,aAAgB,sBAChB5b,oBAAuB,6BAEvB6b,yBAA2B,gBAC3BjhB,oBAAoB,SAEpBkhB,kBAAoB,yBACpBC,0BAA0B,oBAC1BC,mBAAqB,YACrBC,mBAAqB,YACrBC,oBAAsB,mBACtBC,oBAAuB,8CACvBC,oBAAoB,YACpBC,2BAA2B,mBAE3BC,cAAgB,SAChBC,gBAAkB,WAQxB,MAAMC,kBAAkB3jB,cACtBC,YAAYrM,EAAS8B,GACnB6S,MAAM3U,GACNiI,KAAK+nB,eAA2C,SAA1B/nB,KAAKqE,SAASe,QAAqBvM,OAASmH,KAAKqE,SACvErE,KAAKmN,QAAUnN,KAAKoN,WAAWvT,GAC/BmG,KAAKgoB,SAAW,GAChBhoB,KAAKioB,SAAW,GAChBjoB,KAAKkoB,cAAgB,KACrBloB,KAAKmoB,cAAgB,EAErB1oB,aAAakC,GAAG3B,KAAK+nB,eAAgBb,cAAc,IAAMlnB,KAAKooB,aAE9DpoB,KAAKqoB,UACLroB,KAAKooB,WAKIxe,qBACT,OAAOA,UAGE/M,kBACT,OAAOA,OAKTwrB,UACE,MAAMC,EAAatoB,KAAK+nB,iBAAmB/nB,KAAK+nB,eAAelvB,OAtC7C,SACE,WAyCd0vB,EAAuC,SAAxBvoB,KAAKmN,QAAQjI,OAChCojB,EACAtoB,KAAKmN,QAAQjI,OAETsjB,EA7Cc,aA6CDD,EACjBvoB,KAAKyoB,gBACL,EAEFzoB,KAAKgoB,SAAW,GAChBhoB,KAAKioB,SAAW,GAChBjoB,KAAKmoB,cAAgBnoB,KAAK0oB,mBAEVvgB,eAAeC,KAAKqf,oBAAqBznB,KAAKmN,QAAQzP,QAE9D2L,KAAItR,IACV,MAAM4wB,EAAiBpwB,uBAAuBR,GACxC2F,EAASirB,EAAiBxgB,eAAeK,QAAQmgB,GAAkB,KAEzE,GAAIjrB,EAAQ,CACV,MAAMkrB,EAAYlrB,EAAOgK,wBACzB,GAAIkhB,EAAUtQ,OAASsQ,EAAUC,OAC/B,MAAO,CACLhiB,YAAY0hB,GAAc7qB,GAAQiK,IAAM6gB,EACxCG,GAKN,OAAO,QAENvhB,QAAO0hB,GAAQA,IACfC,MAAK,CAACnK,EAAGE,IAAMF,EAAE,GAAKE,EAAE,KACxB7kB,SAAQ6uB,IACP9oB,KAAKgoB,SAAS1rB,KAAKwsB,EAAK,IACxB9oB,KAAKioB,SAAS3rB,KAAKwsB,EAAK,OAI9BvkB,UACE9E,aAAaC,IAAIM,KAAK+nB,eAAgBvjB,aACtCkI,MAAMnI,UAKR6I,WAAWvT,GAWT,OAVAA,EAAS,IACJ+P,aACA/C,YAAYI,kBAAkBjH,KAAKqE,aAChB,iBAAXxK,GAAuBA,EAASA,EAAS,KAG/C6D,OAASjE,WAAWI,EAAO6D,SAAW9F,SAASyD,gBAEtD1B,gBAAgBkD,OAAMhD,EAAQsQ,eAEvBtQ,EAGT4uB,gBACE,OAAOzoB,KAAK+nB,iBAAmBlvB,OAC7BmH,KAAK+nB,eAAengB,YACpB5H,KAAK+nB,eAAelL,UAGxB6L,mBACE,OAAO1oB,KAAK+nB,eAAe9K,cAAgBxlB,KAAK4G,IAC9CzG,SAASoE,KAAKihB,aACdrlB,SAASyD,gBAAgB4hB,cAI7B+L,mBACE,OAAOhpB,KAAK+nB,iBAAmBlvB,OAC7BA,OAAOowB,YACPjpB,KAAK+nB,eAAergB,wBAAwBmhB,OAGhDT,WACE,MAAMvL,EAAY7c,KAAKyoB,gBAAkBzoB,KAAKmN,QAAQ3F,OAChDyV,EAAejd,KAAK0oB,mBACpBQ,EAAYlpB,KAAKmN,QAAQ3F,OAASyV,EAAejd,KAAKgpB,mBAM5D,GAJIhpB,KAAKmoB,gBAAkBlL,GACzBjd,KAAKqoB,UAGHxL,GAAaqM,EAAjB,CACE,MAAMxrB,EAASsC,KAAKioB,SAASjoB,KAAKioB,SAASvuB,OAAS,GAEhDsG,KAAKkoB,gBAAkBxqB,GACzBsC,KAAKmpB,UAAUzrB,OAJnB,CAUA,GAAIsC,KAAKkoB,eAAiBrL,EAAY7c,KAAKgoB,SAAS,IAAMhoB,KAAKgoB,SAAS,GAAK,EAG3E,OAFAhoB,KAAKkoB,cAAgB,UACrBloB,KAAKopB,SAIP,IAAK,IAAInpB,EAAID,KAAKgoB,SAAStuB,OAAQuG,KACVD,KAAKkoB,gBAAkBloB,KAAKioB,SAAShoB,IACxD4c,GAAa7c,KAAKgoB,SAAS/nB,UACM,IAAzBD,KAAKgoB,SAAS/nB,EAAI,IAAsB4c,EAAY7c,KAAKgoB,SAAS/nB,EAAI,KAGhFD,KAAKmpB,UAAUnpB,KAAKioB,SAAShoB,KAKnCkpB,UAAUzrB,GACRsC,KAAKkoB,cAAgBxqB,EAErBsC,KAAKopB,SAEL,MAAMC,EAAU5B,oBAAoBpvB,MAAM,KACvCgR,KAAIrR,GAAa,GAAEA,qBAA4B0F,OAAY1F,WAAkB0F,QAE1E4rB,EAAOnhB,eAAeK,QAAQ6gB,EAAQ/f,KAAK,KAAMtJ,KAAKmN,QAAQzP,QAEpE4rB,EAAKtuB,UAAUwU,IAjLO,UAkLlB8Z,EAAKtuB,UAAUC,SAnLU,iBAoL3BkN,eAAeK,QA1KY,mBA0KsB8gB,EAAKjkB,QA3KlC,cA4KjBrK,UAAUwU,IApLO,UAsLpBrH,eAAeS,QAAQ0gB,EAnLG,qBAoLvBrvB,SAAQsvB,IAGPphB,eAAeW,KAAKygB,EAAY,+BAC7BtvB,SAAQ6uB,GAAQA,EAAK9tB,UAAUwU,IA3LlB,YA8LhBrH,eAAeW,KAAKygB,EAzLH,aA0LdtvB,SAAQuvB,IACPrhB,eAAeM,SAAS+gB,EA5LX,aA6LVvvB,SAAQ6uB,GAAQA,EAAK9tB,UAAUwU,IAjMtB,kBAsMtB/P,aAAayC,QAAQlC,KAAK+nB,eAAgBd,eAAgB,CACxDhmB,cAAevD,IAInB0rB,SACEjhB,eAAeC,KAAKqf,oBAAqBznB,KAAKmN,QAAQzP,QACnD0J,QAAOqiB,GAAQA,EAAKzuB,UAAUC,SA7MX,YA8MnBhB,SAAQwvB,GAAQA,EAAKzuB,UAAUgJ,OA9MZ,YAmNFa,uBAAChL,GACrB,OAAOmG,KAAK8F,MAAK,WACf,MAAMC,EAAO+hB,UAAUxiB,oBAAoBtF,KAAMnG,GAEjD,GAAsB,iBAAXA,EAAX,CAIA,QAA4B,IAAjBkM,EAAKlM,GACd,MAAM,IAAIW,UAAW,oBAAmBX,MAG1CkM,EAAKlM,UAWX4F,aAAakC,GAAG9I,OAAQyS,qBAAqB,KAC3CnD,eAAeC,KAAKgf,mBACjBntB,SAAQyvB,GAAO,IAAI5B,UAAU4B,QAUlCjtB,mBAAmBqrB,WC7QnB,MAAMjrB,OAAO,MACPyH,WAAW,SACXE,YAAa,UACbyB,aAAe,YAEfwL,aAAc,cACdC,eAAgB,gBAChBH,aAAc,cACdC,cAAe,eACfpL,qBAAwB,wBAExBujB,yBAA2B,gBAC3BzjB,kBAAoB,SACpBT,kBAAkB,OAClBC,kBAAkB,OAElBgiB,kBAAoB,YACpBL,wBAA0B,oBAC1Bvb,gBAAkB,UAClB8d,mBAAqB,wBACrBzjB,qBAAuB,2EACvBwhB,yBAA2B,mBAC3BkC,+BAAiC,kCAQvC,MAAMC,YAAY3lB,cAGLtH,kBACT,MAlCS,MAuCXkW,OACE,GAAK/S,KAAKqE,SAAS3I,YACjBsE,KAAKqE,SAAS3I,WAAWlC,WAAasB,KAAKC,cAC3CiF,KAAKqE,SAASrJ,UAAUC,SA9BJ,UA+BpB,OAGF,IAAI8N,EACJ,MAAMrL,EAASjF,uBAAuBuH,KAAKqE,UACrC0lB,EAAc/pB,KAAKqE,SAASgB,QA/BN,qBAiC5B,GAAI0kB,EAAa,CACf,MAAMC,EAAwC,OAAzBD,EAAYxL,UAA8C,OAAzBwL,EAAYxL,SAAoBqL,mBAjCpE,UAkClB7gB,EAAWZ,eAAeC,KAAK4hB,EAAcD,GAC7ChhB,EAAWA,EAASA,EAASrP,OAAS,GAGxC,MAAMuwB,EAAYlhB,EAChBtJ,aAAayC,QAAQ6G,EAAU0I,aAAY,CACzCxQ,cAAejB,KAAKqE,WAEtB,KAMF,GAJkB5E,aAAayC,QAAQlC,KAAKqE,SAAUkN,aAAY,CAChEtQ,cAAe8H,IAGHvG,kBAAmC,OAAdynB,GAAsBA,EAAUznB,iBACjE,OAGFxC,KAAKmpB,UAAUnpB,KAAKqE,SAAU0lB,GAE9B,MAAMG,EAAW,KACfzqB,aAAayC,QAAQ6G,EAAU2I,eAAc,CAC3CzQ,cAAejB,KAAKqE,WAEtB5E,aAAayC,QAAQlC,KAAKqE,SAAUmN,cAAa,CAC/CvQ,cAAe8H,KAIfrL,EACFsC,KAAKmpB,UAAUzrB,EAAQA,EAAOhC,WAAYwuB,GAE1CA,IAMJf,UAAUpxB,EAASmb,EAAW/W,GAC5B,MAIMguB,IAJiBjX,GAAqC,OAAvBA,EAAUqL,UAA4C,OAAvBrL,EAAUqL,SAE5EpW,eAAeM,SAASyK,EA3EN,WA0ElB/K,eAAeC,KAAKwhB,mBAAoB1W,IAGZ,GACxBkX,EAAkBjuB,GAAaguB,GAAUA,EAAOnvB,UAAUC,SAnF5C,QAqFdivB,EAAW,IAAMlqB,KAAKqqB,oBAAoBtyB,EAASoyB,EAAQhuB,GAE7DguB,GAAUC,GACZD,EAAOnvB,UAAUgJ,OAvFC,QAwFlBhE,KAAK2E,eAAeulB,EAAUnyB,GAAS,IAEvCmyB,IAIJG,oBAAoBtyB,EAASoyB,EAAQhuB,GACnC,GAAIguB,EAAQ,CACVA,EAAOnvB,UAAUgJ,OAlGG,UAoGpB,MAAMsmB,EAAgBniB,eAAeK,QAAQqhB,+BAAgCM,EAAOzuB,YAEhF4uB,GACFA,EAActvB,UAAUgJ,OAvGN,UA0GgB,QAAhCmmB,EAAOlyB,aAAa,SACtBkyB,EAAO5jB,aAAa,iBAAiB,GAIzCxO,EAAQiD,UAAUwU,IA/GI,UAgHe,QAAjCzX,EAAQE,aAAa,SACvBF,EAAQwO,aAAa,iBAAiB,GAGxC3K,OAAO7D,GAEHA,EAAQiD,UAAUC,SArHF,SAsHlBlD,EAAQiD,UAAUwU,IArHA,QAwHpB,IAAI8B,EAASvZ,EAAQ2D,WAKrB,GAJI4V,GAA8B,OAApBA,EAAOiN,WACnBjN,EAASA,EAAO5V,YAGd4V,GAAUA,EAAOtW,UAAUC,SAhIF,iBAgIsC,CACjE,MAAMsvB,EAAkBxyB,EAAQsN,QA5HZ,aA8HhBklB,GACFpiB,eAAeC,KA1HU,mBA0HqBmiB,GAC3CtwB,SAAQuwB,GAAYA,EAASxvB,UAAUwU,IApIxB,YAuIpBzX,EAAQwO,aAAa,iBAAiB,GAGpCpK,GACFA,IAMkB0I,uBAAChL,GACrB,OAAOmG,KAAK8F,MAAK,WACf,MAAMC,EAAO+jB,IAAIxkB,oBAAoBtF,MAErC,GAAsB,iBAAXnG,EAAqB,CAC9B,QAA4B,IAAjBkM,EAAKlM,GACd,MAAM,IAAIW,UAAW,oBAAmBX,MAG1CkM,EAAKlM,UAYb4F,aAAakC,GAAG/J,SAAUwO,qBAAsBD,sBAAsB,SAAU7G,GAC1E,CAAC,IAAK,QAAQnH,SAAS6H,KAAKoF,UAC9B9F,EAAM8D,iBAGJvI,WAAWmF,OAIF8pB,IAAIxkB,oBAAoBtF,MAChC+S,UAUPtW,mBAAmBqtB,KCtMnB,MAAMjtB,KAAO,QACPyH,SAAW,WACXE,UAAa,YAEbimB,gBAAmB,qBACnBC,eAAkB,oBAClBvQ,cAAiB,mBACjBwQ,eAAkB,oBAClBlZ,WAAc,gBACdC,aAAgB,kBAChBH,WAAc,gBACdC,YAAe,iBAEf/L,gBAAkB,OAClBmlB,gBAAkB,OAClBllB,gBAAkB,OAClBmlB,mBAAqB,UAErB1gB,YAAc,CAClBkX,UAAW,UACXyJ,SAAU,UACVtJ,MAAO,UAGH5X,QAAU,CACdyX,WAAW,EACXyJ,UAAU,EACVtJ,MAAO,KAST,MAAMuJ,cAAc5mB,cAClBC,YAAYrM,EAAS8B,GACnB6S,MAAM3U,GAENiI,KAAKmN,QAAUnN,KAAKoN,WAAWvT,GAC/BmG,KAAKyjB,SAAW,KAChBzjB,KAAKgrB,sBAAuB,EAC5BhrB,KAAKirB,yBAA0B,EAC/BjrB,KAAK6jB,gBAKI1Z,yBACT,OAAOA,YAGEP,qBACT,OAAOA,QAGE/M,kBACT,OAAOA,KAKTkW,OACoBtT,aAAayC,QAAQlC,KAAKqE,SAAUkN,YAExC/O,mBAIdxC,KAAKkrB,gBAEDlrB,KAAKmN,QAAQkU,WACfrhB,KAAKqE,SAASrJ,UAAUwU,IA5DN,QAsEpBxP,KAAKqE,SAASrJ,UAAUgJ,OArEJ,QAsEpBpI,OAAOoE,KAAKqE,UACZrE,KAAKqE,SAASrJ,UAAUwU,IAtEJ,QAuEpBxP,KAAKqE,SAASrJ,UAAUwU,IAtED,WAwEvBxP,KAAK2E,gBAZY,KACf3E,KAAKqE,SAASrJ,UAAUgJ,OA7DH,WA8DrBvE,aAAayC,QAAQlC,KAAKqE,SAAUmN,aAEpCxR,KAAKmrB,uBAQuBnrB,KAAKqE,SAAUrE,KAAKmN,QAAQkU,YAG5DvO,OACO9S,KAAKqE,SAASrJ,UAAUC,SA7ET,UAiFFwE,aAAayC,QAAQlC,KAAKqE,SAAUoN,YAExCjP,mBAWdxC,KAAKqE,SAASrJ,UAAUwU,IA7FD,WA8FvBxP,KAAK2E,gBARY,KACf3E,KAAKqE,SAASrJ,UAAUwU,IAzFN,QA0FlBxP,KAAKqE,SAASrJ,UAAUgJ,OAxFH,WAyFrBhE,KAAKqE,SAASrJ,UAAUgJ,OA1FN,QA2FlBvE,aAAayC,QAAQlC,KAAKqE,SAAUqN,gBAIR1R,KAAKqE,SAAUrE,KAAKmN,QAAQkU,aAG5D9c,UACEvE,KAAKkrB,gBAEDlrB,KAAKqE,SAASrJ,UAAUC,SArGR,SAsGlB+E,KAAKqE,SAASrJ,UAAUgJ,OAtGN,QAyGpB0I,MAAMnI,UAKR6I,WAAWvT,GAST,OARAA,EAAS,IACJ+P,WACA/C,YAAYI,kBAAkBjH,KAAKqE,aAChB,iBAAXxK,GAAuBA,EAASA,EAAS,IAGtDF,gBAAgBkD,KAAMhD,EAAQmG,KAAKoE,YAAY+F,aAExCtQ,EAGTsxB,qBACOnrB,KAAKmN,QAAQ2d,WAId9qB,KAAKgrB,sBAAwBhrB,KAAKirB,0BAItCjrB,KAAKyjB,SAAW7lB,YAAW,KACzBoC,KAAK8S,SACJ9S,KAAKmN,QAAQqU,SAGlB4J,eAAe9rB,EAAO+rB,GACpB,OAAQ/rB,EAAMK,MACZ,IAAK,YACL,IAAK,WACHK,KAAKgrB,qBAAuBK,EAC5B,MACF,IAAK,UACL,IAAK,WACHrrB,KAAKirB,wBAA0BI,EAMnC,GAAIA,EAEF,YADArrB,KAAKkrB,gBAIP,MAAM1a,EAAclR,EAAM2B,cACtBjB,KAAKqE,WAAamM,GAAexQ,KAAKqE,SAASpJ,SAASuV,IAI5DxQ,KAAKmrB,qBAGPtH,gBACEpkB,aAAakC,GAAG3B,KAAKqE,SAAUomB,iBAAiBnrB,GAASU,KAAKorB,eAAe9rB,GAAO,KACpFG,aAAakC,GAAG3B,KAAKqE,SAAUqmB,gBAAgBprB,GAASU,KAAKorB,eAAe9rB,GAAO,KACnFG,aAAakC,GAAG3B,KAAKqE,SAAU8V,eAAe7a,GAASU,KAAKorB,eAAe9rB,GAAO,KAClFG,aAAakC,GAAG3B,KAAKqE,SAAUsmB,gBAAgBrrB,GAASU,KAAKorB,eAAe9rB,GAAO,KAGrF4rB,gBACE5b,aAAatP,KAAKyjB,UAClBzjB,KAAKyjB,SAAW,KAKI5e,uBAAChL,GACrB,OAAOmG,KAAK8F,MAAK,WACf,MAAMC,EAAOglB,MAAMzlB,oBAAoBtF,KAAMnG,GAE7C,GAAsB,iBAAXA,EAAqB,CAC9B,QAA4B,IAAjBkM,EAAKlM,GACd,MAAM,IAAIW,UAAW,oBAAmBX,MAG1CkM,EAAKlM,GAAQmG,WAMrBgF,qBAAqB+lB,OASrBtuB,mBAAmBsuB","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n if (obj === null || obj === undefined) {\n return `${obj}`\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttr = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n hrefAttr = `#${hrefAttr.split('#')[1]}`\n }\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return document.querySelector(obj)\n }\n\n return null\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes).forEach(property => {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${componentName.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n}\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true\n }\n\n if (element.classList.contains('disabled')) {\n return true\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight\n}\n\nconst getjQuery = () => {\n const { jQuery } = window\n\n if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return jQuery\n }\n\n return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\nconst customEventsRegex = /^(mouseenter|mouseleave)/i\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n const uid = getUidEvent(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n event.delegateTarget = element\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (let i = domElements.length; i--;) {\n if (domElements[i] === target) {\n event.delegateTarget = target\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n\n // To please ESLint\n return null\n }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n const uidEventList = Object.keys(events)\n\n for (let i = 0, len = uidEventList.length; i < len; i++) {\n const event = events[uidEventList[i]]\n\n if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n return event\n }\n }\n\n return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n const delegation = typeof handler === 'string'\n const originalHandler = delegation ? delegationFn : handler\n\n let typeEvent = getTypeEvent(originalTypeEvent)\n const isNative = nativeEvents.has(typeEvent)\n\n if (!isNative) {\n typeEvent = originalTypeEvent\n }\n\n return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n if (!handler) {\n handler = delegationFn\n delegationFn = null\n }\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (customEventsRegex.test(originalTypeEvent)) {\n const wrapFn = fn => {\n return function (event) {\n if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n return fn.call(this, event)\n }\n }\n }\n\n if (delegationFn) {\n delegationFn = wrapFn(delegationFn)\n } else {\n handler = wrapFn(handler)\n }\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const events = getEvent(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n if (previousFn) {\n previousFn.oneOff = previousFn.oneOff && oneOff\n\n return\n }\n\n const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = delegation ?\n bootstrapDelegationHandler(element, handler, delegationFn) :\n bootstrapHandler(element, handler)\n\n fn.delegationSelector = delegation ? handler : null\n fn.originalHandler = originalHandler\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n Object.keys(storeElementEvent).forEach(handlerKey => {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '')\n return customEvents[event] || event\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, false)\n },\n\n one(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFn) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getEvent(element)\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof originalHandler !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!events || !events[typeEvent]) {\n return\n }\n\n removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n return\n }\n\n if (isNamespace) {\n Object.keys(events).forEach(elementEvent => {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n })\n }\n\n const storeElementEvent = events[typeEvent] || {}\n Object.keys(storeElementEvent).forEach(keyHandlers => {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = getTypeEvent(event)\n const inNamespace = event !== typeEvent\n const isNative = nativeEvents.has(typeEvent)\n\n let jQueryEvent\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n let evt = null\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n if (isNative) {\n evt = document.createEvent('HTMLEvents')\n evt.initEvent(typeEvent, bubbles, true)\n } else {\n evt = new CustomEvent(event, {\n bubbles,\n cancelable: true\n })\n }\n\n // merge custom information in our event\n if (typeof args !== 'undefined') {\n Object.keys(args).forEach(key => {\n Object.defineProperty(evt, key, {\n get() {\n return args[key]\n }\n })\n })\n }\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst elementMap = new Map()\n\nexport default {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map())\n }\n\n const instanceMap = elementMap.get(element)\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n return\n }\n\n instanceMap.set(key, instance)\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null\n }\n\n return null\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return\n }\n\n const instanceMap = elementMap.get(element)\n\n instanceMap.delete(key)\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element)\n }\n }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\nimport {\n executeAfterTransition,\n getElement\n} from './util/index'\nimport EventHandler from './dom/event-handler'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.1.3'\n\nclass BaseComponent {\n constructor(element) {\n element = getElement(element)\n\n if (!element) {\n return\n }\n\n this._element = element\n Data.set(this._element, this.constructor.DATA_KEY, this)\n }\n\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY)\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n Object.getOwnPropertyNames(this).forEach(propertyName => {\n this[propertyName] = null\n })\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated)\n }\n\n /** Static */\n\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY)\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n }\n\n static get VERSION() {\n return VERSION\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!')\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { getElementFromSelector, isDisabled } from './index'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`\n const name = component.NAME\n\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const target = getElementFromSelector(this) || this.closest(`.${name}`)\n const instance = component.getOrCreateInstance(target)\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]()\n })\n}\n\nexport {\n enableDismissTrigger\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n if (closeEvent.defaultPrevented) {\n return\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n }\n\n // Private\n _destroyElement() {\n this._element.remove()\n EventHandler.trigger(this._element, EVENT_CLOSED)\n this.dispose()\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nenableDismissTrigger(Alert, 'close')\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button extends BaseComponent {\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this)\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n const data = Button.getOrCreateInstance(button)\n\n data.toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Button to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n if (val === 'true') {\n return true\n }\n\n if (val === 'false') {\n return false\n }\n\n if (val === Number(val).toString()) {\n return Number(val)\n }\n\n if (val === '' || val === 'null') {\n return null\n }\n\n return val\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n\n Object.keys(element.dataset)\n .filter(key => key.startsWith('bs'))\n .forEach(key => {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n })\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n },\n\n offset(element) {\n const rect = element.getBoundingClientRect()\n\n return {\n top: rect.top + window.pageYOffset,\n left: rect.left + window.pageXOffset\n }\n },\n\n position(element) {\n return {\n top: element.offsetTop,\n left: element.offsetLeft\n }\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible } from '../util/index'\n\nconst NODE_TEXT = 3\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n return [].concat(...element.children)\n .filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n\n let ancestor = element.parentNode\n\n while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n if (ancestor.matches(selector)) {\n parents.push(ancestor)\n }\n\n ancestor = ancestor.parentNode\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (next.matches(selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n },\n\n focusableChildren(element) {\n const focusables = [\n 'a',\n 'button',\n 'input',\n 'textarea',\n 'select',\n 'details',\n '[tabindex]',\n '[contenteditable=\"true\"]'\n ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(', ')\n\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isRTL,\n isVisible,\n getNextActiveElement,\n reflow,\n triggerTransitionEnd,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n}\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_INDICATOR = '[data-bs-target]'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n next() {\n this._slide(ORDER_NEXT)\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n this._slide(ORDER_PREV)\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config && this._config.interval && !this._isPaused) {\n this._updateInterval()\n\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const order = index > activeIndex ?\n ORDER_NEXT :\n ORDER_PREV\n\n this._slide(order, this._items[index])\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n if (!direction) {\n return\n }\n\n this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT)\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event))\n EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event))\n }\n\n if (this._config.touch && this._touchSupported) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n const hasPointerPenTouch = event => {\n return this._pointerEvent &&\n (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n }\n\n const start = event => {\n if (hasPointerPenTouch(event)) {\n this.touchStartX = event.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.touches[0].clientX\n }\n }\n\n const move = event => {\n // ensure swiping with one touch and not pinching\n this.touchDeltaX = event.touches && event.touches.length > 1 ?\n 0 :\n event.touches[0].clientX - this.touchStartX\n }\n\n const end = event => {\n if (hasPointerPenTouch(event)) {\n this.touchDeltaX = event.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n EventHandler.on(itemImg, EVENT_DRAG_START, event => event.preventDefault())\n })\n\n if (this._pointerEvent) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n const direction = KEY_TO_DIRECTION[event.key]\n if (direction) {\n event.preventDefault()\n this._slide(direction)\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode ?\n SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :\n []\n\n return this._items.indexOf(element)\n }\n\n _getItemByOrder(order, activeElement) {\n const isNext = order === ORDER_NEXT\n return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap)\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element))\n\n return EventHandler.trigger(this._element, EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n activeIndicator.removeAttribute('aria-current')\n\n const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement)\n\n for (let i = 0; i < indicators.length; i++) {\n if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {\n indicators[i].classList.add(CLASS_NAME_ACTIVE)\n indicators[i].setAttribute('aria-current', 'true')\n break\n }\n }\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = elementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n }\n\n _slide(directionOrOrder, element) {\n const order = this._directionToOrder(directionOrOrder)\n const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || this._getItemByOrder(order, activeElement)\n\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n const isNext = order === ORDER_NEXT\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n const eventDirectionName = this._orderToDirection(order)\n\n if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n this._isSliding = false\n return\n }\n\n if (this._isSliding) {\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n this._activeElement = nextElement\n\n const triggerSlidEvent = () => {\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }\n\n if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n setTimeout(triggerSlidEvent, 0)\n }\n\n this._queueCallback(completeCallBack, activeElement, true)\n } else {\n activeElement.classList.remove(CLASS_NAME_ACTIVE)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n this._isSliding = false\n triggerSlidEvent()\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n _directionToOrder(direction) {\n if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {\n return direction\n }\n\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n }\n\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n }\n\n _orderToDirection(order) {\n if (![ORDER_NEXT, ORDER_PREV].includes(order)) {\n return order\n }\n\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n }\n\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n }\n\n // Static\n\n static carouselInterface(element, config) {\n const data = Carousel.getOrCreateInstance(element, config)\n\n let { _config } = data\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Carousel.carouselInterface(this, config)\n })\n }\n\n static dataApiClickHandler(event) {\n const target = getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel.carouselInterface(target, config)\n\n if (slideIndex) {\n Carousel.getInstance(target).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (let i = 0, len = carousels.length; i < len; i++) {\n Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i]))\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElement,\n getSelectorFromElement,\n getElementFromSelector,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n toggle: true,\n parent: null\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(null|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._isTransitioning = false\n this._config = this._getConfig(config)\n this._triggerArray = []\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElem => foundElem === this._element)\n\n if (selector !== null && filterElement.length) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._initializeChildren()\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n toggle() {\n if (this._isShown()) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._isShown()) {\n return\n }\n\n let actives = []\n let activesData\n\n if (this._config.parent) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n actives = SelectorEngine.find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)) // remove children if greater depth\n }\n\n const container = SelectorEngine.findOne(this._selector)\n if (actives.length) {\n const tempActiveData = actives.find(elem => container !== elem)\n activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null\n\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n actives.forEach(elemActive => {\n if (container !== elemActive) {\n Collapse.getOrCreateInstance(elemActive, { toggle: false }).hide()\n }\n\n if (!activesData) {\n Data.set(elemActive, DATA_KEY, null)\n }\n })\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n this._addAriaAndCollapsedClass(this._triggerArray, true)\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n\n this._queueCallback(complete, this._element, true)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const elem = getElementFromSelector(trigger)\n\n if (elem && !this._isShown(elem)) {\n this._addAriaAndCollapsedClass([trigger], false)\n }\n }\n\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n\n this._queueCallback(complete, this._element, true)\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW)\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n config.parent = getElement(config.parent)\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n }\n\n _initializeChildren() {\n if (!this._config.parent) {\n return\n }\n\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n SelectorEngine.find(SELECTOR_DATA_TOGGLE, this._config.parent).filter(elem => !children.includes(elem))\n .forEach(element => {\n const selected = getElementFromSelector(element)\n\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected))\n }\n })\n }\n\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return\n }\n\n triggerArray.forEach(elem => {\n if (isOpen) {\n elem.classList.remove(CLASS_NAME_COLLAPSED)\n } else {\n elem.classList.add(CLASS_NAME_COLLAPSED)\n }\n\n elem.setAttribute('aria-expanded', isOpen)\n })\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const _config = {}\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n const data = Collapse.getOrCreateInstance(this, _config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n event.preventDefault()\n }\n\n const selector = getSelectorFromElement(this)\n const selectorElements = SelectorEngine.find(selector)\n\n selectorElements.forEach(element => {\n Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n defineJQueryPlugin,\n getElement,\n getElementFromSelector,\n getNextActiveElement,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst SPACE_KEY = 'Space'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\n\nconst Default = {\n offset: [0, 2],\n boundary: 'clippingParents',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null,\n autoClose: true\n}\n\nconst DefaultType = {\n offset: '(array|string|function)',\n boundary: '(string|element)',\n reference: '(string|element|object)',\n display: 'string',\n popperConfig: '(null|object|function)',\n autoClose: '(boolean|string)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n toggle() {\n return this._isShown() ? this.hide() : this.show()\n }\n\n show() {\n if (isDisabled(this._element) || this._isShown(this._menu)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this._element)\n // Totally disable Popper for Dropdowns in Navbar\n if (this._inNavbar) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'none')\n } else {\n this._createPopper(parent)\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n !parent.closest(SELECTOR_NAVBAR_NAV)) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.on(elem, 'mouseover', noop))\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.add(CLASS_NAME_SHOW)\n this._element.classList.add(CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (isDisabled(this._element) || !this._isShown(this._menu)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n this._completeHide(relatedTarget)\n }\n\n dispose() {\n if (this._popper) {\n this._popper.destroy()\n }\n\n super.dispose()\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Private\n\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.off(elem, 'mouseover', noop))\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._menu.classList.remove(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._element.setAttribute('aria-expanded', 'false')\n Manipulator.removeDataAttribute(this._menu, 'popper')\n EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (typeof config.reference === 'object' && !isElement(config.reference) &&\n typeof config.reference.getBoundingClientRect !== 'function'\n ) {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n }\n\n return config\n }\n\n _createPopper(parent) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference)\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference\n }\n\n const popperConfig = this._getPopperConfig()\n const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false)\n\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n\n if (isDisplayStatic) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static')\n }\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW)\n }\n\n _getMenuElement() {\n return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n }\n\n _getPlacement() {\n const parentDropdown = this._element.parentNode\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n }\n\n _detectNavbar() {\n return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }\n\n // Disable Popper if we have a static display\n if (this._config.display === 'static') {\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n }\n }\n\n _selectMenuItem({ key, target }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible)\n\n if (!items.length) {\n return\n }\n\n // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n\n static clearMenus(event) {\n if (event && (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY))) {\n return\n }\n\n const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const context = Dropdown.getInstance(toggles[i])\n if (!context || context._config.autoClose === false) {\n continue\n }\n\n if (!context._isShown()) {\n continue\n }\n\n const relatedTarget = {\n relatedTarget: context._element\n }\n\n if (event) {\n const composedPath = event.composedPath()\n const isMenuTarget = composedPath.includes(context._menu)\n if (\n composedPath.includes(context._element) ||\n (context._config.autoClose === 'inside' && !isMenuTarget) ||\n (context._config.autoClose === 'outside' && isMenuTarget)\n ) {\n continue\n }\n\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue\n }\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n }\n\n context._completeHide(relatedTarget)\n }\n }\n\n static getParentFromElement(element) {\n return getElementFromSelector(element) || element.parentNode\n }\n\n static dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ?\n event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n event.target.closest(SELECTOR_MENU))) :\n !REGEXP_KEYDOWN.test(event.key)) {\n return\n }\n\n const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n if (!isActive && event.key === ESCAPE_KEY) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (isDisabled(this)) {\n return\n }\n\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n if (event.key === ESCAPE_KEY) {\n instance.hide()\n return\n }\n\n if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) {\n if (!isActive) {\n instance.show()\n }\n\n instance._selectMenuItem(event)\n return\n }\n\n if (!isActive || event.key === SPACE_KEY) {\n Dropdown.clearMenus()\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine'\nimport Manipulator from '../dom/manipulator'\nimport { isElement } from './index'\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body\n }\n\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth\n return Math.abs(window.innerWidth - documentWidth)\n }\n\n hide() {\n const width = this.getWidth()\n this._disableOverFlow()\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width)\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width)\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width)\n }\n\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow')\n this._element.style.overflow = 'hidden'\n }\n\n _setElementAttributes(selector, styleProp, callback) {\n const scrollbarWidth = this.getWidth()\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return\n }\n\n this._saveInitialAttribute(element, styleProp)\n const calculatedValue = window.getComputedStyle(element)[styleProp]\n element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow')\n this._resetElementAttributes(this._element, 'paddingRight')\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight')\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight')\n }\n\n _saveInitialAttribute(element, styleProp) {\n const actualValue = element.style[styleProp]\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProp, actualValue)\n }\n }\n\n _resetElementAttributes(selector, styleProp) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProp)\n if (typeof value === 'undefined') {\n element.style.removeProperty(styleProp)\n } else {\n Manipulator.removeDataAttribute(element, styleProp)\n element.style[styleProp] = value\n }\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector)\n } else {\n SelectorEngine.find(selector, this._element).forEach(callBack)\n }\n }\n\n isOverflowing() {\n return this.getWidth() > 0\n }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { execute, executeAfterTransition, getElement, reflow, typeCheckConfig } from './index'\n\nconst Default = {\n className: 'modal-backdrop',\n isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n isAnimated: false,\n rootElement: 'body', // give the choice to place backdrop under different elements\n clickCallback: null\n}\n\nconst DefaultType = {\n className: 'string',\n isVisible: 'boolean',\n isAnimated: 'boolean',\n rootElement: '(element|string)',\n clickCallback: '(function|null)'\n}\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nclass Backdrop {\n constructor(config) {\n this._config = this._getConfig(config)\n this._isAppended = false\n this._element = null\n }\n\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._append()\n\n if (this._config.isAnimated) {\n reflow(this._getElement())\n }\n\n this._getElement().classList.add(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n execute(callback)\n })\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n this.dispose()\n execute(callback)\n })\n }\n\n // Private\n\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div')\n backdrop.className = this._config.className\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE)\n }\n\n this._element = backdrop\n }\n\n return this._element\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' ? config : {})\n }\n\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement)\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _append() {\n if (this._isAppended) {\n return\n }\n\n this._config.rootElement.append(this._getElement())\n\n EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback)\n })\n\n this._isAppended = true\n }\n\n dispose() {\n if (!this._isAppended) {\n return\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n this._element.remove()\n this._isAppended = false\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport SelectorEngine from '../dom/selector-engine'\nimport { typeCheckConfig } from './index'\n\nconst Default = {\n trapElement: null, // The element to trap focus inside of\n autofocus: true\n}\n\nconst DefaultType = {\n trapElement: 'element',\n autofocus: 'boolean'\n}\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nclass FocusTrap {\n constructor(config) {\n this._config = this._getConfig(config)\n this._isActive = false\n this._lastTabNavDirection = null\n }\n\n activate() {\n const { trapElement, autofocus } = this._config\n\n if (this._isActive) {\n return\n }\n\n if (autofocus) {\n trapElement.focus()\n }\n\n EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n this._isActive = true\n }\n\n deactivate() {\n if (!this._isActive) {\n return\n }\n\n this._isActive = false\n EventHandler.off(document, EVENT_KEY)\n }\n\n // Private\n\n _handleFocusin(event) {\n const { target } = event\n const { trapElement } = this._config\n\n if (target === document || target === trapElement || trapElement.contains(target)) {\n return\n }\n\n const elements = SelectorEngine.focusableChildren(trapElement)\n\n if (elements.length === 0) {\n trapElement.focus()\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus()\n } else {\n elements[0].focus()\n }\n }\n\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isRTL,\n isVisible,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport ScrollBarHelper from './util/scrollbar'\nimport BaseComponent from './base-component'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n focus: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean'\n}\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst OPEN_SELECTOR = '.modal.show'\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._isShown = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollBar = new ScrollBarHelper()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n\n if (this._isAnimated()) {\n this._isTransitioning = true\n }\n\n this._scrollBar.hide()\n\n document.body.classList.add(CLASS_NAME_OPEN)\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n if (event.target === this._element) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._isShown = false\n const isAnimated = this._isAnimated()\n\n if (isAnimated) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n this._focustrap.deactivate()\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS)\n\n this._queueCallback(() => this._hideModal(), this._element, isAnimated)\n }\n\n dispose() {\n [window, this._dialog]\n .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\n\n this._backdrop.dispose()\n this._focustrap.deactivate()\n super.dispose()\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value\n isAnimated: this._isAnimated()\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const isAnimated = this._isAnimated()\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.append(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.scrollTop = 0\n\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n if (isAnimated) {\n reflow(this._element)\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n this._queueCallback(transitionComplete, this._dialog, isAnimated)\n }\n\n _setEscapeEvent() {\n if (this._isShown) {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n event.preventDefault()\n this.hide()\n } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {\n this._triggerBackdropTransition()\n }\n })\n } else {\n EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog())\n } else {\n EventHandler.off(window, EVENT_RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._scrollBar.reset()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _showBackdrop(callback) {\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n\n if (event.target !== event.currentTarget) {\n return\n }\n\n if (this._config.backdrop === true) {\n this.hide()\n } else if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n }\n })\n\n this._backdrop.show(callback)\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE)\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const { classList, scrollHeight, style } = this._element\n const isModalOverflowing = scrollHeight > document.documentElement.clientHeight\n\n // return if the following background transition hasn't yet completed\n if ((!isModalOverflowing && style.overflowY === 'hidden') || classList.contains(CLASS_NAME_STATIC)) {\n return\n }\n\n if (!isModalOverflowing) {\n style.overflowY = 'hidden'\n }\n\n classList.add(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n classList.remove(CLASS_NAME_STATIC)\n if (!isModalOverflowing) {\n this._queueCallback(() => {\n style.overflowY = ''\n }, this._dialog)\n }\n }, this._dialog)\n\n this._element.focus()\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n const scrollbarWidth = this._scrollBar.getWidth()\n const isBodyOverflowing = scrollbarWidth > 0\n\n if ((!isBodyOverflowing && isModalOverflowing && !isRTL()) || (isBodyOverflowing && !isModalOverflowing && isRTL())) {\n this._element.style.paddingLeft = `${scrollbarWidth}px`\n }\n\n if ((isBodyOverflowing && !isModalOverflowing && !isRTL()) || (!isBodyOverflowing && isModalOverflowing && isRTL())) {\n this._element.style.paddingRight = `${scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n // Static\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n // avoid conflict when clicking moddal toggler while another one is open\n const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (allReadyOpen) {\n Modal.getInstance(allReadyOpen).hide()\n }\n\n const data = Modal.getOrCreateInstance(target)\n\n data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isDisabled,\n isVisible,\n typeCheckConfig\n} from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport SelectorEngine from './dom/selector-engine'\nimport Manipulator from './dom/manipulator'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n scroll: false\n}\n\nconst DefaultType = {\n backdrop: 'boolean',\n keyboard: 'boolean',\n scroll: 'boolean'\n}\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._isShown = false\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._addEventListeners()\n }\n\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._element.style.visibility = 'visible'\n\n this._backdrop.show()\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide()\n }\n\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const completeCallBack = () => {\n if (!this._config.scroll) {\n this._focustrap.activate()\n }\n\n EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n }\n\n this._queueCallback(completeCallBack, this._element, true)\n }\n\n hide() {\n if (!this._isShown) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._focustrap.deactivate()\n this._element.blur()\n this._isShown = false\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._backdrop.hide()\n\n const completeCallback = () => {\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._element.style.visibility = 'hidden'\n\n if (!this._config.scroll) {\n new ScrollBarHelper().reset()\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._queueCallback(completeCallback, this._element, true)\n }\n\n dispose() {\n this._backdrop.dispose()\n this._focustrap.deactivate()\n super.dispose()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _initializeBackDrop() {\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible: this._config.backdrop,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: () => this.hide()\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n this.hide()\n }\n })\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus()\n }\n })\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (allReadyOpen && allReadyOpen !== target) {\n Offcanvas.getInstance(allReadyOpen).hide()\n }\n\n const data = Offcanvas.getOrCreateInstance(target)\n data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () =>\n SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show())\n)\n\nenableDismissTrigger(Offcanvas)\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttributes = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, len = regExp.length; i < len; i++) {\n if (regExp[i].test(attributeName)) {\n return true\n }\n }\n\n return false\n}\n\nexport const DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const element = elements[i]\n const elementName = element.nodeName.toLowerCase()\n\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove()\n\n continue\n }\n\n const attributeList = [].concat(...element.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n attributeList.forEach(attribute => {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n defineJQueryPlugin,\n findShadowRoot,\n getElement,\n getUID,\n isElement,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport { DefaultAllowlist, sanitizeHtml } from './util/sanitizer'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst DefaultType = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(array|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacements: 'array',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n allowList: 'object',\n popperConfig: '(null|object|function)'\n}\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n animation: true,\n template: '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"tooltip-arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div>' +\n '</div>',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: [0, 0],\n container: false,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n boundary: 'clippingParents',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n allowList: DefaultAllowlist,\n popperConfig: null\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n super(element)\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this._config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get Event() {\n return Event\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const context = this._initializeOnDelegatedTarget(event)\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n if (this.tip) {\n this.tip.remove()\n }\n\n this._disposePopper()\n super.dispose()\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (!(this.isWithContent() && this._isEnabled)) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW)\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = shadowRoot === null ?\n this._element.ownerDocument.documentElement.contains(this._element) :\n shadowRoot.contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n // A trick to recreate a tooltip in case a new title is given by using the NOT documented `data-bs-original-title`\n // This will be removed later in favor of a `setContent` method\n if (this.constructor.NAME === 'tooltip' && this.tip && this.getTitle() !== this.tip.querySelector(SELECTOR_TOOLTIP_INNER).innerHTML) {\n this._disposePopper()\n this.tip.remove()\n this.tip = null\n }\n\n const tip = this.getTipElement()\n const tipId = getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this._element.setAttribute('aria-describedby', tipId)\n\n if (this._config.animation) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n const placement = typeof this._config.placement === 'function' ?\n this._config.placement.call(this, tip, this._element) :\n this._config.placement\n\n const attachment = this._getAttachment(placement)\n this._addAttachmentClass(attachment)\n\n const { container } = this._config\n Data.set(tip, this.constructor.DATA_KEY, this)\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip)\n EventHandler.trigger(this._element, this.constructor.Event.INSERTED)\n }\n\n if (this._popper) {\n this._popper.update()\n } else {\n this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n }\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n const customClass = this._resolvePossibleFunction(this._config.customClass)\n if (customClass) {\n tip.classList.add(...customClass.split(' '))\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children).forEach(element => {\n EventHandler.on(element, 'mouseover', noop)\n })\n }\n\n const complete = () => {\n const prevHoverState = this._hoverState\n\n this._hoverState = null\n EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this)\n }\n }\n\n const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(complete, this.tip, isAnimated)\n }\n\n hide() {\n if (!this._popper) {\n return\n }\n\n const tip = this.getTipElement()\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n if (this._hoverState !== HOVER_STATE_SHOW) {\n tip.remove()\n }\n\n this._cleanTipClass()\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n this._disposePopper()\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n tip.classList.remove(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(element => EventHandler.off(element, 'mouseover', noop))\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n\n const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(complete, this.tip, isAnimated)\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.update()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n getTipElement() {\n if (this.tip) {\n return this.tip\n }\n\n const element = document.createElement('div')\n element.innerHTML = this._config.template\n\n const tip = element.children[0]\n this.setContent(tip)\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n\n this.tip = tip\n return this.tip\n }\n\n setContent(tip) {\n this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TOOLTIP_INNER)\n }\n\n _sanitizeAndSetContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template)\n\n if (!content && templateElement) {\n templateElement.remove()\n return\n }\n\n // we use append for html objects to maintain js events\n this.setElementContent(templateElement, content)\n }\n\n setElementContent(element, content) {\n if (element === null) {\n return\n }\n\n if (isElement(content)) {\n content = getElement(content)\n\n // content is a DOM node or a jQuery\n if (this._config.html) {\n if (content.parentNode !== element) {\n element.innerHTML = ''\n element.append(content)\n }\n } else {\n element.textContent = content.textContent\n }\n\n return\n }\n\n if (this._config.html) {\n if (this._config.sanitize) {\n content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn)\n }\n\n element.innerHTML = content\n } else {\n element.textContent = content\n }\n }\n\n getTitle() {\n const title = this._element.getAttribute('data-bs-original-title') || this._config.title\n\n return this._resolvePossibleFunction(title)\n }\n\n updateAttachment(attachment) {\n if (attachment === 'right') {\n return 'end'\n }\n\n if (attachment === 'left') {\n return 'start'\n }\n\n return attachment\n }\n\n // Private\n\n _initializeOnDelegatedTarget(event, context) {\n return context || this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _resolvePossibleFunction(content) {\n return typeof content === 'function' ? content.call(this._element) : content\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [\n {\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: 'onChange',\n enabled: true,\n phase: 'afterWrite',\n fn: data => this._handlePopperPlacementChange(data)\n }\n ],\n onFirstUpdate: data => {\n if (data.options.placement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n }\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n }\n }\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(attachment)}`)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this._config.trigger.split(' ')\n\n triggers.forEach(trigger => {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event))\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSEENTER :\n this.constructor.Event.FOCUSIN\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSELEAVE :\n this.constructor.Event.FOCUSOUT\n\n EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event))\n EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event))\n }\n })\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n if (this._config.selector) {\n this._config = {\n ...this._config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title')\n const originalTitleType = typeof this._element.getAttribute('data-bs-original-title')\n\n if (title || originalTitleType !== 'string') {\n this._element.setAttribute('data-bs-original-title', title || '')\n if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n context = this._initializeOnDelegatedTarget(event, context)\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = true\n }\n\n if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_SHOW\n\n if (!context._config.delay || !context._config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show()\n }\n }, context._config.delay.show)\n }\n\n _leave(event, context) {\n context = this._initializeOnDelegatedTarget(event, context)\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = context._element.contains(event.relatedTarget)\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_OUT\n\n if (!context._config.delay || !context._config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide()\n }\n }, context._config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n Object.keys(dataAttributes).forEach(dataAttr => {\n if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n delete dataAttributes[dataAttr]\n }\n })\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n config.container = config.container === false ? document.body : getElement(config.container)\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n for (const key in this._config) {\n if (this.constructor.Default[key] !== this._config[key]) {\n config[key] = this._config[key]\n }\n }\n\n // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n return config\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const basicClassPrefixRegex = new RegExp(`(^|\\\\s)${this._getBasicClassPrefix()}\\\\S+`, 'g')\n const tabClass = tip.getAttribute('class').match(basicClassPrefixRegex)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n _getBasicClassPrefix() {\n return CLASS_PREFIX\n }\n\n _handlePopperPlacementChange(popperData) {\n const { state } = popperData\n\n if (!state) {\n return\n }\n\n this.tip = state.elements.popper\n this._cleanTipClass()\n this._addAttachmentClass(this._getAttachment(state.placement))\n }\n\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tooltip to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\n\nconst Default = {\n ...Tooltip.Default,\n placement: 'right',\n offset: [0, 8],\n trigger: 'click',\n content: '',\n template: '<div class=\"popover\" role=\"tooltip\">' +\n '<div class=\"popover-arrow\"></div>' +\n '<h3 class=\"popover-header\"></h3>' +\n '<div class=\"popover-body\"></div>' +\n '</div>'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(string|element|function)'\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get Event() {\n return Event\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n setContent(tip) {\n this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TITLE)\n this._sanitizeAndSetContent(tip, this._getContent(), SELECTOR_CONTENT)\n }\n\n // Private\n\n _getContent() {\n return this._resolvePossibleFunction(this._config.content)\n }\n\n _getBasicClassPrefix() {\n return CLASS_PREFIX\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Popover to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElement,\n getSelectorFromElement,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n offset: 10,\n method: 'auto',\n target: ''\n}\n\nconst DefaultType = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}, .${CLASS_NAME_DROPDOWN_ITEM}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element)\n this._scrollElement = this._element.tagName === 'BODY' ? window : this._element\n this._config = this._getConfig(config)\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process())\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window ?\n METHOD_OFFSET :\n METHOD_POSITION\n\n const offsetMethod = this._config.method === 'auto' ?\n autoMethod :\n this._config.method\n\n const offsetBase = offsetMethod === METHOD_POSITION ?\n this._getScrollTop() :\n 0\n\n this._offsets = []\n this._targets = []\n this._scrollHeight = this._getScrollHeight()\n\n const targets = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target)\n\n targets.map(element => {\n const targetSelector = getSelectorFromElement(element)\n const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n return [\n Manipulator[offsetMethod](target).top + offsetBase,\n targetSelector\n ]\n }\n }\n\n return null\n })\n .filter(item => item)\n .sort((a, b) => a[0] - b[0])\n .forEach(item => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n EventHandler.off(this._scrollElement, EVENT_KEY)\n super.dispose()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n config.target = getElement(config.target) || document.documentElement\n\n typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window ?\n this._scrollElement.pageYOffset :\n this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window ?\n window.innerHeight :\n this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = SELECTOR_LINK_ITEMS.split(',')\n .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const link = SelectorEngine.findOne(queries.join(','), this._config.target)\n\n link.classList.add(CLASS_NAME_ACTIVE)\n if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n } else {\n SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)\n .forEach(listGroup => {\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)\n .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n\n // Handle special case when .nav-link is inside .nav-item\n SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS)\n .forEach(navItem => {\n SelectorEngine.children(navItem, SELECTOR_NAV_LINKS)\n .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n })\n })\n }\n\n EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target)\n .filter(node => node.classList.contains(CLASS_NAME_ACTIVE))\n .forEach(node => node.classList.remove(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = ScrollSpy.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n SelectorEngine.find(SELECTOR_DATA_SPY)\n .forEach(spy => new ScrollSpy(spy))\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .ScrollSpy to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isDisabled,\n reflow\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = ':scope > li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab extends BaseComponent {\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n show() {\n if ((this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n this._element.classList.contains(CLASS_NAME_ACTIVE))) {\n return\n }\n\n let previous\n const target = getElementFromSelector(this._element)\n const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n previous = SelectorEngine.find(itemSelector, listElement)\n previous = previous[previous.length - 1]\n }\n\n const hideEvent = previous ?\n EventHandler.trigger(previous, EVENT_HIDE, {\n relatedTarget: this._element\n }) :\n null\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget: previous\n })\n\n if (showEvent.defaultPrevented || (hideEvent !== null && hideEvent.defaultPrevented)) {\n return\n }\n\n this._activate(this._element, listElement)\n\n const complete = () => {\n EventHandler.trigger(previous, EVENT_HIDDEN, {\n relatedTarget: this._element\n })\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget: previous\n })\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n // Private\n\n _activate(element, container, callback) {\n const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n SelectorEngine.find(SELECTOR_ACTIVE_UL, container) :\n SelectorEngine.children(container, SELECTOR_ACTIVE)\n\n const active = activeElements[0]\n const isTransitioning = callback && (active && active.classList.contains(CLASS_NAME_FADE))\n\n const complete = () => this._transitionComplete(element, active, callback)\n\n if (active && isTransitioning) {\n active.classList.remove(CLASS_NAME_SHOW)\n this._queueCallback(complete, element, true)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n active.classList.remove(CLASS_NAME_ACTIVE)\n\n const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode)\n\n if (dropdownChild) {\n dropdownChild.classList.remove(CLASS_NAME_ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n element.classList.add(CLASS_NAME_ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n reflow(element)\n\n if (element.classList.contains(CLASS_NAME_FADE)) {\n element.classList.add(CLASS_NAME_SHOW)\n }\n\n let parent = element.parentNode\n if (parent && parent.nodeName === 'LI') {\n parent = parent.parentNode\n }\n\n if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n const dropdownElement = element.closest(SELECTOR_DROPDOWN)\n\n if (dropdownElement) {\n SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement)\n .forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE))\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tab.getOrCreateInstance(this)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const data = Tab.getOrCreateInstance(this)\n data.show()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tab to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n}\n\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._timeout = null\n this._hasMouseInteraction = false\n this._hasKeyboardInteraction = false\n this._setListeners()\n }\n\n // Getters\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._clearTimeout()\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE)\n }\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING)\n EventHandler.trigger(this._element, EVENT_SHOWN)\n\n this._maybeScheduleHide()\n }\n\n this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n reflow(this._element)\n this._element.classList.add(CLASS_NAME_SHOW)\n this._element.classList.add(CLASS_NAME_SHOWING)\n\n this._queueCallback(complete, this._element, this._config.animation)\n }\n\n hide() {\n if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n this._element.classList.remove(CLASS_NAME_SHOWING)\n this._element.classList.remove(CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.classList.add(CLASS_NAME_SHOWING)\n this._queueCallback(complete, this._element, this._config.animation)\n }\n\n dispose() {\n this._clearTimeout()\n\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this._element.classList.remove(CLASS_NAME_SHOW)\n }\n\n super.dispose()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n return config\n }\n\n _maybeScheduleHide() {\n if (!this._config.autohide) {\n return\n }\n\n if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n return\n }\n\n this._timeout = setTimeout(() => {\n this.hide()\n }, this._config.delay)\n }\n\n _onInteraction(event, isInteracting) {\n switch (event.type) {\n case 'mouseover':\n case 'mouseout':\n this._hasMouseInteraction = isInteracting\n break\n case 'focusin':\n case 'focusout':\n this._hasKeyboardInteraction = isInteracting\n break\n default:\n break\n }\n\n if (isInteracting) {\n this._clearTimeout()\n return\n }\n\n const nextElement = event.relatedTarget\n if (this._element === nextElement || this._element.contains(nextElement)) {\n return\n }\n\n this._maybeScheduleHide()\n }\n\n _setListeners() {\n EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n }\n\n _clearTimeout() {\n clearTimeout(this._timeout)\n this._timeout = null\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Toast.getOrCreateInstance(this, config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n }\n })\n }\n}\n\nenableDismissTrigger(Toast)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Toast to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Toast)\n\nexport default Toast\n"]} \ No newline at end of file
+{"version":3,"names":["MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","toType","object","Object","prototype","toString","call","match","toLowerCase","getUID","prefix","Math","floor","random","document","getElementById","getSelector","element","selector","getAttribute","hrefAttribute","includes","startsWith","split","trim","getSelectorFromElement","querySelector","getElementFromSelector","getTransitionDurationFromElement","transitionDuration","transitionDelay","window","getComputedStyle","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","triggerTransitionEnd","dispatchEvent","Event","isElement","jquery","nodeType","getElement","length","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","parentNode","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","getjQuery","jQuery","body","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","addEventListener","push","isRTL","dir","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","execute","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","called","handler","target","removeEventListener","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","max","min","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","bootstrapHandler","event","hydrateObj","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","domElements","querySelectorAll","this","domElement","findHandler","events","callable","delegationSelector","values","find","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","has","addHandler","wrapFunction","relatedTarget","handlers","previousFunction","replace","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","keys","on","one","inNamespace","isNamespace","elementEvent","slice","keyHandlers","trigger","args","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","evt","cancelable","preventDefault","obj","meta","key","value","entries","_unused","defineProperty","configurable","get","elementMap","Map","Data","set","instance","instanceMap","size","console","error","Array","from","remove","delete","normalizeData","JSON","parse","decodeURIComponent","normalizeDataKey","chr","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","Config","Default","DefaultType","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","RegExp","test","TypeError","toUpperCase","VERSION","BaseComponent","super","_element","_config","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","static","getInstance","enableDismissTrigger","component","method","clickEvent","tagName","getOrCreateInstance","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","_destroyElement","each","data","undefined","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","toggle","button","SelectorEngine","concat","Element","findOne","children","child","matches","parents","ancestor","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","map","join","el","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","endCallback","leftCallback","rightCallback","Swipe","isSupported","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","_eventIsPointerPenTouch","clientX","touches","_end","_handleSwipe","_move","absDeltaX","abs","direction","add","pointerType","navigator","maxTouchPoints","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","TOUCHEVENT_COMPAT_WAIT","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_DRAG_START","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM_IMG","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","KEY_TO_DIRECTION","ArrowLeft","ArrowRight","interval","keyboard","pause","ride","touch","wrap","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","_addEventListeners","cycle","_slide","nextWhenVisible","hidden","_clearInterval","_updateInterval","setInterval","_maybeEnableCycle","to","items","_getItems","activeIndex","_getItemIndex","_getActive","order","defaultInterval","_keydown","_addTouchEventListeners","img","swipeConfig","_directionToOrder","clearTimeout","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","parseInt","isNext","nextElement","nextElementIndex","triggerEvent","eventName","_orderToDirection","isCycling","directionalClassName","orderClassName","_isAnimated","clearInterval","carousel","slideIndex","carousels","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","style","scrollSize","getBoundingClientRect","selected","triggerArray","isOpen","selectorElements","ESCAPE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","RIGHT_MOUSE_BUTTON","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_DROPUP","CLASS_NAME_DROPEND","CLASS_NAME_DROPSTART","CLASS_NAME_DROPUP_CENTER","CLASS_NAME_DROPDOWN_CENTER","SELECTOR_DATA_TOGGLE_SHOWN","SELECTOR_MENU","SELECTOR_NAVBAR","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","PLACEMENT_TOPCENTER","PLACEMENT_BOTTOMCENTER","autoClose","boundary","display","offset","popperConfig","reference","Dropdown","_popper","_parent","_menu","_inNavbar","_detectNavbar","_createPopper","focus","_completeHide","destroy","update","Popper","referenceElement","_getPopperConfig","createPopper","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","placement","modifiers","options","enabled","_selectMenuItem","openToggles","context","composedPath","isMenuTarget","isInput","isEscapeEvent","isUpOrDownEvent","getToggleButton","stopPropagation","dataApiKeydownHandler","clearMenus","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","getWidth","documentWidth","clientWidth","innerWidth","width","_disableOverFlow","_setElementAttributes","calculatedValue","reset","_resetElementAttributes","isOverflowing","_saveInitialAttribute","overflow","styleProperty","scrollbarWidth","_applyManipulationCallback","setProperty","actualValue","removeProperty","callBack","sel","EVENT_MOUSEDOWN","className","clickCallback","rootElement","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","append","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_NAV_FORWARD","TAB_NAV_BACKWARD","autofocus","trapElement","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","elements","shiftKey","EVENT_HIDE_PREVENTED","EVENT_RESIZE","EVENT_MOUSEDOWN_DISMISS","EVENT_KEYDOWN_DISMISS","CLASS_NAME_OPEN","CLASS_NAME_STATIC","OPEN_SELECTOR","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_scrollBar","_adjustDialog","_showElement","_hideModal","htmlElement","handleUpdate","scrollTop","modalBody","_triggerBackdropTransition","currentTarget","_resetAdjustments","isModalOverflowing","scrollHeight","clientHeight","initialOverflowY","overflowY","isBodyOverflowing","paddingLeft","paddingRight","showEvent","alreadyOpen","CLASS_NAME_SHOWING","CLASS_NAME_HIDING","CLASS_NAME_BACKDROP","scroll","Offcanvas","blur","position","uriAttributes","ARIA_ATTRIBUTE_PATTERN","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","attributeName","nodeName","nodeValue","attributeRegex","some","regex","DefaultAllowlist","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","i","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","sanitizeHtml","unsafeHtml","allowList","sanitizeFunction","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","innerHTML","content","extraClass","html","sanitize","sanitizeFn","template","DefaultContentType","entry","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","_maybeSanitize","text","_setContent","arg","templateElement","_putElementInTemplate","textContent","DISALLOWED_ATTRIBUTES","CLASS_NAME_MODAL","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","EVENT_INSERTED","EVENT_CLICK","EVENT_FOCUSOUT","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","container","customClass","delay","fallbackPlacements","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_templateFactory","_newContent","tip","_setListeners","enable","disable","toggleEnabled","_initializeOnDelegatedTarget","click","_isWithActiveTrigger","_enter","_leave","_hideModalHandler","_disposePopper","_isWithContent","isInTheDom","ownerDocument","_getTipElement","previousHoverState","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","originalTitle","_getDelegateConfig","attachment","phase","state","triggers","eventIn","eventOut","_fixTitle","_setTimeout","timeout","dataAttributes","dataAttribute","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","EVENT_ACTIVATE","CLASS_NAME_DROPDOWN_ITEM","SELECTOR_DATA_SPY","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","rootMargin","smoothScroll","ScrollSpy","_targetLinks","_observableSections","_rootElement","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","disconnect","_getNewObserver","section","observe","observableSection","hash","height","offsetTop","scrollTo","top","behavior","threshold","_getRootMargin","IntersectionObserver","_observerCallback","targetElement","id","_process","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","_activateParents","listGroup","item","activeNodes","node","spy","CLASS_DROPDOWN","SELECTOR_DROPDOWN_MENU","SELECTOR_DROPDOWN_ITEM","NOT_SELECTOR_DROPDOWN_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","active","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleDropDown","nextActiveElement","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","open","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting"],"sources":["../../js/src/util/index.js","../../js/src/dom/event-handler.js","../../js/src/dom/data.js","../../js/src/dom/manipulator.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/selector-engine.js","../../js/src/util/swipe.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/util/scrollbar.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/modal.js","../../js/src/offcanvas.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`\n }\n\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n }\n\n selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false\n }\n\n if (typeof object.jquery !== 'undefined') {\n object = object[0]\n }\n\n return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object\n }\n\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(object)\n }\n\n return null\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])')\n\n if (!closedDetails) {\n return elementIsVisible\n }\n\n if (closedDetails !== element) {\n const summary = element.closest('summary')\n if (summary && summary.parentNode !== closedDetails) {\n return false\n }\n\n if (summary === null) {\n return false\n }\n }\n\n return elementIsVisible\n}\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true\n }\n\n if (element.classList.contains('disabled')) {\n return true\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery\n }\n\n return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback()\n }\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n }\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n defineJQueryPlugin,\n execute,\n executeAfterTransition,\n findShadowRoot,\n getElement,\n getElementFromSelector,\n getjQuery,\n getNextActiveElement,\n getSelectorFromElement,\n getTransitionDurationFromElement,\n getUID,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop,\n onDOMContentLoaded,\n reflow,\n triggerTransitionEnd,\n toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n const uid = makeEventUid(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, { delegateTarget: element })\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue\n }\n\n hydrateObj(event, { delegateTarget: target })\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events)\n .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string'\n // todo: tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n let typeEvent = getTypeEvent(originalTypeEvent)\n\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent\n }\n\n return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n return fn.call(this, event)\n }\n }\n }\n\n callable = wrapFunction(callable)\n }\n\n const events = getElementEvents(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n return\n }\n\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = isDelegated ?\n bootstrapDelegationHandler(element, handler, callable) :\n bootstrapHandler(element, callable)\n\n fn.delegationSelector = isDelegated ? handler : null\n fn.callable = callable\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n for (const handlerKey of Object.keys(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey]\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n }\n }\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '')\n return customEvents[event] || event\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false)\n },\n\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getElementEvents(element)\n const storeElementEvent = events[typeEvent] || {}\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n return\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n }\n }\n\n for (const keyHandlers of Object.keys(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers]\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n }\n }\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = getTypeEvent(event)\n const inNamespace = event !== typeEvent\n\n let jQueryEvent = null\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n let evt = new Event(event, { bubbles, cancelable: true })\n evt = hydrateObj(evt, args)\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nfunction hydrateObj(obj, meta) {\n for (const [key, value] of Object.entries(meta || {})) {\n try {\n obj[key] = value\n } catch {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value\n }\n })\n }\n }\n\n return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map())\n }\n\n const instanceMap = elementMap.get(element)\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n return\n }\n\n instanceMap.set(key, instance)\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null\n }\n\n return null\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return\n }\n\n const instanceMap = elementMap.get(element)\n\n instanceMap.delete(key)\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element)\n }\n }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n if (value === 'true') {\n return true\n }\n\n if (value === 'false') {\n return false\n }\n\n if (value === Number(value).toString()) {\n return Number(value)\n }\n\n if (value === '' || value === 'null') {\n return null\n }\n\n if (typeof value !== 'string') {\n return value\n }\n\n try {\n return JSON.parse(decodeURIComponent(value))\n } catch {\n return value\n }\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n }\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0): util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isElement, toType } from './index'\nimport Manipulator from '../dom/manipulator'\n\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {}\n }\n\n static get DefaultType() {\n return {}\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!')\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n _configAfterMerge(config) {\n return config\n }\n\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n return {\n ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n }\n }\n\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const property of Object.keys(configTypes)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n }\n }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\nimport { executeAfterTransition, getElement } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Config from './util/config'\n\n/**\n * Constants\n */\n\nconst VERSION = '5.2.0'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super()\n\n element = getElement(element)\n if (!element) {\n return\n }\n\n this._element = element\n this._config = this._getConfig(config)\n\n Data.set(this._element, this.constructor.DATA_KEY, this)\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY)\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null\n }\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated)\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n // Static\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY)\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n }\n\n static get VERSION() {\n return VERSION\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`\n }\n\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { getElementFromSelector, isDisabled } from './index'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`\n const name = component.NAME\n\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const target = getElementFromSelector(this) || this.closest(`.${name}`)\n const instance = component.getOrCreateInstance(target)\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]()\n })\n}\n\nexport {\n enableDismissTrigger\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n if (closeEvent.defaultPrevented) {\n return\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n }\n\n // Private\n _destroyElement() {\n this._element.remove()\n EventHandler.trigger(this._element, EVENT_CLOSED)\n this.dispose()\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this)\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n const data = Button.getOrCreateInstance(button)\n\n data.toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible } from '../util/index'\n\n/**\n * Constants\n */\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n let ancestor = element.parentNode.closest(selector)\n\n while (ancestor) {\n parents.push(ancestor)\n ancestor = ancestor.parentNode.closest(selector)\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (next.matches(selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n },\n\n focusableChildren(element) {\n const focusables = [\n 'a',\n 'button',\n 'input',\n 'textarea',\n 'select',\n 'details',\n '[tabindex]',\n '[contenteditable=\"true\"]'\n ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0): util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Config from './config'\nimport EventHandler from '../dom/event-handler'\nimport { execute } from './index'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n}\n\nconst DefaultType = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super()\n this._element = element\n\n if (!element || !Swipe.isSupported()) {\n return\n }\n\n this._config = this._getConfig(config)\n this._deltaX = 0\n this._supportPointerEvents = Boolean(window.PointerEvent)\n this._initEvents()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n dispose() {\n EventHandler.off(this._element, EVENT_KEY)\n }\n\n // Private\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX\n\n return\n }\n\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX\n }\n }\n\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX\n }\n\n this._handleSwipe()\n execute(this._config.endCallback)\n }\n\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ?\n 0 :\n event.touches[0].clientX - this._deltaX\n }\n\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX)\n\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltaX / this._deltaX\n\n this._deltaX = 0\n\n if (!direction) {\n return\n }\n\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n }\n\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n }\n }\n\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n }\n\n // Static\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n getNextActiveElement,\n isRTL,\n isVisible,\n reflow,\n triggerTransitionEnd\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport Swipe from './util/swipe'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)', // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._interval = null\n this._activeElement = null\n this._isSliding = false\n this.touchTimeout = null\n this._swipeHelper = null\n\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._addEventListeners()\n\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n next() {\n this._slide(ORDER_NEXT)\n }\n\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n this._slide(ORDER_PREV)\n }\n\n pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element)\n }\n\n this._clearInterval()\n }\n\n cycle() {\n this._clearInterval()\n this._updateInterval()\n\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)\n }\n\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle())\n return\n }\n\n this.cycle()\n }\n\n to(index) {\n const items = this._getItems()\n if (index > items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n const activeIndex = this._getItemIndex(this._getActive())\n if (activeIndex === index) {\n return\n }\n\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV\n\n this._slide(order, items[index])\n }\n\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose()\n }\n\n super.dispose()\n }\n\n // Private\n _configAfterMerge(config) {\n config.defaultInterval = config.interval\n return config\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n }\n\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault())\n }\n\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return\n }\n\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack\n }\n\n this._swipeHelper = new Swipe(this._element, swipeConfig)\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n const direction = KEY_TO_DIRECTION[event.key]\n if (direction) {\n event.preventDefault()\n this._slide(this._directionToOrder(direction))\n }\n }\n\n _getItemIndex(element) {\n return this._getItems().indexOf(element)\n }\n\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return\n }\n\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n activeIndicator.removeAttribute('aria-current')\n\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE)\n newActiveIndicator.setAttribute('aria-current', 'true')\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || this._getActive()\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n this._config.interval = elementInterval || this._config.defaultInterval\n }\n\n _slide(order, element = null) {\n if (this._isSliding) {\n return\n }\n\n const activeElement = this._getActive()\n const isNext = order === ORDER_NEXT\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap)\n\n if (nextElement === activeElement) {\n return\n }\n\n const nextElementIndex = this._getItemIndex(nextElement)\n\n const triggerEvent = eventName => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n })\n }\n\n const slideEvent = triggerEvent(EVENT_SLIDE)\n\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // todo: change tests that use empty divs to avoid this check\n return\n }\n\n const isCycling = Boolean(this._interval)\n this.pause()\n\n this._isSliding = true\n\n this._setActiveIndicatorElement(nextElementIndex)\n this._activeElement = nextElement\n\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n triggerEvent(EVENT_SLID)\n }\n\n this._queueCallback(completeCallBack, activeElement, this._isAnimated())\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE)\n }\n\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n }\n\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element)\n }\n\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n }\n\n _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n }\n\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n }\n\n _orderToDirection(order) {\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n }\n\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config)\n\n if (typeof config === 'number') {\n data.to(config)\n return\n }\n\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n const target = getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n event.preventDefault()\n\n const carousel = Carousel.getOrCreateInstance(target)\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n carousel.to(slideIndex)\n carousel._maybeEnableCycle()\n return\n }\n\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next()\n carousel._maybeEnableCycle()\n return\n }\n\n carousel.prev()\n carousel._maybeEnableCycle()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel)\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElement,\n getElementFromSelector,\n getSelectorFromElement,\n reflow\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n parent: null,\n toggle: true\n}\n\nconst DefaultType = {\n parent: '(null|element)',\n toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._isTransitioning = false\n this._triggerArray = []\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (const elem of toggleList) {\n const selector = getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElement => foundElement === this._element)\n\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem)\n }\n }\n\n this._initializeChildren()\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n if (this._isShown()) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._isShown()) {\n return\n }\n\n let activeChildren = []\n\n // find active children\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n .filter(element => element !== this._element)\n .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n }\n\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n for (const activeInstance of activeChildren) {\n activeInstance.hide()\n }\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n this._addAriaAndCollapsedClass(this._triggerArray, true)\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n\n this._queueCallback(complete, this._element, true)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n for (const trigger of this._triggerArray) {\n const element = getElementFromSelector(trigger)\n\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false)\n }\n }\n\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n\n this._queueCallback(complete, this._element, true)\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW)\n }\n\n // Private\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle) // Coerce string values\n config.parent = getElement(config.parent)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n }\n\n _initializeChildren() {\n if (!this._config.parent) {\n return\n }\n\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n for (const element of children) {\n const selected = getElementFromSelector(element)\n\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected))\n }\n }\n }\n\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n // remove children if greater depth\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n }\n\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return\n }\n\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n element.setAttribute('aria-expanded', isOpen)\n }\n }\n\n // Static\n static jQueryInterface(config) {\n const _config = {}\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n event.preventDefault()\n }\n\n const selector = getSelectorFromElement(this)\n const selectorElements = SelectorEngine.find(selector)\n\n for (const element of selectorElements) {\n Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport {\n defineJQueryPlugin,\n getElement,\n getNextActiveElement,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center'\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)'\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR = '.navbar'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\nconst PLACEMENT_TOPCENTER = 'top'\nconst PLACEMENT_BOTTOMCENTER = 'bottom'\n\nconst Default = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle'\n}\n\nconst DefaultType = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._popper = null\n this._parent = this._element.parentNode // dropdown wrapper\n this._menu = SelectorEngine.findOne(SELECTOR_MENU, this._parent)\n this._inNavbar = this._detectNavbar()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n return this._isShown() ? this.hide() : this.show()\n }\n\n show() {\n if (isDisabled(this._element) || this._isShown()) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._createPopper()\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop)\n }\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.add(CLASS_NAME_SHOW)\n this._element.classList.add(CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n this._completeHide(relatedTarget)\n }\n\n dispose() {\n if (this._popper) {\n this._popper.destroy()\n }\n\n super.dispose()\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Private\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop)\n }\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._menu.classList.remove(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._element.setAttribute('aria-expanded', 'false')\n Manipulator.removeDataAttribute(this._menu, 'popper')\n EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n }\n\n _getConfig(config) {\n config = super._getConfig(config)\n\n if (typeof config.reference === 'object' && !isElement(config.reference) &&\n typeof config.reference.getBoundingClientRect !== 'function'\n ) {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n }\n\n return config\n }\n\n _createPopper() {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = this._parent\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference)\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference\n }\n\n const popperConfig = this._getPopperConfig()\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n }\n\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW)\n }\n\n _getPlacement() {\n const parentDropdown = this._parent\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n }\n\n _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }\n\n // Disable Popper if we have a static display or Dropdown is in Navbar\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static') // todo:v6 remove\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n }\n }\n\n _selectMenuItem({ key, target }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element))\n\n if (!items.length) {\n return\n }\n\n // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n\n static clearMenus(event) {\n if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n return\n }\n\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN)\n\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle)\n if (!context || context._config.autoClose === false) {\n continue\n }\n\n const composedPath = event.composedPath()\n const isMenuTarget = composedPath.includes(context._menu)\n if (\n composedPath.includes(context._element) ||\n (context._config.autoClose === 'inside' && !isMenuTarget) ||\n (context._config.autoClose === 'outside' && isMenuTarget)\n ) {\n continue\n }\n\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue\n }\n\n const relatedTarget = { relatedTarget: context._element }\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n context._completeHide(relatedTarget)\n }\n }\n\n static dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n const isInput = /input|textarea/i.test(event.target.tagName)\n const isEscapeEvent = event.key === ESCAPE_KEY\n const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return\n }\n\n if (isInput && !isEscapeEvent) {\n return\n }\n\n event.preventDefault()\n\n const getToggleButton = SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode)\n const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n if (isUpOrDownEvent) {\n event.stopPropagation()\n instance.show()\n instance._selectMenuItem(event)\n return\n }\n\n if (instance._isShown()) { // else is escape and we check if it is shown\n event.stopPropagation()\n instance.hide()\n getToggleButton.focus()\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine'\nimport Manipulator from '../dom/manipulator'\nimport { isElement } from './index'\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\nconst PROPERTY_PADDING = 'padding-right'\nconst PROPERTY_MARGIN = 'margin-right'\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body\n }\n\n // Public\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth\n return Math.abs(window.innerWidth - documentWidth)\n }\n\n hide() {\n const width = this.getWidth()\n this._disableOverFlow()\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow')\n this._resetElementAttributes(this._element, PROPERTY_PADDING)\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\n }\n\n isOverflowing() {\n return this.getWidth() > 0\n }\n\n // Private\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow')\n this._element.style.overflow = 'hidden'\n }\n\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth()\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return\n }\n\n this._saveInitialAttribute(element, styleProperty)\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty)\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue)\n }\n }\n\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProperty)\n // We only want to remove the property if the value is `null`; the value can also be zero\n if (value === null) {\n element.style.removeProperty(styleProperty)\n return\n }\n\n Manipulator.removeDataAttribute(element, styleProperty)\n element.style.setProperty(styleProperty, value)\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector)\n return\n }\n\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel)\n }\n }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { execute, executeAfterTransition, getElement, reflow } from './index'\nimport Config from './config'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n}\n\nconst DefaultType = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isAppended = false\n this._element = null\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._append()\n\n const element = this._getElement()\n if (this._config.isAnimated) {\n reflow(element)\n }\n\n element.classList.add(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n execute(callback)\n })\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n this.dispose()\n execute(callback)\n })\n }\n\n dispose() {\n if (!this._isAppended) {\n return\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n this._element.remove()\n this._isAppended = false\n }\n\n // Private\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div')\n backdrop.className = this._config.className\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE)\n }\n\n this._element = backdrop\n }\n\n return this._element\n }\n\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement)\n return config\n }\n\n _append() {\n if (this._isAppended) {\n return\n }\n\n const element = this._getElement()\n this._config.rootElement.append(element)\n\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback)\n })\n\n this._isAppended = true\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport SelectorEngine from '../dom/selector-engine'\nimport Config from './config'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n}\n\nconst DefaultType = {\n autofocus: 'boolean',\n trapElement: 'element'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isActive = false\n this._lastTabNavDirection = null\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n activate() {\n if (this._isActive) {\n return\n }\n\n if (this._config.autofocus) {\n this._config.trapElement.focus()\n }\n\n EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n this._isActive = true\n }\n\n deactivate() {\n if (!this._isActive) {\n return\n }\n\n this._isActive = false\n EventHandler.off(document, EVENT_KEY)\n }\n\n // Private\n _handleFocusin(event) {\n const { trapElement } = this._config\n\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return\n }\n\n const elements = SelectorEngine.focusableChildren(trapElement)\n\n if (elements.length === 0) {\n trapElement.focus()\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus()\n } else {\n elements[0].focus()\n }\n }\n\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, getElementFromSelector, isRTL, isVisible, reflow } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport ScrollBarHelper from './util/scrollbar'\nimport BaseComponent from './base-component'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst OPEN_SELECTOR = '.modal.show'\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\n\nconst Default = {\n backdrop: true,\n focus: true,\n keyboard: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._isShown = false\n this._isTransitioning = false\n this._scrollBar = new ScrollBarHelper()\n\n this._addEventListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._isTransitioning = true\n\n this._scrollBar.hide()\n\n document.body.classList.add(CLASS_NAME_OPEN)\n\n this._adjustDialog()\n\n this._backdrop.show(() => this._showElement(relatedTarget))\n }\n\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._isShown = false\n this._isTransitioning = true\n this._focustrap.deactivate()\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated())\n }\n\n dispose() {\n for (const htmlElement of [window, this._dialog]) {\n EventHandler.off(htmlElement, EVENT_KEY)\n }\n\n this._backdrop.dispose()\n this._focustrap.deactivate()\n super.dispose()\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\n document.body.append(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.scrollTop = 0\n\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated())\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return\n }\n\n if (this._config.keyboard) {\n event.preventDefault()\n this.hide()\n return\n }\n\n this._triggerBackdropTransition()\n })\n\n EventHandler.on(window, EVENT_RESIZE, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog()\n }\n })\n\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n if (event.target !== event.currentTarget) { // click is inside modal-dialog\n return\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n return\n }\n\n if (this._config.backdrop) {\n this.hide()\n }\n })\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._scrollBar.reset()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE)\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n const initialOverflowY = this._element.style.overflowY\n // return if the following background transition hasn't yet completed\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return\n }\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY\n }, this._dialog)\n }, this._dialog)\n\n this._element.focus()\n }\n\n /**\n * The following methods are used to handle overflowing modals\n */\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n const scrollbarWidth = this._scrollBar.getWidth()\n const isBodyOverflowing = scrollbarWidth > 0\n\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight'\n this._element.style[property] = `${scrollbarWidth}px`\n }\n\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft'\n this._element.style[property] = `${scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n // Static\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n // avoid conflict when clicking modal toggler while another one is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide()\n }\n\n const data = Modal.getOrCreateInstance(target)\n\n data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isDisabled,\n isVisible\n} from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport SelectorEngine from './dom/selector-engine'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\nconst CLASS_NAME_HIDING = 'hiding'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n scroll: false\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._isShown = false\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._addEventListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._backdrop.show()\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide()\n }\n\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.classList.add(CLASS_NAME_SHOWING)\n\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate()\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOWING)\n EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n }\n\n this._queueCallback(completeCallBack, this._element, true)\n }\n\n hide() {\n if (!this._isShown) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._focustrap.deactivate()\n this._element.blur()\n this._isShown = false\n this._element.classList.add(CLASS_NAME_HIDING)\n this._backdrop.hide()\n\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n\n if (!this._config.scroll) {\n new ScrollBarHelper().reset()\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._queueCallback(completeCallback, this._element, true)\n }\n\n dispose() {\n this._backdrop.dispose()\n this._focustrap.deactivate()\n super.dispose()\n }\n\n // Private\n _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n return\n }\n\n this.hide()\n }\n\n // 'static' option will be translated to true, and booleans will keep their value\n const isVisible = Boolean(this._config.backdrop)\n\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return\n }\n\n if (!this._config.keyboard) {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n return\n }\n\n this.hide()\n })\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus()\n }\n })\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide()\n }\n\n const data = Offcanvas.getOrCreateInstance(target)\n data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show()\n }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide()\n }\n }\n})\n\nenableDismissTrigger(Offcanvas)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttributes = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue))\n }\n\n return true\n }\n\n // Check if a regular expression validates the attribute.\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n .some(regex => regex.test(attributeName))\n}\n\nexport const DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase()\n\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove()\n\n continue\n }\n\n const attributeList = [].concat(...element.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName)\n }\n }\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0): util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer'\nimport { getElement, isElement } from '../util/index'\nimport SelectorEngine from '../dom/selector-engine'\nimport Config from './config'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n allowList: DefaultAllowlist,\n content: {}, // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '<div></div>'\n}\n\nconst DefaultType = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n}\n\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n getContent() {\n return Object.values(this._config.content)\n .map(config => this._resolvePossibleFunction(config))\n .filter(Boolean)\n }\n\n hasContent() {\n return this.getContent().length > 0\n }\n\n changeContent(content) {\n this._checkContent(content)\n this._config.content = { ...this._config.content, ...content }\n return this\n }\n\n toHtml() {\n const templateWrapper = document.createElement('div')\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector)\n }\n\n const template = templateWrapper.children[0]\n const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n if (extraClass) {\n template.classList.add(...extraClass.split(' '))\n }\n\n return template\n }\n\n // Private\n _typeCheckConfig(config) {\n super._typeCheckConfig(config)\n this._checkContent(config.content)\n }\n\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n }\n }\n\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template)\n\n if (!templateElement) {\n return\n }\n\n content = this._resolvePossibleFunction(content)\n\n if (!content) {\n templateElement.remove()\n return\n }\n\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement)\n return\n }\n\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content)\n return\n }\n\n templateElement.textContent = content\n }\n\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n }\n\n _resolvePossibleFunction(arg) {\n return typeof arg === 'function' ? arg(this) : arg\n }\n\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = ''\n templateElement.append(element)\n return\n }\n\n templateElement.textContent = element.textContent\n }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport { defineJQueryPlugin, findShadowRoot, getElement, getUID, isRTL, noop } from './util/index'\nimport { DefaultAllowlist } from './util/sanitizer'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport BaseComponent from './base-component'\nimport TemplateFactory from './util/template-factory'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 0],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"tooltip-arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div>' +\n '</div>',\n title: '',\n trigger: 'hover focus'\n}\n\nconst DefaultType = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n super(element, config)\n\n // Private\n this._isEnabled = true\n this._timeout = 0\n this._isHovered = false\n this._activeTrigger = {}\n this._popper = null\n this._templateFactory = null\n this._newContent = null\n\n // Protected\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const context = this._initializeOnDelegatedTarget(event)\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter()\n } else {\n context._leave()\n }\n\n return\n }\n\n if (this._isShown()) {\n this._leave()\n return\n }\n\n this._enter()\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n if (this.tip) {\n this.tip.remove()\n }\n\n this._disposePopper()\n super.dispose()\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (!(this._isWithContent() && this._isEnabled)) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n // todo v6 remove this OR make it optional\n if (this.tip) {\n this.tip.remove()\n this.tip = null\n }\n\n const tip = this._getTipElement()\n\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n const { container } = this._config\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip)\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n }\n\n if (this._popper) {\n this._popper.update()\n } else {\n this._popper = this._createPopper(tip)\n }\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop)\n }\n }\n\n const complete = () => {\n const previousHoverState = this._isHovered\n\n this._isHovered = false\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n if (previousHoverState) {\n this._leave()\n }\n }\n\n this._queueCallback(complete, this.tip, this._isAnimated())\n }\n\n hide() {\n if (!this._isShown()) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const tip = this._getTipElement()\n tip.classList.remove(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop)\n }\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n this._isHovered = false\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n if (!this._isHovered) {\n tip.remove()\n }\n\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n\n this._disposePopper()\n }\n\n this._queueCallback(complete, this.tip, this._isAnimated())\n }\n\n update() {\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Protected\n _isWithContent() {\n return Boolean(this._getTitle())\n }\n\n _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n }\n\n return this.tip\n }\n\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml()\n\n // todo: remove this check on v6\n if (!tip) {\n return null\n }\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n // todo: on v6 the following can be achieved with CSS only\n tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n const tipId = getUID(this.constructor.NAME).toString()\n\n tip.setAttribute('id', tipId)\n\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n return tip\n }\n\n setContent(content) {\n this._newContent = content\n if (this._isShown()) {\n this._disposePopper()\n this.show()\n }\n }\n\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content)\n } else {\n this._templateFactory = new TemplateFactory({\n ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n })\n }\n\n return this._templateFactory\n }\n\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n }\n }\n\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._config.originalTitle\n }\n\n // Private\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n }\n\n _isAnimated() {\n return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n }\n\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n }\n\n _createPopper(tip) {\n const placement = typeof this._config.placement === 'function' ?\n this._config.placement.call(this, tip, this._element) :\n this._config.placement\n const attachment = AttachmentMap[placement.toUpperCase()]\n return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _resolvePossibleFunction(arg) {\n return typeof arg === 'function' ? arg.call(this._element) : arg\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [\n {\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: data => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement)\n }\n }\n ]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n }\n }\n\n _setListeners() {\n const triggers = this._config.trigger.split(' ')\n\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => this.toggle(event))\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.eventName(EVENT_MOUSEENTER) :\n this.constructor.eventName(EVENT_FOCUSIN)\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.eventName(EVENT_MOUSELEAVE) :\n this.constructor.eventName(EVENT_FOCUSOUT)\n\n EventHandler.on(this._element, eventIn, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n context._enter()\n })\n EventHandler.on(this._element, eventOut, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n context._element.contains(event.relatedTarget)\n\n context._leave()\n })\n }\n }\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n if (this._config.selector) {\n this._config = {\n ...this._config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const title = this._config.originalTitle\n\n if (!title) {\n return\n }\n\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.removeAttribute('title')\n }\n\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true\n return\n }\n\n this._isHovered = true\n\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show()\n }\n }, this._config.delay.show)\n }\n\n _leave() {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n this._isHovered = false\n\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide()\n }\n }, this._config.delay.hide)\n }\n\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout)\n this._timeout = setTimeout(handler, timeout)\n }\n\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true)\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute]\n }\n }\n\n config = {\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n config = this._mergeConfigObj(config)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : getElement(config.container)\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n config.originalTitle = this._element.getAttribute('title') || ''\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n for (const key in this._config) {\n if (this.constructor.Default[key] !== this._config[key]) {\n config[key] = this._config[key]\n }\n }\n\n // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n return config\n }\n\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Tooltip from './tooltip'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Default = {\n ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '<div class=\"popover\" role=\"tooltip\">' +\n '<div class=\"popover-arrow\"></div>' +\n '<h3 class=\"popover-header\"></h3>' +\n '<div class=\"popover-body\"></div>' +\n '</div>',\n trigger: 'click'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Overrides\n _isWithContent() {\n return this._getTitle() || this._getContent()\n }\n\n // Private\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent()\n }\n }\n\n _getContent() {\n return this._resolvePossibleFunction(this._config.content)\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, getElement, isDisabled, isVisible } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst Default = {\n offset: null, // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null\n}\n\nconst DefaultType = {\n offset: '(number|null)', // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n // this._element is the observablesContainer and config.target the menu links wrapper\n this._targetLinks = new Map()\n this._observableSections = new Map()\n this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n this._activeTarget = null\n this._observer = null\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n }\n this.refresh() // initialize\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n refresh() {\n this._initializeTargetsAndObservables()\n this._maybeEnableSmoothScroll()\n\n if (this._observer) {\n this._observer.disconnect()\n } else {\n this._observer = this._getNewObserver()\n }\n\n for (const section of this._observableSections.values()) {\n this._observer.observe(section)\n }\n }\n\n dispose() {\n this._observer.disconnect()\n super.dispose()\n }\n\n // Private\n _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = getElement(config.target) || document.body\n\n return config\n }\n\n _maybeEnableSmoothScroll() {\n if (!this._config.smoothScroll) {\n return\n }\n\n // unregister any previous listeners\n EventHandler.off(this._config.target, EVENT_CLICK)\n\n EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n const observableSection = this._observableSections.get(event.target.hash)\n if (observableSection) {\n event.preventDefault()\n const root = this._rootElement || window\n const height = observableSection.offsetTop - this._element.offsetTop\n if (root.scrollTo) {\n root.scrollTo({ top: height, behavior: 'smooth' })\n return\n }\n\n // Chrome 60 doesn't support `scrollTo`\n root.scrollTop = height\n }\n })\n }\n\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: [0.1, 0.5, 1],\n rootMargin: this._getRootMargin()\n }\n\n return new IntersectionObserver(entries => this._observerCallback(entries), options)\n }\n\n // The logic of selection\n _observerCallback(entries) {\n const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`)\n const activate = entry => {\n this._previousScrollData.visibleEntryTop = entry.target.offsetTop\n this._process(targetElement(entry))\n }\n\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\n this._previousScrollData.parentScrollTop = parentScrollTop\n\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null\n this._clearActiveClass(targetElement(entry))\n\n continue\n }\n\n const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\n // if we are scrolling down, pick the bigger offsetTop\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry)\n // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n if (!parentScrollTop) {\n return\n }\n\n continue\n }\n\n // if we are scrolling up, pick the smallest offsetTop\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry)\n }\n }\n }\n\n // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n _getRootMargin() {\n return this._config.offset ? `${this._config.offset}px 0px -30%` : this._config.rootMargin\n }\n\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map()\n this._observableSections = new Map()\n\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n\n for (const anchor of targetLinks) {\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || isDisabled(anchor)) {\n continue\n }\n\n const observableSection = SelectorEngine.findOne(anchor.hash, this._element)\n\n // ensure that the observableSection exists & is visible\n if (isVisible(observableSection)) {\n this._targetLinks.set(anchor.hash, anchor)\n this._observableSections.set(anchor.hash, observableSection)\n }\n }\n }\n\n _process(target) {\n if (this._activeTarget === target) {\n return\n }\n\n this._clearActiveClass(this._config.target)\n this._activeTarget = target\n target.classList.add(CLASS_NAME_ACTIVE)\n this._activateParents(target)\n\n EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n }\n\n _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n return\n }\n\n for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n item.classList.add(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n _clearActiveClass(parent) {\n parent.classList.remove(CLASS_NAME_ACTIVE)\n\n const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n for (const node of activeNodes) {\n node.classList.remove(CLASS_NAME_ACTIVE)\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = ScrollSpy.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n ScrollSpy.getOrCreateInstance(spy)\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, getElementFromSelector, getNextActiveElement, isDisabled } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_DROPDOWN = 'dropdown'\n\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu'\nconst SELECTOR_DROPDOWN_ITEM = '.dropdown-item'\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = ':not(.dropdown-toggle)'\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]' // todo:v6: could be only `tab`\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n constructor(element) {\n super(element)\n this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n if (!this._parent) {\n return\n // todo: should Throw exception on v6\n // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)\n }\n\n // Set up initial aria attributes\n this._setInitialAttributes(this._parent, this._getChildren())\n\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n show() { // Shows this elem and deactivate the active sibling if exists\n const innerElem = this._element\n if (this._elemIsActive(innerElem)) {\n return\n }\n\n // Search for active tab on same parent to deactivate it\n const active = this._getActiveElem()\n\n const hideEvent = active ?\n EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n null\n\n const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n return\n }\n\n this._deactivate(active, innerElem)\n this._activate(innerElem, active)\n }\n\n // Private\n _activate(element, relatedElem) {\n if (!element) {\n return\n }\n\n element.classList.add(CLASS_NAME_ACTIVE)\n\n this._activate(getElementFromSelector(element)) // Search and activate/show the proper section\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.add(CLASS_NAME_SHOW)\n return\n }\n\n element.focus()\n element.removeAttribute('tabindex')\n element.setAttribute('aria-selected', true)\n this._toggleDropDown(element, true)\n EventHandler.trigger(element, EVENT_SHOWN, {\n relatedTarget: relatedElem\n })\n }\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n }\n\n _deactivate(element, relatedElem) {\n if (!element) {\n return\n }\n\n element.classList.remove(CLASS_NAME_ACTIVE)\n element.blur()\n\n this._deactivate(getElementFromSelector(element)) // Search and deactivate the shown section too\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.remove(CLASS_NAME_SHOW)\n return\n }\n\n element.setAttribute('aria-selected', false)\n element.setAttribute('tabindex', '-1')\n this._toggleDropDown(element, false)\n EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n }\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n }\n\n _keydown(event) {\n if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key))) {\n return\n }\n\n event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n event.preventDefault()\n const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n const nextActiveElement = getNextActiveElement(this._getChildren().filter(element => !isDisabled(element)), event.target, isNext, true)\n\n if (nextActiveElement) {\n Tab.getOrCreateInstance(nextActiveElement).show()\n }\n }\n\n _getChildren() { // collection of inner elements\n return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n }\n\n _getActiveElem() {\n return this._getChildren().find(child => this._elemIsActive(child)) || null\n }\n\n _setInitialAttributes(parent, children) {\n this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n for (const child of children) {\n this._setInitialAttributesOnChild(child)\n }\n }\n\n _setInitialAttributesOnChild(child) {\n child = this._getInnerElement(child)\n const isActive = this._elemIsActive(child)\n const outerElem = this._getOuterElement(child)\n child.setAttribute('aria-selected', isActive)\n\n if (outerElem !== child) {\n this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n }\n\n if (!isActive) {\n child.setAttribute('tabindex', '-1')\n }\n\n this._setAttributeIfNotExists(child, 'role', 'tab')\n\n // set attributes to the related panel too\n this._setInitialAttributesOnTargetPanel(child)\n }\n\n _setInitialAttributesOnTargetPanel(child) {\n const target = getElementFromSelector(child)\n\n if (!target) {\n return\n }\n\n this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n if (child.id) {\n this._setAttributeIfNotExists(target, 'aria-labelledby', `#${child.id}`)\n }\n }\n\n _toggleDropDown(element, open) {\n const outerElem = this._getOuterElement(element)\n if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n return\n }\n\n const toggle = (selector, className) => {\n const element = SelectorEngine.findOne(selector, outerElem)\n if (element) {\n element.classList.toggle(className, open)\n }\n }\n\n toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE)\n toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW)\n toggle(SELECTOR_DROPDOWN_ITEM, CLASS_NAME_ACTIVE)\n outerElem.setAttribute('aria-expanded', open)\n }\n\n _setAttributeIfNotExists(element, attribute, value) {\n if (!element.hasAttribute(attribute)) {\n element.setAttribute(attribute, value)\n }\n }\n\n _elemIsActive(elem) {\n return elem.classList.contains(CLASS_NAME_ACTIVE)\n }\n\n // Try to get the inner element (usually the .nav-link)\n _getInnerElement(elem) {\n return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n }\n\n // Try to get the outer element (usually the .nav-item)\n _getOuterElement(elem) {\n return elem.closest(SELECTOR_OUTER) || elem\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tab.getOrCreateInstance(this)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n Tab.getOrCreateInstance(element)\n }\n})\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, reflow } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n}\n\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._timeout = null\n this._hasMouseInteraction = false\n this._hasKeyboardInteraction = false\n this._setListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._clearTimeout()\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE)\n }\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING)\n EventHandler.trigger(this._element, EVENT_SHOWN)\n\n this._maybeScheduleHide()\n }\n\n this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n reflow(this._element)\n this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n this._queueCallback(complete, this._element, this._config.animation)\n }\n\n hide() {\n if (!this.isShown()) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.classList.add(CLASS_NAME_SHOWING)\n this._queueCallback(complete, this._element, this._config.animation)\n }\n\n dispose() {\n this._clearTimeout()\n\n if (this.isShown()) {\n this._element.classList.remove(CLASS_NAME_SHOW)\n }\n\n super.dispose()\n }\n\n isShown() {\n return this._element.classList.contains(CLASS_NAME_SHOW)\n }\n\n // Private\n\n _maybeScheduleHide() {\n if (!this._config.autohide) {\n return\n }\n\n if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n return\n }\n\n this._timeout = setTimeout(() => {\n this.hide()\n }, this._config.delay)\n }\n\n _onInteraction(event, isInteracting) {\n switch (event.type) {\n case 'mouseover':\n case 'mouseout':\n this._hasMouseInteraction = isInteracting\n break\n case 'focusin':\n case 'focusout':\n this._hasKeyboardInteraction = isInteracting\n break\n default:\n break\n }\n\n if (isInteracting) {\n this._clearTimeout()\n return\n }\n\n const nextElement = event.relatedTarget\n if (this._element === nextElement || this._element.contains(nextElement)) {\n return\n }\n\n this._maybeScheduleHide()\n }\n\n _setListeners() {\n EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n }\n\n _clearTimeout() {\n clearTimeout(this._timeout)\n this._timeout = null\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Toast.getOrCreateInstance(this, config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Toast)\n\nexport default Toast\n"],"mappings":"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"} \ No newline at end of file