Get the Best IPTV Service
((q,m)=>{if(XF.activate)console.error("XF core has been double loaded");else{XF.browser||(XF.browser={browser:"",version:0,os:"",osVersion:null});XF.extendObject=(...a)=>{let c=!1,b=a[0]||{},f=1;"boolean"===typeof b&&(c=b,b=a[f]||{},f++);for(;f{const g=b[e],h=d[e];c&&h&&"object"===typeof h?(Array.isArray(h)?b[e]=g&&Array.isArray(g)?g:[]:b[e]=g&&"object"===typeof g?g:{},b[e]=XF.extendObject(c,b[e],h)):void 0!==h&&(b[e]=h)})}return b}; XF.createElement=(a,c={},b=null)=>{const f=m.createElement(a);Object.entries(c).forEach(([d,e])=>{"object"===typeof e?Object.entries(e).forEach(([g,h])=>{switch(d){case "properties":return f[g]=h;case "attributes":return f.setAttribute(g,h);case "dataset":return f.dataset[g]=h;case "style":return f.style[g]=h;default:console.error("XF.createElement supports properties, attributes, dataset and style objects only.")}}):f[d]=e});b instanceof HTMLElement&&b.appendChild(f);return f};XF.createElementFromString= (a,c=null)=>{a=`${a}`;a=(new q.DOMParser).parseFromString(a,"text/html").body;if(1a instanceof Element&&a.classList.contains("js-createdContainer");XF.extendObject(XF,{config:{userId:null,enablePush:!1,skipServiceWorkerRegistration:!1,skipPushNotificationSubscription:!1,skipPushNotificationCta:!1, serviceWorkerPath:null,pushAppServerKey:null,csrf:m.querySelector("html").dataset.csrf,time:{now:0,today:0,todayDow:0,tomorrow:0,yesterday:0,week:0,month:0,year:0},cookie:{path:"/",domain:"",prefix:"xf_"},url:{fullBase:"/",basePath:"/",css:"",js:"",icon:"",keepAlive:""},css:{},js:{},jsMt:{},fullJs:!1,jsState:{},speed:{xxfast:50,xfast:100,fast:200,normal:400,slow:600},job:{manualUrl:""},borderSizeFeature:"3px",fontAwesomeWeight:"r",enableRtnProtect:!0,enableFormSubmitSticky:!0,visitorCounts:{conversations_unread:"0", alerts_unviewed:"0",total_unread:"0",title_count:!1,icon_indicator:!1},uploadMaxFilesize:null,uploadMaxWidth:0,uploadMaxHeight:0,allowedVideoExtensions:[],allowedAudioExtensions:[],shortcodeToEmoji:!0,publicMetadataLogoUrl:"",publicPushBadgeUrl:""},debug:{disableAjaxSubmit:!1},counter:1,pageDisplayTime:null,phrases:{},getApp:()=>m.querySelector("html").dataset.app||null,isFunction:a=>"function"===typeof a,isObject:a=>a===Object(a),isPlainObject:a=>"[object Object]"===Object.prototype.toString.call(a), isEmptyObject:a=>0===Object.keys(a).length,hasOwn:(a,c)=>Object.prototype.hasOwnProperty.call(a,c),isNumeric:a=>!isNaN(parseFloat(a))&&isFinite(a),isHidden:a=>"none"===q.getComputedStyle(a).display||0===a.offsetHeight||"hidden"===a.type&&"input"===a.tagName.toLowerCase(),toBoolean:a=>{switch(a){case "true":case "yes":case "on":case "1":case 1:return!0;default:return!1}},toCamelCase:a=>a.replace(/-([a-z])/g,(c,b)=>b.toUpperCase()),_scrollLeftType:null,scrollLeftType:()=>{if(null!==XF._scrollLeftType)return XF._scrollLeftType; if(XF.isRtl()){const a=XF.createElementFromString('
MMMMMMMMMM
');m.body.append(a);XF._scrollLeftType=0new G(a,c),trigger:(a, c,b={})=>{"string"===typeof c&&(c=XF.customEvent(c,b));const f=c.type,[d,e="default"]=f.split(".");if(!XF.eventHandlers[e]||!XF.eventHandlers[e][d])return!(d.cancelable&&d.defaultPrevented);if("default"===e)return a.dispatchEvent(c);XF.eventHandlers[e][d].forEach(g=>{if(a===g.element){const {handler:h,options:k}=g;k.once&&XF.off(a,f,h,k);h.call(a,c);k.passive&&c.defaultPrevented&&console.warn("preventDefault() was called on a namespaced passive event listener and this is not supported.")}});return!(d.cancelable&& d.defaultPrevented)},onDelegated:(a,c,b,f,d={})=>{const e=g=>{const h=g.target.closest(b);h&&a.contains(h)&&f.call(h,g)};e.originalHandler=f;XF.on(a,c,e,d)},on:(a,c,b,f={})=>{a?c.split(" ").forEach(d=>{const [e,g="default"]=d.split(".");d={element:a,handler:b,options:f};XF.eventHandlers[g]||(XF.eventHandlers[g]={});XF.eventHandlers[g][e]||(XF.eventHandlers[g][e]=[]);XF.eventHandlers[g][e].push(d);a.addEventListener(e,b,f)}):console.error("No element passed in to event.")},off:(a,c,b=null,f=!1)=>{const [d, e="default"]=c.split(".");!d&&e?XF.eventHandlers[e]&&(Object.keys(XF.eventHandlers[e]).forEach(g=>{XF.eventHandlers[e][g].forEach(h=>{a.removeEventListener(g,h.handler,f)})}),delete XF.eventHandlers[e]):XF.eventHandlers[e]&&XF.eventHandlers[e][d]&&(XF.eventHandlers[e][d]=XF.eventHandlers[e][d].filter(g=>b&&b!==g.handler&&b!==g.handler.originalHandler?!0:(a.removeEventListener(d,g.handler,f),!1)),XF.eventHandlers[e][d].length||delete XF.eventHandlers[e][d])},onTransitionEnd:(a,c,b)=>{let f=!1;const d= (e,...g)=>{if(e.target===e.currentTarget&&!f)return f=!0,XF.off(e.currentTarget,"transitionend",d),b(e,...g)};XF.on(a,"transitionend",d);setTimeout(()=>{f||XF.trigger(a,"transitionend")},c+10)},onWithin:(a,c,b,f=!1)=>{c.split(" ").forEach(d=>{const e=g=>{g.target.contains(a)&&(f&&XF.off(m,d,e),b(g))};XF.on(m,d,e)});return a},oneWithin:(a,c,b)=>XF.onWithin(a,c,b,!0),onPointer:(a,c,b,f={})=>{if(XF.isPlainObject(c)){for(const d of Object.keys(c))XF.onPointer(a,d,c[d],f);return a}"string"===typeof c&& (c=c.split(/\s+/));c.forEach(d=>XF.on(a,d,e=>{e.xfPointerType=e.pointerType||a.getAttribute("data-xf-pointer-type")||"";b(e)},f));XF.on(a,"pointerdown",d=>a.setAttribute("data-xf-pointer-type",d.pointerType),{passive:!0});return a},uniqueId:a=>{let c=a.getAttribute("id");c||(c="js-XFUniqueId"+XF.getUniqueCounter(),a.setAttribute("id",c));return c},findExtended:(a,c)=>{const b=a.match(/^<([^|]+)(\|([\s\S]+))?$/);if("string"===typeof a&&b){a=b[1].trim();let f,d;const e={up:"parentElement",next:"nextElementSibling", prev:"previousElementSibling"};let g;do if(f=a.match(/^:(up|next|prev)(\((\d+)\))?/)){f[2]||(f[3]=1);g=e[f[1]];for(d=0;d({top:a.offsetTop,left:a.offsetLeft}),dimensions:(a,c,b)=>{const f=a.getBoundingClientRect(),d={top:f.top+q.scrollY,left:f.left+q.scrollX};c?(d.width=a.offsetWidth||f.width, d.height=a.offsetHeight||f.height,b&&(a=q.getComputedStyle(a),d.width+=parseInt(a.marginLeft)+parseInt(a.marginRight),d.height+=parseInt(a.marginTop)+parseInt(a.marginBottom))):(d.width=a.clientWidth||f.width,d.height=a.clientHeight||f.height);d.right=d.left+d.width;d.bottom=d.top+d.height;return d},viewport:(a,c,b)=>{a===q&&(a=m.documentElement);a={width:c?a.offsetWidth:a.clientWidth,height:c?a.offsetHeight:a.clientHeight,left:a.scrollLeft,top:a.scrollTop,right:0,bottom:0,docWidth:m.documentElement.scrollWidth, docHeight:m.documentElement.scrollHeight};a.bottom=a.top+a.height;a.right=a.left+a.width;return a},hasFixableParent:a=>{let c=!1;for(;a.parentNode;)if(a=a.parentNode,a instanceof Element){switch(q.getComputedStyle(a).getPropertyValue("position")){case "fixed":case "sticky":case "-webkit-sticky":c=a}if(c)break}return c},hasFixedParent:a=>{let c=!1;for(;a.parentNode;)if(a=a.parentNode,a instanceof Element){var b=q.getComputedStyle(a);switch(b.getPropertyValue("position")){case "fixed":c=a;break;case "sticky":case "-webkit-sticky":const d= XF.dimensions(a,!0),e=XF.viewport(q);var f=b.getPropertyValue("top");b=b.getPropertyValue("bottom");if("auto"!==f&&(f=d.top-e.top-parseInt(f,10),.5>=Math.abs(f))){c=a;break}"auto"!==b&&(f=d.bottom-e.bottom-parseInt(b,10),.5>=Math.abs(f)&&(c=a))}if(c)break}return c},autofocus:a=>{XF.isIOS()?a.matches(":focus")||(a.classList.add("is-focused"),XF.on(a,"blur",()=>a.classList.remove("is-focused"))):a.focus();return this},replaceSelectedText:(a,c)=>{let b=a.selectionStart;a.setRangeText(c,b,a.selectionEnd, "preserve");a.selectionStart=b+c.length;a.selectionEnd=a.selectionStart},normalizedScrollLeft:(a,c)=>{const b=XF.scrollLeftType();if("undefined"!==typeof c){switch(b){case "negative":c=0c?-c:0;case "inverted":return a=a.scrollWidth-c-a.offsetWidth,.5>a?0:a;default:return c}},focusNext:a=>{var c=Array.prototype.slice.call(m.querySelectorAll('input:not([type="hidden"]),select,textarea,a,button')); c=c.filter(b=>0"input:not([type=radio], [type=checkbox], [type=submit], [type=reset]), textarea",onPageLoad:()=>{XF.trigger(m,"xf:page-load-start");XF.NavDeviceWatcher.initialize();XF.ActionIndicator.initialize();XF.DynamicDate.initialize();XF.KeepAlive.initialize();XF.LinkWatcher.initLinkProxy();XF.LinkWatcher.initExternalWatcher();XF.ExpandableContent.watch(); XF.ScrollButtons.initialize();XF.NavButtons.initialize();XF.KeyboardShortcuts.initialize();XF.FormInputValidation.initialize();XF.PWA.initialize();XF.Push.initialize();XF.IgnoreWatcher.initializeHash();XF.BrowserWarning.display();XF.BrowserWarning.hideJsWarning();XF.History.initialize();XF.PullToRefresh.initialize();XF.LazyHandlerLoader.initialize();XF.config.jsState=XF.applyJsState({},XF.config.jsState);XF.activate(m);XF.on(m,"ajax:complete",a=>{({data:a}=a);a&&a.visitor&&XF.updateVisitorCounts(a.visitor, !0)});XF.on(m,"ajax:before-success",a=>{({data:a}=a);a&&a&&a.job&&(a=a.job,a.manual&&XF.JobRunner.runManual(a.manual),a.autoBlocking?XF.JobRunner.runAutoBlocking(a.autoBlocking,a.autoBlockingMessage):a.auto&&setTimeout(XF.JobRunner.runAuto,0))});XF.on(m,"keyup",a=>{"Enter"===a.key&&(a=a.target,a.matches("a:not([href])")&&a.click())});m.querySelector("html[data-run-jobs]")&&setTimeout(XF.JobRunner.runAuto,100);XF.config.visitorCounts&&XF.updateVisitorCountsOnLoad(XF.config.visitorCounts);XF.CrossTab.on("visitorCounts", a=>{XF.updateVisitorCounts(a,!1)});XF.pageLoadScrollFix();setTimeout(()=>{const a=m.querySelector("[data-load-auto-click]");a&&a.click()},100);XF.trigger(m,"xf:page-load-complete")},addExtraPhrases:a=>{a.querySelectorAll("script.js-extraPhrases").forEach(c=>{let b;try{b=JSON.parse(c.textContent)||{},XF.extendObject(XF.phrases,b)}catch(f){console.error(f)}c.remove()})},phrase:(a,c,b)=>{let f=XF.phrases[a];f&&c&&(f=XF.stringTranslate(f,c));return f||b||a},_isRtl:null,isRtl:()=>{if(null===XF._isRtl){const a= m.querySelector("html").getAttribute("dir");XF._isRtl=a&&"RTL"===a.toUpperCase()}return XF._isRtl},rtlFlipKeyword:a=>{if(!XF.isRtl())return a;switch(a.toLowerCase()){case "left":return"right";case "right":return"left";default:return a}},isMac:()=>"mac"===XF.browser.os,isIOS:()=>"ios"===XF.browser.os,log:(...a)=>{console.log&&console.log(...a)},findRelativeIf:(a,c,b=!0)=>{if(!a)throw Error("No selector provided");a.endsWith(">")&&(a+=" *");const f=a.match(/^([<>|])/);f?"<"===f[1]?(a=XF.findExtended(a, c),b&&a instanceof NodeList&&(a=1<=a.length?a[0]:null)):("|"===f[1]?a=a.substring(1):">"===f[1]&&(a=":scope "+a),a=b?c.querySelector(a):c.querySelectorAll(a)):a=b?m.querySelector(a):m.querySelectorAll(a);return a},isElementVisible:a=>{const c=m.documentElement;a=a.getBoundingClientRect();return 0<=a.top&&0<=a.left&&a.bottom<=c.clientHeight&&a.right<=c.clientWidth},layoutChange:()=>{XF._layoutChangeTriggered||(XF._layoutChangeTriggered=!0,setTimeout(()=>{XF._layoutChangeTriggered=!1;XF.trigger(m.body, "xf:layout")},0))},_layoutChangeTriggered:!1,updateAvatars:(a,c,b)=>{m.querySelectorAll(".avatar").forEach(f=>{var d=f.querySelector("img, span");const e="avatar-u"+a+"-",g=f.classList.contains("avatar--updateLink")?f.querySelector(".avatar-update"):null;if((b||!d.classList.contains("js-croppedAvatar"))&&d.className.startsWith(e)){if(d.classList.contains(e+"s"))d=XF.createElementFromString(c.s);else if(d.classList.contains(e+"m"))d=XF.createElementFromString(c.m);else if(d.classList.contains(e+"l"))d= XF.createElementFromString(c.l);else if(d.classList.contains(e+"o"))d=XF.createElementFromString(c.o);else return;f.innerHTML="";f.append(...d.childNodes);d.classList.contains("avatar--default")?(f.classList.add("avatar--default"),d.classList.contains("avatar--default--dynamic")?f.classList.add("avatar--default--dynamic"):d.classList.contains("avatar--default--text")?f.classList.add("avatar--default--text"):d.classList.contains("avatar--default--image")&&f.classList.add("avatar--default--image")): f.classList.remove("avatar--default","avatar--default--dynamic","avatar--default--text","avatar--default--image");f.setAttribute("style",d.getAttribute("style"));g&&f.appendChild(g)}})},updateVisitorCounts:(a,c,b)=>{a&&"public"===XF.getApp()&&(XF.badgeCounterUpdate(m.querySelectorAll(".js-badge--conversations"),a.conversations_unread),XF.badgeCounterUpdate(m.querySelectorAll(".js-badge--alerts"),a.alerts_unviewed),XF.config.visitorCounts.title_count&&XF.pageTitleCounterUpdate(a.total_unread),XF.config.visitorCounts.icon_indicator&& XF.faviconUpdate(a.total_unread),c&&(XF.appBadgeUpdate(a.total_unread),XF.CrossTab.trigger("visitorCounts",a),XF.LocalStorage.setJson("visitorCounts",{time:b||Math.floor((new Date).getTime()/1E3)-1,conversations_unread:a.conversations_unread,alerts_unviewed:a.alerts_unviewed,total_unread:a.total_unread})))},updateVisitorCountsOnLoad:a=>{const c=XF.getLocalLoadTime(),b=XF.LocalStorage.getJson("visitorCounts");b&&b.time&&b.time>c&&(a.conversations_unread=b.conversations_unread,a.alerts_unviewed=b.alerts_unviewed, a.total_unread=b.total_unread);XF.updateVisitorCounts(a,!0,c)},badgeCounterUpdate:(a,c)=>{a.forEach(b=>{b&&(b.setAttribute("data-badge",c),"0"!==String(c)?b.classList.add("badgeContainer--highlighted"):b.classList.remove("badgeContainer--highlighted"))})},shouldCountBeShown:a=>0{let c=m.title;""===XF.pageTitleCache&&(XF.pageTitleCache=c);c!==XF.pageTitleCache&&"("===c.charAt(0)&&(c=XF.pageTitleCache);a=(XF.shouldCountBeShown(a)? "("+a+") ":"")+c;a!==m.title&&(m.title=a)},favIconAlertShown:!1,faviconUpdate:a=>{const c=XF.shouldCountBeShown(a);if(c!==XF.favIconAlertShown){var b=m.querySelectorAll('link[rel~="icon"]');b.length&&(XF.favIconAlertShown=c,b.forEach(f=>{const d=f.getAttribute("href"),e=f.dataset.originalHref;if(XF.shouldCountBeShown(a)){e||(f.dataset.originalHref=d);const g=new Image;XF.on(g,"load",()=>{const h=XF.faviconDraw(g);h&&f.setAttribute("href",h)});g.src=d}else e&&(f.setAttribute("href",e),delete f.dataset.originalHref)}))}}, faviconDraw:a=>{const c=a.naturalWidth,b=XF.createElement("canvas",{width:c,height:a.naturalHeight}),f=b.getContext("2d"),d=c/(32/6),e=2*Math.PI;f.drawImage(a,0,0);f.beginPath();f.arc(d,d,d,0,e,!1);f.fillStyle="#E03030";f.fill();f.lineWidth=c/16;f.strokeStyle="#EAEAEA";f.stroke();f.closePath();try{return b.toDataURL("image/png")}catch(g){return null}},appBadgeUpdate:a=>{"setAppBadge"in navigator&&!navigator.webdriver&&!navigator.userAgent.match(/Chrome-Lighthouse|Googlebot|AdsBot-Google|Mediapartners-Google/i)&& (a=parseInt(String(a).replace(/[,. ]/g,"")),navigator.setAppBadge(a))},unparseBbCode:a=>{const c=XF.createElement("div",{innerHTML:a||""});c.querySelectorAll(".js-noSelectToQuote").forEach(b=>b.remove());["B","I","U","S"].forEach(b=>{c.querySelectorAll(b).forEach(f=>{f.outerHTML=`[${b.toLowerCase()}]${f.innerHTML}[/${b.toLowerCase()}]`})});c.querySelectorAll(".bbCodeBlock--quote").forEach(b=>{const f=b.querySelector(".bbCodeBlock-expandContent");f?b.outerHTML=`
[QUOTE]${f.innerHTML}[/QUOTE]
`: f.querySelector(".bbCodeBlock-expand").remove()});c.querySelectorAll(".bbCodeBlock--code").forEach(b=>{const f=b.querySelector(".bbCodeCode code");if(!f)return!0;var d=f.className;d=(d=d?d.match(/language-(\S+)/):null)?d[1]:null;f.removeAttribute("class");b.outerHTML=f.outerHTML;f.setAttribute("data-language",d||"none")});c.querySelectorAll(".bbCodeBlock--unfurl").forEach(b=>{b.outerHTML="[URL unfurl=true]"+b.dataset.url+"[/URL]"});c.querySelectorAll('div[style*="text-align"]').forEach(b=>{const f= q.getComputedStyle(b).textAlign.toUpperCase();b.outerHTML=`[${f}]${b.innerHTML}[/${f}]`});c.querySelectorAll("div[data-media-site-id][data-media-key], form[data-media-site-id][data-media-key]").forEach(b=>{const f=b.dataset.mediaSiteId,d=b.dataset.mediaKey;if(!f||!d)return!0;b.outerHTML=`[MEDIA=${f}]${d}[/MEDIA]`});c.querySelectorAll(".bbCodeSpoiler").forEach(b=>{var f=b.querySelector(".bbCodeSpoiler-button");if(f){const d=b.querySelector(".bbCodeSpoiler-content").innerHTML;let e="";(f=f.querySelector(".bbCodeSpoiler-button-title"))&& (e=`="${f.textContent}"`);b.outerHTML=`[SPOILER${e}]${d}[/SPOILER]`}});c.querySelectorAll(".bbCodeInlineSpoiler").forEach(b=>{b.outerHTML=`[ISPOILER]${b.innerHTML}[/ISPOILER]`});return c.innerHTML},hideOverlays:()=>{Object.values(XF.Overlay.cache).forEach(a=>{a.hide()})},hideTooltips:()=>{Object.values(XF.TooltipTrigger.cache).forEach(a=>a.hide())},hideParentOverlay:a=>{(a=a.closest(".overlay-container"))&&(a=XF.DataStore.get(a,"overlay"))&&a.hide()},getStickyHeaderOffset:()=>{let a,c=0;for(a=0;a< XF.StickyHeader.cache.length;a++){const b=XF.StickyHeader.cache[a];b.target.classList.contains(b.options.stickyClass)&&(c+=b.target.offsetHeight)}return c},loadedScripts:{},loadScript:(a,c)=>{if(XF.hasOwn(XF.loadedScripts,a))return!1;XF.loadedScripts[a]=!0;a=XF.createElement("script",{src:a,onload:c});m.head.appendChild(a);return!0},loadScripts:(a,c)=>{var b=m.scripts[0];const f="async"in b;b=b.readyState;const d=m.head;let e=a.length;const g=[],h=()=>{e--;0===e&&c&&c()},k=()=>{let l;for(;g[0]&&"loaded"=== g[0].readyState;)l=g.shift(),l.onreadystatechange=null,l.onerror=null,d.appendChild(l),h()};for(const l of a)if(!XF.loadedScripts[l])if(XF.loadedScripts[l]=!0,f)XF.createElement("script",{src:l,async:!1,onload:h,onerror:h},d);else if(b){const p=XF.createElement("script",{onreadystatechange:k,onerror:()=>{p.onreadystatechange=null;p.onerror=null;h()},url:l});g.push(p)}else{const p=new XMLHttpRequest;p.open("GET",l,!0);p.onload=()=>{200<=p.status&&400>p.status&&XF.createElement("script",{text:p.response}, d);h()};p.onerror=h;p.send()}!e&&c&&c()},async ajax(a,c,b={},f,d={}){"function"===typeof b&&void 0===f&&(f=b,b={});b instanceof HTMLFormElement&&(b=new FormData(b));let e=!0,g=!0,h=!0,k=!0;d.skipDefault&&(g=e=!1,delete d.skipDefault);d.skipDefaultSuccessError&&(g=!1,delete d.skipDefaultSuccessError);d.skipDefaultSuccess&&(e=!1,delete d.skipDefaultSuccess);d.skipError&&(h=!1,delete d.skipError);void 0!==d.global&&(k=d.global?!0:!1,delete d.global);const l=(r,u,y)=>{XF.trigger(m,XF.customEvent("ajax:before-success", {request:r,response:u,status:u.status,data:y}));g&&XF.defaultAjaxSuccessError(y,u.status,u,r)||e&&XF.defaultAjaxSuccess(y,u.status,u,r)||f&&f(y,u.status,u,r)},p=(r,u,y,z=null)=>{h&&XF.defaultAjaxError(y,null==u?void 0:u.status,u,r,z)},n={"X-Requested-With":"XMLHttpRequest"};let t;var w=d.dataType||"json";delete d.dataType;let v;switch(w){case "html":v=r=>r.text();n.Accept="text/html";break;case "json":v=r=>r.json();n.Accept="application/json";break;case "xml":v=r=>r.text();n.Accept="application/xml"; break;default:throw Error(`Unsupported dataType: ${w}`);}"json"!==w&&(e=!1);b=XF.dataPush(b,"_xfResponseType",w);b=XF.dataPush(b,"_xfWithData",1);b=XF.dataPush(b,"_xfRequestUri",q.location.pathname+q.location.search);XF.config.csrf&&(b=XF.dataPush(b,"_xfToken",XF.config.csrf));"GET"===a.toUpperCase()?c+=(c.includes("?")?"&":"?")+(new URLSearchParams(b)).toString():b instanceof FormData?t=b:Array.isArray(b)?(t=XF.Serializer.serializeFormData(b),n["Content-Type"]="application/x-www-form-urlencoded"): (t=JSON.stringify(b),n["Content-Type"]="application/json");const x=new AbortController;b=x.signal;d.signal&&d.signal.addEventListener("abort",()=>{x.abort()});delete d.signal;w="GET"===a.toUpperCase()?3E4:6E4;w=setTimeout(()=>{x.abort(new DOMException("_XF_TIMEOUT","AbortError"))},d.timeout||w);delete d.timeout;a=new Request(c,{method:a,headers:n,body:t,signal:b,...d});XF.trigger(m,XF.customEvent("ajax:send",{request:a}));k&&XF.trigger(m,"xf:action-start");try{const r=await fetch(a);let u;if(r.ok)u= await v(r),l(a,r,u);else{u=await r.text();try{u=JSON.parse(u),l(a,r,u)}catch(y){p(a,r,u)}}XF.trigger(m,XF.customEvent("ajax:complete",{request:a,response:r,data:u}));return{request:a,response:r,data:u}}catch(r){return p(a,null,null,r),XF.trigger(m,XF.customEvent("ajax:complete",{request:a,error:r})),{request:a,error:r}}finally{clearTimeout(w),k&&XF.trigger(m,"xf:action-stop")}},ajaxAbortable(a,c,b={},f,d={}){const e=new AbortController;d.signal=e.signal;return{ajax:XF.ajax(a,c,b,f,d),controller:e}}, dataPush:(a,c,b)=>{a&&"string"!==typeof a?void 0!==a[0]?a.push({name:c,value:b}):a instanceof FormData?a.append(c,b):a[c]=b:(a=String(a),a+="&"+encodeURIComponent(c)+"="+encodeURIComponent(b));return a},defaultAjaxSuccessError:(a,c,b,f)=>{if("object"!==typeof a)return XF.alert("Response was not JSON."),!0;a.html&&a.html.templateErrors&&(c="Errors were triggered when rendering this template:",a.html.templateErrorDetails&&(c+="\n* "+a.html.templateErrorDetails.join("\n* ")),console.error(c));return a.errorHtml? (XF.setupHtmlInsert(a.errorHtml,(d,e)=>{e=e.h1||e.title||XF.phrase("oops_we_ran_into_some_problems");XF.overlayMessage(e,d)}),!0):a.errors?(XF.alert(a.errors),!0):a.exception?(XF.alert(a.exception),!0):!1},defaultAjaxSuccess:(a,c,b,f)=>{a&&"ok"===a.status&&a.message&&XF.flashMessage(a.message,3E3);return!1},defaultAjaxError:(a,c,b,f,d)=>{if(d instanceof DOMException&&"AbortError"===d.name)"_XF_TIMEOUT"===d.message&&XF.alert(XF.phrase("server_did_not_respond_in_time_try_again"));else{if(d instanceof Error)throw d;console.error("Error: "+a);XF.alert(XF.phrase("oops_we_ran_into_some_problems_more_details_console"))}},activate:a=>{XF.addExtraPhrases(a);XF.IgnoreWatcher.refresh(a);XF.Element.initialize(a);XF.DynamicDate.refresh(a);XF.ExpandableContent.checkSizing(a);XF.UnfurlLoader.activateContainer(a);XF.KeyboardShortcuts.initializeElements(a);XF.FormInputValidation.initializeElements(a);XF.LazyHandlerLoader.loadLazyHandlers(a);if(q.FB){const c=a instanceof Document?a.body:a;setTimeout(()=>FB.XFBML.parse(c), 0)}XF.trigger(m,XF.customEvent("xf:reinit",{element:a}))},activateAll:a=>{Array.from(a).forEach(c=>XF.activate(c))},getDefaultFormData:(a,c,b,f)=>{let d,e;c&&c.hasAttribute("name")&&(e=c.getAttribute("name"));b&&"multipart/form-data"===a.getAttribute("enctype")&&console.error("JSON serialized forms do not support the file upload-style enctype.");if(q.FormData&&!b)d=new FormData(a),e&&d.append(e,c.getAttribute("value")||e),a.querySelectorAll('input[type="file"]').forEach(g=>{const h=g.files;if("undefined"!== typeof h&&0===h.length)try{d.delete(g.getAttribute("name"))}catch(k){}});else{if(b){a=a.elements;let g;const h=[],k=[];if(f){"string"===typeof f&&(f=f.split(","));const l=[];f.forEach((p,n)=>{"number"===typeof n?l.push(XF.regexQuote(p.trim())):l.push(XF.regexQuote(n.trim()))});l.length&&(g=new RegExp("^("+l.join("|")+")(\\[|$)"))}Array.from(a).forEach(l=>{const p=l.name;p&&"_xf"!==p.substring(0,3)?!g||g.test(p)?h.push(l):k.push(l):k.push(l)});d=XF.Serializer.serializeArray(k);f=XF.Serializer.serializeJSON(h); d.unshift({name:b,value:JSON.stringify(f)})}else d=XF.Serializer.serializeArray(a);e&&d.push({name:e,value:e})}return d},scriptMatchRegex:/]*)>([\s\S]*?)<\/script>/ig,setupHtmlInsert:(a,c,b)=>{"string"===typeof a&&(a={content:a});if("object"==typeof a&&a.content){if(b&&a.content&&!a.js){let f=a.content;a.js=[];let d;for(;d=/]*src="([^"]+)"[^>]*><\/script>/i.exec(f);)a.js.push(d[1]),f=f.substring(d.index+d[0].length)}XF.Loader.load(a.js,a.css,()=>{const f=a.jsInline||[];var d= a.content;var e="string"==typeof d;if(a.cssInline)for(var g of a.cssInline)XF.createElement("style",{textContent:g},m.head);if(e&&(d=d.trim(),!b))for(;e=XF.scriptMatchRegex.exec(d);){g=!1;const l=e[1].match(/(^|\s)type=("|'|)([^"' ;]+)/);if(l)switch(l[3].toLowerCase()){case "text/javascript":case "text/ecmascript":case "application/javascript":case "application/ecmascript":g=!0}else g=!0;g&&(f.push(e[2]),d=d.replace(e[0],""))}let h=XF.createElementFromString(d);if(h){(h instanceof HTMLElement?h.querySelectorAll("noscript"): []).forEach(l=>{l.parentNode.removeChild(l)});if(c instanceof HTMLElement){const l=c;c=p=>{l.innerHTML="";l.append(p);XF.activate(l)}}if("function"!==typeof c)console.error("onReady was not a function");else{var k=!1;d=(l,p)=>{if(!k){k=!0;for(const n of f)eval(n);a.jsState&&(XF.config.jsState=XF.applyJsState(XF.config.jsState,a.jsState));l||(p&&(h=p),h instanceof HTMLElement&&XF.activate(h))}};!1!==c(h,a,d)&&d()}}})}else console.error("Was not provided an object or HTML content")},alert:(a,c,b,f)=> {let d=a;XF.isPlainObject(a)&&(d="
    ",Object.keys(a).forEach(e=>{d+="
  • "+a[e]+"
  • "}),d+="
",d='
'+d+"
");c||(c="error");if(!b)switch(c){case "error":b=XF.phrase("oops_we_ran_into_some_problems");break;default:b=""}return XF.overlayMessage(b,d)},getOverlayHtml:a=>{var c={dismissible:!0,title:null,url:null};"object"===typeof a&&a.constructor===Object&&(c={...c,...a},a.html&&(a=a.html));if("string"==typeof a)a=XF.createElementFromString(a);else if(!(a instanceof HTMLElement))throw Error("Can only create an overlay with html provided as a string or DOM Element");if(!a.classList.contains("overlay")){var b=c.title;if(!b){var f=a.querySelector(".overlay-title");f&&(b=f.textContent,f.parentNode.removeChild(f))}b||(b=m.querySelector("title").textContent);(f=a.querySelector(".overlay-content"))&&(a=f);f=XF.createElement("div",{className:"overlay",tabIndex:"-1",dataset:{url:c.url}});b=XF.createElement("div",{className:"overlay-title",innerHTML:b});c.dismissible&& (c=XF.createElement("a",{className:"overlay-titleCloser js-overlayClose",role:"button",tabIndex:0,ariaLabel:XF.phrase("close")}),b.prepend(c));c=XF.createElement("div",{className:"overlay-content"});XF.isCreatedContainer(a)?c.append(...a.childNodes):c.append(a);f.appendChild(b);f.appendChild(c);a=f}m.body.appendChild(a);return a},createMultiBar:(a,c,b,f)=>{},getMultiBarHtml:a=>{var c={dismissible:!0,title:null};"object"===typeof a&&a.constructor===Object&&(XF.extendObject(c,a),a.html&&(a=a.html)); if("string"==typeof a)a=XF.createElementFromString(a);else if(!(a instanceof HTMLElement))throw Error("Can only create an action bar with html provided as a string or DOM Element");c=XF.createElement("div",{className:"multiBar",tabIndex:-1});const b=XF.createElement("div",{className:"multiBar-inner",innerHTML:"Hello there."});b.appendChild(a);c.appendChild(b);m.body.appendChild(c);return c},overlayMessage:(a,c)=>{if("string"==typeof c)c=XF.createElementFromString(c),c instanceof HTMLElement|| (c=XF.createElement("div",{innerText:c.textContent}));else if(!(c instanceof HTMLElement))throw Error("Can only create an overlay with html provided as a string or DOM Element");if(!c.matches(".block, .blockMessage")&&!c.querySelector(".block, .blockMessage")){const b=XF.createElement("div",{className:"blockMessage"});b.appendChild(c);c=b}c=XF.getOverlayHtml({title:a,html:c});return XF.showOverlay(c,{role:"alertdialog"})},flashMessage:(a,c,b)=>{a=XF.createElementFromString('
'+ a+"
");const f=XF.createElementFromString('
');f.appendChild(a);m.body.appendChild(f);XF.Transition.addClassTransitioned(f,"is-active");setTimeout(()=>{XF.Transition.removeClassTransitioned(f,"is-active",()=>{f.parentNode.removeChild(f);b&&b()})},Math.max(500,c))},htmlspecialchars:a=>String(a).replace(/&/g,"&").replace(/"/g,""").replace(//g,">"),regexQuote:a=>String(a).replace(/([\\.+*?[^\]$(){}=!<>|:])/g,"\\$1"),stringTranslate:(a, c)=>{a=a.toString();for(const b of Object.keys(c)){const f=new RegExp(XF.regexQuote(b,"g"));a=a.replace(f,c[b])}return a},stringHashCode:a=>{let c=0,b,f,d;if(0===a.length)return c;b=0;for(d=a.length;b{const a=XF.counter;XF.counter++;return a},canonicalizeUrl:a=>{if(a.match(/^[a-z]+:/i))return a;if(0===a.indexOf("/")){const c=XF.config.url.fullBase.match(/^([a-z]+:(\/\/)?[^/]+)\//i);return c?c[1]+a:a}return XF.config.url.fullBase+ a},isRedirecting:!1,redirect:a=>{XF.isRedirecting=!0;if(XF.JobRunner.isBlockingJobRunning())return XF.on(m,"job:blocking-complete",()=>XF.redirect(a),{once:!0}),!1;a=XF.canonicalizeUrl(a);var c=q.location;if(a===c.href)q.location.reload(!0);else{q.location=a;const b=a.split("#");c=c.href.split("#");b[1]&&b[0]===c[0]&&q.location.reload(!0)}return!0},getAutoCompleteUrl:()=>"admin"===XF.getApp()?XF.canonicalizeUrl("admin.php?users/find"):XF.canonicalizeUrl("index.php?members/find"),applyDataOptions:(a, c,b)=>{let f={},d,e,g;for(const h of Object.keys(a))if(f[h]=a[h],XF.hasOwn(c,h)){d=c[h];e=typeof d;g=!0;switch(typeof f[h]){case "object":if("string"===e)try{d=JSON.parse(d)}catch(k){}break;case "string":"string"!==e&&(d=String(d));break;case "number":"number"!==e&&(d=Number(d),isNaN(d)&&(g=!1));break;case "boolean":"boolean"!==e&&(d=XF.toBoolean(d))}g&&(f[h]=d)}XF.isPlainObject(b)&&(f=XF.extendObject(f,b));return f},watchInputChangeDelayed:(a,c,b=200)=>{let f=a.value,d;XF.on(a,"input",e=>{clearTimeout(d); d=setTimeout(()=>{f!==a.value&&(f=a.value,c(e))},b)})},insertIntoEditor:(a,c,b,f)=>XF.modifyEditorContent(a,d=>{d.insertContent(c)},d=>{XF.insertIntoTextBox(d,b)},f),replaceEditorContent:(a,c,b,f)=>XF.modifyEditorContent(a,d=>{d.replaceContent(c)},d=>{XF.replaceIntoTextBox(d,b)},f),clearEditorContent:(a,c)=>{c=XF.replaceEditorContent(a,"","",c);XF.trigger(a,"draft:sync");return c},modifyEditorContent:(a,c,b,f)=>{a=XF.getEditorInContainer(a,f);return a?a.ed?(a.isBbCodeView()?(c=a.ed.bbCode.getTextArea(), b(c),XF.trigger(c,"autosize")):c(a),!0):a instanceof HTMLElement&&"TEXTAREA"===a.nodeName?(b(a),XF.trigger(a,"autosize"),!0):!1:!1},getEditorInContainer:(a,c)=>{if(a.classList.contains("js-editor")){if(c&&a.matches(c))return null}else{a=Array.from(a.querySelectorAll(".js-editor"));c&&(a=a.filter(f=>!f.matches(c)));if(!a.length)return null;a=a[0]}const b=XF.Element.getHandler(a,"editor");return b?b:"TEXTAREA"===a.nodeName?a:null},focusEditor:(a,c)=>{a=XF.getEditorInContainer(a,c);return a?XF.Editor&& a instanceof XF.Editor?(a.isInitialized()&&a.scrollToCursor(),!0):a instanceof HTMLElement&&"TEXTAREA"===a.tagName?(XF.autofocus(a),!0):!1:!1},insertIntoTextBox:(a,c)=>{const b=a.scrollTop,f=a.selectionStart;var d=a.selectionEnd;const e=a.value,g=e.substring(0,f);d=e.substring(d,e.length);a.value=g+c+d;XF.trigger(a,"autosize");a.selectionStart=f+c.length;a.selectionEnd=a.selectionStart;a.scrollTop=b;XF.autofocus(a)},replaceIntoTextBox:(a,c)=>{a.value=c;XF.trigger(a,"autosize")},isElementWithinDraftForm:a=> {a=a.closest("form");return null!==a&&a.hasAttribute("data-xf-init")&&a.getAttribute("data-xf-init").includes("draft")},logRecentEmojiUsage:a=>{if(!XF.Cookie.isGroupConsented("optional"))return[];a=a.trim();const c=XF.Feature.has("hiddenscroll")?12:11;var b=XF.Cookie.get("emoji_usage");b=b?b.split(","):[];const f=b.indexOf(a);-1!==f&&b.splice(f,1);b.push(a);b.length>c&&(b=b.reverse().slice(0,c).reverse());XF.Cookie.set("emoji_usage",b.join(","),new Date((new Date).setFullYear((new Date).getFullYear()+ 1)));XF.trigger(m,"recent-emoji:logged")},getRecentEmojiUsage:()=>{const a=XF.Cookie.get("emoji_usage");return(a?a.split(","):[]).reverse()},getFixedOffsetParent:a=>{for(;a&&1===a.nodeType;){if("fixed"===getComputedStyle(a).position)return a;a=a.parentNode}return m.documentElement},getFixedOffset:a=>{const c=a.getBoundingClientRect(),b=XF.getFixedOffsetParent(a).getBoundingClientRect();return"html"===a.nodeName.toLowerCase()?{top:c.top,left:c.left}:{top:c.top-b.top,left:c.left-b.left}},autoFocusWithin:(a, c,b)=>{c=a.querySelector(c||"[autofocus]");if(!c){if(!c&&XF.NavDeviceWatcher.isKeyboardNav()){const d=a.querySelectorAll("a, button, input, textarea, select, [tabindex]");for(var f of d)if(f.offsetWidth&&f.offsetHeight&&!f.disabled&&!f.hasAttribute("data-no-auto-focus")){c=f;break}}if(!c&&(f=a.querySelector("form:not([data-no-auto-focus])"))){f=f.querySelectorAll("input, textarea, select, button, .tagify__input");for(const d of f)if(d.offsetWidth&&d.offsetHeight&&!d.disabled&&!d.classList.contains("select2-hidden-accessible")){c= d;break}}!c&&b&&(c=b);c||(a.setAttribute("tabindex","-1"),c=a)}a=[];b=c.parentNode;do a.push({el:b,left:b.scrollLeft,top:b.scrollTop});while(b=b.parentNode);XF.autofocus(c);for(const d of a)c=d.el,c.scrollLeft!==d.left&&(c.scrollLeft=d.left),c.scrollTop!==d.top&&(c.scrollTop=d.top)},display:(a,c=null)=>{c?a.style.display=c:(a.style.removeProperty("display"),null!==c||a.offsetWidth||(c=q.getComputedStyle(a),"none"===c.display&&(a.style.display=c.getPropertyValue("--js-display"))))},bottomFix:a=>{const c= m.querySelector(".js-bottomFixTarget");c?c.append(a):(a.style.position="fixed",a.style.bottom="0",m.body.append(a))},addFixedMessage:(a,c)=>{let b;b=XF.createElement("div",{className:"fixedMessageBar"});const f=XF.createElement("div",{className:"fixedMessageBar-inner"},b);XF.createElement("div",{className:"fixedMessageBar-message",innerHTML:a},f);a=XF.createElement("a",{className:"fixedMessageBar-close",role:"button",tabIndex:0,ariaLabel:XF.phrase("close"),dataset:{close:!0}},f);if(c){c.class&&(b.classList.add(...c.class.split(" ")), delete c.class);for(const d of Object.keys(c))b.setAttribute(d,c[d])}XF.on(a,"click",()=>{b.classList.remove("is-active");XF.on(b,"transitionend",()=>{b.parentNode.removeChild(b)})});XF.bottomFix(b);b.classList.add("is-active")},_measureScrollBar:null,measureScrollBar:(a,c)=>{c="height"===c||"h"===c?"h":"w";if(a||null===XF._measureScrollBar){const b=XF.createElement("div",{className:"scrollMeasure"},a||m.body),f={w:b.offsetWidth-b.clientWidth,h:b.offsetHeight-b.clientHeight};b.parentNode.removeChild(b); a||(XF._measureScrollBar=f);return f[c]}return XF._measureScrollBar[c]},windowHeight:()=>XF.browser.ios||XF.browser.android?q.innerHeight:m.documentElement.clientHeight,pageLoadScrollFix:()=>{if(!XF.Feature.has("overflowanchor")&&q.location.hash){var a=!1,c=()=>{if(!a){var b=q.location.hash.replace(/[^a-zA-Z0-9_-]/g,"");(b=b?m.getElementById(b):null)&&b.scrollIntoView(!0)}};"complete"===m.readyState?setTimeout(c,0):(setTimeout(()=>{XF.on(q,"scroll",b=>{a=!0},{once:!0})},100),XF.on(q,"load",c,{once:!0}))}}, applyJsState:(a,c)=>{a=a||{};if(!c)return a;for(const b of Object.keys(c))a[b]||XF.hasOwn(XF.jsStates,b)&&XF.jsStates[b]()&&(a[b]=!0);return a},jsStates:{facebook:()=>this.fbSdk(),fbSdk:()=>{XF.createElement("div",{id:"fb-root"},m.body);q.fbAsyncInit=()=>{FB.init({version:"v2.7",xfbml:!0})};XF.loadScript("https://connect.facebook.net/"+XF.getLocale()+"/sdk.js");return!0},twitter:()=>{q.twttr=(()=>{const a=q.twttr||{};XF.loadScript("https://platform.twitter.com/widgets.js")&&(a._e=[],a.ready=c=>{a._e.push(c)}); return a})();return!0},flickr:()=>{XF.loadScript("https://embedr.flickr.com/assets/client-code.js");return!0},instagram:()=>{XF.loadScript("https://www.instagram.com/embed.js");return!0},tiktok:()=>{XF.loadScript("https://www.tiktok.com/embed.js",()=>{XF.on(m,"embed:loaded",a=>{a=Array.from(m.querySelectorAll("blockquote.tiktok-embed"));"undefined"!==typeof tiktokEmbed&&a.length&&tiktokEmbed.lib.render(a)})});return!0},reddit:()=>{XF.loadScript("https://embed.reddit.com/widgets.js",()=>{XF.on(m,"xf:reinit", a=>{q.rembeddit&&rembeddit.init()})});return!0},reddit_comment(){return this.reddit()},imgur:()=>{q.imgurEmbed||(q.imgurEmbed={tasks:m.querySelectorAll("blockquote.imgur-embed-pub").length});XF.loadScript("//s.imgur.com/min/embed-controller.js",()=>{XF.on(m,"xf:reinit",a=>{imgurEmbed.tasks+=m.querySelectorAll("blockquote.imgur-embed-pub").length;for(a=0;a{XF.loadScript("//assets.pinterest.com/js/pinit.js", ()=>{XF.on(m,"xf:reinit",a=>{PinUtils.build(a.target)})});return!0}},getLocale:()=>{let a=m.querySelector("html").getAttribute("lang").replace("-","_");a||(a="en_US");return a},supportsPointerEvents:()=>"PointerEvent"in q,isEventTouchTriggered(a){if(a){if(a.xfPointerType)return"touch"===a.xfPointerType;if(a=a.originalEvent){if(this.supportsPointerEvents()&&a instanceof PointerEvent)return"touch"===a.pointerType;if(a.sourceCapabilities)return a.sourceCapabilities.firesTouchEvents}}return XF.Feature.has("touchevents")}, getElEffectiveZIndex:a=>{let c=parseInt(q.getComputedStyle(a).getPropertyValue("z-index"),10)||0;for(;a.parentElement;){a=a.parentElement;const b=parseInt(q.getComputedStyle(a).getPropertyValue("z-index"),10);b>c&&(c=b)}return c},setRelativeZIndex(a,c,b,f){f||(f=6);c=this.getElEffectiveZIndex(c);f&&f>c&&(c=f);if(null===b||"undefined"===typeof b)b=0;a=Array.isArray(a)?a:[a];f=a.length;for(let d=0;d{a=a.replace(/]+>/ig,c=>{if(c.match(/class="([^"]* )?smilie([ "])/)){const b=c.match(/alt="([^"]+)"/);if(b)return b[1]}return c});a=a.replace(/([\w\W]|^)]*data-user-id="\d+"\s+data-username="([^"]+)"[^>]*>([\w\W]+?)<\/a>/gi,(c,b,f,d)=>b+("@"===b?"":"@")+d.replace(/^@/,""));a=a.replace(/(]*)src="[^"]*"(\s[^>]*)data-url="([^"]+)"/gi,(c,b,f,d)=>b+'src="'+d+'"'+f);a=XF.createElement("div", {innerHTML:a});a.querySelectorAll("blockquote").forEach(c=>{["attributes","quote","source"].forEach(f=>{c.getAttribute("data-"+f)||c.removeAttribute("data-"+f)});const b=c.querySelector(".bbCodeBlock-title");b&&c.removeChild(b)});return a=a.innerHTML},requestAnimationTimeout:(a,c=0)=>{const b=h=>q.setTimeout(h,1E3/60),f=q.requestAnimationFrame||b,d=Date.now(),e={},g=()=>{Date.now()-d>=c?a():e.id=f(g)};e.id=f(g);e.cancel=()=>{(q.cancelAnimationFrame||q.clearTimeout)(e.id)};return e},proxy:(a,c,...b)=> {let f;if("string"===typeof c)f=a[c].bind(a);else if(XF.isFunction(a))f=a.bind(c);else return;return(...d)=>f(...b,...d)},_localLoadTime:null,getLocalLoadTime:()=>{if(XF._localLoadTime)return XF._localLoadTime;const a=m.querySelector("#_xfClientLoadTime");var c=a.value.split(",");if(2===c.length&&parseInt(c[1])===XF.config.time.now)return XF._localLoadTime=parseInt(c[0]),XF._localLoadTime;c=q.performance.getEntriesByType("navigation")[0];if(!c)return XF._localLoadTime=Math.floor((new Date).getTime()/ 1E3)-1,a.value=XF._localLoadTime+","+XF.config.time.now,XF._localLoadTime;XF._localLoadTime=Math.floor((q.performance.timeOrigin+(c.requestStart+c.responseStart)/2)/1E3);a.value=XF._localLoadTime+","+XF.config.time.now;return XF._localLoadTime},getFutureDate:(a,c)=>{let b=864E5;switch(c){case "year":b*=365;break;case "month":b*=30}b*=a;return new Date(Date.now()+b)},smoothScroll:(a,c,b,f)=>{let d;a instanceof HTMLElement||"string"===typeof a?((b=a instanceof HTMLElement?a:m.querySelector(a))?(d=b.getBoundingClientRect().top+ q.scrollY,a=parseInt(getComputedStyle(m.documentElement).getPropertyValue("scroll-padding-top"),10),isNaN(a)||(d-=a)):d=null,!0===c&&(c=b?"#"+b.id:null)):"number"===typeof a&&(b=null,d=a);if(null===d)console.error("Invalid scroll position");else{0>d&&(d=0);a=()=>{c&&"pushState"in q.history&&q.history.pushState({},"",q.location.toString().replace(/#.*$/,"")+c)};if(f&&(b=m.documentElement,f=b.scrollTop,b=f+b.clientHeight,d>=f&&d<=b)){a();return}try{a(),q.scrollTo({top:d,behavior:"smooth"})}catch(e){c&& (q.location.hash=c)}}}});XF.create=a=>{const c=function(...b){this.__construct(...b)};c.prototype=Object.create(a);c.prototype.__construct||(c.prototype.__construct=()=>{});return c.prototype.constructor=c};XF.extend=(a,c)=>{const b=function(...d){this.__construct(...d)};let f;b.prototype=Object.create(a.prototype);b.prototype.__construct||(b.prototype.__construct=()=>{});b.prototype.constructor=b;if("object"==typeof c){if("object"==typeof c.__backup){a=c.__backup;for(f of Object.keys(a)){if(b.prototype[a[f]])throw Error("Method "+ a[f]+" already exists on object. Aliases must be unique.");b.prototype[a[f]]=b.prototype[f]}delete c.__backup}for(f of Object.keys(c))b.prototype[f]=c[f]}return b};XF.classToConstructor=a=>{let c=q;const b=a.split(".");let f;for(f=0;f{let a=!0;const c={linear:f=>f,quadratic:f=>f**2,swing:f=>.5-Math.cos(f*Math.PI)/2,circ:f=>1-Math.sin(Math.acos(f)), back:(f,d)=>f**2*((d+1)*f-d),bounce:f=>{let d=0,e=1;for(;;d+=e,e/=2)if(f>=(7-4*d)/11)return-((11-6*d-11*f)/16)+e**2},elastic:(f,d)=>(10*(f-1))**2*Math.cos(20*Math.PI*d/3*f)},b=(f,d)=>{d={speed:XF.config.speed.normal,delta:c.swing,complete:()=>{},start:()=>{},finish:()=>{},...d};a||(d.speed=0);let e=d.start(f);if(!1===e)d.complete();else{void 0===e&&(e={});var g=new Date,h=()=>{var k=new Date-g;k=0{a=!0},disable:()=>{a=!1},easing:c,animate:b,fadeOut:(f,d={})=>b(f,{...d,start:e=>{if("none"===q.getComputedStyle(e).display)return!1},step:(e,{delta:g})=>{e.style.opacity=(1-g).toString()},finish:e=>{XF.display(e,"none");e.style.opacity=""}}),fadeIn:(f,d={})=>b(f,{...d,start:e=>{if("none"!==q.getComputedStyle(e).display)return!1;XF.display(e)},step:(e,{delta:g})=>{e.style.opacity= g.toString()},finish:e=>{e.style.opacity=""}}),fadeTo:(f,d={})=>b(f,{...d,start:e=>{const g=Number(q.getComputedStyle(e).opacity);var h;const k=null!=(h=d.opacity)?h:1;if(g===k)return!1;h=k-g;XF.display(e);return{initialOpacity:g,deltaOpacity:h}},step:(e,{delta:g,initialOpacity:h,deltaOpacity:k})=>{e.style.opacity=(h+k*g).toString()}}),slideUp:(f,d={})=>b(f,{...d,start:e=>{if("none"===q.getComputedStyle(e).display)return!1;const g=e.offsetHeight;e.style.overflow="hidden";return{initialHeight:g}}, step:(e,{delta:g,initialHeight:h})=>{e.style.height=h*(1-g)+"px"},finish:e=>{XF.display(e,"none");e.style.height="";e.style.overflow=""}}),slideDown:(f,d={})=>b(f,{...d,start:e=>{if("none"!==q.getComputedStyle(e).display)return!1;XF.display(e);const g=e.offsetHeight;e.style.overflow="hidden";return{targetHeight:g}},step:(e,{delta:g,targetHeight:h})=>{e.style.height=h*g+"px"},finish:e=>{e.style.height="";e.style.overflow=""}}),fadeUp:(f,d={})=>b(f,{...d,start:e=>{if("none"===q.getComputedStyle(e).display)return!1; const g=e.offsetHeight;e.style.overflow="hidden";return{initialHeight:g}},step:(e,{delta:g,initialHeight:h})=>{e.style.height=h*(1-g)+"px";e.style.opacity=(1-g).toString()},finish:e=>{XF.display(e,"none");e.style.height="";e.style.opacity="";e.style.overflow=""}}),fadeDown:(f,d={})=>b(f,{...d,start:e=>{if("none"!==q.getComputedStyle(e).display)return!1;XF.display(e);const g=e.offsetHeight;e.style.overflow="hidden";return{targetHeight:g}},step:(e,{delta:g,targetHeight:h})=>{e.style.height=h*g+"px"; e.style.opacity=g.toString()},finish:e=>{e.style.height="";e.style.opacity="";e.style.overflow=""}})}})();XF.Transition=(()=>{const a=d=>{if(!(d&&d instanceof Element))return 0;d=q.getComputedStyle(d).transitionDuration;var e=0;if(d&&(d=/^(\+|-|)([0-9]*\.[0-9]+|[0-9]+)(ms|s)/i.exec(d))){e="-"===d[1]?-1:1;const g=parseFloat(d[2]);d="ms"===d[3].toLowerCase()?1:1E3;e=e*g*d}return e},c=(d,e,g)=>{const h=[];XF.isFunction(e)&&(e=e.call(d,0,d.className));e=e.trim().split(/\s+/);d=" "+d.className+" ";for(const k of e)((e= 0<=d.indexOf(" "+k+" "))&&!g||!e&&g)&&h.push(k);return h},b={height:"height padding-top padding-bottom margin-top margin-bottom border-top-width border-bottom-width".split(" "),width:"width padding-left padding-right margin-left margin-right border-right-width border-left-width".split(" ")},f=(d,e,g,h,k)=>{k=k?0:a(d);const l=e?"add":"remove",p=e?"remove":"add";e=c(d,g,e?!0:!1);var n=()=>{h&&setTimeout(()=>{h.call(d,XF.customEvent("transitionend"))},0)};if(e.length)if(0>=k)d.classList[l](...e),n(); else{d.classList.contains("is-transitioning")&&XF.trigger(d,"transitionend");d.classList.add("is-transitioning");if(q.getComputedStyle(d).getPropertyValue("transition-property").match(/(^|\s|,)-xf-(width|height)($|\s|,)/)){n=RegExp.$2;const r=b[n];var t=q.getComputedStyle(d);const u={};for(var w of r)u[w]=t.getPropertyValue(w);w=u[n];const y="transition."+n;let z=XF.DataStore.get(d,y);const A=d.style;t=A.transition||"";z||(z={},r.forEach(B=>{z[B]=A[B]||""}));const D=(B,C)=>{const E=q.getComputedStyle(B); let F;switch(C){case "width":F=B.clientWidth-parseFloat(E.paddingLeft)-parseFloat(E.paddingRight);break;case "height":F=B.clientHeight-parseFloat(E.paddingTop||"0")-parseFloat(E.paddingBottom||"0")}return F};if(0===D(d,n)){w="0";for(var v of Object.keys(u))u[v]="0"}XF.DataStore.set(d,y,z);d.style.transition="none";d.classList[l](...e);const H=q.getComputedStyle(d);v={};for(var x of r)v[x]=H.getPropertyValue(x);x=v[n];if(0===D(d,n)){x="0";for(let B of Object.keys(v))v[B]="0"}d.classList[p](...e);if(w!== x){let B=h;for(let C of Object.keys(u))d.style[C]=u[C];d.offsetWidth;d.style.transition=t;for(let C of Object.keys(v))d.style[C]=v[C];h=(...C)=>{d.style.cssText=XF.DataStore.get(d,y);XF.DataStore.remove(d,y);B&&B(...C)}}else d.style.transition=t}XF.onTransitionEnd(d,k,(...r)=>{d.classList.remove("is-transitioning");h&&h(...r)});d.classList[l](g)}else n()};return{addClassTransitioned:(d,e,g,h)=>{const k=Array.isArray(d)?d:[d],l=k.length;for(let p=0;p{const k=Array.isArray(d)?d:[d],l=k.length;for(let p=0;p{"boolean"!==typeof g&&"undefined"===typeof h&&(h=g,g=null);const l="boolean"===typeof g,p=Array.isArray(d)?d:[d],n=p.length;for(let t=0;t{const a={};let c=!1,b;const f=d=>{var e=XF.LocalStorage.getKeyName("__crossTab");if(d.key===e){try{var g=JSON.parse(d.newValue)}catch(h){return}if(g&& g.event&&(d=g.event,g=g.data||null,e=a[d])){b=d;for(const h of e)h(g);b=null}}};return{on:(d,e)=>{a[d]||(a[d]=[]);a[d].push(e);c||(c=!0,XF.on(q,"storage",f))},trigger:(d,e,g)=>{!g&&b&&b===d||XF.LocalStorage.setJson("__crossTab",{event:d,data:e,_:new Date+Math.random()})}}})();XF.Breakpoint=(()=>{let a=null;const c=["narrow","medium","wide","full"],b=e=>{for(const g of c){if(e===g)break;if(a===g)return!0}return!1},f=e=>{let g=!1;for(const h of c)if(e===h)g=!0;else if(a===h)return g;return!1},d=()=> {const e=q.getComputedStyle(m.querySelector("html"),":after").getPropertyValue("content").replace(/"/g,"");a?e!==a&&(a=e,XF.trigger(m,"breakpoint:change")):a=e;return a};d();XF.on(q,"resize",d,{passive:!0});return{current:()=>a,refresh:d,isNarrowerThan:b,isAtOrNarrowerThan:e=>a===e||b(e),isWiderThan:f,isAtOrWiderThan:e=>a===e||f(e)}})();XF.JobRunner=(()=>{let a=!1,c=[],b,f=null,d=0,e,g=null;const h=()=>{fetch(XF.canonicalizeUrl("job.php"),{method:"POST",headers:{Accept:"application/json"},cache:"no-store"}).then(v=> {if(!v.ok)throw Error("Network response was not ok.");return v.json()}).then(v=>{v&&v.more&&setTimeout(h,100)})},k=v=>{const {ajax:x,controller:r}=XF.ajaxAbortable("post",XF.canonicalizeUrl("job.php"),{only_ids:v},u=>{u.more&&u.ids&&u.ids.length?(u.status&&(m.querySelector("#xfAutoBlockingJobStatus").textContent=u.status),setTimeout(()=>{k(u.ids)},0)):(l(),u.moreAuto&&setTimeout(h,100))},{skipDefault:!0});x.catch(l);e=r},l=()=>{g&&g.hide();d--;0>d&&(d=0);0===d&&(XF.trigger(m,"job:auto-blocking-complete"), w());e&&e.abort();e=null},p=()=>{f&&f.hide();c=[];a=!1;XF.trigger(m,"job:manual-complete");w();b&&b.abort();b=null},n=()=>{f||(f=t("xfManualJobStatus"));return f},t=v=>{v=XF.getOverlayHtml({title:XF.phrase("processing..."),dismissible:!1,html:`
${XF.phrase("processing...")}
`});return new XF.Overlay(v,{backdropClose:!1,keyboard:!1})},w=()=>{a||0a||0{if("number"===typeof v)v=[v];else if(!Array.isArray(v))return;v.length&&(d++,g||(g=t("xfAutoBlockingJobStatus")),g.show(),x||(x=XF.phrase("processing...")),m.querySelector("#xfAutoBlockingJobStatus").textContent=x,k(v))},runManual:v=>{const x=XF.config.job.manualUrl;if(x&&(null===v?c=null:(c=c||[],"number"===typeof v?c.push(v):Array.isArray(v)&&(c=[...c,...v])),!a)){a=!0;n().show();var r=y=>{const {ajax:z,controller:A}=XF.ajaxAbortable("post",x,y?{only_id:y}:null,D=>{D.jobRunner?(m.querySelector("#xfManualJobStatus").textContent= D.jobRunner.status||XF.phrase("processing..."),setTimeout(()=>{r(y)},0)):u()},{skipDefault:!0});z.catch(p);b=A},u=()=>{Array.isArray(c)&&0===c.length?p():r(c?c.shift():null)};u()}},stopManual:p,getManualOverlay:n}})();XF.DataStore=(()=>{const a=new WeakMap;return{set:(c,b,f)=>{a.has(c)||a.set(c,{});a.get(c)[b]=f},get:(c,b)=>(c=a.get(c))?c[b]:null,remove:(c,b)=>{(c=a.get(c))&&delete c[b]}}})();XF.Serializer=(()=>{const a=(b,f,d)=>{if(void 0===b)throw Error("ArgumentError: param 'serialized' expected to be an object or array, found undefined"); if(!f||0===f.length)throw Error("ArgumentError: param 'keys' expected to be an array with at least one element");var e=f[0];if(1===f.length)""===e?b.push(d):b[e]=d;else{const g=f[1];if(""===e){e=b.length-1;const h=b[e];e=XF.isObject(h)&&(void 0===h[g]||2{b=b.split("[");b=b.map(f=>f.replace(/\]/g,""));""===b[0]&&b.shift();return b};return{serializeArray:b=> {const f=[];if(b instanceof HTMLFormElement)b=Array.from(b.elements);else if(b instanceof NodeList||b instanceof HTMLCollection)b=Array.from(b);else if(!(b instanceof Array))throw Error("serializeArray expects either a form element, a NodeList/HTMLCollection of inputs, or an array of inputs");b.forEach(d=>{d.name&&!d.disabled&&"file"!==d.type&&"reset"!==d.type&&"submit"!==d.type&&"button"!==d.type&&("select-multiple"===d.type?Array.from(d.options).forEach(e=>{e.selected&&f.push({name:d.name,value:e.value})}): ("checkbox"!==d.type&&"radio"!==d.type||d.checked)&&f.push({name:d.name,value:d.value}))});return f},serializeFormData:b=>b.map(f=>`${encodeURIComponent(f.name)}=${encodeURIComponent(f.value)}`).join("&"),serializeJSON:b=>{const f={};XF.Serializer.serializeArray(b).forEach(d=>{const e=d.value;d=c(d.name);a(f,d,e)});return f}}})();XF.Loader=(()=>{const a=XF.config.css,c=XF.config.js,b=(f=[],d=[],e)=>{const g=f.filter(l=>!XF.hasOwn(c,l)),h=d.filter(l=>!XF.hasOwn(a,l));let k=(g.length?1:0)+(h.length? 1:0);0===k?e&&e():(g.length&&XF.loadScripts(g,()=>{g.forEach(l=>{c[l]=!0});k--;0===k&&e&&e()}),h.length&&((f=XF.config.url.css)?(f=f.replace("__SENTINEL__",h.join(",")),fetch(f,{headers:{Accept:"text/css"}}).then(l=>{if(!l.ok)throw Error("Network response was not ok.");return l.text()}).then(l=>{const p=XF.config.url.basePath;p&&(l=l.replace(/(url\(("|')?)([^"')]+)(("|')?\))/gi,(n,t,w,v,x,r)=>{v.match(/^([a-z]+:|\/)/i)||(v=p+v);return t+v+x}));XF.createElement("style",{textContent:l},m.head);h.forEach(n=> {a[n]=!0});k--;0===k&&e&&e()})):(console.error("No CSS URL so cannot dynamically load CSS"),k--,0===k&&e&&e())))};return{load:b,loadCss:(f,d)=>b([],f,d),loadJs:(f,d)=>b(f,[],d)}})();XF.LazyHandlerLoader=(()=>{const a={};let c;const b=(e,g,h="init",k=!0)=>{null===("init"===h?XF.Element.getObjectFromIdentifier(g):XF.Event.getObjectFromIdentifier(g))&&(a[g]={file:e,type:h,minified:k,loading:!1})},f=e=>{let g=[];if(e instanceof NodeList||Array.isArray(e))return e.forEach(l=>{g=[...g,...f(l)]}),g;const h= Object.keys(a).map(l=>a[l].type).filter((l,p,n)=>n.indexOf(l)===p),k=`[data-xf-${h.join("], [data-xf-")}]`;e=e.nodeType===Node.DOCUMENT_NODE?e.documentElement:e;e.matches(k)&&(g=[...g,...d(e,h)]);e.querySelectorAll(k).forEach(l=>{g=[...g,...d(l,h)]});return g.filter((l,p,n)=>n.indexOf(l)===p)},d=(e,g)=>{let h=[];for(const k of g)g=`data-xf-${k}`,e.hasAttribute(g)&&(g=e.getAttribute(g).split(" ").filter(l=>""!==l),h=[...h,...g]);return h};return{initialize:()=>{b("xf/action.js","alerts-list");b("xf/action.js", "bookmark-click");b("xf/action.js","bookmark-label-filter");b("xf/action.js","content-vote");b("xf/action.js","copy-to-clipboard");b("xf/action.js","draft");b("xf/action.js","draft-trigger");b("xf/action.js","focus-trigger");b("xf/action.js","poll-block");b("xf/action.js","preview");b("xf/action.js","push-cta");b("xf/action.js","push-toggle");b("xf/action.js","reaction");b("xf/action.js","share-input");b("xf/action.js","attribution","click");b("xf/action.js","like","click");b("xf/action.js","switch", "click");b("xf/action.js","switch-overlay","click");b("xf/form.js","ajax-submit");b("xf/form.js","asset-upload");b("xf/form.js","auto-submit");b("xf/form.js","change-submit");b("xf/form.js","check-all");b("xf/form.js","checkbox-select-disabler");b("xf/form.js","desc-loader");b("xf/form.js","disabler");b("xf/form.js","emoji-completer");b("xf/form.js","field-adder");b("xf/form.js","form-submit-row");b("xf/form.js","guest-username");b("xf/form.js","input-validator");b("xf/form.js","min-length");b("xf/form.js", "password-hide-show");b("xf/form.js","select-plus");b("xf/form.js","textarea-handler");b("xf/form.js","user-mentioner");b("xf/form.js","submit","click");b("xf/structure.js","focus-inserter");b("xf/structure.js","responsive-data-list");b("xf/structure.js","tabs");b("xf/structure.js","toggle-storage");b("xf/structure.js","touch-proxy");b("xf/structure.js","video-init");b("xf/structure.js","duplicator","click");b("xf/structure.js","inserter","click");b("xf/structure.js","menu-proxy","click");b("xf/structure.js", "remover","click");b("xf/structure.js","shifter","click");b("xf/structure.js","toggle","click");b("xf/structure.js","comment-toggle","click");b("xf/structure.js","toggle-class","click");b("xf/tooltip.js","preview-tooltip");b("xf/tooltip.js","share-tooltip")},register:b,checkLazyRegistration:e=>{e in a&&(delete a[e],clearTimeout(c),c=setTimeout(()=>{XF.activate(m)},50))},loadLazyHandlers:e=>{const g=XF.config.url.js;if(g){var h=f(e);e=Object.keys(a).filter(k=>h.includes(k)?!1===a[k].loading:!1);e.length&& (e=e.map(k=>{k=a[k];k.loading=!0;k=k.minified&&!XF.config.fullJs?k.file.replace(".js",".min.js"):k.file;return g.replace("__SENTINEL__",k)+"_mt="+XF.config.jsMt[k]||""}).filter((k,l,p)=>p.indexOf(k)===l),XF.Loader.loadJs(e))}else console.error("No JS URL so cannot lazy-load JS")}}})();XF.ClassMapper=XF.create({_map:{},_toExtend:{},add(a,c){this._map[a]=c},extend(a,c){let b=this.getObjectFromIdentifier(a);b?(b=XF.extend(b,c),this._map[a]=b):(this._toExtend[a]||(this._toExtend[a]=[]),this._toExtend[a].push(c))}, getObjectFromIdentifier(a){let c=this._map[a];const b=this._toExtend[a];if(!c)return null;if("string"==typeof c){c=XF.classToConstructor(c);if(b){for(const f of b)c=XF.extend(c,f);delete this._toExtend[a]}this._map[a]=c}return c}});XF.ActionIndicator=(()=>{let a=0,c;const b=()=>{a++;1===a&&(c||(c=XF.createElement("span",{className:"globalAction",innerHTML:''},m.body)),c.classList.add("is-active"))}, f=()=>{a--;0{XF.on(m,"xf:action-start",b);XF.on(m,"xf:action-stop",f)},show:b,hide:f}})();XF.StyleVariation=(()=>{const a=()=>{const e=m.querySelector("html").dataset.variation;return e?e:q.matchMedia("(prefers-color-scheme: dark)").matches&&XF.config.style.dark?XF.config.style.dark:q.matchMedia("(prefers-color-scheme: light)").matches&&XF.config.style.light?XF.config.style.light:"default"},c=m.documentElement;let b=!1;const f=e=> {b=!1;const {variation:g,colorScheme:h,icon:k,properties:l}=e,p=a();g?c.setAttribute("data-variation",g):c.removeAttribute("data-variation");h?c.setAttribute("data-color-scheme",h):c.removeAttribute("data-color-scheme");d(l.metaThemeColor);var n=m.querySelectorAll("picture[data-variations]");for(var t of n){n=XF.createElement("picture");const x=JSON.parse(t.dataset.variations);var w=t.querySelector("img");w={properties:{},attributes:{width:w.getAttribute("width"),height:w.getAttribute("height"),alt:w.getAttribute("alt")}}; if(""!==g)w.properties.src=x[g][1],x[g][2]&&(w.properties.srcset=`${x[g][2]} 2x`);else{var v=XF.config.style.defaultColorScheme;const r="dark"===v?"light":"dark";v=XF.config.style[v];const u=XF.config.style[r];for(const [y,z]of Object.entries(x))if(y===v)w.properties.src=z[1],z[2]&&(w.properties.srcset=`${z[2]} 2x`);else if(y===u&&(z[1]!==x[v][1]||z[2]!==x[v][2])){const A=XF.createElement("source",{srcset:`${z[1]}${z[2]?`, ${z[2]} 2x`:""}`,media:`(prefers-color-scheme: ${r})`});n.prepend(A)}}n.append(XF.createElement("img", w));t.innerHTML="";t.append(...n.childNodes)}(t=m.querySelector(".js-styleVariationsMenu"))&&XF.trigger(t,"menu:close");(t=m.querySelector(".js-styleVariationsLink"))&&k&&(t=t.querySelector("i.fa--xf"))&&(n=XF.createElementFromString(XF.Icon.getIcon("default",k)),t.replaceWith(n));if(t=m.querySelector(".js-styleVariationsMenu")){t=t.querySelectorAll(".menu-linkRow");for(const x of t)x.dataset.variation===g?x.classList.add("is-selected"):x.classList.remove("is-selected")}e=XF.customEvent("xf:variation-change", {oldVariation:p,newVariation:g,data:e});XF.trigger(m,e)},d=e=>{if(e){var g=m.querySelector("head");g.querySelectorAll("meta[name=theme-color]").forEach(h=>h.remove());if("object"!==typeof e)XF.createElement("meta",{name:"theme-color",content:e},g);else for(const h in e)XF.createElement("meta",{name:"theme-color",media:`(prefers-color-scheme: ${h})`,content:e[h]},g)}};return{getVariation:a,getColorScheme:()=>{const e=m.querySelector("html").dataset.colorScheme;if(e)return e;if(q.matchMedia("(prefers-color-scheme: dark)").matches&& XF.config.style.dark)return"dark";let g;return null!=(g=XF.config.style.defaultColorScheme)?g:"light"},updateVariation:e=>{if(!b){b=!0;var g="admin"===m.querySelector("html").dataset.app?"admin.php?account/style-variation":"index.php?misc/style-variation";e=e?{variation:e}:{reset:1};XF.ajax("GET",XF.canonicalizeUrl(g),e,f,{skipDefault:!0})}}}})();XF.Icon=(()=>{const a=/]*viewBox="(?[^"]+)"[^>]*>.*?(?:.*<\/defs>)?(?(?:]*\/>)+)<\/svg>/i,c=(h,k,l,p)=>{l=void 0!== l?l:"";l=`${d(h)} ${e(k)} ${l}`;return`${p}`},b=(h,k)=>{h=g(h);k=k.replace(/^fa-/,"");return XF.config.url.icon.replace("__VARIANT__",h).replace("__NAME__",k)},f=(h,k)=>{h=g(h);k=k.replace(/^fa-/,"");return XF.config.url.iconInline.replace("__VARIANT__",h).replace("__NAME__",k)},d=h=>{let k="far";h=g(h);switch(h){case "light":k="fal";break;case "regular":k="far";break;case "solid":k="fas";break;case "duotone":k="fad";break;case "brands":k="fab"}return k},e=h=>{h=h.replace(/^fa-/, "");return`fa-${h}`},g=h=>{let k="regular";"default"===h&&(h=XF.config.fontAwesomeWeight);switch(h){case 300:case "l":case "fal":case "light":k="light";break;case 400:case "r":case "far":case "regular":k="regular";break;case 900:case "s":case "fas":case "solid":k="solid";break;case "d":case "fad":case "duotone":k="duotone";break;case "b":case "fab":case "brands":k="brands"}return k};return{ICON_DATA_REGEX:a,ICON_CLASS_REGEX:/^fa-(?!-)(?[a-z0-9-]+)$/i,ICON_CLASS_BLOCKLIST_REGEX:/^fa-(xs|sm|lg|\d+x|fw|ul|li|rotate-\d+|flip-(horizontal|vertical|both)|spin|pulse|border|pull-(left|right)|stack(-\dx)?|inverse)$/i, getIcon:(h,k,l,p)=>{const n=b(h,k);return c(h,k,l,` ${p?`${p}`:""} `)},getInlineIcon:async(h,k,l,p)=>{var n=f(h,k);n=await fetch(n,{headers:{Accept:"image/svg+xml"}});if(!n.ok)throw Error("Inline icon could not be fetched.");n=(await n.text()).match(a);if(!n)throw Error("Icon did not match expected format.");n=n.groups;return c(h,k,l,` ${p?`${p}`:""} ${n.icon} `)},getIconUrl:b,getStandaloneIconUrl:f,getVariantClass:d,getIconClass:e,normalizeIconVariant:g,normalizeIconName:h=>h.replace(/^fa-/,"")}})();XF.DynamicDate=(()=>{let a,c,b,f,d,e,g=!1,h;const k=()=>{h=setInterval(()=>{p(m)},2E4)},l=()=>{if(!g){g=!0;var t=XF.config.time;a=XF.getLocalLoadTime();c=t.now;b=t.today;f=t.yesterday;d=t.tomorrow;e=t.week;void 0!==m.hidden?(m.hidden||k(),XF.on(m,"visibilitychange",()=>{m.hidden?clearInterval(h):(k(),p(m))})):k()}},p=t=>{g||l();t=t.querySelectorAll("time[data-timestamp]"); const w=t.length,v=Math.floor((new Date).getTime()/1E3)-a,x=new Date;let r,u;let y,z;x.setHours(0,0,0,0);c+v>d&&(x.getDay(),d=n(x,1),b=n(x,0),f=n(x,-1),e=n(x,-6));for(let D=0;Du){var A=z-(c+v);60>A?"futureMoment"!==y&&(r.textContent=XF.phrase("in_a_moment"),r.xfDynType="futureMoment"):120>A?"futureMinute"!==y&&(r.textContent=XF.phrase("in_a_minute"),r.xfDynType="futureMinute"):3600>A?(A=Math.floor(A/60),y!== "futureMinutes"+A&&(r.textContent=XF.phrase("in_x_minutes",{"{minutes}":A}),r.xfDynType="futureMinutes"+A)):zA||(r.getAttribute("data-full-date")?r.textContent=XF.phrase("date_x_at_time_y",{"{date}":r.getAttribute("data-date"),"{time}":r.getAttribute("data-time")}): r.textContent=r.getAttribute("data-date")),r.xfDynType="future")}else 60>=u?"moment"!==y&&(r.textContent=XF.phrase("a_moment_ago"),r.xfDynType="moment"):120>=u?"minute"!==y&&(r.textContent=XF.phrase("one_minute_ago"),r.xfDynType="minute"):3600>u?(A=Math.floor(u/60),y!=="minutes"+A&&(r.textContent=XF.phrase("x_minutes_ago",{"{minutes}":A}),r.xfDynType="minutes"+A)):z>=b?"today"!==y&&(r.textContent=XF.phrase("today_at_x",{"{time}":r.getAttribute("data-time")}),r.xfDynType="today"):z>=f?"yesterday"!== y&&(r.textContent=XF.phrase("yesterday_at_x",{"{time}":r.getAttribute("data-time")}),r.xfDynType="yesterday"):z>=e?"week"!==y&&(r.textContent=XF.phrase("day_x_at_time_y",{"{day}":XF.phrase("day"+(new Date(1E3*z)).getDay()),"{time}":r.getAttribute("data-time")}),r.xfDynType="week"):"old"!==y&&(r.getAttribute("data-full-date")?r.textContent=XF.phrase("date_x_at_time_y",{"{date}":r.getAttribute("data-date"),"{time}":r.getAttribute("data-time")}):r.textContent=r.getAttribute("data-date"),r.xfDynType= "old");3600>u?r.setAttribute("data-short",XF.phrase("short_date_x_minutes",{"{minutes}":Math.floor(u/60)})):86400>u?r.setAttribute("data-short",XF.phrase("short_date_x_hours",{"{hours}":Math.floor(u/3600)})):2592E3>u&&r.setAttribute("data-short",XF.phrase("short_date_x_days",{"{days}":Math.floor(u/86400)}))}},n=(t,w)=>Math.floor((new Date(t.valueOf())).setFullYear(t.getFullYear(),t.getMonth(),t.getDate()+w)/1E3);return{initialize:l,refresh:p}})();XF.KeepAlive=(()=>{let a,c,b=!1,f;const d=()=>{let l= 3E3+(Math.floor(241*Math.random())+-120);120>l&&(l=120);f&&clearInterval(f);f=setInterval(h,1E3*l)};let e=0,g;const h=()=>{b&&(!1===q.navigator.onLine&&(e++,5>=e&&(g=setTimeout(h,30))),e=0,clearTimeout(g),fetch(XF.canonicalizeUrl(a),{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json","X-Requested-With":"XMLHttpRequest"},body:JSON.stringify({_xfResponseType:"json",_xfToken:XF.config.csrf}),cache:"no-store"}).then(l=>{if(!l.ok)throw Error("Network response was not ok."); return l.json()}).then(l=>{"ok"===l.status&&(k(l),XF.CrossTab.trigger(c,l))}))},k=l=>{l.csrf&&(XF.config.csrf=l.csrf,m.querySelectorAll("input[name=_xfToken]").forEach(p=>p.value=l.csrf));if("undefined"!==typeof l.user_id){const p=m.querySelector(".js-activeUserChangeMessage");l.user_id===XF.config.userId||p||XF.addFixedMessage(XF.phrase("active_user_changed_reload_page"),{class:"js-activeUserChangeMessage"});l.user_id===XF.config.userId&&p&&p.remove()}d()};return{initialize:()=>{if(!b&&XF.config.url.keepAlive&& XF.config.url.keepAlive.length){b=!0;a=XF.config.url.keepAlive;c="keepAlive"+XF.stringHashCode(a);d();XF.CrossTab.on(c,k);if(q.performance&&q.performance.getEntriesByType){var l=q.performance.getEntriesByType("navigation")[0];l&&(l=l.type,"navigate"!==l&&"reload"!==l||XF.CrossTab.trigger(c,{csrf:XF.config.csrf,time:XF.config.time.now,user_id:XF.config.userId}))}XF.Cookie.get("csrf")||h()}},refresh:h}})();XF.History=(()=>{const a=q.history;let c=a.state,b=q.location.href;const f=[];return{initialize:()=> {XF.on(q,"popstate",d=>{d=d.state;let e=!1;for(const g of f)g(d,c,b)&&(e=!0);e||b.replace(/#.*$/,"")===q.location.href.replace(/#.*$/,"")||q.location.reload();c=d;b=q.location.href})},handle:d=>{f.push(d)},push:(d,e,g)=>{a.pushState(d,e,g);c=d;b=q.location.href},replace:(d,e,g)=>{a.replaceState(d,e,g);c=d;b=q.location.href},go:d=>{a.go(d)}}})();XF.PullToRefresh=(()=>({initialize:()=>{XF.isIOS()&&XF.Feature.has("displaymodestandalone")&&"public"===XF.getApp()&&XF.loadScript(XF.canonicalizeUrl("js/vendor/boxfactura/pulltorefresh.min.js"), ()=>{PullToRefresh.init({classPrefix:"iosRefresh-",distReload:70,iconArrow:XF.Icon.getIcon("default","fa-arrow-down","fa-2x"),iconRefreshing:XF.Icon.getIcon("default","fa-spinner-third","fa-2x fa-spin"),instructionsPullToRefresh:XF.phrase("pull_down_to_refresh"),instructionsReleaseToRefresh:XF.phrase("release_to_refresh"),instructionsRefreshing:XF.phrase("refreshing"),onRefresh(){q.location.reload()}})})}}))();XF.LinkWatcher=(()=>{const a=b=>{const f=b.currentTarget,d=f.getAttribute("data-proxy-href"), e=f.getAttribute("data-proxy-handler-last");!d||e&&e===b.timeStamp||(f.setAttribute("data-proxy-handler-last",b.timeStamp.toString()),fetch(XF.canonicalizeUrl(d),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({_xfResponseType:"json",referrer:q.location.href.replace(/#.*$/,"")}),cache:"no-store"}).catch(()=>{}))},c=b=>{if(XF.config.enableRtnProtect&&!b.defaultPrevented){var f=b.currentTarget,d=f.getAttribute("href"),e=f.getAttribute("data-blank-handler-last");if(d&& (!d.match(/^[a-z]:/i)||d.match(/^https?:/i))&&!f.matches("[data-fancybox]")){if(f.matches("[rel~=noopener]")){var g=XF.browser;if(g.chrome&&49<=g.version||g.mozilla&&52<=g.version||g.safari&&11<=g.version)return}if(!(f.closest("[contenteditable=true]")||(d=XF.canonicalizeUrl(d),(new RegExp("^[a-z]+://"+location.host+"(/|$|:)","i")).test(d)||e&&e===b.timeStamp||(f.setAttribute("data-blank-handler-last",b.timeStamp),g=navigator.userAgent,f=-1!==g.indexOf("MSIE"),e=-1!==g.indexOf("Safari")&&-1===g.indexOf("Chrome"), g=-1!==g.indexOf("Gecko/"),b.shiftKey&&g||e&&(b.shiftKey||b.altKey)||f)))){if(e)f=XF.createElement("iframe",{style:{display:"none"}},m.body),e=f.contentDocument||f.contentWindow.document,e.__href=d,d=e.createElement("script"),d.textContent="window.opener=null;window.parent=null;window.top=null;window.frameElement=null;window.open(document.__href).opener = null;",e.body.appendChild(d),f.remove();else{d=q.open(d);try{d.opener=null}catch(h){}}b.preventDefault()}}}};return{initLinkProxy:()=>{m.querySelectorAll("a[data-proxy-href]:not(.link--internal)").forEach(b=> {XF.on(b,"click",a);XF.on(b,"focusin",f=>{f.currentTarget.getAttribute("data-proxy-handler")||(f.currentTarget.setAttribute("data-proxy-handler","true"),XF.on(f.currentTarget,"click",a))})})},initExternalWatcher:()=>{m.querySelectorAll("a[target=_blank]").forEach(b=>{XF.on(b,"click",c);XF.on(b,"focusin",f=>{f.currentTarget.getAttribute("data-blank-handler")||(f.currentTarget.setAttribute("data-blank-handler","true"),XF.on(f.currentTarget,"click",c))})})}}})();XF._IgnoredWatcher=XF.create({options:{container:"body", ignored:".is-ignored",link:".js-showIgnored"},container:null,authors:[],shown:!1,__construct(a){this.options=XF.extendObject(!0,{},this.options,a||{});this.container=a=m.querySelector(this.options.container);this.updateState();XF.on(a,"click",c=>{c.target.matches(this.options.link)&&this.show()})},refresh(a){this.container.contains(a)&&(this.shown?this.show():this.updateState())},updateState(){if(!this.shown){var a=this.getIgnored(),c=[];if(a.length)if(a.forEach(b=>{(b=b.dataset.author)&&!c.includes(b)&& c.push(b)}),c.length){const b={names:c.join(", ")};this.getLinks().forEach(f=>{const d=f.getAttribute("title");d&&(f.setAttribute("title",Mustache.render(d,b)),f.classList.remove("is-hidden"))})}else this.getLinks().forEach(b=>{b.removeAttribute("title");b.classList.remove("is-hidden")})}},getIgnored(){return Array.from(this.container.querySelectorAll(this.options.ignored))},getLinks(){return Array.from(this.container.querySelectorAll(this.options.link))},show(){this.shown=!0;this.getIgnored().forEach(a=> a.classList.remove("is-ignored"));this.getLinks().forEach(a=>a.classList.add("is-hidden"))},initializeHash(){if(q.location.hash){var a=q.location.hash.replace(/[^\w_#-]/g,"");if("#"!==a){a=m.getElementById(a);var c=this.options.ignored,b;a&&a.matches(c)?b=a:a&&(b=a.closest(c));b&&(b.classList.remove("is-ignored"),a.scrollIntoView(!0))}}}});XF.IgnoreWatcher=new XF._IgnoredWatcher;XF.BrowserWarning=(()=>({display:()=>{let a=!1;XF.browser.msie?a=!0:XF.browser.edge&&18>parseInt(XF.browser.version)&&(a= !0);const c=m.querySelector(".js-browserWarning");c&&(a?XF.display(c):c.remove())},hideJsWarning:()=>{const a=m.querySelector(".js-jsWarning");a&&a.remove()}}))();XF.MultiBar=XF.create({options:{role:null,focusShow:!1,className:"",fastReplace:!1},container:null,multiBar:null,shown:!1,__construct(a,c){this.options=XF.extendObject(!0,{},this.options,c||{});this.multiBar=XF.createElementFromString(a);this.multiBar.setAttribute("role",this.options.role||"dialog");this.multiBar.setAttribute("aria-hidden", "true");XF.on(this.multiBar,"multibar:hide",this.hide.bind(this));XF.on(this.multiBar,"multibar:show",this.show.bind(this));this.container=XF.createElementFromString('
');this.container.append(this.multiBar);this.container.classList.add(...this.options.className.split(" "));XF.uniqueId(this.container);XF.DataStore.set(this.container,"multibar",this);m.body.append(this.container);XF.activate(this.container);XF.MultiBar.cache[this.container.id]=this},show(){this.shown|| (this.shown=!0,this.multiBar.setAttribute("aria-hidden","false"),m.querySelector(".p-pageWrapper").classList.add("has-multiBar"),this.options.fastReplace&&(this.multiBar.style.transitionDuration="0s"),m.body.append(this.container),XF.Transition.addClassTransitioned(this.multiBar,"is-active",()=>{if(this.options.focusShow){const a=this.multiBar.querySelector(".js-multiBarClose");XF.autoFocusWithin(this.multiBar.find(".multiBar-content"),null,a)}XF.trigger(this.container,"multibar:shown");XF.layoutChange()}), this.options.fastReplace&&(this.multiBar.style.transitionDuration=""),XF.trigger(this.container,"multibar:showing"),XF.layoutChange())},hide(){this.shown&&(this.shown=!1,this.multiBar.setAttribute("aria-hidden","true"),XF.Transition.removeClassTransitioned(this.multiBar,"is-active",()=>{m.querySelector(".p-pageWrapper").classList.remove("has-multiBar");XF.trigger(this.container,"multibar:hidden");XF.layoutChange()}),XF.trigger(this.container,"multibar:hiding"),XF.layoutChange())},toggle(a){(null=== a?!this.shown:a)?this.show():this.hide()},destroy(){const a=this.container.getAttribute("id"),c=XF.MultiBar.cache;this.container.remove();XF.hasOwn(c,a)&&delete c[a]},on(a,c){XF.on(this.container,a,c)},getContainer(){return this.container},getMultiBar(){return this.multiBar}});XF.MultiBar.cache={};XF.showMultiBar=(a,c)=>{a=new XF.MultiBar(a,c);a.show();return a};XF.loadMultiBar=(a,c,b,f)=>{XF.isFunction(b)&&(b={init:b});b=XF.extendObject({cache:!1,beforeShow:null,afterShow:null,onRedirect:null,init:null, show:!0},b||{});const d=g=>{if(b.beforeShow){var h=XF.customEvent(void 0);h.cancelable=!0;b.beforeShow(g,h);if(h.defaultPrevented)return}b.show&&g.show();b.afterShow&&(h=XF.customEvent(void 0),h.cancelable=!0,b.afterShow(g,h))};if(b.cache&&XF.loadMultiBar.cache[a])d(XF.loadMultiBar.cache[a]);else{var e=g=>{if(g.redirect)if(b.onRedirect)b.onRedirect(g,e);else XF.ajax("get",g.redirect,h=>{e(h)});g.html&&XF.setupHtmlInsert(g.html,(h,k,l)=>{const p=new XF.MultiBar(XF.getMultiBarHtml({html:h,title:k.title|| k.h1}),f);b.init&&b.init(p);if(!b.cache)p.on("multibar:hidden",()=>{p.destroy()});l();b.cache&&(XF.loadMultiBar.cache[a]=p);d(p)})};return XF.ajax("post",a,c,g=>{e(g)})}};XF.loadMultiBar.cache={};XF.Overlay=XF.create({options:{backdropClose:!0,escapeClose:!0,focusShow:!0,className:""},container:null,overlay:null,shown:!1,__construct(a,c){this.options=XF.extendObject(!0,{},this.options,c||{});this.overlay=a;this.overlay.setAttribute("role",this.options.role||"dialog");this.overlay.setAttribute("aria-hidden", "true");this.container=XF.createElementFromString('
');this.container.append(this.overlay);this.options.className&&this.container.classList.add(...this.options.className.split(" "));XF.uniqueId(this.container);XF.DataStore.set(this.container,"overlay",this);if(this.options.escapeClose)XF.on(this.container,"keydown.overlay",b=>{"Escape"===b.key&&this.hide()});this.options.backdropClose&&(XF.on(this.container,"mousedown",b=>{XF.DataStore.set(this.container,"block-close", !1);b.target!==this.container&&XF.DataStore.set(this.container,"block-close",!0)}),XF.on(this.container,"click",b=>{b.target===this.container&&(XF.DataStore.get(this.container,"block-close")||this.hide());XF.DataStore.set(this.container,"block-close",!1)}));XF.onDelegated(this.container,"click",".js-overlayClose",()=>this.hide());m.body.append(this.container);XF.activate(this.container);XF.Overlay.cache[this.container.getAttribute("id")]=this;XF.on(this.overlay,"overlay:hide",this.hide.bind(this)); XF.on(this.overlay,"overlay:show",this.show.bind(this))},show(){this.shown||(this.shown=!0,this.overlay.setAttribute("aria-hidden","false"),m.body.append(this.container),XF.Transition.addClassTransitioned(this.container,"is-active",()=>{if(this.options.focusShow){const a=this.overlay.querySelector(".js-overlayClose");XF.autoFocusWithin(this.overlay.querySelector(".overlay-content"),null,a)}XF.trigger(this.container,"overlay:shown");XF.layoutChange()}),XF.trigger(this.container,"overlay:showing"), XF.ModalOverlay.open(),XF.layoutChange())},hide(){this.shown&&(this.shown=!1,this.overlay.setAttribute("aria-hidden","true"),XF.Transition.removeClassTransitioned(this.container,"is-active",()=>{XF.trigger(this.container,"overlay:hidden");XF.ModalOverlay.close();XF.layoutChange()}),XF.trigger(this.container,"overlay:hiding"),XF.layoutChange())},recalculate(){this.shown&&XF.Modal.updateScrollbarPadding()},toggle(){this.shown?this.hide():this.show()},destroy(){const a=this.container.getAttribute("id"), c=XF.Overlay.cache;this.container.remove();XF.hasOwn(c,a)&&delete c[a]},on(a,c){XF.on(this.container,a,c)},getContainer(){return this.container},getOverlay(){return this.overlay}});XF.Overlay.cache={};XF.ModalOverlay=(()=>{let a=0;const c=m.body;return{getOpenCount:()=>a,open:()=>{XF.Modal.open();a++;1==a&&c.classList.add("is-modalOverlayOpen")},close:()=>{XF.Modal.close();0{let a=0;const c=m.body,b=m.querySelector("html"), f=()=>{let d="right";const e=c.classList.contains("is-modalOpen")?XF.measureScrollBar()+"px":"";XF.isRtl()&&(XF.browser.chrome||XF.browser.mozilla||(d="left"));b.style["margin-"+d]=e};return{getOpenCount:()=>a,open:()=>{a++;1==a&&(c.classList.add("is-modalOpen"),f())},close:()=>{0{a=new XF.Overlay(a,c);a.show();return a};XF.loadOverlay=(a,c,b)=>{XF.isFunction(c)&&(c={init:c});c=XF.extendObject({cache:!1, beforeShow:null,afterShow:null,onRedirect:null,ajaxOptions:{},init:null,show:!0},c||{});const f=e=>{if(c.beforeShow){var g=XF.customEvent("overlay:before-show");c.beforeShow(e,g);if(g.defaultPrevented)return}c.show&&e.show();c.afterShow&&(g=XF.customEvent("overlay:after-show"),c.afterShow(e,g))};if(c.cache&&XF.loadOverlay.cache[a])f(XF.loadOverlay.cache[a]);else{var d=e=>{if(e.redirect)if(c.onRedirect)c.onRedirect(e,d);else XF.ajax("get",e.redirect,g=>d(g));e.html&&XF.setupHtmlInsert(e.html,(g,h, k)=>{const l=new XF.Overlay(XF.getOverlayHtml({html:g,title:h.title||h.h1,url:XF.canonicalizeUrl(a)}),b);c.init&&c.init(l);if(!c.cache)l.on("overlay:hidden",()=>l.destroy());k();c.cache&&(XF.loadOverlay.cache[a]=l);f(l)})};return XF.ajax("get",a,{},e=>{d(e)},c.ajaxOptions)}};XF.loadOverlay.cache={};XF.NavDeviceWatcher=(()=>{let a=!0;const c=b=>{b!=a&&(m.querySelector("html").classList.toggle("has-pointer-nav",!b),a=b)};return{initialize:()=>{XF.on(m,"mousedown",()=>c(!1),{passive:!0});XF.on(m,"keydown", b=>{switch(b.key){case "Tab":case "Enter":c(!0)}},{passive:!0})},toggle:c,isKeyboardNav:()=>a}})();XF.ScrollButtons=(()=>{let a=null,c=!1,b=!1,f=!1,d=q.scrollY||m.documentElement.scrollTop,e=null,g=null,h,k=null;const l=r=>{if(!c){r=q.scrollY||m.documentElement.scrollTop;var u=d;d=r;if(r>u)"down"!=e&&(e="down",g=u);else if(rd){h&&(h.cancel(),h=null);return}if(30>g-r)return}h||(h=XF.requestAnimationTimeout(()=>{h=null;p();t()},200))}},p=()=> {f||(XF.Transition.addClassTransitioned(k,"is-active"),f=!0)},n=()=>{f&&(XF.Transition.removeClassTransitioned(k,"is-active"),f=!1)},t=()=>{clearTimeout(a);a=setTimeout(()=>n(),3E3)},w=()=>{clearTimeout(a);p()},v=()=>clearTimeout(a),x=r=>{r=r.target;r.matches(".button--scroll")&&r.closest(".button--scroll")&&(c=!0,setTimeout(()=>{c=!1},500),n())};return{initialize:()=>{if(k&&k.length)return!1;k=m.querySelector(".js-scrollButtons");if(!k)return!1;"up"===k.dataset.triggerType&&(b=!0);XF.on(k,"mouseenter", w);XF.on(k,"focus",w);XF.on(k,"mouseleave",v);XF.on(k,"blur",v);XF.on(k,"click",x);XF.on(q,"scroll",l,{passive:!0});return!0},show:p,hide:n,startHideTimer:t,clearHideTimer:()=>clearTimeout(a)}})();XF.NavButtons=(()=>{let a=null,c=!1,b=!1,f=null;const d=n=>{c||XF.requestAnimationTimeout(()=>{g();h()},200)},e=()=>{b||(f.forEach(n=>{XF.Transition.addClassTransitioned(n,"is-active")}),b=!0)},g=()=>{b&&(f.forEach(n=>{XF.Transition.removeClassTransitioned(n,"is-active")}),b=!1)},h=()=>{clearTimeout(a); a=setTimeout(()=>e(),500)},k=()=>{clearTimeout(a);e()},l=()=>{clearTimeout(a)},p=n=>{n=n.target;if(n.classList.contains("button--scroll")||n.closest(".button--scroll"))c=!0,setTimeout(()=>{c=!1},500),q.history.back(),g()};return{initialize:()=>{if(XF.Feature.has("displaymodestandalone")){if(f)return!1;f=m.querySelectorAll(".js-navButtons");if(!f)return!1;f.forEach(n=>{XF.on(n,"mouseenter focus",k);XF.on(n,"mouseleave blur",l);XF.on(n,"click",p)});XF.on(q,"scroll",d,{passive:!0});1{clearTimeout(a)}}})();XF.KeyboardShortcuts=(()=>{const a={},c=e=>{Array.isArray(e)?e.forEach(g=>c(g)):(e instanceof Element&&e.matches("[data-xf-key]")&&b(e),e.querySelectorAll("[data-xf-key]").forEach(g=>b(g)))},b=e=>{const g=String(e.dataset.xfKey),h=g.substr(g.lastIndexOf("+")+1),k="#"===h[0]?h.substr(1):h.toUpperCase().charCodeAt(0);var l=g.toUpperCase().split("+");var p=-1!==l.indexOf("CTRL");var n=-1!==l.indexOf("ALT");l=-1!== l.indexOf("META");(p=p?1:n?2:l?4:0)?XF.Keyboard.isStandardKey(k)?(a[k]=a[k]||{},a[k][p]=e):console.warn("It is not possible to specify a keyboard shortcut using this key combination (%s)",g):a[h]=e},f=e=>{switch(e.key){case "Escape":XF.MenuWatcher.closeAll();XF.hideTooltips();return;case "Shift":case "Control":case "Alt":case "Meta":return}if(XF.Keyboard.isShortcutAllowed(m.activeElement)&&(!XF.hasOwn(a,e.key)||0!=(e.ctrlKey?1:e.altKey?2:e.metaKey?4:0)||!d(a[e.key]))&&XF.hasOwn(a,e.which)){const g= e.ctrlKey?1:e.altKey?2:e.metaKey?4:0;XF.hasOwn(a[e.which],g)&&d(a[e.which][g])}},d=e=>e?(XF.NavDeviceWatcher.toggle(!0),XF.isElementVisible(e)||e.scrollIntoView(!0),e.matches(XF.getKeyboardInputs())?XF.autofocus(e):(e.matches("a[href]"),e.click()),!0):!1;return{initialize:()=>XF.on(m.body,"keyup",f,{passive:!0}),initializeElements:c}})();XF.Keyboard={isShortcutAllowed:a=>{switch(a.tagName){case "TEXTAREA":case "SELECT":return!1;case "INPUT":switch(a.type){case "checkbox":case "radio":case "submit":case "reset":return!0; default:return!1}case "BODY":return!0;default:return XF.browser.msie&&a.closest(".fr-element")?!1:"true"===a.contentEditable?!1:!0}},isStandardKey:a=>48<=a&&90>=a};XF.FormInputValidation=(()=>{let a={};const c=d=>{Array.isArray(d)?d.forEach(e=>c(e)):(d instanceof Element&&d.matches("form")&&f(d),d.querySelectorAll("form").forEach(e=>f(e)))},b=()=>{a.length&&a.forEach(d=>f(d))},f=d=>{d.querySelectorAll("input, textarea, select, button").forEach(e=>{XF.on(e,"invalid",g=>{a:{const {form:h,input:k}={event:g, form:d,input:e};g=h.querySelector(":invalid");if(k===g){if(XF.isElementVisible(k)){g=void 0;break a}if(g=h.closest(".overlay-container.is-active")){const l=k.getBoundingClientRect(),p=g.getBoundingClientRect();g.scrollTop=l.top-p.top+g.scrollTop-100}else k.scrollIntoView(),q.scrollBy(0,-100)}g=void 0}return g})})};return{initialize:()=>{a=Array.from(m.querySelectorAll("form:not([novalidate])"));b()},initializeElements:c}})();XF.NoticeWatcher=(()=>({getBottomFixerNoticeHeight:()=>{let a=0;m.querySelectorAll(".js-bottomFixTarget .notices--bottom_fixer .js-notice").forEach(c=> {"none"!==q.getComputedStyle(c).display&&(a+=c.offsetHeight)});return a}}))();XF.PWA=(()=>{let a=null,c,b=!0,f=null;const d=()=>{let n=XF.config.serviceWorkerPath;null===n&&(n="service_worker.js");return n&&n.length?XF.canonicalizeUrl(n):null},e=()=>navigator.standalone||q.matchMedia("(display-mode: standalone), (display-mode: minimal-ui)").matches,g=()=>{b&&(XF.ActionIndicator.show(),f=setTimeout(()=>XF.ActionIndicator.hide(),3E4))},h=n=>{n.persisted&&(XF.ActionIndicator.hide(),clearTimeout(f))}, k=()=>{b=!1;setTimeout(()=>{b=!0},2E3)},l=(n,t)=>{if(navigator.serviceWorker.controller)if("string"!==typeof n||""===n)console.error("Invalid message type:",n);else{if("undefined"===typeof t)t={};else if("object"!==typeof t||null===t){console.error("Invalid message payload:",t);return}navigator.serviceWorker.controller.postMessage({type:n,payload:t})}else console.error("There is no active service worker")},p={};return{initialize:()=>{XF.PWA.isSupported()&&(XF.config.skipServiceWorkerRegistration? c=new Promise((n,t)=>{t(Error("Service worker registration has been skipped"))}):(c=navigator.serviceWorker.register(d()),c.then(n=>{n=n.active?!1:!0;var t=XF.config.cacheKey;XF.LocalStorage.get("cacheKey")!==t&&(n||l("updateCache"),XF.LocalStorage.set("cacheKey",t,!0))}),c.catch(n=>{console.error("Service worker registration failed:",n)}),navigator.serviceWorker.getRegistrations().then(n=>{const t=XF.canonicalizeUrl("js/xf/");for(const w in n)n[w].scope==t&&n[w].unregister()}),XF.on(navigator.serviceWorker, "message",n=>{var t=n.data;if("object"!==typeof t||null===t)console.error("Invalid message:",t);else if(n=t.type,t=t.payload,"string"!==typeof n||""===n)console.error("Invalid message type:",n);else if("object"!==typeof t||null===t)console.error("Invalid message payload:",t);else{var w=p[n];"undefined"===typeof w?console.error("No handler available for message type:",n):w(t)}}),e()&&(XF.on(q,"beforeunload",g),XF.on(q,"pageshow",h),XF.on(m,"click",n=>{n.target.matches(".js-skipPwaNavIndicator")&&k(n)}))))}, isSupported:()=>{null===a&&(a=!!("serviceWorker"in navigator&&d()));return a},isRunning:e,inhibitNavigationIndicator:k,getRegistration:()=>c,sendMessage:l}})();XF.Push=(()=>{const a=(e,g)=>{XF.PWA.getRegistration().then(()=>{c();e&&e()}).catch(()=>{g&&g()})},c=()=>{XF.PWA.getRegistration().then(e=>e.pushManager.getSubscription()).then(e=>{XF.Push.isSubscribed=null!==e;XF.Push.isSubscribed?(XF.trigger(m,"push:init-subscribed"),XF.config.userId&&d(e)?XF.Push.updateUserSubscription(e,"update"):(e.unsubscribe(), XF.Push.updateUserSubscription(e,"unsubscribe"))):XF.trigger(m,"push:init-unsubscribed")})};let b=null;const f=e=>{var g="=".repeat((4-e.length%4)%4);e=(e+g).replace(/-/g,"+").replace(/_/g,"/");e=q.atob(e);g=new Uint8Array(e.length);for(let h=0;h{e instanceof PushSubscription&&(e=e.options.applicationServerKey);if("string"===typeof e)return XF.config.pushAppServerKey===e;e.buffer&&e.BYTES_PER_ELEMENT&&(e=e.buffer);if(!(e instanceof ArrayBuffer))throw Error("input must be an array buffer or convertable to it"); var g=f(XF.config.pushAppServerKey).buffer;const h=g.byteLength;if(h!==e.byteLength)return!1;g=new DataView(g);e=new DataView(e);for(let k=0;k{XF.Push.isSupported()&&(XF.config.skipPushNotificationSubscription||a())},registerWorker:a,getPushHistoryUserIds:()=>XF.LocalStorage.getJson("push_history_user_ids")||{},setPushHistoryUserIds:e=>{XF.LocalStorage.setJson("push_history_user_ids",e||{})},hasUserPreviouslySubscribed:e=> {const g=XF.Push.getPushHistoryUserIds();return XF.hasOwn(g,e||XF.config.userId)},addUserToPushHistory:e=>{const g=XF.Push.getPushHistoryUserIds();g[e||XF.config.userId]=!0;XF.Push.setPushHistoryUserIds(g)},removeUserFromPushHistory:e=>{const g=XF.Push.getPushHistoryUserIds();delete g[e||XF.config.userId];XF.Push.setPushHistoryUserIds(g)},handleUnsubscribeAction:(e,g)=>{XF.Push.isSubscribed&&XF.PWA.getRegistration().then(h=>h.pushManager.getSubscription()).then(h=>{if(h)return b=h,h.unsubscribe()}).catch(h=> {console.error("Error unsubscribing",h);g&&g()}).then(()=>{b&&XF.Push.updateUserSubscription(b,"unsubscribe");XF.Push.isSubscribed=!1;e&&e()})},handleSubscribeAction:(e,g,h)=>{XF.Push.isSubscribed||Notification.requestPermission().then(k=>{if("granted"!==k)console.error("Permission was not granted");else{var l=XF.Push.base64ToUint8(XF.config.pushAppServerKey);XF.PWA.getRegistration().then(p=>{p.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:l}).then(n=>{XF.Push.updateUserSubscription(n, "insert");XF.Push.isSubscribed=!0;n={body:XF.phrase("push_enable_notification_body"),dir:XF.isRtl()?"rtl":"ltr"};XF.config.publicMetadataLogoUrl&&(n.icon=XF.config.publicMetadataLogoUrl);XF.config.publicPushBadgeUrl&&(n.badge=XF.config.publicPushBadgeUrl);e||p.showNotification(XF.phrase("push_enable_notification_title"),n);XF.config.userId&&XF.Push.addUserToPushHistory();g&&g()}).catch(n=>{console.error("Failed to subscribe the user: ",n);h&&h()})})}})},handleToggleAction:(e,g,h,k)=>{XF.Push.isSubscribed? XF.Push.handleUnsubscribeAction(e,g):XF.Push.handleSubscribeAction(!1,h,k)},updateUserSubscription:(e,g)=>{if(("update"!==g||!XF.Cookie.get("push_subscription_updated"))&&"public"===XF.getApp()&&"public"===XF.getApp()){var h=e.getKey("p256dh"),k=e.getKey("auth"),l=(PushManager.supportedContentEncodings||["aesgcm"])[0];e={endpoint:e.endpoint,key:h?btoa(String.fromCharCode.apply(null,new Uint8Array(h))):null,token:k?btoa(String.fromCharCode.apply(null,new Uint8Array(k))):null,encoding:l,unsubscribed:"unsubscribe"=== g?1:0,_xfResponseType:"json",_xfToken:XF.config.csrf};fetch(XF.canonicalizeUrl("index.php?misc/update-push-subscription"),{method:"POST",headers:{"Content-Type":"application/json","X-Requested-With":"XMLHttpRequest"},body:JSON.stringify(e),cache:"no-store"}).then(p=>{if(!p.ok)throw Error("Network response was not ok.");return p.json()}).then(()=>{"update"===g&&XF.Cookie.set("push_subscription_updated","1")}).catch(p=>{console.error("Error:",p)})}},isSupported:()=>XF.PWA.isSupported()&&XF.config.enablePush&& XF.config.pushAppServerKey&&"public"===XF.getApp()&&"PushManager"in q&&"Notification"in q,base64ToUint8:f,isExpectedServerKey:d}})();XF.ExpandableContent=(()=>{const a=c=>{c.querySelectorAll(".js-expandWatch:not(.is-expanded)").forEach(b=>{const f=b.querySelector(".js-expandContent");if(f){var d,e=0,g=()=>{const h=f.scrollHeight,k=f.offsetHeight;0==h||0==k?2E3k+1?b.classList.add("is-expandable"):b.classList.remove("is-expandable")};g();if(!XF.DataStore.get(b, "expand-check-triggered")&&(XF.DataStore.set(b,"expand-check-triggered",!0),b.querySelectorAll("img").forEach(h=>XF.on(h,"load",g,{once:!0})),q.MutationObserver)){let h,k,l=!0;const p=()=>{l=!1;g();setTimeout(()=>{l=!0},100)};h=new MutationObserver(n=>{b.classList.contains("is-expanded")?h.disconnect():l&&(k&&clearTimeout(k),k=setTimeout(p,200))});h.observe(b,{attributes:!0,childList:!0,subtree:!0})}}})};return{watch:()=>{XF.onDelegated(m,"click",".js-expandLink",c=>{XF.Transition.addClassTransitioned(c.target.closest(".js-expandWatch"), "is-expanded",XF.layoutChange)});XF.on(q,"resize",()=>a(m),{passive:!0});XF.on(m,"embed:loaded",()=>a(m))},checkSizing:a}})();XF.UnfurlLoader=(()=>{let a=[],c=!1,b=[];const f=async()=>{if(a.length&&!c){var d=async e=>{let g="";e=e.body.getReader();const h=new TextDecoder;for(;;){const {done:k,value:l}=await e.read();if(k){g.split("\n").filter(n=>0!==n.length).forEach(n=>{XF.UnfurlLoader.handleResponse(JSON.parse(n))});break}g+=h.decode(l);if(!g.includes("\n"))continue;const p=g.split("\n");g=p.pop(); p.filter(n=>0!==n.length).forEach(n=>{XF.UnfurlLoader.handleResponse(JSON.parse(n))})}};c=!0;try{const e=await fetch(XF.canonicalizeUrl("unfurl.php"),{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json","X-Requested-With":"XMLHttpRequest"},body:JSON.stringify({result_ids:a}),cache:"no-store"});if(!e.ok)throw Error("Network response was not ok.");d(e)}finally{a=[],c=!1,b&&(a=b,b=[],setTimeout(f,0))}}};return{activateContainer:d=>{d=d.querySelectorAll(".js-unfurl");d.length&& (d.forEach(e=>{"false"===e.dataset.pending||XF.DataStore.get(e,"pending-seen")||(XF.DataStore.set(e,"pending-seen",!0),e=e.dataset.resultId,c?b.push(e):a.push(e))}),f())},unfurl:f,handleResponse:d=>{const e=m.querySelector(`.js-unfurl[data-result-id="${d.result_id}"]`);e&&(d.success?XF.setupHtmlInsert(d.html,g=>{e.replaceWith(g)}):(d=e.querySelector(".js-unfurl-title a"),d.textContent=e.dataset.url,d.classList.add("bbCodePlainUnfurl"),d.classList.remove("fauxBlockLink-blockLink"),e.replaceWith(d)))}}})(); XF.Event=(()=>{const a=(d,e,g)=>{const h=d.dataset[XF.toCamelCase("xf-"+e)].split(" ")||[],k=XF.DataStore.get(d,"xf-"+e+"-handlers")||{};let l,p,n;for(n=0;n{d=String(d).toLowerCase();const e=(g,h)=>{h||(h=g.currentTarget);return!h||!h.getAttribute||h.matches("a")&&(g.ctrlKey||g.shiftKey||g.altKey||g.metaKey||1{const h=g.target.closest(`[data-xf-${d}]`);if(h&&e(g,h)){const k=XF.DataStore.get(h,"xfPointerType");g.xfPointerType=g.pointerType||k||"";a(h,d,g)}}),XF.on(m,"pointerdown",g=>{const h=g.target.closest(`[data-xf-${d}]`);h&&e(g,h)&&XF.DataStore.set(h,"xfPointerType",g.pointerType)},{passive:!0}))},initElement:a,getElementHandler:(d,e,g)=>{let h=XF.DataStore.get(`xf-${g}-handlers`);h||(h=XF.Event.initElement(d,g));return h&&h[e]?h[e]:null},register:(d,e,g)=>{XF.Event.watch(d);c.add(e, g);XF.LazyHandlerLoader.checkLazyRegistration(e)},extend:(d,e)=>{c.extend(d,e)},getObjectFromIdentifier:d=>c.getObjectFromIdentifier(d),newHandler:d=>XF.extend(f,d),AbstractHandler:f}})();XF.Element=(()=>{const a=new XF.ClassMapper,c=(d,e,g)=>{const h=XF.DataStore.get(d,"xf-element-handlers")||{};if(h[e])return h[e];const k=a.getObjectFromIdentifier(e);if(!k)return null;g=new k(d,g||{});h[e]=g;XF.DataStore.set(d,"xf-element-handlers",h);g.init();return g},b=d=>{if(d&&d.getAttribute){var e=d.getAttribute("data-xf-init"); if(e){e=e.split(" ");var g=e.length;for(let k=0;k{a.add(d,e);XF.LazyHandlerLoader.checkLazyRegistration(d)}, extend:(d,e)=>{a.extend(d,e)},getObjectFromIdentifier:d=>a.getObjectFromIdentifier(d),initialize:d=>{d.nodeType===Node.ELEMENT_NODE&&d.matches("[data-xf-init]")&&b(d);d.querySelectorAll("[data-xf-init]").forEach(b)},initializeElement:b,applyHandler:c,getHandler:(d,e)=>{let g=XF.DataStore.get(d,"xf-element-handlers");g||(b(d),g=XF.DataStore.get(d,"xf-element-handlers"));return g&&g[e]?g[e]:null},newHandler:d=>XF.extend(f,d),AbstractHandler:f}})();XF.AutoCompleteResults=XF.create({selectedResult:0, results:!1,scrollWatchers:null,resultsVisible:!1,resizeBound:!1,headerHtml:null,options:{},__construct(a){this.options=XF.extendObject({onInsert:null,clickAttacher:null,beforeInsert:null,insertMode:"text",displayTemplate:"{{{icon}}}{{{text}}}",wrapperClasses:""},a)},isVisible(){return this.resultsVisible},hideResults(){this.resultsVisible=!1;this.results&&XF.display(this.results,"none");this.stopScrollWatching()},stopScrollWatching(){this.scrollWatchers&&(this.scrollWatchers.forEach(a=>XF.off(a,"scroll.autocomplete")), this.scrollWatchers=null)},addHeader(a){this.headerHtml=a},showResults(a,c,b,f){if(c){this.results||(this.results=this.createResultWrapper());this.resultsVisible=!1;XF.display(this.results,"none");this.results.innerHTML="";for(const d of Object.values(c))c=this.createResultItem(d,a),this.results.append(c);this.results.children.length&&((a=this.createResultHeader())&&this.results.prepend(a),this.prepareResults(b,f),XF.display(this.results),this.resultsVisible=!0)}else this.hideResults()},createResultWrapper(){const a= XF.createElement("ul",{className:"autoCompleteList"});this.options.wrapperClasses&&a.classList.add(...this.options.wrapperClasses.split(" "));a.setAttribute("role","listbox");return a},createResultHeader(){return this.headerHtml?XF.createElement("li",{className:"menu-header menu-header--small",unselectable:"on",innerHTML:this.headerHtml}):null},createResultItem(a,c){const b=XF.createElement("li",{unselectable:"on",role:"option",style:{cursor:"pointer"}});b.innerHTML=Mustache.render(this.options.displayTemplate, this.getResultItemParams(a,c));XF.DataStore.set(b,"insertText","string"===typeof a?a:a.text);XF.DataStore.set(b,"insertHtml",a.html||"");XF.on(b,"mouseenter",this.resultMouseEnter.bind(this));if(this.options.clickAttacher)this.options.clickAttacher(b,this.resultClick.bind(this));else XF.on(b,"click",this.resultClick.bind(this));return b},getResultItemParams(a,c){const b={icon:"",text:"",desc:"",textPlain:"",descPlain:""};if("string"===typeof a)b.text=XF.htmlspecialchars(a);else if(b.text=XF.htmlspecialchars(a.text), "undefined"!==typeof a.desc&&(b.desc=XF.htmlspecialchars(a.desc)),"undefined"!==typeof a.icon?b.icon=XF.createElement("img",{className:"autoCompleteList-icon",src:XF.htmlspecialchars(a.icon)}):"undefined"!==typeof a.iconHtml&&(b.icon=XF.createElement("span",{className:"autoCompleteList-icon",innerHTML:a.iconHtml})),b.icon&&(b.icon=b.icon.outerHTML),a.extraParams)for(let [f,d]of Object.entries(a.extraParams))f=(a=f.match(/Html$/))?f.replace(/Html$/,""):f,d=a?d:XF.htmlspecialchars(d),b[f]=d;b.textPlain= b.text;b.descPlain=b.desc;b.text=this.highlightResultText(b.text,c);b.desc=this.highlightResultText(b.desc,c);return b},highlightResultText(a,c){c=new RegExp("("+XF.regexQuote(XF.htmlspecialchars(c))+")","i");return a.replace(c,b=>`${b}`)},prepareResults(a,c){this.results.connected||(m.body.append(this.results),XF.setRelativeZIndex(this.results,a,1));this.results.style.top="";this.results.style.left="";this.results.style.right="";this.results.style.bottom="";const b=(e,g)=>{XF.isFunction(g)&& (g=g(this.results,a));if(!g){g=a.getBoundingClientRect();var h=g.left+q.scrollX;g={top:g.top+q.scrollY+a.offsetHeight+"px",left:h+"px"};XF.isRtl()&&(g.right=m.documentElement.clientWidth-h-a.offsetWidth+"px",g.left="auto")}for(let k in g)e.style[k]=g[k];return g};this.stopScrollWatching();const f=[];let d=a.parentElement;for(;d;){const e=q.getComputedStyle(d);"scroll"!==e.overflowX&&"auto"!==e.overflowX||f.push(d);d=d.parentElement}f.length&&(f.forEach(e=>{XF.on(e,"scroll.autocomplete",()=>{b(this.results, c)})}),this.scrollWatchers=f);this.results.style.position="absolute";b(this.results,c);this.selectResult(0,!0)},resultClick(a){a.stopPropagation();this.insertResult(this.getResultText(a.currentTarget),a.currentTarget,a)&&this.hideResults()},resultMouseEnter(a){a=Array.from(a.currentTarget.parentNode.children).indexOf(a.currentTarget);this.selectResult(a,!0)},selectResult(a,c){if(this.results){var b=this.selectedResult=c?a:this.selectedResult+a;a=Array.from(this.results.children);a.forEach((f,d)=> {d==b?f.classList.add("is-selected"):f.classList.remove("is-selected")});if(0>b||b>=a.length)this.selectedResult=-1}},insertSelectedResult(a){let c;var b=!1;if(!this.resultsVisible)return!1;let f=!0;0<=this.selectedResult&&(c=this.results.children[this.selectedResult])&&(b=this.getResultText(c),this.options.beforeInsert&&(b=this.options.beforeInsert(b,c)),f=this.insertResult(b,c,a),b=!0);f&&this.hideResults();return b},insertResult(a,c,b){return this.options.onInsert?!1!==this.options.onInsert(a, c,b):!0},getResultText(a){let c;switch(this.options.insertMode){case "text":c=XF.DataStore.get(a,"insertText");break;case "html":c=XF.DataStore.get(a,"insertHtml")}return c}});XF.AutoCompleter=XF.create({options:{url:null,method:"GET",idleWait:200,minLength:2,at:"@",keepAt:!0,insertMode:"text",displayTemplate:"{{{icon}}}{{{text}}}",beforeInsert:null,suffixEd:"\u00a0",suffix:" "},input:null,ed:null,results:null,visible:!1,idleTimer:null,pendingQuery:"",__construct(a,c,b){this.options=XF.extendObject({}, this.options,c);this.input=a;this.ed=b;this.options.url?(("string"!=typeof this.options.at||1{this.insertResult(c)},beforeInsert:this.options.beforeInsert,insertMode:this.options.insertMode,displayTemplate:this.options.displayTemplate};this.ed&&(a.clickAttacher=(c,b)=>{const f=this.ed.$(c);this.ed.events.bindClick(f, !1,d=>{d.currentTarget=c;b(d)})});this.results=new XF.AutoCompleteResults(a);this.ed?(this.ed.events.on("keydown",this.keydown.bind(this),!0),this.ed.events.on("keyup",this.keyup.bind(this),!0),this.ed.events.on("click blur",this.blur.bind(this)),XF.on(this.ed.$wp[0],"scroll",this.blur.bind(this),{passive:!0})):(XF.on(this.input,"keydown",this.keydown.bind(this)),XF.on(this.input,"keyup",this.keyup.bind(this)),XF.on(this.input,"click",this.blur.bind(this)),XF.on(this.input,"blur",this.blur.bind(this)), XF.on(m,"scroll",this.blur.bind(this),{passive:!0}))},keydown(a){if(this.visible)switch(a.key){case "ArrowDown":this.results.selectResult(1);a.preventDefault();a.stopPropagation();break;case "ArrowUp":this.results.selectResult(-1);a.preventDefault();a.stopPropagation();break;case "Escape":this.hide();a.preventDefault();a.stopPropagation();break;case "Enter":case "Tab":if(this.visible)return this.results.insertSelectedResult(a),a.preventDefault(),a.stopPropagation(),!1}},keyup(a){if(this.visible)switch(a.key){case "ArrowDown":case "ArrowUp":case "Enter":case "Tab":return}this.hide(); this.idleTimer&&clearTimeout(this.idleTimer);this.idleTimer=setTimeout(this.lookForMatch.bind(this),this.options.idleWait)},blur(){this.visible&&setTimeout(this.hide.bind(this),250)},lookForMatch(){const a=this.getCurrentMatchInfo();a?this.foundMatch(a.query):this.hide()},getCurrentMatchInfo(){let a,c;if(this.ed){a=this.ed.selection.ranges(0);if(!a||!a.collapsed)return null;var b=a.endContainer;if(!b||b.nodeType!==Node.TEXT_NODE)return null;c=b;b=b.nodeValue.substring(0,a.endOffset)}else{this.input.focus(); a=this.getSelection(this.input);if(!a||1>=a.end)return!1;b=this.input.value.substring(0,a.end)}const f=b.lastIndexOf(this.options.at);if(-1===f)return null;if(0===f||b.substr(f-1,1).match(/(\s|[\](,]|--)/)){const d=b.substr(f+1);if(!d.match(/\s/)||15>=d.length)return{text:b,textNode:c,start:f,query:d.replace(new RegExp(String.fromCharCode(160),"g")," "),range:a}}return null},getSelection(a){const c=a.selectionStart,b=a.selectionEnd,f=b-c;a=a.value.substring(c,b);return{start:c,end:b,length:f,text:a}}, foundMatch(a){this.pendingQuery!==a&&(this.pendingQuery=a,a.length>=this.options.minLength&&"["!==a.substr(0,1)&&this.getPendingQueryOptions())},getPendingQueryOptions(){XF.ajax(this.options.method,this.options.url,{q:this.pendingQuery},this.handlePendingQueryOptions.bind(this),{global:!1,error:!1})},handlePendingQueryOptions(a){const c=this.getCurrentMatchInfo();a.q&&c&&a.q===c.query&&(a.results&&a.results.length?this.show(a.q,a.results):this.hide())},insertResult(a){this.hide();var c=this.getCurrentMatchInfo(); if(c){var b=c.start+1,f=c.range;if(this.ed){this.ed.selection.save();XF.EditorHelpers.focus(this.ed);f=c.textNode;const e=f.nodeValue,g=this.options.suffixEd;var d=f.splitText(this.options.keepAt?b:b-1);d.textContent=e.substr(b+c.query.length);c="html"===this.options.insertMode?XF.createElementFromString(a+g):m.createTextNode(a+g);d.parentNode.insertBefore(c,d);f.parentNode.normalize();this.ed.selection.restore()}else d=this.input,a+=this.options.suffix,XF.autofocus(d),-1!==b&&(d.selectionStart=c.start, d.selectionEnd=f.end,XF.replaceSelectedText(d,(this.options.keepAt?this.options.at:"")+a))}},show(a,c){const b=this.getCurrentMatchInfo(),f=this.input,d=XF.dimensions(f);if(b)if(this.visible=!0,this.ed){const e=b.range;this.results.showResults(a,c,f,g=>{var h=e.cloneRange();h.setStart(b.textNode,b.start);h.setEnd(b.textNode,b.start+1);h=h.getBoundingClientRect();return this.getResultPositionForSelection(h.left,h.bottom,e.getBoundingClientRect().left,g,d)})}else this.results.showResults(a,c,f,e=>{let g= m.createElement("div");var h=q.getComputedStyle(f),k="";for(var l of h)k+=`${l}: ${h.getPropertyValue(l)}; `;g.style.cssText=k;g.style.position="absolute";g.style.height="";g.style.width=`${f.offsetWidth}px`;g.style.opacity="0";g.style.top="0";g.style.left="-9999px";g.textContent=f.value;m.body.appendChild(g);l=m.createRange();l.setStart(g.firstChild,b.start);l.setEnd(g.firstChild,b.start+1);let p=l.getBoundingClientRect(),n=XF.dimensions(g);h=d.left+(p.left-n.left);k=d.top+(p.bottom-n.top);l.setStart(g.firstChild, b.start+1+b.query.length);l.setEnd(g.firstChild,b.start+1+b.query.length);p=l.getBoundingClientRect();l=d.left+(p.left-n.left);m.body.removeChild(g);return this.getResultPositionForSelection(h,k,l,e,d)})},getResultPositionForSelection(a,c,b,f,d){f=f.offsetWidth;c=c+q.scrollY+3;a+f>d.right&&(a=b-f);asetTimeout(XF.onPageLoad,0));XF.on(q,"pageshow",()=>{if(!XF.pageDisplayTime||Date.now()>XF.pageDisplayTime)XF.pageDisplayTime=Date.now()})}})(window,document); ((m,k)=>{XF._baseInserterOptions={after:null,append:null,before:null,prepend:null,replace:null,removeOldSelector:!0,animateReplace:!0,animateDisplay:null,scrollTarget:null,href:null,afterLoad:null};XF.Inserter=XF.create({options:XF.extendObject(!0,{},XF._baseInserterOptions),target:null,href:null,loading:!1,__construct(a,b){this.target=a;this.options=XF.extendObject(!0,{},this.options,b);(a=this.options.href||this.target.dataset.inserterHref||this.target.getAttribute("href"))?this.href=a:console.error("Target must have href")}, onEvent(a,b){a.preventDefault();this.loading||(this.loading=!0,a=k.querySelectorAll(this.options.replace),a.length&&a.forEach(c=>XF.Transition.addClassTransitioned(c,"is-active")),XF.ajax("get",this.href,b||{},this.onLoad.bind(this)).finally(()=>{this.loading=!1}))},onLoad(a){if(a.html){var b=this.options,c=b.scrollTarget,d=b.afterLoad,e;c&&(e=XF.findRelativeIf(c,this.target));XF.setupHtmlInsert(a.html,(f,g,h)=>{this._applyChange(f,b.after,this._applyAfter.bind(this));this._applyChange(f,b.append, this._applyAppend.bind(this));this._applyChange(f,b.before,this._applyBefore.bind(this));this._applyChange(f,b.prepend,this._applyPrepend.bind(this));this._applyChange(f,b.replace,this._applyReplace.bind(this));h(!0);d&&d(a);return!1});XF.layoutChange();e&&e.scrollIntoView(!0)}},_applyChange(a,b,c){if(b&&b.length){b=b.split(",");for(let f of b){f=f.split(" with ");b=f[0].trim();var d=f[1]?f[1].trim():b;if(b.length&&d.length){var e=k.querySelector(b);d=a.matches(d)?a:a.querySelector(d);c(b,e,d)}}}}, _applyAfter(a,b,c){b&&c&&(b.after(c),XF.activate(c),this._removeOldSelector(a,b))},_applyAppend(a,b,c){b&&c&&(XF.activate(c),Array.from(c.children).forEach(d=>b.appendChild(d)))},_applyBefore(a,b,c){b&&c&&(b.after(c),XF.activate(c),this._removeOldSelector(a,b))},_applyPrepend(a,b,c){b&&c&&(XF.activate(c),Array.from(c.children).reverse().forEach(d=>b.prepend(d)))},_applyReplace(a,b,c){b&&(a=this.options.animateReplace,XF.isIOS()&&(a=!1),c&&(a&&(XF.display(c,"none"),c.style.opacity=0),b.insertAdjacentElement("afterend", c)),a?(a=()=>{b.remove();XF.layoutChange();c&&XF.activate(c);XF.Animate.fadeDown(c,{speed:XF.config.speed.normal,complete:XF.layoutChange,display:this.options.animateDisplay})},"none"===m.getComputedStyle(b).display?a():XF.Animate.fadeUp(b,{complete:a()})):(b.remove(),c&&XF.activate(c)))},_removeOldSelector(a,b){if(this.options.removeOldSelector){var c;(c=a.match(/^\.([a-z0-9_-]+)/i))&&b.classList.remove(c[1])}}});XF.MenuBuilder={actionBar(a,b,c){const d=a.querySelector(".js-menuBuilderTarget");b.closest(".actionBar-set").querySelectorAll(".actionBar-action--menuItem").forEach(e=> {e=e.cloneNode(!0);e.className="menu-linkRow";d.appendChild(e)});XF.activate(d)},dataList(a,b,c){const d=a.querySelector(".js-menuBuilderTarget");b.closest(".dataList-row").querySelectorAll(".dataList-cell--responsiveMenuItem").forEach(e=>{Array.from(e.cloneNode(!0).children).forEach(f=>{if("a"===f.nodeName.toLowerCase())f.className="menu-linkRow";else{let g=XF.createElement("div",{className:"menu-row"});g.appendChild(f);f=g}d.appendChild(f)})});XF.activate(d)}};XF.MenuWatcher=(()=>{let a=[],b=null, c=!1,d=!1;const e=h=>{d||g(h.target)},f=h=>{a.forEach(l=>XF.trigger(l,"menu:reposition"))},g=h=>{c||(c=!0,a.forEach(l=>{let p=XF.DataStore.get(l,"menu-trigger"),n=p?p.target:null;l.contains(h)||n&&n.contains(h)||p&&p.close()}),c=!1)};return{onOpen:(h,l)=>{b||(b=XF.createElement("div",{className:"menuOutsideClicker"}),b.addEventListener("click",e),h.parentNode.insertBefore(b,h));a.length||(k.addEventListener("click",e),XF.on(m,"resize",f,{passive:!0}),l&&b.classList.add("is-active"));a.push(h)},onClose:h=> {a=a.filter(l=>l!==h);a.length||(XF.off(k,"click",e),XF.off(m,"resize",f),b&&b.classList.remove("is-active"));g(h)},closeAll:()=>{c=!0;a.forEach(h=>XF.trigger(h,"menu:close"));c=!1},closeUnrelated:g,preventDocClick:()=>{d=!0},allowDocClick:()=>{d=!1}}})();XF.OffCanvasBuilder={navigation(a,b){k.body.append(a);const c=XF.createElementFromString('