{"version":3,"sources":["webpack:///./pericles/components/go-to-section/js/goToSection.ts","webpack:///./pericles/components/figure-viewer/js/figure-viewer-script.js","webpack:///./pericles/widgets/publication-content/js/article.js"],"names":["notePopup","content","Configs","accordionControl","jsOpen","citedByArticleSection","supportInfo","supportInfoControl","openResearch","openResearchControl","links","wrapper","isTablet","initialize","this","elements","addEventListeners","isTabletOn","isTabletOff","domUtils","addEventListener","click","e","flowControl","document","escapeKeyHandler","type","keyCode","RETURN","element","currentTarget","classList","contains","closest","preventDefault","stopPropagation","getElements","forEach","remove","openFootNote","window","getElement","getAttribute","focus","indexOf","scrollToTarget","UX","dropBlock","on","hide","event","key","setAttribute","removeAttribute","refID","target","getElementById","hash","slice","clickTarget","citedBySection","scrollIntoView","behavior","block","setTimeout","tagName","redirectToExternalLink","location","assign","href","noteLink","note","createFootNote","noteContainer","chevronDown","noteClose","parentTable","isNodeInsideNode","HTMLElement","appendChild","body","noteHeight","offsetHeight","topOffset","leftOffset","leftOffsetToTheParent","parentWidth","parentHeight","offsetTop","offsetLeft","offsetWidth","add","getBoundingClientRect","top","documentElement","scrollTop","left","parentElement","style","createElement","noteID","controllerId","popupId","substring","noteContent","querySelector","innerHTML","configs","node","parentNode","GoToSection","Selectors","Elements","ClassList","Texts","figureViewer","figureNumbers","querySelectorAll","nodesToBeDisabled","removeFigureTitle","additionalBrowse","$","hasClass","$browseContainer","empty","$figures","each","$fig","clone","$figureLinks","find","length","append","height","$windowsHeight","innerHeight","$topRegHeight","$height","isMobile","$captionRegion","captionRegion","concat","additionalOnShow","utils","focusCycleInitiator","adFocusableEl","tabIndex","disableNodes","additionalOnHide","inert","$focusedElementBeforeOpened","$figureNav","additionalReplace","_figureImage$src","goToSection","figure","figureImage","sectionImages","imageType","src","split","pop","trim","figureCaptionLinks","convertToArray","link","fetch","then","response","text","svgText","svgElement","createElementNS","feFlood","error","console","image","canvas","width","context","getContext","drawImage","pixelData","getImageData","data","zoom","panzoom","init","fn","$image","$zoomIn","$zoominbtn","$zoomOut","$zoomoutbtn","$zoomRange","$zoomrange","$reset","$zoomreset","panOnlyWhenZoomed","minScale","directionControls","val","css","removeClass","addClass","inlineEquations","equation","moveControlHandler","originalMatrix","transform","direction","updateMatrix","matrixStr","matrixValues","match","map","Number","join","control","keyCodes","SPACE","_regeneratorRuntime","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","call","h","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","prev","charAt","stop","rval","handle","complete","finish","_catch","delegateYield","videoList","audioList","videoInfoArr","article","isGetFTRReferencesEnabled","loader","load","related","references","figures","getContentSuccess","$elem","_UX$accordion","relatedPane","accordion","logic","tooltip","crossMarkAccessibility","altMetricLoader","getScript","cloudFlareScript","videoMedia","audioMedia","mathOnlyFallbackViewer","jsScrollTab","tab","select","external","showAudioSupportMsg","streamErrorHandler","includes","utm","setElements","tabContent","contentLoaded","applyMathJax","setInterval","hasChildNodes","MathJax","typesetPromise","clearInterval","dispatchEvent","Event","err","log","message","additionalController","_document$querySelect","_document$querySelect2","lang","langParent","$this","$wSlideContent","$accordion","$body","abstractLangs","referencesHash","menuRoleButton","one","undefined","tabRelated","isArticleTabEmpty","articleTab","relatedTab","hideAllBoolean","truncate","lines","trigger","referencesAccordion","Array","from","referencesPane","referencesSectionsBulk","_accordion$querySelec","accordionTitleText","textContent","referencesList","titleEl","toLowerCase","referencesSection","outerHTML","referencesPaneContent","insertAdjacentHTML","dataDoiElements","getFTR","GetFTR","removeGetFTRElement","referencesTab","tabFigure","figuresTab","captionTruncate","abstractElements","abstractLanguages","id","display","sectionLanguage","show","outerHeight","coolbar","holder","_e$target","$rootArticle","referenceLink","referenceTarget","tabReferenceItem","dataBackTo","toggle","attr","parent","toggleClass","captionShowMore","captionShowLess","dataLabel","referencesBottom","referencesLink","articleReferences","get","html","fail","jqXHR","textStatus","errorThrown","first","children","position","animate","itemDataSkip","$skipTarget","is","offset","$supportInfoSection","$supportInfoAccordion","index","thead","$headRow","stickyHeight","tr","$th","trHeight","fixedCoolBar","seamlessAccessDelay","mobileDetailsTabWrapper","details","detailsTab","tabDetails","articleAdvertSection","bottomAdEl","supportInformationSection","supportInformationSectionData","dataset","suppl","supportInformationAccordion","showSupplOnClick","triggered","showSupplOnKeydown","fixedToolbarPosition","setTPRAriaLabel","cloudFlareInterval","source","videoStartTime","videoPlayingPeriod","videoListArr","streamEvents","video","videoElement","videoObject","Stream","videoId","filter","item","videoTime","currentTime","ev","streamAnalysis","trackMediaUrlElement","trackMediaUrlData","videoAutoplay","autoplay","videoCurrentTime","eventType","duration","url","onBrowserClose","paused","ended","audioStartTime","audioPlayingPeriod","trackMediaUrlEl","audioAutoplay","audioCurrentTime","audio","$tprLink","tprAriaLabel","host","tmp","ids","langNames","$abs","MutationObserver","mutationsList","observer","activeLanguage","abstractGraphicalCurrent","disconnect","observe","childList","subtree","_$$attr","after","elem","lineNumber","show_more","show_less","seeMoreLink","seeMoreText","seeLessText","additionalBehaviorOnShow","$el","toTrim","rebuild","responsive","lessLinkEllipsis","mobileTarget","isSliding","fallbackImageViewer","lazyFallbackImage","articleTabs","articleRowRightTabs","isLoaded","detailsTabLoader","articleTabsTrigger","defaultTabEl","defaultTabData","defaultTab","pageHash","pubTabs","selectedTab","setDefaultTab","tabBtn","tabBtnParent","tabPane","_tabBtn","arguments","tabReferences","test","isIE","$audio","audioType","wrapperEl","streamChildren","mediaError","_ref","_asyncToGenerator","_callee","parentEl","_mediaError","streamAutoplay","poster","timeRegex","newPoster","_callee$","_context","trackMediaUrl","attributes","replace","checkPoster","_x","apply","_ref2","_callee2","_callee2$","_context2","status","t0","_x2","$fixedCoolBar","coolBarTop","coolBarLeft","coolBarWidth","outerWidth","coolBarHeight","$seamlessWrapper","$loader","$text","defaultHref","encodeURIComponent","pathname","crossMarkTrigger","iframeAccessibility","rand","Math","floor","random","focusTrigger","crossMarkInit","crossMarkIframe","crossMarkClassList","crossMarkCloseBtn","focusTriggerTargetData","focusTriggerTarget","focusTriggerTargetEl","title","logo","inner","footer","fakeFocusEl","closeBtn","popupContentWrapper","popupFooter","paddingBottom","focusableList","focusOrder","_wrapper$querySelecto","oldElFocusOrder","el","relatedTarget","removeChild","crossMarkPopupClose","closeModalOnEsc","crossMarkWidget","altMetricEl","altMetricInterval","altMetricChecker","altMetricTrigger","numberOfDownloads","citedByCount","metricsOuterWrapper","altMetricImage","imageAlt","alt","altMetricImageParent","isScoreZero","uuid","altMetricPopover","altMetricPopoverInner","mouseOutEvent","mouseOverEvent","wSlide","wSlideContent","closePopover","checkToHide","setTriggerAttributes","triggerClickHandler","fakeFocusableEl","backToLinkEl","backToLinkHandler","EscapeMouseOver","bodyKeyDownHandler","focusOutHandler","popoverEscapeHandler","intervalCounter","nextElement","nextElementSibling","firstLinkEl"],"mappings":"kgCAsBA,iCAQA,OAPI,kBAAAA,UAAA,SAAUC,GACN,MAAO,wLAGoCA,EAAO,6DALpDC,QAAO,YADZ,eACKA,SAAN,GAUA,+B,+CAAsC,OAAlB,WAAkB,MAAtC,CAAoB,KAEpB,iF,OACI,EAAAC,iBAAmB,sBACnB,EAAAC,OAAS,WACT,EAAAC,sBAAwB,4B,EAC5B,OAJwB,eAIxB,UAJA,CAAwB,KAMxB,iF,OACI,EAAAC,YAAc,IAAI,IAAkB,0CAA2C,YAC/E,EAAAC,mBAAqB,IAAI,IAAkB,oDAAqD,YAChG,EAAAC,aAAe,IAAI,IAAkB,oCAAqC,YAC1E,EAAAC,oBAAsB,IAAI,IAAkB,uDAAwD,YACpG,EAAAC,MAAQ,IAAI,IAAkB,+LAAgM,Y,EAElO,OAPwB,eAOxB,UAPA,CAAwB,KASxB,gF,OAKI,EAAAA,MAAuB,G,EAC3B,OANuB,cAMvB,SANA,CAAuB,KAavB,aAWI,qBAAqBC,GAAA,KAAAA,UAHrB,KAAAC,UAAW,EA0Nf,OArNI,sBAAAC,WAAA,WACIC,KAAKC,SAASF,WAAWC,KAAKH,SAC9BG,KAAKE,qBAGT,sBAAAC,WAAA,WACIH,KAAKF,UAAW,GAGpB,sBAAAM,YAAA,WACIJ,KAAKF,UAAW,GAGpB,sBAAAI,kBAAA,sBACIF,KAAKK,SAASC,iBAAiBN,KAAKC,SAAST,YAAa,SAAS,WAAM,SAAKS,SAASR,mBAAmBc,WAE1GP,KAAKK,SAASC,iBAAiBN,KAAKC,SAASP,aAAc,SAAS,WAAM,SAAKO,SAASN,oBAAoBY,WAE5GP,KAAKK,SAASC,iBAAiBN,KAAKC,SAASL,MAAO,SAAS,SAACY,GAAM,SAAKC,YAAYD,MAErFR,KAAKK,SAASC,iBAAiBN,KAAKC,SAASL,MAAO,WAAW,SAACY,GAAM,SAAKC,YAAYD,MAEvFR,KAAKK,SAASC,iBAAiBI,SAAU,WAAW,SAACF,GAAqB,SAAKG,iBAAiBH,OAGpG,sBAAAC,YAAA,SAAYD,GAAZ,WAEI,GAAc,YAAXA,EAAEI,MAAsBJ,EAAEK,UAAY,IAASC,OAAlD,CAEA,IAAMC,EAAUP,EAAEQ,cAGdD,EAAQE,UAAUC,SAAS,qBAC3BH,EAAQE,UAAUC,SAAS,YAC3BH,EAAQE,UAAUC,SAAS,aAC3BH,EAAQI,QAAQ,wBAChBJ,EAAQI,QAAQ,0BAKhBX,EAAEY,iBACFZ,EAAEa,kBACFrB,KAAKK,SAASiB,YAAY,eAAeC,SAAQ,SAAAf,GAAK,OAAAA,EAAES,UAAUO,OAAO,kBAErET,EAAQE,UAAUC,SAAS,aAC3BlB,KAAKyB,aAAaV,GAClBW,OAAOpB,iBAAiB,UAAU,WAC9B,EAAKmB,aAAaV,OAEfA,EAAQE,UAAUC,SAAS,cAClClB,KAAKK,SAASsB,WAAWZ,EAAQa,aAAa,SAASC,QAEvDd,EAAQE,UAAUC,SAAS,aAC3BH,EAAQI,QAAQ,0CAChBJ,EAAQa,aAAa,QAAQE,QAAQ,wBAA0B,GAE/D9B,KAAK+B,eAAehB,GAAS,GAC7Bf,KAAKK,SAASsB,WAAWZ,EAAQa,aAAa,SAASC,UAEvD7B,KAAK+B,eAAehB,GAAS,GAC5BW,OAAeM,GAAGC,UAAUC,GAAGC,OAC5BnC,KAAKF,WACLE,KAAKK,SAASsB,WAAW,gCAAgCpB,QACzDP,KAAKK,SAASsB,WAAW,kBAAkBpB,UAI/CQ,EAAQI,QAAQ,6BACfO,OAAeM,GAAGC,UAAUC,GAAGC,UAK5C,sBAAAxB,iBAAA,SAAiByB,G,UACK,WAAdA,EAAMC,MAC8C,QAApD,EAAArC,KAAKK,SAASsB,WAAW,mCAA2B,SAAEW,aAAa,gBAAiB,SAChC,QAApD,EAAAtC,KAAKK,SAASsB,WAAW,mCAA2B,SAAEY,gBAAgB,iBAC5B,QAA1C,EAAAvC,KAAKK,SAASsB,WAAW,yBAAiB,SAAEH,WAIpD,sBAAAO,eAAA,SAAehB,EAA4ByB,GACvC,IAAIC,EAASD,EAAQxC,KAAKK,SAASqC,eAAe3B,EAAQ4B,KAAKC,MAAM,IAAM7B,EAErE8B,EAAcJ,OADpBA,EAASA,GAAkBzC,KAAKK,SAASsB,WAAW,UAAYZ,EAAQ4B,KAAKC,MAAM,GAAK,YAC9D,EAANH,EAAQtB,QAAQnB,KAAKiB,UAAU5B,kBACnD,GAAIwD,IAAeJ,aAAM,EAANA,EAAQtB,QAAQnB,KAAKiB,UAAU1B,wBAAwB,CACtE,IAAMuD,EAAiBL,aAAM,EAANA,EAAQtB,QAAQnB,KAAKiB,UAAU1B,uBAClDF,EAAmBW,KAAKK,SAASsB,WAAW3B,KAAKiB,UAAU5B,iBAAkByD,GAE5EzD,EAAiB4B,UAAUC,SAASlB,KAAKiB,UAAU3B,SACpDD,EAAiBkB,aAGrBsC,IACCA,EAAY5B,UAAUC,SAASlB,KAAKiB,UAAU3B,SAE/CuD,EAAYtC,QAGZkC,GAEAA,EAAOM,eAAe,CAAEC,SAAU,SAAUC,MAAO,UACnDR,EAAOH,aAAa,WAAY,KAChCY,YAAW,WACPT,EAAOZ,UACR,KAEoB,MAAnBY,EAAOU,SAAsC,WAAnBV,EAAOU,SACjCV,EAAOH,aAAa,WAAY,OAIpCtC,KAAKoD,uBAAuBrC,IAIpC,sBAAAqC,uBAAA,SAAuBrC,GACnBW,OAAO2B,SAASC,OAAOvC,EAAQwC,OAGnC,sBAAA9B,aAAA,SAAa+B,GACTxD,KAAKK,SAASiB,YAAY,kBAAkBC,SAAQ,SAAAkC,GAAQ,OAAAA,EAAKjC,YAEjExB,KAAKK,SAASiB,YAAY,4BAA4BC,SAAQ,SAAAkC,GAAQ,OAAAA,EAAKnB,aAAa,gBAAiB,YAEnG,MAA4CtC,KAAK0D,eAAeF,GAA9DG,EAAa,gBAAEC,EAAW,cAAEC,EAAS,YACzCC,EAAc9D,KAAK+D,iBAAiBP,EAAU,SAC9CM,aAAuBE,YACvBF,EAAYG,YAAYN,GAExBjD,SAASwD,KAAKD,YAAYN,GAG9B,IAAIQ,EAAaR,EAAcS,aAC3BC,EAAY,EACZC,EAAa,EACbC,EAAwB,EACxBC,EAAc,EACdC,EAAe,EAEfX,aAAuBE,aACvBK,EAAYb,EAASkB,UACrBJ,EAAad,EAASmB,WACtBJ,EAAwBf,EAASmB,WAAab,EAAYa,WAC1DH,EAAcV,EAAYc,YAC1BH,EAAeX,EAAYM,aAC3BT,EAAc1C,UAAU4D,IAAI,iBAE5BR,EAAYb,EAASsB,wBAAwBC,IAAMrE,SAASsE,gBAAgBC,UAC5EX,EAAad,EAASsB,wBAAwBI,KAC9CX,EAAwBf,EAASmB,WACjCH,EAAchB,EAAS2B,cAAcP,aAGrC5E,KAAK+D,iBAAiBP,EAAU,UAChCI,EAAY3C,UAAU4D,IAAI,WAC1BlB,EAAcyB,MAAML,IAASV,EAAY,GAAE,KAC3CV,EAAc1C,UAAU4D,IAAI,eAE5BlB,EAAcyB,MAAML,IAASV,EAAYF,EAAa,EAAC,KAIvDK,EAAc,EAAID,GAClBZ,EAAcyB,MAAMF,KAAUZ,EAAa,EAAC,KAC5CV,EAAY3C,UAAU4D,IAAI,UAE1BlB,EAAcyB,MAAMF,KAAUZ,EAAaX,EAAciB,YAAc,GAAE,KACzEhB,EAAY3C,UAAU4D,IAAI,UAI1BJ,EAAe,EAAIJ,IACnBT,EAAY3C,UAAU4D,IAAI,WAC1BlB,EAAcyB,MAAML,IAASV,EAAY,GAAE,MAG/CR,EAAUvD,iBAAiB,SAAS,WAChCkD,EAASlB,aAAa,gBAAiB,SACvCkB,EAASjB,gBAAgB,iBACzBoB,EAAcnC,aAItB,sBAAAkC,eAAA,SAAeF,GACX,IAAMG,EAA6BjD,SAAS2E,cAAc,OAC1D1B,EAAc1C,UAAU4D,IAAI,iBAE5B,IAAMS,EAAS9B,EAAS5B,aAAa,eACjC2D,EAAe/B,EAAS5B,aAAa,MACrC4D,EAAUhC,EAAS5B,aAAa,QAAQ6D,UAAU,GAClDC,EAAchF,SAASiF,cAAc,MAAML,GAAUM,UAWzD,OATAjC,EAAciC,UAAY5F,KAAK6F,QAAQ3G,UAAUwG,GACjDlC,EAASlB,aAAa,gBAAiB,QACvCkB,EAASlB,aAAa,gBAAiBkD,GACvC7B,EAAcrB,aAAa,KAAMkD,GACjC7B,EAAcrB,aAAa,kBAAmBiD,GAKvC,CAAE5B,cAAa,EAAEC,YAHJ5D,KAAKK,SAASsB,WAAW,eAAgBgC,GAGxBE,UAFrB7D,KAAKK,SAASsB,WAAW,iBAAkBgC,KAO/D,sBAAAI,iBAAA,SAAiB+B,EAAmBC,GAChC,OAAID,EAAK3C,UAAY4C,EAAmBD,EACjCA,EAAKC,aAAerF,SAASwD,MAAQlE,KAAK+D,iBAAiB+B,EAAKC,WAA2BA,IA3NtG,YADC,c,yBACkB3G,I,wCAInB,YADC,YAAc,M,2EAPb4G,YAAW,YADhB,YAAkBC,EAAWC,EAAUC,EAAWC,G,gCAYjBpC,eAX5BgC,aAAN,GAoOe,O,iCClSf,4BAIA,WACI,IAAMK,EAAerE,GAAGqE,aAClBC,EAAgB5F,SAAS6F,iBAAiB,kBAC5CC,EAAoB,GAExBH,EAAaI,kBAAoB,aAEjCJ,EAAaK,iBAAmB,WACxBC,EAAE,qBAAqBC,SAAS,WAChCP,EAAaQ,iBAAiBC,QAC9BT,EAAaU,SAASC,MAAK,WACvB,IAAIC,EAAON,EAAE3G,MAAMkH,OAAM,GACrBC,EAAeF,EAAKG,KAAK,iBAEzBD,EAAaE,QACbF,EAAa3F,SAEjB6E,EAAaQ,iBAAiBS,OAAOL,QAKjDZ,EAAakB,OAAS,SAAUxG,GAC5B,IAAIyG,EAAiBb,EAAEjF,QAAQ+F,cAC/BpB,EAAaqB,cAAgBf,EAAE,4BAA4Bc,cAC3D,IAAIE,EAAUH,EAAiBnB,EAAaqB,cAC5C,GAAIrB,EAAauB,SAAU,CACvBD,GAAWtB,EAAawB,eAAeT,KAAK,yBAAyBG,SACrE,IAAMO,EAAgBpH,SAASiF,cAAc,+BACzCmC,IACAA,EAAc1C,MAAMmC,OAAS,GAAHQ,OAAMJ,EAAO,OAG/ChB,EAAE,8BAA8BS,KAAK,UAAUG,OAAOI,IAG1DtB,EAAanE,GAAG8F,iBAAmB,WAC/B,IAAM3B,EAAe3F,SAASiF,cAAc,kBAE5C3D,GAAGiG,MAAMC,oBAAoB7B,GAC7B,IAAM8B,EAAgBzH,SAASiF,cAAc,sBACzCwC,IAA6C,IAA5BA,EAAcC,WAC/BD,EAAcC,SAAW,GAE7B5B,EAAoBxE,GAAGiG,MAAMI,aAAahC,GAEtCA,EAAaV,cAAc,gCAC3BU,EAAa/F,iBAAiB,SAAS,WACpB+F,EAAaV,cAAc,YACnCpF,YAInB8F,EAAanE,GAAGoG,iBAAmB,WAC/B,IAAMH,EAAgBzH,SAASiF,cAAc,sBACzCwC,GAA4C,IAA3BA,EAAcC,WAC/BD,EAAcC,UAAY,GAE9B5B,EAAkBjF,SAAQ,SAAAR,GACtBA,EAAQwH,OAAQ,KAEpBlC,EAAamC,4BAA4B3G,SAGhB,IAAzByE,EAAce,QACdhB,EAAaoC,WAAWtG,OAG5BkE,EAAaqC,kBAAoB,WAAY,IAAAC,EACnCC,EAAc,IAAI5C,IAClB6C,EAASnI,SAASgC,eAAe,iBACjCoG,EAAcD,aAAM,EAANA,EAAQlD,cAAc,kBACpCoD,EAAgBF,aAAM,EAANA,EAAQtC,iBAAiB,kBACzCyC,EAAYF,SAAgB,QAALH,EAAXG,EAAaG,WAAG,IAAAN,OAAL,EAAXA,EAAkBO,MAAM,KAAKC,MAAMC,OAC/CC,EAAqBrH,GAAGiG,MAAMqB,eAChCT,aAAM,EAANA,EAAQtC,iBAAiB,sDAE7B8C,WAAoB9H,SAAQ,SAAAgI,GACxBA,EAAKjJ,iBAAiB,SAAS,SAAAE,GAC3B6F,EAAanE,GAAGC,OAChByG,WAAanI,YAAYD,SAIf,QAAdwI,GACAQ,MAAMV,EAAYG,KACbQ,MAAK,SAAAC,GAAQ,OAAIA,EAASC,UAC1BF,MAAK,SAAAG,GACF,IAAMC,EAAanJ,SAASoJ,gBAAgB,6BAA8B,OAC1ED,EAAWjE,UAAYgE,EAEvB,IAAMG,EAAUF,aAAU,EAAVA,EAAYlE,cAAc,YACvBoE,aAAO,EAAPA,EAASnI,aAAa,iBAErCkH,EAAY7H,UAAU4D,IAAI,eAEhC,OACK,SAAAmF,GAAK,OAAIC,QAAQD,MAAMA,MAGtCjB,WAAexH,SAAQ,SAAA2I,GACnB,IAAMC,EAASzJ,SAAS2E,cAAc,UACtC8E,EAAOC,MAAQF,EAAME,MACrBD,EAAO5C,OAAS2C,EAAM3C,OAGtB,IAAM8C,EAAUF,EAAOG,WAAW,MAClCD,EAAQE,UAAUL,EAAO,EAAG,GAG5B,IAAMM,EAAYH,EAAQI,aAAa,EAAG,EAAG,EAAG,GAAGC,KAC9B,IAAjBF,EAAU,IAA6B,IAAjBA,EAAU,IAA4B,GAAhBA,EAAU,IACtDN,EAAMjJ,UAAU4D,IAAI,gBAKhCwB,EAAasE,KAAKC,QAAU,CAExBC,KAAM,SAANA,OACI,QAA2B,IAAhBlE,EAAEmE,GAAGF,QAAwB,CACpCvE,EAAa0E,OAAOH,QAAQ,CACxBI,QAAS3E,EAAa4E,WACtBC,SAAU7E,EAAa8E,YACvBC,WAAY/E,EAAagF,WACzBC,OAAQjF,EAAakF,WACrBC,mBAAmB,EACnBC,SAAU,IAEd,IAAMC,EAAoBhL,SAASiF,cAAc,sBACjDU,EAAa0E,OAAO7I,GAAG,iBAAiB,SAAU1B,GAC9C,GAAsC,MAAlC6F,EAAagF,WAAWM,MACxBtF,EAAa0E,OAAOa,IAAI,YAAa,4BACrCjF,EAAE3G,MAAM6L,YAAY,UACpBH,EAAkBzK,UAAU4D,IAAI,cAC7B,CACH8B,EAAE3G,MAAM8L,SAAS,UACjBJ,EAAkBzK,UAAUO,OAAO,UACnC,IAAM6E,EAAe3F,SAASiF,cAAc,kBAE5C3D,GAAGiG,MAAMC,oBAAoB7B,UAOjD,IAAM0F,EAAkBrL,SAAS6F,iBAAiB,8CAClDwF,WAAiBxK,SAAQ,SAAAyK,GAChBA,EAAS7K,QAAQ,YAClB6K,EAAS1L,iBAAiB,SAAS,SAAAE,GAC/BA,EAAEY,iBACFZ,EAAEa,wBAId,IA6BM4K,EAAqB,SAArBA,mBAAqBzL,GACvB,IAAMqI,EAASnI,SAASiF,cAAc,oCAClCuG,EAAiB,GAEjBA,EAD2B,SAA3BrD,EAAOzD,MAAM+G,UACI,2BAEAtD,EAAOzD,MAAM+G,UAElC,IAAMC,EAAY5L,EAAEiC,OAAOb,aAAa,aACxCiH,EAAOzD,MAAM+G,UApCI,SAAfE,aAAgBC,EAAWF,GAC7B,IAAMG,EAAeD,EAAUE,MAAM,aAAaC,IAAIC,QAEtD,OAAQN,GACJ,IAAK,KACDG,EAAa,IAPP,GAQN,MAEJ,IAAK,OACDA,EAAa,IAXP,GAYN,MAEJ,IAAK,OACDA,EAAa,IAfP,GAgBN,MAEJ,IAAK,QACDA,EAAa,IAnBP,GA0Bd,MAAO,UAAPxE,OAAiBwE,EAAaI,KAAK,MAAK,KAYfN,CAAaH,EAAgBE,IAG1D1L,SAAS6F,iBAAiB,2BAA2BhF,SAAQ,SAAAqL,GACzDA,EAAQtM,iBAAiB,SAAS,SAAAE,GAAC,OAAIyL,EAAmBzL,MAC1DoM,EAAQtM,iBAAiB,WAAW,SAAAE,GAClB,UAAVA,EAAE6B,KAAmB7B,EAAEK,UAAYgM,IAAS/L,QAAoB,MAAVN,EAAE6B,KAAe7B,EAAEK,UAAYgM,IAASC,OAC9Fb,EAAmBzL,SAzMnC,I,8RCHAuM,oBAAA,SAAAA,sBAAA,OAAAvM,GAAA,IAAAwM,EAAAxM,EAAA,GAAAyM,EAAAC,OAAAC,UAAAC,EAAAH,EAAAI,eAAAC,EAAAJ,OAAAK,gBAAA,SAAAP,EAAAxM,EAAAyM,GAAAD,EAAAxM,GAAAyM,EAAAO,OAAAC,EAAA,mBAAAC,cAAA,GAAAC,EAAAF,EAAAG,UAAA,aAAAC,EAAAJ,EAAAK,eAAA,kBAAAC,EAAAN,EAAAO,aAAA,yBAAAC,OAAAjB,EAAAxM,EAAAyM,GAAA,OAAAC,OAAAK,eAAAP,EAAAxM,EAAA,CAAAgN,MAAAP,EAAAiB,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAApB,EAAAxM,GAAA,IAAAyN,OAAA,aAAAjB,GAAAiB,OAAA,SAAAA,OAAAjB,EAAAxM,EAAAyM,GAAA,OAAAD,EAAAxM,GAAAyM,GAAA,SAAAoB,KAAArB,EAAAxM,EAAAyM,EAAAG,GAAA,IAAAK,EAAAjN,KAAA2M,qBAAAmB,UAAA9N,EAAA8N,UAAAX,EAAAT,OAAAqB,OAAAd,EAAAN,WAAAU,EAAA,IAAAW,QAAApB,GAAA,WAAAE,EAAAK,EAAA,WAAAH,MAAAiB,iBAAAzB,EAAAC,EAAAY,KAAAF,EAAA,SAAAe,SAAA1B,EAAAxM,EAAAyM,GAAA,WAAArM,KAAA,SAAA+N,IAAA3B,EAAA4B,KAAApO,EAAAyM,IAAA,MAAAD,GAAA,OAAApM,KAAA,QAAA+N,IAAA3B,IAAAxM,EAAA6N,UAAA,IAAAQ,EAAA,iBAAAC,EAAA,YAAAC,EAAA,YAAAC,EAAA,YAAAV,aAAA,SAAAW,qBAAA,SAAAC,8BAAA,IAAAC,EAAA,GAAAlB,OAAAkB,EAAAxB,GAAA,8BAAAyB,EAAAlC,OAAAmC,eAAAC,EAAAF,OAAAG,OAAA,MAAAD,OAAArC,GAAAG,EAAAwB,KAAAU,EAAA3B,KAAAwB,EAAAG,GAAA,IAAAE,EAAAN,2BAAA/B,UAAAmB,UAAAnB,UAAAD,OAAAqB,OAAAY,GAAA,SAAAM,sBAAAzC,GAAA,0BAAAzL,SAAA,SAAAf,GAAAyN,OAAAjB,EAAAxM,GAAA,SAAAwM,GAAA,YAAA0C,QAAAlP,EAAAwM,SAAA,SAAA2C,cAAA3C,EAAAxM,GAAA,SAAAoP,OAAA3C,EAAAK,EAAAG,EAAAE,GAAA,IAAAE,EAAAa,SAAA1B,EAAAC,GAAAD,EAAAM,GAAA,aAAAO,EAAAjN,KAAA,KAAAmN,EAAAF,EAAAc,IAAAE,EAAAd,EAAAP,MAAA,OAAAqB,GAAA,UAAAgB,IAAAhB,IAAAzB,EAAAwB,KAAAC,EAAA,WAAArO,EAAAsP,QAAAjB,EAAAkB,SAAAtG,MAAA,SAAAuD,GAAA4C,OAAA,OAAA5C,EAAAS,EAAAE,MAAA,SAAAX,GAAA4C,OAAA,QAAA5C,EAAAS,EAAAE,MAAAnN,EAAAsP,QAAAjB,GAAApF,MAAA,SAAAuD,GAAAe,EAAAP,MAAAR,EAAAS,EAAAM,MAAA,SAAAf,GAAA,OAAA4C,OAAA,QAAA5C,EAAAS,EAAAE,QAAAE,EAAAc,KAAA,IAAA1B,EAAAK,EAAA,gBAAAE,MAAA,SAAAA,MAAAR,EAAAI,GAAA,SAAA4C,6BAAA,WAAAxP,GAAA,SAAAA,EAAAyM,GAAA2C,OAAA5C,EAAAI,EAAA5M,EAAAyM,MAAA,OAAAA,MAAAxD,KAAAuG,uFAAA,SAAAvB,iBAAAjO,EAAAyM,EAAAG,GAAA,IAAAE,EAAAuB,EAAA,gBAAApB,EAAAE,GAAA,GAAAL,IAAAwB,EAAA,MAAAmB,MAAA,mCAAA3C,IAAAyB,EAAA,cAAAtB,EAAA,MAAAE,EAAA,OAAAH,MAAAR,EAAAkD,MAAA,OAAA9C,EAAA+C,OAAA1C,EAAAL,EAAAuB,IAAAhB,IAAA,KAAAE,EAAAT,EAAAgD,SAAA,GAAAvC,EAAA,KAAAE,EAAAsC,oBAAAxC,EAAAT,GAAA,GAAAW,EAAA,IAAAA,IAAAiB,EAAA,gBAAAjB,GAAA,YAAAX,EAAA+C,OAAA/C,EAAAkD,KAAAlD,EAAAmD,MAAAnD,EAAAuB,SAAA,aAAAvB,EAAA+C,OAAA,IAAA7C,IAAAuB,EAAA,MAAAvB,EAAAyB,EAAA3B,EAAAuB,IAAAvB,EAAAoD,kBAAApD,EAAAuB,SAAA,WAAAvB,EAAA+C,QAAA/C,EAAAqD,OAAA,SAAArD,EAAAuB,KAAArB,EAAAwB,EAAA,IAAAK,EAAAT,SAAAlO,EAAAyM,EAAAG,GAAA,cAAA+B,EAAAvO,KAAA,IAAA0M,EAAAF,EAAA8C,KAAAnB,EAAA,iBAAAI,EAAAR,MAAAK,EAAA,gBAAAxB,MAAA2B,EAAAR,IAAAuB,KAAA9C,EAAA8C,MAAA,UAAAf,EAAAvO,OAAA0M,EAAAyB,EAAA3B,EAAA+C,OAAA,QAAA/C,EAAAuB,IAAAQ,EAAAR,OAAA,SAAA0B,oBAAA7P,EAAAyM,GAAA,IAAAG,EAAAH,EAAAkD,OAAA7C,EAAA9M,EAAAoN,SAAAR,GAAA,GAAAE,IAAAN,EAAA,OAAAC,EAAAmD,SAAA,eAAAhD,GAAA5M,EAAAoN,SAAA,SAAAX,EAAAkD,OAAA,SAAAlD,EAAA0B,IAAA3B,EAAAqD,oBAAA7P,EAAAyM,GAAA,UAAAA,EAAAkD,SAAA,WAAA/C,IAAAH,EAAAkD,OAAA,QAAAlD,EAAA0B,IAAA,IAAA+B,UAAA,oCAAAtD,EAAA,aAAA4B,EAAA,IAAAvB,EAAAiB,SAAApB,EAAA9M,EAAAoN,SAAAX,EAAA0B,KAAA,aAAAlB,EAAA7M,KAAA,OAAAqM,EAAAkD,OAAA,QAAAlD,EAAA0B,IAAAlB,EAAAkB,IAAA1B,EAAAmD,SAAA,KAAApB,EAAA,IAAArB,EAAAF,EAAAkB,IAAA,OAAAhB,IAAAuC,MAAAjD,EAAAzM,EAAAmQ,YAAAhD,EAAAH,MAAAP,EAAA2D,KAAApQ,EAAAqQ,QAAA,WAAA5D,EAAAkD,SAAAlD,EAAAkD,OAAA,OAAAlD,EAAA0B,IAAA3B,GAAAC,EAAAmD,SAAA,KAAApB,GAAArB,GAAAV,EAAAkD,OAAA,QAAAlD,EAAA0B,IAAA,IAAA+B,UAAA,oCAAAzD,EAAAmD,SAAA,KAAApB,GAAA,SAAA8B,aAAA9D,GAAA,IAAAxM,EAAA,CAAAuQ,OAAA/D,EAAA,SAAAA,IAAAxM,EAAAwQ,SAAAhE,EAAA,SAAAA,IAAAxM,EAAAyQ,WAAAjE,EAAA,GAAAxM,EAAA0Q,SAAAlE,EAAA,SAAAmE,WAAAC,KAAA5Q,GAAA,SAAA6Q,cAAArE,GAAA,IAAAxM,EAAAwM,EAAAsE,YAAA,GAAA9Q,EAAAI,KAAA,gBAAAJ,EAAAmO,IAAA3B,EAAAsE,WAAA9Q,EAAA,SAAAgO,QAAAxB,GAAA,KAAAmE,WAAA,EAAAJ,OAAA,SAAA/D,EAAAzL,QAAAuP,aAAA,WAAAS,OAAA,YAAAhC,OAAA/O,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAyM,EAAAzM,EAAAmN,GAAA,GAAAV,EAAA,OAAAA,EAAA2B,KAAApO,GAAA,sBAAAA,EAAAoQ,KAAA,OAAApQ,EAAA,IAAAgR,MAAAhR,EAAA6G,QAAA,KAAAiG,GAAA,EAAAG,EAAA,SAAAmD,OAAA,OAAAtD,EAAA9M,EAAA6G,QAAA,GAAA+F,EAAAwB,KAAApO,EAAA8M,GAAA,OAAAsD,KAAApD,MAAAhN,EAAA8M,GAAAsD,KAAAV,MAAA,EAAAU,KAAA,OAAAA,KAAApD,MAAAR,EAAA4D,KAAAV,MAAA,EAAAU,MAAA,OAAAnD,EAAAmD,KAAAnD,GAAA,UAAAiD,UAAAb,IAAArP,GAAA,2BAAAyO,kBAAA9B,UAAA+B,2BAAA5B,EAAAkC,EAAA,eAAAhC,MAAA0B,2BAAAf,cAAA,IAAAb,EAAA4B,2BAAA,eAAA1B,MAAAyB,kBAAAd,cAAA,IAAAc,kBAAAwC,YAAAxD,OAAAiB,2BAAAnB,EAAA,qBAAAvN,EAAAkR,oBAAA,SAAA1E,GAAA,IAAAxM,EAAA,mBAAAwM,KAAA2E,YAAA,QAAAnR,QAAAyO,mBAAA,uBAAAzO,EAAAiR,aAAAjR,EAAAoR,QAAApR,EAAAqR,KAAA,SAAA7E,GAAA,OAAAE,OAAA4E,eAAA5E,OAAA4E,eAAA9E,EAAAkC,6BAAAlC,EAAA+E,UAAA7C,2BAAAjB,OAAAjB,EAAAe,EAAA,sBAAAf,EAAAG,UAAAD,OAAAqB,OAAAiB,GAAAxC,GAAAxM,EAAAwR,MAAA,SAAAhF,GAAA,OAAA+C,QAAA/C,IAAAyC,sBAAAE,cAAAxC,WAAAc,OAAA0B,cAAAxC,UAAAU,GAAA,0BAAArN,EAAAmP,4BAAAnP,EAAAyR,MAAA,SAAAjF,EAAAC,EAAAG,EAAAE,EAAAG,QAAA,IAAAA,MAAAyE,SAAA,IAAAvE,EAAA,IAAAgC,cAAAtB,KAAArB,EAAAC,EAAAG,EAAAE,GAAAG,GAAA,OAAAjN,EAAAkR,oBAAAzE,GAAAU,IAAAiD,OAAAnH,MAAA,SAAAuD,GAAA,OAAAA,EAAAkD,KAAAlD,EAAAQ,MAAAG,EAAAiD,WAAAnB,sBAAAD,GAAAvB,OAAAuB,EAAAzB,EAAA,aAAAE,OAAAuB,EAAA7B,GAAA,0BAAAM,OAAAuB,EAAA,qDAAAhP,EAAA2R,KAAA,SAAAnF,GAAA,IAAAxM,EAAA0M,OAAAF,GAAAC,EAAA,WAAAG,KAAA5M,EAAAyM,EAAAmE,KAAAhE,GAAA,OAAAH,EAAAmF,UAAA,SAAAxB,OAAA,KAAA3D,EAAA5F,QAAA,KAAA2F,EAAAC,EAAA9D,MAAA,GAAA6D,KAAAxM,EAAA,OAAAoQ,KAAApD,MAAAR,EAAA4D,KAAAV,MAAA,EAAAU,KAAA,OAAAA,KAAAV,MAAA,EAAAU,OAAApQ,EAAA+O,cAAAf,QAAArB,UAAA,CAAAwE,YAAAnD,QAAA+C,MAAA,SAAAA,MAAA/Q,GAAA,QAAA6R,KAAA,OAAAzB,KAAA,OAAAN,KAAA,KAAAC,MAAAvD,EAAA,KAAAkD,MAAA,OAAAE,SAAA,UAAAD,OAAA,YAAAxB,IAAA3B,EAAA,KAAAmE,WAAA5P,QAAA8P,gBAAA7Q,EAAA,QAAAyM,KAAA,WAAAA,EAAAqF,OAAA,IAAAlF,EAAAwB,KAAA,KAAA3B,KAAAuE,OAAAvE,EAAArK,MAAA,WAAAqK,GAAAD,IAAAuF,KAAA,SAAAA,OAAA,KAAArC,MAAA,MAAAlD,EAAA,KAAAmE,WAAA,GAAAG,WAAA,aAAAtE,EAAApM,KAAA,MAAAoM,EAAA2B,IAAA,YAAA6D,MAAAhC,kBAAA,SAAAA,kBAAAhQ,GAAA,QAAA0P,KAAA,MAAA1P,EAAA,IAAAyM,EAAA,cAAAwF,OAAArF,EAAAE,GAAA,OAAAK,EAAA/M,KAAA,QAAA+M,EAAAgB,IAAAnO,EAAAyM,EAAA2D,KAAAxD,EAAAE,IAAAL,EAAAkD,OAAA,OAAAlD,EAAA0B,IAAA3B,KAAAM,EAAA,QAAAA,EAAA,KAAA6D,WAAA9J,OAAA,EAAAiG,GAAA,IAAAA,EAAA,KAAAG,EAAA,KAAA0D,WAAA7D,GAAAK,EAAAF,EAAA6D,WAAA,YAAA7D,EAAAsD,OAAA,OAAA0B,OAAA,UAAAhF,EAAAsD,QAAA,KAAAsB,KAAA,KAAAxE,EAAAT,EAAAwB,KAAAnB,EAAA,YAAAM,EAAAX,EAAAwB,KAAAnB,EAAA,iBAAAI,GAAAE,EAAA,SAAAsE,KAAA5E,EAAAuD,SAAA,OAAAyB,OAAAhF,EAAAuD,UAAA,WAAAqB,KAAA5E,EAAAwD,WAAA,OAAAwB,OAAAhF,EAAAwD,iBAAA,GAAApD,GAAA,QAAAwE,KAAA5E,EAAAuD,SAAA,OAAAyB,OAAAhF,EAAAuD,UAAA,YAAAjD,EAAA,MAAAkC,MAAA,kDAAAoC,KAAA5E,EAAAwD,WAAA,OAAAwB,OAAAhF,EAAAwD,gBAAAR,OAAA,SAAAA,OAAAzD,EAAAxM,GAAA,QAAAyM,EAAA,KAAAkE,WAAA9J,OAAA,EAAA4F,GAAA,IAAAA,EAAA,KAAAK,EAAA,KAAA6D,WAAAlE,GAAA,GAAAK,EAAAyD,QAAA,KAAAsB,MAAAjF,EAAAwB,KAAAtB,EAAA,oBAAA+E,KAAA/E,EAAA2D,WAAA,KAAAxD,EAAAH,EAAA,OAAAG,IAAA,UAAAT,GAAA,aAAAA,IAAAS,EAAAsD,QAAAvQ,MAAAiN,EAAAwD,aAAAxD,EAAA,UAAAE,EAAAF,IAAA6D,WAAA,UAAA3D,EAAA/M,KAAAoM,EAAAW,EAAAgB,IAAAnO,EAAAiN,GAAA,KAAA0C,OAAA,YAAAS,KAAAnD,EAAAwD,WAAAjC,GAAA,KAAA0D,SAAA/E,IAAA+E,SAAA,SAAAA,SAAA1F,EAAAxM,GAAA,aAAAwM,EAAApM,KAAA,MAAAoM,EAAA2B,IAAA,gBAAA3B,EAAApM,MAAA,aAAAoM,EAAApM,KAAA,KAAAgQ,KAAA5D,EAAA2B,IAAA,WAAA3B,EAAApM,MAAA,KAAA4R,KAAA,KAAA7D,IAAA3B,EAAA2B,IAAA,KAAAwB,OAAA,cAAAS,KAAA,kBAAA5D,EAAApM,MAAAJ,IAAA,KAAAoQ,KAAApQ,GAAAwO,GAAA2D,OAAA,SAAAA,OAAA3F,GAAA,QAAAxM,EAAA,KAAA2Q,WAAA9J,OAAA,EAAA7G,GAAA,IAAAA,EAAA,KAAAyM,EAAA,KAAAkE,WAAA3Q,GAAA,GAAAyM,EAAAgE,aAAAjE,EAAA,YAAA0F,SAAAzF,EAAAqE,WAAArE,EAAAiE,UAAAG,cAAApE,GAAA+B,IAAA,eAAA4D,OAAA5F,GAAA,QAAAxM,EAAA,KAAA2Q,WAAA9J,OAAA,EAAA7G,GAAA,IAAAA,EAAA,KAAAyM,EAAA,KAAAkE,WAAA3Q,GAAA,GAAAyM,EAAA8D,SAAA/D,EAAA,KAAAI,EAAAH,EAAAqE,WAAA,aAAAlE,EAAAxM,KAAA,KAAA0M,EAAAF,EAAAuB,IAAA0C,cAAApE,GAAA,OAAAK,GAAA,MAAA2C,MAAA,0BAAA4C,cAAA,SAAAA,cAAArS,EAAAyM,EAAAG,GAAA,YAAAgD,SAAA,CAAAxC,SAAA2B,OAAA/O,GAAAmQ,WAAA1D,EAAA4D,QAAAzD,GAAA,cAAA+C,SAAA,KAAAxB,IAAA3B,GAAAgC,IAAAxO,EAKA,IAAIsS,EACAC,EACAC,EAAe,GAEbC,EAAUvS,SAASiF,cAAc,WACnCuN,EAA4BD,aAAO,EAAPA,EAASrR,aAAa,kCAEtDI,GAAGmR,OAAOC,KAAKC,QAAU,aAEzBrR,GAAGmR,OAAOC,KAAKE,WAAa,aAE5BtR,GAAGmR,OAAOC,KAAKG,QAAU,aAEzBvR,GAAGmR,OAAOK,kBAAoB,SAAUC,GACpC,GAAc,YAAVA,EAAqB,KAAAC,EACfC,EAAcjT,SAASgC,eAAe,oBAC5CiR,WAAarR,aAAa,cAAe,SAC7B,QAAZoR,EAAA1R,GAAG4R,iBAAS,IAAAF,GAAZA,EAAcG,MAAMlN,EAAE,wCAwB1B,GArBc,YAAV8M,IACI9M,EAAE,YAAYU,QACdrF,GAAG8R,QAAQjJ,OAGf7I,GAAGmR,OAAOY,yBACV/R,GAAGmR,OAAOa,mBAGA,WAAVP,GAAsB9M,EAAE,qBAAqBS,KAAK,6BAA6BC,QAC/EV,EAAEsN,UAAUjS,GAAGmR,OAAOe,kBAGZ,WAAVT,IACAX,EAAYpS,SAAS6F,iBAAiB,8DACtCwM,EAAYrS,SAAS6F,iBAAiB,0CACtCvE,GAAGmR,OAAOgB,WAAWrB,EAAW,aAChC9Q,GAAGmR,OAAOiB,WAAWrB,GACrBrS,SAASJ,iBAAiB,mBAAoB0B,GAAGiG,MAAMoM,yBAG7C,eAAVZ,EAAwB,CACxB,IAAMa,EAAc3N,EAAE,kBAClB2N,EAAYjN,QACZrF,GAAGuS,IAAIrS,GAAGsS,OAAOC,SAASH,GAIlCtS,GAAGmR,OAAOuB,sBACV1S,GAAGmR,OAAOwB,mBAAmB,qBACzBjT,OAAO2B,SAASE,KAAKqR,SAAS,SAC9B5S,GAAG6S,IAAIC,cACP9S,GAAG6S,IAAIhK,QAGX,IAAIkK,EAAarU,SAASiF,cAAc,gCACpCqP,EAAgBD,aAAU,EAAVA,EAAYpP,cAAc,kCAE9C,GACIqP,WAAepP,UAAUgP,SAAS,WAClCI,WAAepP,UAAUgP,SAAS,WAClCI,WAAepP,UAAUgP,SAAS,QAElC,IAAMK,EAAeC,aAAY,WACzBF,EAAcG,iBACdC,QAAQC,eAAe,CAACN,IACnBtL,MAAK,WACF6L,cAAcL,GACdvU,SAAS6U,cAAc,IAAIC,MAAM,wBACnC,OACK,SAAAC,GAAG,OAAIxL,QAAQyL,IAAID,EAAIE,cAEvC,MAyBX3T,GAAGmR,OAAOyC,qBAAuB,WAAY,IAAAC,EAAAC,EAMrC5B,EALA6B,EAAO,KACPC,EAAa,KACbC,EAAQ,KACRC,EAAiB,KACjBC,EAAa,KAEXC,EAAQzP,EAAE,QA+NhB,GA7NA3E,GAAGmR,OAAOkD,gBAEVrU,GAAGmR,OAAOmD,iBAEVtU,GAAGiG,MAAMsO,iBAETH,EAAMI,IAAI,SAAU,gBAAgB,SAAUhW,QAChBiW,IAAtBzU,GAAGmR,OAAOE,UAEVrR,GAAGmR,OAAOpS,QAAUiB,GAAGmR,OAAOE,QAC9BrR,GAAGmR,OAAO1Q,OAAST,GAAGmR,OAAOuD,WACzB1U,GAAGmR,OAAOwD,kBAAkBhQ,EAAE3G,SAE9BgC,GAAGmR,OAAOC,KAAKwD,WACX5U,GAAGmR,OAAOE,QACVrR,GAAGmR,OAAO0D,WACV7U,GAAGmR,OAAOuD,WACV,WACA,GACA,GAEJ/P,EAAE3E,GAAGmR,OAAO1Q,QAAQoJ,YAAY,SAChC7J,GAAG4R,UAAUkD,gBAAiB,GAElCnQ,EAAE,wBAAwBoQ,SAAS,CAC/BC,MAAO,QAKnBZ,EAAMlU,GAAG,QAAS,gBAAgB,SAAU1B,GACnCwB,GAAGmR,OAAOvL,UACXjB,EAAE3G,MAAMiX,QAAQ,YAIxBb,EAAMI,IAAI,QAAS,mBAAmB,SAAUhW,GAC5C,GAAIwB,GAAGmR,OAAOwD,kBAAkBhQ,EAAE3G,OAAQ,CACtC,IAAMkX,EAAsBC,MAAMC,KAC9B1W,SAAS6F,iBAAiB,oDAExB8Q,EAAiB3W,SAASgC,eAAe,uBAC3C4U,EAAyB,GAE7BJ,WAAqB3V,SAAQ,SAAAqS,GAAa,IAAA2D,EAChCC,EAA+D,QAA7CD,EAAG3D,EAAUjO,cAAc,0BAAkB,IAAA4R,OAAA,EAA1CA,EAA4CE,YACjEC,EAAiB9D,aAAS,EAATA,EAAWjO,cAAc,4BAC5CgS,EAAU,GAE4B,gBAAtCH,aAAkB,EAAlBA,EAAoBI,iBACpBD,EAAU,2BAAH5P,OAA8ByP,EAAkB,UAE3D,IAAMK,EAAoB,qDAAH9P,OAAwD4P,GAAO5P,OAAG2P,aAAc,EAAdA,EAAgBI,UAAS,UAClHR,EAAuBlG,KAAKyG,MAGhC,IAAME,EAAwB,0BAAHhQ,OAA6BuP,EAAuB3K,KAAK,IAAG,UAGvF,GAFA0K,EAAeW,mBAAmB,YAAaD,GAE3C7E,EAA2B,CAC3B,IAAM+E,EAAkBvX,SAAS6F,iBAAiB,qBAC5C2R,EAAS,IAAIC,IACnBF,GAAmBjW,GAAGmR,OAAOiF,oBAAoBH,GACjDC,EAAOG,qBAKnBjC,EAAMlU,GAAG,QAAS,mBAAmB,SAAU1B,GACtCwB,GAAGmR,OAAOvL,UACXjB,EAAE3G,MAAMiX,QAAQ,YAIe,QAAvCpB,EAAAnV,SAASiF,cAAc,wBAAgB,IAAAkQ,GAAvCA,EAAyCvV,iBAAiB,aAAa,SAAAE,GACnEA,EAAEY,oBAGNgV,EAAMI,IAAI,QAAS,gBAAgB,SAAUhW,QAChBiW,IAArBzU,GAAGmR,OAAOtK,SAEV7G,GAAGmR,OAAOpS,QAAUiB,GAAGmR,OAAOtK,OAC9B7G,GAAGmR,OAAO1Q,OAAST,GAAGmR,OAAOmF,UACzBtW,GAAGmR,OAAOwD,kBAAkBhQ,EAAE3G,SAE9BgC,GAAGmR,OAAOC,KAAKwD,WACX5U,GAAGmR,OAAOtK,OACV7G,GAAGmR,OAAOoF,WACVvW,GAAGmR,OAAOmF,UACV,UACA,GACA,GAEJ3R,EAAE3E,GAAGmR,OAAO1Q,QAAQoJ,YAAY,UAEpC3I,YAAW,WACPlB,GAAGmR,OAAOqF,gBACN,4DACA,EACA,OACA,UAEL,SAIXpC,EAAMlU,GAAG,QAAS,gBAAgB,SAAU1B,GACnCwB,GAAGmR,OAAOvL,UACXjB,EAAE3G,MAAMiX,QAAQ,YAIxBtQ,EAAEjG,UAAUwB,GAAG,QAAS,oDAAoD,SAAU1B,GAClFA,EAAEY,iBAEFuF,EAAE,qBAAqBY,OAAO,QAE9BwO,EAAOpP,EAAE3G,MAAM0K,KAAK,WACpBsL,EAAarP,EAAE3G,MACVmB,QAAQ,mBACRiG,KAAK,cAAgB2O,EAAO,KAEjC,IAAM0C,EAAmB/X,SAAS6F,iBAAiB,+BAE/CmS,EADuBhY,SAASiF,cAAc,mBACLY,iBAAiB,oBAE9DkS,WAAkBlX,SAAQ,SAAAR,IACXA,aAAO,EAAPA,EAAS4X,MACb,sBAAL5Q,OAA2BgO,GAAUhV,EAAQqE,MAAMwT,QAAU,OAAW7X,EAAQqE,MAAMwT,QAAU,WAGtGF,WAAmBnX,SAAQ,SAAAR,GACvB,IAAM8X,EAAkB9X,EAAQa,aAAa,QACjBb,EAAQqE,MAAMwT,QAA1CC,IAAoB9C,EAAgC,QAAoC,UAG5FpP,EAAE,SAASkF,YAAY,UACvBmK,EAAW5O,KAAK,iBAAmB2O,EAAO,KAAKjK,SAAS,UACxDkK,EAAW8C,OAEPnS,EAAE,qBAAqBoS,cAAgBpS,EAAEjF,QAAQqX,eACjDpS,EAAE,qBAAqBY,OAAOZ,EAAEjF,QAAQqX,cAAgBpS,EAAE,UAAUoS,eAExE/W,GAAGgX,QAAQC,OAAOnS,QAClB9E,GAAGgX,QAAQnO,UAGflE,EAAEjG,UAAUwB,GAAG,QAAS,uDAAuD,WAC3EyE,EAAE,+BAA+BsQ,QAAQ,YAG7Cb,EAAMlU,GAAG,QAAS,YAAY,SAAU1B,GAAG,IAAA0Y,EACvC1Y,EAAEY,iBACFZ,EAAEa,kBAEF,IAAM4U,EAAQtP,EAAE3G,MAEZmZ,EADmBxS,EAAE,sBACWxF,QAAQ,YAEvC8U,EAAMrP,SAAS,mBAChBuS,EAAa/R,KAAK,kBAAkByE,YAAY,iBAChDoK,EAAMnK,SAAS,kBAGf9J,GAAGmR,OAAOvL,WACYjB,EAAE,kBAEVmF,SAAS,WAG3B,IAAMsN,EAAwB,QAAXF,EAAG1Y,EAAEiC,cAAM,IAAAyW,OAAA,EAARA,EAAUtX,aAAa,QACvCyX,EAAkBD,aAAa,EAAbA,EAAexW,MAAM,GACvC0W,EAAmB5Y,SAASiF,cAAc,+CAADoC,OACKsR,EAAe,OAEnEC,WAAkBhX,aAAa,WAAY,KAC3CgX,WAAkBzX,WAGtB8E,EAAEjG,UAAUwB,GAAG,QAAS,oBAAoB,WACxC,IAAI+T,EAAQtP,EAAE3G,MACVuZ,EAAatD,EAAMvL,KAAK,WACR/D,EAAE,wBAA0B4S,EAAa,MAE/C1X,QACdoU,EAAMpK,YAAY,eAGtBlF,EAAEjF,QAAQQ,GAAG,QAAQ,WACbyE,EAAE,YAAYU,QAAUV,EAAE,YAAYU,QACtCV,EAAE,YAAYmF,SAAS,eAG3BnF,EAAE,iBAAiBnF,SACnBmF,EAAE,iBAAiBkF,YAAY,gBAE/BlF,EAAE,qDAAqDzE,GAAG,SAAS,SAAU1B,GACpEmG,EAAE3G,MAAM4G,SAAS,cAClBpG,EAAEY,iBACFZ,EAAEa,kBACFsF,EAAE3G,MAAM4Q,KAAK,8BAA8B4I,SAC3C7S,EAAE3G,MAAMyZ,KAAK,gBAAmD,SAAlC9S,EAAE3G,MAAMyZ,KAAK,iBAA8B,QAAU,QACnF9S,EAAE3G,MAAM0Z,OAAO,0BAA0BC,YAAY,mBAKjEhT,EAAE,gBAAgBzE,GAAG,SAAS,WAC1BF,GAAGmR,OAAOqF,gBAAgB,4DAA6D,EAAG,OAAQ,WAGtGpC,EAAMlU,GAAG,QAAS,SAAS,WAEvB,OADAF,GAAGmR,OAAOyG,gBAAgBjT,EAAE3G,QACrB,KAGXoW,EAAMlU,GAAG,QAAS,SAAS,WAEvB,OADAF,GAAGmR,OAAO0G,gBAAgBlT,EAAE3G,QACrB,KAGP2G,EAAE,sBAAsBU,OAAS,EAAG,CACpC,IAAMyS,EAAYnT,EAAE,0BAA0BC,SAAS,mBAAqB,aAAe,gBAE3FD,EAAE,0BAA0BmF,SAAS,oBACrCnF,EAAE,sBAAsBmF,SAAS,gBAAgB2N,KAAK,CAClD,oBAAqB,oBACrB,aAAcK,IAItB1D,EAAMlU,GAAG,QAAS,gFAAgF,SAAU1B,IArQhH,SAASuZ,iBAAiB9D,GACtB,IAAM+D,EAAiB/D,EAAMvL,KAAK,cAElC,GAAIwI,EAA2B,CAC3B,IAAM+E,EAAkBvX,SAAS6F,iBAAiB,qBAC5C2R,EAAS,IAAIC,IACnBF,GAAmBjW,GAAGmR,OAAOiF,oBAAoBH,GACjDC,EAAO+B,kBAAkBhE,EAAM,IAG9BtP,EAAE,iEAAiEC,SAAS,YAC7ED,EAAEuT,IAAIF,GACD9J,MAAK,SAAUiK,GACZxT,EAAE,iEAAiEmF,SAAS,cAE/EsO,MAAK,SAAUC,EAAOC,EAAYC,GAC/BtQ,QAAQyL,IAAI,8BAAgC6E,MAsPpDR,CAAiBpT,EAAE3G,UAGvB2G,EAAEjF,QAAQ0R,MAAK,WAIe,uBAHhB1R,OAAO2B,SAASE,KACP2F,MAAM,KACQ,IAE7BvC,EAAE,gFAAgF6T,QAAQja,WAIlGoG,EAAEjG,UAAUwB,GAAG,QAAS,kDAAkD,SAAU1B,GAC5EmG,EAAE3G,MAAMya,SAAS,gBAAgBpT,SACjC4O,EAAQtP,EAAE3G,MACVkW,EAAiBD,EAAM9U,QAAQ,qBAC/BgV,EAAaF,EAAM9U,QAAQ,qBAC3BO,OAAOwB,YAAW,YAEVgT,EAAe6C,cAAgB9C,EAAMyE,WAAW3V,IAAMkR,EAAM8C,eAC5D7C,EAAejR,YAAcgR,EAAMyE,WAAW3V,IAAMoR,EAAWuE,WAAW3V,MAE1EmR,EAAeyE,QACX,CACI1V,UAAWgR,EAAMyE,WAAW3V,IAAMoR,EAAWuE,WAAW3V,KAE5D,OAGT,SAIX4B,EAAEjG,UAAUwB,GAAG,QAAS,iBAAiB,SAAU1B,GAC/C,IACIoa,EADQjU,EAAE3G,MACWyZ,KAAK,QAC1BoB,EAAclU,EAAE,gBAAkBiU,GAEtC,GAAIC,EAAYxT,OAAS,EAAG,CAExB,GADA7G,EAAEY,iBACEyZ,EAAY1Z,UAAU2Z,GAAG,uBACzB,OAAO,EAEXnU,EAAEjF,QAAQuD,UAAU4V,EAAYE,SAAShW,KACzC8V,EAAYhZ,YAIpB8E,EAAEjF,QAAQQ,GAAG,QAAQ,WACjB,IAAI8Y,EAAsBrU,EAAEjG,UAAU0G,KAAK,gCACvC6T,EAAwBD,EAAoB7Z,QAAQ,uBAGpDO,OAAO2B,SAASE,KAAKzB,QAAQ,gCAAkC,GAC/DkZ,EAAoB3T,SACnB4T,EAAsBrU,SAAS,aAEhCoU,EAAoB/D,QAAQ,SAGhCtQ,EAAE,iCAAiCK,MAAK,SAAUkU,EAAOC,GACrD,IAAIC,EAAWzU,EAAEwU,GAAOV,WACpBY,EAAe,EAEfD,EAAS/T,OAAS,GAClB+T,EAASpU,MAAK,SAAUkU,EAAOI,GAC3B,IAAIC,EAAM5U,EAAE2U,GAAIlU,KAAK,MACjBoU,EAAW7U,EAAE2U,GAAIvC,cACP,IAAVmC,GACAK,EAAI3P,IAAI,MAAOyP,GAEnBA,GAAgBG,QAKxB7U,EAAE,cAAcU,QAChBV,EAAE,cAAciF,IAAI,UAAW,SAInCjF,EAAE,iBAAiBU,SACnBrF,GAAGmR,OAAOsI,eAEV9U,EAAEjF,QAAQQ,GAAG,iBAAiB,WAC1BF,GAAGmR,OAAOsI,mBAId9U,EAAE,kCAAkCU,QACpCnE,WAAWlB,GAAGmR,OAAOuI,oBAAqB,KAG9Cha,OAAOpB,iBAAiB,QAAQ,WACV0B,GAAGiG,MAAMqB,eAAe5I,SAAS6F,iBAAiB,aACtDc,QACVrF,GAAG8R,QAAQjJ,OAGf,IAAM8Q,EAA0Bjb,SAASiF,cAAc,oBAChCgW,aAAuB,EAAvBA,EAAyBhW,cAAc,kBAEtC3D,GAAGmR,OAAOvL,WAC9B5F,GAAGmR,OAAOC,KAAKwD,WAAW5U,GAAGmR,OAAOyI,QAAS5Z,GAAGmR,OAAO0I,WAAY7Z,GAAGmR,OAAO2I,WAAY,cAIjG,IAAMC,EAAuBrb,SAASiF,cAAc,kBAChDqW,EAAaD,aAAoB,EAApBA,EAAsBpW,cAAc,gBAGrDqW,WAAYhE,mBAAmB,WAFT,kFAItB,IAAMiE,EAA4Bvb,SAASiF,cAAc,gCACzD,GAAIsW,EAA2B,CAC3B,IAAMC,EAAgCD,EAA0BE,QAAQC,MACpEC,EAA8BJ,EAA0BtW,cAAc,uBAoBtE0W,IACAA,EAA4B/b,iBAAiB,SApB1B,SAAnBgc,iBAAmB9b,GACVA,EAAEQ,cAAcmb,QAAQI,YACzB/b,EAAEQ,cAAcmb,QAAQI,UAAY,OAChCL,GACA1S,MAAM0S,GAA+BzS,MAAK,kBAAM,SAiB5D4S,EAA4B/b,iBAAiB,WAbxB,SAArBkc,mBAAqBhc,GACH,UAAVA,EAAE6B,MACG7B,EAAEQ,cAAcmb,QAAQI,YACzB/b,EAAEQ,cAAcmb,QAAQI,UAAY,OAChCL,GACA1S,MAAM0S,GAA+BzS,MAAK,kBAAM,WAYxEqJ,EAAYpS,SAAS6F,iBAAiB,8DACtCwM,EAAYrS,SAAS6F,iBAAiB,0CACtC2N,EAA8D,QAA9C4B,EAAGpV,SAASiF,cAAc,4BAAoB,IAAAmQ,OAAA,EAA3CA,EAA6CtI,MAEhExL,GAAGmR,OAAOuB,sBACV1S,GAAGmR,OAAOwB,mBAAmB,qBAC7B3S,GAAGmR,OAAOsJ,uBACVza,GAAGmR,OAAOuJ,kBACV1a,GAAGmR,OAAOiB,WAAWrB,GAErB,IAAM4J,EAAqBzH,aAAY,WACnClT,GAAGmR,OAAOgB,WAAWrB,GAEjBoB,GACAoB,cAAcqH,KAEnB,MAGP3a,GAAGmR,OAAOgB,WAAa,SAAUrB,EAAW8J,GACxC,GAAI9J,EAAUzL,OAAQ,CAClB,IAAIwV,EAAiB,EACjBC,EAAqB,EAEnBC,EAAe5F,MAAMC,KAAKtE,GAC5BkK,EAAe,CAAC,UAAW,QAAS,UAAW,UAAW,QAAS,WAwDvED,EAAaxb,SAAQ,SAAC0b,EAAO/B,GACzB,IAAMgC,EAAeD,EACjBE,EAAcC,OAAOF,GACrBG,EAAUnC,EAEd+B,EAAM3a,aAAa,QAAS,SAEb,cAAXsa,GAA2F,IAAjE5J,EAAasK,QAAO,SAAAC,GAAI,OAAIA,EAAKF,UAAYA,KAAShW,OAChF2L,EAAa5B,KAAK,CACdiM,QAASA,EACTG,UAAWL,EAAYM,cAET,iBAAXb,GACP5J,EAAavG,KAAI,SAAA8Q,GAAI,OACjBA,EAAKF,UAAYA,EAAWF,EAAYM,YAAcF,EAAKC,UAAaD,KAIhFP,EAAazb,SAAQ,SAAAmc,GACjBP,EAAY7c,iBAAiBod,GAAI,SAAAtb,IA1EpB,SAAjBub,eAAkBvb,EAAOib,EAASH,EAAcC,GAC5C,IACIS,EADuBV,EAAa/b,QAAQ,kBACFwE,cAAc,oBAE5D,GAAIiY,EAAsB,CACtB,IAAMC,EAAoBD,EAAqBpQ,MAC3CsQ,EAAgBX,EAAYY,SAC5BC,EAAmBb,EAAYM,YAC/BQ,EAAY7b,EAAMxB,KAgBtB,GAdkB,YAAdqd,IACApB,EAAiBmB,GAGrBA,EAAmB,EACZlB,EAAqBkB,EAAmBnB,GACvCA,EAAiB,EAAKC,EAAqB,GAEpC,cAAXF,GACA5J,EAAavG,KAAI,SAAA8Q,GAAI,OACjBA,EAAKF,UAAYA,EAAWE,EAAKC,UAAYQ,EAAoBT,KAIrEM,QAAwD,IAA5BV,EAAYM,YAA6B,CACrE,OAAQQ,GACJ,IAAK,QACD,GAAId,EAAYM,cAAgBN,EAAYe,SAAU,OAAO,EAGrE,IAAMC,EAAM,GAAHpW,OAAM8V,EAAiB,oBAAA9V,OAAmBkW,EAAS,oBAAAlW,OAAmBiW,EAAgB,wBAAAjW,OAAuB+U,EAAkB,cAAA/U,OAAa+V,GACrJtU,MAAM2U,GAAK1U,MAAK,kBAAM,OA4C1BkU,CAAevb,EAAOib,EAASH,EAAcC,SAIrDzb,OAAOpB,iBAAiB,gBAAgB,SAAA8B,IA1CvB,SAAjBgc,eAAkBhc,EAAO+a,EAAaD,GAClC,GAAIC,EAAYM,YAAc,IAAMN,EAAYkB,SAAWlB,EAAYmB,MAAO,CAC1E,IAEIT,EAFuBX,EAAa/b,QAAQ,kBACPwE,cAAc,oBACf6H,MACpCsQ,EAAgBX,EAAYY,SAC5BC,EAAmBb,EAAYM,YAGnCX,EAAqBkB,EAAmBnB,EAExC,IAAIsB,EAAMN,EAAiB,GAAA9V,OAClB8V,EAAiB,oBAAA9V,OALV,QAKsC,oBAAAA,OAAmBiW,EAAgB,wBAAAjW,OAAuB+U,EAAkB,cAAA/U,OAAa+V,GACzI,GACNtU,MAAM2U,GAAK1U,MAAK,kBAAM,MA6B1B2U,CAAehc,EAAO+a,EAAaD,WAMnDlb,GAAGmR,OAAOiB,WAAa,SAAUrB,GAC7B,GAAIA,EAAU1L,OAAQ,CAClB,IAAIkX,EAAiB,EACjBC,EAAqB,EAEnBxB,EAAe,CAAC,UAAW,QAAS,UAAW,UAAW,QAAS,WACrEW,EAAiB,SAAjBA,eAAiBnd,GACb,IACIie,EADuBje,EAAEiC,OAAOtB,QAAQ,kBACHwE,cAAc,oBAEvD,GAAI8Y,EAAiB,CACjB,IAAMZ,EAAoBY,EAAgBjR,MACtCkR,EAAgBle,EAAEiC,OAAOsb,SACzBE,EAAYzd,EAAEI,KACd+d,EAAmBne,EAAEiC,OAAOgb,YAUhC,GARkB,YAAdQ,IACAM,EAAiBI,GAGrBA,EAAmB,EACZH,EAAqBG,EAAmBJ,GACvCA,EAAiB,EAAKC,EAAqB,GAE/CX,QAAqD,IAAzBrd,EAAEiC,OAAOgb,YAA6B,CAClE,OAAQQ,GACJ,IAAK,QACD,GAAIzd,EAAEiC,OAAOgb,cAAgBjd,EAAEiC,OAAOyb,SAAU,OAAO,EAG/D,IAAMC,EAAM,GAAHpW,OAAM8V,EAAiB,oBAAA9V,OAAmBkW,EAAS,oBAAAlW,OAAmB4W,EAAgB,wBAAA5W,OAAuByW,EAAkB,cAAAzW,OAAa2W,GACrJlV,MAAM2U,GAAK1U,MAAK,kBAAM,QAwBtCsJ,EAAUxR,SAAQ,SAAAqd,GACd5B,EAAazb,SAAQ,SAAAmc,GACjBkB,EAAMte,iBAAiBod,EAAIC,SAInCjc,OAAOpB,iBAAiB,gBA1BH,SAAjB8d,iBACIrL,EAAUxR,SAAQ,SAAAqd,GACd,GAAIA,EAAMnB,YAAc,IAAMmB,EAAMP,SAAWO,EAAMN,MAAO,CACxD,IAEIT,EAFuBe,EAAMzd,QAAQ,kBACAwE,cAAc,oBACf6H,MAEpCkR,EAAgBE,EAAMb,SACtBY,EAAmBC,EAAMnB,YAE7Be,EAAqBG,EAAmBJ,EAExC,IAAIJ,EAAMN,EAAiB,GAAA9V,OAClB8V,EAAiB,oBAAA9V,OAPV,QAOsC,oBAAAA,OAAmB4W,EAAgB,wBAAA5W,OAAuByW,EAAkB,cAAAzW,OAAa2W,GACzI,GACNlV,MAAM2U,GAAK1U,MAAK,kBAAM,cAe9CzH,GAAGmR,OAAOuJ,gBAAkB,WACxB,IAAMtG,EAAQzP,EAAE,QAEhB,GAAIyP,EAAMhP,KAAK,cAAcC,OAAQ,CACjC,IAAIwX,EAAWzI,EAAMhP,KAAK,cAEtB0X,EADUD,EAAS,GAAGE,KACC7V,MAAM,KAAK,GACtC2V,EAASpF,KAAK,aAAcqF,KAIpC9c,GAAGmR,OAAOkD,cAAgB,WACtB,IAAI2I,EAAM,GACNC,EAAM,GACNC,EAAY,GACZC,EAAOxY,EAAE,8CAGbA,EAAE,wDAAwDxE,OAEzC,IAAIid,kBAAiB,SAACC,EAAeC,GAClD,IAAMve,EAAUL,SAASiF,cAAc,gBACvC,GAAI5E,EAAS,CACT,IAAMwe,EAAiBxe,EAAQa,aAAa,YACtC4d,EAA2B9e,SAASgC,eAAe,sBAADqF,OAAuBwX,IAC/EC,IAA6BA,EAAyBpa,MAAMwT,QAAU,SAEtE0G,EAASG,iBAGRC,QAAQhf,SAAU,CAACif,WAAW,EAAMC,SAAS,IAEtDT,EAAKnY,MAAK,WACN,GAAIL,EAAE3G,MAAMoH,KAAK,SAASC,OAAQ,CAE9B,IAF8B,IAAAwY,EAErBpS,EAAI,EAAGA,GAAKuR,EAAI3X,OAAQoG,IAC7B,GAAIuR,EAAIvR,KAAO9G,EAAE3G,MAAMoH,KAAK,SAAS+S,OAEjC,YADAxT,EAAE3G,MAAMoH,KAAK,SAAS5F,SAK9Bwd,EAAI5N,KAAKzK,EAAE3G,MAAMoH,KAAK,SAAS+S,QAC/B8E,EAAI7N,KAAKzK,EAAE3G,MAAMyZ,KAAK,OACtByF,EAAU9N,KACmB,QAAzByO,EAAAlZ,EAAE3G,MAAMyZ,KAAK,oBAAY,IAAAoG,GAAzBA,EAA2BjL,SAAS,KAC9BjO,EAAE3G,MAAMyZ,KAAK,aAAavQ,MAAM,KAAK,GACrCvC,EAAE3G,MAAMyZ,KAAK,cAEvB9S,EAAE3G,MAAMoH,KAAK,SAAS5F,SACtBmF,EAAE3G,MAAMoH,KAAK,4BAA4B0Y,MAAM,0CAInDd,EAAI3X,QAAU,IACdV,EAAE,mBAAmBnF,SACrBmF,EAAE,8BAA8BmS,QAGpC,IAAK,IAAIrL,EAAI,EAAGA,EAAIuR,EAAI3X,OAAQoG,IAC5B9G,EAAE,mBAAmBW,OACjB,0BACI2X,EAAIxR,GACJ,eACAuR,EAAIvR,GACJ,mBACAuR,EAAIvR,GACJ,KACAuR,EAAIvR,GACJ,6BACAyR,EAAUzR,GACV,uBAIZ9G,EAAE,SAASmS,OACXqG,EAAK/X,KAAK,qBAAqB0E,SAAS,UAAUgN,OAClDnS,EAAE,yCAA2CqY,EAAI,GAAK,MAAMlG,QAGhE9W,GAAGmR,OAAOmD,eAAiB,WAEV,eADF5U,OAAO2B,SAASV,MAEvBO,YAAW,WACPyD,EAAE,mBAAmBpG,UACtB,MAIXyB,GAAGmR,OAAOqF,gBAAkB,SAAUuH,EAAMC,EAAYC,EAAWC,GAC/DvZ,EAAEoZ,GAAM/Y,MAAK,WACML,EAAE3G,MAER+W,SAAS,CACdC,MAAOgJ,EACPG,aAAa,EACbC,YAAaH,EACbI,YAAaH,QAKzBle,GAAGqE,aAAaia,yBAA2B,SAAUC,GACjD,IAAIphB,EAAU,KAed,YAbwEsX,IAApE8J,EAAInZ,KAAK,+BAA+BsD,KAAK,mBAC7CvL,EAAUohB,EAAInZ,KAAK,+BAA+BsD,KAAK,oBAEvDvL,EAAUohB,EAAInZ,KAAK,2BAA2BF,SACtCE,KAAK,UAAU5F,SAG3BsR,EAAYpS,SAAS6F,iBAAiB,2DACtCwM,EAAYrS,SAAS6F,iBAAiB,uCAEtCvE,GAAGmR,OAAOgB,WAAWrB,EAAW,gBAChC9Q,GAAGmR,OAAOiB,WAAWrB,GAEd5T,GAGXwH,EAAEjF,QAAQQ,GAAG,iCAAiC,WAC1C,IAAIse,EAAS,mDAEbxe,GAAGmR,OAAOqF,gBAAgB,4DAA6D,EAAG,OAAQ,QAClGxW,GAAGmR,OAAOqF,gBAAgB,eAAgB,EAAG,OAAQ,QACrDxW,GAAGmR,OAAOqF,gBAAgB,0DAA2D,EAAG,OAAQ,QAChGxW,GAAGmR,OAAOqF,gBAAgB,0BAA2B,EAAG,OAAQ,QAE5DxW,GAAGmR,OAAOvL,UACVjB,EAAE6Z,GAAQzJ,SAAS,WACnB/U,GAAGmR,OAAOsN,QAAQC,aAClBF,EAAS,wCACT7Z,EAAE6Z,GAAQzJ,SAAS,CACfC,MAAO,EACPpW,KAAM,OACNuf,aAAa,EACbC,YAAa,kBACbC,YAAa,oBACbM,kBAAkB,EAClB/Y,UAAU,EACVgZ,aAAc,QACdC,WAAW,KAGfla,EAAE6Z,GAAQzJ,SAAS,CACfC,MAAO,EACPpW,KAAM,OACNuf,aAAa,EACbC,YAAa,kBACbC,YAAa,oBACbM,kBAAkB,EAClBE,WAAW,IAInB7e,GAAGmR,OAAOsJ,0BAGd/b,SAASJ,iBAAiB,sBAAsB,WAC5C4C,YAAW,WACPlB,GAAGiG,MAAM6Y,wBACV,QAEP9e,GAAGiG,MAAM8Y,oBAET/e,GAAGmR,OAAOC,KAAK4N,YAAc,WACzB,IAAMC,EAAsBjf,GAAGiG,MAAMqB,eAAe5I,SAAS6F,iBAAiB,iCAE9E,GAAI0a,EAAoB5Z,OAAQ,CAC5B,IAAI6Z,GAAW,EAETC,EAAmB,SAAnBA,iBAAmB3gB,GACjBA,EAAEQ,cAAcC,UAAUC,SAAS,iBAAmBggB,IACtDlf,GAAGmR,OAAOC,KAAKwD,WACX5U,GAAGmR,OAAOyI,QACV5Z,GAAGmR,OAAO0I,WACV7Z,GAAGmR,OAAO2I,WACV,WACA,GACA,GAEJoF,GAAW,IAInBD,EAAoB1f,SAAQ,SAAAgc,GACxB,CAAC,QAAS,SAAShc,SAAQ,SAAAmc,GACvBH,EAAKjd,iBAAiBod,EAAIyD,WAM1Cnf,GAAGmR,OAAOiO,mBAAqB,WAC3B,IAAMC,EAAe3gB,SAASiF,cAAc,sBACxC2b,EAAiBD,aAAY,EAAZA,EAAclF,QAAQoF,WACvCC,EAAW9f,OAAO2B,SAASV,KAC3B8e,EAAU,CACNlO,QAAS,UACTD,WAAY,aACZD,QAAS,UACTuI,QAAS,WAqEb8F,EAA2B,eAAbF,EAA4B,aAAeH,aAAY,EAAZA,EAAclF,QAAQoF,WAE/EF,GArEgB,SAAhBM,gBAAsC,IAC9BC,EAAQC,EAAcC,EAUnBC,EAXML,EAAWM,UAAA3a,OAAA,QAAAoP,IAAAuL,UAAA,GAAAA,UAAA,GAAG,IAE3BX,EACK1b,cAAc,WAADoC,OAAYsZ,EAAazf,aAAa,oBAAmB,MACtEW,gBAAgB,YAErBqf,EAASP,EAAa1b,cAAc,IAADoC,OAAK2Z,EAAW,WAG/CG,EAAeD,EAAOzc,cACtB2c,EAAUT,EAAa1b,cAAc,iBAADoC,OAAkB2Z,EAAW,SAEjEA,EAAcJ,EAEdO,EAAqB,QAATE,EADZH,EAASP,EAAa1b,cAAc,IAADoC,OAAKuZ,EAAc,gBACjC,IAAAS,OAAA,EAANA,EAAQ5c,cACvB2c,EAAUT,EAAa1b,cAAc,iBAADoC,OAAkBuZ,EAAc,QAGxE,GAAIA,IAAmBtf,GAAGmR,OAAOvL,SAI7B,OAHAia,EAAa5gB,UAAU4D,IAAI,UAC3Bid,EAAQ7gB,UAAU4D,IAAI,UAEd4c,EAAQC,IACZ,IAAK,UACD1f,GAAGmR,OAAOC,KAAKwD,WACX5U,GAAGmR,OAAOtK,OACV7G,GAAGmR,OAAOoF,WACVvW,GAAGmR,OAAOmF,UACV,UACA,GACA,GAEJ,MACJ,IAAK,aACDtW,GAAGmR,OAAOC,KAAKwD,WACX5U,GAAGmR,OAAOG,WACVtR,GAAGmR,OAAOkF,cACVrW,GAAGmR,OAAO8O,cACV,cACA,GACA,GAEJ,MACJ,IAAK,UACDjgB,GAAGmR,OAAOC,KAAKwD,WACX5U,GAAGmR,OAAOE,QACVrR,GAAGmR,OAAO0D,WACV7U,GAAGmR,OAAOuD,WACV,WACA,GACA,GAEJ,MACJ,IAAK,UACD1U,GAAGmR,OAAOC,KAAKwD,WACX5U,GAAGmR,OAAOyI,QACV5Z,GAAGmR,OAAO0I,WACV7Z,GAAGmR,OAAO2I,WACV,WACA,GACA,IAUpB6F,CAAcD,IAItB1f,GAAGmR,OAAOsJ,qBAAuB,WACzB9V,EAAE,iBAAiBU,QACnBV,EAAE,iBAAiBiF,IAAI,MAAOjF,EAAE,eAAeY,WAIvDvF,GAAGmR,OAAOuB,oBAAsB,WACxB1S,GAAGkgB,KAAKC,QAAUxb,EAAE,wBAAwBU,QAC5CV,EAAE,wBAAwBK,MAAK,SAAUkU,EAAO0D,GAC5C,IAAMwD,EAASzb,EAAEiY,GACbyD,EAAYD,EAAOhb,KAAK,UAAUqS,KAAK,SAEvC4I,EAAUvgB,QAAQ,QAAU,GAAKugB,EAAUvgB,QAAQ,QAAU,KAC7DsgB,EAAOxR,KAAK,gBAAgB/E,YAAY,UACxCuW,EAAO5gB,cAMvBQ,GAAGmR,OAAOwB,mBAAqB,SAAA9U,GAC3B,IAAMyiB,EAAY5hB,SAASiF,cAAc9F,GAEzC,GAAIyiB,EAAW,CACX,IAAMC,EAAiBD,EAAU/b,iBAAiB,oCAC9Cic,EAAU,eAAAC,EAAAC,IAAA3V,sBAAA8E,MAAG,SAAA8Q,QAAMniB,GAAC,IAAAoiB,EAAAC,EAAApE,EAAAqE,EAAA7E,EAAA8E,EAAAC,EAAAC,EAAA9E,EAAA,OAAApR,sBAAAsB,MAAA,SAAA6U,SAAAC,GAAA,cAAAA,EAAA9Q,KAAA8Q,EAAAvS,MAAA,OACmC,KAA7CgS,EAAWpiB,EAAEiC,OAAOtB,QAAQ,mBACpB,CAAFgiB,EAAAvS,KAAA,SAcP,GAbG4R,EAAaI,EAASjd,cAAc,gBACpC8Y,EAAkBmE,EAASzG,QAAQiH,cACnCN,EAAiBtiB,EAAEiC,OAAOsb,SAC1BE,EAAYzd,EAAEI,KACdmiB,EAASviB,EAAEiC,OAAO4gB,WAAWN,OAAOtL,YACpCuL,EAAY,oBACZC,EAAYF,EAAOO,QAAQN,EAAW,WACtB,EAChB7E,EAAM,GAENM,IACAN,EAAM,GAAHpW,OAAM0W,EAAe,oBAAA1W,OAAmBkW,EAAS,iCAAAlW,OAAgC+a,GACpFtZ,MAAM2U,GAAK1U,MAAK,kBAAM,OAGtBsZ,EAAQ,CAAFI,EAAAvS,KAAA,gBAAAuS,EAAAvS,KAAA,EACgB5O,GAAGmR,OAAOoQ,YAAYN,GAAU,OAAzC,IAAAE,EAAA7S,KAEM,CAAF6S,EAAAvS,KAAA,gBAAAuS,EAAA1S,OAAA,kBAKrBjQ,EAAEiC,OAAOjB,SACTghB,WAAYvhB,UAAUO,OAAO,UAAU,yBAAA2hB,EAAA5Q,UAAAoQ,aAE9C,gBA7BDH,WAAUgB,GAAA,OAAAf,EAAAgB,MAAA,KAAAzB,YAAA,GA+BVO,EAAelb,QACfkb,EAAehhB,SAAQ,SAAAgc,GACnBA,EAAKjd,iBAAiB,QAASkiB,QAM/CxgB,GAAGmR,OAAOoQ,YAAW,eAAAG,EAAAhB,IAAA3V,sBAAA8E,MAAG,SAAA8R,SAAgBZ,GAAM,IAAArZ,EAAA,OAAAqD,sBAAAsB,MAAA,SAAAuV,UAAAC,GAAA,cAAAA,EAAAxR,KAAAwR,EAAAjT,MAAA,cAAAiT,EAAAxR,KAAA,EAAAwR,EAAAjT,KAAA,EAEfpH,MAAMuZ,GAAO,OAAtB,GAEU,OAFlBrZ,EAAQma,EAAAvT,MAEDwT,OAAc,CAAAD,EAAAjT,KAAA,eAAAiT,EAAApT,OAAA,UAChB,GAAI,aAEL,IAAIR,MAAM,eAADlI,OAAgB2B,EAASoa,SAAS,OAAAD,EAAAjT,KAAA,wBAAAiT,EAAAxR,KAAA,GAAAwR,EAAAE,GAAAF,EAAA,SAAAA,EAAApT,OAAA,UAG9C,GAAK,yBAAAoT,EAAAtR,UAAAoR,SAAA,mBAEnB,gBAAAK,GAAA,OAAAN,EAAAD,MAAA,KAAAzB,YAZoB,GAcrBhgB,GAAGmR,OAAOsI,aAAe,WACrB,IAAIwI,EAAgBtd,EAAE,iBAClBud,EAAaD,EAAclJ,SAAShW,IACpCof,EAAcF,EAAclJ,SAAS7V,KACrCkf,EAAeH,EAAcI,aAC7BC,EAAgBL,EAAclL,cAE9BpS,EAAEjF,QAAQuD,YAAcif,GACxBD,EAAc,GAAG7e,MAAML,IAAM,IAC7Bkf,EAAcrY,IAAI,cAAe0Y,GACjCL,EAAc7c,KAAK,cAAc0E,SAAS,aAAaF,IAAI,CACvD7G,IAAK,EACLG,KAAMif,EACN/Z,MAAOga,MAGXH,EAAc,GAAG7e,MAAML,IAAM,IAC7Bkf,EAAcrY,IAAI,cAAe,KACjCqY,EAAc7c,KAAK,cAAcyE,YAAY,aAAaD,IAAI,CAC1D7G,IAAK,OACLqF,MAAO,OACPlF,KAAM,WAKlBlD,GAAGmR,OAAOuI,oBAAsB,WAC5B,IAAI6I,EAAmB5d,EAAE,kCACrB6d,EAAUD,EAAiBnd,KAAK,eAChCqd,EAAQF,EAAiBnd,KAAK,SAC9Bsd,EAAc,gCAAH3c,OAAmC4c,mBAAmB,GAAD5c,OAAIrG,OAAO2B,SAASuhB,SAAQ,oBAE5FJ,EAAQnd,QACRod,EAAMnd,OAAO,8BAADS,OAA+B2c,EAAW,yCAI9D1iB,GAAGmR,OAAOY,uBAAyB,WAC/B,IAAM8Q,EAAmBnkB,SAASiF,cAAc,qBAChD,GAAIkf,EAAkB,CAgJlBA,EAAiBvkB,iBAAiB,SA/IN,SAAtBwkB,oBAAsBtkB,GACxB,IAAMukB,EAAOC,KAAKC,MAAsB,GAAhBD,KAAKE,UAwI7B1kB,EAAEQ,cAAcmb,QAAQgJ,aAAe,GAAHpd,OAAMgd,GAC1CvkB,EAAEQ,cAAcC,UAAU4D,IAAI,cAE9B3B,YA1IoB,SAAhBkiB,gBACI,IAAMC,EAAkBrjB,GAAGiG,MAAMqB,eACzB5I,SAAS6F,iBAAiB,oCAE9B+e,EACkB,mBADlBA,EAEiB,gBAajBC,EAAoB,SAApBA,kBAAoB/kB,GAChB,IAAMglB,EAAyBhlB,EAAEiC,OAAO0Z,QAAQsJ,mBAC5CC,EAAuBhlB,SAASiF,cAAc,yCAADoC,OACAyd,EAAsB,OAEvEE,WAAsB7jB,QACtB6jB,WAAsBzkB,UAAUO,OAAO,eAG3C6jB,EAAgBhe,QAChBge,EAAgB9jB,SAAQ,SAAAgc,GACpBA,EAAKoI,MAAQ,YACb,IAAM9lB,EAAU0d,EAAKpc,QAAQ,qBAE7B,GAAItB,EACA,GAA8B,UAA1BA,EAAQuF,MAAMwT,QAAqB,CACnC,IAAMgN,EAAO/lB,EAAQ8F,cAAc,0BAC/BkgB,EAAQhmB,EAAQ8F,cAAc,2BAC9BmgB,EAASjmB,EAAQ8F,cAAc,4BAC/BogB,EAAcrlB,SAAS2E,cAAc,OACrC2gB,EAAWnmB,EAAQ8F,cAAc,+BAwBrC,GAfA9F,EAAQyC,aAAa,WAAY,MACjCzC,EAAQyC,aAAa,OAAQ,UAC7BzC,EAAQyC,aAAa,aAAc,oBAE/B0jB,IACAA,EAASnkB,QACTmkB,EAAS/kB,UAAU4D,IAAIygB,GACvBU,EAAS1jB,aAAa,aAAc,gBACpC0jB,EAAS7J,QAAQsJ,mBAAqB,GAAH1d,OAAMgd,IAG7CgB,EAAY9kB,UAAU4D,IAAIygB,GAC1BS,EAAYzjB,aAAa,WAAY,KACrCyjB,EAAYzjB,aAAa,cAAe,QAEpCujB,EAAO,CACP,IAAKC,EAAQ,CACTD,EAAM7N,mBAAmB,YAzBb,ydA0BZ,IAAMiO,EAAsBJ,EAAMlgB,cAC1B,qCAEJugB,EAAcL,EAAMlgB,cAAc,4BAEtCsgB,EAAoB7gB,MAAM+gB,cAAgB,GAAHpe,OACnCme,EAAc,GAAHne,OAAMme,EAAY9hB,aAAY,MAAO,IAGxDyhB,EAAM5hB,YAAY8hB,GAEtBH,WAAMzgB,cAAc7C,aAAa,aAAc,kBAE/C,IAAM8jB,EAAgBpkB,GAAGiG,MAAMqB,eAC3BzJ,EAAQ0G,iBACJ,iFAIJ6f,EAAc/e,SACd+e,EAAc7kB,SAAQ,SAACgc,EAAMrC,GACzBqC,EAAKpB,QAAQkK,WAAanL,EAE1BqC,EAAKjd,iBAAiB,SAAS,SAAAE,GAAK,IAAA8lB,EAC1BC,EAAkB1mB,SAEvB,QAF8BymB,EAAPzmB,EAAS8F,cAAc,IAADoC,OACtCud,WACP,IAAAgB,OAF8B,EAAPA,EAErBnK,QAAQkK,YAEXD,EAAc3Z,KAAI,SAAA+Z,GAAE,OAChBA,EAAGvlB,UAAUO,OAAO8jB,MAGxB9kB,EAAEiC,OAAOxB,UAAU4D,IAAIygB,GAEnB9kB,EAAEiC,OAAOxB,UAAUC,SAASokB,MACN9kB,EAAEiC,OAAO0Z,QAAQkK,WACnBE,GAChBH,EAAc,GAAGvkB,eAMjCukB,EAAc,GAAG9lB,iBAAiB,YAAY,SAAAE,GAEtCA,EAAEimB,oBAC4C,IAAvCjmB,EAAEimB,cAActK,QAAQkK,YAE/BD,EAAcA,EAAc/e,OAAS,GAAGxF,iBAKpDhC,EAAQsF,cAAcuhB,YAAY7mB,MAMlD,IAAM8mB,EAAsB3kB,GAAGiG,MAAMqB,eACjC5I,SAAS6F,iBAAiB,gCAE1BogB,EAAoBtf,QACpBsf,EAAoBplB,SAAQ,SAAAgc,GAAI,OAAIA,EAAKjd,iBAAiB,QAASilB,MAGvE7kB,SAASJ,iBAAiB,WA5HJ,SAAlBsmB,gBAAkBpmB,GACd,GAAIA,EAAE6B,IAAIuS,SAAS,OAAQ,CACvB,IAAMiS,EAAkBnmB,SAASgC,eAAe,oBAChD,GAAImkB,GAAqD,UAAlCA,EAAgBzhB,MAAMwT,QAAqB,CAC9DiO,EAAgBzhB,MAAMwT,QAAU,OAChC,IAAM8M,EAAuBhlB,SAASiF,cAAc,gCACpD+f,WAAsB7jB,QACtB6jB,WAAsBzkB,UAAUO,OAAO,2BAkI3EQ,GAAGmR,OAAOa,gBAAkB,WACxB,IAAM8S,EAAcpmB,SAASiF,cAAc,oBAC3C,GAAImhB,EAAa,CAEb,IAyFIC,EAAoB7R,aAzFC,SAAnB8R,mBACF,IAAMC,EAAmBH,EAAYnhB,cAAc,yBAC/CuhB,EAAoBxmB,SAASiF,cAAc,wBAC3CwhB,EAAezmB,SAASiF,cAAc,mBAE1C,GAAIshB,GAAoBC,GAAqBC,EAAc,CACvD7R,cAAcyR,GACd,IAAMK,EAAsB1mB,SAASiF,cAAc,YAC/C0hB,EAAiBJ,aAAgB,EAAhBA,EAAkBthB,cAAc,OACjD2hB,EAAWD,aAAc,EAAdA,EAAgBE,IAC3BC,EAAuBJ,aAAmB,EAAnBA,EAAqBzhB,cAAc,oBAC1D8hB,IAAgBJ,WAAgBlmB,QAAQ,qBACxCumB,EAAOF,aAAoB,EAApBA,EAAsBrL,QAAQuL,KACrCC,EAAmBjnB,SAASiF,cAAc,iCAADoC,OAAkC2f,EAAI,OAC/EE,EAAwBD,aAAgB,EAAhBA,EAAkBhiB,cAAc,8BACxDkiB,EAAgB,IAAIrS,MAAM,YAC1BsS,EAAiB,IAAItS,MAAM,aAI3BuS,EAASrnB,SAASiF,cAAc,YAChCqiB,EAAgBtnB,SAASiF,cAAc,qBAQvCsiB,EAAe,SAAfA,eACIhB,WAAkB1R,cAAcsS,GAChCZ,WAAkBplB,QAClBolB,WAAkB3kB,aAAa,gBAAiB,SAChDN,GAAG8R,QAAQ5R,GAAGgmB,gBAkClBf,GAAgBD,GAAqBM,IAAsBJ,EAAoBnmB,UAAU4D,IAAI,YAC7F4iB,GACAX,EAAY7lB,UAAU4D,IAAI,YAE9BoiB,GAjD2B,SAAvBkB,qBAAuB3B,GACnBA,EAAGlkB,aAAa,OAAQ,UACxBkkB,EAAGlkB,aAAa,gBAAiB,SACjCkkB,EAAGlkB,aAAa,KAAM,aACtBkkB,EAAGlkB,aAAa,aAAcglB,GAC9Bd,EAAGlkB,aAAa,OAAQ,sBA4CZ6lB,CAAqBlB,GACzCA,WAAkB3mB,iBAAiB,SArCT,SAAtB8nB,oBAAsB5nB,GAClBA,EAAEY,iBACFZ,EAAEiC,OAAO8S,cAAcuS,GACvBb,WAAkB3kB,aAAa,gBAAiB,QAC5CslB,GACA1kB,YAAW,WACP,IAAMmlB,EAAkBV,EAAiBhiB,cAAc,sBACnD2iB,EAAeX,EAAiBhiB,cAAc,mBAIlDiiB,EAAsBtlB,aAAa,WAAY,MAC/CslB,EAAsB/lB,SACrBymB,GAAgBV,EAAsB5P,mBAAmB,YA7BlE,uHA8BSqQ,GAAmBT,EAAsB5P,mBAAmB,WAhCzD,iFAkCJ4P,EAAsBtnB,iBAAiB,SARf,SAApBioB,kBAAoB/nB,GAAC,OACjBA,EAAEiC,OAAOxB,UAAUC,SAAS,mBAAqB+mB,SAQ1D,QAqBfhB,WAAkB3mB,iBAAiB,aAfb,SAAlBkoB,kBAMI9nB,SAASwD,KAAK5D,iBAAiB,WALJ,SAArBmoB,mBAAqBjoB,GACT,WAAVA,EAAE6B,KAAuD,UAAnCslB,EAAiBviB,MAAMwT,UAC7CqO,WAAkB1R,cAAcsS,UAahDE,EAAOznB,iBAAiB,QAAS2nB,GACjCD,EAAc1nB,iBAAiB,SAAU2nB,GAErCL,IACAA,EAAsBtlB,aAAa,kBAAmB2kB,aAAgB,EAAhBA,EAAkBtO,IACxEiP,EAAsBtlB,aAAa,KAAM,GAAFyF,OAAKkf,aAAgB,EAAhBA,EAAkBtO,GAAE,KAAA5Q,OAAI2f,IACpET,WAAkB3kB,aAAa,gBAAiBslB,EAAsBjP,IACtEiP,EAAsBtnB,iBAAiB,YA1BrB,SAAlBooB,gBAAkBloB,GAAC,OACfA,EAAEimB,gBAAkBjmB,EAAEimB,cAActlB,QAAQ,+BAAiC8mB,OA0BjFL,EAAsBtnB,iBAAiB,WAzBhB,SAAvBqoB,qBAAuBnoB,GAAC,MAAc,WAAVA,EAAE6B,KAAoB4lB,aA2B3B,MAApBW,GACPtT,cAAcyR,GAElB6B,GAAmB,MAE+B,KAClDA,EAAkB,EAEtB5mB,GAAGiG,MAAM6Y,wBAIjB9e,GAAGmR,OAAOiF,oBAAsB,SAAAnY,GAC5BA,EAASsB,SAAQ,SAAAR,GACb,GAAmC,KAA/BA,EAAQ0W,YAAYrO,OAAe,CACnC,IAAMyf,EAAc9nB,EAAQ+nB,mBACtBC,EAAcF,aAAW,EAAXA,EAAaC,mBACjCC,WAAa9nB,UAAU4D,IAAI,eAC3BgkB,aAAW,EAAXA,EAAa5nB,UAAUC,SAAS,qBAAsB2nB,EAAYrnB","file":"js/article-b4711f516bf4821998e0.js","sourcesContent":["import {\n ComponentObject,\n ComponentSelectors,\n ComponentElements,\n ComponentService,\n ComponentInjector,\n ComponentSelector,\n UIComponent,\n Inject,\n Injectable,\n} from '@atypon/ui-utils';\nimport {keyCodes} from '../../../utility/js/utils'\n\nimport { VPortListener } from \"ui-core/plugins/enquireJs/js/helper\"\n\ninterface FootnoteComponents {\n noteContainer: HTMLElement | null;\n chevronDown: HTMLElement | null;\n noteClose: HTMLElement | null;\n}\n\n@Injectable()\nclass Configs {\n notePopup(content: string): string {\n return `\n
${content}
\n ` };\n\n}\n\nclass Texts extends ComponentObject { }\n\nclass ClassList extends ComponentObject {\n accordionControl = '.accordion__control';\n jsOpen = 'js--open';\n citedByArticleSection = '.article-section__citedBy';\n}\n\nclass Selectors extends ComponentSelectors {\n supportInfo = new ComponentSelector(\"a[href$='#support-information-section']\", \"document\");\n supportInfoControl = new ComponentSelector('.article-section__supporting a.accordion__control', \"document\");\n openResearch = new ComponentSelector(\"a[href$='#open-research-section']\", \"document\");\n openResearchControl = new ComponentSelector('.article-section__open-research a.accordion__control', \"document\");\n links = new ComponentSelector('[data-db-target-of=sections] a, .scrollableLink, .scrollableLinks a, .comment-link a, .PdfLink a[href=\"#accessDenialLayout\"], .article-section__full a[href*=\"#\"], [href=\"#citedby-section\"]', 'document');\n\n}\n\nclass Elements extends ComponentElements {\n supportInfo: HTMLAnchorElement;\n supportInfoControl: HTMLAnchorElement;\n openResearch: HTMLAnchorElement;\n openResearchControl: HTMLAnchorElement;\n links: HTMLElement[] = []\n}\n\n\ninterface GoToSection extends ComponentService { }\n\n\n@ComponentInjector(Selectors, Elements, ClassList, Texts)\nclass GoToSection implements UIComponent {\n\n\n @Inject()\n protected configs: Configs;\n\n\n @VPortListener('md')\n isTablet = false;\n\n\n constructor(readonly wrapper: HTMLElement) { }\n\n initialize(): void {\n this.elements.initialize(this.wrapper);\n this.addEventListeners();\n }\n\n isTabletOn() {\n this.isTablet = true;\n }\n\n isTabletOff() {\n this.isTablet = false;\n }\n\n addEventListeners(): void {\n this.domUtils.addEventListener(this.elements.supportInfo, 'click', () => this.elements.supportInfoControl.click())\n\n this.domUtils.addEventListener(this.elements.openResearch, \"click\", () => this.elements.openResearchControl.click())\n\n this.domUtils.addEventListener(this.elements.links, \"click\", (e) => this.flowControl(e))\n\n this.domUtils.addEventListener(this.elements.links, \"keydown\", (e) => this.flowControl(e))\n\n this.domUtils.addEventListener(document, \"keydown\", (e: KeyboardEvent) => this.escapeKeyHandler(e))\n }\n\n flowControl(e):void{\n\n if(e.type === \"keydown\" && e.keyCode !== keyCodes.RETURN) return;\n\n const element = e.currentTarget as HTMLAnchorElement\n\n if (\n element.classList.contains('open-figure-link') ||\n element.classList.contains('bibLink') ||\n element.classList.contains('tab-link') ||\n element.closest('.accordion__control') ||\n element.closest('.figure__toggle-link')\n ) {\n return;\n } else {\n\n e.preventDefault();\n e.stopPropagation();\n this.domUtils.getElements(\"html , body\").forEach(e => e.classList.remove('lock-screen'))\n\n if (element.classList.contains('noteLink')) {\n this.openFootNote(element);\n window.addEventListener('resize', () => {\n this.openFootNote(element);\n });\n } else if (element.classList.contains('backToText')) {\n this.domUtils.getElement(element.getAttribute('href')).focus();\n } else if (\n element.classList.contains('goToText') ||\n element.closest('.article-header__references-container') ||\n element.getAttribute('href').indexOf('#accessDenialLayout') > -1\n ) {\n this.scrollToTarget(element, true);\n this.domUtils.getElement(element.getAttribute('href')).focus();\n } else {\n this.scrollToTarget(element, true);\n (window as any).UX.dropBlock.on.hide();\n if (this.isTablet) {\n this.domUtils.getElement('[data-db-target-of=sections]').click();\n this.domUtils.getElement('.w-slide__back').click();\n }\n }\n\n if (element.closest('.sections__drop.js--open')) {\n (window as any).UX.dropBlock.on.hide();\n }\n }\n }\n\n escapeKeyHandler(event: KeyboardEvent):void{\n if (event.key === \"Escape\") {\n this.domUtils.getElement(\".noteLink.scrollableLink\")?.setAttribute('aria-expanded', 'false')\n this.domUtils.getElement(\".noteLink.scrollableLink\")?.removeAttribute('aria-controls')\n this.domUtils.getElement(\".footNotePopup\")?.remove();\n }\n }\n\n scrollToTarget(element: HTMLAnchorElement, refID: boolean): void {\n let target = refID ? this.domUtils.getElementById(element.hash.slice(1)) : element;\n target = target ? target : this.domUtils.getElement('[name=\"' + element.hash.slice(1) + '\"]')\n const clickTarget = target?.closest(this.classList.accordionControl) as HTMLElement;\n if (clickTarget && target?.closest(this.classList.citedByArticleSection)) {\n const citedBySection = target?.closest(this.classList.citedByArticleSection) as HTMLElement,\n accordionControl = this.domUtils.getElement(this.classList.accordionControl, citedBySection)\n\n if (!accordionControl.classList.contains(this.classList.jsOpen)) {\n accordionControl.click();\n }\n } else if (\n clickTarget &&\n !clickTarget.classList.contains(this.classList.jsOpen)\n ) {\n clickTarget.click();\n }\n\n if (target) {\n \n target.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n target.setAttribute('tabindex', '0')\n setTimeout(() => {\n target.focus();\n }, 750)\n\n if (target.tagName !== 'a' && target.tagName !== 'button') {\n target.setAttribute('tabindex', '-1');\n }\n }\n else {\n this.redirectToExternalLink(element);\n }\n }\n\n redirectToExternalLink(element: HTMLAnchorElement): void {\n window.location.assign(element.href);\n }\n\n openFootNote(noteLink: HTMLElement): void {\n this.domUtils.getElements('.footNotePopup').forEach(note => note.remove());\n\n this.domUtils.getElements('.noteLink.scrollableLink').forEach(note => note.setAttribute('aria-expanded', 'false'));\n\n const { noteContainer, chevronDown, noteClose } = this.createFootNote(noteLink),\n parentTable = this.isNodeInsideNode(noteLink, 'TBODY'); // return the parent table if exist , otherwise return null\n if (parentTable instanceof HTMLElement) {\n parentTable.appendChild(noteContainer);\n } else {\n document.body.appendChild(noteContainer);\n }\n\n let noteHeight = noteContainer.offsetHeight,\n topOffset = 0,\n leftOffset = 0,\n leftOffsetToTheParent = 0,\n parentWidth = 0,\n parentHeight = 0;\n\n if (parentTable instanceof HTMLElement) {\n topOffset = noteLink.offsetTop;\n leftOffset = noteLink.offsetLeft;\n leftOffsetToTheParent = noteLink.offsetLeft - parentTable.offsetLeft;\n parentWidth = parentTable.offsetWidth;\n parentHeight = parentTable.offsetHeight;\n noteContainer.classList.add('insideTable');\n } else {\n topOffset = noteLink.getBoundingClientRect().top + document.documentElement.scrollTop;\n leftOffset = noteLink.getBoundingClientRect().left;\n leftOffsetToTheParent = noteLink.offsetLeft;\n parentWidth = noteLink.parentElement.offsetWidth;\n }\n\n if (this.isNodeInsideNode(noteLink, 'THEAD')) {\n chevronDown.classList.add('inverse');\n noteContainer.style.top = `${topOffset + 35}px`;\n noteContainer.classList.add('insideHead');\n } else {\n noteContainer.style.top = `${topOffset - noteHeight - 5}px`;\n }\n\n // to change the left & right direction based on the noteLink position\n if (parentWidth / 2 > leftOffsetToTheParent) {\n noteContainer.style.left = `${leftOffset + 2}px`;\n chevronDown.classList.add('left');\n } else {\n noteContainer.style.left = `${leftOffset - noteContainer.offsetWidth + 22}px`;\n chevronDown.classList.add('right');\n }\n\n // to change the up & down direction based on the noteLink position\n if (parentHeight / 2 > topOffset) {\n chevronDown.classList.add('inverse');\n noteContainer.style.top = `${topOffset + 35}px`;\n }\n\n noteClose.addEventListener('click', () => {\n noteLink.setAttribute('aria-expanded', 'false');\n noteLink.removeAttribute('aria-controls');\n noteContainer.remove();\n });\n }\n\n createFootNote(noteLink: HTMLElement): FootnoteComponents {\n const noteContainer: HTMLElement = document.createElement('div');\n noteContainer.classList.add(\"footNotePopup\");\n\n const noteID = noteLink.getAttribute('data-noteid'),\n controllerId = noteLink.getAttribute('id'),\n popupId = noteLink.getAttribute('href').substring(1), // to remove '#'\n noteContent = document.querySelector(`li#${noteID}`).innerHTML;\n\n noteContainer.innerHTML = this.configs.notePopup(noteContent);\n noteLink.setAttribute('aria-expanded', 'true');\n noteLink.setAttribute('aria-controls', popupId);\n noteContainer.setAttribute('id', popupId);\n noteContainer.setAttribute('aria-labelledby', controllerId);\n\n const chevronDown = this.domUtils.getElement('.chevronDown', noteContainer),\n noteClose = this.domUtils.getElement('.footNoteClose', noteContainer);\n\n return { noteContainer, chevronDown, noteClose };\n }\n\n // to determine if the notelink exist inside XYZ node or not because different styles going to be applied if yes.\n // return false if not , if true return the XYZ node itself .\n isNodeInsideNode(node: HTMLElement, parentNode: string): boolean | HTMLElement {\n if (node.tagName === parentNode) return node;\n return node.parentNode !== document.body && this.isNodeInsideNode(node.parentNode as HTMLElement, parentNode);\n }\n\n}\n\nexport default GoToSection;","import 'ui-core/components/figure-viewer/js/figure-viewer-script';\nimport GoToSection from '../../go-to-section/js/goToSection';\nimport {keyCodes} from '../../../utility/js/utils';\n\n(function () {\n const figureViewer = UX.figureViewer;\n const figureNumbers = document.querySelectorAll('.figure__image');\n let nodesToBeDisabled = [];\n\n figureViewer.removeFigureTitle = function () {};\n\n figureViewer.additionalBrowse = function () {\n if ($('#pane-pcw-figures').hasClass('empty')) {\n figureViewer.$browseContainer.empty();\n figureViewer.$figures.each(function () {\n let $fig = $(this).clone(true);\n let $figureLinks = $fig.find('.figure-links');\n\n if ($figureLinks.length) {\n $figureLinks.remove();\n }\n figureViewer.$browseContainer.append($fig);\n });\n }\n };\n\n figureViewer.height = function (element) {\n let $windowsHeight = $(window).innerHeight();\n figureViewer.$topRegHeight = $('.figure-viewer__reg__top').innerHeight();\n let $height = $windowsHeight - figureViewer.$topRegHeight; //LIT-360726\n if (figureViewer.isMobile) {\n $height -= figureViewer.$captionRegion.find('.figure-viewer__title').height();\n const captionRegion = document.querySelector('.figure-viewer__cent__right');\n if (captionRegion) {\n captionRegion.style.height = `${$height}px`;\n }\n }\n $('.figure-viewer__cent__left').find('figure').height($height);\n };\n\n figureViewer.on.additionalOnShow = function () {\n const figureViewer = document.querySelector('.figure-viewer');\n\n UX.utils.focusCycleInitiator(figureViewer);\n const adFocusableEl = document.querySelector('.js--adFocusableEl');\n if (adFocusableEl && adFocusableEl.tabIndex === -1) {\n adFocusableEl.tabIndex = 0;\n }\n nodesToBeDisabled = UX.utils.disableNodes(figureViewer);\n\n if (figureViewer.querySelector('.figure__highResImgReplacer'))\n figureViewer.addEventListener('click', function () {\n const zoomIn = figureViewer.querySelector('.zoom-in');\n zoomIn.click();\n });\n };\n\n figureViewer.on.additionalOnHide = function () {\n const adFocusableEl = document.querySelector('.js--adFocusableEl');\n if (adFocusableEl && adFocusableEl.tabIndex === 0) {\n adFocusableEl.tabIndex = -1;\n }\n nodesToBeDisabled.forEach(element => {\n element.inert = false;\n });\n figureViewer.$focusedElementBeforeOpened.focus();\n };\n\n if (figureNumbers.length === 1) {\n figureViewer.$figureNav.hide();\n }\n\n figureViewer.additionalReplace = function () {\n const goToSection = new GoToSection();\n const figure = document.getElementById('figure-viewer');\n const figureImage = figure?.querySelector('.figure__image');\n const sectionImages = figure?.querySelectorAll('.section_image');\n const imageType = figureImage?.src?.split('.').pop().trim();\n const figureCaptionLinks = UX.utils.convertToArray(\n figure?.querySelectorAll('.figure-viewer__hold__figcap a:not(.linkBehavior)')\n );\n figureCaptionLinks?.forEach(link => {\n link.addEventListener('click', e => {\n figureViewer.on.hide();\n goToSection?.flowControl(e);\n });\n });\n\n if (imageType === 'svg') {\n fetch(figureImage.src)\n .then(response => response.text())\n .then(svgText => {\n const svgElement = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgElement.innerHTML = svgText;\n\n const feFlood = svgElement?.querySelector('feFlood');\n const floodColor = feFlood?.getAttribute('flood-color');\n if (!floodColor) {\n figureImage.classList.add('bg-white');\n }\n })\n .catch(error => console.error(error));\n }\n\n sectionImages?.forEach(image => {\n const canvas = document.createElement('canvas');\n canvas.width = image.width;\n canvas.height = image.height;\n\n // Draw the image on the canvas\n const context = canvas.getContext('2d');\n context.drawImage(image, 0, 0);\n\n // Get the pixel data of the top-left corner (0,0) on the canvas\n const pixelData = context.getImageData(0, 0, 1, 1).data;\n if (pixelData[0] === 0 && pixelData[1] === 0 && pixelData[2] == 0) {\n image.classList.add('bg-white');\n }\n });\n };\n\n figureViewer.zoom.panzoom = {\n // zoom in functionality\n init: function () {\n if (typeof $.fn.panzoom != 'undefined') {\n figureViewer.$image.panzoom({\n $zoomIn: figureViewer.$zoominbtn,\n $zoomOut: figureViewer.$zoomoutbtn,\n $zoomRange: figureViewer.$zoomrange,\n $reset: figureViewer.$zoomreset,\n panOnlyWhenZoomed: false,\n minScale: 1,\n });\n const directionControls = document.querySelector('.direction-control');\n figureViewer.$image.on('panzoomchange', function (e) {\n if (figureViewer.$zoomrange.val() === '1') {\n figureViewer.$image.css('transform', 'matrix(1, 0, 0, 1, 0, 0)');\n $(this).removeClass('zoomed');\n directionControls.classList.add('hidden');\n } else {\n $(this).addClass('zoomed');\n directionControls.classList.remove('hidden');\n const figureViewer = document.querySelector('.figure-viewer');\n\n UX.utils.focusCycleInitiator(figureViewer);\n }\n });\n }\n },\n };\n\n const inlineEquations = document.querySelectorAll('.inline-equation__construct .figure__image');\n inlineEquations?.forEach(equation => {\n if (!equation.closest('.figure')) {\n equation.addEventListener('click', e => {\n e.preventDefault();\n e.stopPropagation();\n });\n }\n });\n const STEP_MOVE = 50;\n\n const updateMatrix = (matrixStr, direction) => {\n const matrixValues = matrixStr.match(/[-0-9.]+/g).map(Number);\n\n switch (direction) {\n case 'up':\n matrixValues[5] -= STEP_MOVE;\n break;\n\n case 'down':\n matrixValues[5] += STEP_MOVE;\n break;\n\n case 'left':\n matrixValues[4] -= STEP_MOVE;\n break;\n\n case 'right':\n matrixValues[4] += STEP_MOVE;\n break;\n\n default:\n break;\n }\n\n return `matrix(${matrixValues.join(', ')})`;\n };\n\n const moveControlHandler = e => {\n const figure = document.querySelector('.figure-viewer__hold__fig figure');\n let originalMatrix = '';\n if (figure.style.transform === 'none') {\n originalMatrix = 'matrix(1, 0, 0, 1, 0, 0)';\n } else {\n originalMatrix = figure.style.transform;\n }\n const direction = e.target.getAttribute('direction');\n figure.style.transform = updateMatrix(originalMatrix, direction);\n };\n\n document.querySelectorAll('.direction-control span').forEach(control => {\n control.addEventListener('click', e => moveControlHandler(e));\n control.addEventListener('keydown', e => {\n if (e.key === 'Enter' || e.keyCode === keyCodes.RETURN || e.key === ' ' || e.keyCode === keyCodes.SPACE) {\n moveControlHandler(e);\n }\n });\n });\n})();\n","import 'ui-core/widgets/publication-content/js/publication-content';\nimport 'ui-core/components/coolbar/js/coolbar';\nimport 'element-closest-polyfill';\nimport 'core-js/es/array/map';\nimport GetFTR from '../../../components/getFTR/js/getFTR';\n\nlet videoList,\n audioList,\n videoInfoArr = [];\n\nconst article = document.querySelector('article'),\n isGetFTRReferencesEnabled = article?.getAttribute('data-getFTR-references-enabled');\n\nUX.loader.load.related = function () {};\n\nUX.loader.load.references = function () {};\n\nUX.loader.load.figures = function () {};\n\nUX.loader.getContentSuccess = function ($elem) {\n if ($elem === 'related') {\n const relatedPane = document.getElementById('pane-pcw-related');\n relatedPane?.setAttribute('aria-hidden', 'false');\n UX.accordion?.logic($('#pane-pcw-related .accordion-tabbed'));\n }\n\n if ($elem === 'details') {\n if ($('.tooltip').length) {\n UX.tooltip.init();\n }\n\n UX.loader.crossMarkAccessibility();\n UX.loader.altMetricLoader();\n }\n\n if ($elem === 'figure' && $('#pane-pcw-figures').find('.cloudflare-stream-player').length) {\n $.getScript(UX.loader.cloudFlareScript);\n }\n\n if ($elem === 'figure') {\n videoList = document.querySelectorAll('#pane-pcw-figures .figure__video .cloudflare-stream-player');\n audioList = document.querySelectorAll('#pane-pcw-figures .figure__audio audio');\n UX.loader.videoMedia(videoList, 'figureTab');\n UX.loader.audioMedia(audioList);\n document.addEventListener('figureTabTypeset', UX.utils.mathOnlyFallbackViewer);\n }\n\n if ($elem === 'references') {\n const jsScrollTab = $('.js--scrollTab');\n if (jsScrollTab.length) {\n UX.tab.on.select.external(jsScrollTab);\n }\n }\n\n UX.loader.showAudioSupportMsg();\n UX.loader.streamErrorHandler('#pane-pcw-figures');\n if (window.location.href.includes('utm')) {\n UX.utm.setElements();\n UX.utm.init();\n }\n\n let tabContent = document.querySelector('.tabs__wrapper .tab__content'),\n contentLoaded = tabContent?.querySelector('.active:not(#pane-pcw-related)');\n\n if (\n contentLoaded?.innerHTML.includes('mathrm') ||\n contentLoaded?.innerHTML.includes('textrm') ||\n contentLoaded?.innerHTML.includes('math')\n ) {\n const applyMathJax = setInterval(() => {\n if (contentLoaded.hasChildNodes()) {\n MathJax.typesetPromise([tabContent])\n .then(() => {\n clearInterval(applyMathJax);\n document.dispatchEvent(new Event('figureTabTypeset'));\n })\n .catch(err => console.log(err.message)); // eslint-disable-line no-console\n }\n }, 2000);\n }\n};\n\nfunction referencesBottom($this) {\n const referencesLink = $this.data('references');\n\n if (isGetFTRReferencesEnabled) {\n const dataDoiElements = document.querySelectorAll('.getFTR .data-doi');\n const getFTR = new GetFTR();\n dataDoiElements && UX.loader.removeGetFTRElement(dataDoiElements);\n getFTR.articleReferences($this[0]);\n }\n\n if (!$('.article-section__references:has(.getFTR) .accordion__control').hasClass('clicked')) {\n $.get(referencesLink)\n .done(function (html) {\n $('.article-section__references:has(.getFTR) .accordion__control').addClass('clicked');\n })\n .fail(function (jqXHR, textStatus, errorThrown) {\n console.log('error occure on the server ' + errorThrown); // eslint-disable-line no-console\n });\n }\n}\n\nUX.loader.additionalController = function () {\n var lang = null,\n langParent = null,\n $this = null,\n $wSlideContent = null,\n $accordion = null,\n cloudFlareScript = null;\n const $body = $('body');\n\n UX.loader.abstractLangs();\n\n UX.loader.referencesHash();\n\n UX.utils.menuRoleButton();\n\n $body.one('click ', '.related-tab', function (e) {\n if (UX.loader.related !== undefined) {\n // check if related' service url has been defined\n UX.loader.element = UX.loader.related;\n UX.loader.target = UX.loader.tabRelated;\n if (UX.loader.isArticleTabEmpty($(this))) {\n // check if figures panes is empty\n UX.loader.load.articleTab(\n UX.loader.related,\n UX.loader.relatedTab,\n UX.loader.tabRelated,\n 'related',\n false,\n false\n ); // get related content\n $(UX.loader.target).removeClass('empty');\n UX.accordion.hideAllBoolean = false;\n }\n $('.creative-work .meta').truncate({\n lines: 1,\n });\n }\n });\n\n $body.on('focus', '.related-tab', function (e) {\n if (!UX.loader.isMobile) {\n $(this).trigger('click');\n }\n });\n\n $body.one('click', '.references-tab', function (e) {\n if (UX.loader.isArticleTabEmpty($(this))) {\n const referencesAccordion = Array.from(\n document.querySelectorAll('.article-section__references .article-accordion')\n );\n const referencesPane = document.getElementById('pane-pcw-references');\n let referencesSectionsBulk = [];\n\n referencesAccordion?.forEach(accordion => {\n const accordionTitleText = accordion.querySelector('.section__title')?.textContent;\n const referencesList = accordion?.querySelector('.accordion__content > ul');\n let titleEl = '';\n\n if (accordionTitleText?.toLowerCase() !== 'references') {\n titleEl = `

${accordionTitleText}

`;\n }\n const referencesSection = `
${titleEl}${referencesList?.outerHTML}
`;\n referencesSectionsBulk.push(referencesSection);\n });\n\n const referencesPaneContent = `
${referencesSectionsBulk.join('')}
`;\n referencesPane.insertAdjacentHTML('beforeend', referencesPaneContent);\n\n if (isGetFTRReferencesEnabled) {\n const dataDoiElements = document.querySelectorAll('.getFTR .data-doi');\n const getFTR = new GetFTR();\n dataDoiElements && UX.loader.removeGetFTRElement(dataDoiElements);\n getFTR.referencesTab();\n }\n }\n });\n\n $body.on('focus', '.references-tab', function (e) {\n if (!UX.loader.isMobile) {\n $(this).trigger('click');\n }\n });\n\n document.querySelector('#article_Ctrl')?.addEventListener('mousedown', e => {\n e.preventDefault();\n });\n\n $body.one('click', '.figures-tab', function (e) {\n if (UX.loader.figure !== undefined) {\n // check if related' service url has been defined\n UX.loader.element = UX.loader.figure;\n UX.loader.target = UX.loader.tabFigure;\n if (UX.loader.isArticleTabEmpty($(this))) {\n // check if figures panes is empty\n UX.loader.load.articleTab(\n UX.loader.figure,\n UX.loader.figuresTab,\n UX.loader.tabFigure,\n 'figure',\n false,\n false\n ); // get figure content\n $(UX.loader.target).removeClass('empty');\n }\n setTimeout(function () {\n UX.loader.captionTruncate(\n '.tab__content figcaption.figure__caption .figure__caption',\n 5,\n 'show',\n 'hide'\n );\n }, 1000);\n }\n });\n\n $body.on('focus', '.figures-tab', function (e) {\n if (!UX.loader.isMobile) {\n $(this).trigger('click');\n }\n });\n\n $(document).on('click', '.abstract-group .article-section__abstract .lang', function (e) {\n e.preventDefault();\n\n $('.article-row-left').height('auto');\n\n lang = $(this).data('lang-of');\n langParent = $(this)\n .closest('.abstract-group')\n .find('[data-lang=' + lang + ']');\n\n const abstractElements = document.querySelectorAll('[id^=\"abstract-graphical-\"]'),\n abstractParentHolder = document.querySelector('.abstract-group'),\n abstractLanguages = abstractParentHolder.querySelectorAll('[id^=\"section-\"]');\n\n abstractElements?.forEach(element => {\n const id = element?.id;\n id !== `abstract-graphical-${lang}` ? (element.style.display = 'none') : (element.style.display = 'unset');\n });\n\n abstractLanguages?.forEach(element => {\n const sectionLanguage = element.getAttribute('lang');\n sectionLanguage === lang ? (element.style.display = 'block') : (element.style.display = 'none');\n });\n\n $('.lang').removeClass('active');\n langParent.find('[data-lang-of=' + lang + ']').addClass('active');\n langParent.show();\n\n if ($('.article-row-left').outerHeight() < $(window).outerHeight()) {\n $('.article-row-left').height($(window).outerHeight() - $('header').outerHeight());\n }\n UX.coolbar.holder.empty();\n UX.coolbar.init();\n });\n\n $(document).on('click', '.figure-viewer .figureLink, .figure-viewer .bibLink', function () {\n $('.figure-viewer__ctrl__close').trigger('click');\n });\n\n $body.on('click', '.bibLink', function (e) {\n e.preventDefault();\n e.stopPropagation();\n\n const $this = $(this),\n $articleRowRight = $('.article-row-right'),\n $rootArticle = $articleRowRight.closest('article');\n\n if (!$this.hasClass('js--scrollTab')) {\n $rootArticle.find('.js--scrollTab').removeClass('js--scrollTab');\n $this.addClass('js--scrollTab');\n }\n\n if (UX.loader.isMobile) {\n const $slideBackBtn = $('.w-slide__back');\n\n $slideBackBtn.addClass('js--bib');\n }\n\n const referenceLink = e.target?.getAttribute('href');\n const referenceTarget = referenceLink?.slice(1);\n const tabReferenceItem = document.querySelector(\n `.references-tab__collection li[data-bib-id=\\'${referenceTarget}\\']`\n );\n tabReferenceItem?.setAttribute('tabindex', '0');\n tabReferenceItem?.focus();\n });\n\n $(document).on('click', '.back-to-article', function () {\n let $this = $(this),\n dataBackTo = $this.data('back-to'),\n articleTarget = $('.js--scrollTab[href=\"' + dataBackTo + '\"]');\n\n articleTarget.focus();\n $this.removeClass('js--show');\n });\n\n $(window).on('load', function () {\n if ($('.coolBar').length && $('.w-slide').length) {\n $('.w-slide').addClass('padding-top');\n }\n\n $('.hideOnJSLoad').remove();\n $('.showOnJSLoad').removeClass('showOnJSLoad');\n //LIT-188190\n $('.coolBar--accessDenail .accordion-tabbed__control').on('click', function (e) {\n if (!$(this).hasClass('external')) {\n e.preventDefault();\n e.stopPropagation();\n $(this).next('.accordion-tabbed__content').toggle();\n $(this).attr('aria-expanded', $(this).attr('aria-expanded') === 'true' ? 'false' : 'true');\n $(this).parent('.accordion-tabbed__tab').toggleClass('js--open');\n }\n });\n });\n\n $('.figures-tab').on('click', function () {\n UX.loader.captionTruncate('.tab__content figcaption.figure__caption .figure__caption', 5, 'show', 'hide');\n });\n\n $body.on('click', '.more', function () {\n UX.loader.captionShowMore($(this));\n return false;\n });\n\n $body.on('click', '.less', function () {\n UX.loader.captionShowLess($(this));\n return false;\n });\n\n if ($('.corrections-label').length > 0) {\n const dataLabel = $('.corrections-container').hasClass('article-related') ? 'Article(s)' : 'Correction(s)';\n\n $('.corrections-body > ul').addClass('corrections-list');\n $('.corrections-label').addClass('w-slide__btn').attr({\n 'data-slide-target': '.corrections-body',\n 'data-label': dataLabel,\n });\n }\n\n $body.on('click', '.article-section__references:has(.getFTR) .accordion__control:not(.js--open)', function (e) {\n referencesBottom($(this));\n });\n\n $(window).load(function () {\n var url = window.location.href;\n var splitURL = url.split('#');\n var referencesSection = splitURL[1];\n if (referencesSection === 'references-section') {\n $('.article-section__references:has(.getFTR) .accordion__control:not(.js--open)').first().click();\n }\n });\n\n $(document).on('click', '.w-slide .accordion-tabbed__tab:not(.js--open)', function (e) {\n if ($(this).children('.author-name').length) {\n $this = $(this);\n $wSlideContent = $this.closest('.w-slide__content');\n $accordion = $this.closest('.accordion-tabbed');\n window.setTimeout(function () {\n if (\n $wSlideContent.outerHeight() < $this.position().top + $this.outerHeight() ||\n $wSlideContent.scrollTop() > $this.position().top - $accordion.position().top\n ) {\n $wSlideContent.animate(\n {\n scrollTop: $this.position().top - $accordion.position().top,\n },\n 250\n );\n }\n }, 500);\n }\n });\n\n $(document).on('click', '.skip-links a', function (e) {\n var $item = $(this),\n itemDataSkip = $item.attr('href'),\n $skipTarget = $('.article-row ' + itemDataSkip);\n\n if ($skipTarget.length > 1) {\n e.preventDefault();\n if ($skipTarget.closest().is('.transplanted-clone')) {\n return false;\n }\n $(window).scrollTop($skipTarget.offset().top);\n $skipTarget.focus();\n }\n });\n\n $(window).on('load', function () {\n var $supportInfoSection = $(document).find('#support-information-section'),\n $supportInfoAccordion = $supportInfoSection.closest('.accordion__control');\n\n if (\n window.location.href.indexOf('#support-information-section') > 0 &&\n $supportInfoSection.length &&\n !$supportInfoAccordion.hasClass('js--open')\n ) {\n $supportInfoSection.trigger('click');\n }\n\n $('.article-section__table thead').each(function (index, thead) {\n var $headRow = $(thead).children(),\n stickyHeight = 0;\n\n if ($headRow.length > 1) {\n $headRow.each(function (index, tr) {\n var $th = $(tr).find('th'),\n trHeight = $(tr).outerHeight();\n if (index !== 0) {\n $th.css('top', stickyHeight);\n }\n stickyHeight += trHeight;\n });\n }\n });\n\n if ($('#gs-casa-r').length) {\n $('#gs-casa-r').css('z-index', '10');\n }\n });\n\n if ($('.fixedCoolBar').length) {\n UX.loader.fixedCoolBar();\n\n $(window).on('scroll resize', function () {\n UX.loader.fixedCoolBar();\n });\n }\n\n if ($('.seamlessAccessDenial__wrapper').length) {\n setTimeout(UX.loader.seamlessAccessDelay, 5000);\n }\n\n window.addEventListener('load', () => {\n const tooltipEl = UX.utils.convertToArray(document.querySelectorAll('.tooltip'));\n if (tooltipEl.length) {\n UX.tooltip.init();\n }\n\n const mobileDetailsTabWrapper = document.querySelector('.w-slide--list'),\n mobileDetailsTab = mobileDetailsTabWrapper?.querySelector('.details-tab');\n\n if (mobileDetailsTab || UX.loader.isMobile) {\n UX.loader.load.articleTab(UX.loader.details, UX.loader.detailsTab, UX.loader.tabDetails, 'details');\n }\n });\n\n const articleAdvertSection = document.querySelector('.articleAdvert'),\n bottomAdEl = articleAdvertSection?.querySelector('.advert-rail'),\n fakeFocusableEl = '
';\n\n bottomAdEl?.insertAdjacentHTML('afterend', fakeFocusableEl);\n\n const supportInformationSection = document.querySelector('.article-section__supporting');\n if (supportInformationSection) {\n const supportInformationSectionData = supportInformationSection.dataset.suppl,\n supportInformationAccordion = supportInformationSection.querySelector('.accordion__control'),\n showSupplOnClick = e => {\n if (!e.currentTarget.dataset.triggered) {\n e.currentTarget.dataset.triggered = 'true';\n if (supportInformationSectionData) {\n fetch(supportInformationSectionData).then(() => false);\n }\n }\n },\n showSupplOnKeydown = e => {\n if (e.key === 'Enter') {\n if (!e.currentTarget.dataset.triggered) {\n e.currentTarget.dataset.triggered = 'true';\n if (supportInformationSectionData) {\n fetch(supportInformationSectionData).then(() => false);\n }\n }\n }\n };\n\n if (supportInformationAccordion) {\n supportInformationAccordion.addEventListener('click', showSupplOnClick);\n supportInformationAccordion.addEventListener('keydown', showSupplOnKeydown);\n }\n }\n\n videoList = document.querySelectorAll('#article__content .figure__video .cloudflare-stream-player');\n audioList = document.querySelectorAll('#article__content .figure__audio audio');\n cloudFlareScript = document.querySelector('.cloudFlareScript')?.value;\n\n UX.loader.showAudioSupportMsg();\n UX.loader.streamErrorHandler('.article__content');\n UX.loader.fixedToolbarPosition();\n UX.loader.setTPRAriaLabel();\n UX.loader.audioMedia(audioList);\n\n const cloudFlareInterval = setInterval(function () {\n UX.loader.videoMedia(videoList);\n\n if (cloudFlareScript) {\n clearInterval(cloudFlareInterval);\n }\n }, 3000);\n};\n\nUX.loader.videoMedia = function (videoList, source) {\n if (videoList.length) {\n let videoStartTime = 0,\n videoPlayingPeriod = 0;\n\n const videoListArr = Array.from(videoList),\n streamEvents = ['playing', 'pause', 'seeking', 'waiting', 'ended', 'stalled'],\n streamAnalysis = (event, videoId, videoElement, videoObject) => {\n const figureVideoElement = videoElement.closest('.figure__video'),\n trackMediaUrlElement = figureVideoElement.querySelector('.track-media-url');\n\n if (trackMediaUrlElement) {\n const trackMediaUrlData = trackMediaUrlElement.value,\n videoAutoplay = videoObject.autoplay,\n videoCurrentTime = videoObject.currentTime,\n eventType = event.type;\n\n if (eventType === 'playing') {\n videoStartTime = videoCurrentTime;\n }\n\n videoCurrentTime > 0\n ? (videoPlayingPeriod = videoCurrentTime - videoStartTime)\n : ((videoStartTime = 0), (videoPlayingPeriod = 0));\n\n if (source === 'figureTab') {\n videoInfoArr.map(item =>\n item.videoId === videoId ? (item.videoTime = videoCurrentTime) : item\n );\n }\n\n if (trackMediaUrlData && typeof videoObject.currentTime !== 'undefined') {\n switch (eventType) {\n case 'pause':\n if (videoObject.currentTime === videoObject.duration) return false;\n break;\n }\n const url = `${trackMediaUrlData}&mediaEventType=${eventType}&mediaPosition1=${videoCurrentTime}&mediaPlayingPeriod=${videoPlayingPeriod}&autoplay=${videoAutoplay}`;\n fetch(url).then(() => false);\n }\n }\n\n return false;\n },\n onBrowserClose = (event, videoObject, videoElement) => {\n if (videoObject.currentTime > 0 && !videoObject.paused && !videoObject.ended) {\n const figureVideoElement = videoElement.closest('.figure__video'),\n trackMediaUrlEl = figureVideoElement.querySelector('.track-media-url'),\n trackMediaUrlData = trackMediaUrlEl.value,\n videoAutoplay = videoObject.autoplay,\n videoCurrentTime = videoObject.currentTime,\n eventType = 'pause';\n\n videoPlayingPeriod = videoCurrentTime - videoStartTime;\n\n let url = trackMediaUrlData\n ? `${trackMediaUrlData}&mediaEventType=${eventType}&mediaPosition1=${videoCurrentTime}&mediaPlayingPeriod=${videoPlayingPeriod}&autoplay=${videoAutoplay}`\n : '';\n fetch(url).then(() => false);\n }\n };\n\n videoListArr.forEach((video, index) => {\n const videoElement = video,\n videoObject = Stream(videoElement),\n videoId = index;\n\n video.setAttribute('title', 'Video');\n\n if (source === 'figureTab' && videoInfoArr.filter(item => item.videoId === videoId).length === 0) {\n videoInfoArr.push({\n videoId: videoId,\n videoTime: videoObject.currentTime,\n });\n } else if (source === 'figureViewer') {\n videoInfoArr.map(item =>\n item.videoId === videoId ? (videoObject.currentTime = item.videoTime) : item\n );\n }\n\n streamEvents.forEach(ev => {\n videoObject.addEventListener(ev, event => {\n streamAnalysis(event, videoId, videoElement, videoObject);\n });\n });\n\n window.addEventListener('beforeunload', event => {\n onBrowserClose(event, videoObject, videoElement);\n });\n });\n }\n};\n\nUX.loader.audioMedia = function (audioList) {\n if (audioList.length) {\n let audioStartTime = 0,\n audioPlayingPeriod = 0;\n\n const streamEvents = ['playing', 'pause', 'seeking', 'waiting', 'ended', 'stalled'],\n streamAnalysis = e => {\n const figureAudioElement = e.target.closest('.figure__audio'),\n trackMediaUrlEl = figureAudioElement.querySelector('.track-media-url');\n\n if (trackMediaUrlEl) {\n const trackMediaUrlData = trackMediaUrlEl.value,\n audioAutoplay = e.target.autoplay,\n eventType = e.type,\n audioCurrentTime = e.target.currentTime;\n\n if (eventType === 'playing') {\n audioStartTime = audioCurrentTime;\n }\n\n audioCurrentTime > 0\n ? (audioPlayingPeriod = audioCurrentTime - audioStartTime)\n : ((audioStartTime = 0), (audioPlayingPeriod = 0));\n\n if (trackMediaUrlData && typeof e.target.currentTime !== 'undefined') {\n switch (eventType) {\n case 'pause':\n if (e.target.currentTime === e.target.duration) return false;\n break;\n }\n const url = `${trackMediaUrlData}&mediaEventType=${eventType}&mediaPosition1=${audioCurrentTime}&mediaPlayingPeriod=${audioPlayingPeriod}&autoplay=${audioAutoplay}`;\n fetch(url).then(() => false);\n }\n }\n },\n onBrowserClose = () => {\n audioList.forEach(audio => {\n if (audio.currentTime > 0 && !audio.paused && !audio.ended) {\n const figureAudioElement = audio.closest('.figure__audio'),\n trackMediaUrlEl = figureAudioElement.querySelector('.track-media-url'),\n trackMediaUrlData = trackMediaUrlEl.value,\n eventType = 'pause',\n audioAutoplay = audio.autoplay,\n audioCurrentTime = audio.currentTime;\n\n audioPlayingPeriod = audioCurrentTime - audioStartTime;\n\n let url = trackMediaUrlData\n ? `${trackMediaUrlData}&mediaEventType=${eventType}&mediaPosition1=${audioCurrentTime}&mediaPlayingPeriod=${audioPlayingPeriod}&autoplay=${audioAutoplay}`\n : '';\n fetch(url).then(() => false);\n }\n });\n };\n\n audioList.forEach(audio => {\n streamEvents.forEach(ev => {\n audio.addEventListener(ev, streamAnalysis);\n });\n });\n\n window.addEventListener('beforeunload', onBrowserClose);\n }\n};\n\nUX.loader.setTPRAriaLabel = function () {\n const $body = $('body');\n\n if ($body.find('.tpr__link').length) {\n let $tprLink = $body.find('.tpr__link'),\n tprHost = $tprLink[0].host,\n tprAriaLabel = tprHost.split('.')[0];\n $tprLink.attr('aria-label', tprAriaLabel);\n }\n};\n\nUX.loader.abstractLangs = function () {\n var tmp = [];\n var ids = [];\n var langNames = [];\n var $abs = $('.abstract-group .article-section__abstract');\n\n //$abs.addClass('active');\n $('.article-section__abstract:not(#abstract-graphical-)').hide();\n\n const observer = new MutationObserver((mutationsList, observer) => {\n const element = document.querySelector('.lang.active');\n if (element) {\n const activeLanguage = element.getAttribute('hreflang');\n const abstractGraphicalCurrent = document.getElementById(`abstract-graphical-${activeLanguage}`);\n abstractGraphicalCurrent && (abstractGraphicalCurrent.style.display = 'block');\n\n observer.disconnect();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n\n $abs.each(function () {\n if ($(this).find('.lang').length) {\n // check if we have tow abs with the same lang\n for (let i = 0; i <= tmp.length; i++) {\n if (tmp[i] === $(this).find('.lang').html()) {\n $(this).find('.lang').remove();\n return;\n }\n }\n\n tmp.push($(this).find('.lang').html());\n ids.push($(this).attr('id'));\n langNames.push(\n $(this).attr('lang-name')?.includes(';')\n ? $(this).attr('lang-name').split(';')[0]\n : $(this).attr('lang-name')\n );\n $(this).find('.lang').remove();\n $(this).find('.article-section__header').after(\"
\");\n }\n });\n\n if (tmp.length <= 1) {\n $('.lang-container').remove();\n $('.article-section__abstract').show();\n }\n\n for (let i = 0; i < tmp.length; i++) {\n $('.lang-container').append(\n \"\" +\n tmp[i] +\n 'This link goes to a ' +\n langNames[i] +\n ' section'\n );\n }\n\n $('.lang').show();\n $abs.find('.lang:first-child').addClass('active').show();\n $('.article-section__abstract[data-lang= ' + tmp[0] + ' ]').show();\n};\n\nUX.loader.referencesHash = function () {\n var hash = window.location.hash;\n if (hash === '#reference') {\n setTimeout(function () {\n $('.references-tab').click();\n }, 200);\n }\n};\n\nUX.loader.captionTruncate = function (elem, lineNumber, show_more, show_less) {\n $(elem).each(function () {\n var $caption = $(this);\n\n $caption.truncate({\n lines: lineNumber,\n seeMoreLink: true,\n seeMoreText: show_more,\n seeLessText: show_less,\n });\n });\n};\n\nUX.figureViewer.additionalBehaviorOnShow = function ($el) {\n var content = null;\n\n if ($el.find('figcaption .figure__caption').data('originalContent') !== undefined) {\n content = $el.find('figcaption .figure__caption').data('originalContent');\n } else {\n content = $el.find('figcaption, .figcaption').clone();\n content.find('strong').remove();\n }\n\n videoList = document.querySelectorAll('#figure-viewer .figure__video .cloudflare-stream-player');\n audioList = document.querySelectorAll('#figure-viewer .figure__audio audio');\n\n UX.loader.videoMedia(videoList, 'figureViewer');\n UX.loader.audioMedia(audioList);\n\n return content;\n};\n\n$(window).on('load resize orientationchange', function () {\n var toTrim = '.article-citation .loa-authors .accordion-tabbed';\n\n UX.loader.captionTruncate('.tab__content figcaption.figure__caption .figure__caption', 5, 'show', 'hide');\n UX.loader.captionTruncate('.disclosures', 2, 'show', 'hide');\n UX.loader.captionTruncate('.article-header__references-container:not(.no-truncate)', 1, 'More', 'Less');\n UX.loader.captionTruncate('.aboutThisBook .content', 6, 'More', 'Less');\n\n if (UX.loader.isMobile) {\n $(toTrim).truncate('destroy');\n UX.loader.rebuild.responsive();\n toTrim = '.article-citation .loa.mobile-authors';\n $(toTrim).truncate({\n lines: 2,\n type: 'list',\n seeMoreLink: true,\n seeMoreText: 'See all authors',\n seeLessText: 'See fewer authors',\n lessLinkEllipsis: true,\n isMobile: true,\n mobileTarget: '#sb-1',\n isSliding: true,\n });\n } else {\n $(toTrim).truncate({\n lines: 2,\n type: 'list',\n seeMoreLink: true,\n seeMoreText: 'See all authors',\n seeLessText: 'See fewer authors',\n lessLinkEllipsis: true,\n isSliding: false,\n });\n }\n\n UX.loader.fixedToolbarPosition();\n});\n\ndocument.addEventListener('mathjax-initilized', () => {\n setTimeout(() => {\n UX.utils.fallbackImageViewer();\n }, 1000);\n});\nUX.utils.lazyFallbackImage();\n\nUX.loader.load.articleTabs = function () {\n const articleRowRightTabs = UX.utils.convertToArray(document.querySelectorAll('.article-row-right__tabLinks'));\n\n if (articleRowRightTabs.length) {\n let isLoaded = false;\n\n const detailsTabLoader = e => {\n if (e.currentTarget.classList.contains('details-tab') && !isLoaded) {\n UX.loader.load.articleTab(\n UX.loader.details,\n UX.loader.detailsTab,\n UX.loader.tabDetails,\n 'details',\n false,\n false\n );\n isLoaded = true;\n }\n };\n\n articleRowRightTabs.forEach(item => {\n ['click', 'focus'].forEach(ev => {\n item.addEventListener(ev, detailsTabLoader);\n });\n });\n }\n};\n\nUX.loader.articleTabsTrigger = function () {\n const defaultTabEl = document.querySelector('[data-default-tab]'),\n defaultTabData = defaultTabEl?.dataset.defaultTab,\n pageHash = window.location.hash,\n pubTabs = {\n figures: 'figures',\n references: 'references',\n related: 'related',\n details: 'details',\n },\n setDefaultTab = (selectedTab = '') => {\n let tabBtn, tabBtnParent, tabPane;\n defaultTabEl\n .querySelector(`[class*=${defaultTabEl.getAttribute('data-default-tab')}]`)\n .removeAttribute('tabindex');\n\n tabBtn = defaultTabEl.querySelector(`.${selectedTab}-tab`);\n\n if (tabBtn) {\n tabBtnParent = tabBtn.parentElement;\n tabPane = defaultTabEl.querySelector(`[id=\"pane-pcw-${selectedTab}\"]`);\n } else {\n selectedTab = defaultTabData;\n tabBtn = defaultTabEl.querySelector(`.${defaultTabData}-tab`);\n tabBtnParent = tabBtn?.parentElement;\n tabPane = defaultTabEl.querySelector(`[id=\"pane-pcw-${defaultTabData}\"]`);\n }\n\n if (defaultTabData && !UX.loader.isMobile) {\n tabBtnParent.classList.add('active');\n tabPane.classList.add('active');\n\n switch (pubTabs[selectedTab]) {\n case 'figures':\n UX.loader.load.articleTab(\n UX.loader.figure,\n UX.loader.figuresTab,\n UX.loader.tabFigure,\n 'figure',\n false,\n true\n );\n break;\n case 'references':\n UX.loader.load.articleTab(\n UX.loader.references,\n UX.loader.referencesTab,\n UX.loader.tabReferences,\n 'references',\n false,\n true\n );\n break;\n case 'related':\n UX.loader.load.articleTab(\n UX.loader.related,\n UX.loader.relatedTab,\n UX.loader.tabRelated,\n 'related',\n false,\n true\n );\n break;\n case 'details':\n UX.loader.load.articleTab(\n UX.loader.details,\n UX.loader.detailsTab,\n UX.loader.tabDetails,\n 'details',\n false,\n true\n );\n break;\n }\n }\n };\n\n let selectedTab = pageHash === '#reference' ? 'references' : defaultTabEl?.dataset.defaultTab;\n\n if (defaultTabEl) {\n setDefaultTab(selectedTab);\n }\n};\n\nUX.loader.fixedToolbarPosition = function () {\n if ($('.fixedToolbar').length) {\n $('.fixedToolbar').css('top', $('.pageHeader').height());\n }\n};\n\nUX.loader.showAudioSupportMsg = function () {\n if (UX.test.isIE() && $('.figure__audio audio').length) {\n $('.figure__audio audio').each(function (index, audio) {\n const $audio = $(audio),\n audioType = $audio.find('source').attr('type');\n\n if (audioType.indexOf('wav') > -1 || audioType.indexOf('ogg') > -1) {\n $audio.next('.media-error').removeClass('hidden');\n $audio.remove();\n }\n });\n }\n};\n\nUX.loader.streamErrorHandler = wrapper => {\n const wrapperEl = document.querySelector(wrapper);\n\n if (wrapperEl) {\n const streamChildren = wrapperEl.querySelectorAll('.cloudflare-stream-player, audio'),\n mediaError = async e => {\n const parentEl = e.target.closest('.figure__image');\n if (parentEl) {\n let mediaError = parentEl.querySelector('.media-error'),\n trackMediaUrlEl = parentEl.dataset.trackMediaUrl,\n streamAutoplay = e.target.autoplay,\n eventType = e.type,\n poster = e.target.attributes.poster.textContent,\n timeRegex = /time\\s*=\\s*(\\d*)/i,\n newPoster = poster.replace(timeRegex, 'time=1'),\n posterChecked = false,\n url = '';\n\n if (trackMediaUrlEl) {\n url = `${trackMediaUrlEl}&mediaEventType=${eventType}&errorMessage=error&autoplay=${streamAutoplay}`;\n fetch(url).then(() => false);\n }\n\n if (poster) {\n posterChecked = await UX.loader.checkPoster(newPoster);\n\n if (posterChecked) {\n return;\n }\n }\n\n e.target.remove();\n mediaError?.classList.remove('hidden');\n }\n };\n\n if (streamChildren.length) {\n streamChildren.forEach(item => {\n item.addEventListener('error', mediaError);\n });\n }\n }\n};\n\nUX.loader.checkPoster = async function (poster) {\n try {\n const response = await fetch(poster);\n\n if (response.status === 200) {\n return true;\n } else {\n throw new Error(`HTTP error: ${response.status}`);\n }\n } catch {\n return false;\n }\n};\n\nUX.loader.fixedCoolBar = function () {\n let $fixedCoolBar = $('.fixedCoolBar'),\n coolBarTop = $fixedCoolBar.offset().top,\n coolBarLeft = $fixedCoolBar.offset().left,\n coolBarWidth = $fixedCoolBar.outerWidth(),\n coolBarHeight = $fixedCoolBar.outerHeight();\n\n if ($(window).scrollTop() > coolBarTop) {\n $fixedCoolBar[0].style.top = '0';\n $fixedCoolBar.css('padding-top', coolBarHeight);\n $fixedCoolBar.find('.stickybar').addClass('js--fixed').css({\n top: 0,\n left: coolBarLeft,\n width: coolBarWidth,\n });\n } else {\n $fixedCoolBar[0].style.top = '0';\n $fixedCoolBar.css('padding-top', '0');\n $fixedCoolBar.find('.stickybar').removeClass('js--fixed').css({\n top: 'auto',\n width: 'auto',\n left: 'auto',\n });\n }\n};\n\nUX.loader.seamlessAccessDelay = function () {\n let $seamlessWrapper = $('.seamlessAccessDenial__wrapper'),\n $loader = $seamlessWrapper.find('.js--loader'),\n $text = $seamlessWrapper.find('.text'),\n defaultHref = `/action/ssostart?redirectUri=${encodeURIComponent(`${window.location.pathname}?saml_referrer`)}`;\n\n if ($loader.length) {\n $text.append(`(or click to choose manually)`);\n }\n};\n\nUX.loader.crossMarkAccessibility = function () {\n const crossMarkTrigger = document.querySelector('.crossMarkTrigger');\n if (crossMarkTrigger) {\n const iframeAccessibility = e => {\n const rand = Math.floor(Math.random() * 10),\n crossMarkInit = () => {\n const crossMarkIframe = UX.utils.convertToArray(\n document.querySelectorAll('iframe.crossmark-popup__content')\n ),\n crossMarkClassList = {\n currentIndex: 'js--currentIndex',\n fakeFocusEl: 'js--fakeFocus',\n },\n closeModalOnEsc = e => {\n if (e.key.includes('Esc')) {\n const crossMarkWidget = document.getElementById('crossmark-widget');\n if (crossMarkWidget && crossMarkWidget.style.display === 'block') {\n crossMarkWidget.style.display = 'none';\n const focusTriggerTargetEl = document.querySelector(`.crossMarkTrigger.js--opened`);\n focusTriggerTargetEl?.focus();\n focusTriggerTargetEl?.classList.remove('js--opened');\n }\n }\n },\n crossMarkCloseBtn = e => {\n const focusTriggerTargetData = e.target.dataset.focusTriggerTarget,\n focusTriggerTargetEl = document.querySelector(\n `.crossMarkTrigger[data-focus-trigger=\"${focusTriggerTargetData}\"]`\n );\n focusTriggerTargetEl?.focus();\n focusTriggerTargetEl?.classList.remove('js--opened');\n };\n\n if (crossMarkIframe.length) {\n crossMarkIframe.forEach(item => {\n item.title = 'CrossMark';\n const wrapper = item.closest('#crossmark-widget');\n\n if (wrapper) {\n if (wrapper.style.display === 'block') {\n const logo = wrapper.querySelector('.crossmark-popup__logo'),\n inner = wrapper.querySelector('.crossmark-popup__inner'),\n footer = wrapper.querySelector('.crossmark-popup__footer'),\n fakeFocusEl = document.createElement('div'),\n closeBtn = wrapper.querySelector('.crossmark-popup__btn-close'),\n footerContent = `\n
\n \n
\n `;\n\n wrapper.setAttribute('tabindex', '-1');\n wrapper.setAttribute('role', 'dialog');\n wrapper.setAttribute('aria-label', 'CrossMark dialog');\n\n if (closeBtn) {\n closeBtn.focus();\n closeBtn.classList.add(crossMarkClassList.currentIndex);\n closeBtn.setAttribute('aria-label', 'Close dialog');\n closeBtn.dataset.focusTriggerTarget = `${rand}`;\n }\n\n fakeFocusEl.classList.add(crossMarkClassList.fakeFocusEl);\n fakeFocusEl.setAttribute('tabindex', '0');\n fakeFocusEl.setAttribute('aria-hidden', 'true');\n\n if (inner) {\n if (!footer) {\n inner.insertAdjacentHTML('beforeend', footerContent);\n const popupContentWrapper = inner.querySelector(\n '.crossmark-popup__content-wrapper'\n ),\n popupFooter = inner.querySelector('.crossmark-popup__footer');\n\n popupContentWrapper.style.paddingBottom = `${\n popupFooter ? `${popupFooter.offsetHeight}px` : ''\n }`;\n }\n inner.appendChild(fakeFocusEl);\n }\n logo?.parentElement.setAttribute('aria-label', 'Crossmark logo');\n\n const focusableList = UX.utils.convertToArray(\n wrapper.querySelectorAll(\n 'a, button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"])'\n )\n );\n\n if (focusableList.length) {\n focusableList.forEach((item, index) => {\n item.dataset.focusOrder = index;\n\n item.addEventListener('focus', e => {\n const oldElFocusOrder = wrapper?.querySelector(\n `.${crossMarkClassList.currentIndex}`\n )?.dataset.focusOrder;\n\n focusableList.map(el =>\n el.classList.remove(crossMarkClassList.currentIndex)\n );\n\n e.target.classList.add(crossMarkClassList.currentIndex);\n\n if (e.target.classList.contains(crossMarkClassList.fakeFocusEl)) {\n const newFocusOrder = e.target.dataset.focusOrder;\n if (newFocusOrder > oldElFocusOrder) {\n focusableList[0].focus();\n }\n }\n });\n });\n\n focusableList[0].addEventListener('focusout', e => {\n if (\n e.relatedTarget &&\n typeof e.relatedTarget.dataset.focusOrder === 'undefined'\n ) {\n focusableList[focusableList.length - 2].focus();\n }\n });\n }\n } else {\n wrapper.parentElement.removeChild(wrapper);\n }\n }\n });\n }\n\n const crossMarkPopupClose = UX.utils.convertToArray(\n document.querySelectorAll('.crossmark-popup__btn-close')\n );\n if (crossMarkPopupClose.length) {\n crossMarkPopupClose.forEach(item => item.addEventListener('click', crossMarkCloseBtn));\n }\n\n document.addEventListener('keydown', closeModalOnEsc);\n };\n\n e.currentTarget.dataset.focusTrigger = `${rand}`;\n e.currentTarget.classList.add('js--opened');\n\n setTimeout(crossMarkInit);\n };\n\n crossMarkTrigger.addEventListener('click', iframeAccessibility);\n }\n};\n\nUX.loader.altMetricLoader = function () {\n const altMetricEl = document.querySelector('.altmetric-embed');\n if (altMetricEl) {\n /* eslint-disable */\n const altMetricChecker = () => {\n const altMetricTrigger = altMetricEl.querySelector('a[data-badge-popover]'),// this is null when score == 0\n numberOfDownloads = document.querySelector(\".number-of-downloads\"),\n citedByCount = document.querySelector(\".cited-by-count\");\n\n if (altMetricTrigger || numberOfDownloads || citedByCount) {\n clearInterval(altMetricInterval);\n const metricsOuterWrapper = document.querySelector('.metrics'),\n altMetricImage = altMetricTrigger?.querySelector('img'),\n imageAlt = altMetricImage?.alt,\n altMetricImageParent = metricsOuterWrapper?.querySelector('.altmetric-embed'),\n isScoreZero = !(altMetricImage?.closest('.altmetric-embed')),\n uuid = altMetricImageParent?.dataset.uuid,\n altMetricPopover = document.querySelector(`.altmetric-popover[data-uuid=\"${uuid}\"]`),\n altMetricPopoverInner = altMetricPopover?.querySelector('.altmetric-popover-content'),\n mouseOutEvent = new Event('mouseout'),\n mouseOverEvent = new Event('mouseover'),\n fakeFocusable = '
',\n backToLink =\n '',\n wSlide = document.querySelector('.w-slide'),\n wSlideContent = document.querySelector('.w-slide__content'),\n setTriggerAttributes = el => {\n el.setAttribute('role', 'button');\n el.setAttribute('aria-expanded', 'false');\n el.setAttribute('id', 'altMetric');\n el.setAttribute('aria-label', imageAlt);\n el.setAttribute('href', 'javascript:void(0)');\n },\n closePopover = () => {\n altMetricTrigger?.dispatchEvent(mouseOutEvent);\n altMetricTrigger?.focus();\n altMetricTrigger?.setAttribute('aria-expanded', 'false');\n UX.tooltip.on.checkToHide();\n },\n triggerClickHandler = e => {\n e.preventDefault();\n e.target.dispatchEvent(mouseOverEvent);\n altMetricTrigger?.setAttribute('aria-expanded', 'true');\n if (altMetricPopoverInner) {\n setTimeout(() => {\n const fakeFocusableEl = altMetricPopover.querySelector('.js--adFocusableEl'),\n backToLinkEl = altMetricPopover.querySelector('.js--backToLink'),\n backToLinkHandler = e =>\n e.target.classList.contains('js--backToLink') && closePopover();\n\n altMetricPopoverInner.setAttribute('tabindex', '-1');\n altMetricPopoverInner.focus();\n !backToLinkEl && altMetricPopoverInner.insertAdjacentHTML('beforeend', backToLink);\n !fakeFocusableEl && altMetricPopoverInner.insertAdjacentHTML('afterend', fakeFocusable);\n\n altMetricPopoverInner.addEventListener('click', backToLinkHandler);\n }, 350);\n }\n },\n focusOutHandler = e =>\n e.relatedTarget && !e.relatedTarget.closest('.altmetric-popover-content') && closePopover(),\n popoverEscapeHandler = e => e.key === 'Escape' && closePopover(),\n EscapeMouseOver = () => {\n const bodyKeyDownHandler = e => {\n if (e.key === 'Escape' && altMetricPopover.style.display === 'block') {\n altMetricTrigger?.dispatchEvent(mouseOutEvent);\n }\n };\n document.body.addEventListener('keydown', bodyKeyDownHandler);\n };\n\n if (citedByCount || numberOfDownloads || altMetricImageParent) metricsOuterWrapper.classList.add('js--show');\n if (isScoreZero) {\n altMetricEl.classList.add(\"js--hide\");\n }\n altMetricTrigger && setTriggerAttributes(altMetricTrigger);\n altMetricTrigger?.addEventListener('click', triggerClickHandler);\n altMetricTrigger?.addEventListener('mouseover', EscapeMouseOver);\n wSlide.addEventListener('click', closePopover);\n wSlideContent.addEventListener('scroll', closePopover)\n\n if (altMetricPopoverInner) {\n altMetricPopoverInner.setAttribute('aria-labelledby', altMetricTrigger?.id);\n altMetricPopoverInner.setAttribute('id', `${altMetricTrigger?.id}-${uuid}`);\n altMetricTrigger?.setAttribute('aria-controls', altMetricPopoverInner.id);\n altMetricPopoverInner.addEventListener('focusout', focusOutHandler);\n altMetricPopoverInner.addEventListener('keydown', popoverEscapeHandler);\n }\n } else if (intervalCounter === 60000) {\n clearInterval(altMetricInterval);\n }\n intervalCounter += 500;\n };\n let altMetricInterval = setInterval(altMetricChecker, 500),\n intervalCounter = 0;\n /* eslint-enable */\n UX.utils.fallbackImageViewer();\n }\n};\n\nUX.loader.removeGetFTRElement = elements => {\n elements.forEach(element => {\n if (element.textContent.trim() === '') {\n const nextElement = element.nextElementSibling;\n const firstLinkEl = nextElement?.nextElementSibling;\n firstLinkEl?.classList.add('first-link');\n nextElement?.classList.contains('getFTR__content') && nextElement.remove();\n }\n });\n};\n"],"sourceRoot":""}