PageSourceSearch

https://antenahistoria.com/_static/??-eJyV0E1OAzEMBeALkcmAxN8CcRTk…bpLgCZdKd1u7hZMmS97v+e3++fX+elxfphfvgBvK6Yw

js antenahistoria.com collected 2026-10-04 13:24:01 UTC 220,233 bytes, 6,030 lines download raw bytes

1(()=>{const e=document.querySelectorAll(".coblocks-animate");if("IntersectionObserver"in window){const t=new IntersectionObserver((e=>{e.forEach((e=>{e.isIntersecting&&(e.target.classList.add(e.target.dataset.coblocksAnimation),t.unobserve(e.target))}))}),{threshold:[.15]});e.forEach((e=>{t.observe(e)}))}else e.forEach((e=>{e.classList.remove("coblocks-animate"),delete e.dataset.coblocksAnimation}))})();;
2(()=>{"use strict";var e={1669:e=>{e.exports=jQuery}},t={};function d(a){var n=t[a];if(void 0!==n)return n.exports;var o=t[a]={exports:{}};return e[a](o,o.exports,d),o.exports}function a(){return globalThis.eddCartLoadingState||(globalThis.eddCartLoadingState={active:new Map,sequence:0,hideTimer:null,overlay:null}),globalThis.eddCartLoadingState}function n(){const e=a();if(e.overlay)return e.overlay;const t=document.createElement("div");t.className="edd-cart-loading",t.setAttribute("role","status"),t.setAttribute("aria-live","polite"),t.hidden=!0;const d=document.createElement("span");d.className="edd-cart-loading__spinner",t.appendChild(d);const n=document.createElement("span");return n.className="edd-cart-loading__label screen-reader-text",n.textContent="undefined"!=typeof edd_global_vars&&edd_global_vars.purchase_loading||"Loading",t.appendChild(n),document.body.appendChild(t),e.overlay=t,t}function o(e){document.dispatchEvent(new CustomEvent("edd:loading-changed",{bubbles:!0,detail:{loading:e,count:a().active.size}}))}function i(e,t,d){const i=a(),r=0===i.active.size,s=setTimeout((()=>{"undefined"!=typeof edd_global_vars&&edd_global_vars.showStoreErrors&&console.warn(`edd-cart-loading: token "${e}" timed out and was released.`),c(e)}),d);i.active.set(e,{source:t,timer:s}),r&&(function(){const e=a();clearTimeout(e.hideTimer),e.hideTimer=null,n().hidden=!1;const t=document.getElementById("edd_checkout_form_wrap");t&&t.setAttribute("aria-busy","true")}(),o(!0))}function r(e="unknown",{timeout:t=8e3}={}){const d=`${e}-${++a().sequence}`;return i(d,e,t),d}function c(e){const t=a(),d=t.active.get(e);d&&(clearTimeout(d.timer),t.active.delete(e),0===t.active.size&&(clearTimeout(t.hideTimer),t.hideTimer=setTimeout((()=>{!function(){n().hidden=!0;const e=document.getElementById("edd_checkout_form_wrap");e&&e.removeAttribute("aria-busy")}(),o(!1)}),120)))}function s(e,t){const d=r(e);let a;try{a=t()}catch(e){throw c(d),e}return Promise.resolve(a).finally((()=>c(d)))}function _(){return a().active.size>0}function l(){return[...a().active.keys()]}var u=d(1669);let p=0;function m(e){if("1"!=edd_global_vars.taxes_enabled)return;const t=document.getElementById("edd_checkout_cart");if(!t)return;let d=0;const a=document.querySelector(".edd_cart_amount"),n=a?a.dataset.total||a.textContent:0,o=t.getElementsByClassName("edd_cart_tax_amount");for(let e=0;e<o.length;e++)d=o[e].dataset.tax;const i=u("#edd_cc_address"),s=i.find("#billing_country").val(),_=i.find("#card_address").val(),l=i.find("#card_address_2").val(),m=i.find("#card_city").val(),h=i.find("#card_state").val();e||(e=h);const g={action:"edd_recalculate_taxes",card_address:_,card_address_2:l,card_city:m,card_zip:i.find("#card_zip").val(),state:e,billing_country:s,nonce:u("#edd-checkout-address-fields-nonce").val(),current_page:edd_global_vars.current_page,current_tax_amount:d},f=++p,y=r("taxes"),v=new Object;return v.postdata=g,u.ajax({type:"POST",data:g,dataType:"json",url:edd_global_vars.ajaxurl,xhrFields:{withCredentials:!0},success:function(e){f===p&&(e?.html&&u("#edd_checkout_cart_form").replaceWith(e.html),e&&u(".edd_cart_amount").html(e.total),v.response=e,u("body").trigger("edd_taxes_recalculated",[v]))}}).fail((function(e){console.log("Tax recalculation failed:",e),f===p&&(v.response={success:!1,error:!0,tax_raw:v.postdata.current_tax_amount||0,total_raw:n,debug_data:e},u("body").trigger("edd_taxes_recalculated",[v]))})).always((function(){c(y)}))}var h=d(1669);const g={edd_cart_item_added:"item_added",edd_cart_item_removed:"item_removed",edd_quantity_updated:"quantity_updated",edd_discount_applied:"discount_applied",edd_discount_removed:"discount_removed",edd_taxes_recalculated:"taxes_recalculated"};let f=null;var y=d(1669);function v(e){const t=r("gateway-load");y(".edd-cart-ajax").show(),y("#edd_purchase_form_wrap").html("");const d=document.getElementById("edd-gateway-"+e).getAttribute("data-"+e+"-nonce");let a=edd_scripts.ajaxurl;a.indexOf("?")>0?a+="&":a+="?",a=a+"payment-mode="+e,y.post(a,{action:"edd_load_gateway",edd_payment_mode:e,nonce:d,current_page:edd_scripts.current_page},(function(t){y("#edd_purchase_form_wrap").html(t),y("body").trigger("edd_gateway_loaded",[e])})).always((function(){c(t)}))}y(document).ready((function(e){if(function(){if(void 0===h||globalThis.eddCartEventsBridged)return;globalThis.eddCartEventsBridged=!0;const e=h(document.body);Object.keys(g).forEach((t=>{e.on(t,(()=>{return e=g[t],clearTimeout(f),void(f=setTimeout((()=>{document.dispatchEvent(new CustomEvent("edd:cart-updated",{detail:{type:e}}))}),50));var e}))}))}(),globalThis.eddCartLoadingInitialized||(globalThis.eddCartLoadingInitialized=!0,n(),globalThis.eddCartLoading={begin:r,end:c,withLoading:s,isLoading:_,getActiveTokens:l},document.addEventListener("edd:loading-start",(e=>{const t=e.detail?.token;t&&!a().active.has(t)&&i(t,e.detail?.source||"external",8e3)})),document.addEventListener("edd:loading-end",(e=>{e.detail?.token&&c(e.detail.token)}))),e(".edd-add-to-cart:not(.edd-no-js)").addClass("edd-has-js"),e(document.body).on("click.eddRemoveFromCart",".edd-remove-from-cart",(function(t){const d=e(this),a=d.data("cart-item"),n=d.data("action"),o=d.data("download-id"),i=d.data("nonce"),r={action:n,cart_item:a,nonce:i,timestamp:d.data("timestamp"),token:d.data("token"),current_page:edd_scripts.current_page};return e.ajax({type:"POST",data:r,dataType:"json",url:edd_scripts.ajaxurl,xhrFields:{withCredentials:!0},success:function(t){if(t.removed){if(parseInt(edd_scripts.position_in_cart,10)===parseInt(a,10)||edd_scripts.has_purchase_links)return window.location=window.location,!1;e(".edd-cart").each((function(){e(this).find("[data-cart-item='"+a+"']").parent().remove()})),e(".edd-cart").each((function(){let t=0;
2e(this).find("[data-cart-item]").each((function(){e(this).attr("data-cart-item",t),t+=1}))})),e("[id^=edd_purchase_"+o+"]").length&&(e("[id^=edd_purchase_"+o+"] .edd_go_to_checkout").hide(),e("[id^=edd_purchase_"+o+"] .edd-add-to-cart.edd-has-js").show().removeAttr("data-edd-loading"),"1"===edd_scripts.quantities_enabled&&e("[id^=edd_purchase_"+o+"] .edd_download_quantity_wrapper").show()),e("span.edd-cart-quantity").text(t.cart_quantity),e(document.body).trigger("edd_quantity_updated",[t.cart_quantity]),edd_scripts.taxes_enabled&&(e(".cart_item.edd_subtotal span").html(t.subtotal),e(".cart_item.edd_cart_tax span").html(t.tax)),e(".cart_item.edd_total span").html(t.total),0===t.cart_quantity&&(e(".cart_item.edd_subtotal,.edd-cart-number-of-items,.cart_item.edd_checkout,.cart_item.edd_cart_tax,.cart_item.edd_total").hide(),e(".edd-cart").each((function(){const t=e(this).parent();t.length&&(t.addClass("cart-empty"),t.removeClass("cart-not-empty")),e(this).append('<li class="cart_item empty">'+edd_scripts.empty_cart_message+"</li>")}))),e(document.body).trigger("edd_cart_item_removed",[t])}}}).fail((function(e){window.console&&window.console.log&&console.log(e)})).done((function(e){})),!1})),e(document.body).on("click.eddAddToCart",".edd-add-to-cart",(function(t){t.preventDefault();var d=e(this),a=d.closest("form");d.prop("disabled",!0),d.find(".edd-loading");const n=d.closest("div");d.attr("data-edd-loading",""),a=d.parents("form").last();const o=d.data("download-id"),i=d.data("variable-price"),r=d.data("price-mode"),c=d.data("nonce"),s=[];let _=!0;if("yes"===i)if(a.find(".edd_price_option_"+o+'[type="hidden"]').length>0)s[0]=e(".edd_price_option_"+o,a).val(),a.find(".edd-submit").data("price")&&a.find(".edd-submit").data("price")>0&&(_=!1);else{if(!a.find(".edd_price_option_"+o+":checked",a).length)return d.removeAttr("data-edd-loading"),alert(edd_scripts.select_option),t.stopPropagation(),d.prop("disabled",!1),!1;a.find(".edd_price_option_"+o+":checked",a).each((function(t){if(s[t]=e(this).val(),!0===_){const t=e(this).data("price");t&&t>0&&(_=!1)}}))}else s[0]=o,d.data("price")&&d.data("price")>0&&(_=!1);if(_&&a.find(".edd_action_input").val("add_to_cart"),"straight_to_gateway"===a.find(".edd_action_input").val())return a.submit(),!0;const l={action:d.data("action"),download_id:o,price_ids:s,post_data:e(a).serialize(),nonce:c,current_page:edd_scripts.current_page,timestamp:d.data("timestamp"),token:d.data("token")};return e.ajax({type:"POST",data:l,dataType:"json",url:edd_scripts.ajaxurl,xhrFields:{withCredentials:!0},success:function(t){const c="1"===edd_scripts.redirect_to_checkout,s="1"===a.find("input[name=edd_redirect_to_checkout]").val();if(c&&s||!c&&s)window.location=edd_scripts.checkout_page;else{if("1"===edd_scripts.taxes_enabled&&(e(".cart_item.edd_subtotal").show(),e(".cart_item.edd_cart_tax").show()),e(".cart_item.edd_total").show(),e(".cart_item.edd_checkout").show(),e(".cart_item.empty").length&&e(".cart_item.empty").hide(),e(".widget_edd_cart_widget .edd-cart").each((function(d){const a=e(this).find(".edd-cart-meta:first");e(t.cart_item).insertBefore(a);const n=e(this).parent();n.length&&(n.addClass("cart-not-empty"),n.removeClass("cart-empty"))})),"1"===edd_scripts.taxes_enabled&&(e(".edd-cart-meta.edd_subtotal span").html(t.subtotal),e(".edd-cart-meta.edd_cart_tax span").html(t.tax)),e(".edd-cart-meta.edd_total span").html(t.total),e(".edd-cart-item-title",t.cart_item).length,e("span.edd-cart-quantity").each((function(){e(this).text(t.cart_quantity),e(document.body).trigger("edd_quantity_updated",[t.cart_quantity])})),"none"===e(".edd-cart-number-of-items").css("display")&&e(".edd-cart-number-of-items").show("slow"),"no"!==i&&"multi"===r||(e(".edd-add-to-cart.edd-has-js",n).toggle(),e(".edd_go_to_checkout",n).show()),"multi"===r&&d.removeAttr("data-edd-loading"),e(".edd_download_purchase_form").length&&("no"===i||!a.find(".edd_price_option_"+o).is("input:hidden"))){const t=e('.edd_download_purchase_form *[data-download-id="'+o+'"]').parents("form");e(".edd-add-to-cart",t).hide(),"multi"!==r&&t.find(".edd_download_quantity_wrapper").slideUp(),e(".edd_go_to_checkout",t).show().removeAttr("data-edd-loading")}
2"incart"!==t&&(e(".edd-cart-added-alert",n).fadeIn(),setTimeout((function(){e(".edd-cart-added-alert",n).fadeOut()}),3e3)),d.prop("disabled",!1),e(document.body).trigger("edd_cart_item_added",[t])}}}).fail((function(e){window.console&&window.console.log&&console.log(e)})).done((function(e){})),!1})),e("#edd_checkout_form_wrap").on("click",".edd_checkout_register_login",(function(){const t=e(this),d={action:t.data("action"),nonce:t.data("nonce")};return e(".edd-cart-ajax").show(),e.post(edd_scripts.ajaxurl,d,(function(t){e("#edd_checkout_login_register").html(edd_scripts.loading),e("#edd_checkout_login_register").html(t),e(".edd-cart-ajax").hide()})),!1})),e(document).on("click","#edd_purchase_form #edd_login_fields input[type=submit]",(function(t){t.preventDefault();const d=e(this).val();e(this).attr("data-original-value",d),e(this).val(edd_global_vars.purchase_loading),e(this).after('<span class="edd-loading-ajax edd-loading"></span>');const a={action:"edd_process_checkout_login",edd_ajax:1,edd_user_login:e("#edd_login_fields #edd_user_login").val(),edd_user_pass:e("#edd_login_fields #edd_user_pass").val(),edd_login_nonce:e("#edd_login_nonce").val()};e.post(edd_global_vars.ajaxurl,a,(function(t){"success"===t.trim()?(e(".edd_errors").remove(),window.location=edd_scripts.checkout_page):(e("#edd_login_fields input[type=submit]").val(d),e(".edd-loading-ajax").remove(),e(".edd_errors").remove(),e("#edd-user-login-submit").before(t))}))})),e(document).on("change","select#edd-gateway, input.edd-gateway",(function(t){const d=e("#edd-gateway option:selected, input.edd-gateway:checked").val();if(e(this).is("input.edd-gateway")&&e('input.edd-gateway[value="'+d+'"]').prop("checked","checked"),"0"===d)return!1;v(d)})),"1"===edd_scripts.is_checkout){let t=!1,d=!1;e("select#edd-gateway, input.edd-gateway").length&&(t=e("meta[name='edd-chosen-gateway']").attr("content"),d=!0),t||(t=edd_scripts.default_gateway),d?setTimeout((function(){v(t)}),200):setTimeout((function(){e("body").trigger("edd_gateway_loaded",[t])}),300)}function t(){const t=e(this),d="undefined"!=typeof edd_global_vars;let a="card_state";if("edd_address_country"===e(this).attr("id"))a="edd_address_state";else if(e(this).hasClass("address_country")){let t=e(this).closest("form").data("source");t&&(t=t.replace("edd-",""),a="edds_address_state_"+t)}const n=e("#"+a);if(a!==t.attr("id")&&n.length){const o={action:"edd_get_shop_states",country:t.val(),field_name:a,nonce:e(this).data("nonce")};e.ajax({type:"POST",data:o,url:edd_scripts.ajaxurl,xhrFields:{withCredentials:!0},success:function(t){let o="";o="nostates"===t.trim()?'<input type="text" id="'+a+'" name="card_state" class="card_state edd-input required" value=""/>':t,o&&n.replaceWith(o),d&&e(document.body).trigger("edd_cart_billing_address_updated",[t])}}).fail((function(e){window.console&&window.console.log&&console.log(e)})).done((function(e){d&&m()}))}else d&&m();return!1}e(document).on("click","#edd_purchase_form #edd_purchase_submit [type=submit]",(function(t){const d=document.getElementById("edd_purchase_form");if("function"==typeof d.checkValidity&&!1===d.checkValidity())return;t.preventDefault();const a=e(this).val();e(this).val(edd_global_vars.purchase_loading),e(this).prop("disabled",!0);const n=r("purchase");e.post(edd_global_vars.ajaxurl,e("#edd_purchase_form").serialize()+"&action=edd_process_checkout&edd_ajax=true",(function(t){"success"===t.trim()?(e(".edd_errors").remove(),e(".edd-error").hide(),e(d).submit()):(c(n),e("#edd-purchase-button").val(a),e(".edd_errors").remove(),e(".edd-error").hide(),e(edd_global_vars.checkout_error_anchor).before(t),e("#edd-purchase-button").prop("disabled",!1),e(document.body).trigger("edd_checkout_error",[t]))}))})),e(document.body).on("change","#edd_cc_address input.card_state, #edd_cc_address select, #edd_address_country, .edd-stripe-card-item .card-address-fields .address_country",t),window.update_state_field=t,e(document.body).on("change","#edd_cc_address input[name=card_zip]",(function(){"undefined"!=typeof edd_global_vars&&m()}))})),window.edd_load_gateway=v})();;
3/*
4 * jQuery Superfish Menu Plugin
5 * Copyright (c) 2013 Joel Birch
6 *
7 * Dual licensed under the MIT and GPL licenses:
8 *	http://www.opensource.org/licenses/mit-license.php
9 *	http://www.gnu.org/licenses/gpl.html
10 */
11
12(function ($, w) {
13	"use strict";
14
15	var methods = (function () {
16		// private properties and methods go here
17		var c = {
18				bcClass: 'sf-breadcrumb',
19				menuClass: 'sf-js-enabled',
20				anchorClass: 'sf-with-ul',
21				menuArrowClass: 'sf-arrows'
22			},
23			ios = (function () {
24				var ios = /^(?![\w\W]*Windows Phone)[\w\W]*(iPhone|iPad|iPod)/i.test(navigator.userAgent);
25				if (ios) {
26					// tap anywhere on iOS to unfocus a submenu
27					$('html').css('cursor', 'pointer').on('click', $.noop);
28				}
29				return ios;
30			})(),
31			wp7 = (function () {
32				var style = document.documentElement.style;
33				return ('behavior' in style && 'fill' in style && /iemobile/i.test(navigator.userAgent));
34			})(),
35			unprefixedPointerEvents = (function () {
36				return (!!w.PointerEvent);
37			})(),
38			toggleMenuClasses = function ($menu, o) {
39				var classes = c.menuClass;
40				if (o.cssArrows) {
41					classes += ' ' + c.menuArrowClass;
42				}
vendor: 4,959 bytes, lines 43-220
43				$menu.toggleClass(classes);
44			},
45			setPathToCurrent = function ($menu, o) {
46				return $menu.find('li.' + o.pathClass).slice(0, o.pathLevels)
47					.addClass(o.hoverClass + ' ' + c.bcClass)
48						.filter(function () {
49							return ($(this).children(o.popUpSelector).hide().show().length);
50						}).removeClass(o.pathClass);
51			},
52			toggleAnchorClass = function ($li) {
53				$li.children('a').toggleClass(c.anchorClass);
54			},
55			toggleTouchAction = function ($menu) {
56				var msTouchAction = $menu.css('ms-touch-action');
57				var touchAction = $menu.css('touch-action');
58				touchAction = touchAction || msTouchAction;
59				touchAction = (touchAction === 'pan-y') ? 'auto' : 'pan-y';
60				$menu.css({
61					'ms-touch-action': touchAction,
62					'touch-action': touchAction
63				});
64			},
65			applyHandlers = function ($menu, o) {
66				var targets = 'li:has(' + o.popUpSelector + ')';
67				if ($.fn.hoverIntent && !o.disableHI) {
68					$menu.hoverIntent(over, out, targets);
69				}
70				else {
71					$menu
72						.on('mouseenter.superfish', targets, over)
73						.on('mouseleave.superfish', targets, out);
74				}
75				var touchevent = 'MSPointerDown.superfish';
76				if (unprefixedPointerEvents) {
77					touchevent = 'pointerdown.superfish';
78				}
79				if (!ios) {
80					touchevent += ' touchend.superfish';
81				}
82				if (wp7) {
83					touchevent += ' mousedown.superfish';
84				}
85				$menu
86					.on('focusin.superfish', 'li', over)
87					.on('focusout.superfish', 'li', out)
88					.on(touchevent, 'a', o, touchHandler);
89			},
90			touchHandler = function (e) {
91				var $this = $(this),
92					o = getOptions($this),
93					$ul = $this.siblings(e.data.popUpSelector);
94
95				if (o.onHandleTouch.call($ul) === false) {
96					return this;
97				}
98
99				if ($ul.length > 0 && $ul.is(':hidden')) {
100					$this.one('click.superfish', false);
101					if (e.type === 'MSPointerDown' || e.type === 'pointerdown') {
102						$this.trigger('focus');
103					} else {
104						$.proxy(over, $this.parent('li'))();
105					}
106				}
107			},
108			over = function () {
109				var $this = $(this),
110					o = getOptions($this);
111				clearTimeout(o.sfTimer);
112				$this.siblings().superfish('hide').end().superfish('show');
113			},
114			out = function () {
115				var $this = $(this),
116					o = getOptions($this);
117				if (ios) {
118					$.proxy(close, $this, o)();
119				}
120				else {
121					clearTimeout(o.sfTimer);
122					o.sfTimer = setTimeout($.proxy(close, $this, o), o.delay);
123				}
124			},
125			close = function (o) {
126				o.retainPath = ($.inArray(this[0], o.$path) > -1);
127				this.superfish('hide');
128
129				if (!this.parents('.' + o.hoverClass).length) {
130					o.onIdle.call(getMenu(this));
131					if (o.$path.length) {
132						$.proxy(over, o.$path)();
133					}
134				}
135			},
136			getMenu = function ($el) {
137				return $el.closest('.' + c.menuClass);
138			},
139			getOptions = function ($el) {
140				return getMenu($el).data('sf-options');
141			};
142
143		return {
144			// public methods
145			hide: function (instant) {
146				if (this.length) {
147					var $this = this,
148						o = getOptions($this);
149					if (!o) {
150						return this;
151					}
152					var not = (o.retainPath === true) ? o.$path : '',
153						$ul = $this.find('li.' + o.hoverClass).add(this).not(not).removeClass(o.hoverClass).children(o.popUpSelector),
154						speed = o.speedOut;
155
156					if (instant) {
157						$ul.show();
158						speed = 0;
159					}
160					o.retainPath = false;
161
162					if (o.onBeforeHide.call($ul) === false) {
163						return this;
164					}
165
166					$ul.stop(true, true).animate(o.animationOut, speed, function () {
167						var $this = $(this);
168						o.onHide.call($this);
169					});
170				}
171				return this;
172			},
173			show: function () {
174				var o = getOptions(this);
175				if (!o) {
176					return this;
177				}
178				var $this = this.addClass(o.hoverClass),
179					$ul = $this.children(o.popUpSelector);
180
181				if (o.onBeforeShow.call($ul) === false) {
182					return this;
183				}
184
185				$ul.stop(true, true).animate(o.animation, o.speed, function () {
186					o.onShow.call($ul);
187				});
188				return this;
189			},
190			destroy: function () {
191				return this.each(function () {
192					var $this = $(this),
193						o = $this.data('sf-options'),
194						$hasPopUp;
195					if (!o) {
196						return false;
197					}
198					$hasPopUp = $this.find(o.popUpSelector).parent('li');
199					clearTimeout(o.sfTimer);
200					toggleMenuClasses($this, o);
201					toggleAnchorClass($hasPopUp);
202					toggleTouchAction($this);
203					// remove event handlers
204					$this.off('.superfish').off('.hoverIntent');
205					// clear animation's inline display style
206					$hasPopUp.children(o.popUpSelector).attr('style', function (i, style) {
207						return style.replace(/display[^;]+;?/g, '');
208					});
209					// reset 'current' path classes
210					o.$path.removeClass(o.hoverClass + ' ' + c.bcClass).addClass(o.pathClass);
211					$this.find('.' + o.hoverClass).removeClass(o.hoverClass);
212					o.onDestroy.call($this);
213					$this.removeData('sf-options');
214				});
215			},
216			init: function (op) {
217				return this.each(function () {
218					var $this = $(this);
219					if ($this.data('sf-options')) {
220						return false;
221					}
222					var o = $.extend({}, $.fn.superfish.defaults, op),
223						$hasPopUp = $this.find(o.popUpSelector).parent('li');
224					o.$path = setPathToCurrent($this, o);
225
226					$this.data('sf-options', o);
227
228					toggleMenuClasses($this, o);
229					toggleAnchorClass($hasPopUp);
230					toggleTouchAction($this);
231					applyHandlers($this, o);
232
233					$hasPopUp.not('.' + c.bcClass).superfish('hide', true);
234
235					o.onInit.call(this);
236				});
237			}
238		};
239	})();
240
241	$.fn.superfish = function (method, args) {
242		if (methods[method]) {
243			return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
244		}
245		else if (typeof method === 'object' || ! method) {
246			return methods.init.apply(this, arguments);
247		}
248		else {
249			return $.error('Method ' +  method + ' does not exist on jQuery.fn.superfish');
250		}
251	};
252
253	$.fn.superfish.defaults = {
254		popUpSelector: 'ul,.sf-mega', // within menu context
255		hoverClass: 'sfHover',
256		pathClass: 'overrideThisToUse',
257		pathLevels: 1,
258		delay: 800,
259		animation: {opacity: 'show'},
260		animationOut: {opacity: 'hide'},
261		speed: 'normal',
262		speedOut: 'fast',
263		cssArrows: true,
264		disableHI: false,
265		onInit: $.noop,
266		onBeforeShow: $.noop,
267		onShow: $.noop,
268		onBeforeHide: $.noop,
269		onHide: $.noop,
270		onIdle: $.noop,
271		onDestroy: $.noop,
272		onHandleTouch: $.noop
273	};
274
275})(jQuery, window);;
276/*!
277  * Bootstrap v5.0.1 (https://getbootstrap.com/)
278  * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
279  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
280  */
281(function (global, factory) {
282  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@popperjs/core')) :
283  typeof define === 'function' && define.amd ? define(['@popperjs/core'], factory) :
284  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.bootstrap = factory(global.Popper));
285}(this, (function (Popper) { 'use strict';
286
287  function _interopNamespace(e) {
288    if (e && e.__esModule) return e;
289    var n = Object.create(null);
290    if (e) {
291      Object.keys(e).forEach(function (k) {
292        if (k !== 'default') {
293          var d = Object.getOwnPropertyDescriptor(e, k);
294          Object.defineProperty(n, k, d.get ? d : {
295            enumerable: true,
296            get: function () {
297              return e[k];
298            }
299          });
300        }
301      });
302    }
303    n['default'] = e;
304    return Object.freeze(n);
305  }
306
307  var Popper__namespace = /*#__PURE__*/_interopNamespace(Popper);
308
309  /**
310   * --------------------------------------------------------------------------
311   * Bootstrap (v5.0.1): dom/selector-engine.js
312   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
313   * --------------------------------------------------------------------------
314   */
315
316  /**
317   * ------------------------------------------------------------------------
318   * Constants
319   * ------------------------------------------------------------------------
320   */
321  const NODE_TEXT = 3;
322  const SelectorEngine = {
323    find(selector, element = document.documentElement) {
324      return [].concat(...Element.prototype.querySelectorAll.call(element, selector));
325    },
326
327    findOne(selector, element = document.documentElement) {
328      return Element.prototype.querySelector.call(element, selector);
329    },
330
331    children(element, selector) {
332      return [].concat(...element.children).filter(child => child.matches(selector));
333    },
334
335    parents(element, selector) {
336      const parents = [];
337      let ancestor = element.parentNode;
338
339      while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {
340        if (ancestor.matches(selector)) {
341          parents.push(ancestor);
342        }
343
344        ancestor = ancestor.parentNode;
345      }
346
347      return parents;
348    },
349
350    prev(element, selector) {
351      let previous = element.previousElementSibling;
352
353      while (previous) {
354        if (previous.matches(selector)) {
355          return [previous];
356        }
357
358        previous = previous.previousElementSibling;
359      }
360
361      return [];
362    },
363
364    next(element, selector) {
365      let next = element.nextElementSibling;
366
367      while (next) {
368        if (next.matches(selector)) {
369          return [next];
370        }
371
372        next = next.nextElementSibling;
373      }
374
375      return [];
376    }
377
378  };
379
380  /**
381   * --------------------------------------------------------------------------
382   * Bootstrap (v5.0.1): util/index.js
383   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
384   * --------------------------------------------------------------------------
385   */
386
387  const MAX_UID = 1000000;
388  const MILLISECONDS_MULTIPLIER = 1000;
389  const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
390
391  const toType = obj => {
392    if (obj === null || obj === undefined) {
393      return `${obj}`;
394    }
395
396    return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
397  };
398  /**
399   * --------------------------------------------------------------------------
400   * Public Util Api
401   * --------------------------------------------------------------------------
402   */
403
404
405  const getUID = prefix => {
406    do {
407      prefix += Math.floor(Math.random() * MAX_UID);
408    } while (document.getElementById(prefix));
409
410    return prefix;
411  };
412
413  const getSelector = element => {
414    let selector = element.getAttribute('data-bs-target');
415
416    if (!selector || selector === '#') {
417      let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,
418      // so everything starting with `#` or `.`. If a "real" URL is used as the selector,
419      // `document.querySelector` will rightfully complain it is invali
vendor: 2,314 bytes, lines 419-504
419d.
420      // See https://github.com/twbs/bootstrap/issues/32273
421
422      if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {
423        return null;
424      } // Just in case some CMS puts out a full URL with the anchor appended
425
426
427      if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {
428        hrefAttr = `#${hrefAttr.split('#')[1]}`;
429      }
430
431      selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
432    }
433
434    return selector;
435  };
436
437  const getSelectorFromElement = element => {
438    const selector = getSelector(element);
439
440    if (selector) {
441      return document.querySelector(selector) ? selector : null;
442    }
443
444    return null;
445  };
446
447  const getElementFromSelector = element => {
448    const selector = getSelector(element);
449    return selector ? document.querySelector(selector) : null;
450  };
451
452  const getTransitionDurationFromElement = element => {
453    if (!element) {
454      return 0;
455    } // Get transition-duration of the element
456
457
458    let {
459      transitionDuration,
460      transitionDelay
461    } = window.getComputedStyle(element);
462    const floatTransitionDuration = Number.parseFloat(transitionDuration);
463    const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
464
465    if (!floatTransitionDuration && !floatTransitionDelay) {
466      return 0;
467    } // If multiple durations are defined, take the first
468
469
470    transitionDuration = transitionDuration.split(',')[0];
471    transitionDelay = transitionDelay.split(',')[0];
472    return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
473  };
474
475  const triggerTransitionEnd = element => {
476    element.dispatchEvent(new Event(TRANSITION_END));
477  };
478
479  const isElement = obj => {
480    if (!obj || typeof obj !== 'object') {
481      return false;
482    }
483
484    if (typeof obj.jquery !== 'undefined') {
485      obj = obj[0];
486    }
487
488    return typeof obj.nodeType !== 'undefined';
489  };
490
491  const getElement = obj => {
492    if (isElement(obj)) {
493      // it's a jQuery object or a node element
494      return obj.jquery ? obj[0] : obj;
495    }
496
497    if (typeof obj === 'string' && obj.length > 0) {
498      return SelectorEngine.findOne(obj);
499    }
500
501    return null;
502  };
503
504  const emulateTransitionEnd = (element, duration) => {
505    let called = false;
506    const durationPadding = 5;
507    const emulatedDuration = duration + durationPadding;
508
509    function listener() {
510      called = true;
511      element.removeEventListener(TRANSITION_END, listener);
512    }
513
514    element.addEventListener(TRANSITION_END, listener);
515    setTimeout(() => {
516      if (!called) {
517        triggerTransitionEnd(element);
518      }
519    }, emulatedDuration);
520  };
521
522  const typeCheckConfig = (componentName, config, configTypes) => {
523    Object.keys(configTypes).forEach(property => {
524      const expectedTypes = configTypes[property];
525      const value = config[property];
526      const valueType = value && isElement(value) ? 'element' : toType(value);
527
528      if (!new RegExp(expectedTypes).test(valueType)) {
529        throw new TypeError(`${componentName.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
530      }
531    });
532  };
533
534  const isVisible = element => {
535    if (!element) {
536      return false;
537    }
538
539    if (element.style && element.parentNode && element.parentNode.style) {
540      const elementStyle = getComputedStyle(element);
541      const parentNodeStyle = getComputedStyle(element.parentNode);
542      return elementStyle.display !== 'none' && parentNodeStyle.display !== 'none' && elementStyle.visibility !== 'hidden';
543    }
544
545    return false;
546  };
547
548  const isDisabled = element => {
549    if (!element || element.nodeType !== Node.ELEMENT_NODE) {
550      return true;
551    }
552
553    if (element.classList.contains('disabled')) {
554      return true;
555    }
556
557    if (typeof element.disabled !== 'undefined') {
558      return element.disabled;
559    }
560
561    return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';
562  };
563
564  const findShadowRoot = element => {
565    if (!document.documentElement.attachShadow) {
566      return null;
567    } // Can find the shadow root otherwise it'll return the document
568
569
570    if (typeof element.getRootNode === 'function') {
571      const root = element.getRootNode();
572      return root instanceof ShadowRoot ? root : null;
573    }
574
575    if (element instanceof ShadowRoot) {
576      return element;
577    } // when we don't find a shadow root
578
579
580    if (!element.parentNode) {
581      return null;
582    }
583
584    return findShadowRoot(element.parentNode);
585  };
586
587  const noop = () => {};
588
589  const reflow = element => element.offsetHeight;
590
591  const getjQuery = () => {
592    const {
593      jQuery
594    } = window;
595
596    if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
597      return jQuery;
598    }
599
600    return null;
601  };
602
603  const onDOMContentLoaded = callback => {
604    if (document.readyState === 'loading') {
605      document.addEventListener('DOMContentLoaded', callback);
606    } else {
607      callback();
608    }
609  };
610
611  const isRTL = () => document.documentElement.dir === 'rtl';
612
613  const defineJQueryPlugin = plugin => {
614    onDOMContentLoaded(() => {
615      const $ = getjQuery();
616      /* istanbul ignore if */
617
618      if ($) {
619        const name = plugin.NAME;
620        const JQUERY_NO_CONFLICT = $.fn[name];
621        $.fn[name] = plugin.jQueryInterface;
622        $.fn[name].Constructor = plugin;
623
624        $.fn[name].noConflict = () => {
625          $.fn[name] = JQUERY_NO_CONFLICT;
626          return plugin.jQueryInterface;
627        };
628      }
629    });
630  };
631
632  const execute = callback => {
633    if (typeof callback === 'function') {
634      callback();
635    }
636  };
637
638  /**
639   * --------------------------------------------------------------------------
640   * Bootstrap (v5.0.1): dom/data.js
641   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
642   * --------------------------------------------------------------------------
643   */
644
645  /**
646   * ------------------------------------------------------------------------
647   * Constants
648   * ------------------------------------------------------------------------
649   */
650  const elementMap = new Map();
651  var Data = {
652    set(element, key, instance) {
653      if (!elementMap.has(element)) {
654        elementMap.set(element, new Map());
655      }
656
657      const instanceMap = elementMap.get(element); // make it clear we only want one instance per element
658      // can be removed later when multiple key/instances are fine to be used
659
660      if (!instanceMap.has(key) && instanceMap.size !== 0) {
661        // eslint-disable-next-line no-console
662        console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);
663        return;
664      }
665
666      instanceMap.set(key, instance);
667    },
668
669    get(element, key) {
670      if (elementMap.has(element)) {
671        return elementMap.get(element).get(key) || null;
672      }
673
674      return null;
675    },
676
677    remove(element, key) {
678      if (!elementMap.has(element)) {
679        return;
680      }
681
682      const instanceMap = elementMap.get(element);
683      instanceMap.delete(key); // free up element references if there are no instances left for an element
684
685      if (instanceMap.size === 0) {
686        elementMap.delete(element);
687      }
688    }
689
690  };
691
692  /**
693   * --------------------------------------------------------------------------
694   * Bootstrap (v5.0.1): dom/event-handler.js
695   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
696   * --------------------------------------------------------------------------
697   */
698  /**
699   * ------------------------------------------------------------------------
700   * Constants
701   * ------------------------------------------------------------------------
702   */
703
704  const namespaceRegex = /[^.]*(?=\..*)\.|.*/;
705  const stripNameRegex = /\..*/;
706  const stripUidRegex = /::\d+$/;
707  const eventRegistry = {}; // Events storage
708
709  let uidEvent = 1;
710  const customEvents = {
711    mouseenter: 'mouseover',
712    mouseleave: 'mouseout'
713  };
vendor: 9,768 bytes, lines 714-1009
714  const customEventsRegex = /^(mouseenter|mouseleave)/i;
715  const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);
716  /**
717   * ------------------------------------------------------------------------
718   * Private methods
719   * ------------------------------------------------------------------------
720   */
721
722  function getUidEvent(element, uid) {
723    return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;
724  }
725
726  function getEvent(element) {
727    const uid = getUidEvent(element);
728    element.uidEvent = uid;
729    eventRegistry[uid] = eventRegistry[uid] || {};
730    return eventRegistry[uid];
731  }
732
733  function bootstrapHandler(element, fn) {
734    return function handler(event) {
735      event.delegateTarget = element;
736
737      if (handler.oneOff) {
738        EventHandler.off(element, event.type, fn);
739      }
740
741      return fn.apply(element, [event]);
742    };
743  }
744
745  function bootstrapDelegationHandler(element, selector, fn) {
746    return function handler(event) {
747      const domElements = element.querySelectorAll(selector);
748
749      for (let {
750        target
751      } = event; target && target !== this; target = target.parentNode) {
752        for (let i = domElements.length; i--;) {
753          if (domElements[i] === target) {
754            event.delegateTarget = target;
755
756            if (handler.oneOff) {
757              // eslint-disable-next-line unicorn/consistent-destructuring
758              EventHandler.off(element, event.type, selector, fn);
759            }
760
761            return fn.apply(target, [event]);
762          }
763        }
764      } // To please ESLint
765
766
767      return null;
768    };
769  }
770
771  function findHandler(events, handler, delegationSelector = null) {
772    const uidEventList = Object.keys(events);
773
774    for (let i = 0, len = uidEventList.length; i < len; i++) {
775      const event = events[uidEventList[i]];
776
777      if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {
778        return event;
779      }
780    }
781
782    return null;
783  }
784
785  function normalizeParams(originalTypeEvent, handler, delegationFn) {
786    const delegation = typeof handler === 'string';
787    const originalHandler = delegation ? delegationFn : handler;
788    let typeEvent = getTypeEvent(originalTypeEvent);
789    const isNative = nativeEvents.has(typeEvent);
790
791    if (!isNative) {
792      typeEvent = originalTypeEvent;
793    }
794
795    return [delegation, originalHandler, typeEvent];
796  }
797
798  function addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {
799    if (typeof originalTypeEvent !== 'string' || !element) {
800      return;
801    }
802
803    if (!handler) {
804      handler = delegationFn;
805      delegationFn = null;
806    } // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position
807    // this prevents the handler from being dispatched the same way as mouseover or mouseout does
808
809
810    if (customEventsRegex.test(originalTypeEvent)) {
811      const wrapFn = fn => {
812        return function (event) {
813          if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {
814            return fn.call(this, event);
815          }
816        };
817      };
818
819      if (delegationFn) {
820        delegationFn = wrapFn(delegationFn);
821      } else {
822        handler = wrapFn(handler);
823      }
824    }
825
826    const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);
827    const events = getEvent(element);
828    const handlers = events[typeEvent] || (events[typeEvent] = {});
829    const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null);
830
831    if (previousFn) {
832      previousFn.oneOff = previousFn.oneOff && oneOff;
833      return;
834    }
835
836    const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''));
837    const fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler);
838    fn.delegationSelector = delegation ? handler : null;
839    fn.originalHandler = originalHandler;
840    fn.oneOff = oneOff;
841    fn.uidEvent = uid;
842    handlers[uid] = fn;
843    element.addEventListener(typeEvent, fn, delegation);
844  }
845
846  function removeHandler(element, events, typeEvent, handler, delegationSelector) {
847    const fn = findHandler(events[typeEvent], handler, delegationSelector);
848
849    if (!fn) {
850      return;
851    }
852
853    element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));
854    delete events[typeEvent][fn.uidEvent];
855  }
856
857  function removeNamespacedHandlers(element, events, typeEvent, namespace) {
858    const storeElementEvent = events[typeEvent] || {};
859    Object.keys(storeElementEvent).forEach(handlerKey => {
860      if (handlerKey.includes(namespace)) {
861        const event = storeElementEvent[handlerKey];
862        removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);
863      }
864    });
865  }
866
867  function getTypeEvent(event) {
868    // allow to get the native events from namespaced events ('click.bs.button' --> 'click')
869    event = event.replace(stripNameRegex, '');
870    return customEvents[event] || event;
871  }
872
873  const EventHandler = {
874    on(element, event, handler, delegationFn) {
875      addHandler(element, event, handler, delegationFn, false);
876    },
877
878    one(element, event, handler, delegationFn) {
879      addHandler(element, event, handler, delegationFn, true);
880    },
881
882    off(element, originalTypeEvent, handler, delegationFn) {
883      if (typeof originalTypeEvent !== 'string' || !element) {
884        return;
885      }
886
887      const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);
888      const inNamespace = typeEvent !== originalTypeEvent;
889      const events = getEvent(element);
890      const isNamespace = originalTypeEvent.startsWith('.');
891
892      if (typeof originalHandler !== 'undefined') {
893        // Simplest case: handler is passed, remove that listener ONLY.
894        if (!events || !events[typeEvent]) {
895          return;
896        }
897
898        removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null);
899        return;
900      }
901
902      if (isNamespace) {
903        Object.keys(events).forEach(elementEvent => {
904          removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
905        });
906      }
907
908      const storeElementEvent = events[typeEvent] || {};
909      Object.keys(storeElementEvent).forEach(keyHandlers => {
910        const handlerKey = keyHandlers.replace(stripUidRegex, '');
911
912        if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
913          const event = storeElementEvent[keyHandlers];
914          removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);
915        }
916      });
917    },
918
919    trigger(element, event, args) {
920      if (typeof event !== 'string' || !element) {
921        return null;
922      }
923
924      const $ = getjQuery();
925      const typeEvent = getTypeEvent(event);
926      const inNamespace = event !== typeEvent;
927      const isNative = nativeEvents.has(typeEvent);
928      let jQueryEvent;
929      let bubbles = true;
930      let nativeDispatch = true;
931      let defaultPrevented = false;
932      let evt = null;
933
934      if (inNamespace && $) {
935        jQueryEvent = $.Event(event, args);
936        $(element).trigger(jQueryEvent);
937        bubbles = !jQueryEvent.isPropagationStopped();
938        nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();
939        defaultPrevented = jQueryEvent.isDefaultPrevented();
940      }
941
942      if (isNative) {
943        evt = document.createEvent('HTMLEvents');
944        evt.initEvent(typeEvent, bubbles, true);
945      } else {
946        evt = new CustomEvent(event, {
947          bubbles,
948          cancelable: true
949        });
950      } // merge custom information in our event
951
952
953      if (typeof args !== 'undefined') {
954        Object.keys(args).forEach(key => {
955          Object.defineProperty(evt, key, {
956            get() {
957              return args[key];
958            }
959
960          });
961        });
962      }
963
964      if (defaultPrevented) {
965        evt.preventDefault();
966      }
967
968      if (nativeDispatch) {
969        element.dispatchEvent(evt);
970      }
971
972      if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {
973        jQueryEvent.preventDefault();
974      }
975
976      return evt;
977    }
978
979  };
980
981  /**
982   * --------------------------------------------------------------------------
983   * Bootstrap (v5.0.1): base-component.js
984   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
985   * --------------------------------------------------------------------------
986   */
987  /**
988   * ------------------------------------------------------------------------
989   * Constants
990   * ------------------------------------------------------------------------
991   */
992
993  const VERSION = '5.0.1';
994
995  class BaseComponent {
996    constructor(element) {
997      element = getElement(element);
998
999      if (!element) {
1000        return;
1001      }
1002
1003      this._element = element;
1004      Data.set(this._element, this.constructor.DATA_KEY, this);
1005    }
1006
1007    dispose() {
1008      Data.remove(this._element, this.constructor.DATA_KEY);
1009      EventHandler.off(this._element, this.constructor.EVENT_KEY);
1010      Object.getOwnPropertyNames(this).forEach(propertyName => {
1011        this[propertyName] = null;
1012      });
1013    }
1014
1015    _queueCallback(callback, element, isAnimated = true) {
1016      if (!isAnimated) {
1017        execute(callback);
1018        return;
1019      }
1020
1021      const transitionDuration = getTransitionDurationFromElement(element);
1022      EventHandler.one(element, 'transitionend', () => execute(callback));
1023      emulateTransitionEnd(element, transitionDuration);
1024    }
1025    /** Static */
1026
1027
1028    static getInstance(element) {
1029      return Data.get(element, this.DATA_KEY);
1030    }
1031
1032    static get VERSION() {
1033      return VERSION;
1034    }
1035
1036    static get NAME() {
1037      throw new Error('You have to implement the static method "NAME", for each component!');
1038    }
1039
1040    static get DATA_KEY() {
1041      return `bs.${this.NAME}`;
1042    }
1043
1044    static get EVENT_KEY() {
1045      return `.${this.DATA_KEY}`;
1046    }
1047
1048  }
1049
1050  /**
1051   * --------------------------------------------------------------------------
1052   * Bootstrap (v5.0.1): alert.js
1053   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1054   * --------------------------------------------------------------------------
1055   */
1056  /**
1057   * ------------------------------------------------------------------------
1058   * Constants
1059   * ------------------------------------------------------------------------
1060   */
1061
1062  const NAME$c = 'alert';
1063  const DATA_KEY$b = 'bs.alert';
1064  const EVENT_KEY$b = `.${DATA_KEY$b}`;
1065  const DATA_API_KEY$8 = '.data-api';
1066  const SELECTOR_DISMISS = '[data-bs-dismiss="alert"]';
1067  const EVENT_CLOSE = `close${EVENT_KEY$b}`;
1068  const EVENT_CLOSED = `closed${EVENT_KEY$b}`;
1069  const EVENT_CLICK_DATA_API$7 = `click${EVENT_KEY$b}${DATA_API_KEY$8}`;
1070  const CLASS_NAME_ALERT = 'alert';
1071  const CLASS_NAME_FADE$6 = 'fade';
1072  const CLASS_NAME_SHOW$9 = 'show';
1073  /**
1074   * ------------------------------------------------------------------------
1075   * Class Definition
1076   * ------------------------------------------------------------------------
1077   */
1078
1079  class Alert extends BaseComponent {
1080    // Getters
1081    static get NAME() {
1082      return NAME$c;
1083    } // Public
1084
1085
1086    close(element) {
1087      const rootElement = element ? this._getRootElement(element) : this._element;
1088
1089      const customEvent = this._triggerCloseEvent(rootElement);
1090
1091      if (customEvent === null || customEvent.defaultPrevented) {
1092        return;
1093      }
1094
1095      this._removeElement(rootElement);
1096    } // Private
1097
1098
1099    _getRootElement(element) {
1100      return getElementFromSelector(element) || element.closest(`.${CLASS_NAME_ALERT}`);
1101    }
1102
1103    _triggerCloseEvent(element) {
1104      return EventHandler.trigger(element, EVENT_CLOSE);
1105    }
1106
1107    _removeElement(element) {
1108      element.classList.remove(CLASS_NAME_SHOW$9);
1109      const isAnimated = element.classList.contains(CLASS_NAME_FADE$6);
1110
1111      this._queueCallback(() => this._destroyElement(element), element, isAnimated);
1112    }
1113
1114    _destroyElement(element) {
1115      if (element.parentNode) {
1116        element.parentNode.removeChild(element);
1117      }
1118
1119      EventHandler.trigger(element, EVENT_CLOSED);
1120    } // Static
1121
1122
1123    static jQueryInterface(config) {
1124      return this.each(function () {
1125        let data = Data.get(this, DATA_KEY$b);
1126
1127        if (!data) {
1128          data = new Alert(this);
1129        }
1130
1131        if (config === 'close') {
1132          data[config](this);
1133        }
1134      });
1135    }
1136
1137    static handleDismiss(alertInstance) {
1138      return function (event) {
1139        if (event) {
1140          event.preventDefault();
1141        }
1142
1143        alertInstance.close(this);
1144      };
1145    }
1146
1147  }
1148  /**
1149   * ------------------------------------------------------------------------
1150   * Data Api implementation
1151   * ------------------------------------------------------------------------
1152   */
1153
1154
1155  EventHandler.on(document, EVENT_CLICK_DATA_API$7, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()));
1156  /**
1157   * ------------------------------------------------------------------------
1158   * jQuery
1159   * ------------------------------------------------------------------------
1160   * add .Alert to jQuery only if jQuery is present
1161   */
1162
1163  defineJQueryPlugin(Alert);
1164
1165  /**
1166   * --------------------------------------------------------------------------
1167   * Bootstrap (v5.0.1): button.js
1168   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1169   * --------------------------------------------------------------------------
1170   */
1171  /**
1172   * ------------------------------------------------------------------------
1173   * Constants
1174   * ------------------------------------------------------------------------
1175   */
1176
1177  const NAME$b = 'button';
1178  const DATA_KEY$a = 'bs.button';
1179  const EVENT_KEY$a = `.${DATA_KEY$a}`;
1180  const DATA_API_KEY$7 = '.data-api';
1181  const CLASS_NAME_ACTIVE$3 = 'active';
1182  const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]';
1183  const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$7}`;
1184  /**
1185   * ------------------------------------------------------------------------
1186   * Class Definition
1187   * ------------------------------------------------------------------------
1188   */
1189
1190  class Button extends BaseComponent {
1191    // Getters
1192    static get NAME() {
1193      return NAME$b;
1194    } // Public
1195
1196
1197    toggle() {
1198      // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method
1199      this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));
1200    } // Static
1201
1202
1203    static jQueryInterface(config) {
1204      return this.each(function () {
1205        let data = Data.get(this, DATA_KEY$a);
1206
1207        if (!data) {
1208          data = new Button(this);
1209        }
1210
1211        if (config === 'toggle') {
1212          data[config]();
1213        }
1214      });
1215    }
1216
1217  }
1218  /**
1219   * ------------------------------------------------------------------------
1220   * Data Api implementation
1221   * ------------------------------------------------------------------------
1222   */
1223
1224
1225  EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {
1226    event.preventDefault();
1227    const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);
1228    let data = Data.get(button, DATA_KEY$a);
1229
1230    if (!data) {
1231      data = new Button(button);
1232    }
1233
1234    data.toggle();
1235  });
1236  /**
1237   * ------------------------------------------------------------------------
1238   * jQuery
1239   * ------------------------------------------------------------------------
1240   * add .Button to jQuery only if jQuery is present
1241   */
1242
1243  defineJQueryPlugin(Button);
1244
1245  /**
1246   * --------------------------------------------------------------------------
1247   * Bootstrap (v5.0.1): dom/manipulator.js
1248   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1249   * --------------------------------------------------------------------------
1250   */
1251  function normalizeData(val) {
1252    if (val === 'true') {
1253      return true;
1254    }
1255
1256    if (val === 'false') {
1257      return false;
1258    }
1259
1260    if (val === Number(val).toString()) {
1261      return Number(val);
1262    }
1263
1264    if (val === '' || val === 'null') {
1265      return null;
1266    }
1267
1268    return val;
1269  }
1270
1271  function normalizeDataKey(key) {
1272    return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);
1273  }
1274
1275  const Manipulator = {
1276    setDataAttribute(element, key, value) {
1277      element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);
1278    },
1279
1280    removeDataAttribute(element, key) {
1281      element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);
1282    },
1283
1284    getDataAttributes(element) {
1285      if (!element) {
1286        return {};
1287      }
1288
1289      const attributes = {};
1290      Object.keys(element.dataset).filter(key => key.startsWith('bs')).forEach(key => {
1291        let pureKey = key.replace(/^bs/, '');
1292        pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);
1293        attributes[pureKey] = normalizeData(element.dataset[key]);
1294      });
1295      return attributes;
1296    },
1297
1298    getDataAttribute(element, key) {
1299      return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));
1300    },
1301
1302    offset(element) {
1303      const rect = element.getBoundingClientRect();
1304      return {
1305        top: rect.top + document.body.scrollTop,
1306        left: rect.left + document.body.scrollLeft
1307      };
1308    },
1309
1310    position(element) {
1311      return {
1312        top: element.offsetTop,
1313        left: element.offsetLeft
1314      };
1315    }
1316
1317  };
1318
1319  /**
1320   * --------------------------------------------------------------------------
1321   * Bootstrap (v5.0.1): carousel.js
1322   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1323   * --------------------------------------------------------------------------
1324   */
1325  /**
1326   * ------------------------------------------------------------------------
1327   * Constants
1328   * ------------------------------------------------------------------------
1329   */
1330
1331  const NAME$a = 'carousel';
1332  const DATA_KEY$9 = 'bs.carousel';
1333  const EVENT_KEY$9 = `.${DATA_KEY$9}`;
1334  const DATA_API_KEY$6 = '.data-api';
1335  const ARROW_LEFT_KEY = 'ArrowLeft';
1336  const ARROW_RIGHT_KEY = 'ArrowRight';
1337  const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
1338
1339  const SWIPE_THRESHOLD = 40;
1340  const Default$9 = {
1341    interval: 5000,
1342    keyboard: true,
1343    slide: false,
1344    pause: 'hover',
1345    wrap: true,
1346    touch: true
1347  };
1348  const DefaultType$9 = {
1349    interval: '(number|boolean)',
1350    keyboard: 'boolean',
1351    slide: '(boolean|string)',
1352    pause: '(string|boolean)',
1353    wrap: 'boolean',
1354    touch: 'boolean'
1355  };
1356  const ORDER_NEXT = 'next';
1357  const ORDER_PREV = 'prev';
1358  const DIRECTION_LEFT = 'left';
1359  const DIRECTION_RIGHT = 'right';
1360  const EVENT_SLIDE = `slide${EVENT_KEY$9}`;
1361  const EVENT_SLID = `slid${EVENT_KEY$9}`;
1362  const EVENT_KEYDOWN = `keydown${EVENT_KEY$9}`;
1363  const EVENT_MOUSEENTER = `mouseenter${EVENT_KEY$9}`;
1364  const EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY$9}`;
1365  const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;
1366  const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;
1367  const EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;
1368  const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;
1369  const EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;
1370  const EVENT_DRAG_START = `dragstart${EVENT_KEY$9}`;
1371  const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$9}${DATA_API_KEY$6}`;
1372  const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$9}${DATA_API_KEY$6}`;
1373  const CLASS_NAME_CAROUSEL = 'carousel';
1374  const CLASS_NAME_ACTIVE$2 = 'active';
1375  const CLASS_NAME_SLIDE = 'slide';
1376  const CLASS_NAME_END = 'carousel-item-end';
1377  const CLASS_NAME_START = 'carousel-item-start';
1378  const CLASS_NAME_NEXT = 'carousel-item-next';
1379  const CLASS_NAME_PREV = 'carousel-item-prev';
1380  const CLASS_NAME_POINTER_EVENT = 'pointer-event';
1381  const SELECTOR_ACTIVE$1 = '.active';
1382  const SELECTOR_ACTIVE_ITEM = '.active.carousel-item';
1383  const SELECTOR_ITEM = '.carousel-item';
1384  const SELECTOR_ITEM_IMG = '.carousel-item img';
1385  const SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';
1386  const SELECTOR_INDICATORS = '.carousel-indicators';
1387  const SELECTOR_INDICATOR = '[data-bs-target]';
1388  const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';
1389  const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]';
1390  const POINTER_TYPE_TOUCH = 'touch';
1391  const POINTER_TYPE_PEN = 'pen';
1392  /**
1393   * ------------------------------------------------------------------------
1394   * Class Definition
1395   * ------------------------------------------------------------------------
1396   */
1397
1398  class Carousel extends BaseComponent {
1399    constructor(element, config) {
1400      super(element);
1401      this._items = null;
1402      this._interval = null;
1403      this._activeElement = null;
1404      this._isPaused = false;
1405      this._isSliding = false;
1406      this.touchTimeout = null;
1407      this.touchStartX = 0;
1408      this.touchDeltaX = 0;
1409      this._config = this._getConfig(config);
1410      this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);
1411      this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
1412      this._pointerEvent = Boolean(window.PointerEvent);
1413
1414      this._addEventListeners();
1415    } // Getters
1416
1417
1418    static get Default() {
1419      return Default$9;
1420    }
1421
1422    static get NAME() {
1423      return NAME$a;
1424    } // Public
1425
1426
1427    next() {
1428      if (!this._isSliding) {
1429        this._slide(ORDER_NEXT);
1430      }
1431    }
1432
1433    nextWhenVisible() {
1434      // Don't call next when the page isn't visible
1435      // or the carousel or its parent isn't visible
1436      if (!document.hidden && isVisible(this._element)) {
1437        this.next();
1438      }
1439    }
1440
1441    prev() {
1442      if (!this._isSliding) {
1443        this._slide(ORDER_PREV);
1444      }
1445    }
1446
1447    pause(event) {
1448      if (!event) {
1449        this._isPaused = true;
1450      }
1451
1452      if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {
1453        triggerTransitionEnd(this._element);
1454        this.cycle(true);
1455      }
1456
1457      clearInterval(this._interval);
1458      this._interval = null;
1459    }
1460
1461    cycle(event) {
1462      if (!event) {
1463        this._isPaused = false;
1464      }
1465
1466      if (this._interval) {
1467        clearInterval(this._interval);
1468        this._interval = null;
1469      }
1470
1471      if (this._config && this._config.interval && !this._isPaused) {
1472        this._updateInterval();
1473
1474        this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
1475      }
1476    }
1477
1478    to(index) {
1479      this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
1480
1481      const activeIndex = this._getItemIndex(this._activeElement);
1482
1483      if (index > this._items.length - 1 || index < 0) {
1484        return;
1485      }
1486
1487      if (this._isSliding) {
1488        EventHandler.one(this._element, EVENT_SLID, () => this.to(index));
1489        return;
1490      }
1491
1492      if (activeIndex === index) {
1493        this.pause();
1494        this.cycle();
1495        return;
1496      }
1497
1498      const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;
1499
1500      this._slide(order, this._items[index]);
1501    } // Private
1502
1503
1504    _getConfig(config) {
1505      config = { ...Default$9,
1506        ...config
1507      };
1508      typeCheckConfig(NAME$a, config, DefaultType$9);
1509      return config;
1510    }
1511
1512    _handleSwipe() {
1513      const absDeltax = Math.abs(this.touchDeltaX);
1514
1515      if (absDeltax <= SWIPE_THRESHOLD) {
1516        return;
1517      }
1518
1519      const direction = absDeltax / this.touchDeltaX;
1520      this.touchDeltaX = 0;
1521
1522      if (!direction) {
1523        return;
1524      }
1525
1526      this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT);
1527    }
1528
1529    _addEventListeners() {
1530      if (this._config.keyboard) {
1531        EventHandler.on(this._element, EVENT_KEYDOWN, event =>
1531 this._keydown(event));
1532      }
1533
1534      if (this._config.pause === 'hover') {
1535        EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event));
1536        EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event));
1537      }
1538
1539      if (this._config.touch && this._touchSupported) {
1540        this._addTouchEventListeners();
1541      }
1542    }
1543
1544    _addTouchEventListeners() {
1545      const start = event => {
1546        if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {
1547          this.touchStartX = event.clientX;
1548        } else if (!this._pointerEvent) {
1549          this.touchStartX = event.touches[0].clientX;
1550        }
1551      };
1552
1553      const move = event => {
1554        // ensure swiping with one touch and not pinching
1555        this.touchDeltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this.touchStartX;
1556      };
1557
1558      const end = event => {
1559        if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {
1560          this.touchDeltaX = event.clientX - this.touchStartX;
1561        }
1562
1563        this._handleSwipe();
1564
1565        if (this._config.pause === 'hover') {
1566          // If it's a touch-enabled device, mouseenter/leave are fired as
1567          // part of the mouse compatibility events on first tap - the carousel
1568          // would stop cycling until user tapped out of it;
1569          // here, we listen for touchend, explicitly pause the carousel
1570          // (as if it's the second time we tap on it, mouseenter compat event
1571          // is NOT fired) and after a timeout (to allow for mouse compatibility
1572          // events to fire) we explicitly restart cycling
1573          this.pause();
1574
1575          if (this.touchTimeout) {
1576            clearTimeout(this.touchTimeout);
1577          }
1578
1579          this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval);
1580        }
1581      };
1582
1583      SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {
1584        EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault());
1585      });
1586
1587      if (this._pointerEvent) {
1588        EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event));
1589        EventHandler.on(this._element, EVENT_POINTERUP, event => end(event));
1590
1591        this._element.classList.add(CLASS_NAME_POINTER_EVENT);
1592      } else {
1593        EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event));
1594        EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event));
1595        EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event));
1596      }
1597    }
1598
1599    _keydown(event) {
1600      if (/input|textarea/i.test(event.target.tagName)) {
1601        return;
1602      }
1603
1604      if (event.key === ARROW_LEFT_KEY) {
1605        event.preventDefault();
1606
1607        this._slide(DIRECTION_RIGHT);
1608      } else if (event.key === ARROW_RIGHT_KEY) {
1609        event.preventDefault();
1610
1611        this._slide(DIRECTION_LEFT);
1612      }
1613    }
1614
1615    _getItemIndex(element) {
1616      this._items = element && element.parentNode ? SelectorEngine.find(SELECTOR_ITEM, element.parentNode) : [];
1617      return this._items.indexOf(element);
1618    }
1619
1620    _getItemByOrder(order, activeElement) {
1621      const isNext = order === ORDER_NEXT;
1622      const isPrev = order === ORDER_PREV;
1623
1624      const activeIndex = this._getItemIndex(activeElement);
1625
1626      const lastItemIndex = this._items.length - 1;
1627      const isGoingToWrap = isPrev && activeIndex === 0 || isNext && activeIndex === lastItemIndex;
1628
1629      if (isGoingToWrap && !this._config.wrap) {
1630        return activeElement;
1631      }
1632
1633      const delta = isPrev ? -1 : 1;
1634      const itemIndex = (activeIndex + delta) % this._items.length;
1635      return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
1636    }
1637
1638    _triggerSlideEvent(relatedTarget, eventDirectionName) {
1639      const targetIndex = this._getItemIndex(relatedTarget);
1640
1641      const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element));
1642
1643      return EventHandler.trigger(this._element, EVENT_SLIDE, {
1644        relatedTarget,
1645        direction: eventDirectionName,
1646        from: fromIndex,
1647        to: targetIndex
1648      });
1649    }
1650
1651    _setActiveIndicatorElement(element) {
1652      if (this._indicatorsElement) {
1653        const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE$1, this._indicatorsElement);
1654        activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);
1655        activeIndicator.removeAttribute('aria-current');
1656        const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement);
1657
1658        for (let i = 0; i < indicators.length; i++) {
1659          if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {
1660            indicators[i].classList.add(CLASS_NAME_ACTIVE$2);
1661            indicators[i].setAttribute('aria-current', 'true');
1662            break;
1663          }
1664        }
1665      }
1666    }
1667
1668    _updateInterval() {
1669      const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
1670
1671      if (!element) {
1672        return;
1673      }
1674
1675      const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);
1676
1677      if (elementInterval) {
1678        this._config.defaultInterval = this._config.defaultInterval || this._config.interval;
1679        this._config.interval = elementInterval;
1680      } else {
1681        this._config.interval = this._config.defaultInterval || this._config.interval;
1682      }
1683    }
1684
1685    _slide(directionOrOrder, element) {
1686      const order = this._directionToOrder(directionOrOrder);
1687
1688      const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
1689
1690      const activeElementIndex = this._getItemIndex(activeElement);
1691
1692      const nextElement = element || this._getItemByOrder(order, activeElement);
1693
1694      const nextElementIndex = this._getItemIndex(nextElement);
1695
1696      const isCycling = Boolean(this._interval);
1697      const isNext = order === ORDER_NEXT;
1698      const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;
1699      const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;
1700
1701      const eventDirectionName = this._orderToDirection(order);
1702
1703      if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE$2)) {
1704        this._isSliding = false;
1705        return;
1706      }
1707
1708      const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
1709
1710      if (slideEvent.defaultPrevented) {
1711        return;
1712      }
1713
1714      if (!activeElement || !nextElement) {
1715        // Some weirdness is happening, so we bail
1716        return;
1717      }
1718
1719      this._isSliding = true;
1720
1721      if (isCycling) {
1722        this.pause();
1723      }
1724
1725      this._setActiveIndicatorElement(nextElement);
1726
1727      this._activeElement = nextElement;
1728
1729      const triggerSlidEvent = () => {
1730        EventHandler.trigger(this._element, EVENT_SLID, {
1731          relatedTarget: nextElement,
1732          direction: eventDirectionName,
1733          from: activeElementIndex,
1734          to: nextElementIndex
1735        });
1736      };
1737
1738      if (this._element.classList.contains(CLASS_NAME_SLIDE)) {
1739        nextElement.classList.add(orderClassName);
1740        reflow(nextElement);
1741        activeElement.classList.add(directionalClassName);
1742        nextElement.classList.add(directionalClassName);
1743
1744        const completeCallBack = () => {
1745          nextElement.classList.remove(directionalClassName, orderClassName);
1746          nextElement.classList.add(CLASS_NAME_ACTIVE$2);
1747          activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);
1748          this._isSliding = false;
1749          setTimeout(triggerSlidEvent, 0);
1750        };
1751
1752        this._queueCallback(completeCallBack, activeElement, true);
1753      } else {
1754        activeElement.classList.remove(CLASS_NAME_ACTIVE$2);
1755        nextElement.classList.add(CLASS_NAME_ACTIVE$2);
1756        this._isSliding = false;
1757        triggerSlidEvent();
1758      }
1759
1760      if (isCycling) {
1761        this.cycle();
1762      }
1763    }
1764
1765    _directionToOrder(direction) {
1766      if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {
1767        return direction;
1768      }
1769
1770      if (isRTL()) {
1771        return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;
1772      }
1773
1774      return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;
1775    }
1776
1777    _orderToDirection(order) {
1778      if (![ORDER_NEXT, ORDER_PREV].includes(order)) {
1779        return order;
1780      }
1781
1782      if (isRTL()) {
1783        return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;
1784      }
1785
1786      return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;
1787    } // Static
1788
1789
1790    static carouselInterface(element, config) {
1791      let data = Data.get(element, DATA_KEY$9);
1792      let _config = { ...Default$9,
1793        ...Manipulator.getDataAttributes(element)
1794      };
1795
1796      if (typeof config === 'object') {
1797        _config = { ..._config,
1798          ...config
1799        };
1800      }
1801
1802      const action = typeof config === 'string' ? config : _config.slide;
1803
1804      if (!data) {
1805        data = new Carousel(element, _config);
1806      }
1807
1808      if (typeof config === 'number') {
1809        data.to(config);
1810      } else if (typeof action === 'string') {
1811        if (typeof data[action] === 'undefined') {
1812          throw new TypeError(`No method named "${action}"`);
1813        }
1814
1815        data[action]();
1816      } else if (_config.interval && _config.ride) {
1817        data.pause();
1818        data.cycle();
1819      }
1820    }
1821
1822    static jQueryInterface(config) {
1823      return this.each(function () {
1824        Carousel.carouselInterface(this, config);
1825      });
1826    }
1827
1828    static dataApiClickHandler(event) {
1829      const target = getElementFromSelector(this);
1830
1831      if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
1832        return;
1833      }
1834
1835      const config = { ...Manipulator.getDataAttributes(target),
1836        ...Manipulator.getDataAttributes(this)
1837      };
1838      const slideIndex = this.getAttribute('data-bs-slide-to');
1839
1840      if (slideIndex) {
1841        config.interval = false;
1842      }
1843
1844      Carousel.carouselInterface(target, config);
1845
1846      if (slideIndex) {
1847        Data.get(target, DATA_KEY$9).to(slideIndex);
1848      }
1849
1850      event.preventDefault();
1851    }
1852
1853  }
1854  /**
1855   * ------------------------------------------------------------------------
1856   * Data Api implementation
1857   * ------------------------------------------------------------------------
1858   */
1859
1860
1861  EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler);
1862  EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {
1863    const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);
1864
1865    for (let i = 0, len = carousels.length; i < len; i++) {
1866      Carousel.carouselInterface(carousels[i], Data.get(carousels[i], DATA_KEY$9));
1867    }
1868  });
1869  /**
1870   * ------------------------------------------------------------------------
1871   * jQuery
1872   * ------------------------------------------------------------------------
1873   * add .Carousel to jQuery only if jQuery is present
1874   */
1875
1876  defineJQueryPlugin(Carousel);
1877
1878  /**
1879   * --------------------------------------------------------------------------
1880   * Bootstrap (v5.0.1): collapse.js
1881   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1882   * --------------------------------------------------------------------------
1883   */
1884  /**
1885   * ------------------------------------------------------------------------
1886   * Constants
1887   * ------------------------------------------------------------------------
1888   */
1889
1890  const NAME$9 = 'collapse';
1891  const DATA_KEY$8 = 'bs.collapse';
1892  const EVENT_KEY$8 = `.${DATA_KEY$8}`;
1893  const DATA_API_KEY$5 = '.data-api';
1894  const Default$8 = {
1895    toggle: true,
1896    parent: ''
1897  };
1898  const DefaultType$8 = {
1899    toggle: 'boolean',
1900    parent: '(string|element)'
1901  };
1902  const EVENT_SHOW$5 = `show${EVENT_KEY$8}`;
1903  const EVENT_SHOWN$5 = `shown${EVENT_KEY$8}`;
1904  const EVENT_HIDE$5 = `hide${EVENT_KEY$8}`;
1905  const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$8}`;
1906  const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;
1907  const CLASS_NAME_SHOW$8 = 'show';
1908  const CLASS_NAME_COLLAPSE = 'collapse';
1909  const CLASS_NAME_COLLAPSING = 'collapsing';
1910  const CLASS_NAME_COLLAPSED = 'collapsed';
1911  const WIDTH = 'width';
1912  const HEIGHT = 'height';
1913  const SELECTOR_ACTIVES = '.show, .collapsing';
1914  const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]';
1915  /**
1916   * ------------------------------------------------------------------------
1917   * Class Definition
1918   * ------------------------------------------------------------------------
1919   */
1920
1921  class Collapse extends BaseComponent {
1922    constructor(element, config) {
1923      super(element);
1924      this._isTransitioning = false;
1925      this._config = this._getConfig(config);
1926      this._triggerArray = SelectorEngine.find(`${SELECTOR_DATA_TOGGLE$4}[href="#${this._element.id}"],` + `${SELECTOR_DATA_TOGGLE$4}[data-bs-target="#${this._element.id}"]`);
1927      const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);
1928
1929      for (let i = 0, len = toggleList.length; i < len; i++) {
1930        const elem = toggleList[i];
1931        const selector = getSelectorFromElement(elem);
1932        const filterElement = SelectorEngine.find(selector).filter(foundElem => foundElem === this._element);
1933
1934        if (selector !== null && filterElement.length) {
1935          this._selector = selector;
1936
1937          this._triggerArray.push(elem);
1938        }
1939      }
1940
1941      this._parent = this._config.parent ? this._getParent() : null;
1942
1943      if (!this._config.parent) {
1944        this._addAriaAndCollapsedClass(this._element, this._triggerArray);
1945      }
1946
1947      if (this._config.toggle) {
1948        this.toggle();
1949      }
1950    } // Getters
1951
1952
1953    static get Default() {
1954      return Default$8;
1955    }
1956
1957    static get NAME() {
1958      return NAME$9;
1959    } // Public
1960
1961
1962    toggle() {
1963      if (this._element.classList.contains(CLASS_NAME_SHOW$8)) {
1964        this.hide();
1965      } else {
1966        this.show();
1967      }
1968    }
1969
1970    show() {
1971      if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW$8)) {
1972        return;
1973      }
1974
1975      let actives;
1976      let activesData;
1977
1978      if (this._parent) {
1979        actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent).filter(elem => {
1980          if (typeof this._config.parent === 'string') {
1981            return elem.getAttribute('data-bs-parent') === this._config.parent;
1982          }
1983
1984          return elem.classList.contains(CLASS_NAME_COLLAPSE);
1985        });
1986
1987        if (actives.length === 0) {
1988          actives = null;
1989        }
1990      }
1991
1992      const container = SelectorEngine.findOne(this._selector);
1993
1994      if (actives) {
1995        const tempActiveData = actives.find(elem => container !== elem);
1996        activesData = tempActiveData ? Data.get(tempActiveData, DATA_KEY$8) : null;
1997
1998        if (activesData && activesData._isTransitioning) {
1999          return;
2000        }
2001      }
2002
2003      const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$5);
2004
2005      if (startEvent.defaultPrevented) {
2006        return;
2007      }
2008
2009      if (actives) {
2010        actives.forEach(elemActive => {
2011          if (container !== elemActive) {
2012            Collapse.collapseInterface(elemActive, 'hide');
2013          }
2014
2015          if (!activesData) {
2016            Data.set(elemActive, DATA_KEY$8, null);
2017          }
2018        });
2019      }
2020
2021      const dimension = this._getDimension();
2022
2023      this._element.classList.remove(CLASS_NAME_COLLAPSE);
2024
2025      this._element.classList.add(CLASS_NAME_COLLAPSING);
2026
2027      this._element.style[dimension] = 0;
2028
2029      if (this._triggerArray.length) {
2030        this._triggerArray.forEach(element => {
2031          element.classList.remove(CLASS_NAME_COLLAPSED);
2032          element.setAttribute('aria-expanded', true);
2033        });
2034      }
2035
2036      this.setTransitioning(true);
2037
2038      const complete = () => {
2039        this._element.classList.remove(CLASS_NAME_COLLAPSING);
2040
2041        this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$8);
2042
2043        this._element.style[dimension] = '';
2044        this.setTransitioning(false);
2045        EventHandler.trigger(this._element, EVENT_SHOWN$5);
2046      };
2047
2048      const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
2049      const scrollSize = `scroll${capitalizedDimension}`;
2050
2051      this._queueCallback(complete, this._element, true);
2052
2053      this._element.style[dimension] = `${this._element[scrollSize]}px`;
2054    }
2055
2056    hide() {
2057      if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW$8)) {
2058        return;
2059      }
2060
2061      const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$5);
2062
2063      if (startEvent.defaultPrevented) {
2064        return;
2065      }
2066
2067      const dimension = this._getDimension();
2068
2069      this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;
2070      reflow(this._element);
2071
2072      this._element.classList.add(CLASS_NAME_COLLAPSING);
2073
2074      this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$8);
2075
2076      const triggerArrayLength = this._triggerArray.length;
2077
2078      if (triggerArrayLength > 0) {
2079        for (let i = 0; i < triggerArrayLength; i++) {
2080          const trigger = this._triggerArray[i];
2081          const elem = getElementFromSelector(trigger);
2082
2083          if (elem && !elem.classList.contains(CLASS_NAME_SHOW$8)) {
2084            trigger.classList.add(CLASS_NAME_COLLAPSED);
2085            trigger.setAttribute('aria-expanded', false);
2086          }
2087        }
2088      }
2089
2090      this.setTransitioning(true);
2091
2092      const complete = () => {
2093        this.setTransitioning(false);
2094
2095        this._element.classList.remove(CLASS_NAME_COLLAPSING);
2096
2097        this._element.classList.add(CLASS_NAME_COLLAPSE);
2098
2099        EventHandler.trigger(this._element, EVENT_HIDDEN$5);
2100      };
2101
2102      this._element.style[dimension] = '';
2103
2104      this._queueCallback(complete, this._element, true);
2105    }
2106
2107    setTransitioning(isTransitioning) {
2108      this._isTransitioning = isTransitioning;
2109    } // Private
2110
2111
2112    _getConfig(config) {
2113      config = { ...Default$8,
2114        ...config
2115      };
2116      config.toggle = Boolean(config.toggle); // Coerce string values
2117
2118      typeCheckConfig(NAME$9, config, DefaultType$8);
2119      return config;
2120    }
2121
2122    _getDimension() {
2123      return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT;
2124    }
2125
2126    _getParent() {
2127      let {
2128        parent
2129      } = this._config;
2130      parent = getElement(parent);
2131      const selector = `${SELECTOR_DATA_TOGGLE$4}[data-bs-parent="${parent}"]`;
2132      SelectorEngine.find(selector, parent).forEach(element => {
2133        const selected = getElementFromSelector(element);
2134
2135        this._addAriaAndCollapsedClass(selected, [element]);
2136      });
2137      return parent;
2138    }
2139
2140    _addAriaAndCollapsedClass(element, triggerArray) {
2141      if (!element || !triggerArray.length) {
2142        return;
2143      }
2144
2145      const isOpen = element.classList.contains(CLASS_NAME_SHOW$8);
2146      triggerArray.forEach(elem => {
2147        if (isOpen) {
2148          elem.classList.remove(CLASS_NAME_COLLAPSED);
2149        } else {
2150          elem.classList.add(CLASS_NAME_COLLAPSED);
2151        }
2152
2153        elem.setAttribute('aria-expanded', isOpen);
2154      });
2155    } // Static
2156
2157
2158    static collapseInterface(element, config) {
2159      let data = Data.get(element, DATA_KEY$8);
2160      const _config = { ...Default$8,
2161        ...Manipulator.getDataAttributes(element),
2162        ...(typeof config === 'object' && config ? config : {})
2163      };
2164
2165      if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {
2166        _config.toggle = false;
2167      }
2168
2169      if (!data) {
2170        data = new Collapse(element, _config);
2171      }
2172
2173      if (typeof config === 'string') {
2174        if (typeof data[config] === 'undefined') {
2175          throw new TypeError(`No method named "${config}"`);
2176        }
2177
2178        data[config]();
2179      }
2180    }
2181
2182    static jQueryInterface(config) {
2183      return this.each(function () {
2184        Collapse.collapseInterface(this, config);
2185      });
2186    }
2187
2188  }
2189  /**
2190   * ------------------------------------------------------------------------
2191   * Data Api implementation
2192   * ------------------------------------------------------------------------
2193   */
2194
2195
2196  EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {
2197    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
2198    if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {
2199      event.preventDefault();
2200    }
2201
2202    const triggerData = Manipulator.getDataAttributes(this);
2203    const selector = getSelectorFromElement(this);
2204    const selectorElements = SelectorEngine.find(selector);
2205    selectorElements.forEach(element => {
2206      const data = Data.get(element, DATA_KEY$8);
2207      let config;
2208
2209      if (data) {
2210        // update parent attribute
2211        if (data._parent === null && typeof triggerData.parent === 'string') {
2212          data._config.parent = triggerData.parent;
2213          data._parent = data._getParent();
2214        }
2215
2216        config = 'toggle';
2217      } else {
2218        config = triggerData;
2219      }
2220
2221      Collapse.collapseInterface(element, config);
2222    });
2223  });
2224  /**
2225   * ------------------------------------------------------------------------
2226   * jQuery
2227   * ------------------------------------------------------------------------
2228   * add .Collapse to jQuery only if jQuery is present
2229   */
2230
2231  defineJQueryPlugin(Collapse);
2232
2233  /**
2234   * --------------------------------------------------------------------------
2235   * Bootstrap (v5.0.1): dropdown.js
2236   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
2237   * --------------------------------------------------------------------------
2238   */
2239  /**
2240   * ------------------------------------------------------------------------
2241   * Constants
2242   * ------------------------------------------------------------------------
2243   */
2244
2245  const NAME$8 = 'dropdown';
2246  const DATA_KEY$7 = 'bs.dropdown';
2247  const EVENT_KEY$7 = `.${DATA_KEY$7}`;
2248  const DATA_API_KEY$4 = '.data-api';
2249  const ESCAPE_KEY$2 = 'Escape';
2250  const SPACE_KEY = 'Space';
2251  const TAB_KEY = 'Tab';
2252  const ARROW_UP_KEY = 'ArrowUp';
2253  const ARROW_DOWN_KEY = 'ArrowDown';
2254  const RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button
2255
2256  const REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY$2}`);
2257  const EVENT_HIDE$4 = `hide${EVENT_KEY$7}`;
2258  const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$7}`;
2259  const EVENT_SHOW$4 = `show${EVENT_KEY$7}`;
2260  const EVENT_SHOWN$4 = `shown${EVENT_KEY$7}`;
2261  const EVENT_CLICK = `click${EVENT_KEY$7}`;
2262  const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;
2263  const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$7}${DATA_API_KEY$4}`;
2264  const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$7}${DATA_API_KEY$4}`;
2265  const CLASS_NAME_SHOW$7 = 'show';
2266  const CLASS_NAME_DROPUP = 'dropup';
2267  const CLASS_NAME_DROPEND = 'dropend';
2268  const CLASS_NAME_DROPSTART = 'dropstart';
2269  const CLASS_NAME_NAVBAR = 'navbar';
2270  const SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]';
2271  const SELECTOR_MENU = '.dropdown-menu';
2272  const SELECTOR_NAVBAR_NAV = '.navbar-nav';
2273  const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';
2274  const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';
2275  const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';
2276  const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';
2277  const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';
2278  const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';
2279  const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';
2280  const Default$7 = {
2281    offset: [0, 2],
2282    boundary: 'clippingParents',
2283    reference: 'toggle',
2284    display: 'dynamic',
2285    popperConfig: null,
2286    autoClose: true
2287  };
2288  const DefaultType$7 = {
2289    offset: '(array|string|function)',
2290    boundary: '(string|element)',
2291    reference: '(string|element|object)',
2292    display: 'string',
2293    popperConfig: '(null|object|function)',
2294    autoClose: '(boolean|string)'
2295  };
2296  /**
2297   * ------------------------------------------------------------------------
2298   * Class Definition
2299   * ------------------------------------------------------------------------
2300   */
2301
2302  class Dropdown extends BaseComponent {
2303    constructor(element, config) {
2304      super(element);
2305      this._popper = null;
2306      this._config = this._getConfig(config);
2307      this._menu = this._getMenuElement();
2308      this._inNavbar = this._detectNavbar();
2309
2310      this._addEventListeners();
2311    } // Getters
2312
2313
2314    static get Default() {
2315      return Default$7;
2316    }
2317
2318    static get DefaultType() {
2319      return DefaultType$7;
2320    }
2321
2322    static get NAME() {
2323      return NAME$8;
2324    } // Public
2325
2326
2327    toggle() {
2328      if (isDisabled(this._element)) {
2329        return;
2330      }
2331
2332      const isActive = this._element.classList.contains(CLASS_NAME_SHOW$7);
2333
2334      if (isActive) {
2335        this.hide();
2336        return;
2337      }
2338
2339      this.show();
2340    }
2341
2342    show() {
2343      if (isDisabled(this._element) || this._menu.classList.contains(CLASS_NAME_SHOW$7)) {
2344        return;
2345      }
2346
2347      const parent = Dropdown.getParentFromElement(this._element);
2348      const relatedTarget = {
2349        relatedTarget: this._element
2350      };
2351      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, relatedTarget);
2352
2353      if (showEvent.defaultPrevented) {
2354        return;
2355      } // Totally disable Popper for Dropdowns in Navbar
2356
2357
2358      if (this._inNavbar) {
2359        Manipulator.setDataAttribute(this._menu, 'popper', 'none');
2360      } else {
2361        if (typeof Popper__namespace === 'undefined') {
2362          throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)');
2363        }
2364
2365        let referenceElement = this._element;
2366
2367        if (this._config.reference === 'parent') {
2368          referenceElement = parent;
2369        } else if (isElement(this._config.reference)) {
2370          referenceElement = getElement(this._config.reference);
2371        } else if (typeof this._config.reference === 'object') {
2372          referenceElement = this._config.reference;
2373        }
2374
2375        const popperConfig = this._getPopperConfig();
2376
2377        const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false);
2378        this._popper = Popper__namespace.createPopper(referenceElement, this._menu, popperConfig);
2379
2380        if (isDisplayStatic) {
2381          Manipulator.setDataAttribute(this._menu, 'popper', 'static');
2382        }
2383      } // If this is a touch-enabled device we add extra
2384      // empty mouseover listeners to the body's immediate children;
2385      // only needed because of broken event delegation on iOS
2386      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
2387
2388
2389      if ('ontouchstart' in document.documentElement && !parent.closest(SELECTOR_NAVBAR_NAV)) {
2390        [].concat(...document.body.children).forEach(elem => EventHandler.on(elem, 'mouseover', noop));
2391      }
2392
2393      this._element.focus();
2394
2395      this._element.setAttribute('aria-expanded', true);
2396
2397      this._menu.classList.toggle(CLASS_NAME_SHOW$7);
2398
2399      this._element.classList.toggle(CLASS_NAME_SHOW$7);
2400
2401      EventHandler.trigger(this._element, EVENT_SHOWN$4, relatedTarget);
2402    }
2403
2404    hide() {
2405      if (isDisabled(this._element) || !this._menu.classList.contains(CLASS_NAME_SHOW$7)) {
2406        return;
2407      }
2408
2409      const relatedTarget = {
2410        relatedTarget: this._element
2411      };
2412
2413      this._completeHide(relatedTarget);
2414    }
2415
2416    dispose() {
2417      if (this._popper) {
2418        this._popper.destroy();
2419      }
2420
2421      super.dispose();
2422    }
2423
2424    update() {
2425      this._inNavbar = this._detectNavbar();
2426
2427      if (this._popper) {
2428        this._popper.update();
2429      }
2430    } // Private
2431
2432
2433    _addEventListeners() {
2434      EventHandler.on(this._element, EVENT_CLICK, event => {
2435        event.preventDefault();
2436        this.toggle();
2437      });
2438    }
2439
2440    _completeHide(relatedTarget) {
2441      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4, relatedTarget);
2442
2443      if (hideEvent.defaultPrevented) {
2444        return;
2445      } // If this is a touch-enabled device we remove the extra
2446      // empty mouseover listeners we added for iOS support
2447
2448
2449      if ('ontouchstart' in document.documentElement) {
2450        [].concat(...document.body.children).forEach(elem => EventHandler.off(elem, 'mouseover', noop));
2451      }
2452
2453      if (this._popper) {
2454        this._popper.destroy();
2455      }
2456
2457      this._menu.classList.remove(CLASS_NAME_SHOW$7);
2458
2459      this._element.classList.remove(CLASS_NAME_SHOW$7);
2460
2461      this._element.setAttribute('aria-expanded', 'false');
2462
2463      Manipulator.removeDataAttribute(this._menu, 'popper');
2464      EventHandler.trigger(this._element, EVENT_HIDDEN$4, relatedTarget);
2465    }
2466
2467    _getConfig(config) {
2468      config = { ...this.constructor.Default,
2469        ...Manipulator.getDataAttributes(this._element),
2470        ...config
2471      };
2472      typeCheckConfig(NAME$8, config, this.constructor.DefaultType);
2473
2474      if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {
2475        // Popper virtual elements require a getBoundingClientRect method
2476        throw new TypeError(`${NAME$8.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);
2477      }
2478
2479      return config;
2480    }
2481
2482    _getMenuElement() {
2483      return SelectorEngine.next(this._element, SELECTOR_MENU)[0];
2484    }
2485
2486    _getPlacement() {
2487      const parentDropdown = this._element.parentNode;
2488
2489      if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {
2490        return PLACEMENT_RIGHT;
2491      }
2492
2493      if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {
2494        return PLACEMENT_LEFT;
2495      } // We need to trim the value because custom properties can also include spaces
2496
2497
2498      const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';
2499
2500      if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {
2501        return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;
2502      }
2503
2504      return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;
2505    }
2506
2507    _detectNavbar() {
2508      return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null;
2509    }
2510
2511    _getOffset() {
2512      const {
2513        offset
2514      } = this._config;
2515
2516      if (typeof offset === 'string') {
2517        return offset.split(',').map(val => Number.parseInt(val, 10));
2518      }
2519
2520      if (typeof offset === 'function') {
2521        return popperData => offset(popperData, this._element);
2522      }
2523
2524      return offset;
2525    }
2526
2527    _getPopperConfig() {
2528      const defaultBsPopperConfig = {
2529        placement: this._getPlacement(),
2530        modifiers: [{
2531          name: 'preventOverflow',
2532          options: {
2533            boundary: this._config.boundary
2534          }
2535        }, {
2536          name: 'offset',
2537          options: {
2538            offset: this._getOffset()
2539          }
2540        }]
2541      }; // Disable Popper if we have a static display
2542
2543      if (this._config.display === 'static') {
2544        defaultBsPopperConfig.modifiers = [{
2545          name: 'applyStyles',
2546          enabled: false
2547        }];
2548      }
2549
2550      return { ...defaultBsPopperConfig,
2551        ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)
2552      };
2553    }
2554
2555    _selectMenuItem(event) {
2556      const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible);
2557
2558      if (!items.length) {
2559        return;
2560      }
2561
2562      let index = items.indexOf(event.target); // Up
2563
2564      if (event.key === ARROW_UP_KEY && index > 0) {
2565        index--;
2566      } // Down
2567
2568
2569      if (event.key === ARROW_DOWN_KEY && index < items.length - 1) {
2570        index++;
2571      } // index is -1 if the first keydown is an ArrowUp
2572
2573
2574      index = index === -1 ? 0 : index;
2575      items[index].focus();
2576    } // Static
2577
2578
2579    static dropdownInterface(element, config) {
2580      let data = Data.get(element, DATA_KEY$7);
2581
2582      const _config = typeof config === 'object' ? config : null;
2583
2584      if (!data) {
2585        data = new Dropdown(element, _config);
2586      }
2587
2588      if (typeof config === 'string') {
2589        if (typeof data[config] === 'undefined') {
2590          throw new TypeError(`No method named "${config}"`);
2591        }
2592
2593        data[config]();
2594      }
2595    }
2596
2597    static jQueryInterface(config) {
2598      return this.each(function () {
2599        Dropdown.dropdownInterface(this, config);
2600      });
2601    }
2602
2603    static clearMenus(event) {
2604      if (event && (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY)) {
2605        return;
2606      }
2607
2608      const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE$3);
2609
2610      for (let i = 0, len = toggles.length; i < len; i++) {
2611        const context = Data.get(toggles[i], DATA_KEY$7);
2612
2613        if (!context || context._config.autoClose === false) {
2614          continue;
2615        }
2616
2617        if (!context._element.classList.contains(CLASS_NAME_SHOW$7)) {
2618          continue;
2619        }
2620
2621        const relatedTarget = {
2622          relatedTarget: context._element
2623        };
2624
2625        if (event) {
2626          const composedPath = event.composedPath();
2627          const isMenuTarget = composedPath.includes(context._menu);
2628
2629          if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {
2630            continue;
2631          } // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu
2632
2633
2634          if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY || /input|select|option|textarea|form/i.test(event.target.tagName))) {
2635            continue;
2636          }
2637
2638          if (event.type === 'click') {
2639            relatedTarget.clickEvent = event;
2640          }
2641        }
2642
2643        context._completeHide(relatedTarget);
2644      }
2645    }
2646
2647    static getParentFromElement(element) {
2648      return getElementFromSelector(element) || element.parentNode;
2649    }
2650
2651    static dataApiKeydownHandler(event) {
2652      // If not input/textarea:
2653      //  - And not a key in REGEXP_KEYDOWN => not a dropdown command
2654      // If input/textarea:
2655      //  - If space key => not a dropdown command
2656      //  - If key is other than escape
2657      //    - If key is not up or down => not a dropdown command
2658      //    - If trigger inside the menu => not a dropdown command
2659      if (/input|textarea/i.test(event.target.tagName) ? event.key === SPACE_KEY || event.key !== ESCAPE_KEY$2 && (event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY || event.target.closest(SELECTOR_MENU)) : !REGEXP_KEYDOWN.test(event.key)) {
2660        return;
2661      }
2662
2663      const isActive = this.classList.contains(CLASS_NAME_SHOW$7);
2664
2665      if (!isActive && event.key === ESCAPE_KEY$2) {
2666        return;
2667      }
2668
2669      event.preventDefault();
2670      event.stopPropagation();
2671
2672      if (isDisabled(this)) {
2673        return;
2674      }
2675
2676      const getToggleButton = () => this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0];
2677
2678      if (event.key === ESCAPE_KEY$2) {
2679        getToggleButton().focus();
2680        Dropdown.clearMenus();
2681        return;
2682      }
2683
2684      if (!isActive && (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY)) {
2685        getToggleButton().click();
2686        return;
2687      }
2688
2689      if (!isActive || event.key === SPACE_KEY) {
2690        Dropdown.clearMenus();
2691        return;
2692      }
2693
2694      Dropdown.getInstance(getToggleButton())._selectMenuItem(event);
2695    }
2696
2697  }
2698  /**
2699   * ------------------------------------------------------------------------
2700   * Data Api implementation
2701   * ------------------------------------------------------------------------
2702   */
2703
2704
2705  EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);
2706  EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
2707  EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);
2708  EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
2709  EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {
2710    event.preventDefault();
2711    Dropdown.dropdownInterface(this);
2712  });
2713  /**
2714   * ------------------------------------------------------------------------
2715   * jQuery
2716   * ------------------------------------------------------------------------
2717   * add .Dropdown to jQuery only if jQuery is present
2718   */
2719
2720  defineJQueryPlugin(Dropdown);
2721
2722  /**
2723   * --------------------------------------------------------------------------
2724   * Bootstrap (v5.0.1): util/scrollBar.js
2725   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
2726   * --------------------------------------------------------------------------
2727   */
2728  const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
2729  const SELECTOR_STICKY_CONTENT = '.sticky-top';
2730
2731  const getWidth = () => {
2732    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes
2733    const documentWidth = document.documentElement.clientWidth;
2734    return Math.abs(window.innerWidth - documentWidth);
2735  };
2736
2737  const hide = (width = getWidth()) => {
2738    _disableOverFlow(); // give padding to element to balances the hidden scrollbar width
2739
2740
2741    _setElementAttributes('body', 'paddingRight', calculatedValue => calculatedValue + width);
2741 // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements, to keep shown fullwidth
2742
2743
2744    _setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width);
2745
2746    _setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width);
2747  };
2748
2749  const _disableOverFlow = () => {
2750    const actualValue = document.body.style.overflow;
2751
2752    if (actualValue) {
2753      Manipulator.setDataAttribute(document.body, 'overflow', actualValue);
2754    }
2755
2756    document.body.style.overflow = 'hidden';
2757  };
2758
2759  const _setElementAttributes = (selector, styleProp, callback) => {
2760    const scrollbarWidth = getWidth();
2761    SelectorEngine.find(selector).forEach(element => {
2762      if (element !== document.body && window.innerWidth > element.clientWidth + scrollbarWidth) {
2763        return;
2764      }
2765
2766      const actualValue = element.style[styleProp];
2767      const calculatedValue = window.getComputedStyle(element)[styleProp];
2768      Manipulator.setDataAttribute(element, styleProp, actualValue);
2769      element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`;
2770    });
2771  };
2772
2773  const reset = () => {
2774    _resetElementAttributes('body', 'overflow');
2775
2776    _resetElementAttributes('body', 'paddingRight');
2777
2778    _resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight');
2779
2780    _resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight');
2781  };
2782
2783  const _resetElementAttributes = (selector, styleProp) => {
2784    SelectorEngine.find(selector).forEach(element => {
2785      const value = Manipulator.getDataAttribute(element, styleProp);
2786
2787      if (typeof value === 'undefined') {
2788        element.style.removeProperty(styleProp);
2789      } else {
2790        Manipulator.removeDataAttribute(element, styleProp);
2791        element.style[styleProp] = value;
2792      }
2793    });
2794  };
2795
2796  /**
2797   * --------------------------------------------------------------------------
2798   * Bootstrap (v5.0.1): util/backdrop.js
2799   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2800   * --------------------------------------------------------------------------
2801   */
2802  const Default$6 = {
2803    isVisible: true,
2804    // if false, we use the backdrop helper without adding any element to the dom
2805    isAnimated: false,
2806    rootElement: document.body,
2807    // give the choice to place backdrop under different elements
2808    clickCallback: null
2809  };
2810  const DefaultType$6 = {
2811    isVisible: 'boolean',
2812    isAnimated: 'boolean',
2813    rootElement: 'element',
2814    clickCallback: '(function|null)'
2815  };
2816  const NAME$7 = 'backdrop';
2817  const CLASS_NAME_BACKDROP = 'modal-backdrop';
2818  const CLASS_NAME_FADE$5 = 'fade';
2819  const CLASS_NAME_SHOW$6 = 'show';
2820  const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$7}`;
2821
2822  class Backdrop {
2823    constructor(config) {
2824      this._config = this._getConfig(config);
2825      this._isAppended = false;
2826      this._element = null;
2827    }
2828
2829    show(callback) {
2830      if (!this._config.isVisible) {
2831        execute(callback);
2832        return;
2833      }
2834
2835      this._append();
2836
2837      if (this._config.isAnimated) {
2838        reflow(this._getElement());
2839      }
2840
2841      this._getElement().classList.add(CLASS_NAME_SHOW$6);
2842
2843      this._emulateAnimation(() => {
2844        execute(callback);
2845      });
2846    }
2847
2848    hide(callback) {
2849      if (!this._config.isVisible) {
2850        execute(callback);
2851        return;
2852      }
2853
2854      this._getElement().classList.remove(CLASS_NAME_SHOW$6);
2855
2856      this._emulateAnimation(() => {
2857        this.dispose();
2858        execute(callback);
2859      });
2860    } // Private
2861
2862
2863    _getElement() {
2864      if (!this._element) {
2865        const backdrop = document.createElement('div');
2866        backdrop.className = CLASS_NAME_BACKDROP;
2867
2868        if (this._config.isAnimated) {
2869          backdrop.classList.add(CLASS_NAME_FADE$5);
2870        }
2871
2872        this._element = backdrop;
2873      }
2874
2875      return this._element;
2876    }
2877
2878    _getConfig(config) {
2879      config = { ...Default$6,
2880        ...(typeof config === 'object' ? config : {})
2881      };
2882      config.rootElement = config.rootElement || document.body;
2883      typeCheckConfig(NAME$7, config, DefaultType$6);
2884      return config;
2885    }
2886
2887    _append() {
2888      if (this._isAppended) {
2889        return;
2890      }
2891
2892      this._config.rootElement.appendChild(this._getElement());
2893
2894      EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {
2895        execute(this._config.clickCallback);
2896      });
2897      this._isAppended = true;
2898    }
2899
2900    dispose() {
2901      if (!this._isAppended) {
2902        return;
2903      }
2904
2905      EventHandler.off(this._element, EVENT_MOUSEDOWN);
2906
2907      this._getElement().parentNode.removeChild(this._element);
2908
2909      this._isAppended = false;
2910    }
2911
2912    _emulateAnimation(callback) {
2913      if (!this._config.isAnimated) {
2914        execute(callback);
2915        return;
2916      }
2917
2918      const backdropTransitionDuration = getTransitionDurationFromElement(this._getElement());
2919      EventHandler.one(this._getElement(), 'transitionend', () => execute(callback));
2920      emulateTransitionEnd(this._getElement(), backdropTransitionDuration);
2921    }
2922
2923  }
2924
2925  /**
2926   * --------------------------------------------------------------------------
2927   * Bootstrap (v5.0.1): modal.js
2928   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
2929   * --------------------------------------------------------------------------
2930   */
2931  /**
2932   * ------------------------------------------------------------------------
2933   * Constants
2934   * ------------------------------------------------------------------------
2935   */
2936
2937  const NAME$6 = 'modal';
2938  const DATA_KEY$6 = 'bs.modal';
2939  const EVENT_KEY$6 = `.${DATA_KEY$6}`;
2940  const DATA_API_KEY$3 = '.data-api';
2941  const ESCAPE_KEY$1 = 'Escape';
2942  const Default$5 = {
2943    backdrop: true,
2944    keyboard: true,
2945    focus: true
2946  };
2947  const DefaultType$5 = {
2948    backdrop: '(boolean|string)',
2949    keyboard: 'boolean',
2950    focus: 'boolean'
2951  };
2952  const EVENT_HIDE$3 = `hide${EVENT_KEY$6}`;
2953  const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$6}`;
2954  const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$6}`;
2955  const EVENT_SHOW$3 = `show${EVENT_KEY$6}`;
2956  const EVENT_SHOWN$3 = `shown${EVENT_KEY$6}`;
2957  const EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$6}`;
2958  const EVENT_RESIZE = `resize${EVENT_KEY$6}`;
2959  const EVENT_CLICK_DISMISS$2 = `click.dismiss${EVENT_KEY$6}`;
2960  const EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$6}`;
2961  const EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY$6}`;
2962  const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$6}`;
2963  const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;
2964  const CLASS_NAME_OPEN = 'modal-open';
2965  const CLASS_NAME_FADE$4 = 'fade';
2966  const CLASS_NAME_SHOW$5 = 'show';
2967  const CLASS_NAME_STATIC = 'modal-static';
2968  const SELECTOR_DIALOG = '.modal-dialog';
2969  const SELECTOR_MODAL_BODY = '.modal-body';
2970  const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]';
2971  const SELECTOR_DATA_DISMISS$2 = '[data-bs-dismiss="modal"]';
2972  /**
2973   * ------------------------------------------------------------------------
2974   * Class Definition
2975   * ------------------------------------------------------------------------
2976   */
2977
2978  class Modal extends BaseComponent {
2979    constructor(element, config) {
2980      super(element);
2981      this._config = this._getConfig(config);
2982      this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);
2983      this._backdrop = this._initializeBackDrop();
2984      this._isShown = false;
2985      this._ignoreBackdropClick = false;
2986      this._isTransitioning = false;
2987    } // Getters
2988
2989
2990    static get Default() {
2991      return Default$5;
2992    }
2993
2994    static get NAME() {
2995      return NAME$6;
2996    } // Public
2997
2998
2999    toggle(relatedTarget) {
3000      return this._isShown ? this.hide() : this.show(relatedTarget);
3001    }
3002
3003    show(relatedTarget) {
3004      if (this._isShown || this._isTransitioning) {
3005        return;
3006      }
3007
3008      if (this._isAnimated()) {
3009        this._isTransitioning = true;
3010      }
3011
3012      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {
3013        relatedTarget
3014      });
3015
3016      if (this._isShown || showEvent.defaultPrevented) {
3017        return;
3018      }
3019
3020      this._isShown = true;
3021      hide();
3022      document.body.classList.add(CLASS_NAME_OPEN);
3023
3024      this._adjustDialog();
3025
3026      this._setEscapeEvent();
3027
3028      this._setResizeEvent();
3029
3030      EventHandler.on(this._element, EVENT_CLICK_DISMISS$2, SELECTOR_DATA_DISMISS$2, event => this.hide(event));
3031      EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {
3032        EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {
3033          if (event.target === this._element) {
3034            this._ignoreBackdropClick = true;
3035          }
3036        });
3037      });
3038
3039      this._showBackdrop(() => this._showElement(relatedTarget));
3040    }
3041
3042    hide(event) {
3043      if (event) {
3044        event.preventDefault();
3045      }
3046
3047      if (!this._isShown || this._isTransitioning) {
3048        return;
3049      }
3050
3051      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);
3052
3053      if (hideEvent.defaultPrevented) {
3054        return;
3055      }
3056
3057      this._isShown = false;
3058
3059      const isAnimated = this._isAnimated();
3060
3061      if (isAnimated) {
3062        this._isTransitioning = true;
3063      }
3064
3065      this._setEscapeEvent();
3066
3067      this._setResizeEvent();
3068
3069      EventHandler.off(document, EVENT_FOCUSIN$2);
3070
3071      this._element.classList.remove(CLASS_NAME_SHOW$5);
3072
3073      EventHandler.off(this._element, EVENT_CLICK_DISMISS$2);
3074      EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS);
3075
3076      this._queueCallback(() => this._hideModal(), this._element, isAnimated);
3077    }
3078
3079    dispose() {
3080      [window, this._dialog].forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY$6));
3081
3082      this._backdrop.dispose();
3083
3084      super.dispose();
3085      /**
3086       * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`
3087       * Do not move `document` in `htmlElements` array
3088       * It will remove `EVENT_CLICK_DATA_API` event that should remain
3089       */
3090
3091      EventHandler.off(document, EVENT_FOCUSIN$2);
3092    }
3093
3094    handleUpdate() {
3095      this._adjustDialog();
3096    } // Private
3097
3098
3099    _initializeBackDrop() {
3100      return new Backdrop({
3101        isVisible: Boolean(this._config.backdrop),
3102        // 'static' option will be translated to true, and booleans will keep their value
3103        isAnimated: this._isAnimated()
3104      });
3105    }
3106
3107    _getConfig(config) {
3108      config = { ...Default$5,
3109        ...Manipulator.getDataAttributes(this._element),
3110        ...config
3111      };
3112      typeCheckConfig(NAME$6, config, DefaultType$5);
3113      return config;
3114    }
3115
3116    _showElement(relatedTarget) {
3117      const isAnimated = this._isAnimated();
3118
3119      const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);
3120
3121      if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
3122        // Don't move modal's DOM position
3123        document.body.appendChild(this._element);
3124      }
3125
3126      this._element.style.display = 'block';
3127
3128      this._element.removeAttribute('aria-hidden');
3129
3130      this._element.setAttribute('aria-modal', true);
3131
3132      this._element.setAttribute('role', 'dialog');
3133
3134      this._element.scrollTop = 0;
3135
3136      if (modalBody) {
3137        modalBody.scrollTop = 0;
3138      }
3139
3140      if (isAnimated) {
3141        reflow(this._element);
3142      }
3143
3144      this._element.classList.add(CLASS_NAME_SHOW$5);
3145
3146      if (this._config.focus) {
3147        this._enforceFocus();
3148      }
3149
3150      const transitionComplete = () => {
3151        if (this._config.focus) {
3152          this._element.focus();
3153        }
3154
3155        this._isTransitioning = false;
3156        EventHandler.trigger(this._element, EVENT_SHOWN$3, {
3157          relatedTarget
3158        });
3159      };
3160
3161      this._queueCallback(transitionComplete, this._dialog, isAnimated);
3162    }
3163
3164    _enforceFocus() {
3165      EventHandler.off(document, EVENT_FOCUSIN$2); // guard against infinite focus loop
3166
3167      EventHandler.on(document, EVENT_FOCUSIN$2, event => {
3168        if (document !== event.target && this._element !== event.target && !this._element.contains(event.target)) {
3169          this._element.focus();
3170        }
3171      });
3172    }
3173
3174    _setEscapeEvent() {
3175      if (this._isShown) {
3176        EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {
3177          if (this._config.keyboard && event.key === ESCAPE_KEY$1) {
3178            event.preventDefault();
3179            this.hide();
3180          } else if (!this._config.keyboard && event.key === ESCAPE_KEY$1) {
3181            this._triggerBackdropTransition();
3182          }
3183        });
3184      } else {
3185        EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS$1);
3186      }
3187    }
3188
3189    _setResizeEvent() {
3190      if (this._isShown) {
3191        EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog());
3192      } else {
3193        EventHandler.off(window, EVENT_RESIZE);
3194      }
3195    }
3196
3197    _hideModal() {
3198      this._element.style.display = 'none';
3199
3200      this._element.setAttribute('aria-hidden', true);
3201
3202      this._element.removeAttribute('aria-modal');
3203
3204      this._element.removeAttribute('role');
3205
3206      this._isTransitioning = false;
3207
3208      this._backdrop.hide(() => {
3209        document.body.classList.remove(CLASS_NAME_OPEN);
3210
3211        this._resetAdjustments();
3212
3213        reset();
3214        EventHandler.trigger(this._element, EVENT_HIDDEN$3);
3215      });
3216    }
3217
3218    _showBackdrop(callback) {
3219      EventHandler.on(this._element, EVENT_CLICK_DISMISS$2, event => {
3220        if (this._ignoreBackdropClick) {
3221          this._ignoreBackdropClick = false;
3222          return;
3223        }
3224
3225        if (event.target !== event.currentTarget) {
3226          return;
3227        }
3228
3229        if (this._config.backdrop === true) {
3230          this.hide();
3231        } else if (this._config.backdrop === 'static') {
3232          this._triggerBackdropTransition();
3233        }
3234      });
3235
3236      this._backdrop.show(callback);
3237    }
3238
3239    _isAnimated() {
3240      return this._element.classList.contains(CLASS_NAME_FADE$4);
3241    }
3242
3243    _triggerBackdropTransition() {
3244      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
3245
3246      if (hideEvent.defaultPrevented) {
3247        return;
3248      }
3249
3250      const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
3251
3252      if (!isModalOverflowing) {
3253        this._element.style.overflowY = 'hidden';
3254      }
3255
3256      this._element.classList.add(CLASS_NAME_STATIC);
3257
3258      const modalTransitionDuration = getTransitionDurationFromElement(this._dialog);
3259      EventHandler.off(this._element, 'transitionend');
3260      EventHandler.one(this._element, 'transitionend', () => {
3261        this._element.classList.remove(CLASS_NAME_STATIC);
3262
3263        if (!isModalOverflowing) {
3264          EventHandler.one(this._element, 'transitionend', () => {
3265            this._element.style.overflowY = '';
3266          });
3267          emulateTransitionEnd(this._element, modalTransitionDuration);
3268        }
3269      });
3270      emulateTransitionEnd(this._element, modalTransitionDuration);
3271
3272      this._element.focus();
3273    } // ----------------------------------------------------------------------
3274    // the following methods are used to handle overflowing modals
3275    // ----------------------------------------------------------------------
3276
3277
3278    _adjustDialog() {
3279      const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
3280      const scrollbarWidth = getWidth();
3281      const isBodyOverflowing = scrollbarWidth > 0;
3282
3283      if (!isBodyOverflowing && isModalOverflowing && !isRTL() || isBodyOverflowing && !isModalOverflowing && isRTL()) {
3284        this._element.style.paddingLeft = `${scrollbarWidth}px`;
3285      }
3286
3287      if (isBodyOverflowing && !isModalOverflowing && !isRTL() || !isBodyOverflowing && isModalOverflowing && isRTL()) {
3288        this._element.style.paddingRight = `${scrollbarWidth}px`;
3289      }
3290    }
3291
3292    _resetAdjustments() {
3293      this._element.style.paddingLeft = '';
3294      this._element.style.paddingRight = '';
3295    } // Static
3296
3297
3298    static jQueryInterface(config, relatedTarget) {
3299      return this.each(function () {
3300        const data = Modal.getInstance(this) || new Modal(this, typeof config === 'object' ? config : {});
3301
3302        if (typeof config !== 'string') {
3303          return;
3304        }
3305
3306        if (typeof data[config] === 'undefined') {
vendor: 4,728 bytes, lines 3307-3479
3307          throw new TypeError(`No method named "${config}"`);
3308        }
3309
3310        data[config](relatedTarget);
3311      });
3312    }
3313
3314  }
3315  /**
3316   * ------------------------------------------------------------------------
3317   * Data Api implementation
3318   * ------------------------------------------------------------------------
3319   */
3320
3321
3322  EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {
3323    const target = getElementFromSelector(this);
3324
3325    if (['A', 'AREA'].includes(this.tagName)) {
3326      event.preventDefault();
3327    }
3328
3329    EventHandler.one(target, EVENT_SHOW$3, showEvent => {
3330      if (showEvent.defaultPrevented) {
3331        // only register focus restorer if modal will actually get shown
3332        return;
3333      }
3334
3335      EventHandler.one(target, EVENT_HIDDEN$3, () => {
3336        if (isVisible(this)) {
3337          this.focus();
3338        }
3339      });
3340    });
3341    const data = Modal.getInstance(target) || new Modal(target);
3342    data.toggle(this);
3343  });
3344  /**
3345   * ------------------------------------------------------------------------
3346   * jQuery
3347   * ------------------------------------------------------------------------
3348   * add .Modal to jQuery only if jQuery is present
3349   */
3350
3351  defineJQueryPlugin(Modal);
3352
3353  /**
3354   * --------------------------------------------------------------------------
3355   * Bootstrap (v5.0.1): offcanvas.js
3356   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
3357   * --------------------------------------------------------------------------
3358   */
3359  /**
3360   * ------------------------------------------------------------------------
3361   * Constants
3362   * ------------------------------------------------------------------------
3363   */
3364
3365  const NAME$5 = 'offcanvas';
3366  const DATA_KEY$5 = 'bs.offcanvas';
3367  const EVENT_KEY$5 = `.${DATA_KEY$5}`;
3368  const DATA_API_KEY$2 = '.data-api';
3369  const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$5}${DATA_API_KEY$2}`;
3370  const ESCAPE_KEY = 'Escape';
3371  const Default$4 = {
3372    backdrop: true,
3373    keyboard: true,
3374    scroll: false
3375  };
3376  const DefaultType$4 = {
3377    backdrop: 'boolean',
3378    keyboard: 'boolean',
3379    scroll: 'boolean'
3380  };
3381  const CLASS_NAME_SHOW$4 = 'show';
3382  const OPEN_SELECTOR = '.offcanvas.show';
3383  const EVENT_SHOW$2 = `show${EVENT_KEY$5}`;
3384  const EVENT_SHOWN$2 = `shown${EVENT_KEY$5}`;
3385  const EVENT_HIDE$2 = `hide${EVENT_KEY$5}`;
3386  const EVENT_HIDDEN$2 = `hidden${EVENT_KEY$5}`;
3387  const EVENT_FOCUSIN$1 = `focusin${EVENT_KEY$5}`;
3388  const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$5}${DATA_API_KEY$2}`;
3389  const EVENT_CLICK_DISMISS$1 = `click.dismiss${EVENT_KEY$5}`;
3390  const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$5}`;
3391  const SELECTOR_DATA_DISMISS$1 = '[data-bs-dismiss="offcanvas"]';
3392  const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]';
3393  /**
3394   * ------------------------------------------------------------------------
3395   * Class Definition
3396   * ------------------------------------------------------------------------
3397   */
3398
3399  class Offcanvas extends BaseComponent {
3400    constructor(element, config) {
3401      super(element);
3402      this._config = this._getConfig(config);
3403      this._isShown = false;
3404      this._backdrop = this._initializeBackDrop();
3405
3406      this._addEventListeners();
3407    } // Getters
3408
3409
3410    static get NAME() {
3411      return NAME$5;
3412    }
3413
3414    static get Default() {
3415      return Default$4;
3416    } // Public
3417
3418
3419    toggle(relatedTarget) {
3420      return this._isShown ? this.hide() : this.show(relatedTarget);
3421    }
3422
3423    show(relatedTarget) {
3424      if (this._isShown) {
3425        return;
3426      }
3427
3428      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$2, {
3429        relatedTarget
3430      });
3431
3432      if (showEvent.defaultPrevented) {
3433        return;
3434      }
3435
3436      this._isShown = true;
3437      this._element.style.visibility = 'visible';
3438
3439      this._backdrop.show();
3440
3441      if (!this._config.scroll) {
3442        hide();
3443
3444        this._enforceFocusOnElement(this._element);
3445      }
3446
3447      this._element.removeAttribute('aria-hidden');
3448
3449      this._element.setAttribute('aria-modal', true);
3450
3451      this._element.setAttribute('role', 'dialog');
3452
3453      this._element.classList.add(CLASS_NAME_SHOW$4);
3454
3455      const completeCallBack = () => {
3456        EventHandler.trigger(this._element, EVENT_SHOWN$2, {
3457          relatedTarget
3458        });
3459      };
3460
3461      this._queueCallback(completeCallBack, this._element, true);
3462    }
3463
3464    hide() {
3465      if (!this._isShown) {
3466        return;
3467      }
3468
3469      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$2);
3470
3471      if (hideEvent.defaultPrevented) {
3472        return;
3473      }
3474
3475      EventHandler.off(document, EVENT_FOCUSIN$1);
3476
3477      this._element.blur();
3478
3479      this._isShown = false;
3480
3481      this._element.classList.remove(CLASS_NAME_SHOW$4);
3482
3483      this._backdrop.hide();
3484
3485      const completeCallback = () => {
3486        this._element.setAttribute('aria-hidden', true);
3487
3488        this._element.removeAttribute('aria-modal');
3489
3490        this._element.removeAttribute('role');
3491
3492        this._element.style.visibility = 'hidden';
3493
3494        if (!this._config.scroll) {
3495          reset();
3496        }
3497
3498        EventHandler.trigger(this._element, EVENT_HIDDEN$2);
3499      };
3500
3501      this._queueCallback(completeCallback, this._element, true);
3502    }
3503
3504    dispose() {
3505      this._backdrop.dispose();
3506
3507      super.dispose();
3508      EventHandler.off(document, EVENT_FOCUSIN$1);
3509    } // Private
3510
3511
3512    _getConfig(config) {
3513      config = { ...Default$4,
3514        ...Manipulator.getDataAttributes(this._element),
3515        ...(typeof config === 'object' ? config : {})
3516      };
3517      typeCheckConfig(NAME$5, config, DefaultType$4);
3518      return config;
3519    }
3520
3521    _initializeBackDrop() {
3522      return new Backdrop({
3523        isVisible: this._config.backdrop,
3524        isAnimated: true,
3525        rootElement: this._element.parentNode,
3526        clickCallback: () => this.hide()
3527      });
3528    }
3529
3530    _enforceFocusOnElement(element) {
3531      EventHandler.off(document, EVENT_FOCUSIN$1); // guard against infinite focus loop
3532
3533      EventHandler.on(document, EVENT_FOCUSIN$1, event => {
3534        if (document !== event.target && element !== event.target && !element.contains(event.target)) {
3535          element.focus();
3536        }
3537      });
3538      element.focus();
3539    }
3540
3541    _addEventListeners() {
3542      EventHandler.on(this._element, EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, () => this.hide());
3543      EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {
3544        if (this._config.keyboard && event.key === ESCAPE_KEY) {
3545          this.hide();
3546        }
3547      });
3548    } // Static
3549
3550
3551    static jQueryInterface(config) {
3552      return this.each(function () {
3553        const data = Data.get(this, DATA_KEY$5) || new Offcanvas(this, typeof config === 'object' ? config : {});
3554
3555        if (typeof config !== 'string') {
3556          return;
3557        }
3558
3559        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
3560          throw new TypeError(`No method named "${config}"`);
3561        }
3562
3563        data[config](this);
3564      });
3565    }
3566
3567  }
3568  /**
3569   * ------------------------------------------------------------------------
3570   * Data Api implementation
3571   * ------------------------------------------------------------------------
3572   */
3573
3574
3575  EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {
3576    const target = getElementFromSelector(this);
3577
3578    if (['A', 'AREA'].includes(this.tagName)) {
3579      event.preventDefault();
3580    }
3581
3582    if (isDisabled(this)) {
3583      return;
3584    }
3585
3586    EventHandler.one(target, EVENT_HIDDEN$2, () => {
3587      // focus on trigger when it is closed
3588      if (isVisible(this)) {
3589        this.focus();
3590      }
3591    }); // avoid conflict when clicking a toggler of an offcanvas, while another is open
3592
3593    const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);
3594
3595    if (allReadyOpen && allReadyOpen !== target) {
3596      Offcanvas.getInstance(allReadyOpen).hide();
3597    }
3598
3599    const data = Data.get(target, DATA_KEY$5) || new Offcanvas(target);
3600    data.toggle(this);
3601  });
3602  EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => {
3603    SelectorEngine.find(OPEN_SELECTOR).forEach(el => (Data.get(el, DATA_KEY$5) || new Offcanvas(el)).show());
3604  });
3605  /**
3606   * ------------------------------------------------------------------------
3607   * jQuery
3608   * ------------------------------------------------------------------------
3609   */
3610
3611  defineJQueryPlugin(Offcanvas);
3612
3613  /**
3614   * --------------------------------------------------------------------------
3615   * Bootstrap (v5.0.1): util/sanitizer.js
3616   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
3617   * --------------------------------------------------------------------------
3618   */
3619  const uriAttrs = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);
3620  const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
3621  /**
3622   * A pattern that recognizes a commonly useful subset of URLs that are safe.
3623   *
3624   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
3625   */
3626
3627  const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i;
3628  /**
3629   * A pattern that matches safe data URLs. Only matches image, video and audio types.
3630   *
3631   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
3632   */
3633
3634  const DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i;
3635
3636  const allowedAttribute = (attr, allowedAttributeList) => {
3637    const attrName = attr.nodeName.toLowerCase();
3638
3639    if (allowedAttributeList.includes(attrName)) {
3640      if (uriAttrs.has(attrName)) {
3641        return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue));
3642      }
3643
3644      return true;
3645    }
3646
3647    const regExp = allowedAttributeList.filter(attrRegex =>
3647 attrRegex instanceof RegExp); // Check if a regular expression validates the attribute.
3648
3649    for (let i = 0, len = regExp.length; i < len; i++) {
3650      if (regExp[i].test(attrName)) {
3651        return true;
3652      }
3653    }
3654
3655    return false;
3656  };
3657
3658  const DefaultAllowlist = {
3659    // Global attributes allowed on any supplied element below.
3660    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
3661    a: ['target', 'href', 'title', 'rel'],
3662    area: [],
3663    b: [],
3664    br: [],
3665    col: [],
3666    code: [],
3667    div: [],
3668    em: [],
3669    hr: [],
3670    h1: [],
3671    h2: [],
3672    h3: [],
3673    h4: [],
3674    h5: [],
3675    h6: [],
3676    i: [],
3677    img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
3678    li: [],
3679    ol: [],
3680    p: [],
3681    pre: [],
3682    s: [],
3683    small: [],
3684    span: [],
3685    sub: [],
3686    sup: [],
3687    strong: [],
3688    u: [],
3689    ul: []
3690  };
3691  function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {
3692    if (!unsafeHtml.length) {
3693      return unsafeHtml;
3694    }
3695
3696    if (sanitizeFn && typeof sanitizeFn === 'function') {
3697      return sanitizeFn(unsafeHtml);
3698    }
3699
3700    const domParser = new window.DOMParser();
3701    const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
3702    const allowlistKeys = Object.keys(allowList);
3703    const elements = [].concat(...createdDocument.body.querySelectorAll('*'));
3704
3705    for (let i = 0, len = elements.length; i < len; i++) {
3706      const el = elements[i];
3707      const elName = el.nodeName.toLowerCase();
3708
3709      if (!allowlistKeys.includes(elName)) {
3710        el.parentNode.removeChild(el);
3711        continue;
3712      }
3713
3714      const attributeList = [].concat(...el.attributes);
3715      const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || []);
3716      attributeList.forEach(attr => {
3717        if (!allowedAttribute(attr, allowedAttributes)) {
3718          el.removeAttribute(attr.nodeName);
3719        }
3720      });
3721    }
3722
3723    return createdDocument.body.innerHTML;
3724  }
3725
3726  /**
3727   * --------------------------------------------------------------------------
3728   * Bootstrap (v5.0.1): tooltip.js
3729   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
3730   * --------------------------------------------------------------------------
3731   */
3732  /**
3733   * ------------------------------------------------------------------------
3734   * Constants
3735   * ------------------------------------------------------------------------
3736   */
3737
3738  const NAME$4 = 'tooltip';
3739  const DATA_KEY$4 = 'bs.tooltip';
3740  const EVENT_KEY$4 = `.${DATA_KEY$4}`;
3741  const CLASS_PREFIX$1 = 'bs-tooltip';
3742  const BSCLS_PREFIX_REGEX$1 = new RegExp(`(^|\\s)${CLASS_PREFIX$1}\\S+`, 'g');
3743  const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);
3744  const DefaultType$3 = {
3745    animation: 'boolean',
3746    template: 'string',
3747    title: '(string|element|function)',
3748    trigger: 'string',
3749    delay: '(number|object)',
3750    html: 'boolean',
3751    selector: '(string|boolean)',
3752    placement: '(string|function)',
3753    offset: '(array|string|function)',
3754    container: '(string|element|boolean)',
3755    fallbackPlacements: 'array',
3756    boundary: '(string|element)',
3757    customClass: '(string|function)',
3758    sanitize: 'boolean',
3759    sanitizeFn: '(null|function)',
3760    allowList: 'object',
3761    popperConfig: '(null|object|function)'
3762  };
3763  const AttachmentMap = {
3764    AUTO: 'auto',
3765    TOP: 'top',
3766    RIGHT: isRTL() ? 'left' : 'right',
3767    BOTTOM: 'bottom',
3768    LEFT: isRTL() ? 'right' : 'left'
3769  };
3770  const Default$3 = {
3771    animation: true,
3772    template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-arrow"></div>' + '<div class="tooltip-inner"></div>' + '</div>',
3773    trigger: 'hover focus',
3774    title: '',
3775    delay: 0,
3776    html: false,
3777    selector: false,
3778    placement: 'top',
3779    offset: [0, 0],
3780    container: false,
3781    fallbackPlacements: ['top', 'right', 'bottom', 'left'],
3782    boundary: 'clippingParents',
3783    customClass: '',
3784    sanitize: true,
3785    sanitizeFn: null,
3786    allowList: DefaultAllowlist,
3787    popperConfig: null
3788  };
3789  const Event$2 = {
3790    HIDE: `hide${EVENT_KEY$4}`,
3791    HIDDEN: `hidden${EVENT_KEY$4}`,
3792    SHOW: `show${EVENT_KEY$4}`,
3793    SHOWN: `shown${EVENT_KEY$4}`,
3794    INSERTED: `inserted${EVENT_KEY$4}`,
3795    CLICK: `click${EVENT_KEY$4}`,
3796    FOCUSIN: `focusin${EVENT_KEY$4}`,
3797    FOCUSOUT: `focusout${EVENT_KEY$4}`,
3798    MOUSEENTER: `mouseenter${EVENT_KEY$4}`,
3799    MOUSELEAVE: `mouseleave${EVENT_KEY$4}`
3800  };
3801  const CLASS_NAME_FADE$3 = 'fade';
3802  const CLASS_NAME_MODAL = 'modal';
3803  const CLASS_NAME_SHOW$3 = 'show';
3804  const HOVER_STATE_SHOW = 'show';
3805  const HOVER_STATE_OUT = 'out';
3806  const SELECTOR_TOOLTIP_INNER = '.tooltip-inner';
3807  const TRIGGER_HOVER = 'hover';
3808  const TRIGGER_FOCUS = 'focus';
3809  const TRIGGER_CLICK = 'click';
3810  const TRIGGER_MANUAL = 'manual';
3811  /**
3812   * ------------------------------------------------------------------------
3813   * Class Definition
3814   * ------------------------------------------------------------------------
3815   */
3816
3817  class Tooltip extends BaseComponent {
3818    constructor(element, config) {
3819      if (typeof Popper__namespace === 'undefined') {
3820        throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)');
3821      }
3822
3823      super(element); // private
3824
3825      this._isEnabled = true;
3826      this._timeout = 0;
3827      this._hoverState = '';
3828      this._activeTrigger = {};
3829      this._popper = null; // Protected
3830
3831      this._config = this._getConfig(config);
3832      this.tip = null;
3833
3834      this._setListeners();
3835    } // Getters
3836
3837
3838    static get Default() {
3839      return Default$3;
3840    }
3841
3842    static get NAME() {
3843      return NAME$4;
3844    }
3845
3846    static get Event() {
3847      return Event$2;
3848    }
3849
3850    static get DefaultType() {
3851      return DefaultType$3;
3852    } // Public
3853
3854
3855    enable() {
3856      this._isEnabled = true;
3857    }
3858
3859    disable() {
3860      this._isEnabled = false;
3861    }
3862
3863    toggleEnabled() {
3864      this._isEnabled = !this._isEnabled;
3865    }
3866
3867    toggle(event) {
3868      if (!this._isEnabled) {
3869        return;
3870      }
3871
3872      if (event) {
3873        const context = this._initializeOnDelegatedTarget(event);
3874
3875        context._activeTrigger.click = !context._activeTrigger.click;
3876
3877        if (context._isWithActiveTrigger()) {
3878          context._enter(null, context);
3879        } else {
3880          context._leave(null, context);
3881        }
3882      } else {
3883        if (this.getTipElement().classList.contains(CLASS_NAME_SHOW$3)) {
3884          this._leave(null, this);
3885
3886          return;
3887        }
3888
3889        this._enter(null, this);
3890      }
3891    }
3892
3893    dispose() {
3894      clearTimeout(this._timeout);
3895      EventHandler.off(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler);
3896
3897      if (this.tip && this.tip.parentNode) {
3898        this.tip.parentNode.removeChild(this.tip);
3899      }
3900
3901      if (this._popper) {
3902        this._popper.destroy();
3903      }
3904
3905      super.dispose();
3906    }
3907
3908    show() {
3909      if (this._element.style.display === 'none') {
3910        throw new Error('Please use show on visible elements');
3911      }
3912
3913      if (!(this.isWithContent() && this._isEnabled)) {
3914        return;
3915      }
3916
3917      const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW);
3918      const shadowRoot = findShadowRoot(this._element);
3919      const isInTheDom = shadowRoot === null ? this._element.ownerDocument.documentElement.contains(this._element) : shadowRoot.contains(this._element);
3920
3921      if (showEvent.defaultPrevented || !isInTheDom) {
3922        return;
3923      }
3924
3925      const tip = this.getTipElement();
3926      const tipId = getUID(this.constructor.NAME);
3927      tip.setAttribute('id', tipId);
3928
3929      this._element.setAttribute('aria-describedby', tipId);
3930
3931      this.setContent();
3932
3933      if (this._config.animation) {
3934        tip.classList.add(CLASS_NAME_FADE$3);
3935      }
3936
3937      const placement = typeof this._config.placement === 'function' ? this._config.placement.call(this, tip, this._element) : this._config.placement;
3938
3939      const attachment = this._getAttachment(placement);
3940
3941      this._addAttachmentClass(attachment);
3942
3943      const {
3944        container
3945      } = this._config;
3946      Data.set(tip, this.constructor.DATA_KEY, this);
3947
3948      if (!this._element.ownerDocument.documentElement.contains(this.tip)) {
3949        container.appendChild(tip);
3950        EventHandler.trigger(this._element, this.constructor.Event.INSERTED);
3951      }
3952
3953      if (this._popper) {
3954        this._popper.update();
3955      } else {
3956        this._popper = Popper__namespace.createPopper(this._element, tip, this._getPopperConfig(attachment));
3957      }
3958
3959      tip.classList.add(CLASS_NAME_SHOW$3);
3960      const customClass = typeof this._config.customClass === 'function' ? this._config.customClass() : this._config.customClass;
3961
3962      if (customClass) {
3963        tip.classList.add(...customClass.split(' '));
3964      } // If this is a touch-enabled device we add extra
3965      // empty mouseover listeners to the body's immediate children;
3966      // only needed because of broken event delegation on iOS
3967      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
3968
3969
3970      if ('ontouchstart' in document.documentElement) {
3971        [].concat(...document.body.children).forEach(element => {
3972          EventHandler.on(element, 'mouseover', noop);
3973        });
3974      }
3975
3976      const complete = () => {
3977        const prevHoverState = this._hoverState;
3978        this._hoverState = null;
3979        EventHandler.trigger(this._element, this.constructor.Event.SHOWN);
3980
3981        if (prevHoverState === HOVER_STATE_OUT) {
3982          this._leave(null, this);
3983        }
3984      };
3985
3986      const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE$3);
3987
3988      this._queueCallback(complete, this.tip, isAnimated);
3989    }
3990
3991    hide() {
3992      if (!this._popper) {
3993        return;
3994      }
3995
3996      const tip = this.getTipElement();
3997
3998      const complete = () => {
3999        if (this._isWithActiveTrigger()) {
4000          return;
4001        }
4002
4003        if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {
4004          tip.parentNode.removeChild(tip);
4005        }
4006
4007        this._cleanTipClass();
4008
4009        this._element.removeAttribute('aria-describedby');
4010
4011        EventHandler.trigger(this._element, this.constructor.Event.HIDDEN);
4012
4013        if (this._popper) {
4014          this._popper.destroy();
4015
4016          this._popper = null;
4017        }
4018      };
4019
4020      const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE);
4021
4022      if (hideEvent.defaultPrevented) {
4023        return;
4024      }
4025
4026      tip.classList.remove(CLASS_NAME_SHOW$3); // If this is a touch-enabled device we remove the extra
4027      // empty mouseover listeners we added for iOS support
4028
4029      if ('ontouchstart' in document.documentElement) {
4030        [].concat(...document.body.children).forEach(element => EventHandler.off(element, 'mouseover', noop));
4031      }
4032
4033      this._activeTrigger[TRIGGER_CLICK] = false;
4034      this._activeTrigger[TRIGGER_FOCUS] = false;
4035      this._activeTrigger[TRIGGER_HOVER] = false;
4036      const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE$3);
4037
4038      this._queueCallback(complete, this.tip, isAnimated);
4039
4040      this._hoverState = '';
4041    }
4042
4043    update() {
4044      if (this._popper !== null) {
4045        this._popper.update();
4046      }
4047    } // Protected
4048
4049
4050    isWithContent() {
4051      return Boolean(this.getTitle());
4052    }
4053
4054    getTipElement() {
4055      if (this.tip) {
4056        return this.tip;
4057      }
4058
4059      const element = document.createElement('div');
4060      element.innerHTML = this._config.template;
4061      this.tip = element.children[0];
4062      return this.tip;
4063    }
4064
4065    setContent() {
4066      const tip = this.getTipElement();
4067      this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle());
4068      tip.classList.remove(CLASS_NAME_FADE$3, CLASS_NAME_SHOW$3);
4069    }
4070
4071    setElementContent(element, content) {
4072      if (element === null) {
4073        return;
4074      }
4075
4076      if (isElement(content)) {
4077        content = getElement(content); // content is a DOM node or a jQuery
4078
4079        if (this._config.html) {
4080          if (content.parentNode !== element) {
4081            element.innerHTML = '';
4082            element.appendChild(content);
4083          }
4084        } else {
4085          element.textContent = content.textContent;
4086        }
4087
4088        return;
4089      }
4090
4091      if (this._config.html) {
4092        if (this._config.sanitize) {
4093          content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn);
4094        }
4095
4096        element.innerHTML = content;
4097      } else {
4098        element.textContent = content;
4099      }
4100    }
4101
4102    getTitle() {
4103      let title = this._element.getAttribute('data-bs-original-title');
4104
4105      if (!title) {
4106        title = typeof this._config.title === 'function' ? this._config.title.call(this._element) : this._config.title;
4107      }
4108
4109      return title;
4110    }
4111
4112    updateAttachment(attachment) {
4113      if (attachment === 'right') {
4114        return 'end';
4115      }
4116
4117      if (attachment === 'left') {
4118        return 'start';
4119      }
4120
4121      return attachment;
4122    } // Private
4123
4124
4125    _initializeOnDelegatedTarget(event, context) {
4126      const dataKey = this.constructor.DATA_KEY;
4127      context = context || Data.get(event.delegateTarget, dataKey);
4128
4129      if (!context) {
4130        context = new this.constructor(event.delegateTarget, this._getDelegateConfig());
4131        Data.set(event.delegateTarget, dataKey, context);
4132      }
4133
4134      return context;
4135    }
4136
4137    _getOffset() {
4138      const {
4139        offset
4140      } = this._config;
4141
4142      if (typeof offset === 'string') {
4143        return offset.split(',').map(val => Number.parseInt(val, 10));
4144      }
4145
4146      if (typeof offset === 'function') {
4147        return popperData => offset(popperData, this._element);
4148      }
4149
4150      return offset;
4151    }
4152
4153    _getPopperConfig(attachment) {
4154      const defaultBsPopperConfig = {
4155        placement: attachment,
4156        modifiers: [{
4157          name: 'flip',
4158          options: {
4159            fallbackPlacements: this._config.fallbackPlacements
4160          }
4161        }, {
4162          name: 'offset',
4163          options: {
4164            offset: this._getOffset()
4165          }
4166        }, {
4167          name: 'preventOverflow',
4168          options: {
4169            boundary: this._config.boundary
4170          }
4171        }, {
4172          name: 'arrow',
4173          options: {
4174            element: `.${this.constructor.NAME}-arrow`
4175          }
4176        }, {
4177          name: 'onChange',
4178          enabled: true,
4179          phase: 'afterWrite',
4180          fn: data => this._handlePopperPlacementChange(data)
4181        }],
4182        onFirstUpdate: data => {
4183          if (data.options.placement !== data.placement) {
4184            this._handlePopperPlacementChange(data);
4185          }
4186        }
4187      };
4188      return { ...defaultBsPopperConfig,
4189        ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)
4190      };
4191    }
4192
4193    _addAttachmentClass(attachment) {
4194      this.getTipElement().classList.add(`${CLASS_PREFIX$1}-${this.updateAttachment(attachment)}`);
4195    }
4196
4197    _getAttachment(placement) {
4198      return AttachmentMap[placement.toUpperCase()];
4199    }
4200
4201    _setListeners() {
4202      const triggers = this._config.trigger.split(' ');
4203
4204      triggers.forEach(trigger => {
4205        if (trigger === 'click') {
4206          EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event));
4207        } else if (trigger !== TRIGGER_MANUAL) {
4208          const eventIn = trigger === TRIGGER_HOVER ? this.constructor.Event.MOUSEENTER : this.constructor.Event.FOCUSIN;
4209          const eventOut = trigger === TRIGGER_HOVER ? this.constructor.Event.MOUSELEAVE : this.constructor.Event.FOCUSOUT;
4210          EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event));
4211          EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event));
4212        }
4213      });
4214
4215      this._hideModalHandler = () => {
4216        if (this._element) {
4217          this.hide();
4218        }
4219      };
4220
4221      EventHandler.on(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler);
4222
4223      if (this._config.selector) {
4224        this._config = { ...this._config,
4225          trigger: 'manual',
4226          selector: ''
4227        };
4228      } else {
4229        this._fixTitle();
4230      }
4231    }
4232
4233    _fixTitle() {
4234      const title = this._element.getAttribute('title');
4235
4236      const originalTitleType = typeof this._element.getAttribute('data-bs-original-title');
4237
4238      if (title || originalTitleType !== 'string') {
4239        this._element.setAttribute('data-bs-original-title', title || '');
4240
4241        if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {
4242          this._element.setAttribute('aria-label', title);
4243        }
4244
4245        this._element.setAttribute('title', '');
4246      }
4247    }
4248
4249    _enter(event, context) {
4250      context = this._initializeOnDelegatedTarget(event, context);
4251
4252      if (event) {
4253        context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
4254      }
4255
4256      if (context.getTipElement().classList.contains(CLASS_NAME_SHOW$3) || context._hoverState === HOVER_STATE_SHOW) {
4257        context._hoverState = HOVER_STATE_SHOW;
4258        return;
4259      }
4260
4261      clearTimeout(context._timeout);
4262      context._hoverState = HOVER_STATE_SHOW;
4263
4264      if (!context._config.delay || !context._config.delay.show) {
4265        context.show();
4266        return;
4267      }
4268
4269      context._timeout = setTimeout(() => {
4270        if (context._hoverState === HOVER_STATE_SHOW) {
4271          context.show();
4272        }
4273      }, context._config.delay.show);
4274    }
4275
4276    _leave(event, context) {
4277      context = this._initializeOnDelegatedTarget(event, context);
4278
4279      if (event) {
4280        context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);
4281      }
4282
4283      if (context._isWithActiveTrigger()) {
4284        return;
4285      }
4286
4287      clearTimeout(context._timeout);
4288      context._hoverState = HOVER_STATE_OUT;
4289
4290      if (!context._config.delay || !context._config.delay.hide) {
4291        context.hide();
4292        return;
4293      }
4294
4295      context._timeout = setTimeout(() => {
4296        if (context._hoverState === HOVER_STATE_OUT) {
4297          context.hide();
4298        }
4299      }, context._config.delay.hide);
4300    }
4301
4302    _isWithActiveTrigger() {
4303      for (const trigger in this._activeTrigger) {
4304        if (this._activeTrigger[trigger]) {
4305          return true;
4306        }
4307      }
4308
4309      return false;
4310    }
4311
4312    _getConfig(config) {
4313      const dataAttributes = Manipulator.getDataAttributes(this._element);
4314      Object.keys(dataAttributes).forEach(dataAttr => {
4315        if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {
4316          delete dataAttributes[dataAttr];
4317        }
4318      });
4319      config = { ...this.constructor.Default,
4320        ...dataAttributes,
4321        ...(typeof config === 'object' && config ? config : {})
4322      };
4323      config.container = config.container === false ? document.body : getElement(config.container);
4324
4325      if (typeof config.delay === 'number') {
4326        config.delay = {
4327          show: config.delay,
4328          hide: config.delay
4329        };
4330      }
4331
4332      if (typeof config.title === 'number') {
4333        config.title = config.title.toString();
4334      }
4335
4336      if (typeof config.content === 'number') {
4337        config.content = config.content.toString();
4338      }
4339
4340      typeCheckConfig(NAME$4, config, this.constructor.DefaultType);
4341
4342      if (config.sanitize) {
4343        config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn);
4344      }
4345
4346      return config;
4347    }
4348
4349    _getDelegateConfig() {
4350      const config = {};
4351
4352      if (this._config) {
4353        for (const key in this._config) {
4354          if (this.constructor.Default[key] !== this._config[key]) {
4355            config[key] = this._config[key];
4356          }
4357        }
4358      }
4359
4360      return config;
4361    }
4362
4363    _cleanTipClass() {
4364      const tip = this.getTipElement();
4365      const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX$1);
4366
4367      if (tabClass !== null && tabClass.length > 0) {
4368        tabClass.map(token => token.trim()).forEach(tClass => tip.classList.remove(tClass));
4369      }
4370    }
4371
4372    _handlePopperPlacementChange(popperData) {
4373      const {
4374        state
4375      } = popperData;
4376
4377      if (!state) {
4378        return;
4379      }
4380
4381      this.tip = state.elements.popper;
4382
4383      this._cleanTipClass();
4384
4385      this._addAttachmentClass(this._getAttachment(state.placement));
4386    } // Static
4387
4388
4389    static jQueryInterface(config) {
4390      return this.each(function () {
4391        let data = Data.get(this, DATA_KEY$4);
4392
4393        const _config = typeof config === 'object' && config;
4394
4395        if (!data && /dispose|hide/.test(config)) {
4396          return;
4397        }
4398
4399        if (!data) {
4400          data = new Tooltip(this, _config);
4401        }
4402
4403        if (typeof config === 'string') {
4404          if (typeof data[config] === 'undefined') {
4405            throw new TypeError(`No method named "${config}"`);
4406          }
4407
4408          data[config]();
4409        }
4410      });
4411    }
4412
4413  }
4414  /**
4415   * ------------------------------------------------------------------------
4416   * jQuery
4417   * ------------------------------------------------------------------------
4418   * add .Tooltip to jQuery only if jQuery is present
4419   */
4420
4421
4422  defineJQueryPlugin(Tooltip);
4423
4424  /**
4425   * --------------------------------------------------------------------------
4426   * Bootstrap (v5.0.1): popover.js
4427   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
4428   * --------------------------------------------------------------------------
4429   */
4430  /**
4431   * ------------------------------------------------------------------------
4432   * Constants
4433   * ------------------------------------------------------------------------
4434   */
4435
4436  const NAME$3 = 'popover';
4437  const DATA_KEY$3 = 'bs.popover';
4438  const EVENT_KEY$3 = `.${DATA_KEY$3}`;
4439  const CLASS_PREFIX = 'bs-popover';
4440  const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\s)${CLASS_PREFIX}\\S+`, 'g');
4441  const Default$2 = { ...Tooltip.Default,
4442    placement: 'right',
4443    offset: [0, 8],
4444    trigger: 'click',
4445    content: '',
4446    template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div>' + '</div>'
4447  };
4448  const DefaultType$2 = { ...Tooltip.DefaultType,
4449    content: '(string|element|function)'
4450  };
4451  const Event$1 = {
4452    HIDE: `hide${EVENT_KEY$3}`,
4453    HIDDEN: `hidden${EVENT_KEY$3}`,
4454    SHOW: `show${EVENT_KEY$3}`,
4455    SHOWN: `shown${EVENT_KEY$3}`,
4456    INSERTED: `inserted${EVENT_KEY$3}`,
4457    CLICK: `click${EVENT_KEY$3}`,
4458    FOCUSIN: `focusin${EVENT_KEY$3}`,
4459    FOCUSOUT: `focusout${EVENT_KEY$3}`,
4460    MOUSEENTER: `mouseenter${EVENT_KEY$3}`,
4461    MOUSELEAVE: `mouseleave${EVENT_KEY$3}`
4462  };
4463  const CLASS_NAME_FADE$2 = 'fade';
4464  const CLASS_NAME_SHOW$2 = 'show';
4465  const SELECTOR_TITLE = '.popover-header';
4466  const SELECTOR_CONTENT = '.popover-body';
4467  /**
4468   * ------------------------------------------------------------------------
4469   * Class Definition
4470   * ------------------------------------------------------------------------
4471   */
4472
4473  class Popover extends Tooltip {
4474    // Getters
4475    static get Default() {
4476      return Default$2;
4477    }
4478
4479    static get NAME() {
4480      return NAME$3;
4481    }
4482
4483    static get Event() {
4484      return Event$1;
4485    }
4486
4487    static get DefaultType() {
4488      return DefaultType$2;
4489    } // Overrides
4490
4491
4492    isWithContent() {
4493      return this.getTitle() || this._getContent();
4494    }
4495
4496    setContent() {
4497      const tip = this.getTipElement(); // we use append for html objects to maintain js events
4498
4499      this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle());
4500
4501      let content = this._getContent();
4502
4503      if (typeof content === 'function') {
4504        content = content.call(this._element);
4505      }
4506
4507      this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content);
4508      tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);
4509    } // Private
4510
4511
4512    _addAttachmentClass(attachment) {
4513      this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`);
4514    }
4515
4516    _getContent() {
4517      return this._element.getAttribute('data-bs-content') || this._config.content;
4518    }
4519
4520    _cleanTipClass() {
4521      const tip = this.getTipElement();
4522      const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX);
4523
4524      if (tabClass !== null && tabClass.length > 0) {
4525        tabClass.map(token => token.trim()).forEach(tClass => tip.classList.remove(tClass));
4526      }
4527    } // Static
4528
4529
4530    static jQueryInterface(config) {
4531      return this.each(function () {
4532        let data = Data.get(this, DATA_KEY$3);
4533
4534        const _config = typeof config === 'object' ? config : null;
4535
4536        if (!data && /dispose|hide/.test(config)) {
4537          return;
4538        }
4539
4540        if (!data) {
4541          data = new Popover(this, _config);
4542          Data.set(this, DATA_KEY$3, data);
4543        }
4544
4545        if (typeof config === 'string') {
4546          if (typeof data[config] === 'undefined') {
4547            throw new TypeError(`No method named "${config}"`);
4548          }
4549
4550          data[config]();
4551        }
4552      });
4553    }
4554
4555  }
4556  /**
4557   * ------------------------------------------------------------------------
4558   * jQuery
4559   * ------------------------------------------------------------------------
4560   * add .Popover to jQuery only if jQuery is present
4561   */
4562
4563
4564  defineJQueryPlugin(Popover);
4565
4566  /**
4567   * --------------------------------------------------------------------------
4568   * Bootstrap (v5.0.1): scrollspy.js
4569   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
4570   * --------------------------------------------------------------------------
4571   */
4572  /**
4573   * ------------------------------------------------------------------------
4574   * Constants
4575   * ------------------------------------------------------------------------
4576   */
4577
4578  const NAME$2 = 'scrollspy';
4579  const DATA_KEY$2 = 'bs.scrollspy';
4580  const EVENT_KEY$2 = `.${DATA_KEY$2}`;
4581  const DATA_API_KEY$1 = '.data-api';
4582  const Default$1 = {
4583    offset: 10,
4584    method: 'auto',
4585    target: ''
4586  };
4587  const DefaultType$1 = {
4588    offset: 'number',
4589    method: 'string',
4590    target: '(string|element)'
4591  };
4592  const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;
4593  const EVENT_SCROLL = `scroll${EVENT_KEY$2}`;
4594  const EVENT_LOAD_DATA_API = `load${EVENT_KEY$2}${DATA_API_KEY$1}`;
4595  const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
4596  const CLASS_NAME_ACTIVE$1 = 'active';
4597  const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]';
4598  const SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';
4599  const SELECTOR_NAV_LINKS = '.nav-link';
4600  const SELECTOR_NAV_ITEMS = '.nav-item';
4601  const SELECTOR_LIST_ITEMS = '.list-group-item';
4602  const SELECTOR_DROPDOWN$1 = '.dropdown';
4603  const SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';
4604  const METHOD_OFFSET = 'offset';
4605  const METHOD_POSITION = 'position';
4606  /**
4607   * ------------------------------------------------------------------------
4608   * Class Definition
4609   * ------------------------------------------------------------------------
4610   */
4611
4612  class ScrollSpy extends BaseComponent {
4613    constructor(element, config) {
4614      super(element);
4615      this._scrollElement = this._element.tagName === 'BODY' ? window : this._element;
4616      this._config = this._getConfig(config);
4617      this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS}, ${this._config.target} ${SELECTOR_LIST_ITEMS}, ${this._config.target}
4617 .${CLASS_NAME_DROPDOWN_ITEM}`;
4618      this._offsets = [];
4619      this._targets = [];
4620      this._activeTarget = null;
4621      this._scrollHeight = 0;
4622      EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process());
4623      this.refresh();
4624
4625      this._process();
4626    } // Getters
4627
4628
4629    static get Default() {
4630      return Default$1;
4631    }
4632
4633    static get NAME() {
4634      return NAME$2;
4635    } // Public
4636
4637
4638    refresh() {
4639      const autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;
4640      const offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
4641      const offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;
4642      this._offsets = [];
4643      this._targets = [];
4644      this._scrollHeight = this._getScrollHeight();
4645      const targets = SelectorEngine.find(this._selector);
4646      targets.map(element => {
4647        const targetSelector = getSelectorFromElement(element);
4648        const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null;
4649
4650        if (target) {
4651          const targetBCR = target.getBoundingClientRect();
4652
4653          if (targetBCR.width || targetBCR.height) {
4654            return [Manipulator[offsetMethod](target).top + offsetBase, targetSelector];
4655          }
4656        }
4657
4658        return null;
4659      }).filter(item => item).sort((a, b) => a[0] - b[0]).forEach(item => {
4660        this._offsets.push(item[0]);
4661
4662        this._targets.push(item[1]);
4663      });
4664    }
4665
4666    dispose() {
4667      EventHandler.off(this._scrollElement, EVENT_KEY$2);
4668      super.dispose();
4669    } // Private
4670
4671
4672    _getConfig(config) {
4673      config = { ...Default$1,
4674        ...Manipulator.getDataAttributes(this._element),
4675        ...(typeof config === 'object' && config ? config : {})
4676      };
4677
4678      if (typeof config.target !== 'string' && isElement(config.target)) {
4679        let {
4680          id
4681        } = config.target;
4682
4683        if (!id) {
4684          id = getUID(NAME$2);
4685          config.target.id = id;
4686        }
4687
4688        config.target = `#${id}`;
4689      }
4690
4691      typeCheckConfig(NAME$2, config, DefaultType$1);
4692      return config;
4693    }
4694
4695    _getScrollTop() {
4696      return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
4697    }
4698
4699    _getScrollHeight() {
4700      return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
4701    }
4702
4703    _getOffsetHeight() {
4704      return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
4705    }
4706
4707    _process() {
4708      const scrollTop = this._getScrollTop() + this._config.offset;
4709
4710      const scrollHeight = this._getScrollHeight();
4711
4712      const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
4713
4714      if (this._scrollHeight !== scrollHeight) {
4715        this.refresh();
4716      }
4717
4718      if (scrollTop >= maxScroll) {
4719        const target = this._targets[this._targets.length - 1];
4720
4721        if (this._activeTarget !== target) {
4722          this._activate(target);
4723        }
4724
4725        return;
4726      }
4727
4728      if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
4729        this._activeTarget = null;
4730
4731        this._clear();
4732
4733        return;
4734      }
4735
4736      for (let i = this._offsets.length; i--;) {
4737        const isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
4738
4739        if (isActiveTarget) {
4740          this._activate(this._targets[i]);
4741        }
4742      }
4743    }
4744
4745    _activate(target) {
4746      this._activeTarget = target;
4747
4748      this._clear();
4749
4750      const queries = this._selector.split(',').map(selector => `${selector}[data-bs-target="${target}"],${selector}[href="${target}"]`);
4751
4752      const link = SelectorEngine.findOne(queries.join(','));
4753
4754      if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
4755        SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, link.closest(SELECTOR_DROPDOWN$1)).classList.add(CLASS_NAME_ACTIVE$1);
4756        link.classList.add(CLASS_NAME_ACTIVE$1);
4757      } else {
4758        // Set triggered link as active
4759        link.classList.add(CLASS_NAME_ACTIVE$1);
4760        SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP$1).forEac
4760h(listGroup => {
4761          // Set triggered links parents as active
4762          // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
4763          SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`).forEach(item => item.classList.add(CLASS_NAME_ACTIVE$1)); // Handle special case when .nav-link is inside .nav-item
4764
4765          SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS).forEach(navItem => {
4766            SelectorEngine.children(navItem, SELECTOR_NAV_LINKS).forEach(item => item.classList.add(CLASS_NAME_ACTIVE$1));
4767          });
4768        });
4769      }
4770
4771      EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {
4772        relatedTarget: target
4773      });
4774    }
4775
4776    _clear() {
4777      SelectorEngine.find(this._selector).filter(node => node.classList.contains(CLASS_NAME_ACTIVE$1)).forEach(node => node.classList.remove(CLASS_NAME_ACTIVE$1));
4778    } // Static
4779
4780
4781    static jQueryInterface(config) {
4782      return this.each(function () {
4783        const data = ScrollSpy.getInstance(this) || new ScrollSpy(this, typeof config === 'object' ? config : {});
4784
4785        if (typeof config !== 'string') {
4786          return;
4787        }
4788
4789        if (typeof data[config] === 'undefined') {
4790          throw new TypeError(`No method named "${config}"`);
4791        }
4792
4793        data[config]();
4794      });
4795    }
4796
4797  }
4798  /**
4799   * ------------------------------------------------------------------------
4800   * Data Api implementation
4801   * ------------------------------------------------------------------------
4802   */
4803
4804
4805  EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
4806    SelectorEngine.find(SELECTOR_DATA_SPY).forEach(spy => new ScrollSpy(spy));
4807  });
4808  /**
4809   * ------------------------------------------------------------------------
4810   * jQuery
4811   * ------------------------------------------------------------------------
4812   * add .ScrollSpy to jQuery only if jQuery is present
4813   */
4814
4815  defineJQueryPlugin(ScrollSpy);
4816
4817  /**
4818   * --------------------------------------------------------------------------
4819   * Bootstrap (v5.0.1): tab.js
4820   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
4821   * --------------------------------------------------------------------------
4822   */
4823  /**
4824   * ------------------------------------------------------------------------
4825   * Constants
4826   * ------------------------------------------------------------------------
4827   */
4828
4829  const NAME$1 = 'tab';
4830  const DATA_KEY$1 = 'bs.tab';
4831  const EVENT_KEY$1 = `.${DATA_KEY$1}`;
4832  const DATA_API_KEY = '.data-api';
4833  const EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;
4834  const EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;
4835  const EVENT_SHOW$1 = `show${EVENT_KEY$1}`;
4836  const EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;
4837  const EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}${DATA_API_KEY}`;
4838  const CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';
4839  const CLASS_NAME_ACTIVE = 'active';
4840  const CLASS_NAME_FADE$1 = 'fade';
4841  const CLASS_NAME_SHOW$1 = 'show';
4842  const SELECTOR_DROPDOWN = '.dropdown';
4843  const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
4844  const SELECTOR_ACTIVE = '.active';
4845  const SELECTOR_ACTIVE_UL = ':scope > li > .active';
4846  const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]';
4847  const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
4848  const SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active';
4849  /**
4850   * ------------------------------------------------------------------------
4851   * Class Definition
4852   * ------------------------------------------------------------------------
4853   */
4854
4855  class Tab extends BaseComponent {
4856    // Getters
4857    static get NAME() {
4858      return NAME$1;
4859    } // Public
4860
4861
4862    show() {
4863      if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && this._element.classList.contains(CLASS_NAME_ACTIVE)) {
4864        return;
4865      }
4866
4867      let previous;
4868      const target = getElementFromSelector(this._element);
4869
4870      const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP);
4871
4872      if (listElement) {
4873        const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;
4874        previous = SelectorEngine.find(itemSelector, listElement);
4875        previous = previous[previous.length - 1];
4876      }
4877
4878      const hideEvent = previous ? EventHandler.trigger(previous, EVENT_HIDE$1, {
4879        relatedTarget: this._element
4880      }) : null;
4881      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$1, {
4882        relatedTarget: previous
4883      });
4884
4885      if (showEvent.defaultPrevented || hideEvent !== null && hideEvent.defaultPrevented) {
4886        return;
4887      }
4888
4889      this._activate(this._element, listElement);
4890
4891      const complete = () => {
4892        EventHandler.trigger(previous, EVENT_HIDDEN$1, {
4893          relatedTarget: this._element
4894        });
4895        EventHandler.trigger(this._element, EVENT_SHOWN$1, {
4896          relatedTarget: previous
4897        });
4898      };
4899
4900      if (target) {
4901        this._activate(target, target.parentNode, complete);
4902      } else {
4903        complete();
4904      }
4905    } // Private
4906
4907
4908    _activate(element, container, callback) {
4909      const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? SelectorEngine.find(SELECTOR_ACTIVE_UL, container) : SelectorEngine.children(container, SELECTOR_ACTIVE);
4910      const active = activeElements[0];
4911      const isTransitioning = callback && active && active.classList.contains(CLASS_NAME_FADE$1);
4912
4913      const complete = () => this._transitionComplete(element, active, callback);
4914
4915      if (active && isTransitioning) {
4916        active.classList.remove(CLASS_NAME_SHOW$1);
4917
4918        this._queueCallback(complete, element, true);
4919      } else {
4920        complete();
4921      }
4922    }
4923
4924    _transitionComplete(element, active, callback) {
4925      if (active) {
4926        active.classList.remove(CLASS_NAME_ACTIVE);
4927        const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode);
4928
4929        if (dropdownChild) {
4930          dropdownChild.classList.remove(CLASS_NAME_ACTIVE);
4931        }
4932
4933        if (active.getAttribute('role') === 'tab') {
4934          active.setAttribute('aria-selected', false);
4935        }
4936      }
4937
4938      element.classList.add(CLASS_NAME_ACTIVE);
4939
4940      if (element.getAttribute('role') === 'tab') {
4941        element.setAttribute('aria-selected', true);
4942      }
4943
4944      reflow(element);
4945
4946      if (element.classList.contains(CLASS_NAME_FADE$1)) {
4947        element.classList.add(CLASS_NAME_SHOW$1);
4948      }
4949
4950      let parent = element.parentNode;
4951
4952      if (parent && parent.nodeName === 'LI') {
4953        parent = parent.parentNode;
4954      }
4955
4956      if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {
4957        const dropdownElement = element.closest(SELECTOR_DROPDOWN);
4958
4959        if (dropdownElement) {
4960          SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement).forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE));
4961        }
4962
4963        element.setAttribute('aria-expanded', true);
4964      }
4965
4966      if (callback) {
4967        callback();
4968      }
4969    } // Static
4970
4971
4972    static jQueryInterface(config) {
4973      return this.each(function () {
4974        const data = Data.get(this, DATA_KEY$1) || new Tab(this);
4975
4976        if (typeof config === 'string') {
4977          if (typeof data[config] === 'undefined') {
4978            throw new TypeError(`No method named "${config}"`);
4979          }
4980
4981          data[config]();
4982        }
4983      });
4984    }
4985
4986  }
4987  /**
4988   * ------------------------------------------------------------------------
4989   * Data Api implementation
4990   * ------------------------------------------------------------------------
4991   */
4992
4993
4994  EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
4995    if (['A', 'AREA'].includes(this.tagName)) {
4996      event.preventDefault();
4997    }
4998
4999    if (isDisabled(this)) {
5000      return;
5001    }
5002
5003    const data = Data.get(this, DATA_KEY$1) || new Tab(this);
5004    data.show();
5005  });
5006  /**
5007   * ------------------------------------------------------------------------
5008   * jQuery
5009   * ------------------------------------------------------------------------
5010   * add .Tab to jQuery only if jQuery is present
5011   */
5012
5013  defineJQueryPlugin(Tab);
5014
5015  /**
5016   * --------------------------------------------------------------------------
5017   * Bootstrap (v5.0.1): toast.js
5018   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5019   * --------------------------------------------------------------------------
5020   */
5021  /**
5022   * ------------------------------------------------------------------------
5023   * Constants
5024   * ------------------------------------------------------------------------
5025   */
5026
5027  const NAME = 'toast';
5028  const DATA_KEY = 'bs.toast';
5029  const EVENT_KEY = `.${DATA_KEY}`;
5030  const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`;
5031  const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;
5032  const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;
5033  const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
5034  const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;
5035  const EVENT_HIDE = `hide${EVENT_KEY}`;
5036  const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
5037  const EVENT_SHOW = `show${EVENT_KEY}`;
5038  const EVENT_SHOWN = `shown${EVENT_KEY}`;
5039  const CLASS_NAME_FADE = 'fade';
5040  const CLASS_NAME_HIDE = 'hide';
5041  const CLASS_NAME_SHOW = 'show';
5042  const CLASS_NAME_SHOWING = 'showing';
5043  const DefaultType = {
5044    animation: 'boolean',
5045    autohide: 'boolean',
5046    delay: 'number'
5047  };
5048  const Default = {
5049    animation: true,
5050    autohide: true,
5051    delay: 5000
5052  };
5053  const SELECTOR_DATA_DISMISS = '[data-bs-dismiss="toast"]';
5054  /**
5055   * ------------------------------------------------------------------------
5056   * Class Definition
5057   * ------------------------------------------------------------------------
5058   */
5059
5060  class Toast extends BaseComponent {
5061    constructor(element, config) {
5062      super(element);
5063      this._config = this._getConfig(config);
5064      this._timeout = null;
5065      this._hasMouseInteraction = false;
5066      this._hasKeyboardInteraction = false;
5067
5068      this._setListeners();
5069    } // Getters
5070
5071
5072    static get DefaultType() {
5073      return DefaultType;
5074    }
5075
5076    static get Default() {
5077      return Default;
5078    }
5079
5080    static get NAME() {
5081      return NAME;
5082    } // Public
5083
5084
5085    show() {
5086      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);
5087
5088      if (showEvent.defaultPrevented) {
5089        return;
5090      }
5091
5092      this._clearTimeout();
5093
5094      if (this._config.animation) {
5095        this._element.classList.add(CLASS_NAME_FADE);
5096      }
5097
5098      const complete = () => {
5099        this._element.classList.remove(CLASS_NAME_SHOWING);
5100
5101        this._element.classList.add(CLASS_NAME_SHOW);
5102
5103        EventHandler.trigger(this._element, EVENT_SHOWN);
5104
5105        this._maybeScheduleHide();
5106      };
5107
5108      this._element.classList.remove(CLASS_NAME_HIDE);
5109
5110      reflow(this._element);
5111
5112      this._element.classList.add(CLASS_NAME_SHOWING);
5113
5114      this._queueCallback(complete, this._element, this._config.animation);
5115    }
5116
5117    hide() {
5118      if (!this._element.classList.contains(CLASS_NAME_SHOW)) {
5119        return;
5120      }
5121
5122      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
5123
5124      if (hideEvent.defaultPrevented) {
5125        return;
5126      }
5127
5128      const complete = () => {
5129        this._element.classList.add(CLASS_NAME_HIDE);
5130
5131        EventHandler.trigger(this._element, EVENT_HIDDEN);
5132      };
5133
5134      this._element.classList.remove(CLASS_NAME_SHOW);
5135
5136      this._queueCallback(complete, this._element, this._config.animation);
5137    }
5138
5139    dispose() {
5140      this._clearTimeout();
5141
5142      if (this._element.classList.contains(CLASS_NAME_SHOW)) {
5143        this._element.classList.remove(CLASS_NAME_SHOW);
5144      }
5145
5146      super.dispose();
5147    } // Private
5148
5149
5150    _getConfig(config) {
5151      config = { ...Default,
5152        ...Manipulator.getDataAttributes(this._element),
5153        ...(typeof config === 'object' && config ? config : {})
5154      };
5155      typeCheckConfig(NAME, config, this.constructor.DefaultType);
5156      return config;
5157    }
5158
5159    _maybeScheduleHide() {
5160      if (!this._config.autohide) {
5161        return;
5162      }
5163
5164      if (this._hasMouseInteraction || this._hasKeyboardInteraction) {
5165        return;
5166      }
5167
5168      this._timeout = setTimeout(() => {
5169        this.hide();
5170      }, this._config.delay);
5171    }
5172
5173    _onInteraction(event, isInteracting) {
5174      switch (event.type) {
5175        case 'mouseover':
5176        case 'mouseout':
5177          this._hasMouseInteraction = isInteracting;
5178          break;
5179
5180        case 'focusin':
5181        case 'focusout':
5182          this._hasKeyboardInteraction = isInteracting;
5183          break;
5184      }
5185
5186      if (isInteracting) {
5187        this._clearTimeout();
5188
5189        return;
5190      }
5191
5192      const nextElement = event.relatedTarget;
5193
5194      if (this._element === nextElement || this._element.contains(nextElement)) {
5195        return;
5196      }
5197
5198      this._maybeScheduleHide();
5199    }
5200
5201    _setListeners() {
5202      EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide());
5203      EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));
5204      EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));
5205      EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));
5206      EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));
5207    }
5208
5209    _clearTimeout() {
5210      clearTimeout(this._timeout);
5211      this._timeout = null;
5212    } // Static
5213
5214
5215    static jQueryInterface(config) {
5216      return this.each(function () {
5217        let data = Data.get(this, DATA_KEY);
5218
5219        const _config = typeof config === 'object' && config;
5220
5221        if (!data) {
5222          data = new Toast(this, _config);
5223        }
5224
5225        if (typeof config === 'string') {
5226          if (typeof data[config] === 'undefined') {
5227            throw new TypeError(`No method named "${config}"`);
5228          }
5229
5230          data[config](this);
5231        }
5232      });
5233    }
5234
5235  }
5236  /**
5237   * ------------------------------------------------------------------------
5238   * jQuery
5239   * ------------------------------------------------------------------------
5240   * add .Toast to jQuery only if jQuery is present
5241   */
5242
5243
5244  defineJQueryPlugin(Toast);
5245
5246  /**
5247   * --------------------------------------------------------------------------
5248   * Bootstrap (v5.0.1): index.umd.js
5249   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5250   * --------------------------------------------------------------------------
5251   */
5252  var index_umd = {
5253    Alert,
5254    Button,
5255    Carousel,
5256    Collapse,
5257    Dropdown,
5258    Modal,
5259    Offcanvas,
5260    Popover,
5261    ScrollSpy,
5262    Tab,
5263    Toast,
5264    Tooltip
5265  };
5266
5267  return index_umd;
5268
5269})));
5270//# sourceMappingURL=bootstrap.js.map
5271;
5272function audio_podcast_menu_open_nav() {
5273	window.audio_podcast_responsiveMenu=true;
5274	jQuery(".sidenav").addClass('show');
5275}
5276function audio_podcast_menu_close_nav() {
5277	window.audio_podcast_responsiveMenu=false;
5278 	jQuery(".sidenav").removeClass('show');
5279}
5280
5281jQuery(function($){
5282 	"use strict";
5283 	jQuery('.main-menu > ul').superfish({
5284		delay: 500,
5285		animation: {opacity:'show',height:'show'},  
5286		speed: 'fast'
5287 	});
5288
5289	new WOW().init();
5290
5291	var leftmenu_height = $( '.left-menu' ).height();
5292  if(leftmenu_height > 540){
5293    $( '.left-menu' ).css({  
5294	    "overflow-y": "scroll",
5295	    "height": "540px"
5296	  });
5297  }
5298});
5299
5300jQuery(document).ready(function () {
5301	window.audio_podcast_currentfocus=null;
5302  	audio_podcast_checkfocusdElement();
5303	var audio_podcast_body = document.querySelector('body');
5304	audio_podcast_body.addEventListener('keyup', audio_podcast_check_tab_press);
5305	var audio_podcast_gotoHome = false;
5306	var audio_podcast_gotoClose = false;
5307	window.audio_podcast_responsiveMenu=false;
5308 	function audio_podcast_checkfocusdElement(){
5309	 	if(window.audio_podcast_currentfocus=document.activeElement.className){
5310		 	window.audio_podcast_currentfocus=document.activeElement.className;
5311	 	}
5312 	}
5313 	function audio_podcast_check_tab_press(e) {
5314		"use strict";
5315		// pick passed event or global event object if passed one is empty
5316		e = e || event;
5317		var activeElement;
5318
5319		if(window.innerWidth < 999){
5320		if (e.keyCode == 9) {
5321			if(window.audio_podcast_responsiveMenu){
5322			if (!e.shiftKey) {
5323				if(audio_podcast_gotoHome) {
5324					jQuery( ".main-menu ul:first li:first a:first-child" ).focus();
5325				}
5326			}
5327			if (jQuery("a.closebtn.mobile-menu").is(":focus")) {
5328				audio_podcast_gotoHome = true;
5329			} else {
5330				audio_podcast_gotoHome = false;
5331			}
5332
5333		}else{
5334
5335			if(window.audio_podcast_currentfocus=="responsivetoggle"){
5336				jQuery( "" ).focus();
5337			}}}
5338		}
5339		if (e.shiftKey && e.keyCode == 9) {
5340		if(window.innerWidth < 999){
5341			if(window.audio_podcast_currentfocus=="header-search"){
5342				jQuery(".responsivetoggle").focus();
5343			}else{
5344				if(window.audio_podcast_responsiveMenu){
5345				if(audio_podcast_gotoClose){
5346					jQuery("a.closebtn.mobile-menu").focus();
5347				}
5348				if (jQuery( ".main-menu ul:first li:first a:first-child" ).is(":focus")) {
5349					audio_podcast_gotoClose = true;
5350				} else {
5351					audio_podcast_gotoClose = false;
5352				}
5353			
5354			}else{
5355
5356			if(window.audio_podcast_responsiveMenu){
5357			}}}}
5358		}
5359	 	audio_podcast_checkfocusdElement();
5360	}
5361});
5362
5363jQuery('document').ready(function($){
5364  $(window).scroll(function(){
5365	var sticky = $('.header-sticky'),
5366		scroll = $(window).scrollTop();
5367
5368	if (scroll >= 100) sticky.addClass('header-fixed');
5369	else sticky.removeClass('header-fixed');
5370	});
5371
5372	/*sticky sidebar*/
5373window.addEventListener('scroll', function() {
5374  var sticky = document.querySelector('.sidebar-sticky');
5375  if (!sticky) return;
5376
5377  var scrollTop = window.scrollY || document.documentElement.scrollTop;
5378  var windowHeight = window.innerHeight;
5379  var documentHeight = document.documentElement.scrollHeight;
5380
5381  var isBottom = scrollTop + windowHeight >= documentHeight-100;
5382
5383  if (scrollTop >= 100 && !isBottom) {
5384    sticky.classList.add('sidebar-fixed');
5385  } else {
5386    sticky.classList.remove('sidebar-fixed');
5387  }
5388});
5389
5390	/*sticky copyright*/
5391	window.addEventListener('scroll', function() {
5392	  var sticky = document.querySelector('.copyright-sticky');
5393	  if (!sticky) return;
5394
5395	  var scrollTop = window.scrollY || document.documentElement.scrollTop;
5396	  var windowHeight = window.innerHeight;
5397	  var documentHeight = document.documentElement.scrollHeight;
5398
5399	  var isBottom = scrollTop + windowHeight >= documentHeight-100;
5400
5401	  if (scrollTop >= 100 && !isBottom) {
5402	    sticky.classList.add('copyright-fixed');
5403	  } else {
5404	    sticky.classList.remove('copyright-fixed');
5405	  }
5406	});
5407  setTimeout(function () {
5408		jQuery("#preloader").fadeOut("slow");
5409  },1000);
5410});
5411
5412jQuery(document).ready(function () {
5413	jQuery(window).scroll(function () {
5414    if (jQuery(this).scrollTop() > 100) {
5415      jQuery('.scrollup i').fadeIn();
5416    } else {
5417      jQuery('.scrollup i').fadeOut();
5418    }
5419	});
5420	jQuery('.scrollup i').click(function () {
5421    jQuery("html, body").animate({
5422      scrollTop: 0
5423    }, 600);
5424    return false;
5425	});
5426});
5427
5428function audio_podcast_leftmenu_open_nav() {
5429	window.audio_podcast_responsiveMenu=true;
5430	jQuery(".left-menu").addClass('show');
5431}
5432function audio_podcast_leftmenu_close_nav() {
5433	window.audio_podcast_responsiveMenu=false;
5434 	jQuery(".left-menu").removeClass('show');
5435}
5436
5437jQuery(document).ready(function () {
5438	window.audio_podcast_currentfocus=null;
5439  	audio_podcast_checkfocusdElement();
5440	var audio_podcast_body = document.querySelector('body');
5441	audio_podcast_body.addEventListener('keyup', audio_podcast_check_tab_press);
5442	var audio_podcast_gotoHome = false;
5443	var audio_podcast_gotoClose = false;
5444	window.audio_podcast_responsiveMenu=false;
5445 	function audio_podcast_checkfocusdElement(){
5446	 	if(window.audio_podcast_currentfocus=document.activeElement.className){
5447		 	window.audio_podcast_currentfocus=document.activeElement.className;
5448	 	}
5449 	}
5450 	function audio_podcast_check_tab_press(e) {
5451		"use strict";
5452		// pick passed event or global event object if passed one is empty
5453		e = e || event;
5454		var activeElement;
5455
5456		if(window.innerWidth < 999){
5457		if (e.keyCode == 9) {
5458			if(window.audio_podcast_responsiveMenu){
5459			if (!e.shiftKey) {
5460				if(audio_podcast_gotoHome) {
5461					jQuery( ".left-menu ul:first li:first a:first-child" ).focus();
5462				}
5463			}
5464			if (jQuery("a.closebtn.mobile-leftmenu").is(":focus")) {
5465				audio_podcast_gotoHome = true;
5466			} else {
5467				audio_podcast_gotoHome = false;
5468			}
5469
5470		}else{
5471
5472			if(window.audio_podcast_currentfocus=="responsive-lefttoggle"){
5473				jQuery( "" ).focus();
5474			}}}
5475		}
5476		if (e.shiftKey && e.keyCode == 9) {
5477		if(window.innerWidth < 999){
5478			if(window.audio_podcast_currentfocus=="header-search"){
5479				jQuery(".responsive-lefttoggle").focus();
5480			}else{
5481				if(window.audio_podcast_responsiveMenu){
5482				if(audio_podcast_gotoClose){
5483					jQuery("a.closebtn.mobile-leftmenu").focus();
5484				}
5485				if (jQuery( ".left-menu ul:first li:first a:first-child" ).is(":focus")) {
5486					audio_podcast_gotoClose = true;
5487				} else {
5488					audio_podcast_gotoClose = false;
5489				}
5490			
5491			}else{
5492
5493			if(window.audio_podcast_responsiveMenu){
5494			}}}}
5495		}
5496	 	audio_podcast_checkfocusdElement();
5497	}
5498});
5499
5500/* Progress Bar */
5501document.addEventListener("DOMContentLoaded", function () {
5502    const audio_podcast_progressBar =
5503        document.getElementById("audio_podcast_elemento_progress_bar");
5504    if (!audio_podcast_progressBar) return;
5505    window.addEventListener("scroll", function () {
5506        const audio_podcast_scrollTop =
5507            document.documentElement.scrollTop || document.body.scrollTop;
5508        const audio_podcast_height =
5509            document.documentElement.scrollHeight -
5510            document.documentElement.clientHeight;
5511        const audio_podcast_scrolled =
5512            (audio_podcast_scrollTop / audio_podcast_height) * 100;
5513        audio_podcast_progressBar.style.width =
5514            audio_podcast_scrolled + "%";
5515    });
5516});;
5517(function() {
5518  var MutationObserver, Util, WeakMap, getComputedStyle, getComputedStyleRX,
5519    bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
5520    indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
5521
5522  Util = (function() {
5523    function Util() {}
5524
5525    Util.prototype.extend = function(custom, defaults) {
5526      var key, value;
5527      for (key in defaults) {
5528        value = defaults[key];
5529        if (custom[key] == null) {
5530          custom[key] = value;
5531        }
5532      }
5533      return custom;
5534    };
5535
5536    Util.prototype.isMobile = function(agent) {
5537      return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(agent);
5538    };
5539
5540    Util.prototype.createEvent = function(event, bubble, cancel, detail) {
5541      var customEvent;
5542      if (bubble == null) {
5543        bubble = false;
5544      }
5545      if (cancel == null) {
5546        cancel = false;
5547      }
5548      if (detail == null) {
5549        detail = null;
5550      }
5551      if (document.createEvent != null) {
5552        customEvent = document.createEvent('CustomEvent');
5553        customEvent.initCustomEvent(event, bubble, cancel, detail);
5554      } else if (document.createEventObject != null) {
5555        customEvent = document.createEventObject();
5556        customEvent.eventType = event;
5557      } else {
5558        customEvent.eventName = event;
5559      }
5560      return customEvent;
5561    };
5562
5563    Util.prototype.emitEvent = function(elem, event) {
5564      if (elem.dispatchEvent != null) {
5565        return elem.dispatchEvent(event);
5566      } else if (event in (elem != null)) {
5567        return elem[event]();
5568      } else if (("on" + event) in (elem != null)) {
5569        return elem["on" + event]();
5570      }
5571    };
5572
5573    Util.prototype.addEvent = function(elem, event, fn) {
5574      if (elem.addEventListener != null) {
5575        return elem.addEventListener(event, fn, false);
5576      } else if (elem.attachEvent != null) {
5577        return elem.attachEvent("on" + event, fn);
5578      } else {
5579        return elem[event] = fn;
5580      }
5581    };
5582
5583    Util.prototype.removeEvent = function(elem, event, fn) {
5584      if (elem.removeEventListener != null) {
5585        return elem.removeEventListener(event, fn, false);
5586      } else if (elem.detachEvent != null) {
5587        return elem.detachEvent("on" + event, fn);
5588      } else {
5589        return delete elem[event];
5590      }
5591    };
5592
vendor: 9,480 bytes, lines 5593-5907
5593    Util.prototype.innerHeight = function() {
5594      if ('innerHeight' in window) {
5595        return window.innerHeight;
5596      } else {
5597        return document.documentElement.clientHeight;
5598      }
5599    };
5600
5601    return Util;
5602
5603  })();
5604
5605  WeakMap = this.WeakMap || this.MozWeakMap || (WeakMap = (function() {
5606    function WeakMap() {
5607      this.keys = [];
5608      this.values = [];
5609    }
5610
5611    WeakMap.prototype.get = function(key) {
5612      var i, item, j, len, ref;
5613      ref = this.keys;
5614      for (i = j = 0, len = ref.length; j < len; i = ++j) {
5615        item = ref[i];
5616        if (item === key) {
5617          return this.values[i];
5618        }
5619      }
5620    };
5621
5622    WeakMap.prototype.set = function(key, value) {
5623      var i, item, j, len, ref;
5624      ref = this.keys;
5625      for (i = j = 0, len = ref.length; j < len; i = ++j) {
5626        item = ref[i];
5627        if (item === key) {
5628          this.values[i] = value;
5629          return;
5630        }
5631      }
5632      this.keys.push(key);
5633      return this.values.push(value);
5634    };
5635
5636    return WeakMap;
5637
5638  })());
5639
5640  MutationObserver = this.MutationObserver || this.WebkitMutationObserver || this.MozMutationObserver || (MutationObserver = (function() {
5641    function MutationObserver() {
5642      if (typeof console !== "undefined" && console !== null) {
5643        console.warn('MutationObserver is not supported by your browser.');
5644      }
5645      if (typeof console !== "undefined" && console !== null) {
5646        console.warn('WOW.js cannot detect dom mutations, please call .sync() after loading new content.');
5647      }
5648    }
5649
5650    MutationObserver.notSupported = true;
5651
5652    MutationObserver.prototype.observe = function() {};
5653
5654    return MutationObserver;
5655
5656  })());
5657
5658  getComputedStyle = this.getComputedStyle || function(el, pseudo) {
5659    this.getPropertyValue = function(prop) {
5660      var ref;
5661      if (prop === 'float') {
5662        prop = 'styleFloat';
5663      }
5664      if (getComputedStyleRX.test(prop)) {
5665        prop.replace(getComputedStyleRX, function(_, _char) {
5666          return _char.toUpperCase();
5667        });
5668      }
5669      return ((ref = el.currentStyle) != null ? ref[prop] : void 0) || null;
5670    };
5671    return this;
5672  };
5673
5674  getComputedStyleRX = /(\-([a-z]){1})/g;
5675
5676  this.WOW = (function() {
5677    WOW.prototype.defaults = {
5678      boxClass: 'wow',
5679      animateClass: 'animated',
5680      offset: 0,
5681      mobile: true,
5682      live: true,
5683      callback: null,
5684      scrollContainer: null
5685    };
5686
5687    function WOW(options) {
5688      if (options == null) {
5689        options = {};
5690      }
5691      this.scrollCallback = bind(this.scrollCallback, this);
5692      this.scrollHandler = bind(this.scrollHandler, this);
5693      this.resetAnimation = bind(this.resetAnimation, this);
5694      this.start = bind(this.start, this);
5695      this.scrolled = true;
5696      this.config = this.util().extend(options, this.defaults);
5697      if (options.scrollContainer != null) {
5698        this.config.scrollContainer = document.querySelector(options.scrollContainer);
5699      }
5700      this.animationNameCache = new WeakMap();
5701      this.wowEvent = this.util().createEvent(this.config.boxClass);
5702    }
5703
5704    WOW.prototype.init = function() {
5705      var ref;
5706      this.element = window.document.documentElement;
5707      if ((ref = document.readyState) === "interactive" || ref === "complete") {
5708        this.start();
5709      } else {
5710        this.util().addEvent(document, 'DOMContentLoaded', this.start);
5711      }
5712      return this.finished = [];
5713    };
5714
5715    WOW.prototype.start = function() {
5716      var box, j, len, ref;
5717      this.stopped = false;
5718      this.boxes = (function() {
5719        var j, len, ref, results;
5720        ref = this.element.querySelectorAll("." + this.config.boxClass);
5721        results = [];
5722        for (j = 0, len = ref.length; j < len; j++) {
5723          box = ref[j];
5724          results.push(box);
5725        }
5726        return results;
5727      }).call(this);
5728      this.all = (function() {
5729        var j, len, ref, results;
5730        ref = this.boxes;
5731        results = [];
5732        for (j = 0, len = ref.length; j < len; j++) {
5733          box = ref[j];
5734          results.push(box);
5735        }
5736        return results;
5737      }).call(this);
5738      if (this.boxes.length) {
5739        if (this.disabled()) {
5740          this.resetStyle();
5741        } else {
5742          ref = this.boxes;
5743          for (j = 0, len = ref.length; j < len; j++) {
5744            box = ref[j];
5745            this.applyStyle(box, true);
5746          }
5747        }
5748      }
5749      if (!this.disabled()) {
5750        this.util().addEvent(this.config.scrollContainer || window, 'scroll', this.scrollHandler);
5751        this.util().addEvent(window, 'resize', this.scrollHandler);
5752        this.interval = setInterval(this.scrollCallback, 50);
5753      }
5754      if (this.config.live) {
5755        return new MutationObserver((function(_this) {
5756          return function(records) {
5757            var k, len1, node, record, results;
5758            results = [];
5759            for (k = 0, len1 = records.length; k < len1; k++) {
5760              record = records[k];
5761              results.push((function() {
5762                var l, len2, ref1, results1;
5763                ref1 = record.addedNodes || [];
5764                results1 = [];
5765                for (l = 0, len2 = ref1.length; l < len2; l++) {
5766                  node = ref1[l];
5767                  results1.push(this.doSync(node));
5768                }
5769                return results1;
5770              }).call(_this));
5771            }
5772            return results;
5773          };
5774        })(this)).observe(document.body, {
5775          childList: true,
5776          subtree: true
5777        });
5778      }
5779    };
5780
5781    WOW.prototype.stop = function() {
5782      this.stopped = true;
5783      this.util().removeEvent(this.config.scrollContainer || window, 'scroll', this.scrollHandler);
5784      this.util().removeEvent(window, 'resize', this.scrollHandler);
5785      if (this.interval != null) {
5786        return clearInterval(this.interval);
5787      }
5788    };
5789
5790    WOW.prototype.sync = function(element) {
5791      if (MutationObserver.notSupported) {
5792        return this.doSync(this.element);
5793      }
5794    };
5795
5796    WOW.prototype.doSync = function(element) {
5797      var box, j, len, ref, results;
5798      if (element == null) {
5799        element = this.element;
5800      }
5801      if (element.nodeType !== 1) {
5802        return;
5803      }
5804      element = element.parentNode || element;
5805      ref = element.querySelectorAll("." + this.config.boxClass);
5806      results = [];
5807      for (j = 0, len = ref.length; j < len; j++) {
5808        box = ref[j];
5809        if (indexOf.call(this.all, box) < 0) {
5810          this.boxes.push(box);
5811          this.all.push(box);
5812          if (this.stopped || this.disabled()) {
5813            this.resetStyle();
5814          } else {
5815            this.applyStyle(box, true);
5816          }
5817          results.push(this.scrolled = true);
5818        } else {
5819          results.push(void 0);
5820        }
5821      }
5822      return results;
5823    };
5824
5825    WOW.prototype.show = function(box) {
5826      this.applyStyle(box);
5827      box.className = box.className + " " + this.config.animateClass;
5828      if (this.config.callback != null) {
5829        this.config.callback(box);
5830      }
5831      this.util().emitEvent(box, this.wowEvent);
5832      this.util().addEvent(box, 'animationend', this.resetAnimation);
5833      this.util().addEvent(box, 'oanimationend', this.resetAnimation);
5834      this.util().addEvent(box, 'webkitAnimationEnd', this.resetAnimation);
5835      this.util().addEvent(box, 'MSAnimationEnd', this.resetAnimation);
5836      return box;
5837    };
5838
5839    WOW.prototype.applyStyle = function(box, hidden) {
5840      var delay, duration, iteration;
5841      duration = box.getAttribute('data-wow-duration');
5842      delay = box.getAttribute('data-wow-delay');
5843      iteration = box.getAttribute('data-wow-iteration');
5844      return this.animate((function(_this) {
5845        return function() {
5846          return _this.customStyle(box, hidden, duration, delay, iteration);
5847        };
5848      })(this));
5849    };
5850
5851    WOW.prototype.animate = (function() {
5852      if ('requestAnimationFrame' in window) {
5853        return function(callback) {
5854          return window.requestAnimationFrame(callback);
5855        };
5856      } else {
5857        return function(callback) {
5858          return callback();
5859        };
5860      }
5861    })();
5862
5863    WOW.prototype.resetStyle = function() {
5864      var box, j, len, ref, results;
5865      ref = this.boxes;
5866      results = [];
5867      for (j = 0, len = ref.length; j < len; j++) {
5868        box = ref[j];
5869        results.push(box.style.visibility = 'visible');
5870      }
5871      return results;
5872    };
5873
5874    WOW.prototype.resetAnimation = function(event) {
5875      var target;
5876      if (event.type.toLowerCase().indexOf('animationend') >= 0) {
5877        target = event.target || event.srcElement;
5878        return target.className = target.className.replace(this.config.animateClass, '').trim();
5879      }
5880    };
5881
5882    WOW.prototype.customStyle = function(box, hidden, duration, delay, iteration) {
5883      if (hidden) {
5884        this.cacheAnimationName(box);
5885      }
5886      box.style.visibility = hidden ? 'hidden' : 'visible';
5887      if (duration) {
5888        this.vendorSet(box.style, {
5889          animationDuration: duration
5890        });
5891      }
5892      if (delay) {
5893        this.vendorSet(box.style, {
5894          animationDelay: delay
5895        });
5896      }
5897      if (iteration) {
5898        this.vendorSet(box.style, {
5899          animationIterationCount: iteration
5900        });
5901      }
5902      this.vendorSet(box.style, {
5903        animationName: hidden ? 'none' : this.cachedAnimationName(box)
5904      });
5905      return box;
5906    };
5907
5908    WOW.prototype.vendors = ["moz", "webkit"];
5909
5910    WOW.prototype.vendorSet = function(elem, properties) {
5911      var name, results, value, vendor;
5912      results = [];
5913      for (name in properties) {
5914        value = properties[name];
5915        elem["" + name] = value;
5916        results.push((function() {
5917          var j, len, ref, results1;
5918          ref = this.vendors;
5919          results1 = [];
5920          for (j = 0, len = ref.length; j < len; j++) {
5921            vendor = ref[j];
5922            results1.push(elem["" + vendor + (name.charAt(0).toUpperCase()) + (name.substr(1))] = value);
5923          }
5924          return results1;
5925        }).call(this));
5926      }
5927      return results;
5928    };
5929
5930    WOW.prototype.vendorCSS = function(elem, property) {
5931      var j, len, ref, result, style, vendor;
5932      style = getComputedStyle(elem);
5933      result = style.getPropertyCSSValue(property);
5934      ref = this.vendors;
5935      for (j = 0, len = ref.length; j < len; j++) {
5936        vendor = ref[j];
5937        result = result || style.getPropertyCSSValue("-" + vendor + "-" + property);
5938      }
5939      return result;
5940    };
5941
5942    WOW.prototype.animationName = function(box) {
5943      var animationName, error;
5944      try {
5945        animationName = this.vendorCSS(box, 'animation-name').cssText;
5946      } catch (error) {
5947        animationName = getComputedStyle(box).getPropertyValue('animation-name');
5948      }
5949      if (animationName === 'none') {
5950        return '';
5951      } else {
5952        return animationName;
5953      }
5954    };
5955
5956    WOW.prototype.cacheAnimationName = function(box) {
5957      return this.animationNameCache.set(box, this.animationName(box));
5958    };
5959
5960    WOW.prototype.cachedAnimationName = function(box) {
5961      return this.animationNameCache.get(box);
5962    };
5963
5964    WOW.prototype.scrollHandler = function() {
5965      return this.scrolled = true;
5966    };
5967
5968    WOW.prototype.scrollCallback = function() {
5969      var box;
5970      if (this.scrolled) {
5971        this.scrolled = false;
5972        this.boxes = (function() {
5973          var j, len, ref, results;
5974          ref = this.boxes;
5975          results = [];
5976          for (j = 0, len = ref.length; j < len; j++) {
5977            box = ref[j];
5978            if (!(box)) {
5979              continue;
5980            }
5981            if (this.isVisible(box)) {
5982              this.show(box);
5983              continue;
5984            }
5985            results.push(box);
5986          }
5987          return results;
5988        }).call(this);
5989        if (!(this.boxes.length || this.config.live)) {
5990          return this.stop();
5991        }
5992      }
5993    };
5994
5995    WOW.prototype.offsetTop = function(element) {
5996      var top;
5997      while (element.offsetTop === void 0) {
5998        element = element.parentNode;
5999      }
6000      top = element.offsetTop;
6001      while (element = element.offsetParent) {
6002        top += element.offsetTop;
6003      }
6004      return top;
6005    };
6006
6007    WOW.prototype.isVisible = function(box) {
6008      var bottom, offset, top, viewBottom, viewTop;
6009      offset = box.getAttribute('data-wow-offset') || this.config.offset;
6010      viewTop = (this.config.scrollContainer && this.config.scrollContainer.scrollTop) || window.pageYOffset;
6011      viewBottom = viewTop + Math.min(this.element.clientHeight, this.util().innerHeight()) - offset;
6012      top = this.offsetTop(box);
6013      bottom = top + box.clientHeight;
6014      return top <= viewBottom && bottom >= viewTop;
6015    };
6016
6017    WOW.prototype.util = function() {
6018      return this._util != null ? this._util : this._util = new Util();
6019    };
6020
6021    WOW.prototype.disabled = function() {
6022      return !this.config.mobile && this.util().isMobile(navigator.userAgent);
6023    };
6024
6025    return WOW;
6026
6027  })();
6028
6029}).call(this);;
6030!function(){"use strict";var e,t={noop:function(){},texturize:function(e){return(e=(e=(e=(e+="").replace(/'/g,"&#8217;").replace(/&#039;/g,"&#8217;")).replace(/"/g,"&#8221;").replace(/&#034;/g,"&#8221;").replace(/&quot;/g,"&#8221;").replace(/[\u201D]/g,"&#8221;")).replace(/([\w]+)=&#[\d]+;(.+?)&#[\d]+;/g,'$1="$2"')).trim()},applyReplacements:function(e,t){if(e)return t?e.replace(/{(\d+)}/g,function(e,r){return void 0!==t[r]?t[r]:e}):e}
6030,getBackgroundImage:function(e){var t=document.createElement("canvas"),r=t.getContext&&t.getContext("2d");if(e){r.filter="blur(20px) ",r.drawImage(e,0,0);var o=t.toDataURL("image/png");return t=null,o}}},r=function(){function e(e,t){return Element.prototype.matches?e.matches(t):Element.prototype.msMatchesSelector?e.msMatchesSelector(t):void 0}function r(e,t,r,o){if(!e)return o();e.jpCarouselCancelFade&&e.jpCarouselCancelFade(),e.classList.remove("jp-carousel-fade"),e.style.removeProperty("display"),e.style.opacity=t,e.style.pointerEvents="none",e.offsetWidth,e.classList.add("jp-carousel-fade"),e.style.opacity=r;var a=1e3*parseFloat(getComputedStyle(e).transitionDuration)||0,n=setTimeout(function(){e.jpCarouselCancelFade=null,e.style.removeProperty("pointer-events"),o()},a+50);e.jpCarouselCancelFade=function(){clearTimeout(n),e.jpCarouselCancelFade=null}}return{closest:function(t,r){if(t.closest)return t.closest(r);var o=t;do{if(e(o,r))return o;o=o.parentElement||o.parentNode}while(null!==o&&1===o.nodeType);return null},matches:e,hide:function(e){e&&(e.style.display="none")},show:function(e){e&&(e.style.display="block")},fadeIn:function(e,o){r(e,0,1,o=o||t.noop)},fadeOut:function(e,o){o=o||t.noop,r(e,1,0,function(){e&&(e.style.display="none"),o()})},scrollToElement:function(e,t,r){if(!e||!t)return r?r():void 0;var o=t.querySelector(".jp-carousel-info-extra");o&&(o.style.minHeight=window.innerHeight-64+"px");var a=!0,n=Date.now(),i=t.scrollTop,l=Math.max(0,e.offsetTop-Math.max(0,window.innerHeight-function(e){var t=e.querySelector(".jp-carousel-info-footer"),r=e.querySelector(".jp-carousel-info-extra"),o=e.querySelector(".jp-carousel-info-content-wrapper");if(t&&r&&o){var a=window.getComputedStyle(r),n=parseInt(a.paddingTop,10)+parseInt(a.paddingBottom,10);return n=isNaN(n)?0:n,o.offsetHeight+t.offsetHeight+n}return 0}(t)))-t.scrollTop;function s(){a=!1}l=Math.min(l,t.scrollHeight-window.innerHeight),t.addEventListener("wheel",s),function e(){var c,u=Date.now(),d=(c=(u-n)/300)<.5?2*c*c:1-Math.pow(-2*c+2,2)/2,m=(d=d>1?1:d)*l;if(t.scrollTop=i+m,u<=n+300&&a)return requestAnimationFrame(e);r&&r(),o&&(o.style.minHeight=""),a=!1,t.removeEventListener("wheel",s)}()},getJSONAttribute:function(e,t){if(e&&e.hasAttribute(t))try{return JSON.parse(e.getAttribute(t))}catch{return}},convertToPlainText:function(e){var t=document.createElement("div");return t.textContent=e,t.innerHTML},stripHTML:function(e){var t=document.createElement("div");return t.innerHTML=e.replace(/<[^>]*>?/gm,""),t.textContent},emitEvent:function(e,t,r){var o;try{o=new CustomEvent(t,{bubbles:!0,cancelable:!0,detail:r||null})}catch{(o=document.createEvent("CustomEvent")).initCustomEvent(t,!0,!0,r||null)}e.dispatchEvent(o)},isTouch:function(){return"ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch},prefersReducedMotion:function(){return!!window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}}}();function o(){var o,a,n,i,l={},s={},c="",u=!1,d="div.gallery, div.tiled-gallery, ul.wp-block-gallery, ul.blocks-gallery-grid, figure.wp-block-gallery.has-nested-images, div.wp-block-jetpack-tiled-gallery, a.single-image-gallery",m=".gallery-item, .tiled-gallery-item, .blocks-gallery-item,  .tiled-gallery__item",p=m+", .wp-block-image",g={},h="undefined"!=typeof wpcom&&wpcom.carousel&&wpcom.carousel.stat?wpcom.carousel.stat:t.noop,f="undefined"!=typeof wpcom&&wpcom.carousel&&wpcom.carousel.pageview?wpcom.carousel.pageview:t.noop;function v(t){if(!u)switch(t.which){case 38:t.preventDefault(),g.overlay.scrollTop-=100;break;case 40:t.preventDefault(),g.overlay.scrollTop+=100;break;case 39:t.preventDefault(),e.slideNext();break;case 37:case 8:t.preventDefault(),e.slidePrev();break;case 27:t.preventDefault(),k()}}function y(){u=!0}function w(){u=!1}function S(e){e.role="button",e.tabIndex=0,e.ariaLabel=jetpackCarouselStrings.image_label}function j(){g.overlay||(g.overlay=document.querySelector(".jp-carousel-overlay"),g.container=g.overlay.querySelector(".jp-carousel-wrap"),g.gallery=g.container.querySelector(".jp-carousel"),g.info=g.overlay.querySelector(".jp-carousel-info"),g.caption=g.
6030info.querySelector(".jp-carousel-caption"),g.commentField=g.overlay.querySelector("#jp-carousel-comment-form-comment-field"),g.emailField=g.overlay.querySelector("#jp-carousel-comment-form-email-field"),g.authorField=g.overlay.querySelector("#jp-carousel-comment-form-author-field"),g.urlField=g.overlay.querySelector("#jp-carousel-comment-form-url-field"),window.innerWidth<=760&&Math.round(window.innerWidth/760*110)<40&&r.isTouch(),[g.commentField,g.emailField,g.authorField,g.urlField].forEach(function(e){e&&(e.addEventListener("focus",y),e.addEventListener("blur",w))}),g.overlay.addEventListener("click",function(e){var t,o,a=e.target,n=!!r.closest(a,".jp-carousel-close-hint"),i=!!window.matchMedia("(max-device-width: 760px)").matches;a===g.overlay?i||k():n?k():a.classList.contains("jp-carousel-image-download")?h("download_original_click"):a.classList.contains("jp-carousel-comment-login")?(t=g.currentSlide,o=t?t.attrs.attachmentId:"0",window.location.href=jetpackCarouselStrings.login_url+"%23jp-carousel-"+o):r.closest(a,"#jp-carousel-comment-form-container")?function(e){var t=e.target,o=r.getJSONAttribute(g.container,"data-carousel-extra")||{},a=g.currentSlide.attrs.attachmentId,n=document.querySelector("#jp-carousel-comment-form-submit-and-info-wrapper"),i=document.querySelector("#jp-carousel-comment-form-spinner"),s=document.querySelector("#jp-carousel-comment-form-button-submit"),c=document.querySelector("#jp-carousel-comment-form");if(g.commentField&&g.commentField.getAttribute("id")===t.getAttribute("id"))y(),r.show(n);else if(r.matches(t,'input[type="submit"]')){e.preventDefault(),e.stopPropagation(),r.show(i),c.classList.add("jp-carousel-is-disabled");var u={action:"post_attachment_comment",nonce:jetpackCarouselStrings.nonce,blog_id:o.blog_id,id:a,comment:g.commentField.value};if(!u.comment.length)return void b(jetpackCarouselStrings.no_comment_text,!1);if(1!==Number(jetpackCarouselStrings.is_logged_in)&&(u.email=g.emailField.value,u.author=g.authorField.value,u.url=g.urlField.value,1===Number(jetpackCarouselStrings.require_name_email))){if(!u.email.length||!u.email.match("@"))return void b(jetpackCarouselStrings.no_comment_email,!1);if(!u.author.length)return void b(jetpackCarouselStrings.no_comment_author,!1)}var d=new XMLHttpRequest;d.open("POST",jetpackCarouselStrings.ajaxurl,!0),d.setRequestHeader("X-Requested-With","XMLHttpRequest"),d.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8"),d.onreadystatechange=function(){if(this.readyState===XMLHttpRequest.DONE&&this.status>=200&&this.status<300){var e;try{e=JSON.parse(this.response)}catch{return void b(jetpackCarouselStrings.comment_post_error,!1)}if("approved"===e.comment_status){b(jetpackCarouselStrings.comment_approved,!0);var t=function(e){for(var t=0;t<g.slides.length;t++)if(g.slides[t].attrs.attachmentId===e)return g.slides[t];return null}(a);t&&(t.attrs.commentsCount=(parseInt(t.attrs.commentsCount,10)||0)+1)}else"unapproved"===e.comment_status?b(jetpackCarouselStrings.comment_unapproved,!0):b(jetpackCarouselStrings.comment_post_error,!1);W(),delete l[a],_(a,void 0,!0),s.value=jetpackCarouselStrings.post_comment,r.hide(i),c.classList.remove("jp-carousel-is-disabled")}else b(jetpackCarouselStrings.comment_post_error,!1)};var m=[];for(var p in u)if(p){var h=encodeURIComponent(p)+"="+encodeURIComponent(u[p]);m.push(h.replace(/%20/g,"+"))}var f=m.join("&");d.send(f)}}(e):(r.closest(a,".jp-carousel-photo-icons-container")||a.classList.contains("jp-carousel-photo-title"))&&function(e){e.preventDefault();var t=e.target,o=g.info.querySelector(".jp-carousel-info-extra"),a=g.info.querySelector(".jp-carousel-image-meta"),n=g.info.querySelector(".jp-carousel-comments-wrapper"),i=g.info.querySelector(".jp-carousel-icon-info"),s=g.info.querySelector(".jp-carousel-icon-comments");function c(){s&&s.classList.remove("jp-carousel-selected"),i.classList.toggle("jp-carousel-selected"),n&&n.classList.remove("jp-carousel-show"),a&&(a.classList.toggle("jp-carousel-show"),a.classList.contains("jp-carousel-show")?o.classList.add("jp-carousel-show"):o.classList.remove("jp-carousel-show"))}function u(){if(i&&i.classList.remove("jp-carousel-selected"),s.classList.toggle("jp-carousel-selected"),a&&a.classList.remove("jp-carousel-show"),n)if(n.classList.toggle("jp-carousel-show"),n.classList.contains("jp-carousel-show")){o.classList.add("jp-carousel-show");var e=g.currentSlide;if(e){var t=l[e.attrs.attachmentId];t?t.hasMore&&T(e.attrs.attachmentId,t.nextOffset):_(e.attrs.attachmentId)}}else o.classList.remove("jp-carousel-show")}(r.closest(t,".jp-carousel-icon-info")||t.classList.contains("jp-carousel-photo-title"))&&(a&&a.classList.contains("jp-carousel-show")?r.scrollToElement(g.overlay,g.overlay,c):(c(),r.scrollToElement(g.info,g.overlay))),r.closest(t,".jp-carousel-icon-comments")&&(n&&n.classList.contains("jp-carousel-show")?r.scrollToElement(g.overlay,g.overlay,u):(u(),r.scrollToElement(g.info,g.overlay)))}(e)}),window.addEventListener("keydown",v),g.overlay.addEventListener("jp_carousel.afterOpen",function(){w(),g.slides.length<=1||(g.slides.length<=5?r.show(g.info.querySelector(".jp-swiper-pagination")):r.show(g.info.querySelector(".jp-carousel-pagination")))}),g.overlay.addEventListener("jp_carousel.beforeClose",function(){y(),document.documentElement.style.removeProperty("height"),e&&e.enable(),r.hide(g.info.querySelector(".jp-swiper-pagination")),r.hide(g.info.querySelector(".jp-carousel-pagination"))}),g.overlay.addEventListener("jp_carousel.afterClose",function(){window.history.pushState?history.pushState("",document.title,window.location.pathname+window.location.search):window.location.href="",c="",g.isOpen=!1}),g.overlay.addEventListener("touchstart",function(e){e.touches.length>1&&e.preventDefault()}))}function b(e,t){var o=g.overlay.querySelector("#jp-carousel-comment-post-results"),a="jp-carousel-comment-post-"+(t?"success":"error");o.innerHTML='<span class="'+a+'">'+e+"</span>",r.hide(g.overlay.querySelector("#jp-carousel-comment-form-spinner")),g.overlay.querySelector("#jp-carousel-comment-form").classList.remove("jp-carousel-is-disabled"),r.show(o)}function L(){var e=document.querySelectorAll("a img[data-attachment-id]");Array.prototype.forEach.call(e,function(e){var t=e.parentElement,o=t.parentElement;if(!o.classList.contains("gallery-icon")&&!r.closest(o,m)&&t.hasAttribute("href")){var a=!1;t.getAttribute("href").split("?")[0]===e.getAttribute("data-orig-file").split("?")[0]&&1===Number(jetpackCarouselStrings.single_image_gallery_media_file)&&(a=!0),t.getAttribute("href")===e.getAttribute("data-permalink")&&(a=!0),a&&(S(e),t.classList.add("single-image-gallery"),t.setAttribute("data-carousel-extra",JSON.stringify({blog_id:Number(jetpackCarouselStrings.blog_id)})))}})}function x(t,r){g.isOpen?(C(r),e.slideTo(r+1)):z(t,{startIndex:r})}function C(e){(!e||e<0||e>g.slides.length)&&(e=0),g.currentSlide=g.slides[e];var a,n,i=g.currentSlide,s=i.attrs.attachmentId;M(g.slides[e]),function(e){var t=[],r=g.slides.length;if(r>1){var o=e>0?e-1:r-1;t.push(o);var a=e<r-1?e+1:0;t.push(a)}t.forEach(function(e){var t=g.slides[e];t&&(M(t),1!==Number(jetpackCarouselStrings.display_background_image)||t.backgroundImage||F(t))})}(e),1!==Number(jetpackCarouselStrings.display_background_image)||g.slides[e].backgroundImage||F(g.slides[e]),r.hide(g.caption),function(e){var t,o,a,n,i,l,s;if(n=g.overlay.querySelector(".jp-carousel-photo-caption"),i=g.overlay.querySelector(".jp-carousel-caption"),l=g.overlay.querySelector(".jp-carousel-photo-title"),s=g.overlay.querySelector(".jp-carousel-photo-description"),r.hide(n),r.hide(i),r.hide(l),r.hide(s),t=A(e.caption)||"",o=A(e.title)||"",a=A(e.desc)||"",(t||o||a)&&(t&&(n.innerHTML=t,i.innerHTML=t,r.show(n),r.show(i)),r.stripHTML(t)===r.stripHTML(o)&&(o=""),r.stripHTML(t)===r.stripHTML(a)&&(a=""),r.stripHTML(o)===r.stripHTML(a)&&(a=""),a&&(s.innerHTML=a,r.show(s),o||t||(n.textContent=r.stripHTML(a),r.show(n))),o)){var c=r.stripHTML(o);l.textContent=c,t||(n.textContent=c,i.textContent=c,r.show(n)),r.show(l)}}
6030({caption:i.attrs.caption,title:i.attrs.title,desc:i.attrs.desc}),function(e){if(!e||1!==Number(jetpackCarouselStrings.display_exif))return!1;var t=g.info.querySelector(".jp-carousel-image-meta");if(!t)return!1;var r="";for(var o in e){var a=e[o],n=jetpackCarouselStrings.meta_data||[];if(0!==parseFloat(a)&&a.length&&-1!==n.indexOf(o)){switch(o){case"focal_length":a+="mm";break;case"shutter_speed":a=E(a);break;case"aperture":a="f/"+a}r+="<li><h5>"+jetpackCarouselStrings[o]+"</h5>"+a+"</li>"}}var i=t.querySelector("ul.jp-carousel-image-exif");if(""!==r){if(!i){(i=document.createElement("ul")).className="jp-carousel-image-exif";var l=t.querySelector(".jp-carousel-title-and-caption");l&&l.nextSibling?t.insertBefore(i,l.nextSibling):t.insertBefore(i,t.firstChild)}i.innerHTML=r,i.style.removeProperty("display")}else i&&i.parentNode.removeChild(i)}(g.slides[e].attrs.imageMeta),function(e){if(!e)return!1;var r,o=[e.attrs.origWidth,e.attrs.origHeight],a=document.createElement("a");a.href=e.attrs.src.replace(/\?.+$/,""),r=null!==a.hostname.match(/^i[\d]{1}\.wp\.com$/i)?a.href:e.attrs.origFile.replace(/\?.+$/,"");var n=g.info.querySelector(".jp-carousel-download-text"),i=g.info.querySelector(".jp-carousel-image-download");n.innerHTML=t.applyReplacements(jetpackCarouselStrings.download_original,o),i.setAttribute("href",r),i.style.removeProperty("display")}(i),1===Number(jetpackCarouselStrings.display_comments)&&(a=g.slides[e].attrs.commentsOpened,n=g.info.querySelector("#jp-carousel-comment-form-container"),1===parseInt(a,10)?r.fadeIn(n):r.fadeOut(n),function(e){var t=e.attrs.attachmentId,a=g.info.querySelector(".jp-carousel-comments"),n=l[t];if(clearInterval(o),r.hide(g.info.querySelector("#jp-carousel-comments-loading")),n)return a.innerHTML=n.html,H(n.count),r.show(a),void(n.hasMore&&I()&&T(t,n.nextOffset));a.innerHTML="",r.hide(a),H(parseInt(e.attrs.commentsCount,10)||0),I()&&_(t)}(i),r.hide(g.info.querySelector("#jp-carousel-comment-post-results")));var u=g.info.querySelector(".jp-carousel-pagination");if(u&&g.slides.length>5){var d=e+1;u.innerHTML="<span>"+d+" / "+g.slides.length+"</span>"}jetpackCarouselStrings.stats&&g.isOpen&&((new Image).src=document.location.protocol+"//pixel.wp.com/g.gif?"+jetpackCarouselStrings.stats+"&post="+encodeURIComponent(s)+"&rand="+Math.random()),g.isOpen&&f(s),c="#jp-carousel-"+s,window.location.hash=c}function k(){document.body.style.overflow=a,document.documentElement.style.overflow=n,W(),y(),r.emitEvent(g.overlay,"jp_carousel.beforeClose"),window.scrollTo(window.scrollX||window.pageXOffset||0,i||0),g.isOpen=!1,e.destroy(),g.slides=[],l={},s={},g.currentSlide=void 0,g.gallery.innerHTML="",r.fadeOut(g.overlay,function(){r.emitEvent(g.overlay,"jp_carousel.afterClose")})}function q(e){if("object"!=typeof e&&(e={}),void 0===e.origFile)return"";if(void 0===e.origWidth||void 0===e.maxWidth)return e.origFile;if(!e.largeFile)return e.origFile;var t=document.createElement("a");t.href=e.largeFile;var r=/^i[0-2]\.wp\.com$/i.test(t.hostname),o=function(e,t,r){var o,a=r?e.replace(/.*=([\d]+%2C[\d]+).*$/,"$1"):e.replace(/.*-([\d]+x[\d]+)\..+$/,"$1");return"9999"===(o=a!==e?r?a.split("%2C"):a.split("x"):[t,0])[0]&&(o[0]="0"),"9999"===o[1]&&(o[1]="0"),o}(e.largeFile,e.origWidth,r),a=parseInt(o[0],10),n=parseInt(o[1],10);e.origMaxWidth=e.maxWidth,e.origMaxHeight=e.maxHeight,void 0!==window.devicePixelRatio&&window.devicePixelRatio>1&&(e.maxWidth=e.maxWidth*window.devicePixelRatio,e.maxHeight=e.maxHeight*window.devicePixelRatio);var i=e.zoomHeadroom||1;if(i>1&&(e.maxWidth=e.maxWidth*i,e.maxHeight=e.maxHeight*i),a>=e.maxWidth||n>=e.maxHeight)return e.largeFile;if(r){if(-1===e.largeFile.lastIndexOf("?"))return e.largeFile;var l=function(e){var t;try{t=new URL(e)}catch(t){return e}var r=["quality","ssl","filter","brightness","contrast","colorize","smooth"],o=Array.from(t.searchParams.entries());return t.search="",o.forEach(([e,o])=>{r.includes(e)&&t.searchParams.append(e,o)}),t}(e.largeFile);return(e.origWidth>e.maxWidth||e.origHeight>e.maxHeight)&&(e.origMaxWidth=e.maxWidth,e.origMaxHeight=e.maxHeight,l.searchParams.set("fit",e.origMaxWidth+","+e.origMaxHeight)),l.toString()}return e.origFile}function E(e){return e>=1?Math.round(10*e)/10+"s":"1/"+Math.round(1/e)+"s"}
6030function A(e){return!e.match(" ")&&e.match("_")?"":e}function I(){var e=g.info.querySelector(".jp-carousel-comments-wrapper");return!!e&&e.classList.contains("jp-carousel-show")}function H(e){var t=g.info.querySelector(".jp-carousel-icon-comments .jp-carousel-has-comments-indicator");t&&(e>0?(t.innerText=e,t.classList.add("jp-carousel-show")):t.classList.remove("jp-carousel-show"))}function T(e,t){clearInterval(o),o=setInterval(function(){g.container.scrollTop+150>window.innerHeight&&(clearInterval(o),_(e,t))},300)}function _(e,t,a){var n=void 0===t;if(clearInterval(o),e&&g.currentSlide&&g.currentSlide.attrs.attachmentId===e&&(!s[e]||a)){(!t||t<1)&&(t=0);var i=g.info.querySelector(".jp-carousel-comments"),c=g.info.querySelector("#jp-carousel-comments-loading");r.show(c),n&&(r.hide(i),i.innerHTML="");var u=new XMLHttpRequest;s[e]=u;var d=function(){return s[e]===u},m=jetpackCarouselStrings.ajaxurl+"?action=get_attachment_comments&nonce="+jetpackCarouselStrings.nonce+"&id="+e+"&offset="+t;u.open("GET",m),u.setRequestHeader("X-Requested-With","XMLHttpRequest");var p=function(){r.fadeIn(i),r.fadeOut(c)};u.onload=function(){if(d()&&(delete s[e],g.currentSlide&&g.currentSlide.attrs.attachmentId===e)){var o,a=u.status>=200&&u.status<300;try{o=JSON.parse(u.responseText)}catch{}if(a&&o&&Array.isArray(o)){n&&(i.innerHTML="");for(var m=0;m<o.length;m++){var h=o[m];if(!i.querySelector("#jp-carousel-comment-"+h.id)){var f=document.createElement("div");f.classList.add("jp-carousel-comment"),f.setAttribute("id","jp-carousel-comment-"+h.id),f.innerHTML='<div class="comment-gravatar">'+h.gravatar_markup+'</div><div class="comment-content"><div class="comment-author">'+h.author_markup+'</div><div class="comment-date">'+h.date_gmt+"</div>"+h.content+"</div>",i.appendChild(f)}}var v=o.length>=10,y=t+10;v&&T(e,y);var w=i.querySelectorAll(".jp-carousel-comment").length,S=Math.max(parseInt(g.currentSlide.attrs.commentsCount,10)||0,w);o.length>0&&(r.show(i),H(S)),l[e]={html:i.innerHTML,count:S,hasMore:v,nextOffset:y},r.hide(c)}else p()}},u.onerror=function(){d()&&(delete s[e],g.currentSlide&&g.currentSlide.attrs.attachmentId===e&&p())},u.send()}}function M(e){var t=e.attrs,r=e.el.querySelector("img");if(!r.hasAttribute("data-loaded"))if(r.setAttribute("itemprop","image"),r.setAttribute("data-loaded",1),t.previewImage&&t.previewImage!==t.src){r.src=t.previewImage,r.style.filter="blur(8px)";var o=new window.Image;o.addEventListener("load",function(){r.hasAttribute("data-zoom-loaded")||(r.src=t.src),r.style.filter=""},{once:!0}),o.addEventListener("error",function(){r.style.filter=""},{once:!0}),o.src=t.src}else r.src=t.src}function F(e){var t=e.attrs.originalElement;if(t)if(t.complete&&0!==t.naturalHeight)O(e,t);else{var r=function(){t.removeEventListener("error",o),O(e,t)},o=function(){t.removeEventListener("load",r)};t.addEventListener("load",r,{once:!0}),t.addEventListener("error",o,{once:!0})}}function O(e,r){var o=t.getBackgroundImage(r);o&&(e.backgroundImage=o,e.el.style.backgroundImage="url("+o+")",e.el.style.backgroundSize="cover",e.el.style.backgroundPosition="center")}function W(){g.commentField&&(g.commentField.value="")}function N(e,o){g.slides=[];var a={width:window.innerWidth,height:window.innerHeight-64};0!==o&&null!==e[o].getAttribute("data-gallery-src")&&((new Image).src=e[o].getAttribute("data-gallery-src")),Array.prototype.forEach.call(e,function(e,o){var n=r.closest(e,"a"),i=e.getAttribute("data-orig-file")||e.getAttribute("src-orig"),l=e.getAttribute("data-attachment-id")||e.getAttribute("data-id")||"0",s=document.querySelector('img[data-attachment-id="'+l+'"] + figcaption');s=s?s.innerHTML:e.getAttribute("data-image-caption");var c={originalElement:e,attachmentId:l,commentsOpened:e.getAttribute("data-comments-opened")||"0",commentsCount:e.getAttribute("data-comments-count")||"0",imageMeta:r.getJSONAttribute(e,"data-image-meta")||{},title:e.getAttribute("data-image-title")||"",desc:e.getAttribute("data-image-description")||"",largeFile:e.getAttribute("data-large-file")||"",origFile:i||"",thumbSize:{width:e.naturalWidth,height:e.naturalHeight},caption:s||"",permalink:n&&n.getAttribute("href"),src:i||e.getAttribute("src")||""},u=r.closest(e,".tiled-gallery-item"),d=u&&u.querySelector(".tiled-gallery-caption"),m=d&&d.innerHTML;m&&(c.caption=m);var p=function(e){var t=e.getAttribute("data-orig-size")||"";if(t){var r=t.split(",");return{width:parseInt(r[0],10),height:parseInt(r[1],10)}}return{width:e.getAttribute("data-original-width")||e.getAttribute("width")||void 0,height:e.getAttribute("data-original-height")||e.getAttribute("height")||void 0}}(e);if(c.origWidth=p.width||c.thumbSize.width,c.origHeight=p.height||c.thumbSize.height,"undefined"!=typeof wpcom&&wpcom.carousel&&wpcom.carousel.generateImgSrc)c.src=wpcom.carousel.generateImgSrc(e,a);else{var h=function(e){return{origFile:c.src,origWidth:c.origWidth,origHeight:c.origHeight,maxWidth:a.width,maxHeight:a.height,largeFile:c.largeFile,zoomHeadroom:e}};c.zoomSrc=q(h(2)),c.src=q(h(1))}if(e.setAttribute("data-gallery-src",c.src),"0"!==c.attachmentId){c.title=t.texturize(c.title),c.desc=t.texturize(c.desc),c.caption=t.texturize(c.caption);var f=new Image,v=document.createElement("div");v.classList.add("swiper-slide"),v.setAttribute("itemprop","associatedMedia"),v.setAttribute("itemscope",""),v.setAttribute("itemtype","https://schema.org/ImageObject");var y=document.createElement("div");y.classList.add("swiper-zoom-container"),g.gallery.appendChild(v),v.appendChild(y),y.appendChild(f),v.setAttribute("data-attachment-id",c.attachmentId),v.setAttribute("data-permalink",c.permalink),v.setAttribute("data-orig-file",c.origFile),c.previewImage=e.currentSrc||e.getAttribute("src")||"";var w={el:v,attrs:c,index:o};g.slides.push(w)}})}function z(e,t){if(!window.JetpackSwiper){var o=document.querySelector("#jp-carousel-loading-overlay");r.show(o);var a=document.createElement("script");return a.id="jetpack-carousel-swiper-js",a.src=window.jetpackSwiperLibraryPath.url,a.async=!0,a.onload=function(){r.hide(o),R(e,t)},a.onerror=function(){r.hide(o)},void document.head.appendChild(a)}R(e,t)}function R(t,o){var c,u={imgSelector:".gallery-item [data-attachment-id], .tiled-gallery-item [data-attachment-id], img[data-attachment-id], img[data-id]",startIndex:0},d=r.getJSONAttribute(t,"data-carousel-extra");if(!d)return;const m=t.querySelectorAll(u.imgSelector);if(m.length&&(j(),!g.isOpen)){for(var p in g.isOpen=!0,a=getComputedStyle(document.body).overflow,document.body.style.overflow="hidden",n=getComputedStyle(document.documentElement).overflow,document.documentElement.style.overflow="hidden",i=window.scrollY||window.pageYOffset||0,g.container.setAttribute("data-carousel-extra",JSON.stringify(d)),h(["open","view_image"]),o||{})u[p]=o[p];-1===u.startIndex&&(u.startIndex=0),r.emitEvent(g.overlay,"jp_carousel.beforeOpen"),g.gallery.innerHTML="",l={},s={},g.overlay.style.opacity=1,g.overlay.style.display="block",N(m,u.startIndex),(e=new window.JetpackSwiper(".jp-carousel-swiper-container",{centeredSlides:!0,speed:r.prefersReducedMotion()?0:250,zoom:!0,loop:g.slides.length>1,enabled:g.slides.length>1,pagination:{el:".jp-swiper-pagination",clickable:!0},navigation:{nextEl:".jp-swiper-button-next",prevEl:".jp-swiper-button-prev"},initialSlide:u.startIndex,on:{init:function(){C(u.startIndex)}},preventClicks:!1,preventClicksPropagation:!1,preventInteractionOnTransition:!r.isTouch(),threshold:5})).on("slideChange",function(e){g.isOpen&&(C(e.realIndex),g.overlay.classList.remove("jp-carousel-hide-control
6030s"))}),e.on("zoomChange",function(e,t){t>1&&(function(e){if(e&&e.attrs.zoomSrc&&e.attrs.zoomSrc!==e.attrs.src){var t=e.el.querySelector("img");t&&!t.hasAttribute("data-zoom-loaded")&&(t.setAttribute("data-zoom-loaded",1),t.src=e.attrs.zoomSrc)}}(g.currentSlide),g.overlay.classList.add("jp-carousel-hide-controls")),1===t&&g.overlay.classList.remove("jp-carousel-hide-controls")}),e.on("doubleTap",function(e){if(clearTimeout(c),1===e.zoom.scale)var t=setTimeout(function(){g.overlay.classList.remove("jp-carousel-hide-controls"),clearTimeout(t)},150)}),e.on("tap",function(){e.zoom.scale>1&&(c=setTimeout(function(){g.overlay.classList.toggle("jp-carousel-hide-controls")},150))}),r.fadeIn(g.overlay,function(){r.emitEvent(g.overlay,"jp_carousel.afterOpen")})}}function P(e){if("click"!==e.type){if("keydown"===e.type){const t=document.activeElement.parentElement,r=t&&t.classList.contains("tiled-gallery__item");" "!==e.key&&"Enter"!==e.key||!r||$(e)}}else $(e)}function D(e){return(e||"").split("?")[0].replace(/\/$/,"")}function J(e){"A"===e.tagName&&(e=e.querySelector("img")||e);var t=e.parentElement,o=t?t.parentElement:null,a=null;if(o&&o.classList.contains("wp-block-image")?a=t.getAttribute("href"):t&&t.classList.contains("wp-block-image")&&t.querySelector(":scope > a")&&(a=t.querySelector(":scope > a").getAttribute("href")),a){var n=D(a),i=D(e.getAttribute("data-orig-file")),l=D(e.getAttribute("data-permalink"));if(n!==i&&n!==l)return!1}return!(t&&t.classList.contains("gallery-caption")||r.matches(t,"figcaption"))}function $(e){if(window.CSS&&window.CSS.supports&&window.CSS.supports("display","grid")){var t,o=e.target,a=r.closest(o,d);if(a){if(!(t=a)||!t.getAttribute("data-carousel-extra"))return;if(!J(o))return;document.documentElement.style.height="auto",e.preventDefault(),e.stopPropagation();var n=r.closest(o,p),i=Array.prototype.indexOf.call(a.querySelectorAll(p),n);z(a,{startIndex:i})}}}document.body.addEventListener("click",P),document.body.addEventListener("keydown",P),document.querySelectorAll(m+"img").forEach(function(e){J(e)&&S(e)}),1===Number(jetpackCarouselStrings.single_image_gallery)&&(L(),document.body.addEventListener("is.post-load",function(){L()})),window.addEventListener("hashchange",function(){var e=/jp-carousel-(\d+)/;if(window.location.hash&&e.test(window.location.hash)){if(window.location.hash!==c||!g.isOpen)if(window.location.hash&&g.gallery&&!g.isOpen&&history.back)history.back();else{c=window.location.hash;for(var t=window.location.hash.match(e),r=parseInt(t[1],10),o=document.querySelectorAll(d),a=0;a<o.length;a++){for(var n,i=o[a],l=i.querySelectorAll("img"),s=0;s<l.length;s++)if(parseInt(l[s].getAttribute("data-attachment-id"),10)===r||parseInt(l[s].getAttribute("data-id"),10)===r){n=s;break}if(void 0!==n){x(i,n);break}}}}else g.isOpen&&k()}),window.location.hash&&r.emitEvent(window,"hashchange")}"loading"!==document.readyState?o():document.addEventListener("DOMContentLoaded",o)}();;

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.