From 31947c848a8607946e49cec434d982ab97b216a5 Mon Sep 17 00:00:00 2001 From: Eli Ribble Date: Sat, 21 Mar 2026 03:06:59 +0000 Subject: [PATCH] Move static outside HTML. Start work on TypeScript bundle It's not strictly HTML, so that's just correct. This is just worth doing while building the new TypeScript bundle --- .gitignore | 3 +- README.md | 3 +- default.nix | 29 +- html/fileserver.go | 10 + html/func.go | 9 + html/static.go | 20 - html/static/vendor/js/bootstrap.bundle.min.js | 7 - html/static/vendor/js/bootstrap.min.js | 7 - html/template/rmo/layout/base.html | 3 +- html/template/sync/layout/authenticated.html | 8 +- html/template/sync/layout/base.html | 3 +- {html/static => static}/css/placeholder | 0 {html/static => static}/file/sample-pool.csv | 0 static/gen.go | 6 + {html/static => static/ico}/favicon-rmo.ico | Bin {html/static => static/ico}/favicon-sync.ico | Bin .../img/insecticide-application.jpg | Bin .../img/nidus-logo-256-transparent.png | Bin .../img/nidus-logo-no-lettering-64.png | Bin {html/static => static}/img/pool-overhead.jpg | Bin {html/static => static}/img/rmo-logo-224.png | Bin {html/static => static}/img/rmo/banner.jpg | Bin .../img/rmo/rcs-banner-448x1440.jpg | Bin .../img/rmo/rcs-logo-224.png | Bin {html/static => static}/js/address-display.js | 36 +- .../js/address-or-report-suggestion.js | 0 .../js/address-suggestion.js | 0 .../static => static}/js/alpine-3.15.8-min.js | 0 {html/static => static}/js/events.js | 0 {html/static => static}/js/geocode.js | 0 {html/static => static}/js/location.js | 12 +- {html/static => static}/js/map-admin.js | 0 {html/static => static}/js/map-aggregate.js | 0 {html/static => static}/js/map-arcgis-tile.js | 0 {html/static => static}/js/map-cell.js | 0 {html/static => static}/js/map-locator-ro.js | 0 {html/static => static}/js/map-locator.js | 0 {html/static => static}/js/map-multipoint.js | 0 .../js/map-proxied-arcgis-tile.js | 0 {html/static => static}/js/map-routing.js | 0 .../static => static}/js/map-service-area.js | 0 {html/static => static}/js/photo-upload.js | 0 {html/static => static}/js/table-report.js | 0 {html/static => static}/js/table-site.js | 0 {html/static => static}/js/time-relative.js | 0 {html/static => static}/js/user-selector.js | 0 static/static.go | 8 + .../vendor/css/bootstrap-icons.min.css | 0 .../vendor/css/bootstrap.min.css | 0 .../vendor/font/bootstrap-icons.woff2 | Bin static/vendor/js/bootstrap.bundle.min.js | 4107 +++++++++++++++++ static/vendor/js/bootstrap.min.js | 2892 ++++++++++++ ts/main.ts | 10 +- 53 files changed, 7100 insertions(+), 73 deletions(-) delete mode 100644 html/static.go delete mode 100644 html/static/vendor/js/bootstrap.bundle.min.js delete mode 100644 html/static/vendor/js/bootstrap.min.js rename {html/static => static}/css/placeholder (100%) rename {html/static => static}/file/sample-pool.csv (100%) create mode 100644 static/gen.go rename {html/static => static/ico}/favicon-rmo.ico (100%) rename {html/static => static/ico}/favicon-sync.ico (100%) rename {html/static => static}/img/insecticide-application.jpg (100%) rename {html/static => static}/img/nidus-logo-256-transparent.png (100%) rename {html/static => static}/img/nidus-logo-no-lettering-64.png (100%) rename {html/static => static}/img/pool-overhead.jpg (100%) rename {html/static => static}/img/rmo-logo-224.png (100%) rename {html/static => static}/img/rmo/banner.jpg (100%) rename {html/static => static}/img/rmo/rcs-banner-448x1440.jpg (100%) rename {html/static => static}/img/rmo/rcs-logo-224.png (100%) rename {html/static => static}/js/address-display.js (83%) rename {html/static => static}/js/address-or-report-suggestion.js (100%) rename {html/static => static}/js/address-suggestion.js (100%) rename {html/static => static}/js/alpine-3.15.8-min.js (100%) rename {html/static => static}/js/events.js (100%) rename {html/static => static}/js/geocode.js (100%) rename {html/static => static}/js/location.js (81%) rename {html/static => static}/js/map-admin.js (100%) rename {html/static => static}/js/map-aggregate.js (100%) rename {html/static => static}/js/map-arcgis-tile.js (100%) rename {html/static => static}/js/map-cell.js (100%) rename {html/static => static}/js/map-locator-ro.js (100%) rename {html/static => static}/js/map-locator.js (100%) rename {html/static => static}/js/map-multipoint.js (100%) rename {html/static => static}/js/map-proxied-arcgis-tile.js (100%) rename {html/static => static}/js/map-routing.js (100%) rename {html/static => static}/js/map-service-area.js (100%) rename {html/static => static}/js/photo-upload.js (100%) rename {html/static => static}/js/table-report.js (100%) rename {html/static => static}/js/table-site.js (100%) rename {html/static => static}/js/time-relative.js (100%) rename {html/static => static}/js/user-selector.js (100%) create mode 100644 static/static.go rename {html/static => static}/vendor/css/bootstrap-icons.min.css (100%) rename {html/static => static}/vendor/css/bootstrap.min.css (100%) rename {html/static => static}/vendor/font/bootstrap-icons.woff2 (100%) create mode 100644 static/vendor/js/bootstrap.bundle.min.js create mode 100644 static/vendor/js/bootstrap.min.js diff --git a/.gitignore b/.gitignore index a20e0bd3..58fc9b47 100644 --- a/.gitignore +++ b/.gitignore @@ -3,12 +3,11 @@ cmd/geocode-test/geocode-test cmd/passwordgen/passwordgen districts/ flogo.log -html/static/css/bootstrap.css -html/static/css/bootstrap.css.map nidus-sync nidus-sync.log result stadia/cmd/bulk-geocode/bulk-geocode stadia/cmd/reverse-geocode/reverse-geocode stadia/cmd/structured-geocode/structured-geocode +static/gen/ tmp/ diff --git a/README.md b/README.md index 5197d3ef..694cfd7c 100644 --- a/README.md +++ b/README.md @@ -93,10 +93,11 @@ esbuild ts/main.ts --bundle --outfile=html/static/bundle.js --format=iife --mini ``` The only page that works right now is `https://sync.nidus.cloud/template-test` + ### watchexec For iterating on styles ``` -watchexec -e scss sass scss/custom.scss:html/static/css/bootstrap.css +watchexec -e scss sass scss/custom.scss:static/gen/css/bootstrap.css ``` diff --git a/default.nix b/default.nix index 0215e107..cce7d140 100644 --- a/default.nix +++ b/default.nix @@ -12,10 +12,14 @@ pkgs.buildGoModule rec { vendorHash = "sha256-zXjryPAJYpc80cqYtrcp//i6OQi5V5QwhaKQYYfrlL8="; buildInputs = [ pkgs.proj ]; - nativeBuildInputs = [ pkgs.pkg-config pkgs.dart-sass ]; + nativeBuildInputs = [ + pkgs.pkg-config + pkgs.dart-sass + pkgs.esbuild + ]; preBuild = '' - + # Compile SCSS SASS_SRC_DIR="./scss" CSS_OUTPUT_DIR="./html/static/css/" @@ -23,5 +27,26 @@ pkgs.buildGoModule rec { echo "Compiling $SASS_SRC_DIR/custom.scss to $CSS_OUTPUT_DIR/bootstrap.css..." sass --style=compressed --trace "$SASS_SRC_DIR/custom.scss":"$CSS_OUTPUT_DIR/bootstrap.css" + + # Bundle TypeScript + JS_OUTPUT_DIR="./html/static/gen/js/" + mkdir -p "$JS_OUTPUT_DIR" + + echo "Bundling TypeScript..." + esbuild ts/main.ts --bundle --minify --outfile="$JS_OUTPUT_DIR/bundle.js" + + # Generate hash and rename bundle + BUNDLE_HASH=$(sha256sum "$JS_OUTPUT_DIR/bundle.js" | cut -c1-12) + mv "$JS_OUTPUT_DIR/bundle.js" "$JS_OUTPUT_DIR/bundle.$BUNDLE_HASH.js" + + # Generate gen.go with bundle path + cat > gen.go <[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter(t=>t.matches(e)),parents(t,e){const i=[];let n=t.parentNode;for(;n&&n.nodeType===Node.ELEMENT_NODE&&3!==n.nodeType;)n.matches(e)&&i.push(n),n=n.parentNode;return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]}},e=t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t},i=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i="#"+i.split("#")[1]),e=i&&"#"!==i?i.trim():null}return e},n=t=>{const e=i(t);return e&&document.querySelector(e)?e:null},s=t=>{const e=i(t);return e?document.querySelector(e):null},o=t=>{t.dispatchEvent(new Event("transitionend"))},r=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),a=e=>r(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?t.findOne(e):null,l=(t,e,i)=>{Object.keys(i).forEach(n=>{const s=i[n],o=e[n],a=o&&r(o)?"element":null==(l=o)?""+l:{}.toString.call(l).match(/\s([a-z]+)/i)[1].toLowerCase();var l;if(!new RegExp(s).test(a))throw new TypeError(`${t.toUpperCase()}: Option "${n}" provided type "${a}" but expected type "${s}".`)})},c=t=>!(!r(t)||0===t.getClientRects().length)&&"visible"===getComputedStyle(t).getPropertyValue("visibility"),h=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),d=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?d(t.parentNode):null},u=()=>{},f=t=>t.offsetHeight,p=()=>{const{jQuery:t}=window;return t&&!document.body.hasAttribute("data-bs-no-jquery")?t:null},m=[],g=()=>"rtl"===document.documentElement.dir,_=t=>{var e;e=()=>{const e=p();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(m.length||document.addEventListener("DOMContentLoaded",()=>{m.forEach(t=>t())}),m.push(e)):e()},b=t=>{"function"==typeof t&&t()},v=(t,e,i=!0)=>{if(!i)return void b(t);const n=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let s=!1;const r=({target:i})=>{i===e&&(s=!0,e.removeEventListener("transitionend",r),b(t))};e.addEventListener("transitionend",r),setTimeout(()=>{s||o(e)},n)},y=(t,e,i,n)=>{let s=t.indexOf(e);if(-1===s)return t[!i&&n?t.length-1:0];const o=t.length;return s+=i?1:-1,n&&(s=(s+o)%o),t[Math.max(0,Math.min(s,o-1))]},w=/[^.]*(?=\..*)\.|.*/,E=/\..*/,A=/::\d+$/,T={};let O=1;const C={mouseenter:"mouseover",mouseleave:"mouseout"},k=/^(mouseenter|mouseleave)/i,L=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function x(t,e){return e&&`${e}::${O++}`||t.uidEvent||O++}function D(t){const e=x(t);return t.uidEvent=e,T[e]=T[e]||{},T[e]}function S(t,e,i=null){const n=Object.keys(t);for(let s=0,o=n.length;sfunction(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};n?n=t(n):i=t(i)}const[o,r,a]=I(e,i,n),l=D(t),c=l[a]||(l[a]={}),h=S(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=x(r,e.replace(w,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(let a=o.length;a--;)if(o[a]===r)return s.delegateTarget=r,n.oneOff&&P.off(t,s.type,e,i),i.apply(r,[s]);return null}}(t,i,n):function(t,e){return function i(n){return n.delegateTarget=t,i.oneOff&&P.off(t,n.type,e),e.apply(t,[n])}}(t,i);u.delegationSelector=o?i:null,u.originalHandler=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function j(t,e,i,n,s){const o=S(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function M(t){return t=t.replace(E,""),C[t]||t}const P={on(t,e,i,n){N(t,e,i,n,!1)},one(t,e,i,n){N(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=I(e,i,n),a=r!==e,l=D(t),c=e.startsWith(".");if(void 0!==o){if(!l||!l[r])return;return void j(t,l,r,o,s?i:null)}c&&Object.keys(l).forEach(i=>{!function(t,e,i,n){const s=e[i]||{};Object.keys(s).forEach(o=>{if(o.includes(n)){const n=s[o];j(t,e,i,n.originalHandler,n.delegationSelector)}})}(t,l,i,e.slice(1))});const h=l[r]||{};Object.keys(h).forEach(i=>{const n=i.replace(A,"");if(!a||e.includes(n)){const e=h[i];j(t,l,r,e.originalHandler,e.delegationSelector)}})},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=p(),s=M(e),o=e!==s,r=L.has(s);let a,l=!0,c=!0,h=!1,d=null;return o&&n&&(a=n.Event(e,i),n(t).trigger(a),l=!a.isPropagationStopped(),c=!a.isImmediatePropagationStopped(),h=a.isDefaultPrevented()),r?(d=document.createEvent("HTMLEvents"),d.initEvent(s,l,!0)):d=new CustomEvent(e,{bubbles:l,cancelable:!0}),void 0!==i&&Object.keys(i).forEach(t=>{Object.defineProperty(d,t,{get:()=>i[t]})}),h&&d.preventDefault(),c&&t.dispatchEvent(d),d.defaultPrevented&&void 0!==a&&a.preventDefault(),d}},H=new Map;var R={set(t,e,i){H.has(t)||H.set(t,new Map);const n=H.get(t);n.has(e)||0===n.size?n.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(t,e)=>H.has(t)&&H.get(t).get(e)||null,remove(t,e){if(!H.has(t))return;const i=H.get(t);i.delete(e),0===i.size&&H.delete(t)}};class B{constructor(t){(t=a(t))&&(this._element=t,R.set(this._element,this.constructor.DATA_KEY,this))}dispose(){R.remove(this._element,this.constructor.DATA_KEY),P.off(this._element,this.constructor.EVENT_KEY),Object.getOwnPropertyNames(this).forEach(t=>{this[t]=null})}_queueCallback(t,e,i=!0){v(t,e,i)}static getInstance(t){return R.get(t,this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.0.2"}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}static get DATA_KEY(){return"bs."+this.NAME}static get EVENT_KEY(){return"."+this.DATA_KEY}}class W extends B{static get NAME(){return"alert"}close(t){const e=t?this._getRootElement(t):this._element,i=this._triggerCloseEvent(e);null===i||i.defaultPrevented||this._removeElement(e)}_getRootElement(t){return s(t)||t.closest(".alert")}_triggerCloseEvent(t){return P.trigger(t,"close.bs.alert")}_removeElement(t){t.classList.remove("show");const e=t.classList.contains("fade");this._queueCallback(()=>this._destroyElement(t),t,e)}_destroyElement(t){t.remove(),P.trigger(t,"closed.bs.alert")}static jQueryInterface(t){return this.each((function(){const e=W.getOrCreateInstance(this);"close"===t&&e[t](this)}))}static handleDismiss(t){return function(e){e&&e.preventDefault(),t.close(this)}}}P.on(document,"click.bs.alert.data-api",'[data-bs-dismiss="alert"]',W.handleDismiss(new W)),_(W);class q extends B{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=q.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}function z(t){return"true"===t||"false"!==t&&(t===Number(t).toString()?Number(t):""===t||"null"===t?null:t)}function $(t){return t.replace(/[A-Z]/g,t=>"-"+t.toLowerCase())}P.on(document,"click.bs.button.data-api",'[data-bs-toggle="button"]',t=>{t.preventDefault();const e=t.target.closest('[data-bs-toggle="button"]');q.getOrCreateInstance(e).toggle()}),_(q);const U={setDataAttribute(t,e,i){t.setAttribute("data-bs-"+$(e),i)},removeDataAttribute(t,e){t.removeAttribute("data-bs-"+$(e))},getDataAttributes(t){if(!t)return{};const e={};return Object.keys(t.dataset).filter(t=>t.startsWith("bs")).forEach(i=>{let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),e[n]=z(t.dataset[i])}),e},getDataAttribute:(t,e)=>z(t.getAttribute("data-bs-"+$(e))),offset(t){const e=t.getBoundingClientRect();return{top:e.top+document.body.scrollTop,left:e.left+document.body.scrollLeft}},position:t=>({top:t.offsetTop,left:t.offsetLeft})},F={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},V={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},K="next",X="prev",Y="left",Q="right",G={ArrowLeft:Q,ArrowRight:Y};class Z extends B{constructor(e,i){super(e),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(i),this._indicatorsElement=t.findOne(".carousel-indicators",this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return F}static get NAME(){return"carousel"}next(){this._slide(K)}nextWhenVisible(){!document.hidden&&c(this._element)&&this.next()}prev(){this._slide(X)}pause(e){e||(this._isPaused=!0),t.findOne(".carousel-item-next, .carousel-item-prev",this._element)&&(o(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(e){this._activeElement=t.findOne(".active.carousel-item",this._element);const i=this._getItemIndex(this._activeElement);if(e>this._items.length-1||e<0)return;if(this._isSliding)return void P.one(this._element,"slid.bs.carousel",()=>this.to(e));if(i===e)return this.pause(),void this.cycle();const n=e>i?K:X;this._slide(n,this._items[e])}_getConfig(t){return t={...F,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},l("carousel",t,V),t}_handleSwipe(){const t=Math.abs(this.touchDeltaX);if(t<=40)return;const e=t/this.touchDeltaX;this.touchDeltaX=0,e&&this._slide(e>0?Q:Y)}_addEventListeners(){this._config.keyboard&&P.on(this._element,"keydown.bs.carousel",t=>this._keydown(t)),"hover"===this._config.pause&&(P.on(this._element,"mouseenter.bs.carousel",t=>this.pause(t)),P.on(this._element,"mouseleave.bs.carousel",t=>this.cycle(t))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){const e=t=>{!this._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType?this._pointerEvent||(this.touchStartX=t.touches[0].clientX):this.touchStartX=t.clientX},i=t=>{this.touchDeltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this.touchStartX},n=t=>{!this._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType||(this.touchDeltaX=t.clientX-this.touchStartX),this._handleSwipe(),"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(t=>this.cycle(t),500+this._config.interval))};t.find(".carousel-item img",this._element).forEach(t=>{P.on(t,"dragstart.bs.carousel",t=>t.preventDefault())}),this._pointerEvent?(P.on(this._element,"pointerdown.bs.carousel",t=>e(t)),P.on(this._element,"pointerup.bs.carousel",t=>n(t)),this._element.classList.add("pointer-event")):(P.on(this._element,"touchstart.bs.carousel",t=>e(t)),P.on(this._element,"touchmove.bs.carousel",t=>i(t)),P.on(this._element,"touchend.bs.carousel",t=>n(t)))}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=G[t.key];e&&(t.preventDefault(),this._slide(e))}_getItemIndex(e){return this._items=e&&e.parentNode?t.find(".carousel-item",e.parentNode):[],this._items.indexOf(e)}_getItemByOrder(t,e){const i=t===K;return y(this._items,e,i,this._config.wrap)}_triggerSlideEvent(e,i){const n=this._getItemIndex(e),s=this._getItemIndex(t.findOne(".active.carousel-item",this._element));return P.trigger(this._element,"slide.bs.carousel",{relatedTarget:e,direction:i,from:s,to:n})}_setActiveIndicatorElement(e){if(this._indicatorsElement){const i=t.findOne(".active",this._indicatorsElement);i.classList.remove("active"),i.removeAttribute("aria-current");const n=t.find("[data-bs-target]",this._indicatorsElement);for(let t=0;t{P.trigger(this._element,"slid.bs.carousel",{relatedTarget:r,direction:u,from:o,to:a})};if(this._element.classList.contains("slide")){r.classList.add(d),f(r),s.classList.add(h),r.classList.add(h);const t=()=>{r.classList.remove(h,d),r.classList.add("active"),s.classList.remove("active",d,h),this._isSliding=!1,setTimeout(p,0)};this._queueCallback(t,s,!0)}else s.classList.remove("active"),r.classList.add("active"),this._isSliding=!1,p();l&&this.cycle()}_directionToOrder(t){return[Q,Y].includes(t)?g()?t===Y?X:K:t===Y?K:X:t}_orderToDirection(t){return[K,X].includes(t)?g()?t===X?Y:Q:t===X?Q:Y:t}static carouselInterface(t,e){const i=Z.getOrCreateInstance(t,e);let{_config:n}=i;"object"==typeof e&&(n={...n,...e});const s="string"==typeof e?e:n.slide;if("number"==typeof e)i.to(e);else if("string"==typeof s){if(void 0===i[s])throw new TypeError(`No method named "${s}"`);i[s]()}else n.interval&&n.ride&&(i.pause(),i.cycle())}static jQueryInterface(t){return this.each((function(){Z.carouselInterface(this,t)}))}static dataApiClickHandler(t){const e=s(this);if(!e||!e.classList.contains("carousel"))return;const i={...U.getDataAttributes(e),...U.getDataAttributes(this)},n=this.getAttribute("data-bs-slide-to");n&&(i.interval=!1),Z.carouselInterface(e,i),n&&Z.getInstance(e).to(n),t.preventDefault()}}P.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",Z.dataApiClickHandler),P.on(window,"load.bs.carousel.data-api",()=>{const e=t.find('[data-bs-ride="carousel"]');for(let t=0,i=e.length;tt===this._element);null!==o&&r.length&&(this._selector=o,this._triggerArray.push(i))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}static get Default(){return J}static get NAME(){return"collapse"}toggle(){this._element.classList.contains("show")?this.hide():this.show()}show(){if(this._isTransitioning||this._element.classList.contains("show"))return;let e,i;this._parent&&(e=t.find(".show, .collapsing",this._parent).filter(t=>"string"==typeof this._config.parent?t.getAttribute("data-bs-parent")===this._config.parent:t.classList.contains("collapse")),0===e.length&&(e=null));const n=t.findOne(this._selector);if(e){const t=e.find(t=>n!==t);if(i=t?et.getInstance(t):null,i&&i._isTransitioning)return}if(P.trigger(this._element,"show.bs.collapse").defaultPrevented)return;e&&e.forEach(t=>{n!==t&&et.collapseInterface(t,"hide"),i||R.set(t,"bs.collapse",null)});const s=this._getDimension();this._element.classList.remove("collapse"),this._element.classList.add("collapsing"),this._element.style[s]=0,this._triggerArray.length&&this._triggerArray.forEach(t=>{t.classList.remove("collapsed"),t.setAttribute("aria-expanded",!0)}),this.setTransitioning(!0);const o="scroll"+(s[0].toUpperCase()+s.slice(1));this._queueCallback(()=>{this._element.classList.remove("collapsing"),this._element.classList.add("collapse","show"),this._element.style[s]="",this.setTransitioning(!1),P.trigger(this._element,"shown.bs.collapse")},this._element,!0),this._element.style[s]=this._element[o]+"px"}hide(){if(this._isTransitioning||!this._element.classList.contains("show"))return;if(P.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=this._element.getBoundingClientRect()[t]+"px",f(this._element),this._element.classList.add("collapsing"),this._element.classList.remove("collapse","show");const e=this._triggerArray.length;if(e>0)for(let t=0;t{this.setTransitioning(!1),this._element.classList.remove("collapsing"),this._element.classList.add("collapse"),P.trigger(this._element,"hidden.bs.collapse")},this._element,!0)}setTransitioning(t){this._isTransitioning=t}_getConfig(t){return(t={...J,...t}).toggle=Boolean(t.toggle),l("collapse",t,tt),t}_getDimension(){return this._element.classList.contains("width")?"width":"height"}_getParent(){let{parent:e}=this._config;e=a(e);const i=`[data-bs-toggle="collapse"][data-bs-parent="${e}"]`;return t.find(i,e).forEach(t=>{const e=s(t);this._addAriaAndCollapsedClass(e,[t])}),e}_addAriaAndCollapsedClass(t,e){if(!t||!e.length)return;const i=t.classList.contains("show");e.forEach(t=>{i?t.classList.remove("collapsed"):t.classList.add("collapsed"),t.setAttribute("aria-expanded",i)})}static collapseInterface(t,e){let i=et.getInstance(t);const n={...J,...U.getDataAttributes(t),..."object"==typeof e&&e?e:{}};if(!i&&n.toggle&&"string"==typeof e&&/show|hide/.test(e)&&(n.toggle=!1),i||(i=new et(t,n)),"string"==typeof e){if(void 0===i[e])throw new TypeError(`No method named "${e}"`);i[e]()}}static jQueryInterface(t){return this.each((function(){et.collapseInterface(this,t)}))}}P.on(document,"click.bs.collapse.data-api",'[data-bs-toggle="collapse"]',(function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();const i=U.getDataAttributes(this),s=n(this);t.find(s).forEach(t=>{const e=et.getInstance(t);let n;e?(null===e._parent&&"string"==typeof i.parent&&(e._config.parent=i.parent,e._parent=e._getParent()),n="toggle"):n=i,et.collapseInterface(t,n)})})),_(et);var it="top",nt="bottom",st="right",ot="left",rt=[it,nt,st,ot],at=rt.reduce((function(t,e){return t.concat([e+"-start",e+"-end"])}),[]),lt=[].concat(rt,["auto"]).reduce((function(t,e){return t.concat([e,e+"-start",e+"-end"])}),[]),ct=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function ht(t){return t?(t.nodeName||"").toLowerCase():null}function dt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function ut(t){return t instanceof dt(t).Element||t instanceof Element}function ft(t){return t instanceof dt(t).HTMLElement||t instanceof HTMLElement}function pt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof dt(t).ShadowRoot||t instanceof ShadowRoot)}var mt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];ft(s)&&ht(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});ft(n)&&ht(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function gt(t){return t.split("-")[0]}function _t(t){var e=t.getBoundingClientRect();return{width:e.width,height:e.height,top:e.top,right:e.right,bottom:e.bottom,left:e.left,x:e.left,y:e.top}}function bt(t){var e=_t(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function vt(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&pt(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function yt(t){return dt(t).getComputedStyle(t)}function wt(t){return["table","td","th"].indexOf(ht(t))>=0}function Et(t){return((ut(t)?t.ownerDocument:t.document)||window.document).documentElement}function At(t){return"html"===ht(t)?t:t.assignedSlot||t.parentNode||(pt(t)?t.host:null)||Et(t)}function Tt(t){return ft(t)&&"fixed"!==yt(t).position?t.offsetParent:null}function Ot(t){for(var e=dt(t),i=Tt(t);i&&wt(i)&&"static"===yt(i).position;)i=Tt(i);return i&&("html"===ht(i)||"body"===ht(i)&&"static"===yt(i).position)?e:i||function(t){var e=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&ft(t)&&"fixed"===yt(t).position)return null;for(var i=At(t);ft(i)&&["html","body"].indexOf(ht(i))<0;){var n=yt(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function Ct(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}var kt=Math.max,Lt=Math.min,xt=Math.round;function Dt(t,e,i){return kt(t,Lt(e,i))}function St(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function It(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}var Nt={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=gt(i.placement),l=Ct(a),c=[ot,st].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return St("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:It(t,rt))}(s.padding,i),d=bt(o),u="y"===l?it:ot,f="y"===l?nt:st,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=Ot(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,E=Dt(v,w,y),A=l;i.modifiersData[n]=((e={})[A]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&vt(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},jt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Mt(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.offsets,r=t.position,a=t.gpuAcceleration,l=t.adaptive,c=t.roundOffsets,h=!0===c?function(t){var e=t.x,i=t.y,n=window.devicePixelRatio||1;return{x:xt(xt(e*n)/n)||0,y:xt(xt(i*n)/n)||0}}(o):"function"==typeof c?c(o):o,d=h.x,u=void 0===d?0:d,f=h.y,p=void 0===f?0:f,m=o.hasOwnProperty("x"),g=o.hasOwnProperty("y"),_=ot,b=it,v=window;if(l){var y=Ot(i),w="clientHeight",E="clientWidth";y===dt(i)&&"static"!==yt(y=Et(i)).position&&(w="scrollHeight",E="scrollWidth"),y=y,s===it&&(b=nt,p-=y[w]-n.height,p*=a?1:-1),s===ot&&(_=st,u-=y[E]-n.width,u*=a?1:-1)}var A,T=Object.assign({position:r},l&&jt);return a?Object.assign({},T,((A={})[b]=g?"0":"",A[_]=m?"0":"",A.transform=(v.devicePixelRatio||1)<2?"translate("+u+"px, "+p+"px)":"translate3d("+u+"px, "+p+"px, 0)",A)):Object.assign({},T,((e={})[b]=g?p+"px":"",e[_]=m?u+"px":"",e.transform="",e))}var Pt={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:gt(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,Mt(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,Mt(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},Ht={passive:!0},Rt={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=dt(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,Ht)})),a&&l.addEventListener("resize",i.update,Ht),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,Ht)})),a&&l.removeEventListener("resize",i.update,Ht)}},data:{}},Bt={left:"right",right:"left",bottom:"top",top:"bottom"};function Wt(t){return t.replace(/left|right|bottom|top/g,(function(t){return Bt[t]}))}var qt={start:"end",end:"start"};function zt(t){return t.replace(/start|end/g,(function(t){return qt[t]}))}function $t(t){var e=dt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ut(t){return _t(Et(t)).left+$t(t).scrollLeft}function Ft(t){var e=yt(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Vt(t,e){var i;void 0===e&&(e=[]);var n=function t(e){return["html","body","#document"].indexOf(ht(e))>=0?e.ownerDocument.body:ft(e)&&Ft(e)?e:t(At(e))}(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=dt(n),r=s?[o].concat(o.visualViewport||[],Ft(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Vt(At(r)))}function Kt(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function Xt(t,e){return"viewport"===e?Kt(function(t){var e=dt(t),i=Et(t),n=e.visualViewport,s=i.clientWidth,o=i.clientHeight,r=0,a=0;return n&&(s=n.width,o=n.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(r=n.offsetLeft,a=n.offsetTop)),{width:s,height:o,x:r+Ut(t),y:a}}(t)):ft(e)?function(t){var e=_t(t);return e.top=e.top+t.clientTop,e.left=e.left+t.clientLeft,e.bottom=e.top+t.clientHeight,e.right=e.left+t.clientWidth,e.width=t.clientWidth,e.height=t.clientHeight,e.x=e.left,e.y=e.top,e}(e):Kt(function(t){var e,i=Et(t),n=$t(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=kt(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=kt(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Ut(t),l=-n.scrollTop;return"rtl"===yt(s||i).direction&&(a+=kt(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(Et(t)))}function Yt(t){return t.split("-")[1]}function Qt(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?gt(s):null,r=s?Yt(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case it:e={x:a,y:i.y-n.height};break;case nt:e={x:a,y:i.y+i.height};break;case st:e={x:i.x+i.width,y:l};break;case ot:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?Ct(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case"start":e[c]=e[c]-(i[h]/2-n[h]/2);break;case"end":e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function Gt(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.boundary,r=void 0===o?"clippingParents":o,a=i.rootBoundary,l=void 0===a?"viewport":a,c=i.elementContext,h=void 0===c?"popper":c,d=i.altBoundary,u=void 0!==d&&d,f=i.padding,p=void 0===f?0:f,m=St("number"!=typeof p?p:It(p,rt)),g="popper"===h?"reference":"popper",_=t.elements.reference,b=t.rects.popper,v=t.elements[u?g:h],y=function(t,e,i){var n="clippingParents"===e?function(t){var e=Vt(At(t)),i=["absolute","fixed"].indexOf(yt(t).position)>=0&&ft(t)?Ot(t):t;return ut(i)?e.filter((function(t){return ut(t)&&vt(t,i)&&"body"!==ht(t)})):[]}(t):[].concat(e),s=[].concat(n,[i]),o=s[0],r=s.reduce((function(e,i){var n=Xt(t,i);return e.top=kt(n.top,e.top),e.right=Lt(n.right,e.right),e.bottom=Lt(n.bottom,e.bottom),e.left=kt(n.left,e.left),e}),Xt(t,o));return r.width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}(ut(v)?v:v.contextElement||Et(t.elements.popper),r,l),w=_t(_),E=Qt({reference:w,element:b,strategy:"absolute",placement:s}),A=Kt(Object.assign({},b,E)),T="popper"===h?A:w,O={top:y.top-T.top+m.top,bottom:T.bottom-y.bottom+m.bottom,left:y.left-T.left+m.left,right:T.right-y.right+m.right},C=t.modifiersData.offset;if("popper"===h&&C){var k=C[s];Object.keys(O).forEach((function(t){var e=[st,nt].indexOf(t)>=0?1:-1,i=[it,nt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function Zt(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?lt:l,h=Yt(n),d=h?a?at:at.filter((function(t){return Yt(t)===h})):rt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=Gt(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[gt(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}var Jt={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=gt(g),b=l||(_!==g&&p?function(t){if("auto"===gt(t))return[];var e=Wt(t);return[zt(t),e,zt(e)]}(g):[Wt(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat("auto"===gt(i)?Zt(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,E=new Map,A=!0,T=v[0],O=0;O=0,D=x?"width":"height",S=Gt(e,{placement:C,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),I=x?L?st:ot:L?nt:it;y[D]>w[D]&&(I=Wt(I));var N=Wt(I),j=[];if(o&&j.push(S[k]<=0),a&&j.push(S[I]<=0,S[N]<=0),j.every((function(t){return t}))){T=C,A=!1;break}E.set(C,j)}if(A)for(var M=function(t){var e=v.find((function(e){var i=E.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},P=p?3:1;P>0&&"break"!==M(P);P--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function te(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function ee(t){return[it,st,nt,ot].some((function(e){return t[e]>=0}))}var ie={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=Gt(e,{elementContext:"reference"}),a=Gt(e,{altBoundary:!0}),l=te(r,n),c=te(a,s,o),h=ee(l),d=ee(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},ne={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=lt.reduce((function(t,i){return t[i]=function(t,e,i){var n=gt(t),s=[ot,it].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[ot,st].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},se={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=Qt({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},oe={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=Gt(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=gt(e.placement),b=Yt(e.placement),v=!b,y=Ct(_),w="x"===y?"y":"x",E=e.modifiersData.popperOffsets,A=e.rects.reference,T=e.rects.popper,O="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,C={x:0,y:0};if(E){if(o||a){var k="y"===y?it:ot,L="y"===y?nt:st,x="y"===y?"height":"width",D=E[y],S=E[y]+g[k],I=E[y]-g[L],N=f?-T[x]/2:0,j="start"===b?A[x]:T[x],M="start"===b?-T[x]:-A[x],P=e.elements.arrow,H=f&&P?bt(P):{width:0,height:0},R=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},B=R[k],W=R[L],q=Dt(0,A[x],H[x]),z=v?A[x]/2-N-q-B-O:j-q-B-O,$=v?-A[x]/2+N+q+W+O:M+q+W+O,U=e.elements.arrow&&Ot(e.elements.arrow),F=U?"y"===y?U.clientTop||0:U.clientLeft||0:0,V=e.modifiersData.offset?e.modifiersData.offset[e.placement][y]:0,K=E[y]+z-V-F,X=E[y]+$-V;if(o){var Y=Dt(f?Lt(S,K):S,D,f?kt(I,X):I);E[y]=Y,C[y]=Y-D}if(a){var Q="x"===y?it:ot,G="x"===y?nt:st,Z=E[w],J=Z+g[Q],tt=Z-g[G],et=Dt(f?Lt(J,K):J,Z,f?kt(tt,X):tt);E[w]=et,C[w]=et-Z}}e.modifiersData[n]=C}},requiresIfExists:["offset"]};function re(t,e,i){void 0===i&&(i=!1);var n,s,o=Et(e),r=_t(t),a=ft(e),l={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(a||!a&&!i)&&(("body"!==ht(e)||Ft(o))&&(l=(n=e)!==dt(n)&&ft(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:$t(n)),ft(e)?((c=_t(e)).x+=e.clientLeft,c.y+=e.clientTop):o&&(c.x=Ut(o))),{x:r.left+l.scrollLeft-c.x,y:r.top+l.scrollTop-c.y,width:r.width,height:r.height}}var ae={placement:"bottom",modifiers:[],strategy:"absolute"};function le(){for(var t=arguments.length,e=new Array(t),i=0;i"applyStyles"===t.name&&!1===t.enabled);this._popper=ue(e,this._menu,i),n&&U.setDataAttribute(this._menu,"popper","static")}"ontouchstart"in document.documentElement&&!t.closest(".navbar-nav")&&[].concat(...document.body.children).forEach(t=>P.on(t,"mouseover",u)),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.toggle("show"),this._element.classList.toggle("show"),P.trigger(this._element,"shown.bs.dropdown",e)}}hide(){if(h(this._element)||!this._menu.classList.contains("show"))return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_addEventListeners(){P.on(this._element,"click.bs.dropdown",t=>{t.preventDefault(),this.toggle()})}_completeHide(t){P.trigger(this._element,"hide.bs.dropdown",t).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>P.off(t,"mouseover",u)),this._popper&&this._popper.destroy(),this._menu.classList.remove("show"),this._element.classList.remove("show"),this._element.setAttribute("aria-expanded","false"),U.removeDataAttribute(this._menu,"popper"),P.trigger(this._element,"hidden.bs.dropdown",t))}_getConfig(t){if(t={...this.constructor.Default,...U.getDataAttributes(this._element),...t},l("dropdown",t,this.constructor.DefaultType),"object"==typeof t.reference&&!r(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError("dropdown".toUpperCase()+': Option "reference" provided type "object" without a required "getBoundingClientRect" method.');return t}_getMenuElement(){return t.next(this._element,".dropdown-menu")[0]}_getPlacement(){const t=this._element.parentNode;if(t.classList.contains("dropend"))return ve;if(t.classList.contains("dropstart"))return ye;const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?ge:me:e?be:_e}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return"static"===this._config.display&&(t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem({key:e,target:i}){const n=t.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter(c);n.length&&y(n,i,"ArrowDown"===e,!n.includes(i)).focus()}static dropdownInterface(t,e){const i=Ae.getOrCreateInstance(t,e);if("string"==typeof e){if(void 0===i[e])throw new TypeError(`No method named "${e}"`);i[e]()}}static jQueryInterface(t){return this.each((function(){Ae.dropdownInterface(this,t)}))}static clearMenus(e){if(e&&(2===e.button||"keyup"===e.type&&"Tab"!==e.key))return;const i=t.find('[data-bs-toggle="dropdown"]');for(let t=0,n=i.length;tthis.matches('[data-bs-toggle="dropdown"]')?this:t.prev(this,'[data-bs-toggle="dropdown"]')[0];return"Escape"===e.key?(n().focus(),void Ae.clearMenus()):"ArrowUp"===e.key||"ArrowDown"===e.key?(i||n().click(),void Ae.getInstance(n())._selectMenuItem(e)):void(i&&"Space"!==e.key||Ae.clearMenus())}}P.on(document,"keydown.bs.dropdown.data-api",'[data-bs-toggle="dropdown"]',Ae.dataApiKeydownHandler),P.on(document,"keydown.bs.dropdown.data-api",".dropdown-menu",Ae.dataApiKeydownHandler),P.on(document,"click.bs.dropdown.data-api",Ae.clearMenus),P.on(document,"keyup.bs.dropdown.data-api",Ae.clearMenus),P.on(document,"click.bs.dropdown.data-api",'[data-bs-toggle="dropdown"]',(function(t){t.preventDefault(),Ae.dropdownInterface(this)})),_(Ae);class Te{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,"paddingRight",e=>e+t),this._setElementAttributes(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top","paddingRight",e=>e+t),this._setElementAttributes(".sticky-top","marginRight",e=>e-t)}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t)[e];t.style[e]=i(Number.parseFloat(s))+"px"})}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"paddingRight"),this._resetElementAttributes(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top","paddingRight"),this._resetElementAttributes(".sticky-top","marginRight")}_saveInitialAttribute(t,e){const i=t.style[e];i&&U.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,t=>{const i=U.getDataAttribute(t,e);void 0===i?t.style.removeProperty(e):(U.removeDataAttribute(t,e),t.style[e]=i)})}_applyManipulationCallback(e,i){r(e)?i(e):t.find(e,this._element).forEach(i)}isOverflowing(){return this.getWidth()>0}}const Oe={isVisible:!0,isAnimated:!1,rootElement:"body",clickCallback:null},Ce={isVisible:"boolean",isAnimated:"boolean",rootElement:"(element|string)",clickCallback:"(function|null)"};class ke{constructor(t){this._config=this._getConfig(t),this._isAppended=!1,this._element=null}show(t){this._config.isVisible?(this._append(),this._config.isAnimated&&f(this._getElement()),this._getElement().classList.add("show"),this._emulateAnimation(()=>{b(t)})):b(t)}hide(t){this._config.isVisible?(this._getElement().classList.remove("show"),this._emulateAnimation(()=>{this.dispose(),b(t)})):b(t)}_getElement(){if(!this._element){const t=document.createElement("div");t.className="modal-backdrop",this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_getConfig(t){return(t={...Oe,..."object"==typeof t?t:{}}).rootElement=a(t.rootElement),l("backdrop",t,Ce),t}_append(){this._isAppended||(this._config.rootElement.appendChild(this._getElement()),P.on(this._getElement(),"mousedown.bs.backdrop",()=>{b(this._config.clickCallback)}),this._isAppended=!0)}dispose(){this._isAppended&&(P.off(this._element,"mousedown.bs.backdrop"),this._element.remove(),this._isAppended=!1)}_emulateAnimation(t){v(t,this._getElement(),this._config.isAnimated)}}const Le={backdrop:!0,keyboard:!0,focus:!0},xe={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean"};class De extends B{constructor(e,i){super(e),this._config=this._getConfig(i),this._dialog=t.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollBar=new Te}static get Default(){return Le}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||P.trigger(this._element,"show.bs.modal",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isAnimated()&&(this._isTransitioning=!0),this._scrollBar.hide(),document.body.classList.add("modal-open"),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),P.on(this._element,"click.dismiss.bs.modal",'[data-bs-dismiss="modal"]',t=>this.hide(t)),P.on(this._dialog,"mousedown.dismiss.bs.modal",()=>{P.one(this._element,"mouseup.dismiss.bs.modal",t=>{t.target===this._element&&(this._ignoreBackdropClick=!0)})}),this._showBackdrop(()=>this._showElement(t)))}hide(t){if(t&&["A","AREA"].includes(t.target.tagName)&&t.preventDefault(),!this._isShown||this._isTransitioning)return;if(P.trigger(this._element,"hide.bs.modal").defaultPrevented)return;this._isShown=!1;const e=this._isAnimated();e&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),P.off(document,"focusin.bs.modal"),this._element.classList.remove("show"),P.off(this._element,"click.dismiss.bs.modal"),P.off(this._dialog,"mousedown.dismiss.bs.modal"),this._queueCallback(()=>this._hideModal(),this._element,e)}dispose(){[window,this._dialog].forEach(t=>P.off(t,".bs.modal")),this._backdrop.dispose(),super.dispose(),P.off(document,"focusin.bs.modal")}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new ke({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_getConfig(t){return t={...Le,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},l("modal",t,xe),t}_showElement(e){const i=this._isAnimated(),n=t.findOne(".modal-body",this._dialog);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,n&&(n.scrollTop=0),i&&f(this._element),this._element.classList.add("show"),this._config.focus&&this._enforceFocus(),this._queueCallback(()=>{this._config.focus&&this._element.focus(),this._isTransitioning=!1,P.trigger(this._element,"shown.bs.modal",{relatedTarget:e})},this._dialog,i)}_enforceFocus(){P.off(document,"focusin.bs.modal"),P.on(document,"focusin.bs.modal",t=>{document===t.target||this._element===t.target||this._element.contains(t.target)||this._element.focus()})}_setEscapeEvent(){this._isShown?P.on(this._element,"keydown.dismiss.bs.modal",t=>{this._config.keyboard&&"Escape"===t.key?(t.preventDefault(),this.hide()):this._config.keyboard||"Escape"!==t.key||this._triggerBackdropTransition()}):P.off(this._element,"keydown.dismiss.bs.modal")}_setResizeEvent(){this._isShown?P.on(window,"resize.bs.modal",()=>this._adjustDialog()):P.off(window,"resize.bs.modal")}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove("modal-open"),this._resetAdjustments(),this._scrollBar.reset(),P.trigger(this._element,"hidden.bs.modal")})}_showBackdrop(t){P.on(this._element,"click.dismiss.bs.modal",t=>{this._ignoreBackdropClick?this._ignoreBackdropClick=!1:t.target===t.currentTarget&&(!0===this._config.backdrop?this.hide():"static"===this._config.backdrop&&this._triggerBackdropTransition())}),this._backdrop.show(t)}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(P.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const{classList:t,scrollHeight:e,style:i}=this._element,n=e>document.documentElement.clientHeight;!n&&"hidden"===i.overflowY||t.contains("modal-static")||(n||(i.overflowY="hidden"),t.add("modal-static"),this._queueCallback(()=>{t.remove("modal-static"),n||this._queueCallback(()=>{i.overflowY=""},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;(!i&&t&&!g()||i&&!t&&g())&&(this._element.style.paddingLeft=e+"px"),(i&&!t&&!g()||!i&&t&&g())&&(this._element.style.paddingRight=e+"px")}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=De.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}P.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=s(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),P.one(e,"show.bs.modal",t=>{t.defaultPrevented||P.one(e,"hidden.bs.modal",()=>{c(this)&&this.focus()})}),De.getOrCreateInstance(e).toggle(this)})),_(De);const Se={backdrop:!0,keyboard:!0,scroll:!1},Ie={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"};class Ne extends B{constructor(t,e){super(t),this._config=this._getConfig(e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._addEventListeners()}static get NAME(){return"offcanvas"}static get Default(){return Se}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||P.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._element.style.visibility="visible",this._backdrop.show(),this._config.scroll||((new Te).hide(),this._enforceFocusOnElement(this._element)),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add("show"),this._queueCallback(()=>{P.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t})},this._element,!0))}hide(){this._isShown&&(P.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||(P.off(document,"focusin.bs.offcanvas"),this._element.blur(),this._isShown=!1,this._element.classList.remove("show"),this._backdrop.hide(),this._queueCallback(()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.scroll||(new Te).reset(),P.trigger(this._element,"hidden.bs.offcanvas")},this._element,!0)))}dispose(){this._backdrop.dispose(),super.dispose(),P.off(document,"focusin.bs.offcanvas")}_getConfig(t){return t={...Se,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},l("offcanvas",t,Ie),t}_initializeBackDrop(){return new ke({isVisible:this._config.backdrop,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:()=>this.hide()})}_enforceFocusOnElement(t){P.off(document,"focusin.bs.offcanvas"),P.on(document,"focusin.bs.offcanvas",e=>{document===e.target||t===e.target||t.contains(e.target)||t.focus()}),t.focus()}_addEventListeners(){P.on(this._element,"click.dismiss.bs.offcanvas",'[data-bs-dismiss="offcanvas"]',()=>this.hide()),P.on(this._element,"keydown.dismiss.bs.offcanvas",t=>{this._config.keyboard&&"Escape"===t.key&&this.hide()})}static jQueryInterface(t){return this.each((function(){const e=Ne.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}P.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(e){const i=s(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),h(this))return;P.one(i,"hidden.bs.offcanvas",()=>{c(this)&&this.focus()});const n=t.findOne(".offcanvas.show");n&&n!==i&&Ne.getInstance(n).hide(),Ne.getOrCreateInstance(i).toggle(this)})),P.on(window,"load.bs.offcanvas.data-api",()=>t.find(".offcanvas.show").forEach(t=>Ne.getOrCreateInstance(t).show())),_(Ne);const je=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Me=/^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i,Pe=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,He=(t,e)=>{const i=t.nodeName.toLowerCase();if(e.includes(i))return!je.has(i)||Boolean(Me.test(t.nodeValue)||Pe.test(t.nodeValue));const n=e.filter(t=>t instanceof RegExp);for(let t=0,e=n.length;t{He(t,a)||i.removeAttribute(t.nodeName)})}return n.body.innerHTML}const Be=new RegExp("(^|\\s)bs-tooltip\\S+","g"),We=new Set(["sanitize","allowList","sanitizeFn"]),qe={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},ze={AUTO:"auto",TOP:"top",RIGHT:g()?"left":"right",BOTTOM:"bottom",LEFT:g()?"right":"left"},$e={animation:!0,template:'',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},Ue={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"};class Fe extends B{constructor(t,e){if(void 0===fe)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this._config=this._getConfig(e),this.tip=null,this._setListeners()}static get Default(){return $e}static get NAME(){return"tooltip"}static get Event(){return Ue}static get DefaultType(){return qe}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(t){if(this._isEnabled)if(t){const e=this._initializeOnDelegatedTarget(t);e._activeTrigger.click=!e._activeTrigger.click,e._isWithActiveTrigger()?e._enter(null,e):e._leave(null,e)}else{if(this.getTipElement().classList.contains("show"))return void this._leave(null,this);this._enter(null,this)}}dispose(){clearTimeout(this._timeout),P.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.remove(),this._popper&&this._popper.destroy(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this.isWithContent()||!this._isEnabled)return;const t=P.trigger(this._element,this.constructor.Event.SHOW),i=d(this._element),n=null===i?this._element.ownerDocument.documentElement.contains(this._element):i.contains(this._element);if(t.defaultPrevented||!n)return;const s=this.getTipElement(),o=e(this.constructor.NAME);s.setAttribute("id",o),this._element.setAttribute("aria-describedby",o),this.setContent(),this._config.animation&&s.classList.add("fade");const r="function"==typeof this._config.placement?this._config.placement.call(this,s,this._element):this._config.placement,a=this._getAttachment(r);this._addAttachmentClass(a);const{container:l}=this._config;R.set(s,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(l.appendChild(s),P.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=ue(this._element,s,this._getPopperConfig(a)),s.classList.add("show");const c="function"==typeof this._config.customClass?this._config.customClass():this._config.customClass;c&&s.classList.add(...c.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>{P.on(t,"mouseover",u)});const h=this.tip.classList.contains("fade");this._queueCallback(()=>{const t=this._hoverState;this._hoverState=null,P.trigger(this._element,this.constructor.Event.SHOWN),"out"===t&&this._leave(null,this)},this.tip,h)}hide(){if(!this._popper)return;const t=this.getTipElement();if(P.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;t.classList.remove("show"),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>P.off(t,"mouseover",u)),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1;const e=this.tip.classList.contains("fade");this._queueCallback(()=>{this._isWithActiveTrigger()||("show"!==this._hoverState&&t.remove(),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),P.trigger(this._element,this.constructor.Event.HIDDEN),this._popper&&(this._popper.destroy(),this._popper=null))},this.tip,e),this._hoverState=""}update(){null!==this._popper&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const t=document.createElement("div");return t.innerHTML=this._config.template,this.tip=t.children[0],this.tip}setContent(){const e=this.getTipElement();this.setElementContent(t.findOne(".tooltip-inner",e),this.getTitle()),e.classList.remove("fade","show")}setElementContent(t,e){if(null!==t)return r(e)?(e=a(e),void(this._config.html?e.parentNode!==t&&(t.innerHTML="",t.appendChild(e)):t.textContent=e.textContent)):void(this._config.html?(this._config.sanitize&&(e=Re(e,this._config.allowList,this._config.sanitizeFn)),t.innerHTML=e):t.textContent=e)}getTitle(){let t=this._element.getAttribute("data-bs-original-title");return t||(t="function"==typeof this._config.title?this._config.title.call(this._element):this._config.title),t}updateAttachment(t){return"right"===t?"end":"left"===t?"start":t}_initializeOnDelegatedTarget(t,e){const i=this.constructor.DATA_KEY;return(e=e||R.get(t.delegateTarget,i))||(e=new this.constructor(t.delegateTarget,this._getDelegateConfig()),R.set(t.delegateTarget,i,e)),e}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:t=>this._handlePopperPlacementChange(t)}],onFirstUpdate:t=>{t.options.placement!==t.placement&&this._handlePopperPlacementChange(t)}};return{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_addAttachmentClass(t){this.getTipElement().classList.add("bs-tooltip-"+this.updateAttachment(t))}_getAttachment(t){return ze[t.toUpperCase()]}_setListeners(){this._config.trigger.split(" ").forEach(t=>{if("click"===t)P.on(this._element,this.constructor.Event.CLICK,this._config.selector,t=>this.toggle(t));else if("manual"!==t){const e="hover"===t?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,i="hover"===t?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;P.on(this._element,e,this._config.selector,t=>this._enter(t)),P.on(this._element,i,this._config.selector,t=>this._leave(t))}}),this._hideModalHandler=()=>{this._element&&this.hide()},P.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this._config.selector?this._config={...this._config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const t=this._element.getAttribute("title"),e=typeof this._element.getAttribute("data-bs-original-title");(t||"string"!==e)&&(this._element.setAttribute("data-bs-original-title",t||""),!t||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))}_enter(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),e.getTipElement().classList.contains("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e._config.delay&&e._config.delay.show?e._timeout=setTimeout(()=>{"show"===e._hoverState&&e.show()},e._config.delay.show):e.show())}_leave(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=e._element.contains(t.relatedTarget)),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e._config.delay&&e._config.delay.hide?e._timeout=setTimeout(()=>{"out"===e._hoverState&&e.hide()},e._config.delay.hide):e.hide())}_isWithActiveTrigger(){for(const t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1}_getConfig(t){const e=U.getDataAttributes(this._element);return Object.keys(e).forEach(t=>{We.has(t)&&delete e[t]}),(t={...this.constructor.Default,...e,..."object"==typeof t&&t?t:{}}).container=!1===t.container?document.body:a(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),l("tooltip",t,this.constructor.DefaultType),t.sanitize&&(t.template=Re(t.template,t.allowList,t.sanitizeFn)),t}_getDelegateConfig(){const t={};if(this._config)for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t}_cleanTipClass(){const t=this.getTipElement(),e=t.getAttribute("class").match(Be);null!==e&&e.length>0&&e.map(t=>t.trim()).forEach(e=>t.classList.remove(e))}_handlePopperPlacementChange(t){const{state:e}=t;e&&(this.tip=e.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(e.placement)))}static jQueryInterface(t){return this.each((function(){const e=Fe.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}_(Fe);const Ve=new RegExp("(^|\\s)bs-popover\\S+","g"),Ke={...Fe.Default,placement:"right",offset:[0,8],trigger:"click",content:"",template:''},Xe={...Fe.DefaultType,content:"(string|element|function)"},Ye={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"};class Qe extends Fe{static get Default(){return Ke}static get NAME(){return"popover"}static get Event(){return Ye}static get DefaultType(){return Xe}isWithContent(){return this.getTitle()||this._getContent()}getTipElement(){return this.tip||(this.tip=super.getTipElement(),this.getTitle()||t.findOne(".popover-header",this.tip).remove(),this._getContent()||t.findOne(".popover-body",this.tip).remove()),this.tip}setContent(){const e=this.getTipElement();this.setElementContent(t.findOne(".popover-header",e),this.getTitle());let i=this._getContent();"function"==typeof i&&(i=i.call(this._element)),this.setElementContent(t.findOne(".popover-body",e),i),e.classList.remove("fade","show")}_addAttachmentClass(t){this.getTipElement().classList.add("bs-popover-"+this.updateAttachment(t))}_getContent(){return this._element.getAttribute("data-bs-content")||this._config.content}_cleanTipClass(){const t=this.getTipElement(),e=t.getAttribute("class").match(Ve);null!==e&&e.length>0&&e.map(t=>t.trim()).forEach(e=>t.classList.remove(e))}static jQueryInterface(t){return this.each((function(){const e=Qe.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}_(Qe);const Ge={offset:10,method:"auto",target:""},Ze={offset:"number",method:"string",target:"(string|element)"};class Je extends B{constructor(t,e){super(t),this._scrollElement="BODY"===this._element.tagName?window:this._element,this._config=this._getConfig(e),this._selector=`${this._config.target} .nav-link, ${this._config.target} .list-group-item, ${this._config.target} .dropdown-item`,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,P.on(this._scrollElement,"scroll.bs.scrollspy",()=>this._process()),this.refresh(),this._process()}static get Default(){return Ge}static get NAME(){return"scrollspy"}refresh(){const e=this._scrollElement===this._scrollElement.window?"offset":"position",i="auto"===this._config.method?e:this._config.method,s="position"===i?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),t.find(this._selector).map(e=>{const o=n(e),r=o?t.findOne(o):null;if(r){const t=r.getBoundingClientRect();if(t.width||t.height)return[U[i](r).top+s,o]}return null}).filter(t=>t).sort((t,e)=>t[0]-e[0]).forEach(t=>{this._offsets.push(t[0]),this._targets.push(t[1])})}dispose(){P.off(this._scrollElement,".bs.scrollspy"),super.dispose()}_getConfig(t){if("string"!=typeof(t={...Ge,...U.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}}).target&&r(t.target)){let{id:i}=t.target;i||(i=e("scrollspy"),t.target.id=i),t.target="#"+i}return l("scrollspy",t,Ze),t}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),i=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=i){const t=this._targets[this._targets.length-1];this._activeTarget!==t&&this._activate(t)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(let e=this._offsets.length;e--;)this._activeTarget!==this._targets[e]&&t>=this._offsets[e]&&(void 0===this._offsets[e+1]||t`${t}[data-bs-target="${e}"],${t}[href="${e}"]`),n=t.findOne(i.join(","));n.classList.contains("dropdown-item")?(t.findOne(".dropdown-toggle",n.closest(".dropdown")).classList.add("active"),n.classList.add("active")):(n.classList.add("active"),t.parents(n,".nav, .list-group").forEach(e=>{t.prev(e,".nav-link, .list-group-item").forEach(t=>t.classList.add("active")),t.prev(e,".nav-item").forEach(e=>{t.children(e,".nav-link").forEach(t=>t.classList.add("active"))})})),P.trigger(this._scrollElement,"activate.bs.scrollspy",{relatedTarget:e})}_clear(){t.find(this._selector).filter(t=>t.classList.contains("active")).forEach(t=>t.classList.remove("active"))}static jQueryInterface(t){return this.each((function(){const e=Je.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}P.on(window,"load.bs.scrollspy.data-api",()=>{t.find('[data-bs-spy="scroll"]').forEach(t=>new Je(t))}),_(Je);class ti extends B{static get NAME(){return"tab"}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains("active"))return;let e;const i=s(this._element),n=this._element.closest(".nav, .list-group");if(n){const i="UL"===n.nodeName||"OL"===n.nodeName?":scope > li > .active":".active";e=t.find(i,n),e=e[e.length-1]}const o=e?P.trigger(e,"hide.bs.tab",{relatedTarget:this._element}):null;if(P.trigger(this._element,"show.bs.tab",{relatedTarget:e}).defaultPrevented||null!==o&&o.defaultPrevented)return;this._activate(this._element,n);const r=()=>{P.trigger(e,"hidden.bs.tab",{relatedTarget:this._element}),P.trigger(this._element,"shown.bs.tab",{relatedTarget:e})};i?this._activate(i,i.parentNode,r):r()}_activate(e,i,n){const s=(!i||"UL"!==i.nodeName&&"OL"!==i.nodeName?t.children(i,".active"):t.find(":scope > li > .active",i))[0],o=n&&s&&s.classList.contains("fade"),r=()=>this._transitionComplete(e,s,n);s&&o?(s.classList.remove("show"),this._queueCallback(r,e,!0)):r()}_transitionComplete(e,i,n){if(i){i.classList.remove("active");const e=t.findOne(":scope > .dropdown-menu .active",i.parentNode);e&&e.classList.remove("active"),"tab"===i.getAttribute("role")&&i.setAttribute("aria-selected",!1)}e.classList.add("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!0),f(e),e.classList.contains("fade")&&e.classList.add("show");let s=e.parentNode;if(s&&"LI"===s.nodeName&&(s=s.parentNode),s&&s.classList.contains("dropdown-menu")){const i=e.closest(".dropdown");i&&t.find(".dropdown-toggle",i).forEach(t=>t.classList.add("active")),e.setAttribute("aria-expanded",!0)}n&&n()}static jQueryInterface(t){return this.each((function(){const e=ti.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}P.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),h(this)||ti.getOrCreateInstance(this).show()})),_(ti);const ei={animation:"boolean",autohide:"boolean",delay:"number"},ii={animation:!0,autohide:!0,delay:5e3};class ni extends B{constructor(t,e){super(t),this._config=this._getConfig(e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get DefaultType(){return ei}static get Default(){return ii}static get NAME(){return"toast"}show(){P.trigger(this._element,"show.bs.toast").defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove("hide"),f(this._element),this._element.classList.add("showing"),this._queueCallback(()=>{this._element.classList.remove("showing"),this._element.classList.add("show"),P.trigger(this._element,"shown.bs.toast"),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){this._element.classList.contains("show")&&(P.trigger(this._element,"hide.bs.toast").defaultPrevented||(this._element.classList.remove("show"),this._queueCallback(()=>{this._element.classList.add("hide"),P.trigger(this._element,"hidden.bs.toast")},this._element,this._config.animation)))}dispose(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),super.dispose()}_getConfig(t){return t={...ii,...U.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}},l("toast",t,this.constructor.DefaultType),t}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){P.on(this._element,"click.dismiss.bs.toast",'[data-bs-dismiss="toast"]',()=>this.hide()),P.on(this._element,"mouseover.bs.toast",t=>this._onInteraction(t,!0)),P.on(this._element,"mouseout.bs.toast",t=>this._onInteraction(t,!1)),P.on(this._element,"focusin.bs.toast",t=>this._onInteraction(t,!0)),P.on(this._element,"focusout.bs.toast",t=>this._onInteraction(t,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ni.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return _(ni),{Alert:W,Button:q,Carousel:Z,Collapse:et,Dropdown:Ae,Modal:De,Offcanvas:Ne,Popover:Qe,ScrollSpy:Je,Tab:ti,Toast:ni,Tooltip:Fe}})); -//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/html/static/vendor/js/bootstrap.min.js b/html/static/vendor/js/bootstrap.min.js deleted file mode 100644 index aed031fd..00000000 --- a/html/static/vendor/js/bootstrap.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Bootstrap v5.0.2 (https://getbootstrap.com/) - * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e(t.Popper)}(this,(function(t){"use strict";function e(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach((function(s){if("default"!==s){var i=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(e,s,i.get?i:{enumerable:!0,get:function(){return t[s]}})}})),e.default=t,Object.freeze(e)}var s=e(t);const i={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter(t=>t.matches(e)),parents(t,e){const s=[];let i=t.parentNode;for(;i&&i.nodeType===Node.ELEMENT_NODE&&3!==i.nodeType;)i.matches(e)&&s.push(i),i=i.parentNode;return s},prev(t,e){let s=t.previousElementSibling;for(;s;){if(s.matches(e))return[s];s=s.previousElementSibling}return[]},next(t,e){let s=t.nextElementSibling;for(;s;){if(s.matches(e))return[s];s=s.nextElementSibling}return[]}},n=t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t},o=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let s=t.getAttribute("href");if(!s||!s.includes("#")&&!s.startsWith("."))return null;s.includes("#")&&!s.startsWith("#")&&(s="#"+s.split("#")[1]),e=s&&"#"!==s?s.trim():null}return e},r=t=>{const e=o(t);return e&&document.querySelector(e)?e:null},a=t=>{const e=o(t);return e?document.querySelector(e):null},l=t=>{t.dispatchEvent(new Event("transitionend"))},c=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),h=t=>c(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?i.findOne(t):null,d=(t,e,s)=>{Object.keys(s).forEach(i=>{const n=s[i],o=e[i],r=o&&c(o)?"element":null==(a=o)?""+a:{}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase();var a;if(!new RegExp(n).test(r))throw new TypeError(`${t.toUpperCase()}: Option "${i}" provided type "${r}" but expected type "${n}".`)})},u=t=>!(!c(t)||0===t.getClientRects().length)&&"visible"===getComputedStyle(t).getPropertyValue("visibility"),g=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),p=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?p(t.parentNode):null},f=()=>{},m=t=>t.offsetHeight,_=()=>{const{jQuery:t}=window;return t&&!document.body.hasAttribute("data-bs-no-jquery")?t:null},b=[],v=()=>"rtl"===document.documentElement.dir,y=t=>{var e;e=()=>{const e=_();if(e){const s=t.NAME,i=e.fn[s];e.fn[s]=t.jQueryInterface,e.fn[s].Constructor=t,e.fn[s].noConflict=()=>(e.fn[s]=i,t.jQueryInterface)}},"loading"===document.readyState?(b.length||document.addEventListener("DOMContentLoaded",()=>{b.forEach(t=>t())}),b.push(e)):e()},w=t=>{"function"==typeof t&&t()},E=(t,e,s=!0)=>{if(!s)return void w(t);const i=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:s}=window.getComputedStyle(t);const i=Number.parseFloat(e),n=Number.parseFloat(s);return i||n?(e=e.split(",")[0],s=s.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(s))):0})(e)+5;let n=!1;const o=({target:s})=>{s===e&&(n=!0,e.removeEventListener("transitionend",o),w(t))};e.addEventListener("transitionend",o),setTimeout(()=>{n||l(e)},i)},A=(t,e,s,i)=>{let n=t.indexOf(e);if(-1===n)return t[!s&&i?t.length-1:0];const o=t.length;return n+=s?1:-1,i&&(n=(n+o)%o),t[Math.max(0,Math.min(n,o-1))]},T=/[^.]*(?=\..*)\.|.*/,C=/\..*/,k=/::\d+$/,L={};let O=1;const D={mouseenter:"mouseover",mouseleave:"mouseout"},I=/^(mouseenter|mouseleave)/i,N=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function S(t,e){return e&&`${e}::${O++}`||t.uidEvent||O++}function x(t){const e=S(t);return t.uidEvent=e,L[e]=L[e]||{},L[e]}function M(t,e,s=null){const i=Object.keys(t);for(let n=0,o=i.length;nfunction(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};i?i=t(i):s=t(s)}const[o,r,a]=P(e,s,i),l=x(t),c=l[a]||(l[a]={}),h=M(c,r,o?s:null);if(h)return void(h.oneOff=h.oneOff&&n);const d=S(r,e.replace(T,"")),u=o?function(t,e,s){return function i(n){const o=t.querySelectorAll(e);for(let{target:r}=n;r&&r!==this;r=r.parentNode)for(let a=o.length;a--;)if(o[a]===r)return n.delegateTarget=r,i.oneOff&&B.off(t,n.type,e,s),s.apply(r,[n]);return null}}(t,s,i):function(t,e){return function s(i){return i.delegateTarget=t,s.oneOff&&B.off(t,i.type,e),e.apply(t,[i])}}(t,s);u.delegationSelector=o?s:null,u.originalHandler=r,u.oneOff=n,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function H(t,e,s,i,n){const o=M(e[s],i,n);o&&(t.removeEventListener(s,o,Boolean(n)),delete e[s][o.uidEvent])}function R(t){return t=t.replace(C,""),D[t]||t}const B={on(t,e,s,i){j(t,e,s,i,!1)},one(t,e,s,i){j(t,e,s,i,!0)},off(t,e,s,i){if("string"!=typeof e||!t)return;const[n,o,r]=P(e,s,i),a=r!==e,l=x(t),c=e.startsWith(".");if(void 0!==o){if(!l||!l[r])return;return void H(t,l,r,o,n?s:null)}c&&Object.keys(l).forEach(s=>{!function(t,e,s,i){const n=e[s]||{};Object.keys(n).forEach(o=>{if(o.includes(i)){const i=n[o];H(t,e,s,i.originalHandler,i.delegationSelector)}})}(t,l,s,e.slice(1))});const h=l[r]||{};Object.keys(h).forEach(s=>{const i=s.replace(k,"");if(!a||e.includes(i)){const e=h[s];H(t,l,r,e.originalHandler,e.delegationSelector)}})},trigger(t,e,s){if("string"!=typeof e||!t)return null;const i=_(),n=R(e),o=e!==n,r=N.has(n);let a,l=!0,c=!0,h=!1,d=null;return o&&i&&(a=i.Event(e,s),i(t).trigger(a),l=!a.isPropagationStopped(),c=!a.isImmediatePropagationStopped(),h=a.isDefaultPrevented()),r?(d=document.createEvent("HTMLEvents"),d.initEvent(n,l,!0)):d=new CustomEvent(e,{bubbles:l,cancelable:!0}),void 0!==s&&Object.keys(s).forEach(t=>{Object.defineProperty(d,t,{get:()=>s[t]})}),h&&d.preventDefault(),c&&t.dispatchEvent(d),d.defaultPrevented&&void 0!==a&&a.preventDefault(),d}},$=new Map;var W={set(t,e,s){$.has(t)||$.set(t,new Map);const i=$.get(t);i.has(e)||0===i.size?i.set(e,s):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(i.keys())[0]}.`)},get:(t,e)=>$.has(t)&&$.get(t).get(e)||null,remove(t,e){if(!$.has(t))return;const s=$.get(t);s.delete(e),0===s.size&&$.delete(t)}};class q{constructor(t){(t=h(t))&&(this._element=t,W.set(this._element,this.constructor.DATA_KEY,this))}dispose(){W.remove(this._element,this.constructor.DATA_KEY),B.off(this._element,this.constructor.EVENT_KEY),Object.getOwnPropertyNames(this).forEach(t=>{this[t]=null})}_queueCallback(t,e,s=!0){E(t,e,s)}static getInstance(t){return W.get(t,this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.0.2"}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}static get DATA_KEY(){return"bs."+this.NAME}static get EVENT_KEY(){return"."+this.DATA_KEY}}class z extends q{static get NAME(){return"alert"}close(t){const e=t?this._getRootElement(t):this._element,s=this._triggerCloseEvent(e);null===s||s.defaultPrevented||this._removeElement(e)}_getRootElement(t){return a(t)||t.closest(".alert")}_triggerCloseEvent(t){return B.trigger(t,"close.bs.alert")}_removeElement(t){t.classList.remove("show");const e=t.classList.contains("fade");this._queueCallback(()=>this._destroyElement(t),t,e)}_destroyElement(t){t.remove(),B.trigger(t,"closed.bs.alert")}static jQueryInterface(t){return this.each((function(){const e=z.getOrCreateInstance(this);"close"===t&&e[t](this)}))}static handleDismiss(t){return function(e){e&&e.preventDefault(),t.close(this)}}}B.on(document,"click.bs.alert.data-api",'[data-bs-dismiss="alert"]',z.handleDismiss(new z)),y(z);class F extends q{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=F.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}function U(t){return"true"===t||"false"!==t&&(t===Number(t).toString()?Number(t):""===t||"null"===t?null:t)}function K(t){return t.replace(/[A-Z]/g,t=>"-"+t.toLowerCase())}B.on(document,"click.bs.button.data-api",'[data-bs-toggle="button"]',t=>{t.preventDefault();const e=t.target.closest('[data-bs-toggle="button"]');F.getOrCreateInstance(e).toggle()}),y(F);const V={setDataAttribute(t,e,s){t.setAttribute("data-bs-"+K(e),s)},removeDataAttribute(t,e){t.removeAttribute("data-bs-"+K(e))},getDataAttributes(t){if(!t)return{};const e={};return Object.keys(t.dataset).filter(t=>t.startsWith("bs")).forEach(s=>{let i=s.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=U(t.dataset[s])}),e},getDataAttribute:(t,e)=>U(t.getAttribute("data-bs-"+K(e))),offset(t){const e=t.getBoundingClientRect();return{top:e.top+document.body.scrollTop,left:e.left+document.body.scrollLeft}},position:t=>({top:t.offsetTop,left:t.offsetLeft})},Q={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},X={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},Y="next",G="prev",Z="left",J="right",tt={ArrowLeft:J,ArrowRight:Z};class et extends q{constructor(t,e){super(t),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._indicatorsElement=i.findOne(".carousel-indicators",this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return Q}static get NAME(){return"carousel"}next(){this._slide(Y)}nextWhenVisible(){!document.hidden&&u(this._element)&&this.next()}prev(){this._slide(G)}pause(t){t||(this._isPaused=!0),i.findOne(".carousel-item-next, .carousel-item-prev",this._element)&&(l(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(t){this._activeElement=i.findOne(".active.carousel-item",this._element);const e=this._getItemIndex(this._activeElement);if(t>this._items.length-1||t<0)return;if(this._isSliding)return void B.one(this._element,"slid.bs.carousel",()=>this.to(t));if(e===t)return this.pause(),void this.cycle();const s=t>e?Y:G;this._slide(s,this._items[t])}_getConfig(t){return t={...Q,...V.getDataAttributes(this._element),..."object"==typeof t?t:{}},d("carousel",t,X),t}_handleSwipe(){const t=Math.abs(this.touchDeltaX);if(t<=40)return;const e=t/this.touchDeltaX;this.touchDeltaX=0,e&&this._slide(e>0?J:Z)}_addEventListeners(){this._config.keyboard&&B.on(this._element,"keydown.bs.carousel",t=>this._keydown(t)),"hover"===this._config.pause&&(B.on(this._element,"mouseenter.bs.carousel",t=>this.pause(t)),B.on(this._element,"mouseleave.bs.carousel",t=>this.cycle(t))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){const t=t=>{!this._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType?this._pointerEvent||(this.touchStartX=t.touches[0].clientX):this.touchStartX=t.clientX},e=t=>{this.touchDeltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this.touchStartX},s=t=>{!this._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType||(this.touchDeltaX=t.clientX-this.touchStartX),this._handleSwipe(),"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(t=>this.cycle(t),500+this._config.interval))};i.find(".carousel-item img",this._element).forEach(t=>{B.on(t,"dragstart.bs.carousel",t=>t.preventDefault())}),this._pointerEvent?(B.on(this._element,"pointerdown.bs.carousel",e=>t(e)),B.on(this._element,"pointerup.bs.carousel",t=>s(t)),this._element.classList.add("pointer-event")):(B.on(this._element,"touchstart.bs.carousel",e=>t(e)),B.on(this._element,"touchmove.bs.carousel",t=>e(t)),B.on(this._element,"touchend.bs.carousel",t=>s(t)))}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=tt[t.key];e&&(t.preventDefault(),this._slide(e))}_getItemIndex(t){return this._items=t&&t.parentNode?i.find(".carousel-item",t.parentNode):[],this._items.indexOf(t)}_getItemByOrder(t,e){const s=t===Y;return A(this._items,e,s,this._config.wrap)}_triggerSlideEvent(t,e){const s=this._getItemIndex(t),n=this._getItemIndex(i.findOne(".active.carousel-item",this._element));return B.trigger(this._element,"slide.bs.carousel",{relatedTarget:t,direction:e,from:n,to:s})}_setActiveIndicatorElement(t){if(this._indicatorsElement){const e=i.findOne(".active",this._indicatorsElement);e.classList.remove("active"),e.removeAttribute("aria-current");const s=i.find("[data-bs-target]",this._indicatorsElement);for(let e=0;e{B.trigger(this._element,"slid.bs.carousel",{relatedTarget:r,direction:u,from:o,to:a})};if(this._element.classList.contains("slide")){r.classList.add(d),m(r),n.classList.add(h),r.classList.add(h);const t=()=>{r.classList.remove(h,d),r.classList.add("active"),n.classList.remove("active",d,h),this._isSliding=!1,setTimeout(g,0)};this._queueCallback(t,n,!0)}else n.classList.remove("active"),r.classList.add("active"),this._isSliding=!1,g();l&&this.cycle()}_directionToOrder(t){return[J,Z].includes(t)?v()?t===Z?G:Y:t===Z?Y:G:t}_orderToDirection(t){return[Y,G].includes(t)?v()?t===G?Z:J:t===G?J:Z:t}static carouselInterface(t,e){const s=et.getOrCreateInstance(t,e);let{_config:i}=s;"object"==typeof e&&(i={...i,...e});const n="string"==typeof e?e:i.slide;if("number"==typeof e)s.to(e);else if("string"==typeof n){if(void 0===s[n])throw new TypeError(`No method named "${n}"`);s[n]()}else i.interval&&i.ride&&(s.pause(),s.cycle())}static jQueryInterface(t){return this.each((function(){et.carouselInterface(this,t)}))}static dataApiClickHandler(t){const e=a(this);if(!e||!e.classList.contains("carousel"))return;const s={...V.getDataAttributes(e),...V.getDataAttributes(this)},i=this.getAttribute("data-bs-slide-to");i&&(s.interval=!1),et.carouselInterface(e,s),i&&et.getInstance(e).to(i),t.preventDefault()}}B.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",et.dataApiClickHandler),B.on(window,"load.bs.carousel.data-api",()=>{const t=i.find('[data-bs-ride="carousel"]');for(let e=0,s=t.length;et===this._element);null!==n&&o.length&&(this._selector=n,this._triggerArray.push(e))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}static get Default(){return st}static get NAME(){return"collapse"}toggle(){this._element.classList.contains("show")?this.hide():this.show()}show(){if(this._isTransitioning||this._element.classList.contains("show"))return;let t,e;this._parent&&(t=i.find(".show, .collapsing",this._parent).filter(t=>"string"==typeof this._config.parent?t.getAttribute("data-bs-parent")===this._config.parent:t.classList.contains("collapse")),0===t.length&&(t=null));const s=i.findOne(this._selector);if(t){const i=t.find(t=>s!==t);if(e=i?nt.getInstance(i):null,e&&e._isTransitioning)return}if(B.trigger(this._element,"show.bs.collapse").defaultPrevented)return;t&&t.forEach(t=>{s!==t&&nt.collapseInterface(t,"hide"),e||W.set(t,"bs.collapse",null)});const n=this._getDimension();this._element.classList.remove("collapse"),this._element.classList.add("collapsing"),this._element.style[n]=0,this._triggerArray.length&&this._triggerArray.forEach(t=>{t.classList.remove("collapsed"),t.setAttribute("aria-expanded",!0)}),this.setTransitioning(!0);const o="scroll"+(n[0].toUpperCase()+n.slice(1));this._queueCallback(()=>{this._element.classList.remove("collapsing"),this._element.classList.add("collapse","show"),this._element.style[n]="",this.setTransitioning(!1),B.trigger(this._element,"shown.bs.collapse")},this._element,!0),this._element.style[n]=this._element[o]+"px"}hide(){if(this._isTransitioning||!this._element.classList.contains("show"))return;if(B.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=this._element.getBoundingClientRect()[t]+"px",m(this._element),this._element.classList.add("collapsing"),this._element.classList.remove("collapse","show");const e=this._triggerArray.length;if(e>0)for(let t=0;t{this.setTransitioning(!1),this._element.classList.remove("collapsing"),this._element.classList.add("collapse"),B.trigger(this._element,"hidden.bs.collapse")},this._element,!0)}setTransitioning(t){this._isTransitioning=t}_getConfig(t){return(t={...st,...t}).toggle=Boolean(t.toggle),d("collapse",t,it),t}_getDimension(){return this._element.classList.contains("width")?"width":"height"}_getParent(){let{parent:t}=this._config;t=h(t);const e=`[data-bs-toggle="collapse"][data-bs-parent="${t}"]`;return i.find(e,t).forEach(t=>{const e=a(t);this._addAriaAndCollapsedClass(e,[t])}),t}_addAriaAndCollapsedClass(t,e){if(!t||!e.length)return;const s=t.classList.contains("show");e.forEach(t=>{s?t.classList.remove("collapsed"):t.classList.add("collapsed"),t.setAttribute("aria-expanded",s)})}static collapseInterface(t,e){let s=nt.getInstance(t);const i={...st,...V.getDataAttributes(t),..."object"==typeof e&&e?e:{}};if(!s&&i.toggle&&"string"==typeof e&&/show|hide/.test(e)&&(i.toggle=!1),s||(s=new nt(t,i)),"string"==typeof e){if(void 0===s[e])throw new TypeError(`No method named "${e}"`);s[e]()}}static jQueryInterface(t){return this.each((function(){nt.collapseInterface(this,t)}))}}B.on(document,"click.bs.collapse.data-api",'[data-bs-toggle="collapse"]',(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();const e=V.getDataAttributes(this),s=r(this);i.find(s).forEach(t=>{const s=nt.getInstance(t);let i;s?(null===s._parent&&"string"==typeof e.parent&&(s._config.parent=e.parent,s._parent=s._getParent()),i="toggle"):i=e,nt.collapseInterface(t,i)})})),y(nt);const ot=new RegExp("ArrowUp|ArrowDown|Escape"),rt=v()?"top-end":"top-start",at=v()?"top-start":"top-end",lt=v()?"bottom-end":"bottom-start",ct=v()?"bottom-start":"bottom-end",ht=v()?"left-start":"right-start",dt=v()?"right-start":"left-start",ut={offset:[0,2],boundary:"clippingParents",reference:"toggle",display:"dynamic",popperConfig:null,autoClose:!0},gt={offset:"(array|string|function)",boundary:"(string|element)",reference:"(string|element|object)",display:"string",popperConfig:"(null|object|function)",autoClose:"(boolean|string)"};class pt extends q{constructor(t,e){super(t),this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}static get Default(){return ut}static get DefaultType(){return gt}static get NAME(){return"dropdown"}toggle(){g(this._element)||(this._element.classList.contains("show")?this.hide():this.show())}show(){if(g(this._element)||this._menu.classList.contains("show"))return;const t=pt.getParentFromElement(this._element),e={relatedTarget:this._element};if(!B.trigger(this._element,"show.bs.dropdown",e).defaultPrevented){if(this._inNavbar)V.setDataAttribute(this._menu,"popper","none");else{if(void 0===s)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let e=this._element;"parent"===this._config.reference?e=t:c(this._config.reference)?e=h(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference);const i=this._getPopperConfig(),n=i.modifiers.find(t=>"applyStyles"===t.name&&!1===t.enabled);this._popper=s.createPopper(e,this._menu,i),n&&V.setDataAttribute(this._menu,"popper","static")}"ontouchstart"in document.documentElement&&!t.closest(".navbar-nav")&&[].concat(...document.body.children).forEach(t=>B.on(t,"mouseover",f)),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.toggle("show"),this._element.classList.toggle("show"),B.trigger(this._element,"shown.bs.dropdown",e)}}hide(){if(g(this._element)||!this._menu.classList.contains("show"))return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_addEventListeners(){B.on(this._element,"click.bs.dropdown",t=>{t.preventDefault(),this.toggle()})}_completeHide(t){B.trigger(this._element,"hide.bs.dropdown",t).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>B.off(t,"mouseover",f)),this._popper&&this._popper.destroy(),this._menu.classList.remove("show"),this._element.classList.remove("show"),this._element.setAttribute("aria-expanded","false"),V.removeDataAttribute(this._menu,"popper"),B.trigger(this._element,"hidden.bs.dropdown",t))}_getConfig(t){if(t={...this.constructor.Default,...V.getDataAttributes(this._element),...t},d("dropdown",t,this.constructor.DefaultType),"object"==typeof t.reference&&!c(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError("dropdown".toUpperCase()+': Option "reference" provided type "object" without a required "getBoundingClientRect" method.');return t}_getMenuElement(){return i.next(this._element,".dropdown-menu")[0]}_getPlacement(){const t=this._element.parentNode;if(t.classList.contains("dropend"))return ht;if(t.classList.contains("dropstart"))return dt;const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?at:rt:e?ct:lt}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return"static"===this._config.display&&(t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem({key:t,target:e}){const s=i.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter(u);s.length&&A(s,e,"ArrowDown"===t,!s.includes(e)).focus()}static dropdownInterface(t,e){const s=pt.getOrCreateInstance(t,e);if("string"==typeof e){if(void 0===s[e])throw new TypeError(`No method named "${e}"`);s[e]()}}static jQueryInterface(t){return this.each((function(){pt.dropdownInterface(this,t)}))}static clearMenus(t){if(t&&(2===t.button||"keyup"===t.type&&"Tab"!==t.key))return;const e=i.find('[data-bs-toggle="dropdown"]');for(let s=0,i=e.length;sthis.matches('[data-bs-toggle="dropdown"]')?this:i.prev(this,'[data-bs-toggle="dropdown"]')[0];return"Escape"===t.key?(s().focus(),void pt.clearMenus()):"ArrowUp"===t.key||"ArrowDown"===t.key?(e||s().click(),void pt.getInstance(s())._selectMenuItem(t)):void(e&&"Space"!==t.key||pt.clearMenus())}}B.on(document,"keydown.bs.dropdown.data-api",'[data-bs-toggle="dropdown"]',pt.dataApiKeydownHandler),B.on(document,"keydown.bs.dropdown.data-api",".dropdown-menu",pt.dataApiKeydownHandler),B.on(document,"click.bs.dropdown.data-api",pt.clearMenus),B.on(document,"keyup.bs.dropdown.data-api",pt.clearMenus),B.on(document,"click.bs.dropdown.data-api",'[data-bs-toggle="dropdown"]',(function(t){t.preventDefault(),pt.dropdownInterface(this)})),y(pt);class ft{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,"paddingRight",e=>e+t),this._setElementAttributes(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top","paddingRight",e=>e+t),this._setElementAttributes(".sticky-top","marginRight",e=>e-t)}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,s){const i=this.getWidth();this._applyManipulationCallback(t,t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+i)return;this._saveInitialAttribute(t,e);const n=window.getComputedStyle(t)[e];t.style[e]=s(Number.parseFloat(n))+"px"})}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"paddingRight"),this._resetElementAttributes(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top","paddingRight"),this._resetElementAttributes(".sticky-top","marginRight")}_saveInitialAttribute(t,e){const s=t.style[e];s&&V.setDataAttribute(t,e,s)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,t=>{const s=V.getDataAttribute(t,e);void 0===s?t.style.removeProperty(e):(V.removeDataAttribute(t,e),t.style[e]=s)})}_applyManipulationCallback(t,e){c(t)?e(t):i.find(t,this._element).forEach(e)}isOverflowing(){return this.getWidth()>0}}const mt={isVisible:!0,isAnimated:!1,rootElement:"body",clickCallback:null},_t={isVisible:"boolean",isAnimated:"boolean",rootElement:"(element|string)",clickCallback:"(function|null)"};class bt{constructor(t){this._config=this._getConfig(t),this._isAppended=!1,this._element=null}show(t){this._config.isVisible?(this._append(),this._config.isAnimated&&m(this._getElement()),this._getElement().classList.add("show"),this._emulateAnimation(()=>{w(t)})):w(t)}hide(t){this._config.isVisible?(this._getElement().classList.remove("show"),this._emulateAnimation(()=>{this.dispose(),w(t)})):w(t)}_getElement(){if(!this._element){const t=document.createElement("div");t.className="modal-backdrop",this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_getConfig(t){return(t={...mt,..."object"==typeof t?t:{}}).rootElement=h(t.rootElement),d("backdrop",t,_t),t}_append(){this._isAppended||(this._config.rootElement.appendChild(this._getElement()),B.on(this._getElement(),"mousedown.bs.backdrop",()=>{w(this._config.clickCallback)}),this._isAppended=!0)}dispose(){this._isAppended&&(B.off(this._element,"mousedown.bs.backdrop"),this._element.remove(),this._isAppended=!1)}_emulateAnimation(t){E(t,this._getElement(),this._config.isAnimated)}}const vt={backdrop:!0,keyboard:!0,focus:!0},yt={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean"};class wt extends q{constructor(t,e){super(t),this._config=this._getConfig(e),this._dialog=i.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollBar=new ft}static get Default(){return vt}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||B.trigger(this._element,"show.bs.modal",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isAnimated()&&(this._isTransitioning=!0),this._scrollBar.hide(),document.body.classList.add("modal-open"),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),B.on(this._element,"click.dismiss.bs.modal",'[data-bs-dismiss="modal"]',t=>this.hide(t)),B.on(this._dialog,"mousedown.dismiss.bs.modal",()=>{B.one(this._element,"mouseup.dismiss.bs.modal",t=>{t.target===this._element&&(this._ignoreBackdropClick=!0)})}),this._showBackdrop(()=>this._showElement(t)))}hide(t){if(t&&["A","AREA"].includes(t.target.tagName)&&t.preventDefault(),!this._isShown||this._isTransitioning)return;if(B.trigger(this._element,"hide.bs.modal").defaultPrevented)return;this._isShown=!1;const e=this._isAnimated();e&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),B.off(document,"focusin.bs.modal"),this._element.classList.remove("show"),B.off(this._element,"click.dismiss.bs.modal"),B.off(this._dialog,"mousedown.dismiss.bs.modal"),this._queueCallback(()=>this._hideModal(),this._element,e)}dispose(){[window,this._dialog].forEach(t=>B.off(t,".bs.modal")),this._backdrop.dispose(),super.dispose(),B.off(document,"focusin.bs.modal")}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new bt({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_getConfig(t){return t={...vt,...V.getDataAttributes(this._element),..."object"==typeof t?t:{}},d("modal",t,yt),t}_showElement(t){const e=this._isAnimated(),s=i.findOne(".modal-body",this._dialog);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,s&&(s.scrollTop=0),e&&m(this._element),this._element.classList.add("show"),this._config.focus&&this._enforceFocus(),this._queueCallback(()=>{this._config.focus&&this._element.focus(),this._isTransitioning=!1,B.trigger(this._element,"shown.bs.modal",{relatedTarget:t})},this._dialog,e)}_enforceFocus(){B.off(document,"focusin.bs.modal"),B.on(document,"focusin.bs.modal",t=>{document===t.target||this._element===t.target||this._element.contains(t.target)||this._element.focus()})}_setEscapeEvent(){this._isShown?B.on(this._element,"keydown.dismiss.bs.modal",t=>{this._config.keyboard&&"Escape"===t.key?(t.preventDefault(),this.hide()):this._config.keyboard||"Escape"!==t.key||this._triggerBackdropTransition()}):B.off(this._element,"keydown.dismiss.bs.modal")}_setResizeEvent(){this._isShown?B.on(window,"resize.bs.modal",()=>this._adjustDialog()):B.off(window,"resize.bs.modal")}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove("modal-open"),this._resetAdjustments(),this._scrollBar.reset(),B.trigger(this._element,"hidden.bs.modal")})}_showBackdrop(t){B.on(this._element,"click.dismiss.bs.modal",t=>{this._ignoreBackdropClick?this._ignoreBackdropClick=!1:t.target===t.currentTarget&&(!0===this._config.backdrop?this.hide():"static"===this._config.backdrop&&this._triggerBackdropTransition())}),this._backdrop.show(t)}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(B.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const{classList:t,scrollHeight:e,style:s}=this._element,i=e>document.documentElement.clientHeight;!i&&"hidden"===s.overflowY||t.contains("modal-static")||(i||(s.overflowY="hidden"),t.add("modal-static"),this._queueCallback(()=>{t.remove("modal-static"),i||this._queueCallback(()=>{s.overflowY=""},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),s=e>0;(!s&&t&&!v()||s&&!t&&v())&&(this._element.style.paddingLeft=e+"px"),(s&&!t&&!v()||!s&&t&&v())&&(this._element.style.paddingRight=e+"px")}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const s=wt.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===s[t])throw new TypeError(`No method named "${t}"`);s[t](e)}}))}}B.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=a(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),B.one(e,"show.bs.modal",t=>{t.defaultPrevented||B.one(e,"hidden.bs.modal",()=>{u(this)&&this.focus()})}),wt.getOrCreateInstance(e).toggle(this)})),y(wt);const Et={backdrop:!0,keyboard:!0,scroll:!1},At={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"};class Tt extends q{constructor(t,e){super(t),this._config=this._getConfig(e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._addEventListeners()}static get NAME(){return"offcanvas"}static get Default(){return Et}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||B.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._element.style.visibility="visible",this._backdrop.show(),this._config.scroll||((new ft).hide(),this._enforceFocusOnElement(this._element)),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add("show"),this._queueCallback(()=>{B.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t})},this._element,!0))}hide(){this._isShown&&(B.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||(B.off(document,"focusin.bs.offcanvas"),this._element.blur(),this._isShown=!1,this._element.classList.remove("show"),this._backdrop.hide(),this._queueCallback(()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.scroll||(new ft).reset(),B.trigger(this._element,"hidden.bs.offcanvas")},this._element,!0)))}dispose(){this._backdrop.dispose(),super.dispose(),B.off(document,"focusin.bs.offcanvas")}_getConfig(t){return t={...Et,...V.getDataAttributes(this._element),..."object"==typeof t?t:{}},d("offcanvas",t,At),t}_initializeBackDrop(){return new bt({isVisible:this._config.backdrop,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:()=>this.hide()})}_enforceFocusOnElement(t){B.off(document,"focusin.bs.offcanvas"),B.on(document,"focusin.bs.offcanvas",e=>{document===e.target||t===e.target||t.contains(e.target)||t.focus()}),t.focus()}_addEventListeners(){B.on(this._element,"click.dismiss.bs.offcanvas",'[data-bs-dismiss="offcanvas"]',()=>this.hide()),B.on(this._element,"keydown.dismiss.bs.offcanvas",t=>{this._config.keyboard&&"Escape"===t.key&&this.hide()})}static jQueryInterface(t){return this.each((function(){const e=Tt.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}B.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(t){const e=a(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),g(this))return;B.one(e,"hidden.bs.offcanvas",()=>{u(this)&&this.focus()});const s=i.findOne(".offcanvas.show");s&&s!==e&&Tt.getInstance(s).hide(),Tt.getOrCreateInstance(e).toggle(this)})),B.on(window,"load.bs.offcanvas.data-api",()=>i.find(".offcanvas.show").forEach(t=>Tt.getOrCreateInstance(t).show())),y(Tt);const Ct=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),kt=/^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i,Lt=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,Ot=(t,e)=>{const s=t.nodeName.toLowerCase();if(e.includes(s))return!Ct.has(s)||Boolean(kt.test(t.nodeValue)||Lt.test(t.nodeValue));const i=e.filter(t=>t instanceof RegExp);for(let t=0,e=i.length;t{Ot(t,a)||s.removeAttribute(t.nodeName)})}return i.body.innerHTML}const It=new RegExp("(^|\\s)bs-tooltip\\S+","g"),Nt=new Set(["sanitize","allowList","sanitizeFn"]),St={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},xt={AUTO:"auto",TOP:"top",RIGHT:v()?"left":"right",BOTTOM:"bottom",LEFT:v()?"right":"left"},Mt={animation:!0,template:'',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},Pt={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"};class jt extends q{constructor(t,e){if(void 0===s)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this._config=this._getConfig(e),this.tip=null,this._setListeners()}static get Default(){return Mt}static get NAME(){return"tooltip"}static get Event(){return Pt}static get DefaultType(){return St}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(t){if(this._isEnabled)if(t){const e=this._initializeOnDelegatedTarget(t);e._activeTrigger.click=!e._activeTrigger.click,e._isWithActiveTrigger()?e._enter(null,e):e._leave(null,e)}else{if(this.getTipElement().classList.contains("show"))return void this._leave(null,this);this._enter(null,this)}}dispose(){clearTimeout(this._timeout),B.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.remove(),this._popper&&this._popper.destroy(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this.isWithContent()||!this._isEnabled)return;const t=B.trigger(this._element,this.constructor.Event.SHOW),e=p(this._element),i=null===e?this._element.ownerDocument.documentElement.contains(this._element):e.contains(this._element);if(t.defaultPrevented||!i)return;const o=this.getTipElement(),r=n(this.constructor.NAME);o.setAttribute("id",r),this._element.setAttribute("aria-describedby",r),this.setContent(),this._config.animation&&o.classList.add("fade");const a="function"==typeof this._config.placement?this._config.placement.call(this,o,this._element):this._config.placement,l=this._getAttachment(a);this._addAttachmentClass(l);const{container:c}=this._config;W.set(o,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(c.appendChild(o),B.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=s.createPopper(this._element,o,this._getPopperConfig(l)),o.classList.add("show");const h="function"==typeof this._config.customClass?this._config.customClass():this._config.customClass;h&&o.classList.add(...h.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>{B.on(t,"mouseover",f)});const d=this.tip.classList.contains("fade");this._queueCallback(()=>{const t=this._hoverState;this._hoverState=null,B.trigger(this._element,this.constructor.Event.SHOWN),"out"===t&&this._leave(null,this)},this.tip,d)}hide(){if(!this._popper)return;const t=this.getTipElement();if(B.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;t.classList.remove("show"),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>B.off(t,"mouseover",f)),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1;const e=this.tip.classList.contains("fade");this._queueCallback(()=>{this._isWithActiveTrigger()||("show"!==this._hoverState&&t.remove(),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),B.trigger(this._element,this.constructor.Event.HIDDEN),this._popper&&(this._popper.destroy(),this._popper=null))},this.tip,e),this._hoverState=""}update(){null!==this._popper&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const t=document.createElement("div");return t.innerHTML=this._config.template,this.tip=t.children[0],this.tip}setContent(){const t=this.getTipElement();this.setElementContent(i.findOne(".tooltip-inner",t),this.getTitle()),t.classList.remove("fade","show")}setElementContent(t,e){if(null!==t)return c(e)?(e=h(e),void(this._config.html?e.parentNode!==t&&(t.innerHTML="",t.appendChild(e)):t.textContent=e.textContent)):void(this._config.html?(this._config.sanitize&&(e=Dt(e,this._config.allowList,this._config.sanitizeFn)),t.innerHTML=e):t.textContent=e)}getTitle(){let t=this._element.getAttribute("data-bs-original-title");return t||(t="function"==typeof this._config.title?this._config.title.call(this._element):this._config.title),t}updateAttachment(t){return"right"===t?"end":"left"===t?"start":t}_initializeOnDelegatedTarget(t,e){const s=this.constructor.DATA_KEY;return(e=e||W.get(t.delegateTarget,s))||(e=new this.constructor(t.delegateTarget,this._getDelegateConfig()),W.set(t.delegateTarget,s,e)),e}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:t=>this._handlePopperPlacementChange(t)}],onFirstUpdate:t=>{t.options.placement!==t.placement&&this._handlePopperPlacementChange(t)}};return{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_addAttachmentClass(t){this.getTipElement().classList.add("bs-tooltip-"+this.updateAttachment(t))}_getAttachment(t){return xt[t.toUpperCase()]}_setListeners(){this._config.trigger.split(" ").forEach(t=>{if("click"===t)B.on(this._element,this.constructor.Event.CLICK,this._config.selector,t=>this.toggle(t));else if("manual"!==t){const e="hover"===t?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,s="hover"===t?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;B.on(this._element,e,this._config.selector,t=>this._enter(t)),B.on(this._element,s,this._config.selector,t=>this._leave(t))}}),this._hideModalHandler=()=>{this._element&&this.hide()},B.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this._config.selector?this._config={...this._config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const t=this._element.getAttribute("title"),e=typeof this._element.getAttribute("data-bs-original-title");(t||"string"!==e)&&(this._element.setAttribute("data-bs-original-title",t||""),!t||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))}_enter(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),e.getTipElement().classList.contains("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e._config.delay&&e._config.delay.show?e._timeout=setTimeout(()=>{"show"===e._hoverState&&e.show()},e._config.delay.show):e.show())}_leave(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=e._element.contains(t.relatedTarget)),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e._config.delay&&e._config.delay.hide?e._timeout=setTimeout(()=>{"out"===e._hoverState&&e.hide()},e._config.delay.hide):e.hide())}_isWithActiveTrigger(){for(const t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1}_getConfig(t){const e=V.getDataAttributes(this._element);return Object.keys(e).forEach(t=>{Nt.has(t)&&delete e[t]}),(t={...this.constructor.Default,...e,..."object"==typeof t&&t?t:{}}).container=!1===t.container?document.body:h(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),d("tooltip",t,this.constructor.DefaultType),t.sanitize&&(t.template=Dt(t.template,t.allowList,t.sanitizeFn)),t}_getDelegateConfig(){const t={};if(this._config)for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t}_cleanTipClass(){const t=this.getTipElement(),e=t.getAttribute("class").match(It);null!==e&&e.length>0&&e.map(t=>t.trim()).forEach(e=>t.classList.remove(e))}_handlePopperPlacementChange(t){const{state:e}=t;e&&(this.tip=e.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(e.placement)))}static jQueryInterface(t){return this.each((function(){const e=jt.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}y(jt);const Ht=new RegExp("(^|\\s)bs-popover\\S+","g"),Rt={...jt.Default,placement:"right",offset:[0,8],trigger:"click",content:"",template:''},Bt={...jt.DefaultType,content:"(string|element|function)"},$t={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"};class Wt extends jt{static get Default(){return Rt}static get NAME(){return"popover"}static get Event(){return $t}static get DefaultType(){return Bt}isWithContent(){return this.getTitle()||this._getContent()}getTipElement(){return this.tip||(this.tip=super.getTipElement(),this.getTitle()||i.findOne(".popover-header",this.tip).remove(),this._getContent()||i.findOne(".popover-body",this.tip).remove()),this.tip}setContent(){const t=this.getTipElement();this.setElementContent(i.findOne(".popover-header",t),this.getTitle());let e=this._getContent();"function"==typeof e&&(e=e.call(this._element)),this.setElementContent(i.findOne(".popover-body",t),e),t.classList.remove("fade","show")}_addAttachmentClass(t){this.getTipElement().classList.add("bs-popover-"+this.updateAttachment(t))}_getContent(){return this._element.getAttribute("data-bs-content")||this._config.content}_cleanTipClass(){const t=this.getTipElement(),e=t.getAttribute("class").match(Ht);null!==e&&e.length>0&&e.map(t=>t.trim()).forEach(e=>t.classList.remove(e))}static jQueryInterface(t){return this.each((function(){const e=Wt.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}y(Wt);const qt={offset:10,method:"auto",target:""},zt={offset:"number",method:"string",target:"(string|element)"};class Ft extends q{constructor(t,e){super(t),this._scrollElement="BODY"===this._element.tagName?window:this._element,this._config=this._getConfig(e),this._selector=`${this._config.target} .nav-link, ${this._config.target} .list-group-item, ${this._config.target} .dropdown-item`,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,B.on(this._scrollElement,"scroll.bs.scrollspy",()=>this._process()),this.refresh(),this._process()}static get Default(){return qt}static get NAME(){return"scrollspy"}refresh(){const t=this._scrollElement===this._scrollElement.window?"offset":"position",e="auto"===this._config.method?t:this._config.method,s="position"===e?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),i.find(this._selector).map(t=>{const n=r(t),o=n?i.findOne(n):null;if(o){const t=o.getBoundingClientRect();if(t.width||t.height)return[V[e](o).top+s,n]}return null}).filter(t=>t).sort((t,e)=>t[0]-e[0]).forEach(t=>{this._offsets.push(t[0]),this._targets.push(t[1])})}dispose(){B.off(this._scrollElement,".bs.scrollspy"),super.dispose()}_getConfig(t){if("string"!=typeof(t={...qt,...V.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}}).target&&c(t.target)){let{id:e}=t.target;e||(e=n("scrollspy"),t.target.id=e),t.target="#"+e}return d("scrollspy",t,zt),t}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),s=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=s){const t=this._targets[this._targets.length-1];this._activeTarget!==t&&this._activate(t)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(let e=this._offsets.length;e--;)this._activeTarget!==this._targets[e]&&t>=this._offsets[e]&&(void 0===this._offsets[e+1]||t`${e}[data-bs-target="${t}"],${e}[href="${t}"]`),s=i.findOne(e.join(","));s.classList.contains("dropdown-item")?(i.findOne(".dropdown-toggle",s.closest(".dropdown")).classList.add("active"),s.classList.add("active")):(s.classList.add("active"),i.parents(s,".nav, .list-group").forEach(t=>{i.prev(t,".nav-link, .list-group-item").forEach(t=>t.classList.add("active")),i.prev(t,".nav-item").forEach(t=>{i.children(t,".nav-link").forEach(t=>t.classList.add("active"))})})),B.trigger(this._scrollElement,"activate.bs.scrollspy",{relatedTarget:t})}_clear(){i.find(this._selector).filter(t=>t.classList.contains("active")).forEach(t=>t.classList.remove("active"))}static jQueryInterface(t){return this.each((function(){const e=Ft.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}B.on(window,"load.bs.scrollspy.data-api",()=>{i.find('[data-bs-spy="scroll"]').forEach(t=>new Ft(t))}),y(Ft);class Ut extends q{static get NAME(){return"tab"}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains("active"))return;let t;const e=a(this._element),s=this._element.closest(".nav, .list-group");if(s){const e="UL"===s.nodeName||"OL"===s.nodeName?":scope > li > .active":".active";t=i.find(e,s),t=t[t.length-1]}const n=t?B.trigger(t,"hide.bs.tab",{relatedTarget:this._element}):null;if(B.trigger(this._element,"show.bs.tab",{relatedTarget:t}).defaultPrevented||null!==n&&n.defaultPrevented)return;this._activate(this._element,s);const o=()=>{B.trigger(t,"hidden.bs.tab",{relatedTarget:this._element}),B.trigger(this._element,"shown.bs.tab",{relatedTarget:t})};e?this._activate(e,e.parentNode,o):o()}_activate(t,e,s){const n=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?i.children(e,".active"):i.find(":scope > li > .active",e))[0],o=s&&n&&n.classList.contains("fade"),r=()=>this._transitionComplete(t,n,s);n&&o?(n.classList.remove("show"),this._queueCallback(r,t,!0)):r()}_transitionComplete(t,e,s){if(e){e.classList.remove("active");const t=i.findOne(":scope > .dropdown-menu .active",e.parentNode);t&&t.classList.remove("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}t.classList.add("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),m(t),t.classList.contains("fade")&&t.classList.add("show");let n=t.parentNode;if(n&&"LI"===n.nodeName&&(n=n.parentNode),n&&n.classList.contains("dropdown-menu")){const e=t.closest(".dropdown");e&&i.find(".dropdown-toggle",e).forEach(t=>t.classList.add("active")),t.setAttribute("aria-expanded",!0)}s&&s()}static jQueryInterface(t){return this.each((function(){const e=Ut.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}B.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),g(this)||Ut.getOrCreateInstance(this).show()})),y(Ut);const Kt={animation:"boolean",autohide:"boolean",delay:"number"},Vt={animation:!0,autohide:!0,delay:5e3};class Qt extends q{constructor(t,e){super(t),this._config=this._getConfig(e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get DefaultType(){return Kt}static get Default(){return Vt}static get NAME(){return"toast"}show(){B.trigger(this._element,"show.bs.toast").defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove("hide"),m(this._element),this._element.classList.add("showing"),this._queueCallback(()=>{this._element.classList.remove("showing"),this._element.classList.add("show"),B.trigger(this._element,"shown.bs.toast"),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){this._element.classList.contains("show")&&(B.trigger(this._element,"hide.bs.toast").defaultPrevented||(this._element.classList.remove("show"),this._queueCallback(()=>{this._element.classList.add("hide"),B.trigger(this._element,"hidden.bs.toast")},this._element,this._config.animation)))}dispose(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),super.dispose()}_getConfig(t){return t={...Vt,...V.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}},d("toast",t,this.constructor.DefaultType),t}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const s=t.relatedTarget;this._element===s||this._element.contains(s)||this._maybeScheduleHide()}_setListeners(){B.on(this._element,"click.dismiss.bs.toast",'[data-bs-dismiss="toast"]',()=>this.hide()),B.on(this._element,"mouseover.bs.toast",t=>this._onInteraction(t,!0)),B.on(this._element,"mouseout.bs.toast",t=>this._onInteraction(t,!1)),B.on(this._element,"focusin.bs.toast",t=>this._onInteraction(t,!0)),B.on(this._element,"focusout.bs.toast",t=>this._onInteraction(t,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=Qt.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return y(Qt),{Alert:z,Button:F,Carousel:et,Collapse:nt,Dropdown:pt,Modal:wt,Offcanvas:Tt,Popover:Wt,ScrollSpy:Ft,Tab:Ut,Toast:Qt,Tooltip:jt}})); -//# sourceMappingURL=bootstrap.min.js.map \ No newline at end of file diff --git a/html/template/rmo/layout/base.html b/html/template/rmo/layout/base.html index 82da8d2d..a20babe3 100644 --- a/html/template/rmo/layout/base.html +++ b/html/template/rmo/layout/base.html @@ -8,8 +8,7 @@ - - + {{ block "extraheader" . }}{{ end }} - + {{ block "extraheader" . }}{{ end }} diff --git a/html/static/css/placeholder b/static/css/placeholder similarity index 100% rename from html/static/css/placeholder rename to static/css/placeholder diff --git a/html/static/file/sample-pool.csv b/static/file/sample-pool.csv similarity index 100% rename from html/static/file/sample-pool.csv rename to static/file/sample-pool.csv diff --git a/static/gen.go b/static/gen.go new file mode 100644 index 00000000..e5e93778 --- /dev/null +++ b/static/gen.go @@ -0,0 +1,6 @@ +package static + +// gen.go - checked into git +// This file is overwritten during Nix builds with hashed paths +const BundlePathCSS = "/static/gen/css/bootstrap.css" +const BundlePathJS = "/static/gen/js/bundle.js" diff --git a/html/static/favicon-rmo.ico b/static/ico/favicon-rmo.ico similarity index 100% rename from html/static/favicon-rmo.ico rename to static/ico/favicon-rmo.ico diff --git a/html/static/favicon-sync.ico b/static/ico/favicon-sync.ico similarity index 100% rename from html/static/favicon-sync.ico rename to static/ico/favicon-sync.ico diff --git a/html/static/img/insecticide-application.jpg b/static/img/insecticide-application.jpg similarity index 100% rename from html/static/img/insecticide-application.jpg rename to static/img/insecticide-application.jpg diff --git a/html/static/img/nidus-logo-256-transparent.png b/static/img/nidus-logo-256-transparent.png similarity index 100% rename from html/static/img/nidus-logo-256-transparent.png rename to static/img/nidus-logo-256-transparent.png diff --git a/html/static/img/nidus-logo-no-lettering-64.png b/static/img/nidus-logo-no-lettering-64.png similarity index 100% rename from html/static/img/nidus-logo-no-lettering-64.png rename to static/img/nidus-logo-no-lettering-64.png diff --git a/html/static/img/pool-overhead.jpg b/static/img/pool-overhead.jpg similarity index 100% rename from html/static/img/pool-overhead.jpg rename to static/img/pool-overhead.jpg diff --git a/html/static/img/rmo-logo-224.png b/static/img/rmo-logo-224.png similarity index 100% rename from html/static/img/rmo-logo-224.png rename to static/img/rmo-logo-224.png diff --git a/html/static/img/rmo/banner.jpg b/static/img/rmo/banner.jpg similarity index 100% rename from html/static/img/rmo/banner.jpg rename to static/img/rmo/banner.jpg diff --git a/html/static/img/rmo/rcs-banner-448x1440.jpg b/static/img/rmo/rcs-banner-448x1440.jpg similarity index 100% rename from html/static/img/rmo/rcs-banner-448x1440.jpg rename to static/img/rmo/rcs-banner-448x1440.jpg diff --git a/html/static/img/rmo/rcs-logo-224.png b/static/img/rmo/rcs-logo-224.png similarity index 100% rename from html/static/img/rmo/rcs-logo-224.png rename to static/img/rmo/rcs-logo-224.png diff --git a/html/static/js/address-display.js b/static/js/address-display.js similarity index 83% rename from html/static/js/address-display.js rename to static/js/address-display.js index 051e147b..216561f9 100644 --- a/html/static/js/address-display.js +++ b/static/js/address-display.js @@ -3,7 +3,7 @@ class AddressDisplay extends HTMLElement { super(); // Create a shadow DOM - this.attachShadow({mode: "open" }); + this.attachShadow({ mode: "open" }); // Initial render this.render(); @@ -96,32 +96,36 @@ class AddressDisplay extends HTMLElement { // Extract context data from properties const props = location.properties; const context = props.context || {}; - + // Populate structured fields // Street Address - combine address, street, housenumber if available - let addressStr = ''; + let addressStr = ""; if (context.address) addressStr += context.address.address_number; if (context.street) { - if (addressStr) addressStr += ' '; - addressStr += context.street.name; + if (addressStr) addressStr += " "; + addressStr += context.street.name; } - if (addressStr === '') { - addressStr = props.name || props.full_address || '-'; + if (addressStr === "") { + addressStr = props.name || props.full_address || "-"; } this._streetAddress.textContent = addressStr; - + // Post Code - this._postCode.textContent = context.postcode.name || '-'; - + this._postCode.textContent = context.postcode.name || "-"; + // District (could be district, locality, or place) - this._district.textContent = context.district.name || context.place.name || context.locality.name || '-'; - + this._district.textContent = + context.district.name || + context.place.name || + context.locality.name || + "-"; + // Region (state, province, etc.) - this._region.textContent = context.region.name || '-'; - + this._region.textContent = context.region.name || "-"; + // Country - this._country.textContent = context.country.name || '-'; + this._country.textContent = context.country.name || "-"; } } -customElements.define('address-display', AddressDisplay); +customElements.define("address-display", AddressDisplay); diff --git a/html/static/js/address-or-report-suggestion.js b/static/js/address-or-report-suggestion.js similarity index 100% rename from html/static/js/address-or-report-suggestion.js rename to static/js/address-or-report-suggestion.js diff --git a/html/static/js/address-suggestion.js b/static/js/address-suggestion.js similarity index 100% rename from html/static/js/address-suggestion.js rename to static/js/address-suggestion.js diff --git a/html/static/js/alpine-3.15.8-min.js b/static/js/alpine-3.15.8-min.js similarity index 100% rename from html/static/js/alpine-3.15.8-min.js rename to static/js/alpine-3.15.8-min.js diff --git a/html/static/js/events.js b/static/js/events.js similarity index 100% rename from html/static/js/events.js rename to static/js/events.js diff --git a/html/static/js/geocode.js b/static/js/geocode.js similarity index 100% rename from html/static/js/geocode.js rename to static/js/geocode.js diff --git a/html/static/js/location.js b/static/js/location.js similarity index 81% rename from html/static/js/location.js rename to static/js/location.js index cb3acbf3..23722716 100644 --- a/html/static/js/location.js +++ b/static/js/location.js @@ -5,19 +5,19 @@ function getGeolocation(options) { reject(new Error("Geolocation is not supported by your browser")); return; } - + // Default options if none provided const geolocationOptions = options || { enableHighAccuracy: true, timeout: 5000, - maximumAge: 0 + maximumAge: 0, }; - + // Call the geolocation API navigator.geolocation.getCurrentPosition( - position => resolve(position), - error => reject(error), - geolocationOptions + (position) => resolve(position), + (error) => reject(error), + geolocationOptions, ); }); } diff --git a/html/static/js/map-admin.js b/static/js/map-admin.js similarity index 100% rename from html/static/js/map-admin.js rename to static/js/map-admin.js diff --git a/html/static/js/map-aggregate.js b/static/js/map-aggregate.js similarity index 100% rename from html/static/js/map-aggregate.js rename to static/js/map-aggregate.js diff --git a/html/static/js/map-arcgis-tile.js b/static/js/map-arcgis-tile.js similarity index 100% rename from html/static/js/map-arcgis-tile.js rename to static/js/map-arcgis-tile.js diff --git a/html/static/js/map-cell.js b/static/js/map-cell.js similarity index 100% rename from html/static/js/map-cell.js rename to static/js/map-cell.js diff --git a/html/static/js/map-locator-ro.js b/static/js/map-locator-ro.js similarity index 100% rename from html/static/js/map-locator-ro.js rename to static/js/map-locator-ro.js diff --git a/html/static/js/map-locator.js b/static/js/map-locator.js similarity index 100% rename from html/static/js/map-locator.js rename to static/js/map-locator.js diff --git a/html/static/js/map-multipoint.js b/static/js/map-multipoint.js similarity index 100% rename from html/static/js/map-multipoint.js rename to static/js/map-multipoint.js diff --git a/html/static/js/map-proxied-arcgis-tile.js b/static/js/map-proxied-arcgis-tile.js similarity index 100% rename from html/static/js/map-proxied-arcgis-tile.js rename to static/js/map-proxied-arcgis-tile.js diff --git a/html/static/js/map-routing.js b/static/js/map-routing.js similarity index 100% rename from html/static/js/map-routing.js rename to static/js/map-routing.js diff --git a/html/static/js/map-service-area.js b/static/js/map-service-area.js similarity index 100% rename from html/static/js/map-service-area.js rename to static/js/map-service-area.js diff --git a/html/static/js/photo-upload.js b/static/js/photo-upload.js similarity index 100% rename from html/static/js/photo-upload.js rename to static/js/photo-upload.js diff --git a/html/static/js/table-report.js b/static/js/table-report.js similarity index 100% rename from html/static/js/table-report.js rename to static/js/table-report.js diff --git a/html/static/js/table-site.js b/static/js/table-site.js similarity index 100% rename from html/static/js/table-site.js rename to static/js/table-site.js diff --git a/html/static/js/time-relative.js b/static/js/time-relative.js similarity index 100% rename from html/static/js/time-relative.js rename to static/js/time-relative.js diff --git a/html/static/js/user-selector.js b/static/js/user-selector.js similarity index 100% rename from html/static/js/user-selector.js rename to static/js/user-selector.js diff --git a/static/static.go b/static/static.go new file mode 100644 index 00000000..8d5b7505 --- /dev/null +++ b/static/static.go @@ -0,0 +1,8 @@ +package static + +import ( + "embed" +) + +//go:embed css gen file ico js vendor +var EmbeddedStaticFS embed.FS diff --git a/html/static/vendor/css/bootstrap-icons.min.css b/static/vendor/css/bootstrap-icons.min.css similarity index 100% rename from html/static/vendor/css/bootstrap-icons.min.css rename to static/vendor/css/bootstrap-icons.min.css diff --git a/html/static/vendor/css/bootstrap.min.css b/static/vendor/css/bootstrap.min.css similarity index 100% rename from html/static/vendor/css/bootstrap.min.css rename to static/vendor/css/bootstrap.min.css diff --git a/html/static/vendor/font/bootstrap-icons.woff2 b/static/vendor/font/bootstrap-icons.woff2 similarity index 100% rename from html/static/vendor/font/bootstrap-icons.woff2 rename to static/vendor/font/bootstrap-icons.woff2 diff --git a/static/vendor/js/bootstrap.bundle.min.js b/static/vendor/js/bootstrap.bundle.min.js new file mode 100644 index 00000000..3b47ccd4 --- /dev/null +++ b/static/vendor/js/bootstrap.bundle.min.js @@ -0,0 +1,4107 @@ +/*! + * Bootstrap v5.0.2 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!(function (t, e) { + "object" == typeof exports && "undefined" != typeof module + ? (module.exports = e()) + : "function" == typeof define && define.amd + ? define(e) + : ((t = + "undefined" != typeof globalThis ? globalThis : t || self).bootstrap = + e()); +})(this, function () { + "use strict"; + const t = { + find: (t, e = document.documentElement) => + [].concat(...Element.prototype.querySelectorAll.call(e, t)), + findOne: (t, e = document.documentElement) => + Element.prototype.querySelector.call(e, t), + children: (t, e) => [].concat(...t.children).filter((t) => t.matches(e)), + parents(t, e) { + const i = []; + let n = t.parentNode; + for (; n && n.nodeType === Node.ELEMENT_NODE && 3 !== n.nodeType; ) + (n.matches(e) && i.push(n), (n = n.parentNode)); + return i; + }, + prev(t, e) { + let i = t.previousElementSibling; + for (; i; ) { + if (i.matches(e)) return [i]; + i = i.previousElementSibling; + } + return []; + }, + next(t, e) { + let i = t.nextElementSibling; + for (; i; ) { + if (i.matches(e)) return [i]; + i = i.nextElementSibling; + } + return []; + }, + }, + e = (t) => { + do { + t += Math.floor(1e6 * Math.random()); + } while (document.getElementById(t)); + return t; + }, + i = (t) => { + let e = t.getAttribute("data-bs-target"); + if (!e || "#" === e) { + let i = t.getAttribute("href"); + if (!i || (!i.includes("#") && !i.startsWith("."))) return null; + (i.includes("#") && !i.startsWith("#") && (i = "#" + i.split("#")[1]), + (e = i && "#" !== i ? i.trim() : null)); + } + return e; + }, + n = (t) => { + const e = i(t); + return e && document.querySelector(e) ? e : null; + }, + s = (t) => { + const e = i(t); + return e ? document.querySelector(e) : null; + }, + o = (t) => { + t.dispatchEvent(new Event("transitionend")); + }, + r = (t) => + !(!t || "object" != typeof t) && + (void 0 !== t.jquery && (t = t[0]), void 0 !== t.nodeType), + a = (e) => + r(e) + ? e.jquery + ? e[0] + : e + : "string" == typeof e && e.length > 0 + ? t.findOne(e) + : null, + l = (t, e, i) => { + Object.keys(i).forEach((n) => { + const s = i[n], + o = e[n], + a = + o && r(o) + ? "element" + : null == (l = o) + ? "" + l + : {}.toString + .call(l) + .match(/\s([a-z]+)/i)[1] + .toLowerCase(); + var l; + if (!new RegExp(s).test(a)) + throw new TypeError( + `${t.toUpperCase()}: Option "${n}" provided type "${a}" but expected type "${s}".`, + ); + }); + }, + c = (t) => + !(!r(t) || 0 === t.getClientRects().length) && + "visible" === getComputedStyle(t).getPropertyValue("visibility"), + h = (t) => + !t || + t.nodeType !== Node.ELEMENT_NODE || + !!t.classList.contains("disabled") || + (void 0 !== t.disabled + ? t.disabled + : t.hasAttribute("disabled") && "false" !== t.getAttribute("disabled")), + d = (t) => { + if (!document.documentElement.attachShadow) return null; + if ("function" == typeof t.getRootNode) { + const e = t.getRootNode(); + return e instanceof ShadowRoot ? e : null; + } + return t instanceof ShadowRoot + ? t + : t.parentNode + ? d(t.parentNode) + : null; + }, + u = () => {}, + f = (t) => t.offsetHeight, + p = () => { + const { jQuery: t } = window; + return t && !document.body.hasAttribute("data-bs-no-jquery") ? t : null; + }, + m = [], + g = () => "rtl" === document.documentElement.dir, + _ = (t) => { + var e; + ((e = () => { + const e = p(); + if (e) { + const i = t.NAME, + n = e.fn[i]; + ((e.fn[i] = t.jQueryInterface), + (e.fn[i].Constructor = t), + (e.fn[i].noConflict = () => ((e.fn[i] = n), t.jQueryInterface))); + } + }), + "loading" === document.readyState + ? (m.length || + document.addEventListener("DOMContentLoaded", () => { + m.forEach((t) => t()); + }), + m.push(e)) + : e()); + }, + b = (t) => { + "function" == typeof t && t(); + }, + v = (t, e, i = !0) => { + if (!i) return void b(t); + const n = + ((t) => { + if (!t) return 0; + let { transitionDuration: e, transitionDelay: i } = + window.getComputedStyle(t); + const n = Number.parseFloat(e), + s = Number.parseFloat(i); + return n || s + ? ((e = e.split(",")[0]), + (i = i.split(",")[0]), + 1e3 * (Number.parseFloat(e) + Number.parseFloat(i))) + : 0; + })(e) + 5; + let s = !1; + const r = ({ target: i }) => { + i === e && ((s = !0), e.removeEventListener("transitionend", r), b(t)); + }; + (e.addEventListener("transitionend", r), + setTimeout(() => { + s || o(e); + }, n)); + }, + y = (t, e, i, n) => { + let s = t.indexOf(e); + if (-1 === s) return t[!i && n ? t.length - 1 : 0]; + const o = t.length; + return ( + (s += i ? 1 : -1), + n && (s = (s + o) % o), + t[Math.max(0, Math.min(s, o - 1))] + ); + }, + w = /[^.]*(?=\..*)\.|.*/, + E = /\..*/, + A = /::\d+$/, + T = {}; + let O = 1; + const C = { mouseenter: "mouseover", mouseleave: "mouseout" }, + k = /^(mouseenter|mouseleave)/i, + L = new Set([ + "click", + "dblclick", + "mouseup", + "mousedown", + "contextmenu", + "mousewheel", + "DOMMouseScroll", + "mouseover", + "mouseout", + "mousemove", + "selectstart", + "selectend", + "keydown", + "keypress", + "keyup", + "orientationchange", + "touchstart", + "touchmove", + "touchend", + "touchcancel", + "pointerdown", + "pointermove", + "pointerup", + "pointerleave", + "pointercancel", + "gesturestart", + "gesturechange", + "gestureend", + "focus", + "blur", + "change", + "reset", + "select", + "submit", + "focusin", + "focusout", + "load", + "unload", + "beforeunload", + "resize", + "move", + "DOMContentLoaded", + "readystatechange", + "error", + "abort", + "scroll", + ]); + function x(t, e) { + return (e && `${e}::${O++}`) || t.uidEvent || O++; + } + function D(t) { + const e = x(t); + return ((t.uidEvent = e), (T[e] = T[e] || {}), T[e]); + } + function S(t, e, i = null) { + const n = Object.keys(t); + for (let s = 0, o = n.length; s < o; s++) { + const o = t[n[s]]; + if (o.originalHandler === e && o.delegationSelector === i) return o; + } + return null; + } + function I(t, e, i) { + const n = "string" == typeof e, + s = n ? i : e; + let o = M(t); + return (L.has(o) || (o = t), [n, s, o]); + } + function N(t, e, i, n, s) { + if ("string" != typeof e || !t) return; + if ((i || ((i = n), (n = null)), k.test(e))) { + const t = (t) => + function (e) { + if ( + !e.relatedTarget || + (e.relatedTarget !== e.delegateTarget && + !e.delegateTarget.contains(e.relatedTarget)) + ) + return t.call(this, e); + }; + n ? (n = t(n)) : (i = t(i)); + } + const [o, r, a] = I(e, i, n), + l = D(t), + c = l[a] || (l[a] = {}), + h = S(c, r, o ? i : null); + if (h) return void (h.oneOff = h.oneOff && s); + const d = x(r, e.replace(w, "")), + u = o + ? (function (t, e, i) { + return function n(s) { + const o = t.querySelectorAll(e); + for (let { target: r } = s; r && r !== this; r = r.parentNode) + for (let a = o.length; a--; ) + if (o[a] === r) + return ( + (s.delegateTarget = r), + n.oneOff && P.off(t, s.type, e, i), + i.apply(r, [s]) + ); + return null; + }; + })(t, i, n) + : (function (t, e) { + return function i(n) { + return ( + (n.delegateTarget = t), + i.oneOff && P.off(t, n.type, e), + e.apply(t, [n]) + ); + }; + })(t, i); + ((u.delegationSelector = o ? i : null), + (u.originalHandler = r), + (u.oneOff = s), + (u.uidEvent = d), + (c[d] = u), + t.addEventListener(a, u, o)); + } + function j(t, e, i, n, s) { + const o = S(e[i], n, s); + o && (t.removeEventListener(i, o, Boolean(s)), delete e[i][o.uidEvent]); + } + function M(t) { + return ((t = t.replace(E, "")), C[t] || t); + } + const P = { + on(t, e, i, n) { + N(t, e, i, n, !1); + }, + one(t, e, i, n) { + N(t, e, i, n, !0); + }, + off(t, e, i, n) { + if ("string" != typeof e || !t) return; + const [s, o, r] = I(e, i, n), + a = r !== e, + l = D(t), + c = e.startsWith("."); + if (void 0 !== o) { + if (!l || !l[r]) return; + return void j(t, l, r, o, s ? i : null); + } + c && + Object.keys(l).forEach((i) => { + !(function (t, e, i, n) { + const s = e[i] || {}; + Object.keys(s).forEach((o) => { + if (o.includes(n)) { + const n = s[o]; + j(t, e, i, n.originalHandler, n.delegationSelector); + } + }); + })(t, l, i, e.slice(1)); + }); + const h = l[r] || {}; + Object.keys(h).forEach((i) => { + const n = i.replace(A, ""); + if (!a || e.includes(n)) { + const e = h[i]; + j(t, l, r, e.originalHandler, e.delegationSelector); + } + }); + }, + trigger(t, e, i) { + if ("string" != typeof e || !t) return null; + const n = p(), + s = M(e), + o = e !== s, + r = L.has(s); + let a, + l = !0, + c = !0, + h = !1, + d = null; + return ( + o && + n && + ((a = n.Event(e, i)), + n(t).trigger(a), + (l = !a.isPropagationStopped()), + (c = !a.isImmediatePropagationStopped()), + (h = a.isDefaultPrevented())), + r + ? ((d = document.createEvent("HTMLEvents")), d.initEvent(s, l, !0)) + : (d = new CustomEvent(e, { bubbles: l, cancelable: !0 })), + void 0 !== i && + Object.keys(i).forEach((t) => { + Object.defineProperty(d, t, { get: () => i[t] }); + }), + h && d.preventDefault(), + c && t.dispatchEvent(d), + d.defaultPrevented && void 0 !== a && a.preventDefault(), + d + ); + }, + }, + H = new Map(); + var R = { + set(t, e, i) { + H.has(t) || H.set(t, new Map()); + const n = H.get(t); + n.has(e) || 0 === n.size + ? n.set(e, i) + : console.error( + `Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`, + ); + }, + get: (t, e) => (H.has(t) && H.get(t).get(e)) || null, + remove(t, e) { + if (!H.has(t)) return; + const i = H.get(t); + (i.delete(e), 0 === i.size && H.delete(t)); + }, + }; + class B { + constructor(t) { + (t = a(t)) && + ((this._element = t), + R.set(this._element, this.constructor.DATA_KEY, this)); + } + dispose() { + (R.remove(this._element, this.constructor.DATA_KEY), + P.off(this._element, this.constructor.EVENT_KEY), + Object.getOwnPropertyNames(this).forEach((t) => { + this[t] = null; + })); + } + _queueCallback(t, e, i = !0) { + v(t, e, i); + } + static getInstance(t) { + return R.get(t, this.DATA_KEY); + } + static getOrCreateInstance(t, e = {}) { + return ( + this.getInstance(t) || new this(t, "object" == typeof e ? e : null) + ); + } + static get VERSION() { + return "5.0.2"; + } + static get NAME() { + throw new Error( + 'You have to implement the static method "NAME", for each component!', + ); + } + static get DATA_KEY() { + return "bs." + this.NAME; + } + static get EVENT_KEY() { + return "." + this.DATA_KEY; + } + } + class W extends B { + static get NAME() { + return "alert"; + } + close(t) { + const e = t ? this._getRootElement(t) : this._element, + i = this._triggerCloseEvent(e); + null === i || i.defaultPrevented || this._removeElement(e); + } + _getRootElement(t) { + return s(t) || t.closest(".alert"); + } + _triggerCloseEvent(t) { + return P.trigger(t, "close.bs.alert"); + } + _removeElement(t) { + t.classList.remove("show"); + const e = t.classList.contains("fade"); + this._queueCallback(() => this._destroyElement(t), t, e); + } + _destroyElement(t) { + (t.remove(), P.trigger(t, "closed.bs.alert")); + } + static jQueryInterface(t) { + return this.each(function () { + const e = W.getOrCreateInstance(this); + "close" === t && e[t](this); + }); + } + static handleDismiss(t) { + return function (e) { + (e && e.preventDefault(), t.close(this)); + }; + } + } + (P.on( + document, + "click.bs.alert.data-api", + '[data-bs-dismiss="alert"]', + W.handleDismiss(new W()), + ), + _(W)); + class q extends B { + static get NAME() { + return "button"; + } + toggle() { + this._element.setAttribute( + "aria-pressed", + this._element.classList.toggle("active"), + ); + } + static jQueryInterface(t) { + return this.each(function () { + const e = q.getOrCreateInstance(this); + "toggle" === t && e[t](); + }); + } + } + function z(t) { + return ( + "true" === t || + ("false" !== t && + (t === Number(t).toString() + ? Number(t) + : "" === t || "null" === t + ? null + : t)) + ); + } + function $(t) { + return t.replace(/[A-Z]/g, (t) => "-" + t.toLowerCase()); + } + (P.on( + document, + "click.bs.button.data-api", + '[data-bs-toggle="button"]', + (t) => { + t.preventDefault(); + const e = t.target.closest('[data-bs-toggle="button"]'); + q.getOrCreateInstance(e).toggle(); + }, + ), + _(q)); + const U = { + setDataAttribute(t, e, i) { + t.setAttribute("data-bs-" + $(e), i); + }, + removeDataAttribute(t, e) { + t.removeAttribute("data-bs-" + $(e)); + }, + getDataAttributes(t) { + if (!t) return {}; + const e = {}; + return ( + Object.keys(t.dataset) + .filter((t) => t.startsWith("bs")) + .forEach((i) => { + let n = i.replace(/^bs/, ""); + ((n = n.charAt(0).toLowerCase() + n.slice(1, n.length)), + (e[n] = z(t.dataset[i]))); + }), + e + ); + }, + getDataAttribute: (t, e) => z(t.getAttribute("data-bs-" + $(e))), + offset(t) { + const e = t.getBoundingClientRect(); + return { + top: e.top + document.body.scrollTop, + left: e.left + document.body.scrollLeft, + }; + }, + position: (t) => ({ top: t.offsetTop, left: t.offsetLeft }), + }, + F = { + interval: 5e3, + keyboard: !0, + slide: !1, + pause: "hover", + wrap: !0, + touch: !0, + }, + V = { + interval: "(number|boolean)", + keyboard: "boolean", + slide: "(boolean|string)", + pause: "(string|boolean)", + wrap: "boolean", + touch: "boolean", + }, + K = "next", + X = "prev", + Y = "left", + Q = "right", + G = { ArrowLeft: Q, ArrowRight: Y }; + class Z extends B { + constructor(e, i) { + (super(e), + (this._items = null), + (this._interval = null), + (this._activeElement = null), + (this._isPaused = !1), + (this._isSliding = !1), + (this.touchTimeout = null), + (this.touchStartX = 0), + (this.touchDeltaX = 0), + (this._config = this._getConfig(i)), + (this._indicatorsElement = t.findOne( + ".carousel-indicators", + this._element, + )), + (this._touchSupported = + "ontouchstart" in document.documentElement || + navigator.maxTouchPoints > 0), + (this._pointerEvent = Boolean(window.PointerEvent)), + this._addEventListeners()); + } + static get Default() { + return F; + } + static get NAME() { + return "carousel"; + } + next() { + this._slide(K); + } + nextWhenVisible() { + !document.hidden && c(this._element) && this.next(); + } + prev() { + this._slide(X); + } + pause(e) { + (e || (this._isPaused = !0), + t.findOne(".carousel-item-next, .carousel-item-prev", this._element) && + (o(this._element), this.cycle(!0)), + clearInterval(this._interval), + (this._interval = null)); + } + cycle(t) { + (t || (this._isPaused = !1), + this._interval && + (clearInterval(this._interval), (this._interval = null)), + this._config && + this._config.interval && + !this._isPaused && + (this._updateInterval(), + (this._interval = setInterval( + (document.visibilityState ? this.nextWhenVisible : this.next).bind( + this, + ), + this._config.interval, + )))); + } + to(e) { + this._activeElement = t.findOne(".active.carousel-item", this._element); + const i = this._getItemIndex(this._activeElement); + if (e > this._items.length - 1 || e < 0) return; + if (this._isSliding) + return void P.one(this._element, "slid.bs.carousel", () => this.to(e)); + if (i === e) return (this.pause(), void this.cycle()); + const n = e > i ? K : X; + this._slide(n, this._items[e]); + } + _getConfig(t) { + return ( + (t = { + ...F, + ...U.getDataAttributes(this._element), + ...("object" == typeof t ? t : {}), + }), + l("carousel", t, V), + t + ); + } + _handleSwipe() { + const t = Math.abs(this.touchDeltaX); + if (t <= 40) return; + const e = t / this.touchDeltaX; + ((this.touchDeltaX = 0), e && this._slide(e > 0 ? Q : Y)); + } + _addEventListeners() { + (this._config.keyboard && + P.on(this._element, "keydown.bs.carousel", (t) => this._keydown(t)), + "hover" === this._config.pause && + (P.on(this._element, "mouseenter.bs.carousel", (t) => this.pause(t)), + P.on(this._element, "mouseleave.bs.carousel", (t) => this.cycle(t))), + this._config.touch && + this._touchSupported && + this._addTouchEventListeners()); + } + _addTouchEventListeners() { + const e = (t) => { + !this._pointerEvent || + ("pen" !== t.pointerType && "touch" !== t.pointerType) + ? this._pointerEvent || (this.touchStartX = t.touches[0].clientX) + : (this.touchStartX = t.clientX); + }, + i = (t) => { + this.touchDeltaX = + t.touches && t.touches.length > 1 + ? 0 + : t.touches[0].clientX - this.touchStartX; + }, + n = (t) => { + (!this._pointerEvent || + ("pen" !== t.pointerType && "touch" !== t.pointerType) || + (this.touchDeltaX = t.clientX - this.touchStartX), + this._handleSwipe(), + "hover" === this._config.pause && + (this.pause(), + this.touchTimeout && clearTimeout(this.touchTimeout), + (this.touchTimeout = setTimeout( + (t) => this.cycle(t), + 500 + this._config.interval, + )))); + }; + (t.find(".carousel-item img", this._element).forEach((t) => { + P.on(t, "dragstart.bs.carousel", (t) => t.preventDefault()); + }), + this._pointerEvent + ? (P.on(this._element, "pointerdown.bs.carousel", (t) => e(t)), + P.on(this._element, "pointerup.bs.carousel", (t) => n(t)), + this._element.classList.add("pointer-event")) + : (P.on(this._element, "touchstart.bs.carousel", (t) => e(t)), + P.on(this._element, "touchmove.bs.carousel", (t) => i(t)), + P.on(this._element, "touchend.bs.carousel", (t) => n(t)))); + } + _keydown(t) { + if (/input|textarea/i.test(t.target.tagName)) return; + const e = G[t.key]; + e && (t.preventDefault(), this._slide(e)); + } + _getItemIndex(e) { + return ( + (this._items = + e && e.parentNode ? t.find(".carousel-item", e.parentNode) : []), + this._items.indexOf(e) + ); + } + _getItemByOrder(t, e) { + const i = t === K; + return y(this._items, e, i, this._config.wrap); + } + _triggerSlideEvent(e, i) { + const n = this._getItemIndex(e), + s = this._getItemIndex( + t.findOne(".active.carousel-item", this._element), + ); + return P.trigger(this._element, "slide.bs.carousel", { + relatedTarget: e, + direction: i, + from: s, + to: n, + }); + } + _setActiveIndicatorElement(e) { + if (this._indicatorsElement) { + const i = t.findOne(".active", this._indicatorsElement); + (i.classList.remove("active"), i.removeAttribute("aria-current")); + const n = t.find("[data-bs-target]", this._indicatorsElement); + for (let t = 0; t < n.length; t++) + if ( + Number.parseInt(n[t].getAttribute("data-bs-slide-to"), 10) === + this._getItemIndex(e) + ) { + (n[t].classList.add("active"), + n[t].setAttribute("aria-current", "true")); + break; + } + } + } + _updateInterval() { + const e = + this._activeElement || + t.findOne(".active.carousel-item", this._element); + if (!e) return; + const i = Number.parseInt(e.getAttribute("data-bs-interval"), 10); + i + ? ((this._config.defaultInterval = + this._config.defaultInterval || this._config.interval), + (this._config.interval = i)) + : (this._config.interval = + this._config.defaultInterval || this._config.interval); + } + _slide(e, i) { + const n = this._directionToOrder(e), + s = t.findOne(".active.carousel-item", this._element), + o = this._getItemIndex(s), + r = i || this._getItemByOrder(n, s), + a = this._getItemIndex(r), + l = Boolean(this._interval), + c = n === K, + h = c ? "carousel-item-start" : "carousel-item-end", + d = c ? "carousel-item-next" : "carousel-item-prev", + u = this._orderToDirection(n); + if (r && r.classList.contains("active")) + return void (this._isSliding = !1); + if (this._isSliding) return; + if (this._triggerSlideEvent(r, u).defaultPrevented) return; + if (!s || !r) return; + ((this._isSliding = !0), + l && this.pause(), + this._setActiveIndicatorElement(r), + (this._activeElement = r)); + const p = () => { + P.trigger(this._element, "slid.bs.carousel", { + relatedTarget: r, + direction: u, + from: o, + to: a, + }); + }; + if (this._element.classList.contains("slide")) { + (r.classList.add(d), f(r), s.classList.add(h), r.classList.add(h)); + const t = () => { + (r.classList.remove(h, d), + r.classList.add("active"), + s.classList.remove("active", d, h), + (this._isSliding = !1), + setTimeout(p, 0)); + }; + this._queueCallback(t, s, !0); + } else + (s.classList.remove("active"), + r.classList.add("active"), + (this._isSliding = !1), + p()); + l && this.cycle(); + } + _directionToOrder(t) { + return [Q, Y].includes(t) + ? g() + ? t === Y + ? X + : K + : t === Y + ? K + : X + : t; + } + _orderToDirection(t) { + return [K, X].includes(t) + ? g() + ? t === X + ? Y + : Q + : t === X + ? Q + : Y + : t; + } + static carouselInterface(t, e) { + const i = Z.getOrCreateInstance(t, e); + let { _config: n } = i; + "object" == typeof e && (n = { ...n, ...e }); + const s = "string" == typeof e ? e : n.slide; + if ("number" == typeof e) i.to(e); + else if ("string" == typeof s) { + if (void 0 === i[s]) throw new TypeError(`No method named "${s}"`); + i[s](); + } else n.interval && n.ride && (i.pause(), i.cycle()); + } + static jQueryInterface(t) { + return this.each(function () { + Z.carouselInterface(this, t); + }); + } + static dataApiClickHandler(t) { + const e = s(this); + if (!e || !e.classList.contains("carousel")) return; + const i = { ...U.getDataAttributes(e), ...U.getDataAttributes(this) }, + n = this.getAttribute("data-bs-slide-to"); + (n && (i.interval = !1), + Z.carouselInterface(e, i), + n && Z.getInstance(e).to(n), + t.preventDefault()); + } + } + (P.on( + document, + "click.bs.carousel.data-api", + "[data-bs-slide], [data-bs-slide-to]", + Z.dataApiClickHandler, + ), + P.on(window, "load.bs.carousel.data-api", () => { + const e = t.find('[data-bs-ride="carousel"]'); + for (let t = 0, i = e.length; t < i; t++) + Z.carouselInterface(e[t], Z.getInstance(e[t])); + }), + _(Z)); + const J = { toggle: !0, parent: "" }, + tt = { toggle: "boolean", parent: "(string|element)" }; + class et extends B { + constructor(e, i) { + (super(e), + (this._isTransitioning = !1), + (this._config = this._getConfig(i)), + (this._triggerArray = t.find( + `[data-bs-toggle="collapse"][href="#${this._element.id}"],[data-bs-toggle="collapse"][data-bs-target="#${this._element.id}"]`, + ))); + const s = t.find('[data-bs-toggle="collapse"]'); + for (let e = 0, i = s.length; e < i; e++) { + const i = s[e], + o = n(i), + r = t.find(o).filter((t) => t === this._element); + null !== o && + r.length && + ((this._selector = o), this._triggerArray.push(i)); + } + ((this._parent = this._config.parent ? this._getParent() : null), + this._config.parent || + this._addAriaAndCollapsedClass(this._element, this._triggerArray), + this._config.toggle && this.toggle()); + } + static get Default() { + return J; + } + static get NAME() { + return "collapse"; + } + toggle() { + this._element.classList.contains("show") ? this.hide() : this.show(); + } + show() { + if (this._isTransitioning || this._element.classList.contains("show")) + return; + let e, i; + this._parent && + ((e = t + .find(".show, .collapsing", this._parent) + .filter((t) => + "string" == typeof this._config.parent + ? t.getAttribute("data-bs-parent") === this._config.parent + : t.classList.contains("collapse"), + )), + 0 === e.length && (e = null)); + const n = t.findOne(this._selector); + if (e) { + const t = e.find((t) => n !== t); + if (((i = t ? et.getInstance(t) : null), i && i._isTransitioning)) + return; + } + if (P.trigger(this._element, "show.bs.collapse").defaultPrevented) return; + e && + e.forEach((t) => { + (n !== t && et.collapseInterface(t, "hide"), + i || R.set(t, "bs.collapse", null)); + }); + const s = this._getDimension(); + (this._element.classList.remove("collapse"), + this._element.classList.add("collapsing"), + (this._element.style[s] = 0), + this._triggerArray.length && + this._triggerArray.forEach((t) => { + (t.classList.remove("collapsed"), + t.setAttribute("aria-expanded", !0)); + }), + this.setTransitioning(!0)); + const o = "scroll" + (s[0].toUpperCase() + s.slice(1)); + (this._queueCallback( + () => { + (this._element.classList.remove("collapsing"), + this._element.classList.add("collapse", "show"), + (this._element.style[s] = ""), + this.setTransitioning(!1), + P.trigger(this._element, "shown.bs.collapse")); + }, + this._element, + !0, + ), + (this._element.style[s] = this._element[o] + "px")); + } + hide() { + if (this._isTransitioning || !this._element.classList.contains("show")) + return; + if (P.trigger(this._element, "hide.bs.collapse").defaultPrevented) return; + const t = this._getDimension(); + ((this._element.style[t] = + this._element.getBoundingClientRect()[t] + "px"), + f(this._element), + this._element.classList.add("collapsing"), + this._element.classList.remove("collapse", "show")); + const e = this._triggerArray.length; + if (e > 0) + for (let t = 0; t < e; t++) { + const e = this._triggerArray[t], + i = s(e); + i && + !i.classList.contains("show") && + (e.classList.add("collapsed"), e.setAttribute("aria-expanded", !1)); + } + (this.setTransitioning(!0), + (this._element.style[t] = ""), + this._queueCallback( + () => { + (this.setTransitioning(!1), + this._element.classList.remove("collapsing"), + this._element.classList.add("collapse"), + P.trigger(this._element, "hidden.bs.collapse")); + }, + this._element, + !0, + )); + } + setTransitioning(t) { + this._isTransitioning = t; + } + _getConfig(t) { + return ( + ((t = { ...J, ...t }).toggle = Boolean(t.toggle)), + l("collapse", t, tt), + t + ); + } + _getDimension() { + return this._element.classList.contains("width") ? "width" : "height"; + } + _getParent() { + let { parent: e } = this._config; + e = a(e); + const i = `[data-bs-toggle="collapse"][data-bs-parent="${e}"]`; + return ( + t.find(i, e).forEach((t) => { + const e = s(t); + this._addAriaAndCollapsedClass(e, [t]); + }), + e + ); + } + _addAriaAndCollapsedClass(t, e) { + if (!t || !e.length) return; + const i = t.classList.contains("show"); + e.forEach((t) => { + (i ? t.classList.remove("collapsed") : t.classList.add("collapsed"), + t.setAttribute("aria-expanded", i)); + }); + } + static collapseInterface(t, e) { + let i = et.getInstance(t); + const n = { + ...J, + ...U.getDataAttributes(t), + ...("object" == typeof e && e ? e : {}), + }; + if ( + (!i && + n.toggle && + "string" == typeof e && + /show|hide/.test(e) && + (n.toggle = !1), + i || (i = new et(t, n)), + "string" == typeof e) + ) { + if (void 0 === i[e]) throw new TypeError(`No method named "${e}"`); + i[e](); + } + } + static jQueryInterface(t) { + return this.each(function () { + et.collapseInterface(this, t); + }); + } + } + (P.on( + document, + "click.bs.collapse.data-api", + '[data-bs-toggle="collapse"]', + function (e) { + ("A" === e.target.tagName || + (e.delegateTarget && "A" === e.delegateTarget.tagName)) && + e.preventDefault(); + const i = U.getDataAttributes(this), + s = n(this); + t.find(s).forEach((t) => { + const e = et.getInstance(t); + let n; + (e + ? (null === e._parent && + "string" == typeof i.parent && + ((e._config.parent = i.parent), (e._parent = e._getParent())), + (n = "toggle")) + : (n = i), + et.collapseInterface(t, n)); + }); + }, + ), + _(et)); + var it = "top", + nt = "bottom", + st = "right", + ot = "left", + rt = [it, nt, st, ot], + at = rt.reduce(function (t, e) { + return t.concat([e + "-start", e + "-end"]); + }, []), + lt = [].concat(rt, ["auto"]).reduce(function (t, e) { + return t.concat([e, e + "-start", e + "-end"]); + }, []), + ct = [ + "beforeRead", + "read", + "afterRead", + "beforeMain", + "main", + "afterMain", + "beforeWrite", + "write", + "afterWrite", + ]; + function ht(t) { + return t ? (t.nodeName || "").toLowerCase() : null; + } + function dt(t) { + if (null == t) return window; + if ("[object Window]" !== t.toString()) { + var e = t.ownerDocument; + return (e && e.defaultView) || window; + } + return t; + } + function ut(t) { + return t instanceof dt(t).Element || t instanceof Element; + } + function ft(t) { + return t instanceof dt(t).HTMLElement || t instanceof HTMLElement; + } + function pt(t) { + return ( + "undefined" != typeof ShadowRoot && + (t instanceof dt(t).ShadowRoot || t instanceof ShadowRoot) + ); + } + var mt = { + name: "applyStyles", + enabled: !0, + phase: "write", + fn: function (t) { + var e = t.state; + Object.keys(e.elements).forEach(function (t) { + var i = e.styles[t] || {}, + n = e.attributes[t] || {}, + s = e.elements[t]; + ft(s) && + ht(s) && + (Object.assign(s.style, i), + Object.keys(n).forEach(function (t) { + var e = n[t]; + !1 === e + ? s.removeAttribute(t) + : s.setAttribute(t, !0 === e ? "" : e); + })); + }); + }, + effect: function (t) { + var e = t.state, + i = { + popper: { + position: e.options.strategy, + left: "0", + top: "0", + margin: "0", + }, + arrow: { position: "absolute" }, + reference: {}, + }; + return ( + Object.assign(e.elements.popper.style, i.popper), + (e.styles = i), + e.elements.arrow && Object.assign(e.elements.arrow.style, i.arrow), + function () { + Object.keys(e.elements).forEach(function (t) { + var n = e.elements[t], + s = e.attributes[t] || {}, + o = Object.keys( + e.styles.hasOwnProperty(t) ? e.styles[t] : i[t], + ).reduce(function (t, e) { + return ((t[e] = ""), t); + }, {}); + ft(n) && + ht(n) && + (Object.assign(n.style, o), + Object.keys(s).forEach(function (t) { + n.removeAttribute(t); + })); + }); + } + ); + }, + requires: ["computeStyles"], + }; + function gt(t) { + return t.split("-")[0]; + } + function _t(t) { + var e = t.getBoundingClientRect(); + return { + width: e.width, + height: e.height, + top: e.top, + right: e.right, + bottom: e.bottom, + left: e.left, + x: e.left, + y: e.top, + }; + } + function bt(t) { + var e = _t(t), + i = t.offsetWidth, + n = t.offsetHeight; + return ( + Math.abs(e.width - i) <= 1 && (i = e.width), + Math.abs(e.height - n) <= 1 && (n = e.height), + { x: t.offsetLeft, y: t.offsetTop, width: i, height: n } + ); + } + function vt(t, e) { + var i = e.getRootNode && e.getRootNode(); + if (t.contains(e)) return !0; + if (i && pt(i)) { + var n = e; + do { + if (n && t.isSameNode(n)) return !0; + n = n.parentNode || n.host; + } while (n); + } + return !1; + } + function yt(t) { + return dt(t).getComputedStyle(t); + } + function wt(t) { + return ["table", "td", "th"].indexOf(ht(t)) >= 0; + } + function Et(t) { + return ((ut(t) ? t.ownerDocument : t.document) || window.document) + .documentElement; + } + function At(t) { + return "html" === ht(t) + ? t + : t.assignedSlot || t.parentNode || (pt(t) ? t.host : null) || Et(t); + } + function Tt(t) { + return ft(t) && "fixed" !== yt(t).position ? t.offsetParent : null; + } + function Ot(t) { + for (var e = dt(t), i = Tt(t); i && wt(i) && "static" === yt(i).position; ) + i = Tt(i); + return i && + ("html" === ht(i) || ("body" === ht(i) && "static" === yt(i).position)) + ? e + : i || + (function (t) { + var e = -1 !== navigator.userAgent.toLowerCase().indexOf("firefox"); + if ( + -1 !== navigator.userAgent.indexOf("Trident") && + ft(t) && + "fixed" === yt(t).position + ) + return null; + for ( + var i = At(t); + ft(i) && ["html", "body"].indexOf(ht(i)) < 0; + + ) { + var n = yt(i); + if ( + "none" !== n.transform || + "none" !== n.perspective || + "paint" === n.contain || + -1 !== ["transform", "perspective"].indexOf(n.willChange) || + (e && "filter" === n.willChange) || + (e && n.filter && "none" !== n.filter) + ) + return i; + i = i.parentNode; + } + return null; + })(t) || + e; + } + function Ct(t) { + return ["top", "bottom"].indexOf(t) >= 0 ? "x" : "y"; + } + var kt = Math.max, + Lt = Math.min, + xt = Math.round; + function Dt(t, e, i) { + return kt(t, Lt(e, i)); + } + function St(t) { + return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, t); + } + function It(t, e) { + return e.reduce(function (e, i) { + return ((e[i] = t), e); + }, {}); + } + var Nt = { + name: "arrow", + enabled: !0, + phase: "main", + fn: function (t) { + var e, + i = t.state, + n = t.name, + s = t.options, + o = i.elements.arrow, + r = i.modifiersData.popperOffsets, + a = gt(i.placement), + l = Ct(a), + c = [ot, st].indexOf(a) >= 0 ? "height" : "width"; + if (o && r) { + var h = (function (t, e) { + return St( + "number" != + typeof (t = + "function" == typeof t + ? t( + Object.assign({}, e.rects, { + placement: e.placement, + }), + ) + : t) + ? t + : It(t, rt), + ); + })(s.padding, i), + d = bt(o), + u = "y" === l ? it : ot, + f = "y" === l ? nt : st, + p = + i.rects.reference[c] + + i.rects.reference[l] - + r[l] - + i.rects.popper[c], + m = r[l] - i.rects.reference[l], + g = Ot(o), + _ = g ? ("y" === l ? g.clientHeight || 0 : g.clientWidth || 0) : 0, + b = p / 2 - m / 2, + v = h[u], + y = _ - d[c] - h[f], + w = _ / 2 - d[c] / 2 + b, + E = Dt(v, w, y), + A = l; + i.modifiersData[n] = (((e = {})[A] = E), (e.centerOffset = E - w), e); + } + }, + effect: function (t) { + var e = t.state, + i = t.options.element, + n = void 0 === i ? "[data-popper-arrow]" : i; + null != n && + ("string" != typeof n || (n = e.elements.popper.querySelector(n))) && + vt(e.elements.popper, n) && + (e.elements.arrow = n); + }, + requires: ["popperOffsets"], + requiresIfExists: ["preventOverflow"], + }, + jt = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; + function Mt(t) { + var e, + i = t.popper, + n = t.popperRect, + s = t.placement, + o = t.offsets, + r = t.position, + a = t.gpuAcceleration, + l = t.adaptive, + c = t.roundOffsets, + h = + !0 === c + ? (function (t) { + var e = t.x, + i = t.y, + n = window.devicePixelRatio || 1; + return { x: xt(xt(e * n) / n) || 0, y: xt(xt(i * n) / n) || 0 }; + })(o) + : "function" == typeof c + ? c(o) + : o, + d = h.x, + u = void 0 === d ? 0 : d, + f = h.y, + p = void 0 === f ? 0 : f, + m = o.hasOwnProperty("x"), + g = o.hasOwnProperty("y"), + _ = ot, + b = it, + v = window; + if (l) { + var y = Ot(i), + w = "clientHeight", + E = "clientWidth"; + (y === dt(i) && + "static" !== yt((y = Et(i))).position && + ((w = "scrollHeight"), (E = "scrollWidth")), + (y = y), + s === it && ((b = nt), (p -= y[w] - n.height), (p *= a ? 1 : -1)), + s === ot && ((_ = st), (u -= y[E] - n.width), (u *= a ? 1 : -1))); + } + var A, + T = Object.assign({ position: r }, l && jt); + return a + ? Object.assign( + {}, + T, + (((A = {})[b] = g ? "0" : ""), + (A[_] = m ? "0" : ""), + (A.transform = + (v.devicePixelRatio || 1) < 2 + ? "translate(" + u + "px, " + p + "px)" + : "translate3d(" + u + "px, " + p + "px, 0)"), + A), + ) + : Object.assign( + {}, + T, + (((e = {})[b] = g ? p + "px" : ""), + (e[_] = m ? u + "px" : ""), + (e.transform = ""), + e), + ); + } + var Pt = { + name: "computeStyles", + enabled: !0, + phase: "beforeWrite", + fn: function (t) { + var e = t.state, + i = t.options, + n = i.gpuAcceleration, + s = void 0 === n || n, + o = i.adaptive, + r = void 0 === o || o, + a = i.roundOffsets, + l = void 0 === a || a, + c = { + placement: gt(e.placement), + popper: e.elements.popper, + popperRect: e.rects.popper, + gpuAcceleration: s, + }; + (null != e.modifiersData.popperOffsets && + (e.styles.popper = Object.assign( + {}, + e.styles.popper, + Mt( + Object.assign({}, c, { + offsets: e.modifiersData.popperOffsets, + position: e.options.strategy, + adaptive: r, + roundOffsets: l, + }), + ), + )), + null != e.modifiersData.arrow && + (e.styles.arrow = Object.assign( + {}, + e.styles.arrow, + Mt( + Object.assign({}, c, { + offsets: e.modifiersData.arrow, + position: "absolute", + adaptive: !1, + roundOffsets: l, + }), + ), + )), + (e.attributes.popper = Object.assign({}, e.attributes.popper, { + "data-popper-placement": e.placement, + }))); + }, + data: {}, + }, + Ht = { passive: !0 }, + Rt = { + name: "eventListeners", + enabled: !0, + phase: "write", + fn: function () {}, + effect: function (t) { + var e = t.state, + i = t.instance, + n = t.options, + s = n.scroll, + o = void 0 === s || s, + r = n.resize, + a = void 0 === r || r, + l = dt(e.elements.popper), + c = [].concat(e.scrollParents.reference, e.scrollParents.popper); + return ( + o && + c.forEach(function (t) { + t.addEventListener("scroll", i.update, Ht); + }), + a && l.addEventListener("resize", i.update, Ht), + function () { + (o && + c.forEach(function (t) { + t.removeEventListener("scroll", i.update, Ht); + }), + a && l.removeEventListener("resize", i.update, Ht)); + } + ); + }, + data: {}, + }, + Bt = { left: "right", right: "left", bottom: "top", top: "bottom" }; + function Wt(t) { + return t.replace(/left|right|bottom|top/g, function (t) { + return Bt[t]; + }); + } + var qt = { start: "end", end: "start" }; + function zt(t) { + return t.replace(/start|end/g, function (t) { + return qt[t]; + }); + } + function $t(t) { + var e = dt(t); + return { scrollLeft: e.pageXOffset, scrollTop: e.pageYOffset }; + } + function Ut(t) { + return _t(Et(t)).left + $t(t).scrollLeft; + } + function Ft(t) { + var e = yt(t), + i = e.overflow, + n = e.overflowX, + s = e.overflowY; + return /auto|scroll|overlay|hidden/.test(i + s + n); + } + function Vt(t, e) { + var i; + void 0 === e && (e = []); + var n = (function t(e) { + return ["html", "body", "#document"].indexOf(ht(e)) >= 0 + ? e.ownerDocument.body + : ft(e) && Ft(e) + ? e + : t(At(e)); + })(t), + s = n === (null == (i = t.ownerDocument) ? void 0 : i.body), + o = dt(n), + r = s ? [o].concat(o.visualViewport || [], Ft(n) ? n : []) : n, + a = e.concat(r); + return s ? a : a.concat(Vt(At(r))); + } + function Kt(t) { + return Object.assign({}, t, { + left: t.x, + top: t.y, + right: t.x + t.width, + bottom: t.y + t.height, + }); + } + function Xt(t, e) { + return "viewport" === e + ? Kt( + (function (t) { + var e = dt(t), + i = Et(t), + n = e.visualViewport, + s = i.clientWidth, + o = i.clientHeight, + r = 0, + a = 0; + return ( + n && + ((s = n.width), + (o = n.height), + /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || + ((r = n.offsetLeft), (a = n.offsetTop))), + { width: s, height: o, x: r + Ut(t), y: a } + ); + })(t), + ) + : ft(e) + ? (function (t) { + var e = _t(t); + return ( + (e.top = e.top + t.clientTop), + (e.left = e.left + t.clientLeft), + (e.bottom = e.top + t.clientHeight), + (e.right = e.left + t.clientWidth), + (e.width = t.clientWidth), + (e.height = t.clientHeight), + (e.x = e.left), + (e.y = e.top), + e + ); + })(e) + : Kt( + (function (t) { + var e, + i = Et(t), + n = $t(t), + s = null == (e = t.ownerDocument) ? void 0 : e.body, + o = kt( + i.scrollWidth, + i.clientWidth, + s ? s.scrollWidth : 0, + s ? s.clientWidth : 0, + ), + r = kt( + i.scrollHeight, + i.clientHeight, + s ? s.scrollHeight : 0, + s ? s.clientHeight : 0, + ), + a = -n.scrollLeft + Ut(t), + l = -n.scrollTop; + return ( + "rtl" === yt(s || i).direction && + (a += kt(i.clientWidth, s ? s.clientWidth : 0) - o), + { width: o, height: r, x: a, y: l } + ); + })(Et(t)), + ); + } + function Yt(t) { + return t.split("-")[1]; + } + function Qt(t) { + var e, + i = t.reference, + n = t.element, + s = t.placement, + o = s ? gt(s) : null, + r = s ? Yt(s) : null, + a = i.x + i.width / 2 - n.width / 2, + l = i.y + i.height / 2 - n.height / 2; + switch (o) { + case it: + e = { x: a, y: i.y - n.height }; + break; + case nt: + e = { x: a, y: i.y + i.height }; + break; + case st: + e = { x: i.x + i.width, y: l }; + break; + case ot: + e = { x: i.x - n.width, y: l }; + break; + default: + e = { x: i.x, y: i.y }; + } + var c = o ? Ct(o) : null; + if (null != c) { + var h = "y" === c ? "height" : "width"; + switch (r) { + case "start": + e[c] = e[c] - (i[h] / 2 - n[h] / 2); + break; + case "end": + e[c] = e[c] + (i[h] / 2 - n[h] / 2); + } + } + return e; + } + function Gt(t, e) { + void 0 === e && (e = {}); + var i = e, + n = i.placement, + s = void 0 === n ? t.placement : n, + o = i.boundary, + r = void 0 === o ? "clippingParents" : o, + a = i.rootBoundary, + l = void 0 === a ? "viewport" : a, + c = i.elementContext, + h = void 0 === c ? "popper" : c, + d = i.altBoundary, + u = void 0 !== d && d, + f = i.padding, + p = void 0 === f ? 0 : f, + m = St("number" != typeof p ? p : It(p, rt)), + g = "popper" === h ? "reference" : "popper", + _ = t.elements.reference, + b = t.rects.popper, + v = t.elements[u ? g : h], + y = (function (t, e, i) { + var n = + "clippingParents" === e + ? (function (t) { + var e = Vt(At(t)), + i = + ["absolute", "fixed"].indexOf(yt(t).position) >= 0 && + ft(t) + ? Ot(t) + : t; + return ut(i) + ? e.filter(function (t) { + return ut(t) && vt(t, i) && "body" !== ht(t); + }) + : []; + })(t) + : [].concat(e), + s = [].concat(n, [i]), + o = s[0], + r = s.reduce( + function (e, i) { + var n = Xt(t, i); + return ( + (e.top = kt(n.top, e.top)), + (e.right = Lt(n.right, e.right)), + (e.bottom = Lt(n.bottom, e.bottom)), + (e.left = kt(n.left, e.left)), + e + ); + }, + Xt(t, o), + ); + return ( + (r.width = r.right - r.left), + (r.height = r.bottom - r.top), + (r.x = r.left), + (r.y = r.top), + r + ); + })(ut(v) ? v : v.contextElement || Et(t.elements.popper), r, l), + w = _t(_), + E = Qt({ reference: w, element: b, strategy: "absolute", placement: s }), + A = Kt(Object.assign({}, b, E)), + T = "popper" === h ? A : w, + O = { + top: y.top - T.top + m.top, + bottom: T.bottom - y.bottom + m.bottom, + left: y.left - T.left + m.left, + right: T.right - y.right + m.right, + }, + C = t.modifiersData.offset; + if ("popper" === h && C) { + var k = C[s]; + Object.keys(O).forEach(function (t) { + var e = [st, nt].indexOf(t) >= 0 ? 1 : -1, + i = [it, nt].indexOf(t) >= 0 ? "y" : "x"; + O[t] += k[i] * e; + }); + } + return O; + } + function Zt(t, e) { + void 0 === e && (e = {}); + var i = e, + n = i.placement, + s = i.boundary, + o = i.rootBoundary, + r = i.padding, + a = i.flipVariations, + l = i.allowedAutoPlacements, + c = void 0 === l ? lt : l, + h = Yt(n), + d = h + ? a + ? at + : at.filter(function (t) { + return Yt(t) === h; + }) + : rt, + u = d.filter(function (t) { + return c.indexOf(t) >= 0; + }); + 0 === u.length && (u = d); + var f = u.reduce(function (e, i) { + return ( + (e[i] = Gt(t, { + placement: i, + boundary: s, + rootBoundary: o, + padding: r, + })[gt(i)]), + e + ); + }, {}); + return Object.keys(f).sort(function (t, e) { + return f[t] - f[e]; + }); + } + var Jt = { + name: "flip", + enabled: !0, + phase: "main", + fn: function (t) { + var e = t.state, + i = t.options, + n = t.name; + if (!e.modifiersData[n]._skip) { + for ( + var s = i.mainAxis, + o = void 0 === s || s, + r = i.altAxis, + a = void 0 === r || r, + l = i.fallbackPlacements, + c = i.padding, + h = i.boundary, + d = i.rootBoundary, + u = i.altBoundary, + f = i.flipVariations, + p = void 0 === f || f, + m = i.allowedAutoPlacements, + g = e.options.placement, + _ = gt(g), + b = + l || + (_ !== g && p + ? (function (t) { + if ("auto" === gt(t)) return []; + var e = Wt(t); + return [zt(t), e, zt(e)]; + })(g) + : [Wt(g)]), + v = [g].concat(b).reduce(function (t, i) { + return t.concat( + "auto" === gt(i) + ? Zt(e, { + placement: i, + boundary: h, + rootBoundary: d, + padding: c, + flipVariations: p, + allowedAutoPlacements: m, + }) + : i, + ); + }, []), + y = e.rects.reference, + w = e.rects.popper, + E = new Map(), + A = !0, + T = v[0], + O = 0; + O < v.length; + O++ + ) { + var C = v[O], + k = gt(C), + L = "start" === Yt(C), + x = [it, nt].indexOf(k) >= 0, + D = x ? "width" : "height", + S = Gt(e, { + placement: C, + boundary: h, + rootBoundary: d, + altBoundary: u, + padding: c, + }), + I = x ? (L ? st : ot) : L ? nt : it; + y[D] > w[D] && (I = Wt(I)); + var N = Wt(I), + j = []; + if ( + (o && j.push(S[k] <= 0), + a && j.push(S[I] <= 0, S[N] <= 0), + j.every(function (t) { + return t; + })) + ) { + ((T = C), (A = !1)); + break; + } + E.set(C, j); + } + if (A) + for ( + var M = function (t) { + var e = v.find(function (e) { + var i = E.get(e); + if (i) + return i.slice(0, t).every(function (t) { + return t; + }); + }); + if (e) return ((T = e), "break"); + }, + P = p ? 3 : 1; + P > 0 && "break" !== M(P); + P-- + ); + e.placement !== T && + ((e.modifiersData[n]._skip = !0), (e.placement = T), (e.reset = !0)); + } + }, + requiresIfExists: ["offset"], + data: { _skip: !1 }, + }; + function te(t, e, i) { + return ( + void 0 === i && (i = { x: 0, y: 0 }), + { + top: t.top - e.height - i.y, + right: t.right - e.width + i.x, + bottom: t.bottom - e.height + i.y, + left: t.left - e.width - i.x, + } + ); + } + function ee(t) { + return [it, st, nt, ot].some(function (e) { + return t[e] >= 0; + }); + } + var ie = { + name: "hide", + enabled: !0, + phase: "main", + requiresIfExists: ["preventOverflow"], + fn: function (t) { + var e = t.state, + i = t.name, + n = e.rects.reference, + s = e.rects.popper, + o = e.modifiersData.preventOverflow, + r = Gt(e, { elementContext: "reference" }), + a = Gt(e, { altBoundary: !0 }), + l = te(r, n), + c = te(a, s, o), + h = ee(l), + d = ee(c); + ((e.modifiersData[i] = { + referenceClippingOffsets: l, + popperEscapeOffsets: c, + isReferenceHidden: h, + hasPopperEscaped: d, + }), + (e.attributes.popper = Object.assign({}, e.attributes.popper, { + "data-popper-reference-hidden": h, + "data-popper-escaped": d, + }))); + }, + }, + ne = { + name: "offset", + enabled: !0, + phase: "main", + requires: ["popperOffsets"], + fn: function (t) { + var e = t.state, + i = t.options, + n = t.name, + s = i.offset, + o = void 0 === s ? [0, 0] : s, + r = lt.reduce(function (t, i) { + return ( + (t[i] = (function (t, e, i) { + var n = gt(t), + s = [ot, it].indexOf(n) >= 0 ? -1 : 1, + o = + "function" == typeof i + ? i(Object.assign({}, e, { placement: t })) + : i, + r = o[0], + a = o[1]; + return ( + (r = r || 0), + (a = (a || 0) * s), + [ot, st].indexOf(n) >= 0 ? { x: a, y: r } : { x: r, y: a } + ); + })(i, e.rects, o)), + t + ); + }, {}), + a = r[e.placement], + l = a.x, + c = a.y; + (null != e.modifiersData.popperOffsets && + ((e.modifiersData.popperOffsets.x += l), + (e.modifiersData.popperOffsets.y += c)), + (e.modifiersData[n] = r)); + }, + }, + se = { + name: "popperOffsets", + enabled: !0, + phase: "read", + fn: function (t) { + var e = t.state, + i = t.name; + e.modifiersData[i] = Qt({ + reference: e.rects.reference, + element: e.rects.popper, + strategy: "absolute", + placement: e.placement, + }); + }, + data: {}, + }, + oe = { + name: "preventOverflow", + enabled: !0, + phase: "main", + fn: function (t) { + var e = t.state, + i = t.options, + n = t.name, + s = i.mainAxis, + o = void 0 === s || s, + r = i.altAxis, + a = void 0 !== r && r, + l = i.boundary, + c = i.rootBoundary, + h = i.altBoundary, + d = i.padding, + u = i.tether, + f = void 0 === u || u, + p = i.tetherOffset, + m = void 0 === p ? 0 : p, + g = Gt(e, { + boundary: l, + rootBoundary: c, + padding: d, + altBoundary: h, + }), + _ = gt(e.placement), + b = Yt(e.placement), + v = !b, + y = Ct(_), + w = "x" === y ? "y" : "x", + E = e.modifiersData.popperOffsets, + A = e.rects.reference, + T = e.rects.popper, + O = + "function" == typeof m + ? m(Object.assign({}, e.rects, { placement: e.placement })) + : m, + C = { x: 0, y: 0 }; + if (E) { + if (o || a) { + var k = "y" === y ? it : ot, + L = "y" === y ? nt : st, + x = "y" === y ? "height" : "width", + D = E[y], + S = E[y] + g[k], + I = E[y] - g[L], + N = f ? -T[x] / 2 : 0, + j = "start" === b ? A[x] : T[x], + M = "start" === b ? -T[x] : -A[x], + P = e.elements.arrow, + H = f && P ? bt(P) : { width: 0, height: 0 }, + R = e.modifiersData["arrow#persistent"] + ? e.modifiersData["arrow#persistent"].padding + : { top: 0, right: 0, bottom: 0, left: 0 }, + B = R[k], + W = R[L], + q = Dt(0, A[x], H[x]), + z = v ? A[x] / 2 - N - q - B - O : j - q - B - O, + $ = v ? -A[x] / 2 + N + q + W + O : M + q + W + O, + U = e.elements.arrow && Ot(e.elements.arrow), + F = U ? ("y" === y ? U.clientTop || 0 : U.clientLeft || 0) : 0, + V = e.modifiersData.offset + ? e.modifiersData.offset[e.placement][y] + : 0, + K = E[y] + z - V - F, + X = E[y] + $ - V; + if (o) { + var Y = Dt(f ? Lt(S, K) : S, D, f ? kt(I, X) : I); + ((E[y] = Y), (C[y] = Y - D)); + } + if (a) { + var Q = "x" === y ? it : ot, + G = "x" === y ? nt : st, + Z = E[w], + J = Z + g[Q], + tt = Z - g[G], + et = Dt(f ? Lt(J, K) : J, Z, f ? kt(tt, X) : tt); + ((E[w] = et), (C[w] = et - Z)); + } + } + e.modifiersData[n] = C; + } + }, + requiresIfExists: ["offset"], + }; + function re(t, e, i) { + void 0 === i && (i = !1); + var n, + s, + o = Et(e), + r = _t(t), + a = ft(e), + l = { scrollLeft: 0, scrollTop: 0 }, + c = { x: 0, y: 0 }; + return ( + (a || (!a && !i)) && + (("body" !== ht(e) || Ft(o)) && + (l = + (n = e) !== dt(n) && ft(n) + ? { scrollLeft: (s = n).scrollLeft, scrollTop: s.scrollTop } + : $t(n)), + ft(e) + ? (((c = _t(e)).x += e.clientLeft), (c.y += e.clientTop)) + : o && (c.x = Ut(o))), + { + x: r.left + l.scrollLeft - c.x, + y: r.top + l.scrollTop - c.y, + width: r.width, + height: r.height, + } + ); + } + var ae = { placement: "bottom", modifiers: [], strategy: "absolute" }; + function le() { + for (var t = arguments.length, e = new Array(t), i = 0; i < t; i++) + e[i] = arguments[i]; + return !e.some(function (t) { + return !(t && "function" == typeof t.getBoundingClientRect); + }); + } + function ce(t) { + void 0 === t && (t = {}); + var e = t, + i = e.defaultModifiers, + n = void 0 === i ? [] : i, + s = e.defaultOptions, + o = void 0 === s ? ae : s; + return function (t, e, i) { + void 0 === i && (i = o); + var s, + r, + a = { + placement: "bottom", + orderedModifiers: [], + options: Object.assign({}, ae, o), + modifiersData: {}, + elements: { reference: t, popper: e }, + attributes: {}, + styles: {}, + }, + l = [], + c = !1, + h = { + state: a, + setOptions: function (i) { + (d(), + (a.options = Object.assign({}, o, a.options, i)), + (a.scrollParents = { + reference: ut(t) + ? Vt(t) + : t.contextElement + ? Vt(t.contextElement) + : [], + popper: Vt(e), + })); + var s, + r, + c = (function (t) { + var e = (function (t) { + var e = new Map(), + i = new Set(), + n = []; + return ( + t.forEach(function (t) { + e.set(t.name, t); + }), + t.forEach(function (t) { + i.has(t.name) || + (function t(s) { + (i.add(s.name), + [] + .concat( + s.requires || [], + s.requiresIfExists || [], + ) + .forEach(function (n) { + if (!i.has(n)) { + var s = e.get(n); + s && t(s); + } + }), + n.push(s)); + })(t); + }), + n + ); + })(t); + return ct.reduce(function (t, i) { + return t.concat( + e.filter(function (t) { + return t.phase === i; + }), + ); + }, []); + })( + ((s = [].concat(n, a.options.modifiers)), + (r = s.reduce(function (t, e) { + var i = t[e.name]; + return ( + (t[e.name] = i + ? Object.assign({}, i, e, { + options: Object.assign({}, i.options, e.options), + data: Object.assign({}, i.data, e.data), + }) + : e), + t + ); + }, {})), + Object.keys(r).map(function (t) { + return r[t]; + })), + ); + return ( + (a.orderedModifiers = c.filter(function (t) { + return t.enabled; + })), + a.orderedModifiers.forEach(function (t) { + var e = t.name, + i = t.options, + n = void 0 === i ? {} : i, + s = t.effect; + if ("function" == typeof s) { + var o = s({ state: a, name: e, instance: h, options: n }); + l.push(o || function () {}); + } + }), + h.update() + ); + }, + forceUpdate: function () { + if (!c) { + var t = a.elements, + e = t.reference, + i = t.popper; + if (le(e, i)) { + ((a.rects = { + reference: re(e, Ot(i), "fixed" === a.options.strategy), + popper: bt(i), + }), + (a.reset = !1), + (a.placement = a.options.placement), + a.orderedModifiers.forEach(function (t) { + return (a.modifiersData[t.name] = Object.assign( + {}, + t.data, + )); + })); + for (var n = 0; n < a.orderedModifiers.length; n++) + if (!0 !== a.reset) { + var s = a.orderedModifiers[n], + o = s.fn, + r = s.options, + l = void 0 === r ? {} : r, + d = s.name; + "function" == typeof o && + (a = + o({ state: a, options: l, name: d, instance: h }) || a); + } else ((a.reset = !1), (n = -1)); + } + } + }, + update: + ((s = function () { + return new Promise(function (t) { + (h.forceUpdate(), t(a)); + }); + }), + function () { + return ( + r || + (r = new Promise(function (t) { + Promise.resolve().then(function () { + ((r = void 0), t(s())); + }); + })), + r + ); + }), + destroy: function () { + (d(), (c = !0)); + }, + }; + if (!le(t, e)) return h; + function d() { + (l.forEach(function (t) { + return t(); + }), + (l = [])); + } + return ( + h.setOptions(i).then(function (t) { + !c && i.onFirstUpdate && i.onFirstUpdate(t); + }), + h + ); + }; + } + var he = ce(), + de = ce({ defaultModifiers: [Rt, se, Pt, mt] }), + ue = ce({ defaultModifiers: [Rt, se, Pt, mt, ne, Jt, oe, Nt, ie] }), + fe = Object.freeze({ + __proto__: null, + popperGenerator: ce, + detectOverflow: Gt, + createPopperBase: he, + createPopper: ue, + createPopperLite: de, + top: it, + bottom: nt, + right: st, + left: ot, + auto: "auto", + basePlacements: rt, + start: "start", + end: "end", + clippingParents: "clippingParents", + viewport: "viewport", + popper: "popper", + reference: "reference", + variationPlacements: at, + placements: lt, + beforeRead: "beforeRead", + read: "read", + afterRead: "afterRead", + beforeMain: "beforeMain", + main: "main", + afterMain: "afterMain", + beforeWrite: "beforeWrite", + write: "write", + afterWrite: "afterWrite", + modifierPhases: ct, + applyStyles: mt, + arrow: Nt, + computeStyles: Pt, + eventListeners: Rt, + flip: Jt, + hide: ie, + offset: ne, + popperOffsets: se, + preventOverflow: oe, + }); + const pe = new RegExp("ArrowUp|ArrowDown|Escape"), + me = g() ? "top-end" : "top-start", + ge = g() ? "top-start" : "top-end", + _e = g() ? "bottom-end" : "bottom-start", + be = g() ? "bottom-start" : "bottom-end", + ve = g() ? "left-start" : "right-start", + ye = g() ? "right-start" : "left-start", + we = { + offset: [0, 2], + boundary: "clippingParents", + reference: "toggle", + display: "dynamic", + popperConfig: null, + autoClose: !0, + }, + Ee = { + offset: "(array|string|function)", + boundary: "(string|element)", + reference: "(string|element|object)", + display: "string", + popperConfig: "(null|object|function)", + autoClose: "(boolean|string)", + }; + class Ae extends B { + constructor(t, e) { + (super(t), + (this._popper = null), + (this._config = this._getConfig(e)), + (this._menu = this._getMenuElement()), + (this._inNavbar = this._detectNavbar()), + this._addEventListeners()); + } + static get Default() { + return we; + } + static get DefaultType() { + return Ee; + } + static get NAME() { + return "dropdown"; + } + toggle() { + h(this._element) || + (this._element.classList.contains("show") ? this.hide() : this.show()); + } + show() { + if (h(this._element) || this._menu.classList.contains("show")) return; + const t = Ae.getParentFromElement(this._element), + e = { relatedTarget: this._element }; + if (!P.trigger(this._element, "show.bs.dropdown", e).defaultPrevented) { + if (this._inNavbar) U.setDataAttribute(this._menu, "popper", "none"); + else { + if (void 0 === fe) + throw new TypeError( + "Bootstrap's dropdowns require Popper (https://popper.js.org)", + ); + let e = this._element; + "parent" === this._config.reference + ? (e = t) + : r(this._config.reference) + ? (e = a(this._config.reference)) + : "object" == typeof this._config.reference && + (e = this._config.reference); + const i = this._getPopperConfig(), + n = i.modifiers.find( + (t) => "applyStyles" === t.name && !1 === t.enabled, + ); + ((this._popper = ue(e, this._menu, i)), + n && U.setDataAttribute(this._menu, "popper", "static")); + } + ("ontouchstart" in document.documentElement && + !t.closest(".navbar-nav") && + [] + .concat(...document.body.children) + .forEach((t) => P.on(t, "mouseover", u)), + this._element.focus(), + this._element.setAttribute("aria-expanded", !0), + this._menu.classList.toggle("show"), + this._element.classList.toggle("show"), + P.trigger(this._element, "shown.bs.dropdown", e)); + } + } + hide() { + if (h(this._element) || !this._menu.classList.contains("show")) return; + const t = { relatedTarget: this._element }; + this._completeHide(t); + } + dispose() { + (this._popper && this._popper.destroy(), super.dispose()); + } + update() { + ((this._inNavbar = this._detectNavbar()), + this._popper && this._popper.update()); + } + _addEventListeners() { + P.on(this._element, "click.bs.dropdown", (t) => { + (t.preventDefault(), this.toggle()); + }); + } + _completeHide(t) { + P.trigger(this._element, "hide.bs.dropdown", t).defaultPrevented || + ("ontouchstart" in document.documentElement && + [] + .concat(...document.body.children) + .forEach((t) => P.off(t, "mouseover", u)), + this._popper && this._popper.destroy(), + this._menu.classList.remove("show"), + this._element.classList.remove("show"), + this._element.setAttribute("aria-expanded", "false"), + U.removeDataAttribute(this._menu, "popper"), + P.trigger(this._element, "hidden.bs.dropdown", t)); + } + _getConfig(t) { + if ( + ((t = { + ...this.constructor.Default, + ...U.getDataAttributes(this._element), + ...t, + }), + l("dropdown", t, this.constructor.DefaultType), + "object" == typeof t.reference && + !r(t.reference) && + "function" != typeof t.reference.getBoundingClientRect) + ) + throw new TypeError( + "dropdown".toUpperCase() + + ': Option "reference" provided type "object" without a required "getBoundingClientRect" method.', + ); + return t; + } + _getMenuElement() { + return t.next(this._element, ".dropdown-menu")[0]; + } + _getPlacement() { + const t = this._element.parentNode; + if (t.classList.contains("dropend")) return ve; + if (t.classList.contains("dropstart")) return ye; + const e = + "end" === + getComputedStyle(this._menu).getPropertyValue("--bs-position").trim(); + return t.classList.contains("dropup") ? (e ? ge : me) : e ? be : _e; + } + _detectNavbar() { + return null !== this._element.closest(".navbar"); + } + _getOffset() { + const { offset: t } = this._config; + return "string" == typeof t + ? t.split(",").map((t) => Number.parseInt(t, 10)) + : "function" == typeof t + ? (e) => t(e, this._element) + : t; + } + _getPopperConfig() { + const t = { + placement: this._getPlacement(), + modifiers: [ + { + name: "preventOverflow", + options: { boundary: this._config.boundary }, + }, + { name: "offset", options: { offset: this._getOffset() } }, + ], + }; + return ( + "static" === this._config.display && + (t.modifiers = [{ name: "applyStyles", enabled: !1 }]), + { + ...t, + ...("function" == typeof this._config.popperConfig + ? this._config.popperConfig(t) + : this._config.popperConfig), + } + ); + } + _selectMenuItem({ key: e, target: i }) { + const n = t + .find( + ".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)", + this._menu, + ) + .filter(c); + n.length && y(n, i, "ArrowDown" === e, !n.includes(i)).focus(); + } + static dropdownInterface(t, e) { + const i = Ae.getOrCreateInstance(t, e); + if ("string" == typeof e) { + if (void 0 === i[e]) throw new TypeError(`No method named "${e}"`); + i[e](); + } + } + static jQueryInterface(t) { + return this.each(function () { + Ae.dropdownInterface(this, t); + }); + } + static clearMenus(e) { + if (e && (2 === e.button || ("keyup" === e.type && "Tab" !== e.key))) + return; + const i = t.find('[data-bs-toggle="dropdown"]'); + for (let t = 0, n = i.length; t < n; t++) { + const n = Ae.getInstance(i[t]); + if (!n || !1 === n._config.autoClose) continue; + if (!n._element.classList.contains("show")) continue; + const s = { relatedTarget: n._element }; + if (e) { + const t = e.composedPath(), + i = t.includes(n._menu); + if ( + t.includes(n._element) || + ("inside" === n._config.autoClose && !i) || + ("outside" === n._config.autoClose && i) + ) + continue; + if ( + n._menu.contains(e.target) && + (("keyup" === e.type && "Tab" === e.key) || + /input|select|option|textarea|form/i.test(e.target.tagName)) + ) + continue; + "click" === e.type && (s.clickEvent = e); + } + n._completeHide(s); + } + } + static getParentFromElement(t) { + return s(t) || t.parentNode; + } + static dataApiKeydownHandler(e) { + if ( + /input|textarea/i.test(e.target.tagName) + ? "Space" === e.key || + ("Escape" !== e.key && + (("ArrowDown" !== e.key && "ArrowUp" !== e.key) || + e.target.closest(".dropdown-menu"))) + : !pe.test(e.key) + ) + return; + const i = this.classList.contains("show"); + if (!i && "Escape" === e.key) return; + if ((e.preventDefault(), e.stopPropagation(), h(this))) return; + const n = () => + this.matches('[data-bs-toggle="dropdown"]') + ? this + : t.prev(this, '[data-bs-toggle="dropdown"]')[0]; + return "Escape" === e.key + ? (n().focus(), void Ae.clearMenus()) + : "ArrowUp" === e.key || "ArrowDown" === e.key + ? (i || n().click(), void Ae.getInstance(n())._selectMenuItem(e)) + : void ((i && "Space" !== e.key) || Ae.clearMenus()); + } + } + (P.on( + document, + "keydown.bs.dropdown.data-api", + '[data-bs-toggle="dropdown"]', + Ae.dataApiKeydownHandler, + ), + P.on( + document, + "keydown.bs.dropdown.data-api", + ".dropdown-menu", + Ae.dataApiKeydownHandler, + ), + P.on(document, "click.bs.dropdown.data-api", Ae.clearMenus), + P.on(document, "keyup.bs.dropdown.data-api", Ae.clearMenus), + P.on( + document, + "click.bs.dropdown.data-api", + '[data-bs-toggle="dropdown"]', + function (t) { + (t.preventDefault(), Ae.dropdownInterface(this)); + }, + ), + _(Ae)); + class Te { + constructor() { + this._element = document.body; + } + getWidth() { + const t = document.documentElement.clientWidth; + return Math.abs(window.innerWidth - t); + } + hide() { + const t = this.getWidth(); + (this._disableOverFlow(), + this._setElementAttributes(this._element, "paddingRight", (e) => e + t), + this._setElementAttributes( + ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top", + "paddingRight", + (e) => e + t, + ), + this._setElementAttributes(".sticky-top", "marginRight", (e) => e - t)); + } + _disableOverFlow() { + (this._saveInitialAttribute(this._element, "overflow"), + (this._element.style.overflow = "hidden")); + } + _setElementAttributes(t, e, i) { + const n = this.getWidth(); + this._applyManipulationCallback(t, (t) => { + if (t !== this._element && window.innerWidth > t.clientWidth + n) + return; + this._saveInitialAttribute(t, e); + const s = window.getComputedStyle(t)[e]; + t.style[e] = i(Number.parseFloat(s)) + "px"; + }); + } + reset() { + (this._resetElementAttributes(this._element, "overflow"), + this._resetElementAttributes(this._element, "paddingRight"), + this._resetElementAttributes( + ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top", + "paddingRight", + ), + this._resetElementAttributes(".sticky-top", "marginRight")); + } + _saveInitialAttribute(t, e) { + const i = t.style[e]; + i && U.setDataAttribute(t, e, i); + } + _resetElementAttributes(t, e) { + this._applyManipulationCallback(t, (t) => { + const i = U.getDataAttribute(t, e); + void 0 === i + ? t.style.removeProperty(e) + : (U.removeDataAttribute(t, e), (t.style[e] = i)); + }); + } + _applyManipulationCallback(e, i) { + r(e) ? i(e) : t.find(e, this._element).forEach(i); + } + isOverflowing() { + return this.getWidth() > 0; + } + } + const Oe = { + isVisible: !0, + isAnimated: !1, + rootElement: "body", + clickCallback: null, + }, + Ce = { + isVisible: "boolean", + isAnimated: "boolean", + rootElement: "(element|string)", + clickCallback: "(function|null)", + }; + class ke { + constructor(t) { + ((this._config = this._getConfig(t)), + (this._isAppended = !1), + (this._element = null)); + } + show(t) { + this._config.isVisible + ? (this._append(), + this._config.isAnimated && f(this._getElement()), + this._getElement().classList.add("show"), + this._emulateAnimation(() => { + b(t); + })) + : b(t); + } + hide(t) { + this._config.isVisible + ? (this._getElement().classList.remove("show"), + this._emulateAnimation(() => { + (this.dispose(), b(t)); + })) + : b(t); + } + _getElement() { + if (!this._element) { + const t = document.createElement("div"); + ((t.className = "modal-backdrop"), + this._config.isAnimated && t.classList.add("fade"), + (this._element = t)); + } + return this._element; + } + _getConfig(t) { + return ( + ((t = { ...Oe, ...("object" == typeof t ? t : {}) }).rootElement = a( + t.rootElement, + )), + l("backdrop", t, Ce), + t + ); + } + _append() { + this._isAppended || + (this._config.rootElement.appendChild(this._getElement()), + P.on(this._getElement(), "mousedown.bs.backdrop", () => { + b(this._config.clickCallback); + }), + (this._isAppended = !0)); + } + dispose() { + this._isAppended && + (P.off(this._element, "mousedown.bs.backdrop"), + this._element.remove(), + (this._isAppended = !1)); + } + _emulateAnimation(t) { + v(t, this._getElement(), this._config.isAnimated); + } + } + const Le = { backdrop: !0, keyboard: !0, focus: !0 }, + xe = { + backdrop: "(boolean|string)", + keyboard: "boolean", + focus: "boolean", + }; + class De extends B { + constructor(e, i) { + (super(e), + (this._config = this._getConfig(i)), + (this._dialog = t.findOne(".modal-dialog", this._element)), + (this._backdrop = this._initializeBackDrop()), + (this._isShown = !1), + (this._ignoreBackdropClick = !1), + (this._isTransitioning = !1), + (this._scrollBar = new Te())); + } + static get Default() { + return Le; + } + static get NAME() { + return "modal"; + } + toggle(t) { + return this._isShown ? this.hide() : this.show(t); + } + show(t) { + this._isShown || + this._isTransitioning || + P.trigger(this._element, "show.bs.modal", { relatedTarget: t }) + .defaultPrevented || + ((this._isShown = !0), + this._isAnimated() && (this._isTransitioning = !0), + this._scrollBar.hide(), + document.body.classList.add("modal-open"), + this._adjustDialog(), + this._setEscapeEvent(), + this._setResizeEvent(), + P.on( + this._element, + "click.dismiss.bs.modal", + '[data-bs-dismiss="modal"]', + (t) => this.hide(t), + ), + P.on(this._dialog, "mousedown.dismiss.bs.modal", () => { + P.one(this._element, "mouseup.dismiss.bs.modal", (t) => { + t.target === this._element && (this._ignoreBackdropClick = !0); + }); + }), + this._showBackdrop(() => this._showElement(t))); + } + hide(t) { + if ( + (t && ["A", "AREA"].includes(t.target.tagName) && t.preventDefault(), + !this._isShown || this._isTransitioning) + ) + return; + if (P.trigger(this._element, "hide.bs.modal").defaultPrevented) return; + this._isShown = !1; + const e = this._isAnimated(); + (e && (this._isTransitioning = !0), + this._setEscapeEvent(), + this._setResizeEvent(), + P.off(document, "focusin.bs.modal"), + this._element.classList.remove("show"), + P.off(this._element, "click.dismiss.bs.modal"), + P.off(this._dialog, "mousedown.dismiss.bs.modal"), + this._queueCallback(() => this._hideModal(), this._element, e)); + } + dispose() { + ([window, this._dialog].forEach((t) => P.off(t, ".bs.modal")), + this._backdrop.dispose(), + super.dispose(), + P.off(document, "focusin.bs.modal")); + } + handleUpdate() { + this._adjustDialog(); + } + _initializeBackDrop() { + return new ke({ + isVisible: Boolean(this._config.backdrop), + isAnimated: this._isAnimated(), + }); + } + _getConfig(t) { + return ( + (t = { + ...Le, + ...U.getDataAttributes(this._element), + ...("object" == typeof t ? t : {}), + }), + l("modal", t, xe), + t + ); + } + _showElement(e) { + const i = this._isAnimated(), + n = t.findOne(".modal-body", this._dialog); + ((this._element.parentNode && + this._element.parentNode.nodeType === Node.ELEMENT_NODE) || + document.body.appendChild(this._element), + (this._element.style.display = "block"), + this._element.removeAttribute("aria-hidden"), + this._element.setAttribute("aria-modal", !0), + this._element.setAttribute("role", "dialog"), + (this._element.scrollTop = 0), + n && (n.scrollTop = 0), + i && f(this._element), + this._element.classList.add("show"), + this._config.focus && this._enforceFocus(), + this._queueCallback( + () => { + (this._config.focus && this._element.focus(), + (this._isTransitioning = !1), + P.trigger(this._element, "shown.bs.modal", { relatedTarget: e })); + }, + this._dialog, + i, + )); + } + _enforceFocus() { + (P.off(document, "focusin.bs.modal"), + P.on(document, "focusin.bs.modal", (t) => { + document === t.target || + this._element === t.target || + this._element.contains(t.target) || + this._element.focus(); + })); + } + _setEscapeEvent() { + this._isShown + ? P.on(this._element, "keydown.dismiss.bs.modal", (t) => { + this._config.keyboard && "Escape" === t.key + ? (t.preventDefault(), this.hide()) + : this._config.keyboard || + "Escape" !== t.key || + this._triggerBackdropTransition(); + }) + : P.off(this._element, "keydown.dismiss.bs.modal"); + } + _setResizeEvent() { + this._isShown + ? P.on(window, "resize.bs.modal", () => this._adjustDialog()) + : P.off(window, "resize.bs.modal"); + } + _hideModal() { + ((this._element.style.display = "none"), + this._element.setAttribute("aria-hidden", !0), + this._element.removeAttribute("aria-modal"), + this._element.removeAttribute("role"), + (this._isTransitioning = !1), + this._backdrop.hide(() => { + (document.body.classList.remove("modal-open"), + this._resetAdjustments(), + this._scrollBar.reset(), + P.trigger(this._element, "hidden.bs.modal")); + })); + } + _showBackdrop(t) { + (P.on(this._element, "click.dismiss.bs.modal", (t) => { + this._ignoreBackdropClick + ? (this._ignoreBackdropClick = !1) + : t.target === t.currentTarget && + (!0 === this._config.backdrop + ? this.hide() + : "static" === this._config.backdrop && + this._triggerBackdropTransition()); + }), + this._backdrop.show(t)); + } + _isAnimated() { + return this._element.classList.contains("fade"); + } + _triggerBackdropTransition() { + if (P.trigger(this._element, "hidePrevented.bs.modal").defaultPrevented) + return; + const { classList: t, scrollHeight: e, style: i } = this._element, + n = e > document.documentElement.clientHeight; + (!n && "hidden" === i.overflowY) || + t.contains("modal-static") || + (n || (i.overflowY = "hidden"), + t.add("modal-static"), + this._queueCallback(() => { + (t.remove("modal-static"), + n || + this._queueCallback(() => { + i.overflowY = ""; + }, this._dialog)); + }, this._dialog), + this._element.focus()); + } + _adjustDialog() { + const t = + this._element.scrollHeight > document.documentElement.clientHeight, + e = this._scrollBar.getWidth(), + i = e > 0; + (((!i && t && !g()) || (i && !t && g())) && + (this._element.style.paddingLeft = e + "px"), + ((i && !t && !g()) || (!i && t && g())) && + (this._element.style.paddingRight = e + "px")); + } + _resetAdjustments() { + ((this._element.style.paddingLeft = ""), + (this._element.style.paddingRight = "")); + } + static jQueryInterface(t, e) { + return this.each(function () { + const i = De.getOrCreateInstance(this, t); + if ("string" == typeof t) { + if (void 0 === i[t]) throw new TypeError(`No method named "${t}"`); + i[t](e); + } + }); + } + } + (P.on( + document, + "click.bs.modal.data-api", + '[data-bs-toggle="modal"]', + function (t) { + const e = s(this); + (["A", "AREA"].includes(this.tagName) && t.preventDefault(), + P.one(e, "show.bs.modal", (t) => { + t.defaultPrevented || + P.one(e, "hidden.bs.modal", () => { + c(this) && this.focus(); + }); + }), + De.getOrCreateInstance(e).toggle(this)); + }, + ), + _(De)); + const Se = { backdrop: !0, keyboard: !0, scroll: !1 }, + Ie = { backdrop: "boolean", keyboard: "boolean", scroll: "boolean" }; + class Ne extends B { + constructor(t, e) { + (super(t), + (this._config = this._getConfig(e)), + (this._isShown = !1), + (this._backdrop = this._initializeBackDrop()), + this._addEventListeners()); + } + static get NAME() { + return "offcanvas"; + } + static get Default() { + return Se; + } + toggle(t) { + return this._isShown ? this.hide() : this.show(t); + } + show(t) { + this._isShown || + P.trigger(this._element, "show.bs.offcanvas", { relatedTarget: t }) + .defaultPrevented || + ((this._isShown = !0), + (this._element.style.visibility = "visible"), + this._backdrop.show(), + this._config.scroll || + (new Te().hide(), this._enforceFocusOnElement(this._element)), + this._element.removeAttribute("aria-hidden"), + this._element.setAttribute("aria-modal", !0), + this._element.setAttribute("role", "dialog"), + this._element.classList.add("show"), + this._queueCallback( + () => { + P.trigger(this._element, "shown.bs.offcanvas", { + relatedTarget: t, + }); + }, + this._element, + !0, + )); + } + hide() { + this._isShown && + (P.trigger(this._element, "hide.bs.offcanvas").defaultPrevented || + (P.off(document, "focusin.bs.offcanvas"), + this._element.blur(), + (this._isShown = !1), + this._element.classList.remove("show"), + this._backdrop.hide(), + this._queueCallback( + () => { + (this._element.setAttribute("aria-hidden", !0), + this._element.removeAttribute("aria-modal"), + this._element.removeAttribute("role"), + (this._element.style.visibility = "hidden"), + this._config.scroll || new Te().reset(), + P.trigger(this._element, "hidden.bs.offcanvas")); + }, + this._element, + !0, + ))); + } + dispose() { + (this._backdrop.dispose(), + super.dispose(), + P.off(document, "focusin.bs.offcanvas")); + } + _getConfig(t) { + return ( + (t = { + ...Se, + ...U.getDataAttributes(this._element), + ...("object" == typeof t ? t : {}), + }), + l("offcanvas", t, Ie), + t + ); + } + _initializeBackDrop() { + return new ke({ + isVisible: this._config.backdrop, + isAnimated: !0, + rootElement: this._element.parentNode, + clickCallback: () => this.hide(), + }); + } + _enforceFocusOnElement(t) { + (P.off(document, "focusin.bs.offcanvas"), + P.on(document, "focusin.bs.offcanvas", (e) => { + document === e.target || + t === e.target || + t.contains(e.target) || + t.focus(); + }), + t.focus()); + } + _addEventListeners() { + (P.on( + this._element, + "click.dismiss.bs.offcanvas", + '[data-bs-dismiss="offcanvas"]', + () => this.hide(), + ), + P.on(this._element, "keydown.dismiss.bs.offcanvas", (t) => { + this._config.keyboard && "Escape" === t.key && this.hide(); + })); + } + static jQueryInterface(t) { + return this.each(function () { + const e = Ne.getOrCreateInstance(this, t); + if ("string" == typeof t) { + if (void 0 === e[t] || t.startsWith("_") || "constructor" === t) + throw new TypeError(`No method named "${t}"`); + e[t](this); + } + }); + } + } + (P.on( + document, + "click.bs.offcanvas.data-api", + '[data-bs-toggle="offcanvas"]', + function (e) { + const i = s(this); + if ((["A", "AREA"].includes(this.tagName) && e.preventDefault(), h(this))) + return; + P.one(i, "hidden.bs.offcanvas", () => { + c(this) && this.focus(); + }); + const n = t.findOne(".offcanvas.show"); + (n && n !== i && Ne.getInstance(n).hide(), + Ne.getOrCreateInstance(i).toggle(this)); + }, + ), + P.on(window, "load.bs.offcanvas.data-api", () => + t + .find(".offcanvas.show") + .forEach((t) => Ne.getOrCreateInstance(t).show()), + ), + _(Ne)); + const je = new Set([ + "background", + "cite", + "href", + "itemtype", + "longdesc", + "poster", + "src", + "xlink:href", + ]), + Me = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i, + Pe = + /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i, + He = (t, e) => { + const i = t.nodeName.toLowerCase(); + if (e.includes(i)) + return ( + !je.has(i) || Boolean(Me.test(t.nodeValue) || Pe.test(t.nodeValue)) + ); + const n = e.filter((t) => t instanceof RegExp); + for (let t = 0, e = n.length; t < e; t++) if (n[t].test(i)) return !0; + return !1; + }; + function Re(t, e, i) { + if (!t.length) return t; + if (i && "function" == typeof i) return i(t); + const n = new window.DOMParser().parseFromString(t, "text/html"), + s = Object.keys(e), + o = [].concat(...n.body.querySelectorAll("*")); + for (let t = 0, i = o.length; t < i; t++) { + const i = o[t], + n = i.nodeName.toLowerCase(); + if (!s.includes(n)) { + i.remove(); + continue; + } + const r = [].concat(...i.attributes), + a = [].concat(e["*"] || [], e[n] || []); + r.forEach((t) => { + He(t, a) || i.removeAttribute(t.nodeName); + }); + } + return n.body.innerHTML; + } + const Be = new RegExp("(^|\\s)bs-tooltip\\S+", "g"), + We = new Set(["sanitize", "allowList", "sanitizeFn"]), + qe = { + animation: "boolean", + template: "string", + title: "(string|element|function)", + trigger: "string", + delay: "(number|object)", + html: "boolean", + selector: "(string|boolean)", + placement: "(string|function)", + offset: "(array|string|function)", + container: "(string|element|boolean)", + fallbackPlacements: "array", + boundary: "(string|element)", + customClass: "(string|function)", + sanitize: "boolean", + sanitizeFn: "(null|function)", + allowList: "object", + popperConfig: "(null|object|function)", + }, + ze = { + AUTO: "auto", + TOP: "top", + RIGHT: g() ? "left" : "right", + BOTTOM: "bottom", + LEFT: g() ? "right" : "left", + }, + $e = { + animation: !0, + template: + '', + trigger: "hover focus", + title: "", + delay: 0, + html: !1, + selector: !1, + placement: "top", + offset: [0, 0], + container: !1, + fallbackPlacements: ["top", "right", "bottom", "left"], + boundary: "clippingParents", + customClass: "", + sanitize: !0, + sanitizeFn: null, + allowList: { + "*": ["class", "dir", "id", "lang", "role", /^aria-[\w-]*$/i], + a: ["target", "href", "title", "rel"], + area: [], + b: [], + br: [], + col: [], + code: [], + div: [], + em: [], + hr: [], + h1: [], + h2: [], + h3: [], + h4: [], + h5: [], + h6: [], + i: [], + img: ["src", "srcset", "alt", "title", "width", "height"], + li: [], + ol: [], + p: [], + pre: [], + s: [], + small: [], + span: [], + sub: [], + sup: [], + strong: [], + u: [], + ul: [], + }, + popperConfig: null, + }, + Ue = { + HIDE: "hide.bs.tooltip", + HIDDEN: "hidden.bs.tooltip", + SHOW: "show.bs.tooltip", + SHOWN: "shown.bs.tooltip", + INSERTED: "inserted.bs.tooltip", + CLICK: "click.bs.tooltip", + FOCUSIN: "focusin.bs.tooltip", + FOCUSOUT: "focusout.bs.tooltip", + MOUSEENTER: "mouseenter.bs.tooltip", + MOUSELEAVE: "mouseleave.bs.tooltip", + }; + class Fe extends B { + constructor(t, e) { + if (void 0 === fe) + throw new TypeError( + "Bootstrap's tooltips require Popper (https://popper.js.org)", + ); + (super(t), + (this._isEnabled = !0), + (this._timeout = 0), + (this._hoverState = ""), + (this._activeTrigger = {}), + (this._popper = null), + (this._config = this._getConfig(e)), + (this.tip = null), + this._setListeners()); + } + static get Default() { + return $e; + } + static get NAME() { + return "tooltip"; + } + static get Event() { + return Ue; + } + static get DefaultType() { + return qe; + } + enable() { + this._isEnabled = !0; + } + disable() { + this._isEnabled = !1; + } + toggleEnabled() { + this._isEnabled = !this._isEnabled; + } + toggle(t) { + if (this._isEnabled) + if (t) { + const e = this._initializeOnDelegatedTarget(t); + ((e._activeTrigger.click = !e._activeTrigger.click), + e._isWithActiveTrigger() ? e._enter(null, e) : e._leave(null, e)); + } else { + if (this.getTipElement().classList.contains("show")) + return void this._leave(null, this); + this._enter(null, this); + } + } + dispose() { + (clearTimeout(this._timeout), + P.off( + this._element.closest(".modal"), + "hide.bs.modal", + this._hideModalHandler, + ), + this.tip && this.tip.remove(), + this._popper && this._popper.destroy(), + super.dispose()); + } + show() { + if ("none" === this._element.style.display) + throw new Error("Please use show on visible elements"); + if (!this.isWithContent() || !this._isEnabled) return; + const t = P.trigger(this._element, this.constructor.Event.SHOW), + i = d(this._element), + n = + null === i + ? this._element.ownerDocument.documentElement.contains( + this._element, + ) + : i.contains(this._element); + if (t.defaultPrevented || !n) return; + const s = this.getTipElement(), + o = e(this.constructor.NAME); + (s.setAttribute("id", o), + this._element.setAttribute("aria-describedby", o), + this.setContent(), + this._config.animation && s.classList.add("fade")); + const r = + "function" == typeof this._config.placement + ? this._config.placement.call(this, s, this._element) + : this._config.placement, + a = this._getAttachment(r); + this._addAttachmentClass(a); + const { container: l } = this._config; + (R.set(s, this.constructor.DATA_KEY, this), + this._element.ownerDocument.documentElement.contains(this.tip) || + (l.appendChild(s), + P.trigger(this._element, this.constructor.Event.INSERTED)), + this._popper + ? this._popper.update() + : (this._popper = ue(this._element, s, this._getPopperConfig(a))), + s.classList.add("show")); + const c = + "function" == typeof this._config.customClass + ? this._config.customClass() + : this._config.customClass; + (c && s.classList.add(...c.split(" ")), + "ontouchstart" in document.documentElement && + [].concat(...document.body.children).forEach((t) => { + P.on(t, "mouseover", u); + })); + const h = this.tip.classList.contains("fade"); + this._queueCallback( + () => { + const t = this._hoverState; + ((this._hoverState = null), + P.trigger(this._element, this.constructor.Event.SHOWN), + "out" === t && this._leave(null, this)); + }, + this.tip, + h, + ); + } + hide() { + if (!this._popper) return; + const t = this.getTipElement(); + if ( + P.trigger(this._element, this.constructor.Event.HIDE).defaultPrevented + ) + return; + (t.classList.remove("show"), + "ontouchstart" in document.documentElement && + [] + .concat(...document.body.children) + .forEach((t) => P.off(t, "mouseover", u)), + (this._activeTrigger.click = !1), + (this._activeTrigger.focus = !1), + (this._activeTrigger.hover = !1)); + const e = this.tip.classList.contains("fade"); + (this._queueCallback( + () => { + this._isWithActiveTrigger() || + ("show" !== this._hoverState && t.remove(), + this._cleanTipClass(), + this._element.removeAttribute("aria-describedby"), + P.trigger(this._element, this.constructor.Event.HIDDEN), + this._popper && (this._popper.destroy(), (this._popper = null))); + }, + this.tip, + e, + ), + (this._hoverState = "")); + } + update() { + null !== this._popper && this._popper.update(); + } + isWithContent() { + return Boolean(this.getTitle()); + } + getTipElement() { + if (this.tip) return this.tip; + const t = document.createElement("div"); + return ( + (t.innerHTML = this._config.template), + (this.tip = t.children[0]), + this.tip + ); + } + setContent() { + const e = this.getTipElement(); + (this.setElementContent(t.findOne(".tooltip-inner", e), this.getTitle()), + e.classList.remove("fade", "show")); + } + setElementContent(t, e) { + if (null !== t) + return r(e) + ? ((e = a(e)), + void (this._config.html + ? e.parentNode !== t && ((t.innerHTML = ""), t.appendChild(e)) + : (t.textContent = e.textContent))) + : void (this._config.html + ? (this._config.sanitize && + (e = Re(e, this._config.allowList, this._config.sanitizeFn)), + (t.innerHTML = e)) + : (t.textContent = e)); + } + getTitle() { + let t = this._element.getAttribute("data-bs-original-title"); + return ( + t || + (t = + "function" == typeof this._config.title + ? this._config.title.call(this._element) + : this._config.title), + t + ); + } + updateAttachment(t) { + return "right" === t ? "end" : "left" === t ? "start" : t; + } + _initializeOnDelegatedTarget(t, e) { + const i = this.constructor.DATA_KEY; + return ( + (e = e || R.get(t.delegateTarget, i)) || + ((e = new this.constructor( + t.delegateTarget, + this._getDelegateConfig(), + )), + R.set(t.delegateTarget, i, e)), + e + ); + } + _getOffset() { + const { offset: t } = this._config; + return "string" == typeof t + ? t.split(",").map((t) => Number.parseInt(t, 10)) + : "function" == typeof t + ? (e) => t(e, this._element) + : t; + } + _getPopperConfig(t) { + const e = { + placement: t, + modifiers: [ + { + name: "flip", + options: { fallbackPlacements: this._config.fallbackPlacements }, + }, + { name: "offset", options: { offset: this._getOffset() } }, + { + name: "preventOverflow", + options: { boundary: this._config.boundary }, + }, + { + name: "arrow", + options: { element: `.${this.constructor.NAME}-arrow` }, + }, + { + name: "onChange", + enabled: !0, + phase: "afterWrite", + fn: (t) => this._handlePopperPlacementChange(t), + }, + ], + onFirstUpdate: (t) => { + t.options.placement !== t.placement && + this._handlePopperPlacementChange(t); + }, + }; + return { + ...e, + ...("function" == typeof this._config.popperConfig + ? this._config.popperConfig(e) + : this._config.popperConfig), + }; + } + _addAttachmentClass(t) { + this.getTipElement().classList.add( + "bs-tooltip-" + this.updateAttachment(t), + ); + } + _getAttachment(t) { + return ze[t.toUpperCase()]; + } + _setListeners() { + (this._config.trigger.split(" ").forEach((t) => { + if ("click" === t) + P.on( + this._element, + this.constructor.Event.CLICK, + this._config.selector, + (t) => this.toggle(t), + ); + else if ("manual" !== t) { + const e = + "hover" === t + ? this.constructor.Event.MOUSEENTER + : this.constructor.Event.FOCUSIN, + i = + "hover" === t + ? this.constructor.Event.MOUSELEAVE + : this.constructor.Event.FOCUSOUT; + (P.on(this._element, e, this._config.selector, (t) => this._enter(t)), + P.on(this._element, i, this._config.selector, (t) => + this._leave(t), + )); + } + }), + (this._hideModalHandler = () => { + this._element && this.hide(); + }), + P.on( + this._element.closest(".modal"), + "hide.bs.modal", + this._hideModalHandler, + ), + this._config.selector + ? (this._config = { + ...this._config, + trigger: "manual", + selector: "", + }) + : this._fixTitle()); + } + _fixTitle() { + const t = this._element.getAttribute("title"), + e = typeof this._element.getAttribute("data-bs-original-title"); + (t || "string" !== e) && + (this._element.setAttribute("data-bs-original-title", t || ""), + !t || + this._element.getAttribute("aria-label") || + this._element.textContent || + this._element.setAttribute("aria-label", t), + this._element.setAttribute("title", "")); + } + _enter(t, e) { + ((e = this._initializeOnDelegatedTarget(t, e)), + t && (e._activeTrigger["focusin" === t.type ? "focus" : "hover"] = !0), + e.getTipElement().classList.contains("show") || "show" === e._hoverState + ? (e._hoverState = "show") + : (clearTimeout(e._timeout), + (e._hoverState = "show"), + e._config.delay && e._config.delay.show + ? (e._timeout = setTimeout(() => { + "show" === e._hoverState && e.show(); + }, e._config.delay.show)) + : e.show())); + } + _leave(t, e) { + ((e = this._initializeOnDelegatedTarget(t, e)), + t && + (e._activeTrigger["focusout" === t.type ? "focus" : "hover"] = + e._element.contains(t.relatedTarget)), + e._isWithActiveTrigger() || + (clearTimeout(e._timeout), + (e._hoverState = "out"), + e._config.delay && e._config.delay.hide + ? (e._timeout = setTimeout(() => { + "out" === e._hoverState && e.hide(); + }, e._config.delay.hide)) + : e.hide())); + } + _isWithActiveTrigger() { + for (const t in this._activeTrigger) + if (this._activeTrigger[t]) return !0; + return !1; + } + _getConfig(t) { + const e = U.getDataAttributes(this._element); + return ( + Object.keys(e).forEach((t) => { + We.has(t) && delete e[t]; + }), + ((t = { + ...this.constructor.Default, + ...e, + ...("object" == typeof t && t ? t : {}), + }).container = !1 === t.container ? document.body : a(t.container)), + "number" == typeof t.delay && + (t.delay = { show: t.delay, hide: t.delay }), + "number" == typeof t.title && (t.title = t.title.toString()), + "number" == typeof t.content && (t.content = t.content.toString()), + l("tooltip", t, this.constructor.DefaultType), + t.sanitize && (t.template = Re(t.template, t.allowList, t.sanitizeFn)), + t + ); + } + _getDelegateConfig() { + const t = {}; + if (this._config) + for (const e in this._config) + this.constructor.Default[e] !== this._config[e] && + (t[e] = this._config[e]); + return t; + } + _cleanTipClass() { + const t = this.getTipElement(), + e = t.getAttribute("class").match(Be); + null !== e && + e.length > 0 && + e.map((t) => t.trim()).forEach((e) => t.classList.remove(e)); + } + _handlePopperPlacementChange(t) { + const { state: e } = t; + e && + ((this.tip = e.elements.popper), + this._cleanTipClass(), + this._addAttachmentClass(this._getAttachment(e.placement))); + } + static jQueryInterface(t) { + return this.each(function () { + const e = Fe.getOrCreateInstance(this, t); + if ("string" == typeof t) { + if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`); + e[t](); + } + }); + } + } + _(Fe); + const Ve = new RegExp("(^|\\s)bs-popover\\S+", "g"), + Ke = { + ...Fe.Default, + placement: "right", + offset: [0, 8], + trigger: "click", + content: "", + template: + '', + }, + Xe = { ...Fe.DefaultType, content: "(string|element|function)" }, + Ye = { + HIDE: "hide.bs.popover", + HIDDEN: "hidden.bs.popover", + SHOW: "show.bs.popover", + SHOWN: "shown.bs.popover", + INSERTED: "inserted.bs.popover", + CLICK: "click.bs.popover", + FOCUSIN: "focusin.bs.popover", + FOCUSOUT: "focusout.bs.popover", + MOUSEENTER: "mouseenter.bs.popover", + MOUSELEAVE: "mouseleave.bs.popover", + }; + class Qe extends Fe { + static get Default() { + return Ke; + } + static get NAME() { + return "popover"; + } + static get Event() { + return Ye; + } + static get DefaultType() { + return Xe; + } + isWithContent() { + return this.getTitle() || this._getContent(); + } + getTipElement() { + return ( + this.tip || + ((this.tip = super.getTipElement()), + this.getTitle() || t.findOne(".popover-header", this.tip).remove(), + this._getContent() || t.findOne(".popover-body", this.tip).remove()), + this.tip + ); + } + setContent() { + const e = this.getTipElement(); + this.setElementContent(t.findOne(".popover-header", e), this.getTitle()); + let i = this._getContent(); + ("function" == typeof i && (i = i.call(this._element)), + this.setElementContent(t.findOne(".popover-body", e), i), + e.classList.remove("fade", "show")); + } + _addAttachmentClass(t) { + this.getTipElement().classList.add( + "bs-popover-" + this.updateAttachment(t), + ); + } + _getContent() { + return ( + this._element.getAttribute("data-bs-content") || this._config.content + ); + } + _cleanTipClass() { + const t = this.getTipElement(), + e = t.getAttribute("class").match(Ve); + null !== e && + e.length > 0 && + e.map((t) => t.trim()).forEach((e) => t.classList.remove(e)); + } + static jQueryInterface(t) { + return this.each(function () { + const e = Qe.getOrCreateInstance(this, t); + if ("string" == typeof t) { + if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`); + e[t](); + } + }); + } + } + _(Qe); + const Ge = { offset: 10, method: "auto", target: "" }, + Ze = { offset: "number", method: "string", target: "(string|element)" }; + class Je extends B { + constructor(t, e) { + (super(t), + (this._scrollElement = + "BODY" === this._element.tagName ? window : this._element), + (this._config = this._getConfig(e)), + (this._selector = `${this._config.target} .nav-link, ${this._config.target} .list-group-item, ${this._config.target} .dropdown-item`), + (this._offsets = []), + (this._targets = []), + (this._activeTarget = null), + (this._scrollHeight = 0), + P.on(this._scrollElement, "scroll.bs.scrollspy", () => this._process()), + this.refresh(), + this._process()); + } + static get Default() { + return Ge; + } + static get NAME() { + return "scrollspy"; + } + refresh() { + const e = + this._scrollElement === this._scrollElement.window + ? "offset" + : "position", + i = "auto" === this._config.method ? e : this._config.method, + s = "position" === i ? this._getScrollTop() : 0; + ((this._offsets = []), + (this._targets = []), + (this._scrollHeight = this._getScrollHeight()), + t + .find(this._selector) + .map((e) => { + const o = n(e), + r = o ? t.findOne(o) : null; + if (r) { + const t = r.getBoundingClientRect(); + if (t.width || t.height) return [U[i](r).top + s, o]; + } + return null; + }) + .filter((t) => t) + .sort((t, e) => t[0] - e[0]) + .forEach((t) => { + (this._offsets.push(t[0]), this._targets.push(t[1])); + })); + } + dispose() { + (P.off(this._scrollElement, ".bs.scrollspy"), super.dispose()); + } + _getConfig(t) { + if ( + "string" != + typeof (t = { + ...Ge, + ...U.getDataAttributes(this._element), + ...("object" == typeof t && t ? t : {}), + }).target && + r(t.target) + ) { + let { id: i } = t.target; + (i || ((i = e("scrollspy")), (t.target.id = i)), (t.target = "#" + i)); + } + return (l("scrollspy", t, Ze), t); + } + _getScrollTop() { + return this._scrollElement === window + ? this._scrollElement.pageYOffset + : this._scrollElement.scrollTop; + } + _getScrollHeight() { + return ( + this._scrollElement.scrollHeight || + Math.max( + document.body.scrollHeight, + document.documentElement.scrollHeight, + ) + ); + } + _getOffsetHeight() { + return this._scrollElement === window + ? window.innerHeight + : this._scrollElement.getBoundingClientRect().height; + } + _process() { + const t = this._getScrollTop() + this._config.offset, + e = this._getScrollHeight(), + i = this._config.offset + e - this._getOffsetHeight(); + if ((this._scrollHeight !== e && this.refresh(), t >= i)) { + const t = this._targets[this._targets.length - 1]; + this._activeTarget !== t && this._activate(t); + } else { + if (this._activeTarget && t < this._offsets[0] && this._offsets[0] > 0) + return ((this._activeTarget = null), void this._clear()); + for (let e = this._offsets.length; e--; ) + this._activeTarget !== this._targets[e] && + t >= this._offsets[e] && + (void 0 === this._offsets[e + 1] || t < this._offsets[e + 1]) && + this._activate(this._targets[e]); + } + } + _activate(e) { + ((this._activeTarget = e), this._clear()); + const i = this._selector + .split(",") + .map((t) => `${t}[data-bs-target="${e}"],${t}[href="${e}"]`), + n = t.findOne(i.join(",")); + (n.classList.contains("dropdown-item") + ? (t + .findOne(".dropdown-toggle", n.closest(".dropdown")) + .classList.add("active"), + n.classList.add("active")) + : (n.classList.add("active"), + t.parents(n, ".nav, .list-group").forEach((e) => { + (t + .prev(e, ".nav-link, .list-group-item") + .forEach((t) => t.classList.add("active")), + t.prev(e, ".nav-item").forEach((e) => { + t.children(e, ".nav-link").forEach((t) => + t.classList.add("active"), + ); + })); + })), + P.trigger(this._scrollElement, "activate.bs.scrollspy", { + relatedTarget: e, + })); + } + _clear() { + t.find(this._selector) + .filter((t) => t.classList.contains("active")) + .forEach((t) => t.classList.remove("active")); + } + static jQueryInterface(t) { + return this.each(function () { + const e = Je.getOrCreateInstance(this, t); + if ("string" == typeof t) { + if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`); + e[t](); + } + }); + } + } + (P.on(window, "load.bs.scrollspy.data-api", () => { + t.find('[data-bs-spy="scroll"]').forEach((t) => new Je(t)); + }), + _(Je)); + class ti extends B { + static get NAME() { + return "tab"; + } + show() { + if ( + this._element.parentNode && + this._element.parentNode.nodeType === Node.ELEMENT_NODE && + this._element.classList.contains("active") + ) + return; + let e; + const i = s(this._element), + n = this._element.closest(".nav, .list-group"); + if (n) { + const i = + "UL" === n.nodeName || "OL" === n.nodeName + ? ":scope > li > .active" + : ".active"; + ((e = t.find(i, n)), (e = e[e.length - 1])); + } + const o = e + ? P.trigger(e, "hide.bs.tab", { relatedTarget: this._element }) + : null; + if ( + P.trigger(this._element, "show.bs.tab", { relatedTarget: e }) + .defaultPrevented || + (null !== o && o.defaultPrevented) + ) + return; + this._activate(this._element, n); + const r = () => { + (P.trigger(e, "hidden.bs.tab", { relatedTarget: this._element }), + P.trigger(this._element, "shown.bs.tab", { relatedTarget: e })); + }; + i ? this._activate(i, i.parentNode, r) : r(); + } + _activate(e, i, n) { + const s = ( + !i || ("UL" !== i.nodeName && "OL" !== i.nodeName) + ? t.children(i, ".active") + : t.find(":scope > li > .active", i) + )[0], + o = n && s && s.classList.contains("fade"), + r = () => this._transitionComplete(e, s, n); + s && o + ? (s.classList.remove("show"), this._queueCallback(r, e, !0)) + : r(); + } + _transitionComplete(e, i, n) { + if (i) { + i.classList.remove("active"); + const e = t.findOne(":scope > .dropdown-menu .active", i.parentNode); + (e && e.classList.remove("active"), + "tab" === i.getAttribute("role") && + i.setAttribute("aria-selected", !1)); + } + (e.classList.add("active"), + "tab" === e.getAttribute("role") && e.setAttribute("aria-selected", !0), + f(e), + e.classList.contains("fade") && e.classList.add("show")); + let s = e.parentNode; + if ( + (s && "LI" === s.nodeName && (s = s.parentNode), + s && s.classList.contains("dropdown-menu")) + ) { + const i = e.closest(".dropdown"); + (i && + t + .find(".dropdown-toggle", i) + .forEach((t) => t.classList.add("active")), + e.setAttribute("aria-expanded", !0)); + } + n && n(); + } + static jQueryInterface(t) { + return this.each(function () { + const e = ti.getOrCreateInstance(this); + if ("string" == typeof t) { + if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`); + e[t](); + } + }); + } + } + (P.on( + document, + "click.bs.tab.data-api", + '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]', + function (t) { + (["A", "AREA"].includes(this.tagName) && t.preventDefault(), + h(this) || ti.getOrCreateInstance(this).show()); + }, + ), + _(ti)); + const ei = { animation: "boolean", autohide: "boolean", delay: "number" }, + ii = { animation: !0, autohide: !0, delay: 5e3 }; + class ni extends B { + constructor(t, e) { + (super(t), + (this._config = this._getConfig(e)), + (this._timeout = null), + (this._hasMouseInteraction = !1), + (this._hasKeyboardInteraction = !1), + this._setListeners()); + } + static get DefaultType() { + return ei; + } + static get Default() { + return ii; + } + static get NAME() { + return "toast"; + } + show() { + P.trigger(this._element, "show.bs.toast").defaultPrevented || + (this._clearTimeout(), + this._config.animation && this._element.classList.add("fade"), + this._element.classList.remove("hide"), + f(this._element), + this._element.classList.add("showing"), + this._queueCallback( + () => { + (this._element.classList.remove("showing"), + this._element.classList.add("show"), + P.trigger(this._element, "shown.bs.toast"), + this._maybeScheduleHide()); + }, + this._element, + this._config.animation, + )); + } + hide() { + this._element.classList.contains("show") && + (P.trigger(this._element, "hide.bs.toast").defaultPrevented || + (this._element.classList.remove("show"), + this._queueCallback( + () => { + (this._element.classList.add("hide"), + P.trigger(this._element, "hidden.bs.toast")); + }, + this._element, + this._config.animation, + ))); + } + dispose() { + (this._clearTimeout(), + this._element.classList.contains("show") && + this._element.classList.remove("show"), + super.dispose()); + } + _getConfig(t) { + return ( + (t = { + ...ii, + ...U.getDataAttributes(this._element), + ...("object" == typeof t && t ? t : {}), + }), + l("toast", t, this.constructor.DefaultType), + t + ); + } + _maybeScheduleHide() { + this._config.autohide && + (this._hasMouseInteraction || + this._hasKeyboardInteraction || + (this._timeout = setTimeout(() => { + this.hide(); + }, this._config.delay))); + } + _onInteraction(t, e) { + switch (t.type) { + case "mouseover": + case "mouseout": + this._hasMouseInteraction = e; + break; + case "focusin": + case "focusout": + this._hasKeyboardInteraction = e; + } + if (e) return void this._clearTimeout(); + const i = t.relatedTarget; + this._element === i || + this._element.contains(i) || + this._maybeScheduleHide(); + } + _setListeners() { + (P.on( + this._element, + "click.dismiss.bs.toast", + '[data-bs-dismiss="toast"]', + () => this.hide(), + ), + P.on(this._element, "mouseover.bs.toast", (t) => + this._onInteraction(t, !0), + ), + P.on(this._element, "mouseout.bs.toast", (t) => + this._onInteraction(t, !1), + ), + P.on(this._element, "focusin.bs.toast", (t) => + this._onInteraction(t, !0), + ), + P.on(this._element, "focusout.bs.toast", (t) => + this._onInteraction(t, !1), + )); + } + _clearTimeout() { + (clearTimeout(this._timeout), (this._timeout = null)); + } + static jQueryInterface(t) { + return this.each(function () { + const e = ni.getOrCreateInstance(this, t); + if ("string" == typeof t) { + if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`); + e[t](this); + } + }); + } + } + return ( + _(ni), + { + Alert: W, + Button: q, + Carousel: Z, + Collapse: et, + Dropdown: Ae, + Modal: De, + Offcanvas: Ne, + Popover: Qe, + ScrollSpy: Je, + Tab: ti, + Toast: ni, + Tooltip: Fe, + } + ); +}); +//# sourceMappingURL=bootstrap.bundle.min.js.map diff --git a/static/vendor/js/bootstrap.min.js b/static/vendor/js/bootstrap.min.js new file mode 100644 index 00000000..d9c6a337 --- /dev/null +++ b/static/vendor/js/bootstrap.min.js @@ -0,0 +1,2892 @@ +/*! + * Bootstrap v5.0.2 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!(function (t, e) { + "object" == typeof exports && "undefined" != typeof module + ? (module.exports = e(require("@popperjs/core"))) + : "function" == typeof define && define.amd + ? define(["@popperjs/core"], e) + : ((t = + "undefined" != typeof globalThis ? globalThis : t || self).bootstrap = + e(t.Popper)); +})(this, function (t) { + "use strict"; + function e(t) { + if (t && t.__esModule) return t; + var e = Object.create(null); + return ( + t && + Object.keys(t).forEach(function (s) { + if ("default" !== s) { + var i = Object.getOwnPropertyDescriptor(t, s); + Object.defineProperty( + e, + s, + i.get + ? i + : { + enumerable: !0, + get: function () { + return t[s]; + }, + }, + ); + } + }), + (e.default = t), + Object.freeze(e) + ); + } + var s = e(t); + const i = { + find: (t, e = document.documentElement) => + [].concat(...Element.prototype.querySelectorAll.call(e, t)), + findOne: (t, e = document.documentElement) => + Element.prototype.querySelector.call(e, t), + children: (t, e) => [].concat(...t.children).filter((t) => t.matches(e)), + parents(t, e) { + const s = []; + let i = t.parentNode; + for (; i && i.nodeType === Node.ELEMENT_NODE && 3 !== i.nodeType; ) + (i.matches(e) && s.push(i), (i = i.parentNode)); + return s; + }, + prev(t, e) { + let s = t.previousElementSibling; + for (; s; ) { + if (s.matches(e)) return [s]; + s = s.previousElementSibling; + } + return []; + }, + next(t, e) { + let s = t.nextElementSibling; + for (; s; ) { + if (s.matches(e)) return [s]; + s = s.nextElementSibling; + } + return []; + }, + }, + n = (t) => { + do { + t += Math.floor(1e6 * Math.random()); + } while (document.getElementById(t)); + return t; + }, + o = (t) => { + let e = t.getAttribute("data-bs-target"); + if (!e || "#" === e) { + let s = t.getAttribute("href"); + if (!s || (!s.includes("#") && !s.startsWith("."))) return null; + (s.includes("#") && !s.startsWith("#") && (s = "#" + s.split("#")[1]), + (e = s && "#" !== s ? s.trim() : null)); + } + return e; + }, + r = (t) => { + const e = o(t); + return e && document.querySelector(e) ? e : null; + }, + a = (t) => { + const e = o(t); + return e ? document.querySelector(e) : null; + }, + l = (t) => { + t.dispatchEvent(new Event("transitionend")); + }, + c = (t) => + !(!t || "object" != typeof t) && + (void 0 !== t.jquery && (t = t[0]), void 0 !== t.nodeType), + h = (t) => + c(t) + ? t.jquery + ? t[0] + : t + : "string" == typeof t && t.length > 0 + ? i.findOne(t) + : null, + d = (t, e, s) => { + Object.keys(s).forEach((i) => { + const n = s[i], + o = e[i], + r = + o && c(o) + ? "element" + : null == (a = o) + ? "" + a + : {}.toString + .call(a) + .match(/\s([a-z]+)/i)[1] + .toLowerCase(); + var a; + if (!new RegExp(n).test(r)) + throw new TypeError( + `${t.toUpperCase()}: Option "${i}" provided type "${r}" but expected type "${n}".`, + ); + }); + }, + u = (t) => + !(!c(t) || 0 === t.getClientRects().length) && + "visible" === getComputedStyle(t).getPropertyValue("visibility"), + g = (t) => + !t || + t.nodeType !== Node.ELEMENT_NODE || + !!t.classList.contains("disabled") || + (void 0 !== t.disabled + ? t.disabled + : t.hasAttribute("disabled") && "false" !== t.getAttribute("disabled")), + p = (t) => { + if (!document.documentElement.attachShadow) return null; + if ("function" == typeof t.getRootNode) { + const e = t.getRootNode(); + return e instanceof ShadowRoot ? e : null; + } + return t instanceof ShadowRoot + ? t + : t.parentNode + ? p(t.parentNode) + : null; + }, + f = () => {}, + m = (t) => t.offsetHeight, + _ = () => { + const { jQuery: t } = window; + return t && !document.body.hasAttribute("data-bs-no-jquery") ? t : null; + }, + b = [], + v = () => "rtl" === document.documentElement.dir, + y = (t) => { + var e; + ((e = () => { + const e = _(); + if (e) { + const s = t.NAME, + i = e.fn[s]; + ((e.fn[s] = t.jQueryInterface), + (e.fn[s].Constructor = t), + (e.fn[s].noConflict = () => ((e.fn[s] = i), t.jQueryInterface))); + } + }), + "loading" === document.readyState + ? (b.length || + document.addEventListener("DOMContentLoaded", () => { + b.forEach((t) => t()); + }), + b.push(e)) + : e()); + }, + w = (t) => { + "function" == typeof t && t(); + }, + E = (t, e, s = !0) => { + if (!s) return void w(t); + const i = + ((t) => { + if (!t) return 0; + let { transitionDuration: e, transitionDelay: s } = + window.getComputedStyle(t); + const i = Number.parseFloat(e), + n = Number.parseFloat(s); + return i || n + ? ((e = e.split(",")[0]), + (s = s.split(",")[0]), + 1e3 * (Number.parseFloat(e) + Number.parseFloat(s))) + : 0; + })(e) + 5; + let n = !1; + const o = ({ target: s }) => { + s === e && ((n = !0), e.removeEventListener("transitionend", o), w(t)); + }; + (e.addEventListener("transitionend", o), + setTimeout(() => { + n || l(e); + }, i)); + }, + A = (t, e, s, i) => { + let n = t.indexOf(e); + if (-1 === n) return t[!s && i ? t.length - 1 : 0]; + const o = t.length; + return ( + (n += s ? 1 : -1), + i && (n = (n + o) % o), + t[Math.max(0, Math.min(n, o - 1))] + ); + }, + T = /[^.]*(?=\..*)\.|.*/, + C = /\..*/, + k = /::\d+$/, + L = {}; + let O = 1; + const D = { mouseenter: "mouseover", mouseleave: "mouseout" }, + I = /^(mouseenter|mouseleave)/i, + N = new Set([ + "click", + "dblclick", + "mouseup", + "mousedown", + "contextmenu", + "mousewheel", + "DOMMouseScroll", + "mouseover", + "mouseout", + "mousemove", + "selectstart", + "selectend", + "keydown", + "keypress", + "keyup", + "orientationchange", + "touchstart", + "touchmove", + "touchend", + "touchcancel", + "pointerdown", + "pointermove", + "pointerup", + "pointerleave", + "pointercancel", + "gesturestart", + "gesturechange", + "gestureend", + "focus", + "blur", + "change", + "reset", + "select", + "submit", + "focusin", + "focusout", + "load", + "unload", + "beforeunload", + "resize", + "move", + "DOMContentLoaded", + "readystatechange", + "error", + "abort", + "scroll", + ]); + function S(t, e) { + return (e && `${e}::${O++}`) || t.uidEvent || O++; + } + function x(t) { + const e = S(t); + return ((t.uidEvent = e), (L[e] = L[e] || {}), L[e]); + } + function M(t, e, s = null) { + const i = Object.keys(t); + for (let n = 0, o = i.length; n < o; n++) { + const o = t[i[n]]; + if (o.originalHandler === e && o.delegationSelector === s) return o; + } + return null; + } + function P(t, e, s) { + const i = "string" == typeof e, + n = i ? s : e; + let o = R(t); + return (N.has(o) || (o = t), [i, n, o]); + } + function j(t, e, s, i, n) { + if ("string" != typeof e || !t) return; + if ((s || ((s = i), (i = null)), I.test(e))) { + const t = (t) => + function (e) { + if ( + !e.relatedTarget || + (e.relatedTarget !== e.delegateTarget && + !e.delegateTarget.contains(e.relatedTarget)) + ) + return t.call(this, e); + }; + i ? (i = t(i)) : (s = t(s)); + } + const [o, r, a] = P(e, s, i), + l = x(t), + c = l[a] || (l[a] = {}), + h = M(c, r, o ? s : null); + if (h) return void (h.oneOff = h.oneOff && n); + const d = S(r, e.replace(T, "")), + u = o + ? (function (t, e, s) { + return function i(n) { + const o = t.querySelectorAll(e); + for (let { target: r } = n; r && r !== this; r = r.parentNode) + for (let a = o.length; a--; ) + if (o[a] === r) + return ( + (n.delegateTarget = r), + i.oneOff && B.off(t, n.type, e, s), + s.apply(r, [n]) + ); + return null; + }; + })(t, s, i) + : (function (t, e) { + return function s(i) { + return ( + (i.delegateTarget = t), + s.oneOff && B.off(t, i.type, e), + e.apply(t, [i]) + ); + }; + })(t, s); + ((u.delegationSelector = o ? s : null), + (u.originalHandler = r), + (u.oneOff = n), + (u.uidEvent = d), + (c[d] = u), + t.addEventListener(a, u, o)); + } + function H(t, e, s, i, n) { + const o = M(e[s], i, n); + o && (t.removeEventListener(s, o, Boolean(n)), delete e[s][o.uidEvent]); + } + function R(t) { + return ((t = t.replace(C, "")), D[t] || t); + } + const B = { + on(t, e, s, i) { + j(t, e, s, i, !1); + }, + one(t, e, s, i) { + j(t, e, s, i, !0); + }, + off(t, e, s, i) { + if ("string" != typeof e || !t) return; + const [n, o, r] = P(e, s, i), + a = r !== e, + l = x(t), + c = e.startsWith("."); + if (void 0 !== o) { + if (!l || !l[r]) return; + return void H(t, l, r, o, n ? s : null); + } + c && + Object.keys(l).forEach((s) => { + !(function (t, e, s, i) { + const n = e[s] || {}; + Object.keys(n).forEach((o) => { + if (o.includes(i)) { + const i = n[o]; + H(t, e, s, i.originalHandler, i.delegationSelector); + } + }); + })(t, l, s, e.slice(1)); + }); + const h = l[r] || {}; + Object.keys(h).forEach((s) => { + const i = s.replace(k, ""); + if (!a || e.includes(i)) { + const e = h[s]; + H(t, l, r, e.originalHandler, e.delegationSelector); + } + }); + }, + trigger(t, e, s) { + if ("string" != typeof e || !t) return null; + const i = _(), + n = R(e), + o = e !== n, + r = N.has(n); + let a, + l = !0, + c = !0, + h = !1, + d = null; + return ( + o && + i && + ((a = i.Event(e, s)), + i(t).trigger(a), + (l = !a.isPropagationStopped()), + (c = !a.isImmediatePropagationStopped()), + (h = a.isDefaultPrevented())), + r + ? ((d = document.createEvent("HTMLEvents")), d.initEvent(n, l, !0)) + : (d = new CustomEvent(e, { bubbles: l, cancelable: !0 })), + void 0 !== s && + Object.keys(s).forEach((t) => { + Object.defineProperty(d, t, { get: () => s[t] }); + }), + h && d.preventDefault(), + c && t.dispatchEvent(d), + d.defaultPrevented && void 0 !== a && a.preventDefault(), + d + ); + }, + }, + $ = new Map(); + var W = { + set(t, e, s) { + $.has(t) || $.set(t, new Map()); + const i = $.get(t); + i.has(e) || 0 === i.size + ? i.set(e, s) + : console.error( + `Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(i.keys())[0]}.`, + ); + }, + get: (t, e) => ($.has(t) && $.get(t).get(e)) || null, + remove(t, e) { + if (!$.has(t)) return; + const s = $.get(t); + (s.delete(e), 0 === s.size && $.delete(t)); + }, + }; + class q { + constructor(t) { + (t = h(t)) && + ((this._element = t), + W.set(this._element, this.constructor.DATA_KEY, this)); + } + dispose() { + (W.remove(this._element, this.constructor.DATA_KEY), + B.off(this._element, this.constructor.EVENT_KEY), + Object.getOwnPropertyNames(this).forEach((t) => { + this[t] = null; + })); + } + _queueCallback(t, e, s = !0) { + E(t, e, s); + } + static getInstance(t) { + return W.get(t, this.DATA_KEY); + } + static getOrCreateInstance(t, e = {}) { + return ( + this.getInstance(t) || new this(t, "object" == typeof e ? e : null) + ); + } + static get VERSION() { + return "5.0.2"; + } + static get NAME() { + throw new Error( + 'You have to implement the static method "NAME", for each component!', + ); + } + static get DATA_KEY() { + return "bs." + this.NAME; + } + static get EVENT_KEY() { + return "." + this.DATA_KEY; + } + } + class z extends q { + static get NAME() { + return "alert"; + } + close(t) { + const e = t ? this._getRootElement(t) : this._element, + s = this._triggerCloseEvent(e); + null === s || s.defaultPrevented || this._removeElement(e); + } + _getRootElement(t) { + return a(t) || t.closest(".alert"); + } + _triggerCloseEvent(t) { + return B.trigger(t, "close.bs.alert"); + } + _removeElement(t) { + t.classList.remove("show"); + const e = t.classList.contains("fade"); + this._queueCallback(() => this._destroyElement(t), t, e); + } + _destroyElement(t) { + (t.remove(), B.trigger(t, "closed.bs.alert")); + } + static jQueryInterface(t) { + return this.each(function () { + const e = z.getOrCreateInstance(this); + "close" === t && e[t](this); + }); + } + static handleDismiss(t) { + return function (e) { + (e && e.preventDefault(), t.close(this)); + }; + } + } + (B.on( + document, + "click.bs.alert.data-api", + '[data-bs-dismiss="alert"]', + z.handleDismiss(new z()), + ), + y(z)); + class F extends q { + static get NAME() { + return "button"; + } + toggle() { + this._element.setAttribute( + "aria-pressed", + this._element.classList.toggle("active"), + ); + } + static jQueryInterface(t) { + return this.each(function () { + const e = F.getOrCreateInstance(this); + "toggle" === t && e[t](); + }); + } + } + function U(t) { + return ( + "true" === t || + ("false" !== t && + (t === Number(t).toString() + ? Number(t) + : "" === t || "null" === t + ? null + : t)) + ); + } + function K(t) { + return t.replace(/[A-Z]/g, (t) => "-" + t.toLowerCase()); + } + (B.on( + document, + "click.bs.button.data-api", + '[data-bs-toggle="button"]', + (t) => { + t.preventDefault(); + const e = t.target.closest('[data-bs-toggle="button"]'); + F.getOrCreateInstance(e).toggle(); + }, + ), + y(F)); + const V = { + setDataAttribute(t, e, s) { + t.setAttribute("data-bs-" + K(e), s); + }, + removeDataAttribute(t, e) { + t.removeAttribute("data-bs-" + K(e)); + }, + getDataAttributes(t) { + if (!t) return {}; + const e = {}; + return ( + Object.keys(t.dataset) + .filter((t) => t.startsWith("bs")) + .forEach((s) => { + let i = s.replace(/^bs/, ""); + ((i = i.charAt(0).toLowerCase() + i.slice(1, i.length)), + (e[i] = U(t.dataset[s]))); + }), + e + ); + }, + getDataAttribute: (t, e) => U(t.getAttribute("data-bs-" + K(e))), + offset(t) { + const e = t.getBoundingClientRect(); + return { + top: e.top + document.body.scrollTop, + left: e.left + document.body.scrollLeft, + }; + }, + position: (t) => ({ top: t.offsetTop, left: t.offsetLeft }), + }, + Q = { + interval: 5e3, + keyboard: !0, + slide: !1, + pause: "hover", + wrap: !0, + touch: !0, + }, + X = { + interval: "(number|boolean)", + keyboard: "boolean", + slide: "(boolean|string)", + pause: "(string|boolean)", + wrap: "boolean", + touch: "boolean", + }, + Y = "next", + G = "prev", + Z = "left", + J = "right", + tt = { ArrowLeft: J, ArrowRight: Z }; + class et extends q { + constructor(t, e) { + (super(t), + (this._items = null), + (this._interval = null), + (this._activeElement = null), + (this._isPaused = !1), + (this._isSliding = !1), + (this.touchTimeout = null), + (this.touchStartX = 0), + (this.touchDeltaX = 0), + (this._config = this._getConfig(e)), + (this._indicatorsElement = i.findOne( + ".carousel-indicators", + this._element, + )), + (this._touchSupported = + "ontouchstart" in document.documentElement || + navigator.maxTouchPoints > 0), + (this._pointerEvent = Boolean(window.PointerEvent)), + this._addEventListeners()); + } + static get Default() { + return Q; + } + static get NAME() { + return "carousel"; + } + next() { + this._slide(Y); + } + nextWhenVisible() { + !document.hidden && u(this._element) && this.next(); + } + prev() { + this._slide(G); + } + pause(t) { + (t || (this._isPaused = !0), + i.findOne(".carousel-item-next, .carousel-item-prev", this._element) && + (l(this._element), this.cycle(!0)), + clearInterval(this._interval), + (this._interval = null)); + } + cycle(t) { + (t || (this._isPaused = !1), + this._interval && + (clearInterval(this._interval), (this._interval = null)), + this._config && + this._config.interval && + !this._isPaused && + (this._updateInterval(), + (this._interval = setInterval( + (document.visibilityState ? this.nextWhenVisible : this.next).bind( + this, + ), + this._config.interval, + )))); + } + to(t) { + this._activeElement = i.findOne(".active.carousel-item", this._element); + const e = this._getItemIndex(this._activeElement); + if (t > this._items.length - 1 || t < 0) return; + if (this._isSliding) + return void B.one(this._element, "slid.bs.carousel", () => this.to(t)); + if (e === t) return (this.pause(), void this.cycle()); + const s = t > e ? Y : G; + this._slide(s, this._items[t]); + } + _getConfig(t) { + return ( + (t = { + ...Q, + ...V.getDataAttributes(this._element), + ...("object" == typeof t ? t : {}), + }), + d("carousel", t, X), + t + ); + } + _handleSwipe() { + const t = Math.abs(this.touchDeltaX); + if (t <= 40) return; + const e = t / this.touchDeltaX; + ((this.touchDeltaX = 0), e && this._slide(e > 0 ? J : Z)); + } + _addEventListeners() { + (this._config.keyboard && + B.on(this._element, "keydown.bs.carousel", (t) => this._keydown(t)), + "hover" === this._config.pause && + (B.on(this._element, "mouseenter.bs.carousel", (t) => this.pause(t)), + B.on(this._element, "mouseleave.bs.carousel", (t) => this.cycle(t))), + this._config.touch && + this._touchSupported && + this._addTouchEventListeners()); + } + _addTouchEventListeners() { + const t = (t) => { + !this._pointerEvent || + ("pen" !== t.pointerType && "touch" !== t.pointerType) + ? this._pointerEvent || (this.touchStartX = t.touches[0].clientX) + : (this.touchStartX = t.clientX); + }, + e = (t) => { + this.touchDeltaX = + t.touches && t.touches.length > 1 + ? 0 + : t.touches[0].clientX - this.touchStartX; + }, + s = (t) => { + (!this._pointerEvent || + ("pen" !== t.pointerType && "touch" !== t.pointerType) || + (this.touchDeltaX = t.clientX - this.touchStartX), + this._handleSwipe(), + "hover" === this._config.pause && + (this.pause(), + this.touchTimeout && clearTimeout(this.touchTimeout), + (this.touchTimeout = setTimeout( + (t) => this.cycle(t), + 500 + this._config.interval, + )))); + }; + (i.find(".carousel-item img", this._element).forEach((t) => { + B.on(t, "dragstart.bs.carousel", (t) => t.preventDefault()); + }), + this._pointerEvent + ? (B.on(this._element, "pointerdown.bs.carousel", (e) => t(e)), + B.on(this._element, "pointerup.bs.carousel", (t) => s(t)), + this._element.classList.add("pointer-event")) + : (B.on(this._element, "touchstart.bs.carousel", (e) => t(e)), + B.on(this._element, "touchmove.bs.carousel", (t) => e(t)), + B.on(this._element, "touchend.bs.carousel", (t) => s(t)))); + } + _keydown(t) { + if (/input|textarea/i.test(t.target.tagName)) return; + const e = tt[t.key]; + e && (t.preventDefault(), this._slide(e)); + } + _getItemIndex(t) { + return ( + (this._items = + t && t.parentNode ? i.find(".carousel-item", t.parentNode) : []), + this._items.indexOf(t) + ); + } + _getItemByOrder(t, e) { + const s = t === Y; + return A(this._items, e, s, this._config.wrap); + } + _triggerSlideEvent(t, e) { + const s = this._getItemIndex(t), + n = this._getItemIndex( + i.findOne(".active.carousel-item", this._element), + ); + return B.trigger(this._element, "slide.bs.carousel", { + relatedTarget: t, + direction: e, + from: n, + to: s, + }); + } + _setActiveIndicatorElement(t) { + if (this._indicatorsElement) { + const e = i.findOne(".active", this._indicatorsElement); + (e.classList.remove("active"), e.removeAttribute("aria-current")); + const s = i.find("[data-bs-target]", this._indicatorsElement); + for (let e = 0; e < s.length; e++) + if ( + Number.parseInt(s[e].getAttribute("data-bs-slide-to"), 10) === + this._getItemIndex(t) + ) { + (s[e].classList.add("active"), + s[e].setAttribute("aria-current", "true")); + break; + } + } + } + _updateInterval() { + const t = + this._activeElement || + i.findOne(".active.carousel-item", this._element); + if (!t) return; + const e = Number.parseInt(t.getAttribute("data-bs-interval"), 10); + e + ? ((this._config.defaultInterval = + this._config.defaultInterval || this._config.interval), + (this._config.interval = e)) + : (this._config.interval = + this._config.defaultInterval || this._config.interval); + } + _slide(t, e) { + const s = this._directionToOrder(t), + n = i.findOne(".active.carousel-item", this._element), + o = this._getItemIndex(n), + r = e || this._getItemByOrder(s, n), + a = this._getItemIndex(r), + l = Boolean(this._interval), + c = s === Y, + h = c ? "carousel-item-start" : "carousel-item-end", + d = c ? "carousel-item-next" : "carousel-item-prev", + u = this._orderToDirection(s); + if (r && r.classList.contains("active")) + return void (this._isSliding = !1); + if (this._isSliding) return; + if (this._triggerSlideEvent(r, u).defaultPrevented) return; + if (!n || !r) return; + ((this._isSliding = !0), + l && this.pause(), + this._setActiveIndicatorElement(r), + (this._activeElement = r)); + const g = () => { + B.trigger(this._element, "slid.bs.carousel", { + relatedTarget: r, + direction: u, + from: o, + to: a, + }); + }; + if (this._element.classList.contains("slide")) { + (r.classList.add(d), m(r), n.classList.add(h), r.classList.add(h)); + const t = () => { + (r.classList.remove(h, d), + r.classList.add("active"), + n.classList.remove("active", d, h), + (this._isSliding = !1), + setTimeout(g, 0)); + }; + this._queueCallback(t, n, !0); + } else + (n.classList.remove("active"), + r.classList.add("active"), + (this._isSliding = !1), + g()); + l && this.cycle(); + } + _directionToOrder(t) { + return [J, Z].includes(t) + ? v() + ? t === Z + ? G + : Y + : t === Z + ? Y + : G + : t; + } + _orderToDirection(t) { + return [Y, G].includes(t) + ? v() + ? t === G + ? Z + : J + : t === G + ? J + : Z + : t; + } + static carouselInterface(t, e) { + const s = et.getOrCreateInstance(t, e); + let { _config: i } = s; + "object" == typeof e && (i = { ...i, ...e }); + const n = "string" == typeof e ? e : i.slide; + if ("number" == typeof e) s.to(e); + else if ("string" == typeof n) { + if (void 0 === s[n]) throw new TypeError(`No method named "${n}"`); + s[n](); + } else i.interval && i.ride && (s.pause(), s.cycle()); + } + static jQueryInterface(t) { + return this.each(function () { + et.carouselInterface(this, t); + }); + } + static dataApiClickHandler(t) { + const e = a(this); + if (!e || !e.classList.contains("carousel")) return; + const s = { ...V.getDataAttributes(e), ...V.getDataAttributes(this) }, + i = this.getAttribute("data-bs-slide-to"); + (i && (s.interval = !1), + et.carouselInterface(e, s), + i && et.getInstance(e).to(i), + t.preventDefault()); + } + } + (B.on( + document, + "click.bs.carousel.data-api", + "[data-bs-slide], [data-bs-slide-to]", + et.dataApiClickHandler, + ), + B.on(window, "load.bs.carousel.data-api", () => { + const t = i.find('[data-bs-ride="carousel"]'); + for (let e = 0, s = t.length; e < s; e++) + et.carouselInterface(t[e], et.getInstance(t[e])); + }), + y(et)); + const st = { toggle: !0, parent: "" }, + it = { toggle: "boolean", parent: "(string|element)" }; + class nt extends q { + constructor(t, e) { + (super(t), + (this._isTransitioning = !1), + (this._config = this._getConfig(e)), + (this._triggerArray = i.find( + `[data-bs-toggle="collapse"][href="#${this._element.id}"],[data-bs-toggle="collapse"][data-bs-target="#${this._element.id}"]`, + ))); + const s = i.find('[data-bs-toggle="collapse"]'); + for (let t = 0, e = s.length; t < e; t++) { + const e = s[t], + n = r(e), + o = i.find(n).filter((t) => t === this._element); + null !== n && + o.length && + ((this._selector = n), this._triggerArray.push(e)); + } + ((this._parent = this._config.parent ? this._getParent() : null), + this._config.parent || + this._addAriaAndCollapsedClass(this._element, this._triggerArray), + this._config.toggle && this.toggle()); + } + static get Default() { + return st; + } + static get NAME() { + return "collapse"; + } + toggle() { + this._element.classList.contains("show") ? this.hide() : this.show(); + } + show() { + if (this._isTransitioning || this._element.classList.contains("show")) + return; + let t, e; + this._parent && + ((t = i + .find(".show, .collapsing", this._parent) + .filter((t) => + "string" == typeof this._config.parent + ? t.getAttribute("data-bs-parent") === this._config.parent + : t.classList.contains("collapse"), + )), + 0 === t.length && (t = null)); + const s = i.findOne(this._selector); + if (t) { + const i = t.find((t) => s !== t); + if (((e = i ? nt.getInstance(i) : null), e && e._isTransitioning)) + return; + } + if (B.trigger(this._element, "show.bs.collapse").defaultPrevented) return; + t && + t.forEach((t) => { + (s !== t && nt.collapseInterface(t, "hide"), + e || W.set(t, "bs.collapse", null)); + }); + const n = this._getDimension(); + (this._element.classList.remove("collapse"), + this._element.classList.add("collapsing"), + (this._element.style[n] = 0), + this._triggerArray.length && + this._triggerArray.forEach((t) => { + (t.classList.remove("collapsed"), + t.setAttribute("aria-expanded", !0)); + }), + this.setTransitioning(!0)); + const o = "scroll" + (n[0].toUpperCase() + n.slice(1)); + (this._queueCallback( + () => { + (this._element.classList.remove("collapsing"), + this._element.classList.add("collapse", "show"), + (this._element.style[n] = ""), + this.setTransitioning(!1), + B.trigger(this._element, "shown.bs.collapse")); + }, + this._element, + !0, + ), + (this._element.style[n] = this._element[o] + "px")); + } + hide() { + if (this._isTransitioning || !this._element.classList.contains("show")) + return; + if (B.trigger(this._element, "hide.bs.collapse").defaultPrevented) return; + const t = this._getDimension(); + ((this._element.style[t] = + this._element.getBoundingClientRect()[t] + "px"), + m(this._element), + this._element.classList.add("collapsing"), + this._element.classList.remove("collapse", "show")); + const e = this._triggerArray.length; + if (e > 0) + for (let t = 0; t < e; t++) { + const e = this._triggerArray[t], + s = a(e); + s && + !s.classList.contains("show") && + (e.classList.add("collapsed"), e.setAttribute("aria-expanded", !1)); + } + (this.setTransitioning(!0), + (this._element.style[t] = ""), + this._queueCallback( + () => { + (this.setTransitioning(!1), + this._element.classList.remove("collapsing"), + this._element.classList.add("collapse"), + B.trigger(this._element, "hidden.bs.collapse")); + }, + this._element, + !0, + )); + } + setTransitioning(t) { + this._isTransitioning = t; + } + _getConfig(t) { + return ( + ((t = { ...st, ...t }).toggle = Boolean(t.toggle)), + d("collapse", t, it), + t + ); + } + _getDimension() { + return this._element.classList.contains("width") ? "width" : "height"; + } + _getParent() { + let { parent: t } = this._config; + t = h(t); + const e = `[data-bs-toggle="collapse"][data-bs-parent="${t}"]`; + return ( + i.find(e, t).forEach((t) => { + const e = a(t); + this._addAriaAndCollapsedClass(e, [t]); + }), + t + ); + } + _addAriaAndCollapsedClass(t, e) { + if (!t || !e.length) return; + const s = t.classList.contains("show"); + e.forEach((t) => { + (s ? t.classList.remove("collapsed") : t.classList.add("collapsed"), + t.setAttribute("aria-expanded", s)); + }); + } + static collapseInterface(t, e) { + let s = nt.getInstance(t); + const i = { + ...st, + ...V.getDataAttributes(t), + ...("object" == typeof e && e ? e : {}), + }; + if ( + (!s && + i.toggle && + "string" == typeof e && + /show|hide/.test(e) && + (i.toggle = !1), + s || (s = new nt(t, i)), + "string" == typeof e) + ) { + if (void 0 === s[e]) throw new TypeError(`No method named "${e}"`); + s[e](); + } + } + static jQueryInterface(t) { + return this.each(function () { + nt.collapseInterface(this, t); + }); + } + } + (B.on( + document, + "click.bs.collapse.data-api", + '[data-bs-toggle="collapse"]', + function (t) { + ("A" === t.target.tagName || + (t.delegateTarget && "A" === t.delegateTarget.tagName)) && + t.preventDefault(); + const e = V.getDataAttributes(this), + s = r(this); + i.find(s).forEach((t) => { + const s = nt.getInstance(t); + let i; + (s + ? (null === s._parent && + "string" == typeof e.parent && + ((s._config.parent = e.parent), (s._parent = s._getParent())), + (i = "toggle")) + : (i = e), + nt.collapseInterface(t, i)); + }); + }, + ), + y(nt)); + const ot = new RegExp("ArrowUp|ArrowDown|Escape"), + rt = v() ? "top-end" : "top-start", + at = v() ? "top-start" : "top-end", + lt = v() ? "bottom-end" : "bottom-start", + ct = v() ? "bottom-start" : "bottom-end", + ht = v() ? "left-start" : "right-start", + dt = v() ? "right-start" : "left-start", + ut = { + offset: [0, 2], + boundary: "clippingParents", + reference: "toggle", + display: "dynamic", + popperConfig: null, + autoClose: !0, + }, + gt = { + offset: "(array|string|function)", + boundary: "(string|element)", + reference: "(string|element|object)", + display: "string", + popperConfig: "(null|object|function)", + autoClose: "(boolean|string)", + }; + class pt extends q { + constructor(t, e) { + (super(t), + (this._popper = null), + (this._config = this._getConfig(e)), + (this._menu = this._getMenuElement()), + (this._inNavbar = this._detectNavbar()), + this._addEventListeners()); + } + static get Default() { + return ut; + } + static get DefaultType() { + return gt; + } + static get NAME() { + return "dropdown"; + } + toggle() { + g(this._element) || + (this._element.classList.contains("show") ? this.hide() : this.show()); + } + show() { + if (g(this._element) || this._menu.classList.contains("show")) return; + const t = pt.getParentFromElement(this._element), + e = { relatedTarget: this._element }; + if (!B.trigger(this._element, "show.bs.dropdown", e).defaultPrevented) { + if (this._inNavbar) V.setDataAttribute(this._menu, "popper", "none"); + else { + if (void 0 === s) + throw new TypeError( + "Bootstrap's dropdowns require Popper (https://popper.js.org)", + ); + let e = this._element; + "parent" === this._config.reference + ? (e = t) + : c(this._config.reference) + ? (e = h(this._config.reference)) + : "object" == typeof this._config.reference && + (e = this._config.reference); + const i = this._getPopperConfig(), + n = i.modifiers.find( + (t) => "applyStyles" === t.name && !1 === t.enabled, + ); + ((this._popper = s.createPopper(e, this._menu, i)), + n && V.setDataAttribute(this._menu, "popper", "static")); + } + ("ontouchstart" in document.documentElement && + !t.closest(".navbar-nav") && + [] + .concat(...document.body.children) + .forEach((t) => B.on(t, "mouseover", f)), + this._element.focus(), + this._element.setAttribute("aria-expanded", !0), + this._menu.classList.toggle("show"), + this._element.classList.toggle("show"), + B.trigger(this._element, "shown.bs.dropdown", e)); + } + } + hide() { + if (g(this._element) || !this._menu.classList.contains("show")) return; + const t = { relatedTarget: this._element }; + this._completeHide(t); + } + dispose() { + (this._popper && this._popper.destroy(), super.dispose()); + } + update() { + ((this._inNavbar = this._detectNavbar()), + this._popper && this._popper.update()); + } + _addEventListeners() { + B.on(this._element, "click.bs.dropdown", (t) => { + (t.preventDefault(), this.toggle()); + }); + } + _completeHide(t) { + B.trigger(this._element, "hide.bs.dropdown", t).defaultPrevented || + ("ontouchstart" in document.documentElement && + [] + .concat(...document.body.children) + .forEach((t) => B.off(t, "mouseover", f)), + this._popper && this._popper.destroy(), + this._menu.classList.remove("show"), + this._element.classList.remove("show"), + this._element.setAttribute("aria-expanded", "false"), + V.removeDataAttribute(this._menu, "popper"), + B.trigger(this._element, "hidden.bs.dropdown", t)); + } + _getConfig(t) { + if ( + ((t = { + ...this.constructor.Default, + ...V.getDataAttributes(this._element), + ...t, + }), + d("dropdown", t, this.constructor.DefaultType), + "object" == typeof t.reference && + !c(t.reference) && + "function" != typeof t.reference.getBoundingClientRect) + ) + throw new TypeError( + "dropdown".toUpperCase() + + ': Option "reference" provided type "object" without a required "getBoundingClientRect" method.', + ); + return t; + } + _getMenuElement() { + return i.next(this._element, ".dropdown-menu")[0]; + } + _getPlacement() { + const t = this._element.parentNode; + if (t.classList.contains("dropend")) return ht; + if (t.classList.contains("dropstart")) return dt; + const e = + "end" === + getComputedStyle(this._menu).getPropertyValue("--bs-position").trim(); + return t.classList.contains("dropup") ? (e ? at : rt) : e ? ct : lt; + } + _detectNavbar() { + return null !== this._element.closest(".navbar"); + } + _getOffset() { + const { offset: t } = this._config; + return "string" == typeof t + ? t.split(",").map((t) => Number.parseInt(t, 10)) + : "function" == typeof t + ? (e) => t(e, this._element) + : t; + } + _getPopperConfig() { + const t = { + placement: this._getPlacement(), + modifiers: [ + { + name: "preventOverflow", + options: { boundary: this._config.boundary }, + }, + { name: "offset", options: { offset: this._getOffset() } }, + ], + }; + return ( + "static" === this._config.display && + (t.modifiers = [{ name: "applyStyles", enabled: !1 }]), + { + ...t, + ...("function" == typeof this._config.popperConfig + ? this._config.popperConfig(t) + : this._config.popperConfig), + } + ); + } + _selectMenuItem({ key: t, target: e }) { + const s = i + .find( + ".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)", + this._menu, + ) + .filter(u); + s.length && A(s, e, "ArrowDown" === t, !s.includes(e)).focus(); + } + static dropdownInterface(t, e) { + const s = pt.getOrCreateInstance(t, e); + if ("string" == typeof e) { + if (void 0 === s[e]) throw new TypeError(`No method named "${e}"`); + s[e](); + } + } + static jQueryInterface(t) { + return this.each(function () { + pt.dropdownInterface(this, t); + }); + } + static clearMenus(t) { + if (t && (2 === t.button || ("keyup" === t.type && "Tab" !== t.key))) + return; + const e = i.find('[data-bs-toggle="dropdown"]'); + for (let s = 0, i = e.length; s < i; s++) { + const i = pt.getInstance(e[s]); + if (!i || !1 === i._config.autoClose) continue; + if (!i._element.classList.contains("show")) continue; + const n = { relatedTarget: i._element }; + if (t) { + const e = t.composedPath(), + s = e.includes(i._menu); + if ( + e.includes(i._element) || + ("inside" === i._config.autoClose && !s) || + ("outside" === i._config.autoClose && s) + ) + continue; + if ( + i._menu.contains(t.target) && + (("keyup" === t.type && "Tab" === t.key) || + /input|select|option|textarea|form/i.test(t.target.tagName)) + ) + continue; + "click" === t.type && (n.clickEvent = t); + } + i._completeHide(n); + } + } + static getParentFromElement(t) { + return a(t) || t.parentNode; + } + static dataApiKeydownHandler(t) { + if ( + /input|textarea/i.test(t.target.tagName) + ? "Space" === t.key || + ("Escape" !== t.key && + (("ArrowDown" !== t.key && "ArrowUp" !== t.key) || + t.target.closest(".dropdown-menu"))) + : !ot.test(t.key) + ) + return; + const e = this.classList.contains("show"); + if (!e && "Escape" === t.key) return; + if ((t.preventDefault(), t.stopPropagation(), g(this))) return; + const s = () => + this.matches('[data-bs-toggle="dropdown"]') + ? this + : i.prev(this, '[data-bs-toggle="dropdown"]')[0]; + return "Escape" === t.key + ? (s().focus(), void pt.clearMenus()) + : "ArrowUp" === t.key || "ArrowDown" === t.key + ? (e || s().click(), void pt.getInstance(s())._selectMenuItem(t)) + : void ((e && "Space" !== t.key) || pt.clearMenus()); + } + } + (B.on( + document, + "keydown.bs.dropdown.data-api", + '[data-bs-toggle="dropdown"]', + pt.dataApiKeydownHandler, + ), + B.on( + document, + "keydown.bs.dropdown.data-api", + ".dropdown-menu", + pt.dataApiKeydownHandler, + ), + B.on(document, "click.bs.dropdown.data-api", pt.clearMenus), + B.on(document, "keyup.bs.dropdown.data-api", pt.clearMenus), + B.on( + document, + "click.bs.dropdown.data-api", + '[data-bs-toggle="dropdown"]', + function (t) { + (t.preventDefault(), pt.dropdownInterface(this)); + }, + ), + y(pt)); + class ft { + constructor() { + this._element = document.body; + } + getWidth() { + const t = document.documentElement.clientWidth; + return Math.abs(window.innerWidth - t); + } + hide() { + const t = this.getWidth(); + (this._disableOverFlow(), + this._setElementAttributes(this._element, "paddingRight", (e) => e + t), + this._setElementAttributes( + ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top", + "paddingRight", + (e) => e + t, + ), + this._setElementAttributes(".sticky-top", "marginRight", (e) => e - t)); + } + _disableOverFlow() { + (this._saveInitialAttribute(this._element, "overflow"), + (this._element.style.overflow = "hidden")); + } + _setElementAttributes(t, e, s) { + const i = this.getWidth(); + this._applyManipulationCallback(t, (t) => { + if (t !== this._element && window.innerWidth > t.clientWidth + i) + return; + this._saveInitialAttribute(t, e); + const n = window.getComputedStyle(t)[e]; + t.style[e] = s(Number.parseFloat(n)) + "px"; + }); + } + reset() { + (this._resetElementAttributes(this._element, "overflow"), + this._resetElementAttributes(this._element, "paddingRight"), + this._resetElementAttributes( + ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top", + "paddingRight", + ), + this._resetElementAttributes(".sticky-top", "marginRight")); + } + _saveInitialAttribute(t, e) { + const s = t.style[e]; + s && V.setDataAttribute(t, e, s); + } + _resetElementAttributes(t, e) { + this._applyManipulationCallback(t, (t) => { + const s = V.getDataAttribute(t, e); + void 0 === s + ? t.style.removeProperty(e) + : (V.removeDataAttribute(t, e), (t.style[e] = s)); + }); + } + _applyManipulationCallback(t, e) { + c(t) ? e(t) : i.find(t, this._element).forEach(e); + } + isOverflowing() { + return this.getWidth() > 0; + } + } + const mt = { + isVisible: !0, + isAnimated: !1, + rootElement: "body", + clickCallback: null, + }, + _t = { + isVisible: "boolean", + isAnimated: "boolean", + rootElement: "(element|string)", + clickCallback: "(function|null)", + }; + class bt { + constructor(t) { + ((this._config = this._getConfig(t)), + (this._isAppended = !1), + (this._element = null)); + } + show(t) { + this._config.isVisible + ? (this._append(), + this._config.isAnimated && m(this._getElement()), + this._getElement().classList.add("show"), + this._emulateAnimation(() => { + w(t); + })) + : w(t); + } + hide(t) { + this._config.isVisible + ? (this._getElement().classList.remove("show"), + this._emulateAnimation(() => { + (this.dispose(), w(t)); + })) + : w(t); + } + _getElement() { + if (!this._element) { + const t = document.createElement("div"); + ((t.className = "modal-backdrop"), + this._config.isAnimated && t.classList.add("fade"), + (this._element = t)); + } + return this._element; + } + _getConfig(t) { + return ( + ((t = { ...mt, ...("object" == typeof t ? t : {}) }).rootElement = h( + t.rootElement, + )), + d("backdrop", t, _t), + t + ); + } + _append() { + this._isAppended || + (this._config.rootElement.appendChild(this._getElement()), + B.on(this._getElement(), "mousedown.bs.backdrop", () => { + w(this._config.clickCallback); + }), + (this._isAppended = !0)); + } + dispose() { + this._isAppended && + (B.off(this._element, "mousedown.bs.backdrop"), + this._element.remove(), + (this._isAppended = !1)); + } + _emulateAnimation(t) { + E(t, this._getElement(), this._config.isAnimated); + } + } + const vt = { backdrop: !0, keyboard: !0, focus: !0 }, + yt = { + backdrop: "(boolean|string)", + keyboard: "boolean", + focus: "boolean", + }; + class wt extends q { + constructor(t, e) { + (super(t), + (this._config = this._getConfig(e)), + (this._dialog = i.findOne(".modal-dialog", this._element)), + (this._backdrop = this._initializeBackDrop()), + (this._isShown = !1), + (this._ignoreBackdropClick = !1), + (this._isTransitioning = !1), + (this._scrollBar = new ft())); + } + static get Default() { + return vt; + } + static get NAME() { + return "modal"; + } + toggle(t) { + return this._isShown ? this.hide() : this.show(t); + } + show(t) { + this._isShown || + this._isTransitioning || + B.trigger(this._element, "show.bs.modal", { relatedTarget: t }) + .defaultPrevented || + ((this._isShown = !0), + this._isAnimated() && (this._isTransitioning = !0), + this._scrollBar.hide(), + document.body.classList.add("modal-open"), + this._adjustDialog(), + this._setEscapeEvent(), + this._setResizeEvent(), + B.on( + this._element, + "click.dismiss.bs.modal", + '[data-bs-dismiss="modal"]', + (t) => this.hide(t), + ), + B.on(this._dialog, "mousedown.dismiss.bs.modal", () => { + B.one(this._element, "mouseup.dismiss.bs.modal", (t) => { + t.target === this._element && (this._ignoreBackdropClick = !0); + }); + }), + this._showBackdrop(() => this._showElement(t))); + } + hide(t) { + if ( + (t && ["A", "AREA"].includes(t.target.tagName) && t.preventDefault(), + !this._isShown || this._isTransitioning) + ) + return; + if (B.trigger(this._element, "hide.bs.modal").defaultPrevented) return; + this._isShown = !1; + const e = this._isAnimated(); + (e && (this._isTransitioning = !0), + this._setEscapeEvent(), + this._setResizeEvent(), + B.off(document, "focusin.bs.modal"), + this._element.classList.remove("show"), + B.off(this._element, "click.dismiss.bs.modal"), + B.off(this._dialog, "mousedown.dismiss.bs.modal"), + this._queueCallback(() => this._hideModal(), this._element, e)); + } + dispose() { + ([window, this._dialog].forEach((t) => B.off(t, ".bs.modal")), + this._backdrop.dispose(), + super.dispose(), + B.off(document, "focusin.bs.modal")); + } + handleUpdate() { + this._adjustDialog(); + } + _initializeBackDrop() { + return new bt({ + isVisible: Boolean(this._config.backdrop), + isAnimated: this._isAnimated(), + }); + } + _getConfig(t) { + return ( + (t = { + ...vt, + ...V.getDataAttributes(this._element), + ...("object" == typeof t ? t : {}), + }), + d("modal", t, yt), + t + ); + } + _showElement(t) { + const e = this._isAnimated(), + s = i.findOne(".modal-body", this._dialog); + ((this._element.parentNode && + this._element.parentNode.nodeType === Node.ELEMENT_NODE) || + document.body.appendChild(this._element), + (this._element.style.display = "block"), + this._element.removeAttribute("aria-hidden"), + this._element.setAttribute("aria-modal", !0), + this._element.setAttribute("role", "dialog"), + (this._element.scrollTop = 0), + s && (s.scrollTop = 0), + e && m(this._element), + this._element.classList.add("show"), + this._config.focus && this._enforceFocus(), + this._queueCallback( + () => { + (this._config.focus && this._element.focus(), + (this._isTransitioning = !1), + B.trigger(this._element, "shown.bs.modal", { relatedTarget: t })); + }, + this._dialog, + e, + )); + } + _enforceFocus() { + (B.off(document, "focusin.bs.modal"), + B.on(document, "focusin.bs.modal", (t) => { + document === t.target || + this._element === t.target || + this._element.contains(t.target) || + this._element.focus(); + })); + } + _setEscapeEvent() { + this._isShown + ? B.on(this._element, "keydown.dismiss.bs.modal", (t) => { + this._config.keyboard && "Escape" === t.key + ? (t.preventDefault(), this.hide()) + : this._config.keyboard || + "Escape" !== t.key || + this._triggerBackdropTransition(); + }) + : B.off(this._element, "keydown.dismiss.bs.modal"); + } + _setResizeEvent() { + this._isShown + ? B.on(window, "resize.bs.modal", () => this._adjustDialog()) + : B.off(window, "resize.bs.modal"); + } + _hideModal() { + ((this._element.style.display = "none"), + this._element.setAttribute("aria-hidden", !0), + this._element.removeAttribute("aria-modal"), + this._element.removeAttribute("role"), + (this._isTransitioning = !1), + this._backdrop.hide(() => { + (document.body.classList.remove("modal-open"), + this._resetAdjustments(), + this._scrollBar.reset(), + B.trigger(this._element, "hidden.bs.modal")); + })); + } + _showBackdrop(t) { + (B.on(this._element, "click.dismiss.bs.modal", (t) => { + this._ignoreBackdropClick + ? (this._ignoreBackdropClick = !1) + : t.target === t.currentTarget && + (!0 === this._config.backdrop + ? this.hide() + : "static" === this._config.backdrop && + this._triggerBackdropTransition()); + }), + this._backdrop.show(t)); + } + _isAnimated() { + return this._element.classList.contains("fade"); + } + _triggerBackdropTransition() { + if (B.trigger(this._element, "hidePrevented.bs.modal").defaultPrevented) + return; + const { classList: t, scrollHeight: e, style: s } = this._element, + i = e > document.documentElement.clientHeight; + (!i && "hidden" === s.overflowY) || + t.contains("modal-static") || + (i || (s.overflowY = "hidden"), + t.add("modal-static"), + this._queueCallback(() => { + (t.remove("modal-static"), + i || + this._queueCallback(() => { + s.overflowY = ""; + }, this._dialog)); + }, this._dialog), + this._element.focus()); + } + _adjustDialog() { + const t = + this._element.scrollHeight > document.documentElement.clientHeight, + e = this._scrollBar.getWidth(), + s = e > 0; + (((!s && t && !v()) || (s && !t && v())) && + (this._element.style.paddingLeft = e + "px"), + ((s && !t && !v()) || (!s && t && v())) && + (this._element.style.paddingRight = e + "px")); + } + _resetAdjustments() { + ((this._element.style.paddingLeft = ""), + (this._element.style.paddingRight = "")); + } + static jQueryInterface(t, e) { + return this.each(function () { + const s = wt.getOrCreateInstance(this, t); + if ("string" == typeof t) { + if (void 0 === s[t]) throw new TypeError(`No method named "${t}"`); + s[t](e); + } + }); + } + } + (B.on( + document, + "click.bs.modal.data-api", + '[data-bs-toggle="modal"]', + function (t) { + const e = a(this); + (["A", "AREA"].includes(this.tagName) && t.preventDefault(), + B.one(e, "show.bs.modal", (t) => { + t.defaultPrevented || + B.one(e, "hidden.bs.modal", () => { + u(this) && this.focus(); + }); + }), + wt.getOrCreateInstance(e).toggle(this)); + }, + ), + y(wt)); + const Et = { backdrop: !0, keyboard: !0, scroll: !1 }, + At = { backdrop: "boolean", keyboard: "boolean", scroll: "boolean" }; + class Tt extends q { + constructor(t, e) { + (super(t), + (this._config = this._getConfig(e)), + (this._isShown = !1), + (this._backdrop = this._initializeBackDrop()), + this._addEventListeners()); + } + static get NAME() { + return "offcanvas"; + } + static get Default() { + return Et; + } + toggle(t) { + return this._isShown ? this.hide() : this.show(t); + } + show(t) { + this._isShown || + B.trigger(this._element, "show.bs.offcanvas", { relatedTarget: t }) + .defaultPrevented || + ((this._isShown = !0), + (this._element.style.visibility = "visible"), + this._backdrop.show(), + this._config.scroll || + (new ft().hide(), this._enforceFocusOnElement(this._element)), + this._element.removeAttribute("aria-hidden"), + this._element.setAttribute("aria-modal", !0), + this._element.setAttribute("role", "dialog"), + this._element.classList.add("show"), + this._queueCallback( + () => { + B.trigger(this._element, "shown.bs.offcanvas", { + relatedTarget: t, + }); + }, + this._element, + !0, + )); + } + hide() { + this._isShown && + (B.trigger(this._element, "hide.bs.offcanvas").defaultPrevented || + (B.off(document, "focusin.bs.offcanvas"), + this._element.blur(), + (this._isShown = !1), + this._element.classList.remove("show"), + this._backdrop.hide(), + this._queueCallback( + () => { + (this._element.setAttribute("aria-hidden", !0), + this._element.removeAttribute("aria-modal"), + this._element.removeAttribute("role"), + (this._element.style.visibility = "hidden"), + this._config.scroll || new ft().reset(), + B.trigger(this._element, "hidden.bs.offcanvas")); + }, + this._element, + !0, + ))); + } + dispose() { + (this._backdrop.dispose(), + super.dispose(), + B.off(document, "focusin.bs.offcanvas")); + } + _getConfig(t) { + return ( + (t = { + ...Et, + ...V.getDataAttributes(this._element), + ...("object" == typeof t ? t : {}), + }), + d("offcanvas", t, At), + t + ); + } + _initializeBackDrop() { + return new bt({ + isVisible: this._config.backdrop, + isAnimated: !0, + rootElement: this._element.parentNode, + clickCallback: () => this.hide(), + }); + } + _enforceFocusOnElement(t) { + (B.off(document, "focusin.bs.offcanvas"), + B.on(document, "focusin.bs.offcanvas", (e) => { + document === e.target || + t === e.target || + t.contains(e.target) || + t.focus(); + }), + t.focus()); + } + _addEventListeners() { + (B.on( + this._element, + "click.dismiss.bs.offcanvas", + '[data-bs-dismiss="offcanvas"]', + () => this.hide(), + ), + B.on(this._element, "keydown.dismiss.bs.offcanvas", (t) => { + this._config.keyboard && "Escape" === t.key && this.hide(); + })); + } + static jQueryInterface(t) { + return this.each(function () { + const e = Tt.getOrCreateInstance(this, t); + if ("string" == typeof t) { + if (void 0 === e[t] || t.startsWith("_") || "constructor" === t) + throw new TypeError(`No method named "${t}"`); + e[t](this); + } + }); + } + } + (B.on( + document, + "click.bs.offcanvas.data-api", + '[data-bs-toggle="offcanvas"]', + function (t) { + const e = a(this); + if ((["A", "AREA"].includes(this.tagName) && t.preventDefault(), g(this))) + return; + B.one(e, "hidden.bs.offcanvas", () => { + u(this) && this.focus(); + }); + const s = i.findOne(".offcanvas.show"); + (s && s !== e && Tt.getInstance(s).hide(), + Tt.getOrCreateInstance(e).toggle(this)); + }, + ), + B.on(window, "load.bs.offcanvas.data-api", () => + i + .find(".offcanvas.show") + .forEach((t) => Tt.getOrCreateInstance(t).show()), + ), + y(Tt)); + const Ct = new Set([ + "background", + "cite", + "href", + "itemtype", + "longdesc", + "poster", + "src", + "xlink:href", + ]), + kt = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i, + Lt = + /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i, + Ot = (t, e) => { + const s = t.nodeName.toLowerCase(); + if (e.includes(s)) + return ( + !Ct.has(s) || Boolean(kt.test(t.nodeValue) || Lt.test(t.nodeValue)) + ); + const i = e.filter((t) => t instanceof RegExp); + for (let t = 0, e = i.length; t < e; t++) if (i[t].test(s)) return !0; + return !1; + }; + function Dt(t, e, s) { + if (!t.length) return t; + if (s && "function" == typeof s) return s(t); + const i = new window.DOMParser().parseFromString(t, "text/html"), + n = Object.keys(e), + o = [].concat(...i.body.querySelectorAll("*")); + for (let t = 0, s = o.length; t < s; t++) { + const s = o[t], + i = s.nodeName.toLowerCase(); + if (!n.includes(i)) { + s.remove(); + continue; + } + const r = [].concat(...s.attributes), + a = [].concat(e["*"] || [], e[i] || []); + r.forEach((t) => { + Ot(t, a) || s.removeAttribute(t.nodeName); + }); + } + return i.body.innerHTML; + } + const It = new RegExp("(^|\\s)bs-tooltip\\S+", "g"), + Nt = new Set(["sanitize", "allowList", "sanitizeFn"]), + St = { + animation: "boolean", + template: "string", + title: "(string|element|function)", + trigger: "string", + delay: "(number|object)", + html: "boolean", + selector: "(string|boolean)", + placement: "(string|function)", + offset: "(array|string|function)", + container: "(string|element|boolean)", + fallbackPlacements: "array", + boundary: "(string|element)", + customClass: "(string|function)", + sanitize: "boolean", + sanitizeFn: "(null|function)", + allowList: "object", + popperConfig: "(null|object|function)", + }, + xt = { + AUTO: "auto", + TOP: "top", + RIGHT: v() ? "left" : "right", + BOTTOM: "bottom", + LEFT: v() ? "right" : "left", + }, + Mt = { + animation: !0, + template: + '', + trigger: "hover focus", + title: "", + delay: 0, + html: !1, + selector: !1, + placement: "top", + offset: [0, 0], + container: !1, + fallbackPlacements: ["top", "right", "bottom", "left"], + boundary: "clippingParents", + customClass: "", + sanitize: !0, + sanitizeFn: null, + allowList: { + "*": ["class", "dir", "id", "lang", "role", /^aria-[\w-]*$/i], + a: ["target", "href", "title", "rel"], + area: [], + b: [], + br: [], + col: [], + code: [], + div: [], + em: [], + hr: [], + h1: [], + h2: [], + h3: [], + h4: [], + h5: [], + h6: [], + i: [], + img: ["src", "srcset", "alt", "title", "width", "height"], + li: [], + ol: [], + p: [], + pre: [], + s: [], + small: [], + span: [], + sub: [], + sup: [], + strong: [], + u: [], + ul: [], + }, + popperConfig: null, + }, + Pt = { + HIDE: "hide.bs.tooltip", + HIDDEN: "hidden.bs.tooltip", + SHOW: "show.bs.tooltip", + SHOWN: "shown.bs.tooltip", + INSERTED: "inserted.bs.tooltip", + CLICK: "click.bs.tooltip", + FOCUSIN: "focusin.bs.tooltip", + FOCUSOUT: "focusout.bs.tooltip", + MOUSEENTER: "mouseenter.bs.tooltip", + MOUSELEAVE: "mouseleave.bs.tooltip", + }; + class jt extends q { + constructor(t, e) { + if (void 0 === s) + throw new TypeError( + "Bootstrap's tooltips require Popper (https://popper.js.org)", + ); + (super(t), + (this._isEnabled = !0), + (this._timeout = 0), + (this._hoverState = ""), + (this._activeTrigger = {}), + (this._popper = null), + (this._config = this._getConfig(e)), + (this.tip = null), + this._setListeners()); + } + static get Default() { + return Mt; + } + static get NAME() { + return "tooltip"; + } + static get Event() { + return Pt; + } + static get DefaultType() { + return St; + } + enable() { + this._isEnabled = !0; + } + disable() { + this._isEnabled = !1; + } + toggleEnabled() { + this._isEnabled = !this._isEnabled; + } + toggle(t) { + if (this._isEnabled) + if (t) { + const e = this._initializeOnDelegatedTarget(t); + ((e._activeTrigger.click = !e._activeTrigger.click), + e._isWithActiveTrigger() ? e._enter(null, e) : e._leave(null, e)); + } else { + if (this.getTipElement().classList.contains("show")) + return void this._leave(null, this); + this._enter(null, this); + } + } + dispose() { + (clearTimeout(this._timeout), + B.off( + this._element.closest(".modal"), + "hide.bs.modal", + this._hideModalHandler, + ), + this.tip && this.tip.remove(), + this._popper && this._popper.destroy(), + super.dispose()); + } + show() { + if ("none" === this._element.style.display) + throw new Error("Please use show on visible elements"); + if (!this.isWithContent() || !this._isEnabled) return; + const t = B.trigger(this._element, this.constructor.Event.SHOW), + e = p(this._element), + i = + null === e + ? this._element.ownerDocument.documentElement.contains( + this._element, + ) + : e.contains(this._element); + if (t.defaultPrevented || !i) return; + const o = this.getTipElement(), + r = n(this.constructor.NAME); + (o.setAttribute("id", r), + this._element.setAttribute("aria-describedby", r), + this.setContent(), + this._config.animation && o.classList.add("fade")); + const a = + "function" == typeof this._config.placement + ? this._config.placement.call(this, o, this._element) + : this._config.placement, + l = this._getAttachment(a); + this._addAttachmentClass(l); + const { container: c } = this._config; + (W.set(o, this.constructor.DATA_KEY, this), + this._element.ownerDocument.documentElement.contains(this.tip) || + (c.appendChild(o), + B.trigger(this._element, this.constructor.Event.INSERTED)), + this._popper + ? this._popper.update() + : (this._popper = s.createPopper( + this._element, + o, + this._getPopperConfig(l), + )), + o.classList.add("show")); + const h = + "function" == typeof this._config.customClass + ? this._config.customClass() + : this._config.customClass; + (h && o.classList.add(...h.split(" ")), + "ontouchstart" in document.documentElement && + [].concat(...document.body.children).forEach((t) => { + B.on(t, "mouseover", f); + })); + const d = this.tip.classList.contains("fade"); + this._queueCallback( + () => { + const t = this._hoverState; + ((this._hoverState = null), + B.trigger(this._element, this.constructor.Event.SHOWN), + "out" === t && this._leave(null, this)); + }, + this.tip, + d, + ); + } + hide() { + if (!this._popper) return; + const t = this.getTipElement(); + if ( + B.trigger(this._element, this.constructor.Event.HIDE).defaultPrevented + ) + return; + (t.classList.remove("show"), + "ontouchstart" in document.documentElement && + [] + .concat(...document.body.children) + .forEach((t) => B.off(t, "mouseover", f)), + (this._activeTrigger.click = !1), + (this._activeTrigger.focus = !1), + (this._activeTrigger.hover = !1)); + const e = this.tip.classList.contains("fade"); + (this._queueCallback( + () => { + this._isWithActiveTrigger() || + ("show" !== this._hoverState && t.remove(), + this._cleanTipClass(), + this._element.removeAttribute("aria-describedby"), + B.trigger(this._element, this.constructor.Event.HIDDEN), + this._popper && (this._popper.destroy(), (this._popper = null))); + }, + this.tip, + e, + ), + (this._hoverState = "")); + } + update() { + null !== this._popper && this._popper.update(); + } + isWithContent() { + return Boolean(this.getTitle()); + } + getTipElement() { + if (this.tip) return this.tip; + const t = document.createElement("div"); + return ( + (t.innerHTML = this._config.template), + (this.tip = t.children[0]), + this.tip + ); + } + setContent() { + const t = this.getTipElement(); + (this.setElementContent(i.findOne(".tooltip-inner", t), this.getTitle()), + t.classList.remove("fade", "show")); + } + setElementContent(t, e) { + if (null !== t) + return c(e) + ? ((e = h(e)), + void (this._config.html + ? e.parentNode !== t && ((t.innerHTML = ""), t.appendChild(e)) + : (t.textContent = e.textContent))) + : void (this._config.html + ? (this._config.sanitize && + (e = Dt(e, this._config.allowList, this._config.sanitizeFn)), + (t.innerHTML = e)) + : (t.textContent = e)); + } + getTitle() { + let t = this._element.getAttribute("data-bs-original-title"); + return ( + t || + (t = + "function" == typeof this._config.title + ? this._config.title.call(this._element) + : this._config.title), + t + ); + } + updateAttachment(t) { + return "right" === t ? "end" : "left" === t ? "start" : t; + } + _initializeOnDelegatedTarget(t, e) { + const s = this.constructor.DATA_KEY; + return ( + (e = e || W.get(t.delegateTarget, s)) || + ((e = new this.constructor( + t.delegateTarget, + this._getDelegateConfig(), + )), + W.set(t.delegateTarget, s, e)), + e + ); + } + _getOffset() { + const { offset: t } = this._config; + return "string" == typeof t + ? t.split(",").map((t) => Number.parseInt(t, 10)) + : "function" == typeof t + ? (e) => t(e, this._element) + : t; + } + _getPopperConfig(t) { + const e = { + placement: t, + modifiers: [ + { + name: "flip", + options: { fallbackPlacements: this._config.fallbackPlacements }, + }, + { name: "offset", options: { offset: this._getOffset() } }, + { + name: "preventOverflow", + options: { boundary: this._config.boundary }, + }, + { + name: "arrow", + options: { element: `.${this.constructor.NAME}-arrow` }, + }, + { + name: "onChange", + enabled: !0, + phase: "afterWrite", + fn: (t) => this._handlePopperPlacementChange(t), + }, + ], + onFirstUpdate: (t) => { + t.options.placement !== t.placement && + this._handlePopperPlacementChange(t); + }, + }; + return { + ...e, + ...("function" == typeof this._config.popperConfig + ? this._config.popperConfig(e) + : this._config.popperConfig), + }; + } + _addAttachmentClass(t) { + this.getTipElement().classList.add( + "bs-tooltip-" + this.updateAttachment(t), + ); + } + _getAttachment(t) { + return xt[t.toUpperCase()]; + } + _setListeners() { + (this._config.trigger.split(" ").forEach((t) => { + if ("click" === t) + B.on( + this._element, + this.constructor.Event.CLICK, + this._config.selector, + (t) => this.toggle(t), + ); + else if ("manual" !== t) { + const e = + "hover" === t + ? this.constructor.Event.MOUSEENTER + : this.constructor.Event.FOCUSIN, + s = + "hover" === t + ? this.constructor.Event.MOUSELEAVE + : this.constructor.Event.FOCUSOUT; + (B.on(this._element, e, this._config.selector, (t) => this._enter(t)), + B.on(this._element, s, this._config.selector, (t) => + this._leave(t), + )); + } + }), + (this._hideModalHandler = () => { + this._element && this.hide(); + }), + B.on( + this._element.closest(".modal"), + "hide.bs.modal", + this._hideModalHandler, + ), + this._config.selector + ? (this._config = { + ...this._config, + trigger: "manual", + selector: "", + }) + : this._fixTitle()); + } + _fixTitle() { + const t = this._element.getAttribute("title"), + e = typeof this._element.getAttribute("data-bs-original-title"); + (t || "string" !== e) && + (this._element.setAttribute("data-bs-original-title", t || ""), + !t || + this._element.getAttribute("aria-label") || + this._element.textContent || + this._element.setAttribute("aria-label", t), + this._element.setAttribute("title", "")); + } + _enter(t, e) { + ((e = this._initializeOnDelegatedTarget(t, e)), + t && (e._activeTrigger["focusin" === t.type ? "focus" : "hover"] = !0), + e.getTipElement().classList.contains("show") || "show" === e._hoverState + ? (e._hoverState = "show") + : (clearTimeout(e._timeout), + (e._hoverState = "show"), + e._config.delay && e._config.delay.show + ? (e._timeout = setTimeout(() => { + "show" === e._hoverState && e.show(); + }, e._config.delay.show)) + : e.show())); + } + _leave(t, e) { + ((e = this._initializeOnDelegatedTarget(t, e)), + t && + (e._activeTrigger["focusout" === t.type ? "focus" : "hover"] = + e._element.contains(t.relatedTarget)), + e._isWithActiveTrigger() || + (clearTimeout(e._timeout), + (e._hoverState = "out"), + e._config.delay && e._config.delay.hide + ? (e._timeout = setTimeout(() => { + "out" === e._hoverState && e.hide(); + }, e._config.delay.hide)) + : e.hide())); + } + _isWithActiveTrigger() { + for (const t in this._activeTrigger) + if (this._activeTrigger[t]) return !0; + return !1; + } + _getConfig(t) { + const e = V.getDataAttributes(this._element); + return ( + Object.keys(e).forEach((t) => { + Nt.has(t) && delete e[t]; + }), + ((t = { + ...this.constructor.Default, + ...e, + ...("object" == typeof t && t ? t : {}), + }).container = !1 === t.container ? document.body : h(t.container)), + "number" == typeof t.delay && + (t.delay = { show: t.delay, hide: t.delay }), + "number" == typeof t.title && (t.title = t.title.toString()), + "number" == typeof t.content && (t.content = t.content.toString()), + d("tooltip", t, this.constructor.DefaultType), + t.sanitize && (t.template = Dt(t.template, t.allowList, t.sanitizeFn)), + t + ); + } + _getDelegateConfig() { + const t = {}; + if (this._config) + for (const e in this._config) + this.constructor.Default[e] !== this._config[e] && + (t[e] = this._config[e]); + return t; + } + _cleanTipClass() { + const t = this.getTipElement(), + e = t.getAttribute("class").match(It); + null !== e && + e.length > 0 && + e.map((t) => t.trim()).forEach((e) => t.classList.remove(e)); + } + _handlePopperPlacementChange(t) { + const { state: e } = t; + e && + ((this.tip = e.elements.popper), + this._cleanTipClass(), + this._addAttachmentClass(this._getAttachment(e.placement))); + } + static jQueryInterface(t) { + return this.each(function () { + const e = jt.getOrCreateInstance(this, t); + if ("string" == typeof t) { + if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`); + e[t](); + } + }); + } + } + y(jt); + const Ht = new RegExp("(^|\\s)bs-popover\\S+", "g"), + Rt = { + ...jt.Default, + placement: "right", + offset: [0, 8], + trigger: "click", + content: "", + template: + '', + }, + Bt = { ...jt.DefaultType, content: "(string|element|function)" }, + $t = { + HIDE: "hide.bs.popover", + HIDDEN: "hidden.bs.popover", + SHOW: "show.bs.popover", + SHOWN: "shown.bs.popover", + INSERTED: "inserted.bs.popover", + CLICK: "click.bs.popover", + FOCUSIN: "focusin.bs.popover", + FOCUSOUT: "focusout.bs.popover", + MOUSEENTER: "mouseenter.bs.popover", + MOUSELEAVE: "mouseleave.bs.popover", + }; + class Wt extends jt { + static get Default() { + return Rt; + } + static get NAME() { + return "popover"; + } + static get Event() { + return $t; + } + static get DefaultType() { + return Bt; + } + isWithContent() { + return this.getTitle() || this._getContent(); + } + getTipElement() { + return ( + this.tip || + ((this.tip = super.getTipElement()), + this.getTitle() || i.findOne(".popover-header", this.tip).remove(), + this._getContent() || i.findOne(".popover-body", this.tip).remove()), + this.tip + ); + } + setContent() { + const t = this.getTipElement(); + this.setElementContent(i.findOne(".popover-header", t), this.getTitle()); + let e = this._getContent(); + ("function" == typeof e && (e = e.call(this._element)), + this.setElementContent(i.findOne(".popover-body", t), e), + t.classList.remove("fade", "show")); + } + _addAttachmentClass(t) { + this.getTipElement().classList.add( + "bs-popover-" + this.updateAttachment(t), + ); + } + _getContent() { + return ( + this._element.getAttribute("data-bs-content") || this._config.content + ); + } + _cleanTipClass() { + const t = this.getTipElement(), + e = t.getAttribute("class").match(Ht); + null !== e && + e.length > 0 && + e.map((t) => t.trim()).forEach((e) => t.classList.remove(e)); + } + static jQueryInterface(t) { + return this.each(function () { + const e = Wt.getOrCreateInstance(this, t); + if ("string" == typeof t) { + if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`); + e[t](); + } + }); + } + } + y(Wt); + const qt = { offset: 10, method: "auto", target: "" }, + zt = { offset: "number", method: "string", target: "(string|element)" }; + class Ft extends q { + constructor(t, e) { + (super(t), + (this._scrollElement = + "BODY" === this._element.tagName ? window : this._element), + (this._config = this._getConfig(e)), + (this._selector = `${this._config.target} .nav-link, ${this._config.target} .list-group-item, ${this._config.target} .dropdown-item`), + (this._offsets = []), + (this._targets = []), + (this._activeTarget = null), + (this._scrollHeight = 0), + B.on(this._scrollElement, "scroll.bs.scrollspy", () => this._process()), + this.refresh(), + this._process()); + } + static get Default() { + return qt; + } + static get NAME() { + return "scrollspy"; + } + refresh() { + const t = + this._scrollElement === this._scrollElement.window + ? "offset" + : "position", + e = "auto" === this._config.method ? t : this._config.method, + s = "position" === e ? this._getScrollTop() : 0; + ((this._offsets = []), + (this._targets = []), + (this._scrollHeight = this._getScrollHeight()), + i + .find(this._selector) + .map((t) => { + const n = r(t), + o = n ? i.findOne(n) : null; + if (o) { + const t = o.getBoundingClientRect(); + if (t.width || t.height) return [V[e](o).top + s, n]; + } + return null; + }) + .filter((t) => t) + .sort((t, e) => t[0] - e[0]) + .forEach((t) => { + (this._offsets.push(t[0]), this._targets.push(t[1])); + })); + } + dispose() { + (B.off(this._scrollElement, ".bs.scrollspy"), super.dispose()); + } + _getConfig(t) { + if ( + "string" != + typeof (t = { + ...qt, + ...V.getDataAttributes(this._element), + ...("object" == typeof t && t ? t : {}), + }).target && + c(t.target) + ) { + let { id: e } = t.target; + (e || ((e = n("scrollspy")), (t.target.id = e)), (t.target = "#" + e)); + } + return (d("scrollspy", t, zt), t); + } + _getScrollTop() { + return this._scrollElement === window + ? this._scrollElement.pageYOffset + : this._scrollElement.scrollTop; + } + _getScrollHeight() { + return ( + this._scrollElement.scrollHeight || + Math.max( + document.body.scrollHeight, + document.documentElement.scrollHeight, + ) + ); + } + _getOffsetHeight() { + return this._scrollElement === window + ? window.innerHeight + : this._scrollElement.getBoundingClientRect().height; + } + _process() { + const t = this._getScrollTop() + this._config.offset, + e = this._getScrollHeight(), + s = this._config.offset + e - this._getOffsetHeight(); + if ((this._scrollHeight !== e && this.refresh(), t >= s)) { + const t = this._targets[this._targets.length - 1]; + this._activeTarget !== t && this._activate(t); + } else { + if (this._activeTarget && t < this._offsets[0] && this._offsets[0] > 0) + return ((this._activeTarget = null), void this._clear()); + for (let e = this._offsets.length; e--; ) + this._activeTarget !== this._targets[e] && + t >= this._offsets[e] && + (void 0 === this._offsets[e + 1] || t < this._offsets[e + 1]) && + this._activate(this._targets[e]); + } + } + _activate(t) { + ((this._activeTarget = t), this._clear()); + const e = this._selector + .split(",") + .map((e) => `${e}[data-bs-target="${t}"],${e}[href="${t}"]`), + s = i.findOne(e.join(",")); + (s.classList.contains("dropdown-item") + ? (i + .findOne(".dropdown-toggle", s.closest(".dropdown")) + .classList.add("active"), + s.classList.add("active")) + : (s.classList.add("active"), + i.parents(s, ".nav, .list-group").forEach((t) => { + (i + .prev(t, ".nav-link, .list-group-item") + .forEach((t) => t.classList.add("active")), + i.prev(t, ".nav-item").forEach((t) => { + i.children(t, ".nav-link").forEach((t) => + t.classList.add("active"), + ); + })); + })), + B.trigger(this._scrollElement, "activate.bs.scrollspy", { + relatedTarget: t, + })); + } + _clear() { + i.find(this._selector) + .filter((t) => t.classList.contains("active")) + .forEach((t) => t.classList.remove("active")); + } + static jQueryInterface(t) { + return this.each(function () { + const e = Ft.getOrCreateInstance(this, t); + if ("string" == typeof t) { + if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`); + e[t](); + } + }); + } + } + (B.on(window, "load.bs.scrollspy.data-api", () => { + i.find('[data-bs-spy="scroll"]').forEach((t) => new Ft(t)); + }), + y(Ft)); + class Ut extends q { + static get NAME() { + return "tab"; + } + show() { + if ( + this._element.parentNode && + this._element.parentNode.nodeType === Node.ELEMENT_NODE && + this._element.classList.contains("active") + ) + return; + let t; + const e = a(this._element), + s = this._element.closest(".nav, .list-group"); + if (s) { + const e = + "UL" === s.nodeName || "OL" === s.nodeName + ? ":scope > li > .active" + : ".active"; + ((t = i.find(e, s)), (t = t[t.length - 1])); + } + const n = t + ? B.trigger(t, "hide.bs.tab", { relatedTarget: this._element }) + : null; + if ( + B.trigger(this._element, "show.bs.tab", { relatedTarget: t }) + .defaultPrevented || + (null !== n && n.defaultPrevented) + ) + return; + this._activate(this._element, s); + const o = () => { + (B.trigger(t, "hidden.bs.tab", { relatedTarget: this._element }), + B.trigger(this._element, "shown.bs.tab", { relatedTarget: t })); + }; + e ? this._activate(e, e.parentNode, o) : o(); + } + _activate(t, e, s) { + const n = ( + !e || ("UL" !== e.nodeName && "OL" !== e.nodeName) + ? i.children(e, ".active") + : i.find(":scope > li > .active", e) + )[0], + o = s && n && n.classList.contains("fade"), + r = () => this._transitionComplete(t, n, s); + n && o + ? (n.classList.remove("show"), this._queueCallback(r, t, !0)) + : r(); + } + _transitionComplete(t, e, s) { + if (e) { + e.classList.remove("active"); + const t = i.findOne(":scope > .dropdown-menu .active", e.parentNode); + (t && t.classList.remove("active"), + "tab" === e.getAttribute("role") && + e.setAttribute("aria-selected", !1)); + } + (t.classList.add("active"), + "tab" === t.getAttribute("role") && t.setAttribute("aria-selected", !0), + m(t), + t.classList.contains("fade") && t.classList.add("show")); + let n = t.parentNode; + if ( + (n && "LI" === n.nodeName && (n = n.parentNode), + n && n.classList.contains("dropdown-menu")) + ) { + const e = t.closest(".dropdown"); + (e && + i + .find(".dropdown-toggle", e) + .forEach((t) => t.classList.add("active")), + t.setAttribute("aria-expanded", !0)); + } + s && s(); + } + static jQueryInterface(t) { + return this.each(function () { + const e = Ut.getOrCreateInstance(this); + if ("string" == typeof t) { + if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`); + e[t](); + } + }); + } + } + (B.on( + document, + "click.bs.tab.data-api", + '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]', + function (t) { + (["A", "AREA"].includes(this.tagName) && t.preventDefault(), + g(this) || Ut.getOrCreateInstance(this).show()); + }, + ), + y(Ut)); + const Kt = { animation: "boolean", autohide: "boolean", delay: "number" }, + Vt = { animation: !0, autohide: !0, delay: 5e3 }; + class Qt extends q { + constructor(t, e) { + (super(t), + (this._config = this._getConfig(e)), + (this._timeout = null), + (this._hasMouseInteraction = !1), + (this._hasKeyboardInteraction = !1), + this._setListeners()); + } + static get DefaultType() { + return Kt; + } + static get Default() { + return Vt; + } + static get NAME() { + return "toast"; + } + show() { + B.trigger(this._element, "show.bs.toast").defaultPrevented || + (this._clearTimeout(), + this._config.animation && this._element.classList.add("fade"), + this._element.classList.remove("hide"), + m(this._element), + this._element.classList.add("showing"), + this._queueCallback( + () => { + (this._element.classList.remove("showing"), + this._element.classList.add("show"), + B.trigger(this._element, "shown.bs.toast"), + this._maybeScheduleHide()); + }, + this._element, + this._config.animation, + )); + } + hide() { + this._element.classList.contains("show") && + (B.trigger(this._element, "hide.bs.toast").defaultPrevented || + (this._element.classList.remove("show"), + this._queueCallback( + () => { + (this._element.classList.add("hide"), + B.trigger(this._element, "hidden.bs.toast")); + }, + this._element, + this._config.animation, + ))); + } + dispose() { + (this._clearTimeout(), + this._element.classList.contains("show") && + this._element.classList.remove("show"), + super.dispose()); + } + _getConfig(t) { + return ( + (t = { + ...Vt, + ...V.getDataAttributes(this._element), + ...("object" == typeof t && t ? t : {}), + }), + d("toast", t, this.constructor.DefaultType), + t + ); + } + _maybeScheduleHide() { + this._config.autohide && + (this._hasMouseInteraction || + this._hasKeyboardInteraction || + (this._timeout = setTimeout(() => { + this.hide(); + }, this._config.delay))); + } + _onInteraction(t, e) { + switch (t.type) { + case "mouseover": + case "mouseout": + this._hasMouseInteraction = e; + break; + case "focusin": + case "focusout": + this._hasKeyboardInteraction = e; + } + if (e) return void this._clearTimeout(); + const s = t.relatedTarget; + this._element === s || + this._element.contains(s) || + this._maybeScheduleHide(); + } + _setListeners() { + (B.on( + this._element, + "click.dismiss.bs.toast", + '[data-bs-dismiss="toast"]', + () => this.hide(), + ), + B.on(this._element, "mouseover.bs.toast", (t) => + this._onInteraction(t, !0), + ), + B.on(this._element, "mouseout.bs.toast", (t) => + this._onInteraction(t, !1), + ), + B.on(this._element, "focusin.bs.toast", (t) => + this._onInteraction(t, !0), + ), + B.on(this._element, "focusout.bs.toast", (t) => + this._onInteraction(t, !1), + )); + } + _clearTimeout() { + (clearTimeout(this._timeout), (this._timeout = null)); + } + static jQueryInterface(t) { + return this.each(function () { + const e = Qt.getOrCreateInstance(this, t); + if ("string" == typeof t) { + if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`); + e[t](this); + } + }); + } + } + return ( + y(Qt), + { + Alert: z, + Button: F, + Carousel: et, + Collapse: nt, + Dropdown: pt, + Modal: wt, + Offcanvas: Tt, + Popover: Wt, + ScrollSpy: Ft, + Tab: Ut, + Toast: Qt, + Tooltip: jt, + } + ); +}); +//# sourceMappingURL=bootstrap.min.js.map diff --git a/ts/main.ts b/ts/main.ts index 85b60a1e..7216c5de 100644 --- a/ts/main.ts +++ b/ts/main.ts @@ -1,5 +1,12 @@ import Alpine from './vendor/alpinejs-3.15.8.js'; +// Make Alpine available on window for inline Alpine +window.Alpine = Alpine; + +// Wait for DOM to be ready, then initialize Alpine +document.addEventListener("DOMContentLoaded", () => { + Alpine.start(); +}); interface GreetingComponent { message: string; name: string; @@ -14,6 +21,3 @@ Alpine.data('greeting', (): GreetingComponent => ({ this.message = 'Message updated at ' + new Date().toLocaleTimeString(); } })); - -Alpine.start(); -