{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/fontfaceobserver/fontfaceobserver.standalone.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/lodash/throttle.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/detect-browser/es/index.js","webpack:///./node_modules/lodash/debounce.js","webpack:///./node_modules/lodash/now.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/lodash/toNumber.js","webpack:///./node_modules/lodash/_baseTrim.js","webpack:///./node_modules/lodash/_trimmedEndIndex.js","webpack:///./node_modules/lodash/isSymbol.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/intersection-observer/intersection-observer.js","webpack:///./src/app/themes/gulliverSchool/js/__utils/detectBrowser.js","webpack:///./src/app/themes/gulliverSchool/js/__utils/vhUnit.js","webpack:///./src/app/themes/gulliverSchool/js/__utils/video.js","webpack:///./src/app/themes/gulliverSchool/js/__utils/smoothScroll.js","webpack:///./src/app/themes/gulliverSchool/js/__utils/screenLock.js","webpack:///./src/app/themes/gulliverSchool/js/__page/Search.js","webpack:///./src/app/themes/gulliverSchool/js/__page/InpageNav.js","webpack:///./src/app/themes/gulliverSchool/js/__header/MegaMenu.js","webpack:///./src/app/themes/gulliverSchool/js/__header/Header.js","webpack:///./src/app/themes/gulliverSchool/js/__header/MenuMobile.js","webpack:///./src/app/themes/gulliverSchool/js/__header/HeaderMobile.js","webpack:///./src/app/themes/gulliverSchool/js/__utils/Tables.js","webpack:///./src/app/themes/gulliverSchool/js/__utils/forms.js","webpack:///./src/app/themes/gulliverSchool/js/__utils/Sliders.js","webpack:///./src/app/themes/gulliverSchool/js/__page/LogosSlider.js","webpack:///./src/app/themes/gulliverSchool/js/__shortcodes/Accordions.js","webpack:///./src/app/themes/gulliverSchool/js/__page/Tabs.js","webpack:///./src/app/themes/gulliverSchool/js/__page/LightboxGallery.js","webpack:///./src/app/themes/gulliverSchool/js/__page/HeroBackgroundVideo.js","webpack:///./src/app/themes/gulliverSchool/js/__page/LightboxVideo.js","webpack:///./src/app/themes/gulliverSchool/js/__page/CYEAccordion.js","webpack:///./src/app/themes/gulliverSchool/js/__utils/paginationBuilder.js","webpack:///./src/app/themes/gulliverSchool/js/__archive/PostsAjax.js","webpack:///./src/app/themes/gulliverSchool/js/__archive/EventsAjax.js","webpack:///./src/app/themes/gulliverSchool/js/__page/ImageLinksSlider.js","webpack:///./src/app/themes/gulliverSchool/js/__page/ScoreboardSlider.js","webpack:///./src/app/themes/gulliverSchool/js/__page/GivingImageLinksSlider.js","webpack:///./src/app/themes/gulliverSchool/js/__page/DonorBlockSlider.js","webpack:///./src/app/themes/gulliverSchool/js/__utils/givingForm.js","webpack:///./src/app/themes/gulliverSchool/js/__page/goalCards.js","webpack:///./src/app/themes/gulliverSchool/js/__page/goalProgressCards.js","webpack:///./src/app/themes/gulliverSchool/js/__utils/checkElementInView.js","webpack:///./src/app/themes/gulliverSchool/js/__page/charts.js","webpack:///./src/app/themes/gulliverSchool/js/__page/chartsBlock.js","webpack:///./src/app/themes/gulliverSchool/js/__page/sectionsInView.js","webpack:///./src/app/themes/gulliverSchool/js/__init/controller.js","webpack:///./src/app/themes/gulliverSchool/js/__utils/detectTabNav.js","webpack:///./src/app/themes/gulliverSchool/js/script.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","a","b","document","addEventListener","attachEvent","this","createElement","setAttribute","appendChild","createTextNode","h","f","g","style","cssText","u","z","offsetWidth","width","scrollLeft","scrollWidth","A","k","parentNode","B","family","weight","stretch","C","D","E","F","J","fonts","K","font","L","join","load","H","Date","getTime","Promise","test","window","navigator","vendor","exec","userAgent","parseInt","G","M","e","Error","then","length","setTimeout","N","race","clearTimeout","body","removeEventListener","readyState","detachEvent","v","w","x","y","removeChild","q","dir","I","hidden","type","debounce","isObject","func","wait","options","leading","trailing","TypeError","freeGlobal","freeSelf","self","root","Function","__spreadArray","to","from","pack","arguments","ar","Array","slice","concat","BrowserInfo","version","os","NodeInfo","process","platform","SearchBotDeviceInfo","bot","BotInfo","ReactNativeInfo","SEARCHBOT_OS_REGEX","userAgentRules","operatingSystemRules","detect","parseUserAgent","product","matchUserAgent","ua","reduce","matched","_a","browser","regex","uaMatch","matchedRule","match","versionParts","split","count","output","ii","push","createVersionParts","detectOS","searchBotMatch","now","toNumber","nativeMax","Math","max","nativeMin","min","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","maxing","invokeFunc","time","args","thisArg","undefined","apply","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","cancel","flush","global","baseTrim","isSymbol","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","other","valueOf","isBinary","trimmedEndIndex","reTrimStart","string","replace","reWhitespace","index","charAt","baseGetTag","isObjectLike","getRawTag","objectToString","symToStringTag","objectProto","nativeObjectToString","toString","isOwn","tag","unmasked","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","len","run","marker","runClearTimeout","Item","array","noop","nextTick","title","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","IntersectionObserverEntry","intersectionRatio","startDoc","doc","frame","getFrameElement","ownerDocument","registry","crossOriginUpdater","crossOriginRect","IntersectionObserver","THROTTLE_TIMEOUT","POLL_INTERVAL","USE_MUTATION_OBSERVER","_setupCrossOriginUpdater","boundingClientRect","intersectionRect","convertFromParentRect","top","bottom","left","right","height","forEach","observer","_checkForIntersections","_resetCrossOriginUpdater","observe","target","_observationTargets","some","item","element","nodeType","_registerInstance","entry","_monitorIntersections","unobserve","filter","_unmonitorIntersections","_unregisterInstance","disconnect","_unmonitorAllIntersections","takeRecords","records","_queuedEntries","_initThresholds","opt_threshold","threshold","isArray","sort","isNaN","_parseRootMargin","opt_rootMargin","margins","map","margin","parts","parseFloat","unit","win","defaultView","_monitoringDocuments","indexOf","callback","monitoringInterval","domObserver","setInterval","addEvent","MutationObserver","attributes","childList","characterData","subtree","_monitoringUnsubscribes","clearInterval","removeEvent","rootDoc","itemDoc","unsubscribe","splice","unsubscribes","rootIsInDom","_rootIsInDom","rootRect","_getRootRect","targetRect","getBoundingClientRect","rootContainsTarget","_rootContainsTarget","oldEntry","_computeTargetAndRootIntersection","rootBounds","newEntry","performance","_hasCrossedThreshold","isIntersecting","_callback","getComputedStyle","display","rect1","rect2","parent","getParentNode","atRoot","parentRect","parentComputedStyle","frameRect","frameIntersect","documentElement","overflow","isDoc","html","clientWidth","clientHeight","_expandRectByRootMargin","rect","_rootMarginValues","newRect","oldRatio","newRatio","thresholds","containsDeep","frameElement","ensureDOMRect","targetArea","intersectionArea","Number","toFixed","opt_options","fn","timer","rootMargin","node","event","opt_useCapture","detatchEvent","el","err","parentBoundingRect","parentIntersectionRect","child","assignedSlot","host","detectBrowser","querySelector","classList","add","msMaxTouchPoints","vhUnit","setProperty","innerHeight","$","jQuery","noConflict","video","iframeWrapper","init","find","hideOverlay","preventDefault","each","attr","src","imageUrl","data","parents","dataset","dataSrc","css","hide","show","src_storage","hasClass","delay","fadeOut","scrollFunc","header","inpageNav","trigger","delegateTarget","next","url","URL","location","href","anchor","hash","substring","escapedAnchor","CSS","escape","targetSection","id","offset","outerHeight","currentTarget","addClass","stop","animate","scrollTop","removeClass","smoothScroll","screenLock","isLocked","lock","unlock","constructor","searchTrigger","search","searchParent","searchForm","searchInput","typingInput","toggleSearch","form","closeSearch","openSearch","setSearchHeight","focus","removeAttr","blur","resized","hideOutsideClick","is","has","keyDown","keyCode","nav","navWrapper","navLinks","menuTrigger","menu","sections","children","reverse","sectionsArr","lastPosition","mapSections","scrolled","toggleClass","link","scrollNavWrapper","sectionID","getAttribute","stickNav","headerHeight","navOffsetTop","windowScrollTop","highlightNavItem","scrollPosition","currentSection","mt","pt","extraOffset","sectionTop","wrapper","wrapperBounding","bounding","offsetRight","offsetLeft","condLeft","condRight","menuItems","megaMenu","toggleMegaMenu","hover","hideMegaMenu","showMegaMenu","alertBar","mq","matchMedia","toggleMenu","setAlertCookie","remove","InpageNav","matches","closeMenu","setTime","cookie","toUTCString","openMenu","Search","ScreenLock","text","setMenuHeight","MegaMenu","slideDown","slideUp","formTrigger","formBack","MenuMobile","tables","toggleShadow","scrollWrapper","closest","forms","hbsptWrapper","select","renderFields","hubspot","eventName","selectFields","selectSingle","placeholder","select2","minimumResultsForSearch","escapeMarkup","Slider","sel","arrows","fade","num","tabNum","slideSpeed","variableWidth","centerMode","dots","autoplay","infiniteScroll","selector","refresh","slick","caption","prev","autoplaySpeed","infinite","slidesToShow","slidesToScroll","pauseOnHover","speed","responsive","breakpoint","settings","currentSlide","nextSlide","slide","$slides","RelatedEventsSlider","HeroSlider","HeroEventsSlider","SimpleSlider","LightboxSlider","HeroNewsSlider","FactsSlider","UpcomingGamesSlider","console","log","number_of_slides_to_show_desktop","number_of_slides_to_scroll_desktop","show_dots_desktop","number_of_slides_to_show_tablet","number_of_slides_to_scroll_tablet","show_dots_tablet","number_of_slides_to_show_mobile","number_of_slides_to_scroll_mobile","show_dots_mobile","newsContainer","handler","visible","innerWidth","isElementInViewport","old_visible","setProgressBar","videoSlider","slideCount","progressBarWidth","maxColumns","slidesToShowTenHundred","slidesToShowSixHundred","startWidth","screen","incrementAmount","prevArrow","nextArrow","slider","slides","initSlider","inifinite","pauseOnFocus","cssEase","accordionAllButton","bindEvents","toggleAccordion","toggleAccordionAll","slideToggle","accordionID","tabs","tabsLinksList","tabsLinks","tabsContent","toggleTab","Tables","lightboxes","lightboxOpen","lightboxClose","openLightbox","closeLightbox","slideNum","lightboxBlock","stratScrollTop","lightboxWrapper","videoBackground","querySelectorAll","playerYT","setRatio","ytPlayer","iframe","ratio","removeAttribute","newWidth","YTPlayer","showControls","loop","mute","btnOpenLightbox","player","getElementById","isIframe","btn","iframeVideo","isYT","isVimeo","getVimeoEmbedUrl","isWistia","RegExp","$1","$5","block","toggleContent","content","paginationBuilder","postType","currentPage","lastPage","midsize","current","last","mid","range","unshift","postsFilters","page","action","loader","postsContent","postsWrapper","mobileViewport","transitionTime","filtersWrapper","filterTrigger","filterList","filtersInner","filtersInnerWrapper","selectedItems","filtersSelected","filtersSelectedNumber","clearTrigger","mobileTrigger","mobileCloseTrigger","mobileSelected","filterInputs","pagination","types","categories","divisions","triggerEvents","addUrlListener","applyTerms","showSelectedInputs","reload","clearFilters","toggleFilter","applyFilters","lockLayout","unlockLayout","list","prop","initial","checkedInputsNumber","checkedInputsFilter","updatePagination","max_num_pages","term","serializeArray","ajax","WP","ajaxUrl","dataType","baseUrl","done","response","history","pushState","posts_content","fail","errorResponse","alert","always","eventsFilters","eventsContent","eventsWrapper","date","dateIsSelected","sports","event_types","datepicker","currentDay","initCalendar","val","urlParam","results","dayNamesMin","navigationAsDateFormat","nextText","prevText","showOtherMonths","dateFormat","selectOtherMonths","onSelect","selectdate","onChangeMonthYear","clearedUrl","scrollToTop","mobileFirst","sliders","givingForm","inputs","textareas","selects","checkInputs","scrollHeight","parentElement","FontFaceObserver","require","cardBottom","cardButton","bottomContent","lightboxGoalButton","strategiesLightbox","closeButton","contentCol","imageCol","goalsTop","pbody","fontFace","instance","transformCards","cardID","click","thisCard","leftPos","lightboxTarget","first","progressLightbox","checkElementInView","inViewCallback","outOfViewCallback","customConfig","elements","config","assign","entries","charts","chartEl","contains","JSON","parse","lines","valueLabels","nameLabels","pieData","oldPieData","filteredPieData","pie","d3","layout","arc","svg","startAngle","endAngle","innerRadius","outerRadius","vis","append","arc_group","label_group","pieTween","s0","e0","interpolate","removePieTween","PI","textTween","interpolateNumber","cos","sin","paths","selectAll","enter","color","transition","duration","attrTween","exit","heading","update","generateD3Chart","chartsBlock","animationSelectors","showSection","hideSection","sectionsInView","controller","Header","HeaderMobile","CYEAccordion","Accordion","Tabs","LogosSlider","GalleryLightbox","HeroBackgroundVideo","LightboxVideo","ImageLinksSlider","ScoreboardSlider","GivingImageLinksSlider","DonorBlockSlider","GoalCards","GoalProgressCards","loaded","mouseUp","gformRender","detectTabNav","detectMouseNav","handled","throttle","passive"],"mappings":"aACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,GAIjBlC,EAAoBA,EAAoBmC,EAAI,I,mBClFiB,WAAW,SAAS9B,EAAE+B,EAAEC,GAAGC,SAASC,iBAAiBH,EAAEG,iBAAiB,SAASF,GAAE,GAAID,EAAEI,YAAY,SAASH,GAAkW,SAASf,EAAEc,GAAGK,KAAKL,EAAEE,SAASI,cAAc,OAAOD,KAAKL,EAAEO,aAAa,cAAc,QAAQF,KAAKL,EAAEQ,YAAYN,SAASO,eAAeT,IAAIK,KAAKJ,EAAEC,SAASI,cAAc,QAAQD,KAAKhC,EAAE6B,SAASI,cAAc,QAAQD,KAAKK,EAAER,SAASI,cAAc,QAAQD,KAAKM,EAAET,SAASI,cAAc,QAAQD,KAAKO,GAAG,EAAEP,KAAKJ,EAAEY,MAAMC,QAAQ,+GAA+GT,KAAKhC,EAAEwC,MAAMC,QAAQ,+GAC79BT,KAAKM,EAAEE,MAAMC,QAAQ,+GAA+GT,KAAKK,EAAEG,MAAMC,QAAQ,6EAA6ET,KAAKJ,EAAEO,YAAYH,KAAKK,GAAGL,KAAKhC,EAAEmC,YAAYH,KAAKM,GAAGN,KAAKL,EAAEQ,YAAYH,KAAKJ,GAAGI,KAAKL,EAAEQ,YAAYH,KAAKhC,GAC/U,SAAS0C,EAAEf,EAAEC,GAAGD,EAAEA,EAAEa,MAAMC,QAAQ,6LAA6Lb,EAAE,IAAI,SAASe,EAAEhB,GAAG,IAAIC,EAAED,EAAEA,EAAEiB,YAAY5C,EAAE4B,EAAE,IAA+E,OAA3ED,EAAEW,EAAEE,MAAMK,MAAM7C,EAAE,KAAK2B,EAAE3B,EAAE8C,WAAW9C,EAAE2B,EAAEC,EAAEkB,WAAWnB,EAAEC,EAAEmB,YAAY,IAAWpB,EAAEY,IAAIX,IAAGD,EAAEY,EAAEX,GAAE,GAAO,SAASoB,EAAErB,EAAEC,GAAG,SAAS5B,IAAI,IAAI2B,EAAEsB,EAAEN,EAAEhB,IAAIA,EAAEA,EAAEuB,YAAYtB,EAAED,EAAEY,GAAG,IAAIU,EAAEtB,EAAE/B,EAAE+B,EAAEC,EAAE5B,GAAGJ,EAAE+B,EAAE3B,EAAEA,GAAG2C,EAAEhB,GAAI,SAASwB,EAAExB,EAAEC,GAAG,IAAI5B,EAAE4B,GAAG,GAAGI,KAAKoB,OAAOzB,EAAEK,KAAKQ,MAAMxC,EAAEwC,OAAO,SAASR,KAAKqB,OAAOrD,EAAEqD,QAAQ,SAASrB,KAAKsB,QAAQtD,EAAEsD,SAAS,SAAS,IAAIC,EAAE,KAAKC,EAAE,KAAKC,EAAE,KAAKC,EAAE,KAAwN,SAASC,IAAmC,OAA/B,OAAOD,IAAIA,IAAI7B,SAAS+B,OAAcF,EACx4B,SAASG,IAAI,GAAG,OAAOJ,EAAE,CAAC,IAAI9B,EAAEE,SAASI,cAAc,OAAO,IAAIN,EAAEa,MAAMsB,KAAK,6BAA6B,MAAMlC,IAAI6B,EAAE,KAAK9B,EAAEa,MAAMsB,KAAK,OAAOL,EAAE,SAASM,EAAEpC,EAAEC,GAAG,MAAM,CAACD,EAAEa,MAAMb,EAAE0B,OAAOQ,IAAIlC,EAAE2B,QAAQ,GAAG,QAAQ1B,GAAGoC,KAAK,KAC5Nb,EAAE5B,UAAU0C,KAAK,SAAStC,EAAEC,GAAG,IAAI5B,EAAEgC,KAAKiB,EAAEtB,GAAG,UAAUlB,EAAE,EAAEW,EAAEQ,GAAG,IAAIsC,GAAE,IAAKC,MAAMC,UAAU,OAAO,IAAIC,SAAQ,SAAS1C,EAAEC,GAAG,GAAG+B,MAFigB,WAAa,GAAG,OAAOH,EAAE,GAAGG,KAAK,QAAQW,KAAKC,OAAOC,UAAUC,QAAQ,CAAC,IAAI9C,EAAE,oDAAoD+C,KAAKH,OAAOC,UAAUG,WAAWnB,IAAI7B,GAAG,IAAIiD,SAASjD,EAAE,GAAG,SAAS6B,GAAE,EAAG,OAAOA,EAE5sBqB,GAAI,CAAC,IAAIC,EAAE,IAAIT,SAAQ,SAAS1C,EAAEC,IAAG,SAASmD,KAAI,IAAKZ,MAAMC,UAAUF,GAAG9C,EAAEQ,EAAEoD,MAAS5D,EAAE,wBAAwBS,SAAS+B,MAAMK,KAAKF,EAAE/D,EAAE,IAAIA,EAAEoD,OAAO,KAAKH,GAAGgC,MAAK,SAASjF,GAAG,GAAGA,EAAEkF,OAAOvD,IAAIwD,WAAWJ,EAAE,MAAKnD,GAAGmD,MAAMK,EAAE,IAAIf,SAAQ,SAAS1C,EAAE3B,GAAGS,EAAE0E,YAAW,WAAWnF,EAAEgF,MAAS5D,EAAE,0BAAyBA,MAAKiD,QAAQgB,KAAK,CAACD,EAAEN,IAAIG,MAAK,WAAWK,aAAa7E,GAAGkB,EAAE3B,KACtf4B,QALuL,SAAWD,GAAGE,SAAS0D,KAAK5D,IAAIE,SAASC,iBAAiBD,SAASC,iBAAiB,oBAAmB,SAAS9B,IAAI6B,SAAS2D,oBAAoB,mBAAmBxF,GAAG2B,OAAME,SAASE,YAAY,sBAAqB,SAASkB,IAAO,eAAepB,SAAS4D,YAAY,YAAY5D,SAAS4D,aAAW5D,SAAS6D,YAAY,qBAAqBzC,GAAGtB,QAKvgB5B,EAAE,WAAW,SAAS4F,IAAI,IAAI/D,GAAKA,GAAG,GAAGU,IAAI,GAAGC,IAAI,GAAGD,IAAI,GAAGD,IAAI,GAAGE,IAAI,GAAGF,MAAGT,EAAEU,GAAGC,GAAGD,GAAGD,GAAGE,GAAGF,KAAK,OAAOkB,IAAI3B,EAAE,sCAAsC8C,KAAKH,OAAOC,UAAUG,WAAWpB,IAAI3B,IAAI,IAAIgD,SAAShD,EAAE,GAAG,KAAK,MAAMgD,SAAShD,EAAE,GAAG,KAAK,IAAIgD,SAAShD,EAAE,GAAG,MAAMA,EAAE2B,IAAIjB,GAAGsD,GAAGrD,GAAGqD,GAAGvD,GAAGuD,GAAGtD,GAAGuD,GAAGtD,GAAGsD,GAAGxD,GAAGwD,GAAGvD,GAAGwD,GAAGvD,GAAGuD,GAAGzD,GAAGyD,IAAIlE,GAAGA,GAAEA,IAAI3B,EAAEiD,YAAYjD,EAAEiD,WAAW6C,YAAY9F,GAAGqF,aAAa7E,GAAGkB,EAAE3B,IAC1P,IAAI+E,EAAE,IAAIlE,EAAEoC,GAAGxB,EAAE,IAAIZ,EAAEoC,GAAG+C,EAAE,IAAInF,EAAEoC,GAAGX,GAAG,EAAEC,GAAG,EAAEF,GAAG,EAAEuD,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAE7F,EAAE4B,SAASI,cAAc,OAAOhC,EAAEgG,IAAI,MAAMvD,EAAEqC,EAAEhB,EAAE/D,EAAE,eAAe0C,EAAEjB,EAAEsC,EAAE/D,EAAE,UAAU0C,EAAEsD,EAAEjC,EAAE/D,EAAE,cAAcC,EAAEkC,YAAY4C,EAAEpD,GAAG1B,EAAEkC,YAAYV,EAAEE,GAAG1B,EAAEkC,YAAY6D,EAAErE,GAAGE,SAAS0D,KAAKpD,YAAYlC,GAAG2F,EAAEb,EAAEpD,EAAEiB,YAAYiD,EAAEpE,EAAEE,EAAEiB,YAAYkD,EAAEE,EAAErE,EAAEiB,YADhD,SAASsD,IAAI,IAAG,IAAK/B,MAAMC,UAAUF,GAAG9C,EAAEnB,EAAEiD,YAAYjD,EAAEiD,WAAW6C,YAAY9F,GAAG2B,EAAEoD,MAC7e5D,EAAE,4BAA4B,CAAC,IAAIO,EAAEE,SAASsE,QAAU,IAAKxE,QAAG,IAASA,IAAEW,EAAEyC,EAAEpD,EAAEiB,YAAYL,EAAEd,EAAEE,EAAEiB,YAAYP,EAAE2D,EAAErE,EAAEiB,YAAY+C,KAAIlF,EAAE0E,WAAWe,EAAE,KAA+TA,GAAIlD,EAAE+B,GAAE,SAASpD,GAAGW,EAAEX,EAAEgE,OAAMjD,EAAEqC,EACnfhB,EAAE/D,EAAE,IAAIA,EAAEoD,OAAO,iBAAiBJ,EAAEvB,GAAE,SAASE,GAAGY,EAAEZ,EAAEgE,OAAMjD,EAAEjB,EAAEsC,EAAE/D,EAAE,IAAIA,EAAEoD,OAAO,YAAYJ,EAAEgD,GAAE,SAASrE,GAAGU,EAAEV,EAAEgE,OAAMjD,EAAEsD,EAAEjC,EAAE/D,EAAE,IAAIA,EAAEoD,OAAO,uBAA8C1D,EAAOD,QAAQ0D,EAPpI,I,cC8BrEzD,EAAOD,QALP,SAAkBmB,GAChB,IAAIwF,SAAcxF,EAClB,OAAgB,MAATA,IAA0B,UAARwF,GAA4B,YAARA,K,gBC3B/C,IAAIC,EAAW,EAAQ,GACnBC,EAAW,EAAQ,GAmEvB5G,EAAOD,QAlBP,SAAkB8G,EAAMC,EAAMC,GAC5B,IAAIC,GAAU,EACVC,GAAW,EAEf,GAAmB,mBAARJ,EACT,MAAM,IAAIK,UAnDQ,uBAyDpB,OAJIN,EAASG,KACXC,EAAU,YAAaD,IAAYA,EAAQC,QAAUA,EACrDC,EAAW,aAAcF,IAAYA,EAAQE,SAAWA,GAEnDN,EAASE,EAAMC,EAAM,CAC1B,QAAWE,EACX,QAAWF,EACX,SAAYG,M,gBChEhB,IAAIE,EAAa,EAAQ,GAGrBC,EAA0B,iBAARC,MAAoBA,MAAQA,KAAK1G,SAAWA,QAAU0G,KAGxEC,EAAOH,GAAcC,GAAYG,SAAS,cAATA,GAErCvH,EAAOD,QAAUuH,G,gBCRjB,IAGItG,EAHO,EAAQ,GAGDA,OAElBhB,EAAOD,QAAUiB,G,8BCLjB,kDAAIwG,EAAgD,SAAUC,EAAIC,EAAMC,GACpE,GAAIA,GAA6B,IAArBC,UAAUpC,OAAc,IAAK,IAA4BqC,EAAxB5H,EAAI,EAAGC,EAAIwH,EAAKlC,OAAYvF,EAAIC,EAAGD,KACxE4H,GAAQ5H,KAAKyH,IACRG,IAAIA,EAAKC,MAAMjG,UAAUkG,MAAM3H,KAAKsH,EAAM,EAAGzH,IAClD4H,EAAG5H,GAAKyH,EAAKzH,IAGrB,OAAOwH,EAAGO,OAAOH,GAAMC,MAAMjG,UAAUkG,MAAM3H,KAAKsH,KAElDO,EACA,SAAqBzH,EAAM0H,EAASC,GAChC7F,KAAK9B,KAAOA,EACZ8B,KAAK4F,QAAUA,EACf5F,KAAK6F,GAAKA,EACV7F,KAAKoE,KAAO,WAKhB0B,EACA,SAAkBF,GACd5F,KAAK4F,QAAUA,EACf5F,KAAKoE,KAAO,OACZpE,KAAK9B,KAAO,OACZ8B,KAAK6F,GAAKE,EAAQC,UAKtBC,EACA,SAA6B/H,EAAM0H,EAASC,EAAIK,GAC5ClG,KAAK9B,KAAOA,EACZ8B,KAAK4F,QAAUA,EACf5F,KAAK6F,GAAKA,EACV7F,KAAKkG,IAAMA,EACXlG,KAAKoE,KAAO,cAKhB+B,EACA,WACInG,KAAKoE,KAAO,MACZpE,KAAKkG,KAAM,EACXlG,KAAK9B,KAAO,MACZ8B,KAAK4F,QAAU,KACf5F,KAAK6F,GAAK,MAKdO,EACA,WACIpG,KAAKoE,KAAO,eACZpE,KAAK9B,KAAO,eACZ8B,KAAK4F,QAAU,KACf5F,KAAK6F,GAAK,MAOdQ,EAAqB,qFAErBC,EAAiB,CACjB,CAAC,MAAO,0BACR,CAAC,OAAQ,qBACT,CAAC,WAAY,uBACb,CAAC,gBAAiB,0BAClB,CAAC,YAAa,yBACd,CAAC,UAAW,8BACZ,CAAC,OAAQ,yBACT,CAAC,OAAQ,4BACT,CAAC,SAAU,6BACX,CAAC,gBAAiB,qBAClB,CACI,mBACA,0DAEJ,CAAC,SAAU,oDACX,CAAC,YAAa,iCACd,CAAC,QAAS,6BACV,CAAC,UAAW,+BACZ,CAAC,QAAS,qBACV,CAAC,aAAc,mCACf,CAAC,QAAS,6BACV,CAAC,QAAS,2BACV,CAAC,MAAO,oDACR,CAAC,MAAO,iGACR,CAAC,WAAY,wCACb,CAAC,KAAM,6CACP,CAAC,KAAM,uCACP,CAAC,KAAM,gBACP,CAAC,OAAQ,qCACT,CAAC,UAAW,uBACZ,CAAC,MAAO,0CACR,CAAC,SAAU,gCACX,CAAC,WAAY,uBACb,CAAC,YAAa,yBACd,CAAC,cAAe,mCAChB,CAAC,cAAe,qCAChB,CAAC,OAAQ,sBACT,CAAC,YAzCoB,iIA2CrBC,EAAuB,CACvB,CAAC,MAAO,kBACR,CAAC,aAAc,WACf,CAAC,gBAAiB,mBAClB,CAAC,iBAAkB,YACnB,CAAC,YAAa,UACd,CAAC,eAAgB,SACjB,CAAC,aAAc,qCACf,CAAC,aAAc,wBACf,CAAC,eAAgB,mCACjB,CAAC,aAAc,iCACf,CAAC,sBAAuB,oBACxB,CAAC,gBAAiB,oBAClB,CAAC,YAAa,oBACd,CAAC,YAAa,oBACd,CAAC,cAAe,oBAChB,CAAC,aAAc,qBACf,CAAC,aAAc,cACf,CAAC,aAAc,uDACf,CAAC,WAAY,WACb,CAAC,SAAU,SACX,CAAC,YAAa,QACd,CAAC,QAAS,iBACV,CAAC,SAAU,6BACX,CAAC,MAAO,OACR,CAAC,OAAQ,QACT,CAAC,OAAQ,UAEN,SAASC,EAAO7D,GACnB,OAAMA,EACK8D,EAAe9D,GAEF,oBAAb9C,UACc,oBAAd2C,WACe,gBAAtBA,UAAUkE,QACH,IAAIN,EAEU,oBAAd5D,UACAiE,EAAejE,UAAUG,gBA6DJ,IAAZoD,GAA2BA,EAAQH,QACvC,IAAIE,EAASC,EAAQH,QAAQH,MAAM,IAAM,KA1D7D,SAASkB,EAAeC,GAKpB,MAAe,KAAPA,GACJN,EAAeO,QAAO,SAAUC,EAASC,GACrC,IAAIC,EAAUD,EAAG,GAAIE,EAAQF,EAAG,GAChC,GAAID,EACA,OAAOA,EAEX,IAAII,EAAUD,EAAMvE,KAAKkE,GACzB,QAASM,GAAW,CAACF,EAASE,MAC/B,GAMJ,SAAST,EAAeG,GAC3B,IAAIO,EAAcR,EAAeC,GACjC,IAAKO,EACD,OAAO,KAEX,IAAIjJ,EAAOiJ,EAAY,GAAIC,EAAQD,EAAY,GAC/C,GAAa,cAATjJ,EACA,OAAO,IAAIiI,EAGf,IAAIkB,EAAeD,EAAM,IAAMA,EAAM,GAAGE,MAAM,KAAKtF,KAAK,KAAKsF,MAAM,KAAK7B,MAAM,EAAG,GAC7E4B,EACIA,EAAanE,OAlHI,IAmHjBmE,EAAenC,EAAcA,EAAc,GAAImC,GAAc,GA4BzE,SAA4BE,GAExB,IADA,IAAIC,EAAS,GACJC,EAAK,EAAGA,EAAKF,EAAOE,IACzBD,EAAOE,KAAK,KAEhB,OAAOF,EAjCqEG,CAnHnD,EAmH+FN,EAAanE,SAAS,IAI1ImE,EAAe,GAEnB,IAAIzB,EAAUyB,EAAarF,KAAK,KAC5B6D,EAOD,SAAkBe,GACrB,IAAK,IAAIa,EAAK,EAAGF,EAAQhB,EAAqBrD,OAAQuE,EAAKF,EAAOE,IAAM,CACpE,IAAIV,EAAKR,EAAqBkB,GAAK5B,EAAKkB,EAAG,GAE3C,GAFuDA,EAAG,GACxCrE,KAAKkE,GAEnB,OAAOf,EAGf,OAAO,KAfE+B,CAAShB,GACdiB,EAAiBxB,EAAmB3D,KAAKkE,GAC7C,OAAIiB,GAAkBA,EAAe,GAC1B,IAAI5B,EAAoB/H,EAAM0H,EAASC,EAAIgC,EAAe,IAE9D,IAAIlC,EAAYzH,EAAM0H,EAASC,M,kCC/L1C,IAAIvB,EAAW,EAAQ,GACnBwD,EAAM,EAAQ,GACdC,EAAW,EAAQ,IAMnBC,EAAYC,KAAKC,IACjBC,EAAYF,KAAKG,IAqLrB1K,EAAOD,QA7HP,SAAkB8G,EAAMC,EAAMC,GAC5B,IAAI4D,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAAiB,EACjBjE,GAAU,EACVkE,GAAS,EACTjE,GAAW,EAEf,GAAmB,mBAARJ,EACT,MAAM,IAAIK,UAzEQ,uBAmFpB,SAASiE,EAAWC,GAClB,IAAIC,EAAOV,EACPW,EAAUV,EAKd,OAHAD,EAAWC,OAAWW,EACtBN,EAAiBG,EACjBN,EAASjE,EAAK2E,MAAMF,EAASD,GAI/B,SAASI,EAAYL,GAMnB,OAJAH,EAAiBG,EAEjBL,EAAUtF,WAAWiG,EAAc5E,GAE5BE,EAAUmE,EAAWC,GAAQN,EAatC,SAASa,EAAaP,GACpB,IAAIQ,EAAoBR,EAAOJ,EAM/B,YAAyBO,IAAjBP,GAA+BY,GAAqB9E,GACzD8E,EAAoB,GAAOV,GANJE,EAAOH,GAM8BJ,EAGjE,SAASa,IACP,IAAIN,EAAOhB,IACX,GAAIuB,EAAaP,GACf,OAAOS,EAAaT,GAGtBL,EAAUtF,WAAWiG,EA3BvB,SAAuBN,GACrB,IAEIU,EAAchF,GAFMsE,EAAOJ,GAI/B,OAAOE,EACHT,EAAUqB,EAAajB,GAJDO,EAAOH,IAK7Ba,EAoB+BC,CAAcX,IAGnD,SAASS,EAAaT,GAKpB,OAJAL,OAAUQ,EAINtE,GAAY0D,EACPQ,EAAWC,IAEpBT,EAAWC,OAAWW,EACfT,GAeT,SAASkB,IACP,IAAIZ,EAAOhB,IACP6B,EAAaN,EAAaP,GAM9B,GAJAT,EAAW/C,UACXgD,EAAWtI,KACX0I,EAAeI,EAEXa,EAAY,CACd,QAAgBV,IAAZR,EACF,OAAOU,EAAYT,GAErB,GAAIE,EAIF,OAFAtF,aAAamF,GACbA,EAAUtF,WAAWiG,EAAc5E,GAC5BqE,EAAWH,GAMtB,YAHgBO,IAAZR,IACFA,EAAUtF,WAAWiG,EAAc5E,IAE9BgE,EAIT,OA3GAhE,EAAOuD,EAASvD,IAAS,EACrBF,EAASG,KACXC,IAAYD,EAAQC,QAEpB6D,GADAK,EAAS,YAAanE,GACHuD,EAAUD,EAAStD,EAAQ8D,UAAY,EAAG/D,GAAQ+D,EACrE5D,EAAW,aAAcF,IAAYA,EAAQE,SAAWA,GAoG1D+E,EAAUE,OApCV,gBACkBX,IAAZR,GACFnF,aAAamF,GAEfE,EAAiB,EACjBN,EAAWK,EAAeJ,EAAWG,OAAUQ,GAgCjDS,EAAUG,MA7BV,WACE,YAAmBZ,IAAZR,EAAwBD,EAASe,EAAazB,MA6BhD4B,I,gBC3LT,IAAI1E,EAAO,EAAQ,GAsBnBtH,EAAOD,QAJG,WACR,OAAOuH,EAAK7C,KAAK2F,Q,iBCnBnB,YACA,IAAIjD,EAA8B,iBAAViF,GAAsBA,GAAUA,EAAOzL,SAAWA,QAAUyL,EAEpFpM,EAAOD,QAAUoH,I,+BCHjB,IAAItE,EAGJA,EAAI,WACH,OAAOP,KADJ,GAIJ,IAECO,EAAIA,GAAK,IAAI0E,SAAS,cAAb,GACR,MAAOlC,GAEc,iBAAXR,SAAqBhC,EAAIgC,QAOrC7E,EAAOD,QAAU8C,G,gBCnBjB,IAAIwJ,EAAW,EAAQ,IACnBzF,EAAW,EAAQ,GACnB0F,EAAW,EAAQ,IAMnBC,EAAa,qBAGbC,EAAa,aAGbC,EAAY,cAGZC,EAAexH,SA8CnBlF,EAAOD,QArBP,SAAkBmB,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIoL,EAASpL,GACX,OA1CM,IA4CR,GAAI0F,EAAS1F,GAAQ,CACnB,IAAIyL,EAAgC,mBAAjBzL,EAAM0L,QAAwB1L,EAAM0L,UAAY1L,EACnEA,EAAQ0F,EAAS+F,GAAUA,EAAQ,GAAMA,EAE3C,GAAoB,iBAATzL,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQmL,EAASnL,GACjB,IAAI2L,EAAWL,EAAW5H,KAAK1D,GAC/B,OAAQ2L,GAAYJ,EAAU7H,KAAK1D,GAC/BwL,EAAaxL,EAAM6G,MAAM,GAAI8E,EAAW,EAAI,GAC3CN,EAAW3H,KAAK1D,GAvDb,KAuD6BA,I,gBC5DvC,IAAI4L,EAAkB,EAAQ,IAG1BC,EAAc,OAelB/M,EAAOD,QANP,SAAkBiN,GAChB,OAAOA,EACHA,EAAOjF,MAAM,EAAG+E,EAAgBE,GAAU,GAAGC,QAAQF,EAAa,IAClEC,I,cCdN,IAAIE,EAAe,KAiBnBlN,EAAOD,QAPP,SAAyBiN,GAGvB,IAFA,IAAIG,EAAQH,EAAOxH,OAEZ2H,KAAWD,EAAatI,KAAKoI,EAAOI,OAAOD,MAClD,OAAOA,I,gBCfT,IAAIE,EAAa,EAAQ,IACrBC,EAAe,EAAQ,IA2B3BtN,EAAOD,QALP,SAAkBmB,GAChB,MAAuB,iBAATA,GACXoM,EAAapM,IArBF,mBAqBYmM,EAAWnM,K,gBCzBvC,IAAIF,EAAS,EAAQ,GACjBuM,EAAY,EAAQ,IACpBC,EAAiB,EAAQ,IAOzBC,EAAiBzM,EAASA,EAAOC,iBAAcsK,EAkBnDvL,EAAOD,QATP,SAAoBmB,GAClB,OAAa,MAATA,OACeqK,IAAVrK,EAdQ,qBADL,gBAiBJuM,GAAkBA,KAAkB9M,OAAOO,GAC/CqM,EAAUrM,GACVsM,EAAetM,K,gBCxBrB,IAAIF,EAAS,EAAQ,GAGjB0M,EAAc/M,OAAOkB,UAGrBC,EAAiB4L,EAAY5L,eAO7B6L,EAAuBD,EAAYE,SAGnCH,EAAiBzM,EAASA,EAAOC,iBAAcsK,EA6BnDvL,EAAOD,QApBP,SAAmBmB,GACjB,IAAI2M,EAAQ/L,EAAe1B,KAAKc,EAAOuM,GACnCK,EAAM5M,EAAMuM,GAEhB,IACEvM,EAAMuM,QAAkBlC,EACxB,IAAIwC,GAAW,EACf,MAAO1I,IAET,IAAIyF,EAAS6C,EAAqBvN,KAAKc,GAQvC,OAPI6M,IACEF,EACF3M,EAAMuM,GAAkBK,SAEjB5M,EAAMuM,IAGV3C,I,cCzCT,IAOI6C,EAPchN,OAAOkB,UAOc+L,SAavC5N,EAAOD,QAJP,SAAwBmB,GACtB,OAAOyM,EAAqBvN,KAAKc,K,cCUnClB,EAAOD,QAJP,SAAsBmB,GACpB,OAAgB,MAATA,GAAiC,iBAATA,I,cCxBjC,IAOI8M,EACAC,EARA5F,EAAUrI,EAAOD,QAAU,GAU/B,SAASmO,IACL,MAAM,IAAI5I,MAAM,mCAEpB,SAAS6I,IACL,MAAM,IAAI7I,MAAM,qCAsBpB,SAAS8I,EAAWC,GAChB,GAAIL,IAAqBvI,WAErB,OAAOA,WAAW4I,EAAK,GAG3B,IAAKL,IAAqBE,IAAqBF,IAAqBvI,WAEhE,OADAuI,EAAmBvI,WACZA,WAAW4I,EAAK,GAE3B,IAEI,OAAOL,EAAiBK,EAAK,GAC/B,MAAMhJ,GACJ,IAEI,OAAO2I,EAAiB5N,KAAK,KAAMiO,EAAK,GAC1C,MAAMhJ,GAEJ,OAAO2I,EAAiB5N,KAAKkC,KAAM+L,EAAK,MAvCnD,WACG,IAEQL,EADsB,mBAAfvI,WACYA,WAEAyI,EAEzB,MAAO7I,GACL2I,EAAmBE,EAEvB,IAEQD,EADwB,mBAAjBrI,aACcA,aAEAuI,EAE3B,MAAO9I,GACL4I,EAAqBE,GAjB7B,GAwEA,IAEIG,EAFAC,EAAQ,GACRC,GAAW,EAEXC,GAAc,EAElB,SAASC,IACAF,GAAaF,IAGlBE,GAAW,EACPF,EAAa9I,OACb+I,EAAQD,EAAatG,OAAOuG,GAE5BE,GAAc,EAEdF,EAAM/I,QACNmJ,KAIR,SAASA,IACL,IAAIH,EAAJ,CAGA,IAAII,EAAUR,EAAWM,GACzBF,GAAW,EAGX,IADA,IAAIK,EAAMN,EAAM/I,OACVqJ,GAAK,CAGP,IAFAP,EAAeC,EACfA,EAAQ,KACCE,EAAaI,GACdP,GACAA,EAAaG,GAAYK,MAGjCL,GAAc,EACdI,EAAMN,EAAM/I,OAEhB8I,EAAe,KACfE,GAAW,EAnEf,SAAyBO,GACrB,GAAId,IAAuBrI,aAEvB,OAAOA,aAAamJ,GAGxB,IAAKd,IAAuBE,IAAwBF,IAAuBrI,aAEvE,OADAqI,EAAqBrI,aACdA,aAAamJ,GAExB,IAEWd,EAAmBc,GAC5B,MAAO1J,GACL,IAEI,OAAO4I,EAAmB7N,KAAK,KAAM2O,GACvC,MAAO1J,GAGL,OAAO4I,EAAmB7N,KAAKkC,KAAMyM,KAgD7CC,CAAgBJ,IAiBpB,SAASK,EAAKZ,EAAKa,GACf5M,KAAK+L,IAAMA,EACX/L,KAAK4M,MAAQA,EAYjB,SAASC,KA5BT9G,EAAQ+G,SAAW,SAAUf,GACzB,IAAIhD,EAAO,IAAIvD,MAAMF,UAAUpC,OAAS,GACxC,GAAIoC,UAAUpC,OAAS,EACnB,IAAK,IAAIvF,EAAI,EAAGA,EAAI2H,UAAUpC,OAAQvF,IAClCoL,EAAKpL,EAAI,GAAK2H,UAAU3H,GAGhCsO,EAAMvE,KAAK,IAAIiF,EAAKZ,EAAKhD,IACJ,IAAjBkD,EAAM/I,QAAiBgJ,GACvBJ,EAAWO,IASnBM,EAAKpN,UAAUiN,IAAM,WACjBxM,KAAK+L,IAAI7C,MAAM,KAAMlJ,KAAK4M,QAE9B7G,EAAQgH,MAAQ,UAChBhH,EAAQiB,SAAU,EAClBjB,EAAQiH,IAAM,GACdjH,EAAQkH,KAAO,GACflH,EAAQH,QAAU,GAClBG,EAAQmH,SAAW,GAInBnH,EAAQoH,GAAKN,EACb9G,EAAQqH,YAAcP,EACtB9G,EAAQsH,KAAOR,EACf9G,EAAQuH,IAAMT,EACd9G,EAAQwH,eAAiBV,EACzB9G,EAAQyH,mBAAqBX,EAC7B9G,EAAQ0H,KAAOZ,EACf9G,EAAQ2H,gBAAkBb,EAC1B9G,EAAQ4H,oBAAsBd,EAE9B9G,EAAQ6H,UAAY,SAAU1P,GAAQ,MAAO,IAE7C6H,EAAQ8H,QAAU,SAAU3P,GACxB,MAAM,IAAI8E,MAAM,qCAGpB+C,EAAQ+H,IAAM,WAAc,MAAO,KACnC/H,EAAQgI,MAAQ,SAAU9J,GACtB,MAAM,IAAIjB,MAAM,mCAEpB+C,EAAQiI,MAAQ,WAAa,OAAO,I,eC/KnC,WACD,aAGA,GAAsB,iBAAXzL,OAMX,GAAI,yBAA0BA,QAC1B,8BAA+BA,QAC/B,sBAAuBA,OAAO0L,0BAA0B1O,UAIpD,mBAAoBgD,OAAO0L,0BAA0B1O,WACzDlB,OAAOC,eAAeiE,OAAO0L,0BAA0B1O,UACrD,iBAAkB,CAClBf,IAAK,WACH,OAAOwB,KAAKkO,kBAAoB,SAVxC,CAkCA,IAAIrO,EAAW,SAAUsO,GAGvB,IAFA,IAAIC,EAOH7L,OAAO1C,SANJwO,EAAQC,EAAgBF,GACrBC,GAELA,EAAQC,EADRF,EAAMC,EAAME,eAGd,OAAOH,EAPM,GAgBXI,EAAW,GAOXC,EAAqB,KAMrBC,EAAkB,KAwFtBC,EAAqBpP,UAAUqP,iBAAmB,IAQlDD,EAAqBpP,UAAUsP,cAAgB,KAM/CF,EAAqBpP,UAAUuP,uBAAwB,EAYvDH,EAAqBI,yBAA2B,WAiB9C,OAhBKN,IAKHA,EAAqB,SAASO,EAAoBC,GAI9CP,EAHGM,GAAuBC,EAGRC,EAAsBF,EAAoBC,GAgrB3D,CACLE,IAAK,EACLC,OAAQ,EACRC,KAAM,EACNC,MAAO,EACPzO,MAAO,EACP0O,OAAQ,GAprBNf,EAASgB,SAAQ,SAASC,GACxBA,EAASC,8BAIRjB,GAOTE,EAAqBgB,yBAA2B,WAC9ClB,EAAqB,KACrBC,EAAkB,MASpBC,EAAqBpP,UAAUqQ,QAAU,SAASC,GAKhD,IAJ8B7P,KAAK8P,oBAAoBC,MAAK,SAASC,GACnE,OAAOA,EAAKC,SAAWJ,KAGzB,CAIA,IAAMA,GAA6B,GAAnBA,EAAOK,SACrB,MAAM,IAAIlN,MAAM,6BAGlBhD,KAAKmQ,oBACLnQ,KAAK8P,oBAAoBpI,KAAK,CAACuI,QAASJ,EAAQO,MAAO,OACvDpQ,KAAKqQ,sBAAsBR,EAAOtB,eAClCvO,KAAK0P,2BAQPf,EAAqBpP,UAAU+Q,UAAY,SAAST,GAClD7P,KAAK8P,oBACD9P,KAAK8P,oBAAoBS,QAAO,SAASP,GACvC,OAAOA,EAAKC,SAAWJ,KAE7B7P,KAAKwQ,wBAAwBX,EAAOtB,eACG,GAAnCvO,KAAK8P,oBAAoB5M,QAC3BlD,KAAKyQ,uBAQT9B,EAAqBpP,UAAUmR,WAAa,WAC1C1Q,KAAK8P,oBAAsB,GAC3B9P,KAAK2Q,6BACL3Q,KAAKyQ,uBAUP9B,EAAqBpP,UAAUqR,YAAc,WAC3C,IAAIC,EAAU7Q,KAAK8Q,eAAerL,QAElC,OADAzF,KAAK8Q,eAAiB,GACfD,GAaTlC,EAAqBpP,UAAUwR,gBAAkB,SAASC,GACxD,IAAIC,EAAYD,GAAiB,CAAC,GAGlC,OAFKxL,MAAM0L,QAAQD,KAAYA,EAAY,CAACA,IAErCA,EAAUE,OAAOZ,QAAO,SAAS1R,EAAGlB,EAAGgC,GAC5C,GAAgB,iBAALd,GAAiBuS,MAAMvS,IAAMA,EAAI,GAAKA,EAAI,EACnD,MAAM,IAAImE,MAAM,0DAElB,OAAOnE,IAAMc,EAAEhC,EAAI,OAgBvBgR,EAAqBpP,UAAU8R,iBAAmB,SAASC,GACzD,IACIC,GADeD,GAAkB,OACVhK,MAAM,OAAOkK,KAAI,SAASC,GACnD,IAAIC,EAAQ,wBAAwBhP,KAAK+O,GACzC,IAAKC,EACH,MAAM,IAAI1O,MAAM,qDAElB,MAAO,CAACpE,MAAO+S,WAAWD,EAAM,IAAKE,KAAMF,EAAM,OAQnD,OAJAH,EAAQ,GAAKA,EAAQ,IAAMA,EAAQ,GACnCA,EAAQ,GAAKA,EAAQ,IAAMA,EAAQ,GACnCA,EAAQ,GAAKA,EAAQ,IAAMA,EAAQ,GAE5BA,GAUT5C,EAAqBpP,UAAU8Q,sBAAwB,SAASjC,GAC9D,IAAIyD,EAAMzD,EAAI0D,YACd,GAAKD,IAI0C,GAA3C7R,KAAK+R,qBAAqBC,QAAQ5D,GAAtC,CAMA,IAAI6D,EAAWjS,KAAK0P,uBAChBwC,EAAqB,KACrBC,EAAc,KAIdnS,KAAK6O,cACPqD,EAAqBL,EAAIO,YAAYH,EAAUjS,KAAK6O,gBAEpDwD,EAASR,EAAK,SAAUI,GAAU,GAClCI,EAASjE,EAAK,SAAU6D,GAAU,GAC9BjS,KAAK8O,uBAAyB,qBAAsB+C,IACtDM,EAAc,IAAIN,EAAIS,iBAAiBL,IAC3BrC,QAAQxB,EAAK,CACvBmE,YAAY,EACZC,WAAW,EACXC,eAAe,EACfC,SAAS,KAKf1S,KAAK+R,qBAAqBrK,KAAK0G,GAC/BpO,KAAK2S,wBAAwBjL,MAAK,WAGhC,IAAImK,EAAMzD,EAAI0D,YAEVD,IACEK,GACFL,EAAIe,cAAcV,GAEpBW,EAAYhB,EAAK,SAAUI,GAAU,IAGvCY,EAAYzE,EAAK,SAAU6D,GAAU,GACjCE,GACFA,EAAYzB,gBAKhB,IAAIoC,EACD9S,KAAKgF,OAAShF,KAAKgF,KAAKuJ,eAAiBvO,KAAKgF,OAAUnF,EAC3D,GAAIuO,GAAO0E,EAAS,CAClB,IAAIzE,EAAQC,EAAgBF,GACxBC,GACFrO,KAAKqQ,sBAAsBhC,EAAME,kBAWvCI,EAAqBpP,UAAUiR,wBAA0B,SAASpC,GAChE,IAAIvD,EAAQ7K,KAAK+R,qBAAqBC,QAAQ5D,GAC9C,IAAc,GAAVvD,EAAJ,CAIA,IAAIiI,EACD9S,KAAKgF,OAAShF,KAAKgF,KAAKuJ,eAAiBvO,KAAKgF,OAAUnF,EAoB3D,IAhBIG,KAAK8P,oBAAoBC,MAAK,SAASC,GACrC,IAAI+C,EAAU/C,EAAKC,QAAQ1B,cAE3B,GAAIwE,GAAW3E,EACb,OAAO,EAGT,KAAO2E,GAAWA,GAAWD,GAAS,CACpC,IAAIzE,EAAQC,EAAgByE,GAE5B,IADAA,EAAU1E,GAASA,EAAME,gBACVH,EACb,OAAO,EAGX,OAAO,KAEb,CAKA,IAAI4E,EAAchT,KAAK2S,wBAAwB9H,GAM/C,GALA7K,KAAK+R,qBAAqBkB,OAAOpI,EAAO,GACxC7K,KAAK2S,wBAAwBM,OAAOpI,EAAO,GAC3CmI,IAGI5E,GAAO0E,EAAS,CAClB,IAAIzE,EAAQC,EAAgBF,GACxBC,GACFrO,KAAKwQ,wBAAwBnC,EAAME,mBAWzCI,EAAqBpP,UAAUoR,2BAA6B,WAC1D,IAAIuC,EAAelT,KAAK2S,wBAAwBlN,MAAM,GACtDzF,KAAK+R,qBAAqB7O,OAAS,EACnClD,KAAK2S,wBAAwBzP,OAAS,EACtC,IAAK,IAAIvF,EAAI,EAAGA,EAAIuV,EAAahQ,OAAQvF,IACvCuV,EAAavV,MAWjBgR,EAAqBpP,UAAUmQ,uBAAyB,WACtD,GAAK1P,KAAKgF,OAAQyJ,GAAuBC,EAAzC,CAKA,IAAIyE,EAAcnT,KAAKoT,eACnBC,EAAWF,EAAcnT,KAAKsT,eAiZ3B,CACLnE,IAAK,EACLC,OAAQ,EACRC,KAAM,EACNC,MAAO,EACPzO,MAAO,EACP0O,OAAQ,GArZVvP,KAAK8P,oBAAoBN,SAAQ,SAASQ,GACxC,IAAIH,EAASG,EAAKC,QACdsD,EAAaC,EAAsB3D,GACnC4D,EAAqBzT,KAAK0T,oBAAoB7D,GAC9C8D,EAAW3D,EAAKI,MAChBnB,EAAmBkE,GAAeM,GAClCzT,KAAK4T,kCAAkC/D,EAAQ0D,EAAYF,GAE3DQ,EAAa,KACZ7T,KAAK0T,oBAAoB7D,GAElBpB,IAAsBzO,KAAKgF,OACrC6O,EAAaR,GAFbQ,EAqYG,CACL1E,IAAK,EACLC,OAAQ,EACRC,KAAM,EACNC,MAAO,EACPzO,MAAO,EACP0O,OAAQ,GAtYR,IAAIuE,EAAW9D,EAAKI,MAAQ,IAAInC,EAA0B,CACxDnF,KAkQGvG,OAAOwR,aAAeA,YAAYjM,KAAOiM,YAAYjM,MAjQxD+H,OAAQA,EACRb,mBAAoBuE,EACpBM,WAAYA,EACZ5E,iBAAkBA,IAGf0E,EAEMR,GAAeM,EAGpBzT,KAAKgU,qBAAqBL,EAAUG,IACtC9T,KAAK8Q,eAAepJ,KAAKoM,GAMvBH,GAAYA,EAASM,gBACvBjU,KAAK8Q,eAAepJ,KAAKoM,GAZ3B9T,KAAK8Q,eAAepJ,KAAKoM,KAe1B9T,MAECA,KAAK8Q,eAAe5N,QACtBlD,KAAKkU,UAAUlU,KAAK4Q,cAAe5Q,QAkBvC2O,EAAqBpP,UAAUqU,kCAC3B,SAAS/D,EAAQ0D,EAAYF,GAE/B,GAA+C,QAA3C9Q,OAAO4R,iBAAiBtE,GAAQuE,QAApC,CAMA,IAJA,IAqR+BC,EAAOC,EAClCnF,EACAC,EACAC,EACAC,EACAzO,EACA0O,EA3RAN,EAAmBsE,EACnBgB,EAASC,EAAc3E,GACvB4E,GAAS,GAELA,GAAUF,GAAQ,CACxB,IAAIG,EAAa,KACbC,EAAyC,GAAnBJ,EAAOrE,SAC7B3N,OAAO4R,iBAAiBI,GAAU,GAGtC,GAAmC,QAA/BI,EAAoBP,QAAmB,OAAO,KAElD,GAAIG,GAAUvU,KAAKgF,MAA0C,GAAlCuP,EAAOrE,SAEhC,GADAuE,GAAS,EACLF,GAAUvU,KAAKgF,MAAQuP,GAAU1U,EAC/B4O,IAAuBzO,KAAKgF,MACzB0J,GACwB,GAAzBA,EAAgB7N,OAAwC,GAA1B6N,EAAgBa,QAEhDgF,EAAS,KACTG,EAAa,KACbzF,EAAmB,MAEnByF,EAAahG,EAGfgG,EAAarB,MAEV,CAEL,IAAIhF,EAAQmG,EAAcD,GACtBK,EAAYvG,GAASmF,EAAsBnF,GAC3CwG,EACAxG,GACArO,KAAK4T,kCAAkCvF,EAAOuG,EAAWvB,GACzDuB,GAAaC,GACfN,EAASlG,EACTqG,EAAaxF,EAAsB0F,EAAWC,KAE9CN,EAAS,KACTtF,EAAmB,UAGlB,CAKL,IAAIb,EAAMmG,EAAOhG,cACbgG,GAAUnG,EAAI7K,MACdgR,GAAUnG,EAAI0G,iBACkB,WAAhCH,EAAoBI,WACtBL,EAAalB,EAAsBe,IASvC,GAHIG,IA2NyBL,EA1NgBK,EA0NTJ,EA1NqBrF,EA2NvDE,SACAC,SACAC,SACAC,SACAzO,SACA0O,SALAJ,EAAMlH,KAAKC,IAAImM,EAAMlF,IAAKmF,EAAMnF,KAChCC,EAASnH,KAAKG,IAAIiM,EAAMjF,OAAQkF,EAAMlF,QACtCC,EAAOpH,KAAKC,IAAImM,EAAMhF,KAAMiF,EAAMjF,MAClCC,EAAQrH,KAAKG,IAAIiM,EAAM/E,MAAOgF,EAAMhF,OAEpCC,EAASH,EAASD,EAhOlBF,GA+NApO,EAAQyO,EAAQD,IAGH,GAAKE,GAAU,GAAM,CACpCJ,IAAKA,EACLC,OAAQA,EACRC,KAAMA,EACNC,MAAOA,EACPzO,MAAOA,EACP0O,OAAQA,IACL,OAvOEN,EAAkB,MACvBsF,EAASA,GAAUC,EAAcD,GAEnC,OAAOtF,IASTN,EAAqBpP,UAAU+T,aAAe,WAC5C,IAAID,EACJ,GAAIrT,KAAKgF,OAASgQ,EAAMhV,KAAKgF,MAC3BqO,EAAWG,EAAsBxT,KAAKgF,UACjC,CAEL,IAAIoJ,EAAM4G,EAAMhV,KAAKgF,MAAQhF,KAAKgF,KAAOnF,EACrCoV,EAAO7G,EAAI0G,gBACXvR,EAAO6K,EAAI7K,KACf8P,EAAW,CACTlE,IAAK,EACLE,KAAM,EACNC,MAAO2F,EAAKC,aAAe3R,EAAK2R,YAChCrU,MAAOoU,EAAKC,aAAe3R,EAAK2R,YAChC9F,OAAQ6F,EAAKE,cAAgB5R,EAAK4R,aAClC5F,OAAQ0F,EAAKE,cAAgB5R,EAAK4R,cAGtC,OAAOnV,KAAKoV,wBAAwB/B,IAUtC1E,EAAqBpP,UAAU6V,wBAA0B,SAASC,GAChE,IAAI9D,EAAUvR,KAAKsV,kBAAkB9D,KAAI,SAASC,EAAQ9T,GACxD,MAAsB,MAAf8T,EAAOG,KAAeH,EAAO7S,MAChC6S,EAAO7S,OAASjB,EAAI,EAAI0X,EAAKxU,MAAQwU,EAAK9F,QAAU,OAEtDgG,EAAU,CACZpG,IAAKkG,EAAKlG,IAAMoC,EAAQ,GACxBjC,MAAO+F,EAAK/F,MAAQiC,EAAQ,GAC5BnC,OAAQiG,EAAKjG,OAASmC,EAAQ,GAC9BlC,KAAMgG,EAAKhG,KAAOkC,EAAQ,IAK5B,OAHAgE,EAAQ1U,MAAQ0U,EAAQjG,MAAQiG,EAAQlG,KACxCkG,EAAQhG,OAASgG,EAAQnG,OAASmG,EAAQpG,IAEnCoG,GAcT5G,EAAqBpP,UAAUyU,qBAC3B,SAASL,EAAUG,GAIrB,IAAI0B,EAAW7B,GAAYA,EAASM,eAChCN,EAASzF,mBAAqB,GAAK,EACnCuH,EAAW3B,EAASG,eACpBH,EAAS5F,mBAAqB,GAAK,EAGvC,GAAIsH,IAAaC,EAEjB,IAAK,IAAI9X,EAAI,EAAGA,EAAIqC,KAAK0V,WAAWxS,OAAQvF,IAAK,CAC/C,IAAIsT,EAAYjR,KAAK0V,WAAW/X,GAIhC,GAAIsT,GAAauE,GAAYvE,GAAawE,GACtCxE,EAAYuE,GAAavE,EAAYwE,EACvC,OAAO,IAWb9G,EAAqBpP,UAAU6T,aAAe,WAC5C,OAAQpT,KAAKgF,MAAQ2Q,EAAa9V,EAAUG,KAAKgF,OAUnD2J,EAAqBpP,UAAUmU,oBAAsB,SAAS7D,GAC5D,IAAIiD,EACD9S,KAAKgF,OAAShF,KAAKgF,KAAKuJ,eAAiBvO,KAAKgF,OAAUnF,EAC3D,OACE8V,EAAa7C,EAASjD,MACpB7P,KAAKgF,MAAQ8N,GAAWjD,EAAOtB,gBAUrCI,EAAqBpP,UAAU4Q,kBAAoB,WAC7C3B,EAASwD,QAAQhS,MAAQ,GAC3BwO,EAAS9G,KAAK1H,OASlB2O,EAAqBpP,UAAUkR,oBAAsB,WACnD,IAAI5F,EAAQ2D,EAASwD,QAAQhS,OACf,GAAV6K,GAAa2D,EAASyE,OAAOpI,EAAO,IA4P1CtI,OAAOoM,qBAAuBA,EAC9BpM,OAAO0L,0BAA4BA,EA38BnC,SAASK,EAAgBF,GACvB,IACE,OAAOA,EAAI0D,aAAe1D,EAAI0D,YAAY8D,cAAgB,KAC1D,MAAO7S,GAEP,OAAO,MA6CX,SAASkL,EAA0BmC,GACjCpQ,KAAK8I,KAAOsH,EAAMtH,KAClB9I,KAAK6P,OAASO,EAAMP,OACpB7P,KAAK6T,WAAagC,EAAczF,EAAMyD,YACtC7T,KAAKgP,mBAAqB6G,EAAczF,EAAMpB,oBAC9ChP,KAAKiP,iBAAmB4G,EAAczF,EAAMnB,kBA8xBrC,CACLE,IAAK,EACLC,OAAQ,EACRC,KAAM,EACNC,MAAO,EACPzO,MAAO,EACP0O,OAAQ,IAnyBVvP,KAAKiU,iBAAmB7D,EAAMnB,iBAG9B,IAAIsE,EAAavT,KAAKgP,mBAClB8G,EAAavC,EAAW1S,MAAQ0S,EAAWhE,OAC3CN,EAAmBjP,KAAKiP,iBACxB8G,EAAmB9G,EAAiBpO,MAAQoO,EAAiBM,OAM/DvP,KAAKkO,kBAHH4H,EAGuBE,QAAQD,EAAmBD,GAAYG,QAAQ,IAG/CjW,KAAKiU,eAAiB,EAAI,EAcvD,SAAStF,EAAqBsD,EAAUiE,GAEtC,IA6oBgBC,EAAI7J,EAChB8J,EA9oBA3R,EAAUyR,GAAe,GAE7B,GAAuB,mBAAZjE,EACT,MAAM,IAAIjP,MAAM,+BAGlB,GACEyB,EAAQO,MACiB,GAAzBP,EAAQO,KAAKkL,UACY,GAAzBzL,EAAQO,KAAKkL,SAEb,MAAM,IAAIlN,MAAM,sCAIlBhD,KAAK0P,wBA8nBWyG,EA7nBZnW,KAAK0P,uBAAuBvQ,KAAKa,MA6nBjBsM,EA7nBwBtM,KAAK4O,iBA8nB7CwH,EAAQ,KACL,WACAA,IACHA,EAAQjT,YAAW,WACjBgT,IACAC,EAAQ,OACP9J,MAjoBPtM,KAAKkU,UAAYjC,EACjBjS,KAAK8P,oBAAsB,GAC3B9P,KAAK8Q,eAAiB,GACtB9Q,KAAKsV,kBAAoBtV,KAAKqR,iBAAiB5M,EAAQ4R,YAGvDrW,KAAK0V,WAAa1V,KAAK+Q,gBAAgBtM,EAAQwM,WAC/CjR,KAAKgF,KAAOP,EAAQO,MAAQ,KAC5BhF,KAAKqW,WAAarW,KAAKsV,kBAAkB9D,KAAI,SAASC,GACpD,OAAOA,EAAO7S,MAAQ6S,EAAOG,QAC5B5P,KAAK,KAGRhC,KAAK+R,qBAAuB,GAE5B/R,KAAK2S,wBAA0B,GAgoBjC,SAASN,EAASiE,EAAMC,EAAOJ,EAAIK,GACG,mBAAzBF,EAAKxW,iBACdwW,EAAKxW,iBAAiByW,EAAOJ,EAAIK,IAAkB,GAEjB,mBAApBF,EAAKvW,aACnBuW,EAAKvW,YAAY,KAAOwW,EAAOJ,GAanC,SAAStD,EAAYyD,EAAMC,EAAOJ,EAAIK,GACG,mBAA5BF,EAAK9S,oBACd8S,EAAK9S,oBAAoB+S,EAAOJ,EAAIK,IAAkB,GAEnB,mBAArBF,EAAKG,cACnBH,EAAKG,aAAa,KAAOF,EAAOJ,GAoCpC,SAAS3C,EAAsBkD,GAC7B,IAAIrB,EAEJ,IACEA,EAAOqB,EAAGlD,wBACV,MAAOmD,IAKT,OAAKtB,GAGCA,EAAKxU,OAASwU,EAAK9F,SACvB8F,EAAO,CACLlG,IAAKkG,EAAKlG,IACVG,MAAO+F,EAAK/F,MACZF,OAAQiG,EAAKjG,OACbC,KAAMgG,EAAKhG,KACXxO,MAAOwU,EAAK/F,MAAQ+F,EAAKhG,KACzBE,OAAQ8F,EAAKjG,OAASiG,EAAKlG,MAGxBkG,GAUA,CACLlG,IAAK,EACLC,OAAQ,EACRC,KAAM,EACNC,MAAO,EACPzO,MAAO,EACP0O,OAAQ,GAYZ,SAASsG,EAAcR,GAErB,OAAKA,GAAQ,MAAOA,EACXA,EAMF,CACLlG,IAAKkG,EAAKlG,IACVrL,EAAGuR,EAAKlG,IACRC,OAAQiG,EAAKjG,OACbC,KAAMgG,EAAKhG,KACXxL,EAAGwR,EAAKhG,KACRC,MAAO+F,EAAK/F,MACZzO,MAAOwU,EAAKxU,MACZ0O,OAAQ8F,EAAK9F,QAYjB,SAASL,EAAsB0H,EAAoBC,GACjD,IAAI1H,EAAM0H,EAAuB1H,IAAMyH,EAAmBzH,IACtDE,EAAOwH,EAAuBxH,KAAOuH,EAAmBvH,KAC5D,MAAO,CACLF,IAAKA,EACLE,KAAMA,EACNE,OAAQsH,EAAuBtH,OAC/B1O,MAAOgW,EAAuBhW,MAC9BuO,OAAQD,EAAM0H,EAAuBtH,OACrCD,MAAOD,EAAOwH,EAAuBhW,OAYzC,SAAS8U,EAAapB,EAAQuC,GAE5B,IADA,IAAIR,EAAOQ,EACJR,GAAM,CACX,GAAIA,GAAQ/B,EAAQ,OAAO,EAE3B+B,EAAO9B,EAAc8B,GAEvB,OAAO,EAUT,SAAS9B,EAAc8B,GACrB,IAAI/B,EAAS+B,EAAKpV,WAElB,OAAoC,GAAhCoV,EAAKpG,UAAgCoG,GAAQzW,EAExCyO,EAAgBgI,IAIrB/B,GAAUA,EAAOwC,eACnBxC,EAASA,EAAOwC,aAAa7V,YAG3BqT,GAA6B,IAAnBA,EAAOrE,UAAkBqE,EAAOyC,KAErCzC,EAAOyC,KAGTzC,GAQT,SAASS,EAAMsB,GACb,OAAOA,GAA0B,IAAlBA,EAAKpG,UAr+BtB,I,iECMe+G,MARf,WACIpX,SAASqX,cAAc,QAAQC,UAAUC,IAAI5Q,cAAStI,OAJ/C,iBAAkBqE,QAAUC,UAAU6U,mBAOzCxX,SAASqX,cAAc,QAAQC,UAAUC,IAAI,iBCNtCE,MAJA,KACdzX,SAASiV,gBAAgBtU,MAAM+W,YAAY,OAAgC,IAArBhV,OAAOiV,YAAT,OCDrD,MAAMC,EAAIC,OAAOC,aAEXC,EAAQ,CACVC,cAAeJ,EAAE,mBACjBK,OACoBF,EAAMC,cAAcE,KAAK,4BACjC5K,GAAG,QAASnN,KAAKgY,cAE7BA,YAAYjV,GACRA,EAAEkV,iBACFL,EAAMC,cAAcK,KAAK,CAACva,EAAG+Y,KACPe,EAAEf,GAAIqB,KAAK,UAAUI,KAAK,SAExCV,EAAEf,GAAIqB,KAAK,UAAU,GAAGK,IAAM,IAElC,MAAMC,EAAWZ,EAAEf,GAAI4B,KAAK,aACbb,EAAEzX,MAAMuY,QAAQ,mBACnBR,KAAK,UAAU,GAAGS,QAAQC,QAClChB,EAAEf,GAAIqB,KAAK,4BAA4BW,IAAI,mBAAoB,OAASL,EAAW,KAAKM,OAExFlB,EAAEf,GAAIqB,KAAK,4BAA4BW,IAAI,mBAAoB,OAASL,EAAW,KAAKO,SAIhG,MAAMrE,EAASkD,EAAEzX,MAAMuY,QAAQ,mBAChChE,EAAOwD,KAAK,UAAU,GAAGS,QAAQC,QACrClE,EAAOwD,KAAK,UAAU,GAAGK,IAAM7D,EAAOwD,KAAK,UAAU,GAAGS,QAAQC,QAEhElE,EAAOwD,KAAK,UAAU,GAAGK,IAAM7D,EAAOwD,KAAK,UAAU,GAAGS,QAAQJ,IAE3D,MAAMS,EAActE,EAAOwD,KAAK,UAAU,GAAGK,IACxC7D,EAAOuE,SAAS,UAGjBvE,EAAOwD,KAAK,UAAU,GAAGK,IAAO,wCAAuC7D,EAAO+D,KAAK,8CAFnF/D,EAAOwD,KAAK,UAAU,GAAGK,KAAO,wDAK/B7D,EAAOwD,KAAK,UAAU,GAAGS,QAAQJ,MAClC7D,EAAOwD,KAAK,UAAU,GAAGK,IAAMS,EAAe,8CAElDpB,EAAEzX,MAAM+Y,MAAM,KAAKC,YAIZpB,QC5Cf,MAAMH,EAAIC,OAAOC,aAEjB,SAASsB,EAAWlW,GAClB,MAAMQ,EAAOkU,EAAE,QACTyB,EAASzB,EAAE,6BACX0B,EAAY1B,EAAE,eACpB,IAAI5H,GAAS,EAEb,GAAI9M,EAAG,CACLA,EAAEkV,iBACF,MAAMmB,EAAU3B,EAAE1U,EAAEsW,gBACpBxJ,EAC2B,UAAzBuJ,EAAQjB,KAAK,QACTiB,EAAQb,QAAQ,WAAWe,OAC3B7B,EAAE2B,EAAQjB,KAAK,SAExB,MAAMoB,EAAM,IAAIC,IAAIjX,OAAOkX,SAASC,MAC9BC,EAASJ,EAAIK,KAAOL,EAAIK,KAAKC,UAAU,GAAK,KAElD,GAAIF,EAAQ,CACX,MAAMG,EAAgBC,IAAIC,OAAOL,GAC3BM,EAAgBpa,SAASqX,cAAe,kBAAiB4C,GAE3DG,GACHA,EAAc9C,UAAUC,IAAI,uBAGtB,CACL,MAAM8C,EAAK3X,OAAOkX,SAASG,KACvBM,IAAIrK,EAAS4H,EAAEyC,IAGrB,GAAIrK,EAAO3M,OAAQ,CACjB,IAAIiX,GAAU,EAEdA,GAAUhB,EAAUjW,OAASiW,EAAUiB,cAAgBlB,EAAOkB,cAEnDxX,SAASiN,EAAO6I,IAAI,cAAe,IACnC9V,SAASiN,EAAO6I,IAAI,eAAgB,IAEpB,gBAAzB3V,EAAEsX,cAAcT,MACS,aAAzB7W,EAAEsX,cAAcT,MACS,eAAzB7W,EAAEsX,cAAcT,OAEhBO,GAAU,IAGZ5W,EAAK+W,SAAS,iBACd7C,EAAE,cACC8C,OACAC,QACC,CACEC,UAAW7X,SAASiN,EAAOsK,SAAShL,IAAMgL,EAAQ,KAEpD,IACA,KACEhX,WAAW,KACTI,EAAKmX,YAAY,kBAChB,QAcEC,MARf,WACElD,EAAE,yDAAyDtK,GACzD,QACA8L,GAEF9V,WAAW8V,EAAY,MC1CV2B,MApBI,CACfC,UAAU,EACVC,OACQ9a,KAAK6a,WAGT7a,KAAK6a,UAAW,EAEhBhb,SAAS0D,KAAK/C,MAAMuU,SAAW,WAEnCgG,SACS/a,KAAK6a,WAGV7a,KAAK6a,UAAW,EAEhBhb,SAAS0D,KAAK/C,MAAMuU,SAAW,MCvBvC,MAAM0C,EAAIC,OAAOC,aAmFF,UAjFf,MACIqD,cACIhb,KAAKkZ,OAASzB,EAAE,gBAChBzX,KAAKib,cAAgBjb,KAAKkZ,OAAOnB,KAAK,gCACtC/X,KAAKkb,OAASlb,KAAKkZ,OAAOnB,KAAK,gBAC/B/X,KAAKmb,aAAenb,KAAKkb,OAAO3G,SAEhCvU,KAAKob,WAAa3D,EAAE,gBACpBzX,KAAKqb,YAAcrb,KAAKob,WAAWrD,KAAK,wBAG5CD,OACI9X,KAAKqb,YAAYlO,GAAG,QAASnN,KAAKsb,aAClCtb,KAAKib,cAAc9N,GAAG,QAASnN,KAAKub,aAAapc,KAAKa,OAEtDA,KAAKqb,YAAYlO,GAAI,WAAW,WAC5BsK,EAAEzX,MAAMuU,SAAS+F,SAAS,cAG9Bta,KAAKqb,YAAYlO,GAAI,YAAY,WAC7BsK,EAAEzX,MAAMuU,SAASmG,YAAY,cAG7B1a,KAAKkb,OAAOpC,SAAS,cACrB9Y,KAAKkb,OAAOnD,KAAK,iBAAiBI,KAAK,WAAY,MACnDnY,KAAKkb,OAAOR,YAAY,aAIhCY,YAAYvY,GACR,MAAMyY,EAAO/D,EAAEzX,MAAMuU,SAEF,KAAfvU,KAAKpB,MACL4c,EAAKlB,SAAS,UAEdkB,EAAKd,YAAY,UAIzBa,eACQvb,KAAKmb,aAAarC,SAAS,UAC3B9Y,KAAKyb,cAELzb,KAAK0b,aAIbA,aACI1b,KAAK2b,kBACL3b,KAAKmb,aAAab,SAAS,UAAUvC,KAAK,wBAAwB6D,QAClE5b,KAAKkb,OAAOnD,KAAK,iBAAiB8D,WAAW,YAGjDJ,cACIzb,KAAKmb,aAAaT,YAAY,UAAU3C,KAAK,wBAAwB+D,OACrE9b,KAAKkb,OAAOnD,KAAK,iBAAiBI,KAAK,WAAY,MAGvDwD,kBACI,MAAMpM,EAAShN,OAAOiV,YAAcxX,KAAKkZ,OAAOkB,cAEhDpa,KAAKmb,aAAazC,IAAI,SAAUnJ,GAGpCwM,UACI/b,KAAK2b,kBAGTK,iBAAiBjZ,IACT/C,KAAKmb,aAAarC,SAAS,WAAc9Y,KAAKkb,OAAOe,GAAGlZ,EAAE8M,SAAgD,IAArC7P,KAAKkb,OAAOgB,IAAInZ,EAAE8M,QAAQ3M,QAAiBlD,KAAKib,cAAcgB,GAAGlZ,EAAE8M,SACxI7P,KAAKyb,cAIbU,QAAQpZ,GACc,KAAdA,EAAEqZ,SAAkBpc,KAAKmb,aAAarC,SAAS,WAC/C9Y,KAAKyb,gBC9EjB,MAAMhE,EAAIC,OAAOC,aA4IF,UA1If,MACIqD,cACIhb,KAAKuD,KAAOkU,EAAE,QACdzX,KAAKkZ,OAASlZ,KAAKuD,KAAKwU,KAAK,6BAC7B/X,KAAKqc,IAAMrc,KAAKuD,KAAKwU,KAAK,eAC1B/X,KAAKsc,WAAatc,KAAKqc,IAAItE,KAAK,wBAChC/X,KAAKuc,SAAWvc,KAAKqc,IAAItE,KAAK,qBAC9B/X,KAAKwc,YAAcxc,KAAKqc,IAAItE,KAAK,6BACjC/X,KAAKyc,KAAOzc,KAAKqc,IAAItE,KAAK,qBAC1B/X,KAAK0c,SAAWjF,EAAEzX,KAAKuD,KAAKwU,KAAK,iBAAiB4E,SAAS,eAAene,MAAMoe,WAChF5c,KAAK6c,YAAc,GACnB7c,KAAK8c,aAAe,EAGxBhF,OACI9X,KAAK+c,cACL/c,KAAKgd,WACLhd,KAAKwc,YAAYrP,GAAG,SAAS,WACzBsK,EAAEzX,MAAMid,YAAY,aAExBjd,KAAKuc,SAASpP,GAAG,QAAUpK,IACvB,MAAMma,EAAOzF,EAAE1U,EAAE8M,QACjB7P,KAAKuc,SAAS7B,YAAY,UAC1BwC,EAAK5C,SAAS,UACdta,KAAKmd,iBAAiBD,KAI9BH,cACI/c,KAAK0c,SAASxE,KAAK,CAACva,EAAGqS,KACnB,MAAMoN,EAAY3F,EAAEzH,GAAMmI,KAAK,MAC/BnY,KAAK6c,YAAYO,GAAapd,KAAKuc,SAAShM,OAAO,CAAC5S,EAAGoF,IAAMA,EAAEsa,aAAa,QAAQxD,UAAU,KAAOuD,KAI7GE,WACI,MAAMC,EAAevd,KAAKkZ,OAAOkB,cAC3BoD,EAAexd,KAAKqc,IAAIlC,SAAShL,IACjCsO,EAAkBhG,EAAElV,QAAQkY,YAE9BgD,EAAkBD,EAAeD,GACjCvd,KAAKqc,IAAI/B,SAAS,UAClBta,KAAKsc,WAAW5D,IAAI,MAAU6E,EAAF,MAExBE,EAAkBD,EAClBxd,KAAKuD,KAAK+W,SAAS,eAEnBta,KAAKuD,KAAKmX,YAAY,iBAG1B1a,KAAKuD,KAAKmX,YAAY,eACtB1a,KAAKqc,IAAI3B,YAAY,UACrB1a,KAAKsc,WAAW5D,IAAI,MAAO,IACtB1Y,KAAKuD,KAAKuV,SAAS,aACpB9Y,KAAKkZ,OAAOR,IAAI,MAAQ,QAExB1Y,KAAKkZ,OAAOR,IAAI,MAAO,MAU/B1Y,KAAK8c,aAAeW,EAGxBC,mBACI,GAAI1d,KAAKuD,KAAKuV,SAAS,iBACnB,OAEJ,MAAM6E,EAAiBlG,EAAElV,QAAQkY,YAAcza,KAAKqc,IAAIjC,cAAgBpa,KAAKkZ,OAAOkB,cAEpFpa,KAAK0c,SAASxE,KAAK,CAACva,EAAGqS,KACnB,MAAM4N,EAAiBnG,EAAEzH,GACnB6N,EAAKjb,SAASgb,EAAelF,IAAI,cAAe,IAChDoF,EAAKlb,SAASgb,EAAelF,IAAI,eAAgB,IACjDqF,EAAeF,EAAK,GAAY,IAAPC,EAAYD,EAAK,EAC1CG,EAAaJ,EAAezD,SAAShL,IAAM4O,EAEjD,GAAIJ,GAAkBK,EAAY,CAC9B,MAAMd,EAAOld,KAAK6c,YAAYe,EAAezF,KAAK,OAMlD,OALK+E,EAAKpE,SAAS,YACf9Y,KAAKuc,SAAS7B,YAAY,UAC1BwC,EAAK5C,SAAS,UACdta,KAAKmd,iBAAiBD,KAEnB,KAKnBC,iBAAiBD,GAAO,GACpB,IAAKA,IAASA,EAAKha,OACf,OAEJ,MAAM+a,EAAUje,KAAKqc,IAAItE,KAAK,oBACxBmG,EAAkBD,EAAQ,GAAGzK,wBAC7B2K,EAAWjB,EAAK,GAAG1J,wBACnB4K,EAAcD,EAAS7O,MACvB+O,EAAaF,EAAS9O,KAGtBiP,EAAWD,EAFI,EAEwBH,EAAgB7O,KACvDkP,EAAYH,EAHG,EAG0BF,EAAgB5O,MAE/D,IAAI6K,EAAS,EACTmE,EACAnE,EAAS8D,EAAQnd,aAAeud,EAPf,EAO2CH,EAAgB7O,KACrEkP,IACPpE,EAAS8D,EAAQnd,aAAesd,EATf,EAS4CF,EAAgB5O,QAG7EiP,GAAaD,IACbL,EAAQ1D,OAAOC,QAAQ,CACnB1Z,WAAY8B,SAASuX,EAAQ,KAC9B,KAIX6C,WACShd,KAAKqc,IAAInZ,SAAUlD,KAAKuD,KAAKuV,SAAS,eAI3C9Y,KAAKsd,WACLtd,KAAK0d,oBAGT1B,iBAAiBjZ,IACT/C,KAAKwc,YAAY1D,SAAS,WAAc9Y,KAAKwc,YAAYP,GAAGlZ,EAAE8M,SAA8C,IAAnC7P,KAAKyc,KAAKP,IAAInZ,EAAE8M,QAAQ3M,QAAiBlD,KAAKyc,KAAKR,GAAGlZ,EAAE8M,SACjI7P,KAAKwc,YAAY9B,YAAY,YCvIzC,MAAMjD,EAAIC,OAAOC,aAiDF,UA/Cf,MACIqD,cACIhb,KAAKkZ,OAASzB,EAAE,gBAChBzX,KAAKwe,UAAYxe,KAAKkZ,OAAOnB,KAAK,wCAClC/X,KAAKye,SAAWze,KAAKwe,UAAUlF,KAAK,cAGxCxB,OACI9X,KAAKwe,UAAUrR,GAAG,QAASnN,KAAK0e,eAAevf,KAAKa,OACpDA,KAAKwe,UAAUG,MAAQ5b,IACnB/C,KAAKwe,UAAUlE,SAAS,SACxB7C,EAAE1U,EAAE8M,QAAQ6K,YAAY,UACzB,KACC1a,KAAKwe,UAAU9D,YAAY,WAInCgE,eAAe3b,GACX,MAAMiN,EAAOyH,EAAE1U,EAAEsW,gBACXoF,EAAWzO,EAAKsJ,KAAK,cAEtBmF,EAASvb,SAIdH,EAAEkV,iBACEwG,EAAS3F,SAAS,UAClB9Y,KAAK4e,gBAGT5e,KAAK4e,eACL5e,KAAK6e,aAAa7O,EAAMyO,KAG5BI,aAAa7O,EAAMyO,GACfze,KAAKwe,UAAUlE,SAAS,YAExBtK,EAAK0K,YAAY,YAAYJ,SAAS,UAAU/F,SAAS+F,SAAS,UAClEmE,EAASnE,SAAS,UAGtBsE,eACI5e,KAAKwe,UAAU9D,YAAY,mBAC3B1a,KAAKye,SAAS/D,YAAY,UAAUnG,SAASmG,YAAY,YCxCjE,MAAMjD,EAAIC,OAAOC,aA2FF,UAzFf,MACIqD,cACIhb,KAAKuD,KAAOkU,EAAE,QACdzX,KAAKkZ,OAASzB,EAAE,gBAChBzX,KAAK8e,SAAW9e,KAAKkZ,OAAOnB,KAAK,qBACjC/X,KAAKyc,KAAOzc,KAAKkZ,OAAOnB,KAAK,sBAC7B/X,KAAKwc,YAAcxc,KAAKkZ,OAAOnB,KAAK,8BAGpC/X,KAAK+e,GAAKxc,OAAOyc,WAAW,uBAGhClH,OACI9X,KAAK+b,UAEL/b,KAAKwc,YAAYrP,GAAG,QAASnN,KAAKif,WAAW9f,KAAKa,OAE9CA,KAAK8e,SAAS5b,QACdlD,KAAK8e,SAAS/G,KAAK,qBAAqB5K,GAAG,QAAS,KAChDnN,KAAKkf,iBACLzH,EAAE,QAAQiD,YAAY,gBACtB1a,KAAK8e,SAASK,SACdnf,KAAK+b,UACLqD,EAAUpC,UAAS,KAI3Bhd,KAAK+e,GAAG3R,YAAa2R,IACbA,EAAGM,SAASrf,KAAKsf,cAI7BJ,iBACI,IAAIpX,EAAM,IAAI3F,KACV2G,EAAOhB,EAAI1F,UACf0G,GAAQ,MACRhB,EAAIyX,QAAQzW,GACZjJ,SAAS2f,OACL,2BACe1X,EAAI2X,cACnB,WAGRR,aACQjf,KAAKwc,YAAY1D,SAAS,UAC1B9Y,KAAKsf,YAELtf,KAAK0f,WAIbA,WACI1f,KAAKuD,KAAK+W,SAAS,aACnBqF,EAAOlE,cACPmE,EAAW9E,OACX9a,KAAKwc,YAAYlC,SAAS,UAAUqC,SAAS,SAASkD,KAAK7f,KAAKwc,YAAYlE,KAAK,UACjFtY,KAAKyc,KAAKnC,SAAS,UACnBta,KAAK8f,gBAGTR,YACItf,KAAKuD,KAAKmX,YAAY,aACtB1a,KAAKwc,YAAY9B,YAAY,UAAUiC,SAAS,SAASkD,KAAK7f,KAAKwc,YAAYlE,KAAK,SACpFtY,KAAKyc,KAAK/B,YAAY,UACtBqF,EAASnB,eACTgB,EAAW7E,SAGf+E,gBACQ9f,KAAK+e,GAAGM,QAShBtD,UACI/b,KAAK8f,gBAGT3D,QAAQpZ,GACc,KAAdA,EAAEqZ,SAAkBpc,KAAKyc,KAAK3D,SAAS,WACvC9Y,KAAKsf,cC3FjB,MAAM7H,EAAIC,OAAOC,aA4CF,UA1Cf,MACIqD,cACIhb,KAAKkZ,OAASzB,EAAE,gBAChBzX,KAAKwe,UAAYxe,KAAKkZ,OAAOnB,KAAK,+CAClC/X,KAAKye,SAAWze,KAAKwe,UAAUlF,KAAK,cAGpCtZ,KAAK8I,KAAO,IAGhBgP,OACI9X,KAAKwe,UAAUrR,GAAG,QAASnN,KAAK0e,eAAevf,KAAKa,OAGxD0e,eAAe3b,GACX,MAAMiN,EAAOyH,EAAE1U,EAAEsW,gBACXoF,EAAWzO,EAAKsJ,KAAK,cAEtBmF,EAASvb,SAIdH,EAAEkV,iBACEwG,EAAS3F,SAAS,UAClB9Y,KAAK4e,gBAGT5e,KAAK4e,eACL5e,KAAK6e,aAAa7O,EAAMyO,KAG5BI,aAAa7O,EAAMyO,GACfzO,EAAKsK,SAAS,UACdmE,EAASnE,SAAS,UAAUC,OAAOyF,UAAUhgB,KAAK8I,MAGtD8V,eACI5e,KAAKwe,UAAU9D,YAAY,UAC3B1a,KAAKye,SAAS/D,YAAY,UAAUH,OAAO0F,QAAQjgB,KAAK8I,QCpChE,MAAM2O,EAAIC,OAAOC,aAwEF,UAtEf,MACIqD,cACIhb,KAAKuD,KAAOkU,EAAE,QACdzX,KAAKkZ,OAASzB,EAAE,gBAChBzX,KAAKyc,KAAOzc,KAAKkZ,OAAOnB,KAAK,6BAC7B/X,KAAKwc,YAAcxc,KAAKkZ,OAAOnB,KAAK,qCACpC/X,KAAKwb,KAAOxb,KAAKkZ,OAAOnB,KAAK,8BAC7B/X,KAAKkgB,YAAclgB,KAAKkZ,OAAOnB,KAAK,kCACpC/X,KAAKmgB,SAAWngB,KAAKwb,KAAKzD,KAAK,2BAG/B/X,KAAK+e,GAAKxc,OAAOyc,WAAW,uBAGhClH,OACI9X,KAAK+b,UAEL/b,KAAKwc,YAAYrP,GAAG,QAASnN,KAAKif,WAAW9f,KAAKa,OAClDA,KAAKmgB,SAAShT,GAAG,QAAS,KACtBnN,KAAKwb,KAAKd,YAAY,YAE1B1a,KAAKkgB,YAAY/S,GAAG,QAAS,KACzBnN,KAAKwb,KAAKlB,SAAS,YAGvBta,KAAK+e,GAAG3R,YAAa2R,IACZA,EAAGM,SAASrf,KAAKsf,cAI9BL,aACQjf,KAAKwc,YAAY1D,SAAS,UAC1B9Y,KAAKsf,YAELtf,KAAK0f,WAIbA,WACI1f,KAAKuD,KAAK+W,SAAS,aACnBqF,EAAOlE,cACPmE,EAAW9E,OACX9a,KAAKwc,YAAYlC,SAAS,UAC1Bta,KAAKyc,KAAKnC,SAAS,UACnBta,KAAK8f,gBAGTR,YACItf,KAAKuD,KAAKmX,YAAY,aACtB1a,KAAKwc,YAAY9B,YAAY,UAC7B1a,KAAKyc,KAAK/B,YAAY,UACtB0F,EAAWxB,eACXgB,EAAW7E,SAGf+E,gBACI,IAAK9f,KAAK+e,GAAGM,QACT,OAGJ,MAAM9P,EAAShN,OAAOiV,YAAcxX,KAAKkZ,OAAOkB,cAEhDpa,KAAKyc,KAAK/D,IAAI,SAAUnJ,GAG5BwM,UACI/b,KAAK8f,kBCxEb,MAAMrI,EAAIC,OAAOC,aAwBF,UAtBf,MACIqD,cACIhb,KAAKqgB,OAAS5I,EAAE,oBAGpBK,OACI9X,KAAKsgB,eAGTA,eACItgB,KAAKqgB,OAAOnI,KAAK,CAACva,EAAG+Y,KACjB,MAAM1G,EAAOyH,EAAEf,GACT6J,EAAgBvQ,EAAKwQ,QAAQ,8BAEnCD,EAAc7F,YAAY,cACtB1K,EAAK,GAAGpP,YAAc2f,EAAc1f,SACpC0f,EAAcjG,SAAS,kBClBvC,MAAM7C,EAAIC,OAAOC,aAyCF8I,MAvCD,CACVxC,QAASxG,EAAE,kBACXiJ,aAAcjJ,EAAE,eAChBkJ,SAEI3gB,KAAK4gB,aAAc5gB,KAAKie,QAAQlG,KAAK,kCAEzC8I,UAES7gB,KAAK0gB,aAAaxd,QACnBX,OAAOzC,iBAAiB,UAAWyW,IACN,mBAApBA,EAAM+B,KAAKlU,MAAsD,gBAAzBmS,EAAM+B,KAAKwI,WACpD9gB,KAAK4gB,aAAc5gB,KAAK0gB,aAAa3I,KAAK,cAK1D6I,aAAcG,GACVA,EAAa7I,KAAK,CAACva,EAAGgjB,KAClB,MAAMK,EAAevJ,EAAEkJ,GACjBM,EAAcD,EAAarE,SAAS,mBAC1CqE,EAAaE,QAAQ,CACjBC,wBAAyB,IACzBF,YAAaA,EAAY/d,OAAS+d,EAAYpB,OAAS,mBACvDhf,MAAO,OACPugB,aAAc,SAAUrjB,GAAK,OAAOA,KAGxCijB,EAAa7T,GAAG,gBAAiB,KAC7BsK,EAAE,8BAA8BqE,SAGpCrE,EAAElV,QAAQ4K,GAAG,SAAU,KACnB6T,EAAaE,QAAQ,eCnCrC,MAAMzJ,EAAIC,OAAOC,aAEjB,MAAM0J,EACFrG,YAAYsG,EAAKC,GAAS,EAAMC,GAAO,EAAOC,EAAM,EAAGC,EAAS,EAAGC,EAAa,IAAKC,GAAgB,EAAOC,GAAa,EAAOC,GAAO,EAAOC,GAAW,EAAOC,GAAiB,GAC7KhiB,KAAKiiB,SAAWX,EAChBthB,KAAKuhB,OAASA,EACdvhB,KAAKyhB,IAAMA,EACXzhB,KAAK0hB,OAASA,EACd1hB,KAAK4hB,cAAgBA,EACrB5hB,KAAK2hB,WAAaA,EAClB3hB,KAAKwhB,KAAOA,EACZxhB,KAAK6hB,WAAaA,EAClB7hB,KAAK8hB,KAAOA,EACZ9hB,KAAK+hB,SAAWA,EACtB/hB,KAAKgiB,eAAiBA,EAGpBE,UACIzK,EAAEzX,KAAKiiB,UAAUE,MAAM,WAG3BrK,OACI,MAAM,OACFyJ,EADE,IAEFE,EAFE,KAGFD,EAHE,OAIFE,EAJE,WAKFC,EALE,cAMFC,EANE,WAOFC,EAPE,KAQFC,EARE,SASFC,EATE,eAUXC,GACShiB,KAuDJyX,EAAEzX,KAAKiiB,UAAU/J,MArDjB,WAEIT,EAAEzX,MAAMmN,GAAG,cAAe,KACtBsK,EAAEzX,MAAM+X,KAAK,cAAcG,KAAK,CAACva,EAAGqS,KAChC,MAAMoS,EAAU3K,EAAEzH,GACZnP,EAAQuhB,EAAQC,KAAK,OAAOxhB,QAE9B0B,OAAOyc,WAAW,iCAAiCK,QACnD+C,EAAQ1J,IAAI,YAAa7X,EAAQ,EAAOA,EAAF,KAAc,IAEpDuhB,EAAQ1J,IAAI,YAAa7X,EAAQ,EAAK,QAAY,QAI9D4W,EAAEzX,MAAMmiB,MAAM,CACVL,OACAC,WACAO,cAAe,IACff,SACAgB,SAAUP,EACVQ,aAAcf,EACdI,aACAY,eAAgB,EAChBb,gBACAJ,OACAkB,cAAc,EACdC,MAAOhB,EACPiB,WAAY,CACR,CACIC,WAAY,IACZC,SAAU,CACNN,aAAcd,EACde,eAAgB,IAGxB,CACII,WAAY,IACZC,SAAU,CACNN,aAAcd,EACde,eAAgB,OAMhChL,EAAEzX,MAAMmN,GAAG,eAAgB,CAACoJ,EAAO4L,EAAOY,EAAcC,KACpD,MAAMC,EAAQxL,EAAG0K,EAAMe,QAAQ1kB,IAAIukB,IAC9BE,EAAMlL,KAAK,UAAU7U,SACtB+f,EAAMlL,KAAK,UAAUI,KAAK,MAAO,IACjC8K,EAAMlL,KAAK,4BAA4Ba,cAO3D,MAAMuK,EAAuB,IAAI9B,EAAO,2BAA2B,GAAO,EAAO,EAAG,EAAG,KAAK,GAAO,GAAO,GACpG+B,EAAa,IAAI/B,EAAO,sBAAsB,GAAM,EAAM,EAAG,EAAG,KAAK,GAAO,GAAO,GAAM,GACzFgC,EAAoB,IAAIhC,EAAO,wBAAwB,GAAO,EAAO,EAAG,EAAG,KAAK,GAAO,GAAO,GAC9FiC,EAAe,IAAIjC,EAAO,uBAAuB,GAAM,EAAO,EAAG,EAAG,KAAK,GAAM,GAC/EkC,EAAiB,IAAIlC,EAAO,6BAA4B,GAAM,EAAO,EAAG,EAAG,KAAK,GAAM,GAAM,GAAO,GAAO,GAC1GmC,EAAiB,IAAInC,EAAO,sBAAsB,GAAO,EAAO,EAAG,EAAG,KAAK,GAAO,GAAO,GACzFoC,EAAc,IAAIpC,EAAO,gCAAgC,GAAO,EAAO,EAAG,EAAG,KAAK,GAAO,GAAO,GAChGqC,EAAsB,IAAIrC,EAAO,iCAAiC,GAAO,EAAO,EAAG,EAAG,KAAK,GAAO,GAAO,GAS/G,GANK5J,EAAG,qBAAsBvU,QAC1BuU,EAAE,qBAAqB0K,MAAM,CACzBJ,UAAU,IAIbtK,EAAG,6BAA8BvU,OAAS,CAC9CuU,EAAG,6BAA8BS,KAAK,CAACrN,EAAOoF,KAE7C,GADA0T,QAAQC,IAAI3T,GACPwH,EAAExH,GAAS0M,SAAS,0BAA0BzZ,OAAS,EAAI,CAC/D,IAAI2gB,EAAmC,EACnCC,EAAqC,EACrCC,GAAoB,EACpBC,EAAkC,EAClCC,EAAoC,EACpCC,GAAmB,EACnBC,EAAkC,EAClCC,EAAoC,EACpCC,GAAmB,EAClB5M,EAAExH,GAAS0M,SAAS,0BAA0BzZ,QAAU,GAC5D2gB,EAAmC,EACnCC,EAAqC,EACrCC,GAAoB,EACpBC,EAAkC,EAClCC,EAAoC,EACpCC,GAAmB,EACnBC,EAAkC,EAClCC,EAAoC,EACpCC,GAAmB,GACiD,IAAzD5M,EAAExH,GAAS0M,SAAS,0BAA0BzZ,SACzD2gB,EAAmC,EACnCC,EAAqC,EACrCC,GAAoB,EACpBC,EAAkC,EAClCC,EAAoC,EACpCC,GAAmB,EACnBC,EAAkC,EAClCC,EAAoC,EACpCC,GAAmB,GAEpBV,QAAQC,IAAIC,EAAkCE,GAC9CtM,EAAExH,GAASkS,MAAM,CAChBG,cAAe,IACff,QAAQ,EACRO,KAAMiC,EACNxB,UAAU,EACVC,aAAcqB,EACdpB,eAAgBqB,EAChBpB,cAAc,EACdX,UAAU,EACVa,WAAY,CACX,CACCC,WAAY,IACZC,SAAU,CACThB,KAAMoC,EACN1B,aAAcwB,EACdvB,eAAgBwB,IAGlB,CACCpB,WAAY,IACZC,SAAU,CACThB,KAAMuC,EACN7B,aAAc2B,EACd5B,UAAU,EACVE,eAAgB2B,EAChBrC,UAAU,UAQb,IAAIuC,EAAgB7M,EAAE,0BA+BtB,IAAI8M,GAbwB7N,EAaKe,EAAE,uBAbHxF,EAa2B,SAASuS,GAC3DA,GACDF,EAAchK,SAAS,aAbpB,WACH,IAAIkK,EApBZ,SAA8B9N,GAGJ,mBAAXgB,QAAyBhB,aAAcgB,SAC9ChB,EAAKA,EAAG,IAGZ,IAAIrB,EAAOqB,EAAGlD,wBAEd,OACI6B,EAAKlG,KAAO,GACZkG,EAAKhG,MAAQ,GACbgG,EAAKjG,SAAW7M,OAAOiV,aAAe3X,SAASiV,gBAAgBK,eAC/DE,EAAK/F,QAAU/M,OAAOkiB,YAAc5kB,SAASiV,gBAAgBI,aAO/CwP,CAAoBhO,GAC9B8N,GAAWG,IACXA,EAAcH,EACS,mBAAZvS,GACPA,EAASuS,MAczB/M,EAAElV,QAAQ4K,GAAG,sCAAuCoX,GArBpD,IAA4B7N,EAAIzE,EACxB0S,EAwBRC,EAAiB,CAACC,EAAahC,EAAYiC,EAAYtC,KAC1DmB,QAAQC,IAAK,aAAef,EAAa,IAAMiC,EAAa,IAAMtC,GAG/D,GAAK,OAASK,GAAcA,EAAa,IAAO,CAC5C,IAAIkC,EAAmBvC,EAAesC,EAAa,IAC9CA,EAAa,GAAKA,IAAetC,GAClCqC,EAAY9M,KAAK,uCAAuClX,MAAOkkB,EAAmB,KAClFF,EAAY9M,KAAK,+BAA+Ba,QAEhDiM,EAAY9M,KAAK,+BAA+BY,YAEjD,GAAKkK,EAAa,IAAM,CAC3B,IACIkC,GADyBvC,EAAe,EAAI,EAAIA,GACJsC,EAAa,IAEtDA,EAAa,GAAKA,IAAetC,GAAmC,IAAfsC,GAAqC,IAAjBtC,GAC5EqC,EAAY9M,KAAK,uCAAuClX,MAAOkkB,EAAmB,KAClFF,EAAY9M,KAAK,+BAA+Ba,QAEhDiM,EAAY9M,KAAK,+BAA+BY,WAEjD,CACH,IAAIoM,EAAmB,EAAID,EAAa,IAC9CnB,QAAQC,IAAI,UAAYmB,GAEXD,EAAa,GAAKA,IAAetC,GAAmC,IAAfsC,GAAqC,IAAjBtC,GAAyC,IAAfsC,GAAqC,IAAjBtC,GAC1HqC,EAAY9M,KAAK,uCAAuClX,MAAOkkB,EAAmB,KAClFF,EAAY9M,KAAK,+BAA+Ba,QAEhDiM,EAAY9M,KAAK,+BAA+BY,SAK5DlB,EAAE,uBAAuBS,MAAK,WAC1B,IAAI2M,EAAcpN,EAAGzX,MACrB,GAAK6kB,EAAY3hB,OAAS,CACtB,IAAI4hB,EAAkBD,EAAY9M,KAAK,8BAA8B7U,OACvE8hB,EAAkBH,EAAYvM,KAAK,UACnCkK,EAAkBwC,EAAaF,EAAaA,EAAaE,EACzDC,EAAyB,EACzBC,EAAyB,EAEzB,KAAO1C,IACVyC,EAAyB,GAGtB,KAAOzC,IACVyC,EAAyB,EACzBC,EAAyB,GAGpB,IAAIC,EAAkB5iB,OAAOkiB,WAAa,EAAIliB,OAAOkiB,WAAaW,OAAOvkB,MACrEwkB,EAAkB,EAAIP,EAAa,IAEvCF,EAAgBC,EAAaM,EAAYL,EAAYtC,GAErDqC,EAAY9M,KAAK,+BAA+BoK,MAAM,CAClDZ,QAAQ,EACRgB,UAAU,EACVC,aAAcA,EACdC,eAAgB,EAChBC,cAAc,EACd4C,UAAWT,EAAY9M,KAAK,oCAC5BwN,UAAWV,EAAY9M,KAAK,oCAC5B6K,WAAY,CACR,CACIC,WAAY,IACZC,SAAU,CACNN,aAAcyC,IAGtB,CACIpC,WAAY,IACZC,SAAU,CACNN,aAAc0C,OAO9BL,EAAY1X,GAAI,eAAgB,CAACoJ,EAAO4L,EAAOY,EAAcC,KACzD6B,EAAY9M,KAAK,uCAAuCW,IAAK,OAAQ2M,EAAkBrC,EAAY,OAGvG6B,EAAY1X,GAAI,aAAc,CAACoJ,EAAO4L,EAAOU,KACzC+B,EAAgBC,EAAahC,EAAYiC,EAAYtC,SClTjE,MAAM/K,EAAIC,OAAOC,aA4DF,UA1Df,MACIqD,cACIhb,KAAKwlB,OAAU/N,EAAE,6BACjBzX,KAAKylB,OAAUzlB,KAAKwlB,OAAOzN,KAAK,gBAGpCD,OACI9X,KAAK0lB,aAGTA,aACI1lB,KAAKwlB,OAAOrD,MAAM,CACdL,MAAM,EACNP,QAAQ,EACRiB,aAAc,EACdmD,WAAW,EACXnE,MAAM,EACNkB,cAAc,EACdC,MAAO,IACPZ,UAAU,EACV6D,cAAc,EACdtD,cAAe,IACfuD,QAAS,SACTjD,WAAY,CACR,CACIC,WAAY,KACZC,SAAU,CACNN,aAAc,EACdC,eAAgB,IAGxB,CACII,WAAY,IACZC,SAAU,CACNN,aAAc,EACdC,eAAgB,IAGxB,CACII,WAAY,IACZC,SAAU,CACNlB,eAAe,EACfC,YAAY,EACZW,aAAc,EACdC,eAAgB,OAQpCP,UACIliB,KAAKwlB,OAAOrD,MAAM,aCvD1B,MAAM1K,EAAIC,OAAOC,aAiCF,UA/Bf,MACIqD,YAAY5B,GACRpZ,KAAKoZ,QAAU3B,EAAE2B,GACjBpZ,KAAK8lB,mBAAqBrO,EAAE,iCAEhCK,OACI9X,KAAK+lB,aAETA,aACI/lB,KAAKoZ,QAAQjM,GAAG,QAASnN,KAAKgmB,iBAC9BhmB,KAAK8lB,mBAAmB3Y,GAAG,QAASnN,KAAKimB,oBAE7CD,kBACIvO,EAAEzX,MAAMuU,SAAS0I,YAAY,UAC7BxF,EAAEzX,MAAMsZ,OAAOiB,OAAO2L,YAAY,KAEtCD,qBACI,IAAIE,EAAc1O,EAAEzX,MAAMmY,KAAK,eAE3BV,EAAEzX,MAAM8Y,SAAS,aACjBrB,EAAEzX,MAAM0a,YAAY,YACpBjD,EAAE,IAAM0O,GAAapO,KAAK,8BAA8BkI,QAAQ,KAChExI,EAAE,IAAM0O,GAAapO,KAAK,qBAAqB2C,YAAY,YAE3DjD,EAAEzX,MAAMsa,SAAS,YACjB7C,EAAE,IAAM0O,GAAapO,KAAK,8BAA8BiI,UAAU,KAClEvI,EAAE,IAAM0O,GAAapO,KAAK,qBAAqBuC,SAAS,aAKtC,4BC/B9B,MAAM7C,EAAIC,OAAOC,aAuCF,UArCf,MACIqD,cACIhb,KAAKomB,KAAO3O,EAAE,eACdzX,KAAKqmB,cAAgBrmB,KAAKomB,KAAKrO,KAAK,0BACpC/X,KAAKsmB,UAAYtmB,KAAKomB,KAAKrO,KAAK,2BAChC/X,KAAKumB,YAAcvmB,KAAKomB,KAAKrO,KAAK,4BAGtCD,OACI9X,KAAKsmB,UAAUnZ,GAAG,QAASnN,KAAKwmB,UAAUrnB,KAAKa,OAC/CA,KAAKsgB,eAGTkG,UAAUzjB,GACNA,EAAEkV,iBAEFjY,KAAKsmB,UAAU5L,YAAY,UAC3B1a,KAAKumB,YAAY7L,YAAY,UAE7B,MAAMwC,EAAOzF,EAAE1U,EAAEsW,gBAAgBiB,SAAS,UAC1Cta,KAAKumB,YAAYhW,OAAO,CAAC5S,EAAG+Y,IAAOe,EAAEf,GAAI4B,KAAK,YAAc4E,EAAK/E,KAAK,SAASmC,SAAS,UAExFmM,EAAOnG,eAGXA,eACItgB,KAAKqmB,cAAcnO,KAAK,CAACva,EAAG+Y,KACxB,MAAM1G,EAAOyH,EAAEf,GACT6J,EAAgBvQ,EAAKwQ,QAAQ,+BACnCD,EAAc7F,YAAY,cACtB1K,EAAK,GAAGpP,YAAc2f,EAAc1f,SACpC0f,EAAcjG,SAAS,kBClCvC,MAAM7C,EAAIC,OAAOC,aAsDF,WApDf,MACIqD,cACIhb,KAAK0mB,WAAajP,EAAE,6BACpBzX,KAAK2mB,aAAelP,EAAE,mCACtBzX,KAAK4mB,cAAgBnP,EAAE,4BAG3BK,OACI9X,KAAK+lB,aAGTA,aACI/lB,KAAK2mB,aAAaxZ,GAAG,QAASnN,KAAK6mB,cACnC7mB,KAAK4mB,cAAczZ,GAAG,QAASnN,KAAK8mB,eAGxCD,aAAa9jB,GACTA,EAAEkV,iBACF,MAAM8O,EAAWnkB,SAAS5C,KAAK4Z,KAAKnU,MAAM,GAAI,IACxCuhB,EAAgBvP,EAAEzX,MAAMwgB,QAAQ,2BAEtCwG,EAAcjP,KAAK,sCAAsCuC,SAAS,UAClE0M,EAAcjP,KAAK,6BAA6BoK,MAAM,YAAa4E,GAAU,GACxEtP,EAAEzX,MAAMuY,QAAQ,yBACjBoL,QAAQC,IAAKnM,EAAEzX,MAAMuY,QAAQ,yCAC7BhW,OAAO0kB,eAAiBxP,EAAEzX,MAAMuY,QAAQ,wCAAwCkC,YAChFhD,EAAEzX,MAAMuY,QAAQ,wBAAwB+B,SAAS,uBAEjDM,EAAWE,OAInBgM,gBAC4BrP,EAAE,6CACViD,YAAY,UAEvBjD,EAAEzX,MAAMuY,QAAQ,yBACjBd,EAAEzX,MAAMuY,QAAQ,wBAAwBmC,YAAY,sBACpDjD,EAAEzX,MAAMuY,QAAQ,wCAAwCkC,UAAWlY,OAAO0kB,iBAE1ErM,EAAWG,SAInBoB,QAAQpZ,GACJ,MAAMmkB,EAAkBzP,EAAE,6CAET,IAAb1U,EAAEqZ,SAAiB8K,EAAgBhkB,OAAS,GAC5ClD,KAAK8mB,kBCEF,WApDf,MACI9L,cACIhb,KAAKmnB,gBAAkBtnB,SAASunB,iBAAiB,gCACjDpnB,KAAKqnB,SAAWxnB,SAASunB,iBAAiB,iBAG9CtP,OACI9X,KAAKsnB,WACAtnB,KAAKqnB,UACNrnB,KAAKunB,WAIbD,WACItnB,KAAKmnB,gBAAgB3X,QAAUkH,IAC3B,MAAM8Q,EAAS9Q,EAAGQ,cAAc,UAChC,GAAKsQ,EAAS,CAEVA,EAAOhP,QAAQiP,OAAS7kB,SAAS4kB,EAAOtS,aAAetS,SAAS4kB,EAAOrS,eAAec,QAAQ,GAC9FuR,EAAOE,gBAAgB,SACvBF,EAAOE,gBAAgB,UAEvB,IAAInY,EAAUmH,EAAGxV,WAAWiU,aAAcc,QAAQ,GAClD,MAAM0R,GAAYpY,EAASiY,EAAOhP,QAAQiP,OAAOxR,QAAQ,GAEzDuR,EAAOhnB,MAAMK,MAAW8mB,EAAF,KACtBH,EAAOhnB,MAAM+O,OAAYA,EAAF,KAElBhN,OAAOkiB,WAAakD,IACrBH,EAAOhnB,MAAMK,MAAW+B,SAASL,OAAOkiB,YAAlB,KACtB+C,EAAOhnB,MAAM+O,OAAY3M,SAAS4kB,EAAOhP,QAAQiP,MAAQllB,OAAOkiB,YAAzC,SAMvC8C,WACkB7P,OAAO,aAMbkQ,SALM,CACVC,cAAc,EACdC,MAAM,EACNC,MAAM,IAKdhM,UACI/b,KAAKsnB,aCuCE,WArFf,MACItM,cACIhb,KAAKgoB,gBAAkBnoB,SAASunB,iBAAiB,kBACjDpnB,KAAK4mB,cAAkB/mB,SAASunB,iBAAiB,0BACjDpnB,KAAKknB,gBAAkBrnB,SAASqX,cAAc,4BAC9ClX,KAAKioB,OAAkBpoB,SAASqoB,eAAe,UAC/CloB,KAAKmoB,UAAkB,EAG3BrQ,OACI9X,KAAKgoB,gBAAgBxY,QAAQ4Y,GAAOA,EAAItoB,iBAAiB,QAASE,KAAK6mB,aAAa1nB,KAAKa,QACzFA,KAAK4mB,cAAcpX,QAAQ4Y,GAAOA,EAAItoB,iBAAiB,QAASE,KAAK8mB,cAAc3nB,KAAKa,QAI5F6mB,aAAa9jB,GACTA,EAAEkV,iBACF,MAAMsB,EAAMxW,EAAEsX,cAAc7B,QAAQZ,MAEpC,GAAK2B,EAAM,CACP,IAAMvZ,KAAKmoB,SAAW,CAClB,MAAMX,EAAS3nB,SAASI,cAAc,UACtCD,KAAKioB,OAAO9nB,YAAYqnB,GACxBxnB,KAAKmoB,UAAW,EAEpB,MAAME,EAAcroB,KAAKioB,OAAO/Q,cAAc,UAE9C,GAAIlX,KAAKsoB,KAAK/O,GAAM,CAChB,IAAInS,EAAQmS,EAAInS,MAAM,mEAClBA,GAA4B,IAAnBA,EAAM,GAAGlE,SAClBmlB,EAAYnoB,aAAa,QAAQ,YACjCmoB,EAAYjQ,IAAM,2BAA6BhR,EAAM,GAAK,oBAE3D,GAAKpH,KAAKuoB,QAAQhP,GACrB8O,EAAYnoB,aAAa,QAAQ,YACjCmoB,EAAYjQ,IAAMpY,KAAKwoB,iBAAiBjP,GACxC8O,EAAYjQ,KAAO,mBAChB,GAAIpY,KAAKyoB,SAASlP,GAAM,CAC3B,MAAMW,EAAKla,KAAKyoB,SAASlP,GACzB8O,EAAYjQ,IAAO,wCAAuC8B,EAC1DmO,EAAYjQ,KAAO,YACnBiQ,EAAYjQ,KAAO,WACnBiQ,EAAYjQ,KAAO,cAEvBpY,KAAKknB,gBAAgB/P,UAAUC,IAAI,UACnCwD,EAAWE,QAInBgM,gBACI9mB,KAAKioB,OAAO/Q,cAAc,UAAUhX,aAAa,MAAM,IACvDF,KAAKknB,gBAAgB/P,UAAUgI,OAAO,UACtCvE,EAAWG,SAIfoB,QAAQpZ,GACJ,MAAMmkB,EAAkBrnB,SAASqX,cAAc,mCAC9B,IAAbnU,EAAEqZ,SAAiB8K,GACnBlnB,KAAK8mB,gBAIbwB,KAAK/O,GAED,QAAQA,EAAInS,MADD,yHACcshB,OAAOC,GAGpCJ,QAAQhP,GAEJ,QAAQA,EAAInS,MADE,gFACcshB,OAAOE,GAGvCH,SAASlP,GAEL,QAAQA,EAAInS,MADG,4CACcshB,OAAOC,GAGxCH,iBAAiBjP,GACb,IAAI8F,EAAU9F,EAAInS,MAAM,+EACxB,GAAK,OAASiY,EACV,MAAO,kCAAoCA,EAAQ,KCnF/D,MAAM5H,GAAIC,OAAOC,aA0BF,WAxBf,MACIqD,cACIhb,KAAK6oB,MAAQpR,GAAE,cACfzX,KAAKoZ,QAAUpZ,KAAK6oB,MAAM9Q,KAAK,uBAGnCD,OACI9X,KAAKoZ,QAAQjM,GAAG,QAASnN,KAAK8oB,eAGlCA,gBACI,MAAM1P,EAAU3B,GAAEzX,MACZ+oB,EAAU3P,EAAQoH,QAAQ,cAAczI,KAAK,uBAE/CqB,EAAQN,SAAS,WACjBM,EAAQsB,YAAY,UAAUiC,SAAS,QAAQkD,KAAKzG,EAAQd,KAAK,SACjEyQ,EAAQ9I,QAAQ,OAEhB7G,EAAQkB,SAAS,UAAUqC,SAAS,QAAQkD,KAAKzG,EAAQd,KAAK,UAC9DyQ,EAAQ/I,UAAU,QCgBfgJ,OArCW,CAACC,EAAUC,EAAaC,EAAUC,EAAU,KAClE,MAAMC,EAAUzmB,SAASsmB,GACnBI,EAAO1mB,SAASumB,GAChBI,EAAM3mB,SAASwmB,GACfnU,EAAO,GACPuU,EAAQ,GAGd,GAAIH,GAAW,GAAKC,EAAO,GAAKD,GAAWC,EAAM,CAC7C,IAAK,IAAI3rB,EAAIsK,KAAKC,IAAI,EAAGmhB,EAAUE,GAAM5rB,GAAKsK,KAAKG,IAAIkhB,EAAO,EAAGD,EAAUE,GAAM5rB,IAC7E6rB,EAAM9hB,KAAK/J,GAGX0rB,EAAUE,EAAM,GAChBC,EAAMC,QAAQ,OAGdJ,EAAUE,EAAMD,EAAO,GACvBE,EAAM9hB,KAAK,OAGf8hB,EAAMC,QAAQ,GACdD,EAAM9hB,KAAK4hB,GAGXE,EAAMhY,IAAKxB,IACa,iBAATA,EACPiF,EAAKvN,KAAM,sBAAqBuhB,yBAAgCjZ,IAASqZ,EAAU,WAAa,2BAA2BrZ,MAASA,SAEpIiF,EAAKvN,KAAM,qCAAoCsI,gBAK3D,OAAOiF,EAAKjT,KAAK,KC/BrB,MAAMyV,GAAIC,OAAOC,aAwQF+R,OAFM,IApQrB,MACI1O,YAAY2O,EAAMC,GAEd5pB,KAAK2pB,KAAOlS,GAAEkS,GACd3pB,KAAK4pB,OAASA,EACd5pB,KAAK6pB,OAAS7pB,KAAK2pB,KAAK5R,KAAK,WAC7B/X,KAAK8pB,aAAe9pB,KAAK2pB,KAAK5R,KAAK,kBACnC/X,KAAK+pB,aAAe/pB,KAAK8pB,aAAa/R,KAAK,uBAC3C/X,KAAKipB,SAAW,OAGhBjpB,KAAKgqB,eAAiBznB,OAAOyc,WAAW,sBACxChf,KAAKiqB,eAAiB,IAItBjqB,KAAKkqB,eAAiBlqB,KAAK8pB,aAAa/R,KAAK,kBAC7C/X,KAAKmqB,cAAgBnqB,KAAKkqB,eAAenS,KAAK,kCAC9C/X,KAAKoqB,WAAapqB,KAAKkqB,eAAenS,KAAK,qCAC3C/X,KAAKqqB,aAAerqB,KAAKkqB,eAAenS,KAAK,yBAC7C/X,KAAKsqB,oBAAsBtqB,KAAKkqB,eAAenS,KAAK,iCAEpD/X,KAAKuqB,cAAgBvqB,KAAKkqB,eAAenS,KAAK,mBAC9C/X,KAAKwqB,gBAAkBxqB,KAAKkqB,eAAenS,KAAK,4BAChD/X,KAAKyqB,sBAAwBzqB,KAAKwqB,gBAAgBzS,KAAK,mCACvD/X,KAAK0qB,aAAe1qB,KAAK8pB,aAAa/R,KAAK,kCAE3C/X,KAAK2qB,cAAgB3qB,KAAK8pB,aAAa/R,KAAK,kCAC5C/X,KAAK4qB,mBAAqB5qB,KAAK8pB,aAAa/R,KAAK,gCACjD/X,KAAK6qB,eAAiB7qB,KAAK8pB,aAAa/R,KAAK,mCAC7C/X,KAAK8qB,aAAe9qB,KAAKqqB,aAAatS,KAAK,yDAG3C/X,KAAKwb,KAAOxb,KAAK8pB,aAAa/R,KAAK,0BAGnC/X,KAAK+qB,WAAa/qB,KAAK8pB,aAAa/R,KAAK,oBAGzC/X,KAAKgrB,MAAQ,GACbhrB,KAAKirB,WAAa,GAClBjrB,KAAKkrB,UAAY,GAGrBpT,OACQ9X,KAAK2pB,KAAKzmB,SACVlD,KAAKmrB,gBACLnrB,KAAKorB,iBACLprB,KAAKqrB,YAAW,GAChBrrB,KAAKsrB,sBAIbF,iBACI7oB,OAAOzC,iBAAiB,YAAY,WAChC2Z,SAAS8R,QAAO,MAIxBJ,gBAEInrB,KAAK2qB,cAAcxd,GAAG,QAAUpK,IAC5BA,EAAEkV,iBACFjY,KAAKsqB,oBAAoBhQ,SAAS,UAClCsF,EAAW9E,SAIf9a,KAAK4qB,mBAAmBzd,GAAG,QAAUpK,IACjCA,EAAEkV,iBACFjY,KAAKsqB,oBAAoB5P,YAAY,UACrCkF,EAAW7E,WAMf/a,KAAK0qB,aAAavd,GAAG,QAAUpK,IAC3BA,EAAEkV,iBACFjY,KAAKwrB,iBAITxrB,KAAKmqB,cAAchd,GAAG,QAAUpK,IAC5BA,EAAEkV,iBACFjY,KAAKyrB,aAAa1oB,EAAEsW,kBAIxBrZ,KAAK8qB,aAAa3d,GAAG,SAAU,KAC3BnN,KAAKqrB,eAKTrrB,KAAK+qB,WAAW5d,GAAG,QAAS,sCAAwCpK,IAChEA,EAAEkV,iBACFjY,KAAK0rB,aAAajU,GAAE1U,EAAE8M,QAAQsI,KAAK,gBAIvCnY,KAAKwb,KAAKrO,GAAG,SAAWpK,IACpBA,EAAEkV,iBACFjY,KAAKqrB,eAKTrrB,KAAKgqB,eAAe5c,YAAY,KAC5BpN,KAAKsqB,oBAAoB5P,YAAY,UACrC1a,KAAKmqB,cAAczP,YAAY,UAC/B1a,KAAKoqB,WAAW1P,YAAY,UAAUhC,IAAI,UAAW,IACrDkH,EAAW7E,WAInB4Q,aACI3rB,KAAK6pB,OAAOvP,SAAS,UAGzBsR,eACI5rB,KAAK6pB,OAAOnP,YAAY,UAG5B+Q,aAAazb,GACT,MAAMoJ,EAAU3B,GAAEzH,GACZ6b,EAAOzS,EAAQE,OAEjBF,EAAQN,SAAS,WACZ9Y,KAAKgqB,eAAe3K,SAASwM,EAAKtR,OAAO0F,QAAQjgB,KAAKiqB,gBAC3DjqB,KAAKqqB,aAAa3P,YAAY,UAC9BtB,EAAQsB,YAAY,UACpBmR,EAAKnR,YAAY,YAEZ1a,KAAKgqB,eAAe3K,SAASwM,EAAKtR,OAAOyF,UAAUhgB,KAAKiqB,gBAC7DjqB,KAAKqqB,aAAa/P,SAAS,UAC3BlB,EAAQkB,SAAS,UACjBuR,EAAKvR,SAAS,WAItBkR,eACIxrB,KAAK8qB,aAAagB,KAAK,WAAW,GAClC9rB,KAAKqrB,aAGTA,WAAWU,GACP/rB,KAAKgrB,MAAQ,GACbhrB,KAAKirB,WAAa,GAClBjrB,KAAKkrB,UAAY,GAGjBlrB,KAAK8qB,aAAava,OAAO,CAAC5S,EAAGoF,IAA2B,cAArB0U,GAAE1U,GAAGuV,KAAK,QAA0Bb,GAAE1U,GAAGkZ,GAAG,aAAa/D,KAAK,CAACva,EAAGoF,KACjG/C,KAAKgrB,MAAMtjB,KAAK+P,GAAE1U,GAAGuV,KAAK,SAG9BtY,KAAK8qB,aAAava,OAAO,CAAC5S,EAAGoF,IAA2B,aAArB0U,GAAE1U,GAAGuV,KAAK,QAAyBb,GAAE1U,GAAGkZ,GAAG,aAAa/D,KAAK,CAACva,EAAGoF,KAChG/C,KAAKirB,WAAWvjB,KAAK+P,GAAE1U,GAAGuV,KAAK,SAGnCtY,KAAK8qB,aAAava,OAAO,CAAC5S,EAAGoF,IAA2B,kBAArB0U,GAAE1U,GAAGuV,KAAK,QAA8Bb,GAAE1U,GAAGkZ,GAAG,aAAa/D,KAAK,CAACva,EAAGoF,KACrG/C,KAAKkrB,UAAUxjB,KAAK+P,GAAE1U,GAAGuV,KAAK,SAI5ByT,GACF/rB,KAAK0rB,eAIbJ,qBACI,MAAMU,EAAsBhsB,KAAKqqB,aAAatS,KAAK,kCAAkC7U,OACjF8oB,EAAsB,GACtBhsB,KAAKwqB,gBAAgBlQ,SAAS,UAC9Bta,KAAK6qB,eAAevQ,SAAS,UAC7Bta,KAAKyqB,sBAAsB5K,KAAO,IAAGmM,MACrChsB,KAAK6qB,eAAehL,KAAM,GAAEmM,KAE5BhsB,KAAKwqB,gBAAgB9P,YAAY,UACjC1a,KAAK6qB,eAAenQ,YAAY,UAChC1a,KAAKyqB,sBAAsB5K,KAAO,OAClC7f,KAAK6qB,eAAehL,KAAK,MAG7B7f,KAAKmqB,cAAcjS,KAAK,CAACrN,EAAO6L,KAC5B,MAAMuV,EAAsBxU,GAAEf,GAAInC,SAASwD,KAAK,kCAAkC7U,OAC/E+oB,EAAsB,GACrBxU,GAAEf,GAAIqB,KAAK,mBAAmBuC,SAAS,UACvC7C,GAAEf,GAAIqB,KAAK,mBAAmB8H,KAAO,GAAEoM,KAEvCxU,GAAEf,GAAIqB,KAAK,mBAAmB2C,YAAY,UAC1CjD,GAAEf,GAAIqB,KAAK,mBAAmB8H,KAAO,QAMjDqM,iBAAiB7C,EAASnhB,GACtB,MAAMyhB,EAAO/mB,SAASymB,GAChB8C,EAAgBvpB,SAASsF,GAE/BlI,KAAK+qB,WAAWhT,KAAK,gCAAgC9C,KAAK+T,GAAkBhpB,KAAKipB,SAAUU,EAAMwC,IACjGnsB,KAAK+qB,WAAWhT,KAAK,SAASI,KAAK,YAAawR,EAAO,GACvD3pB,KAAK+qB,WAAWhT,KAAK,SAASI,KAAK,YAAawR,EAAO,GAE1C,IAATA,EACA3pB,KAAK+qB,WAAWhT,KAAK,SAASuC,SAAS,YAEvCta,KAAK+qB,WAAWhT,KAAK,SAAS2C,YAAY,YAG1CiP,IAASwC,EACTnsB,KAAK+qB,WAAWhT,KAAK,SAASuC,SAAS,YAEvCta,KAAK+qB,WAAWhT,KAAK,SAAS2C,YAAY,YAG1CyR,EAAgB,EAChBnsB,KAAK+qB,WAAWzQ,SAAS,UAEzBta,KAAK+qB,WAAWrQ,YAAY,UAKpCgR,aAAa/B,EAAO,GAChB3pB,KAAK2rB,aAEL,MACMS,EADUpsB,KAAKwb,KAAK6Q,iBACL,GAAGztB,MACxB6Y,GAAE6U,KAAK,CACHloB,KAAM,OACNmV,IAAKgT,GAAGC,QACRC,SAAU,OACVnU,KAAM,CACFsR,OAAQ5pB,KAAK4pB,OACboB,MAAOhrB,KAAKgrB,MACZC,WAAYjrB,KAAKirB,WACjBC,UAAWlrB,KAAKkrB,UAChBkB,OACAM,QAAS1sB,KAAK8pB,aAAa3R,KAAK,YAChCwR,UAGPgD,KAAMC,IACHC,QAAQC,UAAU,KAAM,KAAMF,EAASrT,KACvCvZ,KAAKksB,iBAAiBU,EAASjD,KAAMiD,EAAST,eAC9CnsB,KAAKsrB,qBACLtrB,KAAK+pB,aAAa9U,KAAK2X,EAASG,iBAEnCC,KAAMC,IACHtJ,QAAQC,IAAI,UAAWqJ,GACvBC,MAAM,uEAETC,OAAO,KACJntB,KAAK4rB,mBAKkB,YAAa,qBCtQhD,MAAMnU,GAAIC,OAAOC,aAkVFyV,OAFO,IA9UtB,MACIpS,YAAY2O,EAAMC,GAEd5pB,KAAK2pB,KAAOlS,GAAEkS,GACd3pB,KAAK4pB,OAASA,EACd5pB,KAAK6pB,OAAS7pB,KAAK2pB,KAAK5R,KAAK,WAC7B/X,KAAKqtB,cAAgBrtB,KAAK2pB,KAAK5R,KAAK,mBACpC/X,KAAKstB,cAAgBttB,KAAKqtB,cAActV,KAAK,wBAC7C/X,KAAKipB,SAAW,eAChBjpB,KAAKutB,KAAOvtB,KAAKqtB,cAAclV,KAAK,aAGpCnY,KAAKkqB,eAAiBlqB,KAAKqtB,cAActV,KAAK,mBAC9C/X,KAAKmqB,cAAgBnqB,KAAKkqB,eAAenS,KAAK,mCAC9C/X,KAAKoqB,WAAapqB,KAAKkqB,eAAenS,KAAK,sCAC3C/X,KAAKqqB,aAAerqB,KAAKkqB,eAAenS,KAAK,0BAE7C/X,KAAKuqB,cAAgBvqB,KAAKkqB,eAAenS,KAAK,mBAC9C/X,KAAKwqB,gBAAkBxqB,KAAKkqB,eAAenS,KAAK,6BAChD/X,KAAKyqB,sBAAwBzqB,KAAKwqB,gBAAgBzS,KAAK,oCACvD/X,KAAK0qB,aAAe1qB,KAAKqtB,cAActV,KAAK,mCAE5C/X,KAAK2qB,cAAgB3qB,KAAKqtB,cAActV,KAAK,mCAC7C/X,KAAK4qB,mBAAqB5qB,KAAKqtB,cAActV,KAAK,iCAClD/X,KAAK6qB,eAAiB7qB,KAAKqtB,cAActV,KAAK,oCAC9C/X,KAAK8qB,aAAe9qB,KAAKqqB,aAAatS,KAAK,0DAG3C/X,KAAKgqB,eAAiBznB,OAAOyc,WAAW,sBACxChf,KAAKiqB,eAAiB,IACtBjqB,KAAKwtB,eAAiB5qB,SAAU5C,KAAKkqB,eAAenS,KAAK,qBAAqBI,KAAK,eAGnFnY,KAAKwb,KAAOxb,KAAKqtB,cAActV,KAAK,2BAGpC/X,KAAK+qB,WAAa/qB,KAAKqtB,cAActV,KAAK,oBAG1C/X,KAAKkrB,UAAY,GACjBlrB,KAAKytB,OAAS,GACdztB,KAAK0tB,YAAc,GAGnB1tB,KAAK2tB,WAAc3tB,KAAKqtB,cAActV,KAAK,sBAC3C/X,KAAK4tB,WAAa5tB,KAAKqtB,cAActV,KAAK,sBAG9CD,OACQ9X,KAAK2pB,KAAKzmB,SACVlD,KAAKmrB,gBACLnrB,KAAKorB,iBACLprB,KAAKqrB,YAAW,GAChBrrB,KAAKsrB,qBACLtrB,KAAK6tB,gBAIbzC,iBACI7oB,OAAOzC,iBAAiB,YAAY,WAChC2Z,SAAS8R,QAAO,MAIxBJ,gBAEInrB,KAAK2qB,cAAcxd,GAAG,QAAUpK,IAC5BA,EAAEkV,iBACFjY,KAAKqqB,aAAa/P,SAAS,UAC3BsF,EAAW9E,SAIf9a,KAAK4qB,mBAAmBzd,GAAG,QAAUpK,IACjCA,EAAEkV,iBACFjY,KAAKqqB,aAAa3P,YAAY,UAC9BkF,EAAW7E,WAMf/a,KAAK0qB,aAAavd,GAAG,QAAUpK,IAC3BA,EAAEkV,iBACFjY,KAAKwrB,iBAITxrB,KAAKmqB,cAAchd,GAAG,QAAUpK,IAC5BA,EAAEkV,iBACFjY,KAAKyrB,aAAa1oB,EAAEsW,kBAIxBrZ,KAAK8qB,aAAa3d,GAAG,SAAU,KAC3BnN,KAAKqrB,eAMVrrB,KAAK+qB,WAAW5d,GAAG,QAAS,sCAAwCpK,IAC/DA,EAAEkV,iBACFjY,KAAK0rB,aAAajU,GAAE1U,EAAE8M,QAAQsI,KAAK,aAAcnY,KAAK2tB,WAAWA,aAAaG,SAIlF9tB,KAAKwb,KAAKrO,GAAG,SAAWpK,IACpBA,EAAEkV,iBACFjY,KAAKqrB,eAKTrrB,KAAKgqB,eAAe5c,YAAY,KAC5BpN,KAAKqqB,aAAa3P,YAAY,UAC9B1a,KAAKmqB,cAAczP,YAAY,UAC/B1a,KAAKoqB,WAAW1P,YAAY,UAAUhC,IAAI,UAAW,IACrDkH,EAAW7E,WAInBgT,SAAS7vB,GACL,MAAM8vB,EAAU,IAAItF,OAAO,OAAUxqB,EAAO,aAAawE,KAAKH,OAAOkX,SAASC,MAC9E,OAAGsU,EACQA,EAAQ,IAAM,EAEd,KAIfH,eACI,GAAG7tB,KAAK2tB,WAAW,CACf3tB,KAAK2tB,WAAWA,WAAW,CACvBM,YAAa,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC5CC,wBAAwB,EACxBC,SAAU,KACVC,SAAU,KACVC,iBAAiB,EACjBC,WAAY,WACZC,mBAAmB,EACnBC,SAAWC,IACPzuB,KAAK0rB,aAAa,EAAE+C,GACpBzuB,KAAKqtB,cAAclV,KAAK,YAAasW,GACrCzuB,KAAKutB,KAAOkB,EACZzuB,KAAK2tB,WAAW5V,KAAK,wBAAwBxD,SAAS+F,SAAS,aAC/Dta,KAAKwtB,eAAiB,EACtBxtB,KAAKsrB,qBACLnoB,WAAW,KACPnD,KAAK2tB,WAAW5V,KAAK,wBAAwBxD,SAAS+F,SAAS,cAChE,IAEPoU,kBAAmB,KACf1uB,KAAK2tB,WAAW5V,KAAK,wBAAwBxD,SAAS+F,SAAS,aAC/DnX,WAAW,KACPnD,KAAK2tB,WAAW5V,KAAK,wBAAwBxD,SAAS+F,SAAS,cAChE,MAKX,MAAMiT,EAAOvtB,KAAK+tB,SAAS,QACxBR,EACCvtB,KAAK2tB,WAAWA,WAAY,UAAWJ,GAEvCvtB,KAAK2tB,WAAWA,WAAW,UAAW,MAAM5V,KAAK,8BAA8B2C,YAAY,6BAG/F1a,KAAK2tB,WAAW5V,KAAK,wBAAwBxD,SAAS+F,SAAS,cAKvEqR,aACI3rB,KAAK6pB,OAAOvP,SAAS,UAGzBsR,eACI5rB,KAAK6pB,OAAOnP,YAAY,UAG5B+Q,aAAazb,GACT,MAAMoJ,EAAU3B,GAAEzH,GACZ6b,EAAOzS,EAAQE,OAEjBF,EAAQN,SAAS,WACZ9Y,KAAKgqB,eAAe3K,SAASwM,EAAKtR,OAAO0F,QAAQjgB,KAAKiqB,gBAC3D7Q,EAAQsB,YAAY,UACpBmR,EAAKnR,YAAY,YAEZ1a,KAAKgqB,eAAe3K,SAASwM,EAAKtR,OAAOyF,UAAUhgB,KAAKiqB,gBAC7D7Q,EAAQkB,SAAS,UACjBuR,EAAKvR,SAAS,WAItBkR,eACIxrB,KAAK8qB,aAAagB,KAAK,WAAW,GAClC9rB,KAAK2tB,WAAWA,WAAW,UAAW,MAAM5V,KAAK,8BAA8B2C,YAAY,6BAC3F1a,KAAKqrB,aAGTA,WAAWU,GACP/rB,KAAKytB,OAAS,GACdztB,KAAKkrB,UAAY,GACjBlrB,KAAK0tB,YAAc,GAGnB1tB,KAAK8qB,aAAava,OAAO,CAAC5S,EAAGoF,IAA2B,aAArB0U,GAAE1U,GAAGuV,KAAK,QAAyBb,GAAE1U,GAAGkZ,GAAG,aAAa/D,KAAK,CAACva,EAAGoF,KAChG/C,KAAKytB,OAAO/lB,KAAK+P,GAAE1U,GAAGuV,KAAK,SAG/BtY,KAAK8qB,aAAava,OAAO,CAAC5S,EAAGoF,IAA2B,oBAArB0U,GAAE1U,GAAGuV,KAAK,QAAgCb,GAAE1U,GAAGkZ,GAAG,aAAa/D,KAAK,CAACva,EAAGoF,KACvG/C,KAAKkrB,UAAUxjB,KAAK+P,GAAE1U,GAAGuV,KAAK,SAGlCtY,KAAK8qB,aAAava,OAAO,CAAC5S,EAAGoF,IAA2B,kBAArB0U,GAAE1U,GAAGuV,KAAK,QAA8Bb,GAAE1U,GAAGkZ,GAAG,aAAa/D,KAAK,CAACva,EAAGoF,KACrG/C,KAAK0tB,YAAYhmB,KAAK+P,GAAE1U,GAAGuV,KAAK,SAI9ByT,GACF/rB,KAAK0rB,eAIbJ,qBACI,IAAIU,EAAsBhsB,KAAKqqB,aAAatS,KAAK,kCAAkC7U,OACnF8oB,GAAuBhsB,KAAKwtB,eAExBxB,EAAsB,GACtBhsB,KAAKwqB,gBAAgBlQ,SAAS,UAC9Bta,KAAK6qB,eAAevQ,SAAS,UAC7Bta,KAAKyqB,sBAAsB5K,KAAO,IAAGmM,MACrChsB,KAAK6qB,eAAehL,KAAM,GAAEmM,KAE5BhsB,KAAKwqB,gBAAgB9P,YAAY,UACjC1a,KAAK6qB,eAAenQ,YAAY,UAChC1a,KAAKyqB,sBAAsB5K,KAAO,OAClC7f,KAAK6qB,eAAehL,KAAK,MAG7B7f,KAAKmqB,cAAcjS,KAAK,CAACrN,EAAO6L,KAC5B,MAAMuV,EAAsBxU,GAAEf,GAAInC,SAASwD,KAAK,kCAAkC7U,OAC/E+oB,EAAsB,GACrBxU,GAAEf,GAAIqB,KAAK,mBAAmBuC,SAAS,UACvC7C,GAAEf,GAAIqB,KAAK,mBAAmB8H,KAAO,GAAEoM,KAEvCxU,GAAEf,GAAIqB,KAAK,mBAAmB2C,YAAY,UAC1CjD,GAAEf,GAAIqB,KAAK,mBAAmB8H,KAAO,QAMjDqM,iBAAiB7C,EAASnhB,GACtB,MAAMyhB,EAAO/mB,SAASymB,GAChB8C,EAAgBvpB,SAASsF,GAE/BlI,KAAK+qB,WAAWhT,KAAK,gCAAgC9C,KAAK+T,GAAkBhpB,KAAKipB,SAAUU,EAAMwC,IACjGnsB,KAAK+qB,WAAWhT,KAAK,SAASI,KAAK,YAAawR,EAAO,GACvD3pB,KAAK+qB,WAAWhT,KAAK,SAASI,KAAK,YAAawR,EAAO,GAE1C,IAATA,EACA3pB,KAAK+qB,WAAWhT,KAAK,SAASuC,SAAS,YAEvCta,KAAK+qB,WAAWhT,KAAK,SAAS2C,YAAY,YAG1CiP,IAASwC,EACTnsB,KAAK+qB,WAAWhT,KAAK,SAASuC,SAAS,YAEvCta,KAAK+qB,WAAWhT,KAAK,SAAS2C,YAAY,YAG1CyR,EAAgB,EAChBnsB,KAAK+qB,WAAWzQ,SAAS,UAEzBta,KAAK+qB,WAAWrQ,YAAY,UAKpCgR,aAAa/B,EAAO,EAAG4D,EAAO,IAC1BvtB,KAAK2rB,aAEL,MACMS,EADUpsB,KAAKwb,KAAK6Q,iBACL,GAAGztB,MACxB6Y,GAAE6U,KAAK,CACHloB,KAAM,OACNmV,IAAKgT,GAAGC,QACRC,SAAU,OACVnU,KAAM,CACFsR,OAAQ5pB,KAAK4pB,OACbsB,UAAWlrB,KAAKkrB,UAChBwC,YAAa1tB,KAAK0tB,YAClBD,OAAQztB,KAAKytB,OACbrB,OACAmB,OACAb,QAAS1sB,KAAKqtB,cAAclV,KAAK,YACjCwR,UAGPgD,KAAMC,IACH,GAAKA,EAASrT,IAAIrW,OACd2pB,QAAQC,UAAU,KAAM,KAAMF,EAASrT,SACpC,CACH,IAAIoV,EAAapsB,OAAOkX,SAASC,KAAKpS,MAAM,KAC5C/E,OAAOsqB,QAAQC,UAAW,GAAI,KAAM6B,EAAW,IAC/C3uB,KAAKwtB,eAAiB,EAE1BxtB,KAAKksB,iBAAiBU,EAASjD,KAAMiD,EAAST,eAC9CnsB,KAAKsrB,qBACLtrB,KAAKstB,cAAcrY,KAAK2X,EAASG,eACjC/sB,KAAK4tB,WAAW/N,KAAK+M,EAASW,MAE9BvtB,KAAK4uB,gBAER5B,KAAMC,IACHtJ,QAAQC,IAAI,UAAWqJ,GACvBC,MAAM,uEAETC,OAAO,KACJntB,KAAK4rB,iBAIbgD,cACInX,GAAG,cAAe+C,QAAQ,CACtBC,UAAWza,KAAKstB,cAAcnT,SAAShL,IAAM,KAC9C,OAI0B,sCAAuC,sBCnV5E,MAAMsI,GAAIC,OAAOC,aA+CF,WA7Cf,MACIqD,cACIhb,KAAK6oB,MAAQpR,GAAE,yBACfzX,KAAKkd,KAAOld,KAAK6oB,MAAM9Q,KAAK,+BAC5B/X,KAAKwlB,OAASxlB,KAAK6oB,MAAM9Q,KAAK,uCAC9B/X,KAAK6iB,WAAa,IAGtB/K,OACI9X,KAAK8oB,gBACL9oB,KAAK0lB,aAGToD,gBACI9oB,KAAKkd,KAAKyB,OAAM,WACZlH,GAAEzX,MAAM+X,KAAK,sCAAsCwC,OAAOyF,UAAU,QACrE,WACCvI,GAAEzX,MAAM+X,KAAK,sCAAsCwC,OAAO0F,QAAQ,QAI1EyF,aACI1lB,KAAKwlB,OAAOrD,MAAM,CACdL,MAAM,EACNP,QAAQ,EACRgB,UAAU,EACVC,aAAc,EACdC,eAAgB,EAChBZ,YAAY,EACZD,eAAe,EACfiN,aAAa,EACbjM,WAAY,CAAC,CACTC,WAAY7iB,KAAK6iB,WACjBC,SAAU,cAKtB/G,UACQxZ,OAAOyc,WAAY,eAAchf,KAAK6iB,iBAAiBxD,UAAYrf,KAAKwlB,OAAO1M,SAAS,sBACxF9Y,KAAK0lB,eC1CjB,MAAMjO,GAAIC,OAAOC,aAkDF,WAhDf,MACIqD,cACIhb,KAAKwlB,OAAS/N,GAAE,sBAChBzX,KAAK6iB,WAAa,IAGtB/K,OACI9X,KAAK0lB,aAGTA,aACI1lB,KAAKwlB,OAAOrD,MAAM,CACdL,MAAM,EACNP,QAAQ,EACRgB,UAAU,EACVC,aAAc,EACdC,eAAgB,EAChBZ,YAAY,EACZD,eAAe,EACfiN,aAAa,EACbjM,WAAY,CACR,CACIC,WAAY,KACZC,SAAU,CACRN,aAAc,IAGpB,CACIK,WAAY,IACZC,SAAU,CACRN,aAAc,IAGpB,CACIK,WAAY7iB,KAAK6iB,WACjBC,SAAU,cAM1B/G,UACQxZ,OAAOyc,WAAY,eAAchf,KAAK6iB,iBAAiBxD,UAAYrf,KAAKwlB,OAAO1M,SAAS,sBACxF9Y,KAAK0lB,eC7CjB,MAAMjO,GAAIC,OAAOC,aAqCF,WAnCf,MACIqD,cACIhb,KAAK6oB,MAAQpR,GAAE,6BACfzX,KAAKwlB,OAASxlB,KAAK6oB,MAAM9Q,KAAK,2CAC9B/X,KAAK6iB,WAAa,IAGtB/K,OACI9X,KAAK0lB,aAGTA,aACI1lB,KAAKwlB,OAAOrD,MAAM,CACdL,MAAM,EACNP,QAAQ,EACRgB,UAAU,EACVC,aAAc,EACdC,eAAgB,EAChBZ,YAAY,EACZD,eAAe,EACfiN,aAAa,EACbjM,WAAY,CAAC,CACTC,WAAY7iB,KAAK6iB,WACjBC,SAAU,cAKtB/G,UACQxZ,OAAOyc,WAAY,eAAchf,KAAK6iB,iBAAiBxD,UAAYrf,KAAKwlB,OAAO1M,SAAS,sBACxF9Y,KAAK0lB,eChCjB,MAAMjO,GAAIC,OAAOC,aA0CF,WAxCf,MACIqD,cACIhb,KAAK8uB,QAAUrX,GAAE,sBACjBzX,KAAK6iB,WAAa,IAGtB/K,OACI9X,KAAK0lB,aAGTA,aACI1lB,KAAK8uB,QAAQ3M,MAAM,CACfZ,QAAQ,EACRgB,UAAU,EACVsM,aAAa,EACbrM,aAAc,EACdC,eAAgB,EAChBG,WAAY,CACR,CACIC,WAAY,IACZC,SAAU,CACNN,aAAc,EACdC,eAAgB,IAGxB,CACII,WAAY7iB,KAAK6iB,WACjBC,SAAU,cAM1B/G,UACQxZ,OAAOyc,WAAY,eAAchf,KAAK6iB,iBAAiBxD,UAAYrf,KAAK8uB,QAAQhW,SAAS,sBACzF9Y,KAAK0lB,eCrCjB,MAAMjO,GAAIC,OAAOC,aAEXoX,GAAa,CACfjX,OACI,MAAMkX,EAASnvB,SAASunB,iBAAiB,yFACnC6H,EAAYpvB,SAASunB,iBAAiB,+CACtC8H,EAAUzX,GAAE,qCAEduX,GACA,IAAIA,GAAQxf,QAAQkH,IAChBA,EAAG5W,iBAAiB,QAAUiD,IAC1BgsB,GAAWI,YAAYpsB,GAAG,KAE9B2T,EAAG5W,iBAAiB,WAAaiD,IAC7BgsB,GAAWI,YAAYpsB,OAK/BksB,GACA,IAAIA,GAAWzf,QAAQkH,IACnBA,EAAGxW,aAAa,OAAQ,KACxBwW,EAAG5W,iBAAiB,QAAUiD,IAC1BA,EAAE8M,OAAOrP,MAAM+O,OAAS,OACxBxM,EAAE8M,OAAOrP,MAAM+O,OAASxM,EAAE8M,OAAOuf,aAAe,OACjD,KAIPF,EAAQhsB,QACRgsB,EAAQ/hB,GAAG,iBAAmBpK,IACrBA,EAAE8M,OAAOjR,MAAMsE,OAChBgsB,EAAQ3W,QAAQ,WAAW+B,SAAS,UAEpC4U,EAAQ3W,QAAQ,WAAWmC,YAAY,aAKvDyU,YAAY5Y,EAAOqF,GAAQ,GACvB,MAAMlF,EAAKH,EAAM1G,OACb6G,EAAG9X,OAASgd,EACZlF,EAAG2Y,cAAcA,cAAclY,UAAUC,IAAI,UAE7CV,EAAG2Y,cAAcA,cAAclY,UAAUgI,OAAO,YAK7C4P,UCjDf,MAAMtX,GAAIC,OAAOC,aACjB,IAAI2X,GAAmBC,EAAQ,GA2IhB,WAzIf,MACIvU,cACIhb,KAAKwvB,WAAa/X,GAAE,0CACpBzX,KAAKyvB,WAAahY,GAAE,2BACpBzX,KAAK0vB,cAAgBjY,GAAE,wCACvBzX,KAAK2vB,mBAAqBlY,GAAE,sCAC5BzX,KAAK4vB,mBAAqBnY,GAAE,wBAC5BzX,KAAK6vB,YAAcpY,GAAE,2DACrBzX,KAAK8vB,WAAarY,GAAE,qCACpBzX,KAAK+vB,SAAWtY,GAAE,mCAClBzX,KAAKgwB,SAAWvY,GAAE,mCAClBzX,KAAKiwB,MAAQxY,GAAE,QAEnBK,KAAMoY,EAAW,kBACb,IAAIC,EAAWnwB,KACJ,IAAIsvB,GAAiBY,GAE3BjuB,OAAOgB,MAAK,WACbktB,EAASC,iBAETjtB,YAAW,WACPsU,GAAE,2BAA2B6C,SAAS,YACvC,MAGP,MAAM,WACFkV,EADE,WAEFC,EAFE,cAGFC,EAHE,mBAIFC,EAJE,mBAKFC,EALE,YAMFC,EANE,WAOFC,EAPE,SAQFC,EARE,SASFC,EATE,MAUFC,GACAjwB,KAmEJ,SAAS8mB,EAAc/jB,GACfA,EAAE8M,QAAU7P,MAAiB,UAAT+C,EAAE7D,MACtB6D,EAAEkV,iBACFR,GAAE,YAAYiD,YAAY,WAC1BjD,GAAE,aAAaiD,YAAY,YAC3BjD,GAAE,cAAciD,YAAY,aAC5BjD,GAAE,YAAYiD,YAAY,WAC1BjD,GAAE,WAAWiD,YAAY,UAEzBvX,YAAW,WACPsU,GAAE,WAAWiD,YAAY,UACzBjD,GAAE,gBAAgBiD,YAAY,eAC9BuV,EAAMvV,YAAY,eAAeA,YAAY,kBAC7CoV,EAAWnX,OACXoX,EAASpX,SACV,MAhFXgX,EAAmBxiB,GAAG,SAKtB,SAAwBpK,GACpB,GAAK0U,GAAEzX,MAAM8Y,SAAS,eAyBlB/V,EAAEkV,iBACFR,GAAEzX,MAAMuU,SAAS0I,YAAY,cA1BK,CAClCla,EAAEkV,iBACF0X,EAAmBjV,YAAY,eAC/B,IAAI2V,EAAS5Y,GAAEzX,MAAMmY,KAAK,WAC1BV,GAAE,aAAaiD,YAAY,WAC3BsV,EAAStV,YAAY,UACrBoV,EAAW7P,UACX8P,EAAS9P,UACTxI,GAAE,+CAAiD4Y,EAAS,MAAM/V,SAAS,eAC3E7C,GAAE,gDAAkD4Y,EAAS,MAAM/V,SAAS,WAC5E7C,GAAE,wCAA0C4Y,EAAS,MAAM/V,SAAS,YAEpEoV,EAAclV,QAAQ,CAClBC,UAAW,GACZ,IAAK,SAERtX,YAAW,WACPsU,GAAE,yCAA2C4Y,EAAS,oDAAsDA,EAAS,MAAM3V,YAAY,sBAAsB3C,KAAK,yCAClKN,GAAE,wCAA0C4Y,EAAS,MAAM/V,SAAS,aAAagW,UAClF,KAEHntB,YAAW,WACPsU,GAAE,yCAA2C4Y,EAAS,oDAAsDA,EAAS,MAAM3V,YAAY,sCAAsChC,IAAI,YAAa,mBAC/L,SA5BX+W,EAAWtiB,GAAG,SAmCd,SAAsBpK,GAClBA,EAAEkV,eACFgY,EAAM3V,SAAS,eAAeA,SAAS,kBACvC,IAAIiW,EAAWxtB,EAAEsX,cACbmW,EAAWD,EAAS/c,wBAAwBnE,KAC5CohB,EAAiBhZ,GAAE8Y,GAAUpY,KAAK,eAEtCyX,EAAmBtV,SAAS,UAC5B7C,GAAEgZ,GAAgBnW,SAAS,UAC3B7C,GAAE,aAAegZ,EAAiB,MAAMnW,SAAS,eAEjD7C,GAAE,cAAc+C,QAAQ,CACpBC,UAAWhD,GAAE8Y,GAAUpW,SAAShL,KACjC,IAAK,SAERsI,GAAE8Y,GAAUjW,SAAS,kBAAkBI,YAAY,WAAW3C,KAAK,yCAAyCW,IAAI,CAAC,UAAa,eAAiB8X,EAAU,QAEzJrtB,YAAW,WACPsU,GAAE,aAAegZ,EAAiB,MAAMnW,SAAS,WACjDuV,EAAYvV,SAAS,WACrBoV,EAAcpV,SAAS,WACvB7C,GAAE,8CAAgDgZ,EAAiB,gDAAkDA,EAAiB,MAAMzQ,cAC7I,GAEH7c,YAAW,WACPusB,EAAcpV,SAAS,YACxB,QA5DPuV,EAAY1iB,GAAG,QAAS2Z,GACxBrP,GAAE5X,UAAUsN,GAAG,QAAS2Z,GAiF5BsJ,iBACIpwB,KAAKwvB,WAAWtX,MAAK,WACjB,IAAI3I,EAASkI,GAAEzX,MAAMoa,cAAgB,GAChC3C,GAAE,QAAQqB,SAAS,kCACpBvJ,EAASkI,GAAEzX,MAAM+X,KAAK,qCAAqCqC,cAAgB,IAG3E7K,EAAS,IACTkI,GAAEzX,MAAMqiB,KAAK,uCAAuCqO,QAAQhY,IAAI,YAAa,cAAgBnJ,EAAS,OACtGkI,GAAEzX,MAAM0Y,IAAI,YAAa,cAAgBnJ,EAAS,aCtIlE,MAAMkI,GAAIC,OAAOC,aACjB,IAAI2X,GAAmBC,EAAQ,GA+IhB,WA7If,MACIvU,cACIhb,KAAKwvB,WAAa/X,GAAE,mDACpBzX,KAAKyvB,WAAahY,GAAE,oCACpBzX,KAAK0vB,cAAgBjY,GAAE,sCACvBzX,KAAK2vB,mBAAqBlY,GAAE,oCAC5BzX,KAAK2wB,iBAAmBlZ,GAAE,sBAC1BzX,KAAK6vB,YAAcpY,GAAE,uDACrBzX,KAAK8vB,WAAarY,GAAE,mCACpBzX,KAAK+vB,SAAWtY,GAAE,iCAClBzX,KAAKgwB,SAAWvY,GAAE,iCAClBzX,KAAKiwB,MAAQxY,GAAE,QAEnBK,KAAMoY,EAAW,kBACb,IAAIC,EAAWnwB,KACJ,IAAIsvB,GAAiBY,GAE3BjuB,OAAOgB,MAAK,WACbktB,EAASC,iBAETjtB,YAAW,WACPsU,GAAE,oCAAoC6C,SAAS,YAChD,MAGP,MAAM,WACFkV,EADE,WAEFC,EAFE,cAGFC,EAHE,mBAIFC,EAJE,iBAKFgB,EALE,YAMFd,EANE,WAOFC,EAPE,SAQFC,EARE,SASFC,EATE,MAUFC,GACAjwB,KAuEJ,SAAS8mB,EAAc/jB,GACfA,EAAE8M,QAAU7P,MAAiB,UAAT+C,EAAE7D,MACtB6D,EAAEkV,iBACFR,GAAE,YAAYiD,YAAY,WAC1BjD,GAAE,aAAaiD,YAAY,YAC3BjD,GAAE,cAAciD,YAAY,aAC5BjD,GAAE,YAAYiD,YAAY,WAC1BjD,GAAE,WAAWiD,YAAY,UAEzBvX,YAAW,WACPsU,GAAE,WAAWiD,YAAY,UACzBjD,GAAE,gBAAgBiD,YAAY,eAC9BuV,EAAMvV,YAAY,eAAeA,YAAY,kBAC7CoV,EAAWnX,OACXoX,EAASpX,SACV,MApFXgX,EAAmBxiB,GAAG,SAKtB,SAAwBpK,GACpB,GAAK0U,GAAEzX,MAAM8Y,SAAS,eAyBlB/V,EAAEkV,iBACFR,GAAEzX,MAAMuU,SAAS0I,YAAY,cA1BK,CAClCla,EAAEkV,iBACF0X,EAAmBjV,YAAY,eAC/B,IAAI2V,EAAS5Y,GAAEzX,MAAMmY,KAAK,WAC1BV,GAAE,aAAaiD,YAAY,WAC3BsV,EAAStV,YAAY,UACrBoV,EAAW7P,UACX8P,EAAS9P,UACTxI,GAAE,6CAA+C4Y,EAAS,MAAM/V,SAAS,eACzE7C,GAAE,yDAA2D4Y,EAAS,MAAM/V,SAAS,WACrF7C,GAAE,iDAAmD4Y,EAAS,MAAM/V,SAAS,YAE7EoV,EAAclV,QAAQ,CAClBC,UAAW,GACZ,IAAK,SAERtX,YAAW,WACPsU,GAAE,kDAAoD4Y,EAAS,kDAAoDA,EAAS,MAAM3V,YAAY,sBAAsB3C,KAAK,kDACzKN,GAAE,iDAAmD4Y,EAAS,MAAM/V,SAAS,aAAagW,UAC3F,KAEHntB,YAAW,WACPsU,GAAE,kDAAoD4Y,EAAS,kDAAoDA,EAAS,MAAM3V,YAAY,sCAAsChC,IAAI,YAAa,mBACtM,SA5BX+W,EAAWtiB,GAAG,SAmCd,SAAsBpK,GAClBA,EAAEkV,eACFgY,EAAM3V,SAAS,eAAeA,SAAS,kBACvC,IAAIiW,EAAWxtB,EAAEsX,cACbmW,EAAWD,EAAS/c,wBAAwBnE,KAC5CohB,EAAiBhZ,GAAE8Y,GAAUpY,KAAK,eAEtCwY,EAAiBrW,SAAS,UAC1B7C,GAAEgZ,GAAgBnW,SAAS,UAC3B7C,GAAE,aAAegZ,EAAiB,MAAMnW,SAAS,eAEjD7C,GAAE,cAAc+C,QAAQ,CACpBC,UAAWhD,GAAE8Y,GAAUpW,SAAShL,KACjC,IAAK,SAERsI,GAAE8Y,GAAUjW,SAAS,kBAAkBI,YAAY,WAAW3C,KAAK,kDAAkDW,IAAI,CAAC,UAAa,eAAiB8X,EAAU,QAElKrtB,YAAW,WACPsU,GAAE,aAAegZ,EAAiB,MAAMnW,SAAS,WACjDuV,EAAYvV,SAAS,WACrBoV,EAAcpV,SAAS,WACvB7C,GAAE,4CAA8CgZ,EAAiB,8CAAgDA,EAAiB,MAAMzQ,cACzI,GAEZ7c,YAAW,WACVsU,GAAE,6BAA6B0K,MAAM,aACnC,KAEMhf,YAAW,WACPusB,EAAcpV,SAAS,YACxB,QAhEPuV,EAAY1iB,GAAG,QAAS2Z,GACxBrP,GAAE5X,UAAUsN,GAAG,QAAS2Z,GAqF5BsJ,iBACIpwB,KAAKwvB,WAAWtX,MAAK,WACjB,IAAI3I,EAASkI,GAAEzX,MAAMoa,cAAgB,GAChC3C,GAAE,QAAQqB,SAAS,kCACpBvJ,EAASkI,GAAEzX,MAAM+X,KAAK,8CAA8CqC,cAAgB,IAGpF7K,EAAS,IACTkI,GAAEzX,MAAMqiB,KAAK,gDAAgDqO,QAAQhY,IAAI,YAAa,cAAgBnJ,EAAS,OAC/GkI,GAAEzX,MAAM0Y,IAAI,YAAa,cAAgBnJ,EAAS,aC1IlEggB,EAAQ,IAWD,MAAMqB,GAAqB,CACjC3O,EACA4O,EACAC,EACAC,EAAe,MAEf,IAAIC,EAGHA,EADG,iBAAoB/O,EACZpiB,SAASunB,iBAAiBnF,GAE1BA,EAGZ,MAMMgP,EAAS5yB,OAAO6yB,OAAO,GANP,CACrBlsB,KAAM,KACNqR,WAAY,kBACZpF,UAAW,CAAC,IAGmC8f,GAE1CthB,EAAW,IAAId,qBAAsBwiB,IAC1CA,EAAQ3hB,QAASY,IACZA,EAAM6D,eACT4c,EAAezgB,EAAMP,QAErBihB,EAAkB1gB,EAAMP,WAGxBohB,GAMH,OAJAD,EAASxhB,QAASS,IACjBR,EAASG,QAAQK,KAGXR,GC4QO2hB,OAzTA,KAEd,MAAMC,EAAUxxB,SAASunB,iBAAiB,4BAEtCiK,EAAQnuB,QACL0tB,GACI,4BACA,KACIS,EAAQ7hB,QAAQkH,IAGZ,GAFAA,EAAGS,UAAUgI,OAAO,SAEbzI,EAAGS,UAAUma,SAAU,aAAgB/uB,OAAOyc,WAAW,sBAAsBK,QAAU,CAC5F,MAAM/G,EAAOiZ,KAAKC,MAAO9a,EAAG2G,aAAa,iBA2BjE,SAA0BxN,EAAQyI,GAC9B,IAQImZ,EAAOC,EAAaC,EARpB/tB,EAAI,IACJvD,EAAI,IACJ5B,EAAI,IAOJmzB,EAAU,GACVC,EAAa,GACbC,EAAkB,GAGlBC,EAAMC,GAAGC,OAAOF,MAAMnzB,OAAM,SAASX,GACrC,OAAOA,EAAEW,SACVuS,KAAK,MAGJ+gB,EAAMF,GAAGG,IAAID,MACZE,YAAW,SAASn0B,GACjB,OAAOA,EAAEm0B,cAEZC,UAAS,SAASp0B,GACf,OAAOA,EAAEo0B,YAEZC,YAvBI,GAwBJC,YAAY9zB,GAMb+zB,EAAMR,GAAGrR,OAAO9Q,GAAQ4iB,OAAO,WAC9Bta,KAAK,QAASvU,GACduU,KAAK,SAAU9X,GACf8X,KAAK,UAAY,eAGlBua,EAAYF,EAAIC,OAAO,SACtBta,KAAK,QAAS,aACdA,KAAK,YAAa,sBAGnBwa,EAAcH,EAAIC,OAAO,SACxBta,KAAK,QAAS,eACdA,KAAK,YAAa,sBA8JvB,SAASya,EAAS30B,EAAGN,GACjB,IAAIk1B,EACAC,EACAjB,EAAWl0B,IACXk1B,EAAKhB,EAAWl0B,GAAGy0B,WACnBU,EAAKjB,EAAWl0B,GAAG00B,WACVR,EAAWl0B,IAAOk0B,EAAWl0B,EAAI,IAC1Ck1B,EAAKhB,EAAWl0B,EAAI,GAAG00B,SACvBS,EAAKjB,EAAWl0B,EAAI,GAAG00B,WACdR,EAAWl0B,EAAI,IAAOk0B,EAAW3uB,OAAS,GACnD2vB,EAAKhB,EAAWA,EAAW3uB,OAAS,GAAGmvB,SACvCS,EAAKjB,EAAWA,EAAW3uB,OAAS,GAAGmvB,WAEvCQ,EAAK,EACLC,EAAK,GAELn1B,EAAIq0B,GAAGe,YAAY,CACnBX,WAAYS,EACZR,SAAUS,GACX,CACCV,WAAYn0B,EAAEm0B,WACdC,SAAUp0B,EAAEo0B,WAEhB,OAAO,SAASxzB,GACZ,IAAIe,EAAIjC,EAAEkB,GACV,OAAOqzB,EAAItyB,IAInB,SAASozB,EAAe/0B,EAAGN,GACvBk1B,GAAK,EAAI5qB,KAAKgrB,GACdH,GAAK,EAAI7qB,KAAKgrB,GACVt1B,EAAIq0B,GAAGe,YAAY,CACnBX,WAAYn0B,EAAEm0B,WACdC,SAAUp0B,EAAEo0B,UACb,CACCD,WAAYS,GACZR,SAAUS,KAEd,OAAO,SAASj0B,GACZ,IAAIe,EAAIjC,EAAEkB,GACV,OAAOqzB,EAAItyB,IAInB,SAASszB,EAAUj1B,EAAGN,GAClB,IAAIgC,EAEAA,EADAkyB,EAAWl0B,IACNk0B,EAAWl0B,GAAGy0B,WAAaP,EAAWl0B,GAAG00B,SAAWpqB,KAAKgrB,IAAM,GAC3DpB,EAAWl0B,IAAOk0B,EAAWl0B,EAAI,IACrCk0B,EAAWl0B,EAAI,GAAGy0B,WAAaP,EAAWl0B,EAAI,GAAG00B,SAAWpqB,KAAKgrB,IAAM,GACnEpB,EAAWl0B,EAAI,IAAOk0B,EAAW3uB,OAAS,GAC9C2uB,EAAWA,EAAW3uB,OAAS,GAAGkvB,WAAaP,EAAWA,EAAW3uB,OAAS,GAAGmvB,SAAWpqB,KAAKgrB,IAAM,EAExG,EAER,IAAIrzB,GAAK3B,EAAEm0B,WAAan0B,EAAEo0B,SAAWpqB,KAAKgrB,IAAM,EAE5C9c,EAAK6b,GAAGmB,kBAAkBxzB,EAAGC,GACjC,OAAO,SAASf,GACZ,IAAIivB,EAAM3X,EAAGtX,GACb,MAAO,aAAe,IAAAoJ,KAAKmrB,IAAItF,GAA0B,IAAM,IAAA7lB,KAAKorB,IAAIvF,GAA0B,MApN1G,SAAgBxV,GAEZuZ,EAAaC,EACbF,EAAUG,EAAIzZ,GAGdwZ,EAAkBF,EAAQrhB,QAE1B,SAAoBN,EAASpF,EAAO+B,GAIhC,OAHAqD,EAAQ/R,KAAOoa,EAAKzN,GAAOgV,KAC3B5P,EAAQrR,MAAQ0Z,EAAKzN,GAAOjM,MACTqR,EAAQrR,MACnBqR,EAAQrR,MAAQ,KAI5B,IAAI00B,EAAQZ,EAAUa,UAAU,QAAQjb,KAAKwZ,GAC7CwB,EAAME,QAAQf,OAAO,YAChBta,KAAK,QAAQ,SAASla,EAAGN,GACtB,OAAO2a,EAAK3a,GAAG81B,SAElBC,aACAC,SAtEW,MAuEXC,UAAU,IAAKhB,GACpBU,EACKI,aACAC,SA1EW,MA2EXC,UAAU,IAAKhB,GACpBU,EAAMO,OACDH,aACAC,SA9EW,MA+EXC,UAAU,IAAKZ,GACf7T,UAILsS,EAAQkB,EAAYY,UAAU,QAAQjb,KAAKwZ,IACrC0B,QAAQf,OAAO,YAChBta,KAAK,KAAM,GACXA,KAAK,KAAM,GACXA,KAAK,MAAM,KACXA,KAAK,MAAM,KACXA,KAAK,SAAU,QACfA,KAAK,aAAa,SAASla,GACxB,MAAO,WAAaA,EAAEm0B,WAAan0B,EAAEo0B,UAAY,GAAK,IAAMpqB,KAAKgrB,IAAM,OAE/ExB,EAAMiC,aACDC,SA/FW,MAgGXxb,KAAK,aAAa,SAASla,GACxB,MAAO,WAAaA,EAAEm0B,WAAan0B,EAAEo0B,UAAY,GAAK,IAAMpqB,KAAKgrB,IAAM,OAE/ExB,EAAMoC,OAAO1U,UAGbuS,EAAciB,EAAYY,UAAU,sBAAsBjb,KAAKwZ,GAC1D3Z,KAAK,MAAM,SAASla,GACjB,OAAKA,EAAEm0B,WAAan0B,EAAEo0B,UAAY,EAAIpqB,KAAKgrB,GAAK,IAAMh1B,EAAEm0B,WAAan0B,EAAEo0B,UAAY,EAAc,IAAVpqB,KAAKgrB,GACjF,GAEA,MAGd9a,KAAK,eAAe,SAASla,GAC1B,OAAKA,EAAEm0B,WAAan0B,EAAEo0B,UAAY,EAAIpqB,KAAKgrB,GAChC,YAEA,SAGdpT,MAAK,SAAS5hB,GACX,OAAOA,EAAEqa,KAAKwb,YAGVN,QAAQf,OAAO,YACtBta,KAAK,QAAS,iBACdA,KAAK,aAAa,SAASla,GACxB,MAAO,aAAe,IAAAgK,KAAKmrB,KAAMn1B,EAAEm0B,WAAan0B,EAAEo0B,SAAWpqB,KAAKgrB,IAAM,GAAyB,IAAM,IAAAhrB,KAAKorB,KAAKp1B,EAAEm0B,WAAan0B,EAAEo0B,SAAWpqB,KAAKgrB,IAAM,GAAwB,OAEnL9a,KAAK,MAAM,SAASla,GACjB,OAAKA,EAAEm0B,WAAan0B,EAAEo0B,UAAY,EAAIpqB,KAAKgrB,GAAK,IAAMh1B,EAAEm0B,WAAan0B,EAAEo0B,UAAY,EAAc,IAAVpqB,KAAKgrB,GACjF,GAEA,MAGd9a,KAAK,eAAe,SAASla,GAC1B,OAAKA,EAAEm0B,WAAan0B,EAAEo0B,UAAY,EAAIpqB,KAAKgrB,GAChC,YAEA,SAEZpT,MAAK,SAAS5hB,GACb,OAAOA,EAAEqa,KAAKwb,WAGtBpC,EAAYgC,aAAaC,SA/IT,MA+IiCC,UAAU,YAAaV,GAExExB,EAAYmC,OAAO1U,UAInBwS,EAAagB,EAAYY,UAAU,mBAAmBjb,KAAKwZ,GACtD3Z,KAAK,MAAM,SAASla,GACjB,OAAKA,EAAEm0B,WAAan0B,EAAEo0B,UAAY,EAAIpqB,KAAKgrB,GAAK,IAAMh1B,EAAEm0B,WAAan0B,EAAEo0B,UAAY,EAAc,IAAVpqB,KAAKgrB,GACjF,GAEA,KAGd9a,KAAK,eAAe,SAASla,GAC1B,OAAKA,EAAEm0B,WAAan0B,EAAEo0B,UAAY,EAAIpqB,KAAKgrB,GAChC,YAEA,SAEZpT,MAAK,SAAS5hB,GACb,OAAOA,EAAEC,SAGNs1B,QAAQf,OAAO,YACrBta,KAAK,QAAS,cACdA,KAAK,aAAa,SAASla,GACxB,MAAO,aAAe,IAAAgK,KAAKmrB,KAAMn1B,EAAEm0B,WAAan0B,EAAEo0B,SAAWpqB,KAAKgrB,IAAM,GAAyB,IAAM,IAAAhrB,KAAKorB,KAAKp1B,EAAEm0B,WAAan0B,EAAEo0B,SAAWpqB,KAAKgrB,IAAM,GAAwB,OAEnL9a,KAAK,MAAM,SAASla,GACjB,OAAKA,EAAEm0B,WAAan0B,EAAEo0B,UAAY,EAAIpqB,KAAKgrB,GAAK,IAAMh1B,EAAEm0B,WAAan0B,EAAEo0B,UAAY,EAAc,IAAVpqB,KAAKgrB,GACjF,GAEA,KAGd9a,KAAK,eAAe,SAASla,GAC1B,OAAKA,EAAEm0B,WAAan0B,EAAEo0B,UAAY,EAAIpqB,KAAKgrB,GAChC,YAEA,SAEZpT,MAAK,SAAS5hB,GACb,OAAOA,EAAEC,QAGjByzB,EAAW+B,aAAaC,SA7LR,MA6LgCC,UAAU,YAAaV,GAEvEvB,EAAWkC,OAAO1U,SAyEtB4U,CAAOzb,GAvSa0b,CAAiBtd,EAAI4B,GACrB5B,EAAGS,UAAUC,IAAK,gBAI9B,KACIia,EAAQ7hB,QAAQkH,IAEZ,GADAA,EAAGS,UAAUC,IAAI,QACZ7U,OAAOyc,WAAW,sBAAsBK,QAAU,CACnD,MAAM8S,EAAMzb,EAAGQ,cAAc,OACxB,OAASib,GACVA,EAAIhT,aAKpB,CACIna,KAAM,KACNqR,WAAY,kBACZpF,UAAW,CAAC,MCwRbgjB,OAzTK,KAEnB,MAAM5C,EAAUxxB,SAASunB,iBAAiB,uBAEtCiK,EAAQnuB,QACL0tB,GACI,uBACA,KACIS,EAAQ7hB,QAAQkH,IAGZ,GAFAA,EAAGS,UAAUgI,OAAO,SAEbzI,EAAGS,UAAUma,SAAU,aAAgB/uB,OAAOyc,WAAW,sBAAsBK,QAAU,CAC5F,MAAM/G,EAAOiZ,KAAKC,MAAO9a,EAAG2G,aAAa,iBA2BjE,SAA0BxN,EAAQyI,GAC9B,IAQImZ,EAAOC,EAAaC,EARpB/tB,EAAI,IACJvD,EAAI,IACJ5B,EAAI,IAOJmzB,EAAU,GACVC,EAAa,GACbC,EAAkB,GAGlBC,EAAMC,GAAGC,OAAOF,MAAMnzB,OAAM,SAASX,GACrC,OAAOA,EAAEW,SACVuS,KAAK,MAGJ+gB,EAAMF,GAAGG,IAAID,MACZE,YAAW,SAASn0B,GACjB,OAAOA,EAAEm0B,cAEZC,UAAS,SAASp0B,GACf,OAAOA,EAAEo0B,YAEZC,YAvBI,GAwBJC,YAAY9zB,GAMb+zB,EAAMR,GAAGrR,OAAO9Q,GAAQ4iB,OAAO,WAC9Bta,KAAK,QAASvU,GACduU,KAAK,SAAU9X,GACf8X,KAAK,UAAY,eAGlBua,EAAYF,EAAIC,OAAO,SACtBta,KAAK,QAAS,aACdA,KAAK,YAAa,sBAGnBwa,EAAcH,EAAIC,OAAO,SACxBta,KAAK,QAAS,eACdA,KAAK,YAAa,sBA8JvB,SAASya,EAAS30B,EAAGN,GACjB,IAAIk1B,EACAC,EACAjB,EAAWl0B,IACXk1B,EAAKhB,EAAWl0B,GAAGy0B,WACnBU,EAAKjB,EAAWl0B,GAAG00B,WACVR,EAAWl0B,IAAOk0B,EAAWl0B,EAAI,IAC1Ck1B,EAAKhB,EAAWl0B,EAAI,GAAG00B,SACvBS,EAAKjB,EAAWl0B,EAAI,GAAG00B,WACdR,EAAWl0B,EAAI,IAAOk0B,EAAW3uB,OAAS,GACnD2vB,EAAKhB,EAAWA,EAAW3uB,OAAS,GAAGmvB,SACvCS,EAAKjB,EAAWA,EAAW3uB,OAAS,GAAGmvB,WAEvCQ,EAAK,EACLC,EAAK,GAELn1B,EAAIq0B,GAAGe,YAAY,CACnBX,WAAYS,EACZR,SAAUS,GACX,CACCV,WAAYn0B,EAAEm0B,WACdC,SAAUp0B,EAAEo0B,WAEhB,OAAO,SAASxzB,GACZ,IAAIe,EAAIjC,EAAEkB,GACV,OAAOqzB,EAAItyB,IAInB,SAASozB,EAAe/0B,EAAGN,GACvBk1B,GAAK,EAAI5qB,KAAKgrB,GACdH,GAAK,EAAI7qB,KAAKgrB,GACVt1B,EAAIq0B,GAAGe,YAAY,CACnBX,WAAYn0B,EAAEm0B,WACdC,SAAUp0B,EAAEo0B,UACb,CACCD,WAAYS,GACZR,SAAUS,KAEd,OAAO,SAASj0B,GACZ,IAAIe,EAAIjC,EAAEkB,GACV,OAAOqzB,EAAItyB,IAInB,SAASszB,EAAUj1B,EAAGN,GAClB,IAAIgC,EAEAA,EADAkyB,EAAWl0B,IACNk0B,EAAWl0B,GAAGy0B,WAAaP,EAAWl0B,GAAG00B,SAAWpqB,KAAKgrB,IAAM,GAC3DpB,EAAWl0B,IAAOk0B,EAAWl0B,EAAI,IACrCk0B,EAAWl0B,EAAI,GAAGy0B,WAAaP,EAAWl0B,EAAI,GAAG00B,SAAWpqB,KAAKgrB,IAAM,GACnEpB,EAAWl0B,EAAI,IAAOk0B,EAAW3uB,OAAS,GAC9C2uB,EAAWA,EAAW3uB,OAAS,GAAGkvB,WAAaP,EAAWA,EAAW3uB,OAAS,GAAGmvB,SAAWpqB,KAAKgrB,IAAM,EAExG,EAER,IAAIrzB,GAAK3B,EAAEm0B,WAAan0B,EAAEo0B,SAAWpqB,KAAKgrB,IAAM,EAE5C9c,EAAK6b,GAAGmB,kBAAkBxzB,EAAGC,GACjC,OAAO,SAASf,GACZ,IAAIivB,EAAM3X,EAAGtX,GACb,MAAO,aAAe,IAAAoJ,KAAKmrB,IAAItF,GAA0B,IAAM,IAAA7lB,KAAKorB,IAAIvF,GAA0B,MApN1G,SAAgBxV,GAEZuZ,EAAaC,EACbF,EAAUG,EAAIzZ,GAGdwZ,EAAkBF,EAAQrhB,QAE1B,SAAoBN,EAASpF,EAAO+B,GAIhC,OAHAqD,EAAQ/R,KAAOoa,EAAKzN,GAAOgV,KAC3B5P,EAAQrR,MAAQ0Z,EAAKzN,GAAOjM,MACTqR,EAAQrR,MACnBqR,EAAQrR,MAAQ,KAI5B,IAAI00B,EAAQZ,EAAUa,UAAU,QAAQjb,KAAKwZ,GAC7CwB,EAAME,QAAQf,OAAO,YAChBta,KAAK,QAAQ,SAASla,EAAGN,GACtB,OAAO2a,EAAK3a,GAAG81B,SAElBC,aACAC,SAtEW,MAuEXC,UAAU,IAAKhB,GACpBU,EACKI,aACAC,SA1EW,MA2EXC,UAAU,IAAKhB,GACpBU,EAAMO,OACDH,aACAC,SA9EW,MA+EXC,UAAU,IAAKZ,GACf7T,UAILsS,EAAQkB,EAAYY,UAAU,QAAQjb,KAAKwZ,IACrC0B,QAAQf,OAAO,YAChBta,KAAK,KAAM,GACXA,KAAK,KAAM,GACXA,KAAK,MAAM,KACXA,KAAK,MAAM,KACXA,KAAK,SAAU,QACfA,KAAK,aAAa,SAASla,GACxB,MAAO,WAAaA,EAAEm0B,WAAan0B,EAAEo0B,UAAY,GAAK,IAAMpqB,KAAKgrB,IAAM,OAE/ExB,EAAMiC,aACDC,SA/FW,MAgGXxb,KAAK,aAAa,SAASla,GACxB,MAAO,WAAaA,EAAEm0B,WAAan0B,EAAEo0B,UAAY,GAAK,IAAMpqB,KAAKgrB,IAAM,OAE/ExB,EAAMoC,OAAO1U,UAGbuS,EAAciB,EAAYY,UAAU,sBAAsBjb,KAAKwZ,GAC1D3Z,KAAK,MAAM,SAASla,GACjB,OAAKA,EAAEm0B,WAAan0B,EAAEo0B,UAAY,EAAIpqB,KAAKgrB,GAAK,IAAMh1B,EAAEm0B,WAAan0B,EAAEo0B,UAAY,EAAc,IAAVpqB,KAAKgrB,GACjF,GAEA,MAGd9a,KAAK,eAAe,SAASla,GAC1B,OAAKA,EAAEm0B,WAAan0B,EAAEo0B,UAAY,EAAIpqB,KAAKgrB,GAChC,YAEA,SAGdpT,MAAK,SAAS5hB,GACX,OAAOA,EAAEqa,KAAKwb,YAGVN,QAAQf,OAAO,YACtBta,KAAK,QAAS,iBACdA,KAAK,aAAa,SAASla,GACxB,MAAO,aAAe,IAAAgK,KAAKmrB,KAAMn1B,EAAEm0B,WAAan0B,EAAEo0B,SAAWpqB,KAAKgrB,IAAM,GAAyB,IAAM,IAAAhrB,KAAKorB,KAAKp1B,EAAEm0B,WAAan0B,EAAEo0B,SAAWpqB,KAAKgrB,IAAM,GAAwB,OAEnL9a,KAAK,MAAM,SAASla,GACjB,OAAKA,EAAEm0B,WAAan0B,EAAEo0B,UAAY,EAAIpqB,KAAKgrB,GAAK,IAAMh1B,EAAEm0B,WAAan0B,EAAEo0B,UAAY,EAAc,IAAVpqB,KAAKgrB,GACjF,GAEA,MAGd9a,KAAK,eAAe,SAASla,GAC1B,OAAKA,EAAEm0B,WAAan0B,EAAEo0B,UAAY,EAAIpqB,KAAKgrB,GAChC,YAEA,SAEZpT,MAAK,SAAS5hB,GACb,OAAOA,EAAEqa,KAAKwb,WAGtBpC,EAAYgC,aAAaC,SA/IT,MA+IiCC,UAAU,YAAaV,GAExExB,EAAYmC,OAAO1U,UAInBwS,EAAagB,EAAYY,UAAU,mBAAmBjb,KAAKwZ,GACtD3Z,KAAK,MAAM,SAASla,GACjB,OAAKA,EAAEm0B,WAAan0B,EAAEo0B,UAAY,EAAIpqB,KAAKgrB,GAAK,IAAMh1B,EAAEm0B,WAAan0B,EAAEo0B,UAAY,EAAc,IAAVpqB,KAAKgrB,GACjF,GAEA,KAGd9a,KAAK,eAAe,SAASla,GAC1B,OAAKA,EAAEm0B,WAAan0B,EAAEo0B,UAAY,EAAIpqB,KAAKgrB,GAChC,YAEA,SAEZpT,MAAK,SAAS5hB,GACb,OAAOA,EAAEC,SAGNs1B,QAAQf,OAAO,YACrBta,KAAK,QAAS,cACdA,KAAK,aAAa,SAASla,GACxB,MAAO,aAAe,IAAAgK,KAAKmrB,KAAMn1B,EAAEm0B,WAAan0B,EAAEo0B,SAAWpqB,KAAKgrB,IAAM,GAAyB,IAAM,IAAAhrB,KAAKorB,KAAKp1B,EAAEm0B,WAAan0B,EAAEo0B,SAAWpqB,KAAKgrB,IAAM,GAAwB,OAEnL9a,KAAK,MAAM,SAASla,GACjB,OAAKA,EAAEm0B,WAAan0B,EAAEo0B,UAAY,EAAIpqB,KAAKgrB,GAAK,IAAMh1B,EAAEm0B,WAAan0B,EAAEo0B,UAAY,EAAc,IAAVpqB,KAAKgrB,GACjF,GAEA,KAGd9a,KAAK,eAAe,SAASla,GAC1B,OAAKA,EAAEm0B,WAAan0B,EAAEo0B,UAAY,EAAIpqB,KAAKgrB,GAChC,YAEA,SAEZpT,MAAK,SAAS5hB,GACb,OAAOA,EAAEC,QAGjByzB,EAAW+B,aAAaC,SA7LR,MA6LgCC,UAAU,YAAaV,GAEvEvB,EAAWkC,OAAO1U,SAyEtB4U,CAAOzb,GAvSa0b,CAAiBtd,EAAI4B,GACrB5B,EAAGS,UAAUC,IAAK,gBAI9B,KACIia,EAAQ7hB,QAAQkH,IAEZ,GADAA,EAAGS,UAAUC,IAAI,QACZ7U,OAAOyc,WAAW,sBAAsBK,QAAU,CACnD,MAAM8S,EAAMzb,EAAGQ,cAAc,OACxB,OAASib,GACVA,EAAIhT,aAKpB,CACIna,KAAM,KACNqR,WAAY,kBACZpF,UAAW,CAAC,MCjC5B,MAAMijB,GAAqB,qFACrBxX,GAAW7c,SAASunB,iBAAiB8M,IAErCC,GAAepxB,IACjBA,EAAEoU,UAAUC,IAAI,gBAGdgd,GAAerxB,IACjBA,EAAEoU,UAAUgI,OAAO,gBAaRkV,OAVQ,KACf3X,GAASxZ,QACT0tB,GAAmBsD,GAAoBC,GAAaC,GAAa,CAC7DpvB,KAAM,KACNqR,WAAY,mBACZpF,UAAW,CAAC,MC2GTqjB,OA1FI,CACfxc,OACIjY,SAASqX,cAAc,QAAQC,UAAUgI,OAAO,SAChDlI,IACA0D,IACArD,IACAid,EAAOzc,OACP0c,EAAa1c,OACb6H,EAAO7H,OACPiI,EAASjI,OACTsI,EAAWtI,OACXsH,EAAUtH,OAEV2c,GAAa3c,OACbF,EAAME,OACN4c,EAAU5c,OACV6c,EAAK7c,OACLsL,EAAWtL,OACXwL,EAAaxL,OACbyL,EAAezL,OACf0L,EAAe1L,OACfuL,EAAiBvL,OACjB8c,EAAY9c,OACZ2L,EAAY3L,OACZ+c,GAAgB/c,OAChB2O,EAAO3O,OACPgd,GAAoBhd,OACpBid,GAAcjd,OACd4R,GAAa5R,OACbsV,GAActV,OACdkd,GAAiBld,OACjBmd,GAAiBnd,OACjB4L,EAAoB5L,OACpBqL,EAAoBrL,OACpBod,GAAuBpd,OACvBqd,GAAiBrd,OACjB2I,EAAMI,UACNuU,GAAUtd,KAAM,UAChBud,GAAkBvd,KAAM,UACxBsZ,KACA6C,KACAI,MAEJiB,SACIz1B,SAASqX,cAAc,QAAQC,UAAUC,IAAI,mBAC7CE,IACAwd,GAAoBhd,QAGxBkF,WACIoC,EAAUpC,YAEdjB,UACIzE,IACAid,EAAOxY,UACPyY,EAAazY,UACb4D,EAAO5D,UACPqD,EAAUpC,WACVyJ,EAAOnG,eACPqU,EAAKrU,eACLwU,GAAoB/Y,UACpBqH,EAAWlB,UACXoB,EAAapB,UACbqB,EAAerB,UACfsB,EAAetB,UACf0S,EAAY1S,UACZuB,EAAYvB,UACZ8S,GAAiBjZ,UACjBkZ,GAAiBlZ,UACjB2H,EAAoBxB,UACpBgT,GAAuBnZ,UACvBoZ,GAAiBpZ,UACjBqZ,GAAUhF,iBACViF,GAAkBjF,kBAEtBmF,QAAQxyB,GACJ4c,EAAO3D,iBAAiBjZ,GACxBqc,EAAUpD,iBAAiBjZ,IAE/BoZ,QAAQpZ,GACJwxB,EAAOpY,QAAQpZ,GACf4c,EAAOxD,QAAQpZ,GACfgyB,GAAc5Y,QAAQpZ,GACtB8xB,GAAgB1Y,QAAQpZ,IAE5ByyB,cACI/U,EAAME,SACNoO,GAAWjX,SC1HnB,MAAM2d,GAAgB1yB,IACA,IAAdA,EAAEqZ,UACFvc,SAASqX,cAAc,QAAQC,UAAUC,IAAI,gBAE7C7U,OAAOiB,oBAAoB,UAAWiyB,IACtClzB,OAAOzC,iBAAiB,YAAa41B,MAIvCA,GAAiB,KACnB71B,SAASqX,cAAc,QAAQC,UAAUgI,OAAO,gBAEhD5c,OAAOiB,oBAAoB,YAAakyB,IACxCnzB,OAAOzC,iBAAiB,UAAW21B,KAGxBA,UCZf,IAAIE,IAAU,EAEdrB,GAAWxc,OACXvV,OAAOzC,iBAAiB,OAAQw0B,GAAWgB,QAC3C/yB,OAAOzC,iBAAiB,SAAU81B,IAAStB,GAAWtX,SAAU,KAAM,CAAE6Y,SAAS,IACjFtzB,OAAOzC,iBAAiB,SAAU81B,IAAStB,GAAWvY,QAAS,MAC/DxZ,OAAOzC,iBAAiB,UAAWw0B,GAAWnY,SAC9C5Z,OAAOzC,iBAAiB,UAAW21B,IAEnC/d,OAAO7X,UAAUsN,GAAG,mBAAqBpK,IACtB,aAAXA,EAAEqB,MACFuxB,IAAU,EACVrB,GAAWiB,QAAQxyB,IACD,YAAXA,EAAEqB,MAAuBuxB,GAGhCA,IAAU,EAFVrB,GAAWiB,QAAQxyB,KAO3B2U,OAAO7X,UAAUV,KAAK,oBAAqBm1B,GAAWkB","file":"app/themes/gulliverSchool/js/bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 22);\n","/* Font Face Observer v2.1.0 - © Bram Stein. License: BSD-3-Clause */(function(){function l(a,b){document.addEventListener?a.addEventListener(\"scroll\",b,!1):a.attachEvent(\"scroll\",b)}function m(a){document.body?a():document.addEventListener?document.addEventListener(\"DOMContentLoaded\",function c(){document.removeEventListener(\"DOMContentLoaded\",c);a()}):document.attachEvent(\"onreadystatechange\",function k(){if(\"interactive\"==document.readyState||\"complete\"==document.readyState)document.detachEvent(\"onreadystatechange\",k),a()})};function t(a){this.a=document.createElement(\"div\");this.a.setAttribute(\"aria-hidden\",\"true\");this.a.appendChild(document.createTextNode(a));this.b=document.createElement(\"span\");this.c=document.createElement(\"span\");this.h=document.createElement(\"span\");this.f=document.createElement(\"span\");this.g=-1;this.b.style.cssText=\"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";this.c.style.cssText=\"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";\nthis.f.style.cssText=\"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";this.h.style.cssText=\"display:inline-block;width:200%;height:200%;font-size:16px;max-width:none;\";this.b.appendChild(this.h);this.c.appendChild(this.f);this.a.appendChild(this.b);this.a.appendChild(this.c)}\nfunction u(a,b){a.a.style.cssText=\"max-width:none;min-width:20px;min-height:20px;display:inline-block;overflow:hidden;position:absolute;width:auto;margin:0;padding:0;top:-999px;white-space:nowrap;font-synthesis:none;font:\"+b+\";\"}function z(a){var b=a.a.offsetWidth,c=b+100;a.f.style.width=c+\"px\";a.c.scrollLeft=c;a.b.scrollLeft=a.b.scrollWidth+100;return a.g!==b?(a.g=b,!0):!1}function A(a,b){function c(){var a=k;z(a)&&a.a.parentNode&&b(a.g)}var k=a;l(a.b,c);l(a.c,c);z(a)};function B(a,b){var c=b||{};this.family=a;this.style=c.style||\"normal\";this.weight=c.weight||\"normal\";this.stretch=c.stretch||\"normal\"}var C=null,D=null,E=null,F=null;function G(){if(null===D)if(J()&&/Apple/.test(window.navigator.vendor)){var a=/AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))(?:\\.([0-9]+))/.exec(window.navigator.userAgent);D=!!a&&603>parseInt(a[1],10)}else D=!1;return D}function J(){null===F&&(F=!!document.fonts);return F}\nfunction K(){if(null===E){var a=document.createElement(\"div\");try{a.style.font=\"condensed 100px sans-serif\"}catch(b){}E=\"\"!==a.style.font}return E}function L(a,b){return[a.style,a.weight,K()?a.stretch:\"\",\"100px\",b].join(\" \")}\nB.prototype.load=function(a,b){var c=this,k=a||\"BESbswy\",r=0,n=b||3E3,H=(new Date).getTime();return new Promise(function(a,b){if(J()&&!G()){var M=new Promise(function(a,b){function e(){(new Date).getTime()-H>=n?b(Error(\"\"+n+\"ms timeout exceeded\")):document.fonts.load(L(c,'\"'+c.family+'\"'),k).then(function(c){1<=c.length?a():setTimeout(e,25)},b)}e()}),N=new Promise(function(a,c){r=setTimeout(function(){c(Error(\"\"+n+\"ms timeout exceeded\"))},n)});Promise.race([N,M]).then(function(){clearTimeout(r);a(c)},\nb)}else m(function(){function v(){var b;if(b=-1!=f&&-1!=g||-1!=f&&-1!=h||-1!=g&&-1!=h)(b=f!=g&&f!=h&&g!=h)||(null===C&&(b=/AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))/.exec(window.navigator.userAgent),C=!!b&&(536>parseInt(b[1],10)||536===parseInt(b[1],10)&&11>=parseInt(b[2],10))),b=C&&(f==w&&g==w&&h==w||f==x&&g==x&&h==x||f==y&&g==y&&h==y)),b=!b;b&&(d.parentNode&&d.parentNode.removeChild(d),clearTimeout(r),a(c))}function I(){if((new Date).getTime()-H>=n)d.parentNode&&d.parentNode.removeChild(d),b(Error(\"\"+\nn+\"ms timeout exceeded\"));else{var a=document.hidden;if(!0===a||void 0===a)f=e.a.offsetWidth,g=p.a.offsetWidth,h=q.a.offsetWidth,v();r=setTimeout(I,50)}}var e=new t(k),p=new t(k),q=new t(k),f=-1,g=-1,h=-1,w=-1,x=-1,y=-1,d=document.createElement(\"div\");d.dir=\"ltr\";u(e,L(c,\"sans-serif\"));u(p,L(c,\"serif\"));u(q,L(c,\"monospace\"));d.appendChild(e.a);d.appendChild(p.a);d.appendChild(q.a);document.body.appendChild(d);w=e.a.offsetWidth;x=p.a.offsetWidth;y=q.a.offsetWidth;I();A(e,function(a){f=a;v()});u(e,\nL(c,'\"'+c.family+'\",sans-serif'));A(p,function(a){g=a;v()});u(p,L(c,'\"'+c.family+'\",serif'));A(q,function(a){h=a;v()});u(q,L(c,'\"'+c.family+'\",monospace'))})})};\"object\"===typeof module?module.exports=B:(window.FontFaceObserver=B,window.FontFaceObserver.prototype.load=B.prototype.load);}());\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar BrowserInfo = /** @class */ (function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}());\nexport { BrowserInfo };\nvar NodeInfo = /** @class */ (function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}());\nexport { NodeInfo };\nvar SearchBotDeviceInfo = /** @class */ (function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}());\nexport { SearchBotDeviceInfo };\nvar BotInfo = /** @class */ (function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}());\nexport { BotInfo };\nvar ReactNativeInfo = /** @class */ (function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}());\nexport { ReactNativeInfo };\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [\n ['aol', /AOLShield\\/([0-9\\._]+)/],\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['edge-ios', /EdgiOS\\/([0-9\\._]+)/],\n ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/],\n ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/],\n ['samsung', /SamsungBrowser\\/([0-9\\.]+)/],\n ['silk', /\\bSilk\\/([0-9._-]+)\\b/],\n ['miui', /MiuiBrowser\\/([0-9\\.]+)$/],\n ['beaker', /BeakerBrowser\\/([0-9\\.]+)/],\n ['edge-chromium', /EdgA?\\/([0-9\\.]+)/],\n [\n 'chromium-webview',\n /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/,\n ],\n ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\n ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/],\n ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/],\n ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\n ['fxios', /FxiOS\\/([0-9\\.]+)/],\n ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/],\n ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/],\n ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/],\n ['pie', /^Microsoft Pocket Internet Explorer\\/(\\d+\\.\\d+)$/],\n ['pie', /^Mozilla\\/\\d\\.\\d+\\s\\(compatible;\\s(?:MSP?IE|MSInternet Explorer) (\\d+\\.\\d+);.*Windows CE.*\\)$/],\n ['netfront', /^Mozilla\\/\\d\\.\\d+.*NetFront\\/(\\d.\\d)/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\n ['android', /Android\\s([0-9\\.]+)/],\n ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\n ['safari', /Version\\/([0-9\\._]+).*Safari/],\n ['facebook', /FB[AS]V\\/([0-9\\.]+)/],\n ['instagram', /Instagram\\s([0-9\\.]+)/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n ['curl', /^curl\\/([0-9\\.]+)$/],\n ['searchbot', SEARCHBOX_UA_REGEX],\n];\nvar operatingSystemRules = [\n ['iOS', /iP(hone|od|ad)/],\n ['Android OS', /Android/],\n ['BlackBerry OS', /BlackBerry|BB10/],\n ['Windows Mobile', /IEMobile/],\n ['Amazon OS', /Kindle/],\n ['Windows 3.11', /Win16/],\n ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/],\n ['Windows 98', /(Windows 98)|(Win98)/],\n ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/],\n ['Windows XP', /(Windows NT 5.1)|(Windows XP)/],\n ['Windows Server 2003', /(Windows NT 5.2)/],\n ['Windows Vista', /(Windows NT 6.0)/],\n ['Windows 7', /(Windows NT 6.1)/],\n ['Windows 8', /(Windows NT 6.2)/],\n ['Windows 8.1', /(Windows NT 6.3)/],\n ['Windows 10', /(Windows NT 10.0)/],\n ['Windows ME', /Windows ME/],\n ['Windows CE', /Windows CE|WinCE|Microsoft Pocket Internet Explorer/],\n ['Open BSD', /OpenBSD/],\n ['Sun OS', /SunOS/],\n ['Chrome OS', /CrOS/],\n ['Linux', /(Linux)|(X11)/],\n ['Mac OS', /(Mac_PowerPC)|(Macintosh)/],\n ['QNX', /QNX/],\n ['BeOS', /BeOS/],\n ['OS/2', /OS\\/2/],\n];\nexport function detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return (ua !== '' &&\n userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0], regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false));\n}\nexport function browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nexport function parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0], match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n // Do not use RegExp for split operation as some browser do not support it (See: http://blog.stevenlevithan.com/archives/cross-browser-split)\n var versionParts = match[1] && match[1].split('.').join('_').split('_').slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArray(__spreadArray([], versionParts, true), createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length), true);\n }\n }\n else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nexport function detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii], os = _a[0], regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nexport function getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.\n *\n * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n *\n */\n(function() {\n'use strict';\n\n// Exit early if we're not running in a browser.\nif (typeof window !== 'object') {\n return;\n}\n\n// Exit early if all IntersectionObserver and IntersectionObserverEntry\n// features are natively supported.\nif ('IntersectionObserver' in window &&\n 'IntersectionObserverEntry' in window &&\n 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\n\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\n // See: https://github.com/w3c/IntersectionObserver/issues/211\n if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\n Object.defineProperty(window.IntersectionObserverEntry.prototype,\n 'isIntersecting', {\n get: function () {\n return this.intersectionRatio > 0;\n }\n });\n }\n return;\n}\n\n/**\n * Returns the embedding frame element, if any.\n * @param {!Document} doc\n * @return {!Element}\n */\nfunction getFrameElement(doc) {\n try {\n return doc.defaultView && doc.defaultView.frameElement || null;\n } catch (e) {\n // Ignore the error.\n return null;\n }\n}\n\n/**\n * A local reference to the root document.\n */\nvar document = (function(startDoc) {\n var doc = startDoc;\n var frame = getFrameElement(doc);\n while (frame) {\n doc = frame.ownerDocument;\n frame = getFrameElement(doc);\n }\n return doc;\n})(window.document);\n\n/**\n * An IntersectionObserver registry. This registry exists to hold a strong\n * reference to IntersectionObserver instances currently observing a target\n * element. Without this registry, instances without another reference may be\n * garbage collected.\n */\nvar registry = [];\n\n/**\n * The signal updater for cross-origin intersection. When not null, it means\n * that the polyfill is configured to work in a cross-origin mode.\n * @type {function(DOMRect|ClientRect, DOMRect|ClientRect)}\n */\nvar crossOriginUpdater = null;\n\n/**\n * The current cross-origin intersection. Only used in the cross-origin mode.\n * @type {DOMRect|ClientRect}\n */\nvar crossOriginRect = null;\n\n\n/**\n * Creates the global IntersectionObserverEntry constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry\n * @param {Object} entry A dictionary of instance properties.\n * @constructor\n */\nfunction IntersectionObserverEntry(entry) {\n this.time = entry.time;\n this.target = entry.target;\n this.rootBounds = ensureDOMRect(entry.rootBounds);\n this.boundingClientRect = ensureDOMRect(entry.boundingClientRect);\n this.intersectionRect = ensureDOMRect(entry.intersectionRect || getEmptyRect());\n this.isIntersecting = !!entry.intersectionRect;\n\n // Calculates the intersection ratio.\n var targetRect = this.boundingClientRect;\n var targetArea = targetRect.width * targetRect.height;\n var intersectionRect = this.intersectionRect;\n var intersectionArea = intersectionRect.width * intersectionRect.height;\n\n // Sets intersection ratio.\n if (targetArea) {\n // Round the intersection ratio to avoid floating point math issues:\n // https://github.com/w3c/IntersectionObserver/issues/324\n this.intersectionRatio = Number((intersectionArea / targetArea).toFixed(4));\n } else {\n // If area is zero and is intersecting, sets to 1, otherwise to 0\n this.intersectionRatio = this.isIntersecting ? 1 : 0;\n }\n}\n\n\n/**\n * Creates the global IntersectionObserver constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface\n * @param {Function} callback The function to be invoked after intersection\n * changes have queued. The function is not invoked if the queue has\n * been emptied by calling the `takeRecords` method.\n * @param {Object=} opt_options Optional configuration options.\n * @constructor\n */\nfunction IntersectionObserver(callback, opt_options) {\n\n var options = opt_options || {};\n\n if (typeof callback != 'function') {\n throw new Error('callback must be a function');\n }\n\n if (\n options.root &&\n options.root.nodeType != 1 &&\n options.root.nodeType != 9\n ) {\n throw new Error('root must be a Document or Element');\n }\n\n // Binds and throttles `this._checkForIntersections`.\n this._checkForIntersections = throttle(\n this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);\n\n // Private properties.\n this._callback = callback;\n this._observationTargets = [];\n this._queuedEntries = [];\n this._rootMarginValues = this._parseRootMargin(options.rootMargin);\n\n // Public properties.\n this.thresholds = this._initThresholds(options.threshold);\n this.root = options.root || null;\n this.rootMargin = this._rootMarginValues.map(function(margin) {\n return margin.value + margin.unit;\n }).join(' ');\n\n /** @private @const {!Array} */\n this._monitoringDocuments = [];\n /** @private @const {!Array} */\n this._monitoringUnsubscribes = [];\n}\n\n\n/**\n * The minimum interval within which the document will be checked for\n * intersection changes.\n */\nIntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\n\n\n/**\n * The frequency in which the polyfill polls for intersection changes.\n * this can be updated on a per instance basis and must be set prior to\n * calling `observe` on the first target.\n */\nIntersectionObserver.prototype.POLL_INTERVAL = null;\n\n/**\n * Use a mutation observer on the root element\n * to detect intersection changes.\n */\nIntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\n\n\n/**\n * Sets up the polyfill in the cross-origin mode. The result is the\n * updater function that accepts two arguments: `boundingClientRect` and\n * `intersectionRect` - just as these fields would be available to the\n * parent via `IntersectionObserverEntry`. This function should be called\n * each time the iframe receives intersection information from the parent\n * window, e.g. via messaging.\n * @return {function(DOMRect|ClientRect, DOMRect|ClientRect)}\n */\nIntersectionObserver._setupCrossOriginUpdater = function() {\n if (!crossOriginUpdater) {\n /**\n * @param {DOMRect|ClientRect} boundingClientRect\n * @param {DOMRect|ClientRect} intersectionRect\n */\n crossOriginUpdater = function(boundingClientRect, intersectionRect) {\n if (!boundingClientRect || !intersectionRect) {\n crossOriginRect = getEmptyRect();\n } else {\n crossOriginRect = convertFromParentRect(boundingClientRect, intersectionRect);\n }\n registry.forEach(function(observer) {\n observer._checkForIntersections();\n });\n };\n }\n return crossOriginUpdater;\n};\n\n\n/**\n * Resets the cross-origin mode.\n */\nIntersectionObserver._resetCrossOriginUpdater = function() {\n crossOriginUpdater = null;\n crossOriginRect = null;\n};\n\n\n/**\n * Starts observing a target element for intersection changes based on\n * the thresholds values.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.observe = function(target) {\n var isTargetAlreadyObserved = this._observationTargets.some(function(item) {\n return item.element == target;\n });\n\n if (isTargetAlreadyObserved) {\n return;\n }\n\n if (!(target && target.nodeType == 1)) {\n throw new Error('target must be an Element');\n }\n\n this._registerInstance();\n this._observationTargets.push({element: target, entry: null});\n this._monitorIntersections(target.ownerDocument);\n this._checkForIntersections();\n};\n\n\n/**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.unobserve = function(target) {\n this._observationTargets =\n this._observationTargets.filter(function(item) {\n return item.element != target;\n });\n this._unmonitorIntersections(target.ownerDocument);\n if (this._observationTargets.length == 0) {\n this._unregisterInstance();\n }\n};\n\n\n/**\n * Stops observing all target elements for intersection changes.\n */\nIntersectionObserver.prototype.disconnect = function() {\n this._observationTargets = [];\n this._unmonitorAllIntersections();\n this._unregisterInstance();\n};\n\n\n/**\n * Returns any queue entries that have not yet been reported to the\n * callback and clears the queue. This can be used in conjunction with the\n * callback to obtain the absolute most up-to-date intersection information.\n * @return {Array} The currently queued entries.\n */\nIntersectionObserver.prototype.takeRecords = function() {\n var records = this._queuedEntries.slice();\n this._queuedEntries = [];\n return records;\n};\n\n\n/**\n * Accepts the threshold value from the user configuration object and\n * returns a sorted array of unique threshold values. If a value is not\n * between 0 and 1 and error is thrown.\n * @private\n * @param {Array|number=} opt_threshold An optional threshold value or\n * a list of threshold values, defaulting to [0].\n * @return {Array} A sorted list of unique and valid threshold values.\n */\nIntersectionObserver.prototype._initThresholds = function(opt_threshold) {\n var threshold = opt_threshold || [0];\n if (!Array.isArray(threshold)) threshold = [threshold];\n\n return threshold.sort().filter(function(t, i, a) {\n if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {\n throw new Error('threshold must be a number between 0 and 1 inclusively');\n }\n return t !== a[i - 1];\n });\n};\n\n\n/**\n * Accepts the rootMargin value from the user configuration object\n * and returns an array of the four margin values as an object containing\n * the value and unit properties. If any of the values are not properly\n * formatted or use a unit other than px or %, and error is thrown.\n * @private\n * @param {string=} opt_rootMargin An optional rootMargin value,\n * defaulting to '0px'.\n * @return {Array} An array of margin objects with the keys\n * value and unit.\n */\nIntersectionObserver.prototype._parseRootMargin = function(opt_rootMargin) {\n var marginString = opt_rootMargin || '0px';\n var margins = marginString.split(/\\s+/).map(function(margin) {\n var parts = /^(-?\\d*\\.?\\d+)(px|%)$/.exec(margin);\n if (!parts) {\n throw new Error('rootMargin must be specified in pixels or percent');\n }\n return {value: parseFloat(parts[1]), unit: parts[2]};\n });\n\n // Handles shorthand.\n margins[1] = margins[1] || margins[0];\n margins[2] = margins[2] || margins[0];\n margins[3] = margins[3] || margins[1];\n\n return margins;\n};\n\n\n/**\n * Starts polling for intersection changes if the polling is not already\n * happening, and if the page's visibility state is visible.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._monitorIntersections = function(doc) {\n var win = doc.defaultView;\n if (!win) {\n // Already destroyed.\n return;\n }\n if (this._monitoringDocuments.indexOf(doc) != -1) {\n // Already monitoring.\n return;\n }\n\n // Private state for monitoring.\n var callback = this._checkForIntersections;\n var monitoringInterval = null;\n var domObserver = null;\n\n // If a poll interval is set, use polling instead of listening to\n // resize and scroll events or DOM mutations.\n if (this.POLL_INTERVAL) {\n monitoringInterval = win.setInterval(callback, this.POLL_INTERVAL);\n } else {\n addEvent(win, 'resize', callback, true);\n addEvent(doc, 'scroll', callback, true);\n if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in win) {\n domObserver = new win.MutationObserver(callback);\n domObserver.observe(doc, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n }\n }\n\n this._monitoringDocuments.push(doc);\n this._monitoringUnsubscribes.push(function() {\n // Get the window object again. When a friendly iframe is destroyed, it\n // will be null.\n var win = doc.defaultView;\n\n if (win) {\n if (monitoringInterval) {\n win.clearInterval(monitoringInterval);\n }\n removeEvent(win, 'resize', callback, true);\n }\n\n removeEvent(doc, 'scroll', callback, true);\n if (domObserver) {\n domObserver.disconnect();\n }\n });\n\n // Also monitor the parent.\n var rootDoc =\n (this.root && (this.root.ownerDocument || this.root)) || document;\n if (doc != rootDoc) {\n var frame = getFrameElement(doc);\n if (frame) {\n this._monitorIntersections(frame.ownerDocument);\n }\n }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._unmonitorIntersections = function(doc) {\n var index = this._monitoringDocuments.indexOf(doc);\n if (index == -1) {\n return;\n }\n\n var rootDoc =\n (this.root && (this.root.ownerDocument || this.root)) || document;\n\n // Check if any dependent targets are still remaining.\n var hasDependentTargets =\n this._observationTargets.some(function(item) {\n var itemDoc = item.element.ownerDocument;\n // Target is in this context.\n if (itemDoc == doc) {\n return true;\n }\n // Target is nested in this context.\n while (itemDoc && itemDoc != rootDoc) {\n var frame = getFrameElement(itemDoc);\n itemDoc = frame && frame.ownerDocument;\n if (itemDoc == doc) {\n return true;\n }\n }\n return false;\n });\n if (hasDependentTargets) {\n return;\n }\n\n // Unsubscribe.\n var unsubscribe = this._monitoringUnsubscribes[index];\n this._monitoringDocuments.splice(index, 1);\n this._monitoringUnsubscribes.splice(index, 1);\n unsubscribe();\n\n // Also unmonitor the parent.\n if (doc != rootDoc) {\n var frame = getFrameElement(doc);\n if (frame) {\n this._unmonitorIntersections(frame.ownerDocument);\n }\n }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._unmonitorAllIntersections = function() {\n var unsubscribes = this._monitoringUnsubscribes.slice(0);\n this._monitoringDocuments.length = 0;\n this._monitoringUnsubscribes.length = 0;\n for (var i = 0; i < unsubscribes.length; i++) {\n unsubscribes[i]();\n }\n};\n\n\n/**\n * Scans each observation target for intersection changes and adds them\n * to the internal entries queue. If new entries are found, it\n * schedules the callback to be invoked.\n * @private\n */\nIntersectionObserver.prototype._checkForIntersections = function() {\n if (!this.root && crossOriginUpdater && !crossOriginRect) {\n // Cross origin monitoring, but no initial data available yet.\n return;\n }\n\n var rootIsInDom = this._rootIsInDom();\n var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();\n\n this._observationTargets.forEach(function(item) {\n var target = item.element;\n var targetRect = getBoundingClientRect(target);\n var rootContainsTarget = this._rootContainsTarget(target);\n var oldEntry = item.entry;\n var intersectionRect = rootIsInDom && rootContainsTarget &&\n this._computeTargetAndRootIntersection(target, targetRect, rootRect);\n\n var rootBounds = null;\n if (!this._rootContainsTarget(target)) {\n rootBounds = getEmptyRect();\n } else if (!crossOriginUpdater || this.root) {\n rootBounds = rootRect;\n }\n\n var newEntry = item.entry = new IntersectionObserverEntry({\n time: now(),\n target: target,\n boundingClientRect: targetRect,\n rootBounds: rootBounds,\n intersectionRect: intersectionRect\n });\n\n if (!oldEntry) {\n this._queuedEntries.push(newEntry);\n } else if (rootIsInDom && rootContainsTarget) {\n // If the new entry intersection ratio has crossed any of the\n // thresholds, add a new entry.\n if (this._hasCrossedThreshold(oldEntry, newEntry)) {\n this._queuedEntries.push(newEntry);\n }\n } else {\n // If the root is not in the DOM or target is not contained within\n // root but the previous entry for this target had an intersection,\n // add a new record indicating removal.\n if (oldEntry && oldEntry.isIntersecting) {\n this._queuedEntries.push(newEntry);\n }\n }\n }, this);\n\n if (this._queuedEntries.length) {\n this._callback(this.takeRecords(), this);\n }\n};\n\n\n/**\n * Accepts a target and root rect computes the intersection between then\n * following the algorithm in the spec.\n * TODO(philipwalton): at this time clip-path is not considered.\n * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo\n * @param {Element} target The target DOM element\n * @param {Object} targetRect The bounding rect of the target.\n * @param {Object} rootRect The bounding rect of the root after being\n * expanded by the rootMargin value.\n * @return {?Object} The final intersection rect object or undefined if no\n * intersection is found.\n * @private\n */\nIntersectionObserver.prototype._computeTargetAndRootIntersection =\n function(target, targetRect, rootRect) {\n // If the element isn't displayed, an intersection can't happen.\n if (window.getComputedStyle(target).display == 'none') return;\n\n var intersectionRect = targetRect;\n var parent = getParentNode(target);\n var atRoot = false;\n\n while (!atRoot && parent) {\n var parentRect = null;\n var parentComputedStyle = parent.nodeType == 1 ?\n window.getComputedStyle(parent) : {};\n\n // If the parent isn't displayed, an intersection can't happen.\n if (parentComputedStyle.display == 'none') return null;\n\n if (parent == this.root || parent.nodeType == /* DOCUMENT */ 9) {\n atRoot = true;\n if (parent == this.root || parent == document) {\n if (crossOriginUpdater && !this.root) {\n if (!crossOriginRect ||\n crossOriginRect.width == 0 && crossOriginRect.height == 0) {\n // A 0-size cross-origin intersection means no-intersection.\n parent = null;\n parentRect = null;\n intersectionRect = null;\n } else {\n parentRect = crossOriginRect;\n }\n } else {\n parentRect = rootRect;\n }\n } else {\n // Check if there's a frame that can be navigated to.\n var frame = getParentNode(parent);\n var frameRect = frame && getBoundingClientRect(frame);\n var frameIntersect =\n frame &&\n this._computeTargetAndRootIntersection(frame, frameRect, rootRect);\n if (frameRect && frameIntersect) {\n parent = frame;\n parentRect = convertFromParentRect(frameRect, frameIntersect);\n } else {\n parent = null;\n intersectionRect = null;\n }\n }\n } else {\n // If the element has a non-visible overflow, and it's not the \n // or element, update the intersection rect.\n // Note: and cannot be clipped to a rect that's not also\n // the document rect, so no need to compute a new intersection.\n var doc = parent.ownerDocument;\n if (parent != doc.body &&\n parent != doc.documentElement &&\n parentComputedStyle.overflow != 'visible') {\n parentRect = getBoundingClientRect(parent);\n }\n }\n\n // If either of the above conditionals set a new parentRect,\n // calculate new intersection data.\n if (parentRect) {\n intersectionRect = computeRectIntersection(parentRect, intersectionRect);\n }\n if (!intersectionRect) break;\n parent = parent && getParentNode(parent);\n }\n return intersectionRect;\n};\n\n\n/**\n * Returns the root rect after being expanded by the rootMargin value.\n * @return {ClientRect} The expanded root rect.\n * @private\n */\nIntersectionObserver.prototype._getRootRect = function() {\n var rootRect;\n if (this.root && !isDoc(this.root)) {\n rootRect = getBoundingClientRect(this.root);\n } else {\n // Use / instead of window since scroll bars affect size.\n var doc = isDoc(this.root) ? this.root : document;\n var html = doc.documentElement;\n var body = doc.body;\n rootRect = {\n top: 0,\n left: 0,\n right: html.clientWidth || body.clientWidth,\n width: html.clientWidth || body.clientWidth,\n bottom: html.clientHeight || body.clientHeight,\n height: html.clientHeight || body.clientHeight\n };\n }\n return this._expandRectByRootMargin(rootRect);\n};\n\n\n/**\n * Accepts a rect and expands it by the rootMargin value.\n * @param {DOMRect|ClientRect} rect The rect object to expand.\n * @return {ClientRect} The expanded rect.\n * @private\n */\nIntersectionObserver.prototype._expandRectByRootMargin = function(rect) {\n var margins = this._rootMarginValues.map(function(margin, i) {\n return margin.unit == 'px' ? margin.value :\n margin.value * (i % 2 ? rect.width : rect.height) / 100;\n });\n var newRect = {\n top: rect.top - margins[0],\n right: rect.right + margins[1],\n bottom: rect.bottom + margins[2],\n left: rect.left - margins[3]\n };\n newRect.width = newRect.right - newRect.left;\n newRect.height = newRect.bottom - newRect.top;\n\n return newRect;\n};\n\n\n/**\n * Accepts an old and new entry and returns true if at least one of the\n * threshold values has been crossed.\n * @param {?IntersectionObserverEntry} oldEntry The previous entry for a\n * particular target element or null if no previous entry exists.\n * @param {IntersectionObserverEntry} newEntry The current entry for a\n * particular target element.\n * @return {boolean} Returns true if a any threshold has been crossed.\n * @private\n */\nIntersectionObserver.prototype._hasCrossedThreshold =\n function(oldEntry, newEntry) {\n\n // To make comparing easier, an entry that has a ratio of 0\n // but does not actually intersect is given a value of -1\n var oldRatio = oldEntry && oldEntry.isIntersecting ?\n oldEntry.intersectionRatio || 0 : -1;\n var newRatio = newEntry.isIntersecting ?\n newEntry.intersectionRatio || 0 : -1;\n\n // Ignore unchanged ratios\n if (oldRatio === newRatio) return;\n\n for (var i = 0; i < this.thresholds.length; i++) {\n var threshold = this.thresholds[i];\n\n // Return true if an entry matches a threshold or if the new ratio\n // and the old ratio are on the opposite sides of a threshold.\n if (threshold == oldRatio || threshold == newRatio ||\n threshold < oldRatio !== threshold < newRatio) {\n return true;\n }\n }\n};\n\n\n/**\n * Returns whether or not the root element is an element and is in the DOM.\n * @return {boolean} True if the root element is an element and is in the DOM.\n * @private\n */\nIntersectionObserver.prototype._rootIsInDom = function() {\n return !this.root || containsDeep(document, this.root);\n};\n\n\n/**\n * Returns whether or not the target element is a child of root.\n * @param {Element} target The target element to check.\n * @return {boolean} True if the target element is a child of root.\n * @private\n */\nIntersectionObserver.prototype._rootContainsTarget = function(target) {\n var rootDoc =\n (this.root && (this.root.ownerDocument || this.root)) || document;\n return (\n containsDeep(rootDoc, target) &&\n (!this.root || rootDoc == target.ownerDocument)\n );\n};\n\n\n/**\n * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\nIntersectionObserver.prototype._registerInstance = function() {\n if (registry.indexOf(this) < 0) {\n registry.push(this);\n }\n};\n\n\n/**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\nIntersectionObserver.prototype._unregisterInstance = function() {\n var index = registry.indexOf(this);\n if (index != -1) registry.splice(index, 1);\n};\n\n\n/**\n * Returns the result of the performance.now() method or null in browsers\n * that don't support the API.\n * @return {number} The elapsed time since the page was requested.\n */\nfunction now() {\n return window.performance && performance.now && performance.now();\n}\n\n\n/**\n * Throttles a function and delays its execution, so it's only called at most\n * once within a given time period.\n * @param {Function} fn The function to throttle.\n * @param {number} timeout The amount of time that must pass before the\n * function can be called again.\n * @return {Function} The throttled function.\n */\nfunction throttle(fn, timeout) {\n var timer = null;\n return function () {\n if (!timer) {\n timer = setTimeout(function() {\n fn();\n timer = null;\n }, timeout);\n }\n };\n}\n\n\n/**\n * Adds an event handler to a DOM node ensuring cross-browser compatibility.\n * @param {Node} node The DOM node to add the event handler to.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to add.\n * @param {boolean} opt_useCapture Optionally adds the even to the capture\n * phase. Note: this only works in modern browsers.\n */\nfunction addEvent(node, event, fn, opt_useCapture) {\n if (typeof node.addEventListener == 'function') {\n node.addEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.attachEvent == 'function') {\n node.attachEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Removes a previously added event handler from a DOM node.\n * @param {Node} node The DOM node to remove the event handler from.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to remove.\n * @param {boolean} opt_useCapture If the event handler was added with this\n * flag set to true, it should be set to true here in order to remove it.\n */\nfunction removeEvent(node, event, fn, opt_useCapture) {\n if (typeof node.removeEventListener == 'function') {\n node.removeEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.detatchEvent == 'function') {\n node.detatchEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Returns the intersection between two rect objects.\n * @param {Object} rect1 The first rect.\n * @param {Object} rect2 The second rect.\n * @return {?Object|?ClientRect} The intersection rect or undefined if no\n * intersection is found.\n */\nfunction computeRectIntersection(rect1, rect2) {\n var top = Math.max(rect1.top, rect2.top);\n var bottom = Math.min(rect1.bottom, rect2.bottom);\n var left = Math.max(rect1.left, rect2.left);\n var right = Math.min(rect1.right, rect2.right);\n var width = right - left;\n var height = bottom - top;\n\n return (width >= 0 && height >= 0) && {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n } || null;\n}\n\n\n/**\n * Shims the native getBoundingClientRect for compatibility with older IE.\n * @param {Element} el The element whose bounding rect to get.\n * @return {DOMRect|ClientRect} The (possibly shimmed) rect of the element.\n */\nfunction getBoundingClientRect(el) {\n var rect;\n\n try {\n rect = el.getBoundingClientRect();\n } catch (err) {\n // Ignore Windows 7 IE11 \"Unspecified error\"\n // https://github.com/w3c/IntersectionObserver/pull/205\n }\n\n if (!rect) return getEmptyRect();\n\n // Older IE\n if (!(rect.width && rect.height)) {\n rect = {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return rect;\n}\n\n\n/**\n * Returns an empty rect object. An empty rect is returned when an element\n * is not in the DOM.\n * @return {ClientRect} The empty rect.\n */\nfunction getEmptyRect() {\n return {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0\n };\n}\n\n\n/**\n * Ensure that the result has all of the necessary fields of the DOMRect.\n * Specifically this ensures that `x` and `y` fields are set.\n *\n * @param {?DOMRect|?ClientRect} rect\n * @return {?DOMRect}\n */\nfunction ensureDOMRect(rect) {\n // A `DOMRect` object has `x` and `y` fields.\n if (!rect || 'x' in rect) {\n return rect;\n }\n // A IE's `ClientRect` type does not have `x` and `y`. The same is the case\n // for internally calculated Rect objects. For the purposes of\n // `IntersectionObserver`, it's sufficient to simply mirror `left` and `top`\n // for these fields.\n return {\n top: rect.top,\n y: rect.top,\n bottom: rect.bottom,\n left: rect.left,\n x: rect.left,\n right: rect.right,\n width: rect.width,\n height: rect.height\n };\n}\n\n\n/**\n * Inverts the intersection and bounding rect from the parent (frame) BCR to\n * the local BCR space.\n * @param {DOMRect|ClientRect} parentBoundingRect The parent's bound client rect.\n * @param {DOMRect|ClientRect} parentIntersectionRect The parent's own intersection rect.\n * @return {ClientRect} The local root bounding rect for the parent's children.\n */\nfunction convertFromParentRect(parentBoundingRect, parentIntersectionRect) {\n var top = parentIntersectionRect.top - parentBoundingRect.top;\n var left = parentIntersectionRect.left - parentBoundingRect.left;\n return {\n top: top,\n left: left,\n height: parentIntersectionRect.height,\n width: parentIntersectionRect.width,\n bottom: top + parentIntersectionRect.height,\n right: left + parentIntersectionRect.width\n };\n}\n\n\n/**\n * Checks to see if a parent element contains a child element (including inside\n * shadow DOM).\n * @param {Node} parent The parent element.\n * @param {Node} child The child element.\n * @return {boolean} True if the parent node contains the child node.\n */\nfunction containsDeep(parent, child) {\n var node = child;\n while (node) {\n if (node == parent) return true;\n\n node = getParentNode(node);\n }\n return false;\n}\n\n\n/**\n * Gets the parent node of an element or its host element if the parent node\n * is a shadow root.\n * @param {Node} node The node whose parent to get.\n * @return {Node|null} The parent node or null if no parent exists.\n */\nfunction getParentNode(node) {\n var parent = node.parentNode;\n\n if (node.nodeType == /* DOCUMENT */ 9 && node != document) {\n // If this node is a document node, look for the embedding frame.\n return getFrameElement(node);\n }\n\n // If the parent has element that is assigned through shadow root slot\n if (parent && parent.assignedSlot) {\n parent = parent.assignedSlot.parentNode\n }\n\n if (parent && parent.nodeType == 11 && parent.host) {\n // If the parent is a shadow root, return the host element.\n return parent.host;\n }\n\n return parent;\n}\n\n/**\n * Returns true if `node` is a Document.\n * @param {!Node} node\n * @returns {boolean}\n */\nfunction isDoc(node) {\n return node && node.nodeType === 9;\n}\n\n\n// Exposes the constructors globally.\nwindow.IntersectionObserver = IntersectionObserver;\nwindow.IntersectionObserverEntry = IntersectionObserverEntry;\n\n}());\n","import { detect } from 'detect-browser';\n\nfunction isTouchDevice() {\n return 'ontouchstart' in window || navigator.msMaxTouchPoints;\n}\n\nfunction detectBrowser() {\n document.querySelector('html').classList.add(detect().name);\n\n if (isTouchDevice()) {\n document.querySelector('html').classList.add('touch-device');\n }\n}\n\nexport default detectBrowser;\n","const vhUnit = () => {\n\tdocument.documentElement.style.setProperty('--vh', `${window.innerHeight * 0.01}px`);\n};\n\nexport default vhUnit;\n","const $ = jQuery.noConflict();\n\nconst video = {\n iframeWrapper: $('.iframe-wrapper'),\n init() {\n const overlay = video.iframeWrapper.find('.iframe-wrapper__overlay');\n overlay.on('click', this.hideOverlay);\n },\n hideOverlay(e) {\n e.preventDefault();\n video.iframeWrapper.each((i ,el)=>{\n const iframeSrc = $(el).find('iframe').attr('src');\n if(iframeSrc) {\n $(el).find('iframe')[0].src = '';\n }\n const imageUrl = $(el).data('image-src');\n const parent = $(this).parents('.iframe-wrapper');\n if ( parent.find('iframe')[0].dataset.dataSrc ) {\n $(el).find('.iframe-wrapper__overlay').css('background-image', 'url(' + imageUrl + ')').hide();\n } else { \n $(el).find('.iframe-wrapper__overlay').css('background-image', 'url(' + imageUrl + ')').show();\n }\n });\n\n const parent = $(this).parents('.iframe-wrapper');\n\t\tif ( parent.find('iframe')[0].dataset.dataSrc ) {\n\t\t\tparent.find('iframe')[0].src = parent.find('iframe')[0].dataset.dataSrc;\n\t\t} else {\n\t\t\tparent.find('iframe')[0].src = parent.find('iframe')[0].dataset.src;\n\t\t}\n const src_storage = parent.find('iframe')[0].src;\n if (!parent.hasClass('wistia' )) {\n parent.find('iframe')[0].src += '&controls=0&autoplay=1&loop=1&rel=0&wmode=transparent';\n } else {\n parent.find('iframe')[0].src = `https://fast.wistia.net/embed/iframe/${parent.data('video-id')}?autoplay=1&silentAutoPlay=false`;\n }\n\n if ( parent.find('iframe')[0].dataset.src ) { \n parent.find('iframe')[0].src = src_storage + '&autoplay=1&loop=1&rel=0&wmode=transparent';\n }\n $(this).delay(300).fadeOut();\n }\n};\n\nexport default video;\n","const $ = jQuery.noConflict();\n\nfunction scrollFunc(e) {\n const body = $(\"body\");\n const header = $(\".main-header:not(.static)\");\n const inpageNav = $(\".inpage-nav\");\n let target = false;\n\n if (e) {\n e.preventDefault();\n const trigger = $(e.delegateTarget);\n target =\n trigger.attr(\"href\") === \"#next\"\n ? trigger.parents(\"section\").next()\n : $(trigger.attr(\"href\"));\n\n\tconst url = new URL(window.location.href);\n\tconst anchor = url.hash ? url.hash.substring(1) : null;\n\n\tif (anchor) {\n\t\tconst escapedAnchor = CSS.escape(anchor);\n\t\tconst targetSection = document.querySelector(`.block-content#${escapedAnchor}`);\n\n\t\tif (targetSection) {\n\t\t\ttargetSection.classList.add('target-removed');\n\t\t}\n\t}\n } else {\n const id = window.location.hash;\n if (id) target = $(id);\n }\n\n if (target.length) {\n let offset = -1; // one pixel inaccuracy\n\n offset += inpageNav.length ? inpageNav.outerHeight() : header.outerHeight();\n\n const mt = parseInt(target.css(\"margin-top\"), 10);\n const pt = parseInt(target.css(\"padding-top\"), 10);\n if (\n e.currentTarget.hash !== \"#waystogive\" &&\n e.currentTarget.hash !== \"#circles\" &&\n e.currentTarget.hash !== \"#spotlight\"\n ) {\n offset += 30;\n }\n\n body.addClass(\"smooth-scroll\");\n $(\"html, body\")\n .stop()\n .animate(\n {\n scrollTop: parseInt(target.offset().top - offset, 10),\n },\n 600,\n () => {\n setTimeout(() => {\n body.removeClass(\"smooth-scroll\");\n }, 100);\n }\n );\n }\n}\n\nfunction smoothScroll() {\n $('a[href^=\"#\"]:not([href=\"#\"]):not([href^=\"#popmake-\"])').on(\n \"click\",\n scrollFunc\n );\n setTimeout(scrollFunc, 100);\n}\n\nexport default smoothScroll;\n","/**\n * --------------------------------------------------------------------------\n * Lock screen\n * Function locking screen scrolling, e.g for modals, menus or other\n * --------------------------------------------------------------------------\n */\n\nconst screenLock = {\n isLocked: false,\n lock() {\n if (this.isLocked) {\n return;\n }\n this.isLocked = true;\n\n document.body.style.overflow = 'hidden';\n },\n unlock() {\n if (!this.isLocked) {\n return;\n }\n this.isLocked = false;\n\n document.body.style.overflow = '';\n }\n};\n\nexport default screenLock;\n","const $ = jQuery.noConflict();\n\nclass Search {\n constructor() {\n this.header = $('.main-header');\n this.searchTrigger = this.header.find('.main-header__search-trigger');\n this.search = this.header.find('.search-hero');\n this.searchParent = this.search.parent();\n\n this.searchForm = $('.search-form');\n this.searchInput = this.searchForm.find('input[type=\"search\"]');\n }\n\n init() {\n this.searchInput.on('input', this.typingInput);\n this.searchTrigger.on('click', this.toggleSearch.bind(this));\n\n this.searchInput.on( \"focusin\", function() {\n $(this).parent().addClass('focused');\n });\n\n this.searchInput.on( \"focusout\", function() {\n $(this).parent().removeClass('focused');\n });\n\n if (this.search.hasClass('no-focus')) {\n this.search.find('input, button').attr('tabindex', '-1');\n this.search.removeClass('no-focus');\n }\n }\n\n typingInput(e) {\n const form = $(this).parent();\n\n if (this.value !== '') {\n form.addClass('filled');\n } else {\n form.removeClass('filled');\n }\n }\n\n toggleSearch() {\n if (this.searchParent.hasClass('active')) {\n this.closeSearch();\n } else {\n this.openSearch();\n }\n }\n\n openSearch() {\n this.setSearchHeight();\n this.searchParent.addClass('active').find('input[type=\"search\"]').focus();\n this.search.find('input, button').removeAttr('tabindex');\n }\n\n closeSearch() {\n this.searchParent.removeClass('active').find('input[type=\"search\"]').blur();\n this.search.find('input, button').attr('tabindex', '-1');\n }\n\n setSearchHeight() {\n const height = window.innerHeight - this.header.outerHeight();\n\n this.searchParent.css('height', height);\n }\n\n resized() {\n this.setSearchHeight();\n }\n\n hideOutsideClick(e) {\n if (this.searchParent.hasClass('active') && !this.search.is(e.target) && this.search.has(e.target).length === 0 && !this.searchTrigger.is(e.target)) {\n this.closeSearch();\n }\n }\n\n keyDown(e) {\n if (e.keyCode === 27 && this.searchParent.hasClass('active')) {\n this.closeSearch();\n }\n }\n}\n\nexport default new Search();\n","const $ = jQuery.noConflict();\n\nclass InpageNav {\n constructor() {\n this.body = $('body');\n this.header = this.body.find('.main-header:not(.static)');\n this.nav = this.body.find('.inpage-nav');\n this.navWrapper = this.nav.find('.inpage-nav__wrapper');\n this.navLinks = this.nav.find('.inpage-nav__item');\n this.menuTrigger = this.nav.find('.inpage-nav__menu-trigger');\n this.menu = this.nav.find('.inpage-nav__menu');\n this.sections = $(this.body.find('.page-content').children('section[id]').get().reverse());\n this.sectionsArr = [];\n this.lastPosition = 0;\n }\n\n init() {\n this.mapSections();\n this.scrolled();\n this.menuTrigger.on('click', function toggleActive() {\n $(this).toggleClass('active');\n });\n this.navLinks.on('click', (e) => {\n const link = $(e.target);\n this.navLinks.removeClass('active');\n link.addClass('active');\n this.scrollNavWrapper(link);\n });\n }\n\n mapSections() {\n this.sections.each((i, item) => {\n const sectionID = $(item).attr('id');\n this.sectionsArr[sectionID] = this.navLinks.filter((i, e) => e.getAttribute('href').substring(1) === sectionID);\n });\n }\n\n stickNav() {\n const headerHeight = this.header.outerHeight();\n const navOffsetTop = this.nav.offset().top;\n const windowScrollTop = $(window).scrollTop();\n\n if (windowScrollTop > navOffsetTop - headerHeight) {\n this.nav.addClass('sticky');\n this.navWrapper.css('top', `${headerHeight}px`);\n\n if (windowScrollTop > navOffsetTop) {\n this.body.addClass('hide-header');\n } else {\n this.body.removeClass('hide-header');\n }\n } else {\n this.body.removeClass('hide-header');\n this.nav.removeClass('sticky');\n this.navWrapper.css('top', '');\n if ( this.body.hasClass('admin-bar')) {\n this.header.css('top', `32px`);\n } else {\n this.header.css('top', '0' );\n }\n }\n\n // if (this.lastPosition > windowScrollTop && !this.body.hasClass('smooth-scroll')) {\n // this.body.removeClass('scroll-down').addClass('scroll-up');\n // } else {\n // this.body.removeClass('scroll-up').addClass('scroll-down');\n // }\n\n this.lastPosition = windowScrollTop;\n }\n\n highlightNavItem() {\n if (this.body.hasClass('smooth-scroll')) {\n return;\n }\n const scrollPosition = $(window).scrollTop() + this.nav.outerHeight() + this.header.outerHeight();\n\n this.sections.each((i, item) => {\n const currentSection = $(item);\n const mt = parseInt(currentSection.css('margin-top'), 10);\n const pt = parseInt(currentSection.css('padding-top'), 10);\n const extraOffset = (mt > 0 && pt === 0) ? mt : 0;\n const sectionTop = currentSection.offset().top - extraOffset;\n\n if (scrollPosition >= sectionTop) {\n const link = this.sectionsArr[currentSection.attr('id')];\n if (!link.hasClass('active')) {\n this.navLinks.removeClass('active');\n link.addClass('active');\n this.scrollNavWrapper(link);\n }\n return false;\n }\n });\n }\n\n scrollNavWrapper(link = false) {\n if (!link || !link.length ) {\n return;\n }\n const wrapper = this.nav.find('.inpage-nav__nav');\n const wrapperBounding = wrapper[0].getBoundingClientRect();\n const bounding = link[0].getBoundingClientRect();\n const offsetRight = bounding.right;\n const offsetLeft = bounding.left;\n const staticOffset = 0;\n\n const condLeft = offsetLeft - staticOffset < wrapperBounding.left;\n const condRight = offsetRight + staticOffset > wrapperBounding.right;\n\n let offset = 0;\n if (condLeft) {\n offset = wrapper.scrollLeft() + offsetLeft + staticOffset - wrapperBounding.left;\n } else if (condRight) {\n offset = wrapper.scrollLeft() + offsetRight + staticOffset - wrapperBounding.right;\n }\n\n if (condRight || condLeft) {\n wrapper.stop().animate({\n scrollLeft: parseInt(offset, 10),\n }, 200);\n }\n }\n\n scrolled() {\n if (!this.nav.length || this.body.hasClass('menu-open')) {\n return\n }\n\n this.stickNav();\n this.highlightNavItem();\n }\n\n hideOutsideClick(e) {\n if (this.menuTrigger.hasClass('active') && !this.menuTrigger.is(e.target) && this.menu.has(e.target).length === 0 && !this.menu.is(e.target)) {\n this.menuTrigger.removeClass('active');\n }\n }\n}\n\nexport default new InpageNav;\n","const $ = jQuery.noConflict();\n\nclass MegaMenu {\n constructor() {\n this.header = $('.main-header');\n this.menuItems = this.header.find('.main-header__main-nav > ul > li > a');\n this.megaMenu = this.menuItems.next('.mega-menu');\n }\n\n init() {\n this.menuItems.on('click', this.toggleMegaMenu.bind(this));\n this.menuItems.hover( (e) => {\n this.menuItems.addClass('faded');\n $(e.target).removeClass('faded');\n }, () => {\n this.menuItems.removeClass('faded');\n });\n }\n\n toggleMegaMenu(e) {\n const item = $(e.delegateTarget);\n const megaMenu = item.next('.mega-menu');\n\n if (!megaMenu.length) {\n return;\n }\n\n e.preventDefault();\n if (megaMenu.hasClass('active')) {\n this.hideMegaMenu();\n return;\n }\n this.hideMegaMenu();\n this.showMegaMenu(item, megaMenu);\n }\n\n showMegaMenu(item, megaMenu) {\n this.menuItems.addClass('inactive');\n\n item.removeClass('inactive').addClass('active').parent().addClass('active');\n megaMenu.addClass('active');\n }\n\n hideMegaMenu() {\n this.menuItems.removeClass('inactive active');\n this.megaMenu.removeClass('active').parent().removeClass('active');\n }\n}\n\nexport default new MegaMenu();\n","import ScreenLock from '../__utils/screenLock';\nimport Search from '../__page/Search';\nimport InpageNav from '../__page/InpageNav';\nimport MegaMenu from './MegaMenu';\n\nconst $ = jQuery.noConflict();\n\nclass Header {\n constructor() {\n this.body = $('body');\n this.header = $('.main-header');\n this.alertBar = this.header.find('#header-alert-bar');\n this.menu = this.header.find('.main-header__menu');\n this.menuTrigger = this.header.find('.main-header__menu-trigger');\n\n // Variables\n this.mq = window.matchMedia('(max-width: 1199px)');\n }\n\n init() {\n this.resized();\n\n this.menuTrigger.on('click', this.toggleMenu.bind(this));\n\n if (this.alertBar.length) {\n this.alertBar.find('.alert-bar__close').on('click', () => {\n this.setAlertCookie()\n $('body').removeClass('alert-bar-on');\n this.alertBar.remove();\n this.resized();\n InpageNav.scrolled(true);\n });\n }\n\n this.mq.addListener((mq) => {\n if (mq.matches) this.closeMenu();\n });\n }\n\n setAlertCookie() {\n var now = new Date();\n var time = now.getTime();\n time += 24 * 3600 * 1000; // 24 hours\n now.setTime(time);\n document.cookie = \n 'hideAlertBar=1' + \n '; expires=' + now.toUTCString() + \n '; path=/';\n }\n\n toggleMenu() {\n if (this.menuTrigger.hasClass('active')) {\n this.closeMenu();\n } else {\n this.openMenu();\n }\n }\n\n openMenu() {\n this.body.addClass('menu-open');\n Search.closeSearch();\n ScreenLock.lock();\n this.menuTrigger.addClass('active').children('.text').text(this.menuTrigger.data('close'));\n this.menu.addClass('active');\n this.setMenuHeight();\n }\n\n closeMenu() {\n this.body.removeClass('menu-open');\n this.menuTrigger.removeClass('active').children('.text').text(this.menuTrigger.data('open'));\n this.menu.removeClass('active');\n MegaMenu.hideMegaMenu();\n ScreenLock.unlock();\n }\n\n setMenuHeight() {\n if (this.mq.matches) {\n return;\n }\n\n //const height = window.innerHeight - this.header.outerHeight();\n\n //this.menu.css('height', height);\n }\n\n resized() {\n this.setMenuHeight();\n }\n\n keyDown(e) {\n if (e.keyCode === 27 && this.menu.hasClass('active')) {\n this.closeMenu();\n }\n }\n}\n\nexport default new Header();\n","const $ = jQuery.noConflict();\n\nclass MenuMobile {\n constructor() {\n this.header = $('.main-header');\n this.menuItems = this.header.find('.main-header__main-nav-mobile > ul > li > a');\n this.megaMenu = this.menuItems.next('.mega-menu');\n\n // Variables\n this.time = 200;\n }\n\n init() {\n this.menuItems.on('click', this.toggleMegaMenu.bind(this));\n }\n\n toggleMegaMenu(e) {\n const item = $(e.delegateTarget);\n const megaMenu = item.next('.mega-menu');\n\n if (!megaMenu.length) {\n return;\n }\n\n e.preventDefault();\n if (megaMenu.hasClass('active')) {\n this.hideMegaMenu();\n return;\n }\n this.hideMegaMenu();\n this.showMegaMenu(item, megaMenu);\n }\n\n showMegaMenu(item, megaMenu) {\n item.addClass('active');\n megaMenu.addClass('active').stop().slideDown(this.time);\n }\n\n hideMegaMenu() {\n this.menuItems.removeClass('active');\n this.megaMenu.removeClass('active').stop().slideUp(this.time);\n }\n}\n\nexport default new MenuMobile();\n","import ScreenLock from '../__utils/screenLock';\nimport Search from '../__page/Search';\nimport MenuMobile from './MenuMobile';\n\nconst $ = jQuery.noConflict();\n\nclass HeaderMobile {\n constructor() {\n this.body = $('body');\n this.header = $('.main-header');\n this.menu = this.header.find('.main-header__menu-mobile');\n this.menuTrigger = this.header.find('.main-header__menu-mobile-trigger');\n this.form = this.header.find('.main-header__form--mobile');\n this.formTrigger = this.header.find('.main-header__mobile-link--cye');\n this.formBack = this.form.find('.main-header__form-back');\n\n // Variables\n this.mq = window.matchMedia('(max-width: 1199px)');\n }\n\n init() {\n this.resized();\n\n this.menuTrigger.on('click', this.toggleMenu.bind(this));\n this.formBack.on('click', () => {\n this.form.removeClass('active');\n });\n this.formTrigger.on('click', () => {\n this.form.addClass('active');\n });\n\n this.mq.addListener((mq) => {\n if (!mq.matches) this.closeMenu();\n });\n }\n\n toggleMenu() {\n if (this.menuTrigger.hasClass('active')) {\n this.closeMenu();\n } else {\n this.openMenu();\n }\n }\n\n openMenu() {\n this.body.addClass('menu-open');\n Search.closeSearch();\n ScreenLock.lock();\n this.menuTrigger.addClass('active');\n this.menu.addClass('active');\n this.setMenuHeight();\n }\n\n closeMenu() {\n this.body.removeClass('menu-open');\n this.menuTrigger.removeClass('active');\n this.menu.removeClass('active');\n MenuMobile.hideMegaMenu();\n ScreenLock.unlock();\n }\n\n setMenuHeight() {\n if (!this.mq.matches) {\n return;\n }\n\n const height = window.innerHeight - this.header.outerHeight();\n\n this.menu.css('height', height);\n }\n\n resized() {\n this.setMenuHeight();\n }\n}\n\nexport default new HeaderMobile();\n","const $ = jQuery.noConflict();\n\nclass Tables {\n constructor() {\n this.tables = $('table.tablepress');\n }\n\n init() {\n this.toggleShadow();\n }\n\n toggleShadow() {\n this.tables.each((i, el) => {\n const item = $(el);\n const scrollWrapper = item.closest('.tablepress-scroll-wrapper');\n\n scrollWrapper.removeClass('has-scroll');\n if (item[0].offsetWidth > scrollWrapper.width()) {\n scrollWrapper.addClass('has-scroll');\n }\n });\n }\n}\n\nexport default new Tables();\n","const $ = jQuery.noConflict();\n\nconst forms = {\n wrapper: $('.gform_wrapper'),\n hbsptWrapper: $('.hbspt-form'),\n select() {\n // Apply select2 plugin to gform select fields\n this.renderFields( this.wrapper.find('select:not([class*=select2])') );\n },\n hubspot() {\n // Add listener for after hubspot renders.\n if ( this.hbsptWrapper.length ) {\n window.addEventListener('message', event => {\n if ( event.data.type === 'hsFormCallback' && event.data.eventName === 'onFormReady' ) {\n this.renderFields( this.hbsptWrapper.find('select') );\n }\n });\n }\n },\n renderFields( selectFields ) {\n selectFields.each((i, select) => {\n const selectSingle = $(select);\n const placeholder = selectSingle.children('.gf_placeholder');\n selectSingle.select2({\n minimumResultsForSearch: 999,\n placeholder: placeholder.length ? placeholder.text() : 'Select an option',\n width: '100%',\n escapeMarkup: function (m) { return m; }\n });\n\n selectSingle.on('select2:close', () => {\n $('.select2-selection--single').blur();\n });\n\n $(window).on('resize', () => {\n selectSingle.select2('close');\n });\n });\n }\n};\n\nexport default forms;","const $ = jQuery.noConflict();\n\nclass Slider {\n constructor(sel, arrows = true, fade = false, num = 1, tabNum = 1, slideSpeed = 600, variableWidth = false, centerMode = false, dots = false, autoplay = false, infiniteScroll = true) {\n this.selector = sel;\n this.arrows = arrows;\n this.num = num;\n this.tabNum = tabNum;\n this.variableWidth = variableWidth;\n this.slideSpeed = slideSpeed;\n this.fade = fade;\n this.centerMode = centerMode;\n this.dots = dots;\n this.autoplay = autoplay;\n\t\tthis.infiniteScroll = infiniteScroll;\n }\n\n refresh() {\n $(this.selector).slick('refresh');\n }\n\n init() {\n const {\n arrows,\n num,\n fade,\n tabNum,\n slideSpeed,\n variableWidth,\n centerMode,\n dots,\n autoplay,\n\t\t\tinfiniteScroll\n } = this;\n\n function slideSettings() {\n // Set max-width to slider captions when variableWidth = true\n $(this).on('setPosition', () => {\n $(this).find('figcaption').each((i, item) => {\n const caption = $(item);\n const width = caption.prev('img').width();\n\n if (window.matchMedia('screen and (max-width: 991px)').matches ) {\n caption.css('max-width', width > 0 ? `${width}px` : '');\n } else {\n caption.css('max-width', width > 0 ? `${645}px` : '');\n }\n });\n });\n $(this).slick({\n dots,\n autoplay,\n autoplaySpeed: 5000,\n arrows,\n infinite: infiniteScroll,\n slidesToShow: num,\n centerMode,\n slidesToScroll: 1,\n variableWidth,\n fade,\n pauseOnHover: false,\n speed: slideSpeed,\n responsive: [\n {\n breakpoint: 992,\n settings: {\n slidesToShow: tabNum,\n slidesToScroll: 1,\n },\n },\n {\n breakpoint: 767,\n settings: {\n slidesToShow: tabNum,\n slidesToScroll: 1,\n },\n },\n ],\n });\n\n $(this).on('beforeChange', (event, slick, currentSlide, nextSlide) => {\n const slide = $( slick.$slides.get(currentSlide) );\n if ( slide.find('iframe').length ) {\n slide.find('iframe').attr('src', '');\n slide.find('.iframe-wrapper__overlay').show();\n }\n } )\n }\n $(this.selector).each(slideSettings);\n }\n}\nconst RelatedEventsSlider = new Slider('.related-events__slider', false, false, 3, 1, 600, false, false, true);\nconst HeroSlider = new Slider('.page-hero__slider', true, true, 1, 1, 600, false, false, true, true);\nconst HeroEventsSlider = new Slider('.events-hero__slider', false, false, 3, 1, 600, false, false, true);\nconst SimpleSlider = new Slider('.bc-gallery__slider', true, false, 3, 3, 600, true, true);\nconst LightboxSlider = new Slider('.lightbox-gallery__slider',true, false, 1, 1, 600, true, true, false, false, false);\nconst HeroNewsSlider = new Slider('.news-hero__slider', false, false, 2, 1, 600, false, false, true);\nconst FactsSlider = new Slider('.block-facts-collage__slider', false, false, 1, 1, 600, false, false, true);\nconst UpcomingGamesSlider = new Slider('.block-upcoming-games__mobile', false, false, 1, 1, 600, false, false, true);\n\n\nif ( $( '.ath-hero__slider' ).length ) {\n $('.ath-hero__slider').slick({\n autoplay: true,\n });\n}\n\nif ( $( '.block-news__news-wrapper' ).length ) {\n\t$( '.block-news__news-wrapper' ).each((index, element) => {\n\t\tconsole.log(element);\n\t\tif ( $(element).children('.block-news__news-item').length > 0 ) {\n\t\t\tlet number_of_slides_to_show_desktop = 1;\n\t\t\tlet number_of_slides_to_scroll_desktop = 1;\n\t\t\tlet show_dots_desktop = false;\n\t\t\tlet number_of_slides_to_show_tablet = 1;\n\t\t\tlet number_of_slides_to_scroll_tablet = 1;\n\t\t\tlet show_dots_tablet = false;\n\t\t\tlet number_of_slides_to_show_mobile = 1;\n\t\t\tlet number_of_slides_to_scroll_mobile = 1;\n\t\t\tlet show_dots_mobile = false;\n\t\t\tif ( $(element).children('.block-news__news-item').length >= 3) {\n\t\t\t\tnumber_of_slides_to_show_desktop = 3;\n\t\t\t\tnumber_of_slides_to_scroll_desktop = 3;\n\t\t\t\tshow_dots_desktop = true;\n\t\t\t\tnumber_of_slides_to_show_tablet = 2;\n\t\t\t\tnumber_of_slides_to_scroll_tablet = 2;\n\t\t\t\tshow_dots_tablet = true;\n\t\t\t\tnumber_of_slides_to_show_mobile = 1;\n\t\t\t\tnumber_of_slides_to_scroll_mobile = 1;\n\t\t\t\tshow_dots_mobile = true;\n\t\t\t} else if ( $(element).children('.block-news__news-item').length === 2 ) {\n\t\t\t\tnumber_of_slides_to_show_desktop = 2;\n\t\t\t\tnumber_of_slides_to_scroll_desktop = 2;\n\t\t\t\tshow_dots_desktop = false;\n\t\t\t\tnumber_of_slides_to_show_tablet = 2;\n\t\t\t\tnumber_of_slides_to_scroll_tablet = 2;\n\t\t\t\tshow_dots_tablet = false;\n\t\t\t\tnumber_of_slides_to_show_mobile = 1;\n\t\t\t\tnumber_of_slides_to_scroll_mobile = 1;\n\t\t\t\tshow_dots_mobile = true;\n\t\t\t}\n\t\t\tconsole.log(number_of_slides_to_show_desktop, show_dots_desktop);\n\t\t\t$(element).slick({\n\t\t\t\tautoplaySpeed: 10000,\n\t\t\t\tarrows: false,\n\t\t\t\tdots: show_dots_desktop,\n\t\t\t\tinfinite: false,\n\t\t\t\tslidesToShow: number_of_slides_to_show_desktop,\n\t\t\t\tslidesToScroll: number_of_slides_to_scroll_desktop,\n\t\t\t\tpauseOnHover: false,\n\t\t\t\tautoplay: false,\n\t\t\t\tresponsive: [\n\t\t\t\t\t{\n\t\t\t\t\t\tbreakpoint: 1000,\n\t\t\t\t\t\tsettings: {\n\t\t\t\t\t\t\tdots: show_dots_tablet,\n\t\t\t\t\t\t\tslidesToShow: number_of_slides_to_show_tablet,\n\t\t\t\t\t\t\tslidesToScroll: number_of_slides_to_scroll_tablet,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tbreakpoint: 600,\n\t\t\t\t\t\tsettings: {\n\t\t\t\t\t\t\tdots: show_dots_mobile,\n\t\t\t\t\t\t\tslidesToShow: number_of_slides_to_show_mobile,\n\t\t\t\t\t\t\tinfinite: false,\n\t\t\t\t\t\t\tslidesToScroll: number_of_slides_to_scroll_mobile,\n\t\t\t\t\t\t\tautoplay: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t}\n\t});\n \n var newsContainer = $('.block-news .container');\n function isElementInViewport (el) {\n \n // Special bonus for those using jQuery\n if (typeof jQuery === \"function\" && el instanceof jQuery) {\n el = el[0];\n }\n \n var rect = el.getBoundingClientRect();\n \n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && /* or $(window).height() */\n rect.right <= (window.innerWidth || document.documentElement.clientWidth) /* or $(window).width() */\n );\n }\n \n function onVisibilityChange(el, callback) {\n var old_visible;\n return function () {\n var visible = isElementInViewport(el);\n if (visible != old_visible) {\n old_visible = visible;\n if (typeof callback == 'function') {\n callback(visible);\n }\n }\n }\n }\n \n var handler = onVisibilityChange($('.block-news__header'), function(visible) {\n if ( visible ) {\n newsContainer.addClass('fadeInUp');\n }\n });\n \n \n // jQuery\n $(window).on('DOMContentLoaded load resize scroll', handler);\n}\n\n\nvar setProgressBar = (videoSlider, breakpoint, slideCount, slidesToShow) => {\n\tconsole.log( 'progress: ' + breakpoint + ',' + slideCount + ',' + slidesToShow );\n let incrementAmount = 1 / slideCount * 100;\n\n if ( null === breakpoint || breakpoint > 1000 ) {\n let progressBarWidth = slidesToShow / slideCount * 100; \n if ( slideCount > 1 && slideCount !== slidesToShow ) {\n videoSlider.find('.block-video-slider__progress-inner').width( progressBarWidth + '%' );\n videoSlider.find('.block-video-slider__footer').show();\n } else {\n videoSlider.find('.block-video-slider__footer').hide();\n }\n } else if ( breakpoint > 601 ) {\n let responsiveSlidesToShow = slidesToShow > 3 ? 3 : slidesToShow;\n let progressBarWidth = responsiveSlidesToShow / slideCount * 100;\n \n if ( ( slideCount > 1 && slideCount !== slidesToShow ) || ( slideCount === 4 && slidesToShow === 4 ) ) {\n videoSlider.find('.block-video-slider__progress-inner').width( progressBarWidth + '%' );\n videoSlider.find('.block-video-slider__footer').show();\n } else {\n videoSlider.find('.block-video-slider__footer').hide();\n }\n } else {\n let progressBarWidth = 2 / slideCount * 100;\n\t\tconsole.log('width: ' + progressBarWidth);\n \n if ( ( slideCount > 1 && slideCount !== slidesToShow ) || ( slideCount === 3 && slidesToShow === 3 ) || ( slideCount === 4 && slidesToShow === 4 ) ) {\n videoSlider.find('.block-video-slider__progress-inner').width( progressBarWidth + '%' );\n videoSlider.find('.block-video-slider__footer').show();\n } else {\n videoSlider.find('.block-video-slider__footer').hide();\n }\n }\n}\n\n$('.block-video-slider').each(function() {\n let videoSlider = $( this );\n if ( videoSlider.length ) {\n let slideCount = videoSlider.find('.block-video-slider__slide').length\n\t\tlet maxColumns = videoSlider.data('slides');\n\t\tlet slidesToShow = maxColumns > slideCount ? slideCount : maxColumns;\n\t\tlet slidesToShowTenHundred = 3;\n\t\tlet slidesToShowSixHundred = 2;\n\n\t\tif ('2' == slidesToShow) {\n\t\t\tslidesToShowTenHundred = 2;\n\t\t}\n\n\t\tif ('1' == slidesToShow) {\n\t\t\tslidesToShowTenHundred = 1;\n\t\t\tslidesToShowSixHundred = 1;\n\t\t}\n\n let startWidth = window.innerWidth > 0 ? window.innerWidth : screen.width;\n let incrementAmount = 1 / slideCount * 100;\n\t\t\n setProgressBar( videoSlider, startWidth, slideCount, slidesToShow );\n\n videoSlider.find('.block-video-slider__videos').slick({\n arrows: true,\n infinite: false,\n slidesToShow: slidesToShow,\n slidesToScroll: 1,\n pauseOnHover: false,\n prevArrow: videoSlider.find('.block-video-slider__arrow--prev'),\n nextArrow: videoSlider.find('.block-video-slider__arrow--next'),\n responsive: [\n {\n breakpoint: 1000,\n settings: {\n slidesToShow: slidesToShowTenHundred,\n },\n },\n {\n breakpoint: 600,\n settings: {\n slidesToShow: slidesToShowSixHundred,\n },\n },\n ],\n });\n\n // Move progress bar.\n videoSlider.on( 'beforeChange', (event, slick, currentSlide, nextSlide) => {\n videoSlider.find('.block-video-slider__progress-inner').css( 'left', incrementAmount * nextSlide + '%' );\n } )\n\n videoSlider.on( 'breakpoint', (event, slick, breakpoint) => {\n setProgressBar( videoSlider, breakpoint, slideCount, slidesToShow );\n });\n }\n});\n\n\nexport { SimpleSlider, LightboxSlider, HeroSlider, HeroNewsSlider, FactsSlider, HeroEventsSlider, UpcomingGamesSlider, RelatedEventsSlider };\n","const $ = jQuery.noConflict();\n\nclass LogosSlider {\n constructor() {\n this.slider = $('.university-logos__slider');\n this.slides = this.slider.find('.slick-slide');\n\n }\n init() {\n this.initSlider();\n }\n\n initSlider() {\n this.slider.slick({\n dots: false,\n arrows: false,\n slidesToShow: 4,\n inifinite: true,\n fade: false,\n pauseOnHover: false,\n speed: 600,\n autoplay: true,\n pauseOnFocus: false,\n autoplaySpeed: 4000,\n cssEase: 'linear',\n responsive: [\n {\n breakpoint: 1200,\n settings: {\n slidesToShow: 3,\n slidesToScroll: 1,\n },\n },\n {\n breakpoint: 991,\n settings: {\n slidesToShow: 4,\n slidesToScroll: 1,\n },\n },\n {\n breakpoint: 575,\n settings: {\n variableWidth: true,\n centerMode: true,\n slidesToShow: 3,\n slidesToScroll: 1,\n },\n },\n ],\n\n });\n }\n\n refresh() {\n this.slider.slick('refresh');\n }\n\n}\n\nexport default new LogosSlider();\n","const $ = jQuery.noConflict();\n\nclass Accordions {\n constructor(trigger) {\n this.trigger = $(trigger);\n this.accordionAllButton = $('.single-accordion__all-button');\n }\n init() {\n this.bindEvents();\n }\n bindEvents() {\n this.trigger.on('click', this.toggleAccordion);\n this.accordionAllButton.on('click', this.toggleAccordionAll);\n }\n toggleAccordion() {\n $(this).parent().toggleClass('active');\n $(this).next().stop().slideToggle(250);\n }\n toggleAccordionAll() {\n var accordionID = $(this).attr('data-target');\n\n if ($(this).hasClass('expanded')) {\n $(this).removeClass('expanded');\n $('#' + accordionID).find('.single-accordion__content').slideUp(250);\n $('#' + accordionID).find('.single-accordion').removeClass('active');\n } else {\n $(this).addClass('expanded');\n $('#' + accordionID).find('.single-accordion__content').slideDown(250);\n $('#' + accordionID).find('.single-accordion').addClass('active');\n }\n }\n}\n\nexport default new Accordions('.single-accordion__title');\n","import Tables from \"../__utils/Tables\";\n\nconst $ = jQuery.noConflict();\n\nclass Tabs {\n constructor() {\n this.tabs = $('.block-tabs');\n this.tabsLinksList = this.tabs.find('.block-tabs__link-list');\n this.tabsLinks = this.tabs.find('.block-tabs__link-inner');\n this.tabsContent = this.tabs.find('.block-tabs__tab-content');\n }\n\n init() {\n this.tabsLinks.on('click', this.toggleTab.bind(this));\n this.toggleShadow();\n }\n\n toggleTab(e) {\n e.preventDefault();\n\n this.tabsLinks.removeClass('active');\n this.tabsContent.removeClass('active');\n\n const link = $(e.delegateTarget).addClass('active');\n this.tabsContent.filter((i, el) => $(el).data('tab-id') === link.attr('href')).addClass('active');\n\n Tables.toggleShadow();\n }\n\n toggleShadow() {\n this.tabsLinksList.each((i, el) => {\n const item = $(el);\n const scrollWrapper = item.closest('.block-tabs__scroll-wrapper');\n scrollWrapper.removeClass('has-scroll');\n if (item[0].offsetWidth > scrollWrapper.width()) {\n scrollWrapper.addClass('has-scroll');\n }\n });\n }\n}\n\nexport default new Tabs();\n","import screenLock from '../__utils/screenLock';\nconst $ = jQuery.noConflict();\n\nclass LightboxGallery {\n constructor() {\n this.lightboxes = $('.lightbox-gallery__slider');\n this.lightboxOpen = $('.lightbox-gallery__single-thumb');\n this.lightboxClose = $('.lightbox-gallery__close');\n }\n\n init() {\n this.bindEvents();\n }\n\n bindEvents() {\n this.lightboxOpen.on('click', this.openLightbox);\n this.lightboxClose.on('click', this.closeLightbox);\n }\n\n openLightbox(e) {\n e.preventDefault();\n const slideNum = parseInt(this.hash.slice(1), 10);\n const lightboxBlock = $(this).closest('.block-gallery-lightbox');\n\n lightboxBlock.find('.lightbox-gallery__gallery-wrapper').addClass('active');\n lightboxBlock.find('.lightbox-gallery__slider').slick('slickGoTo', slideNum, true);\n if ( $(this).parents('.strategies-lightbox') ) {\n console.log( $(this).parents('.strategies-lightbox__bottom-content') );\n window.stratScrollTop = $(this).parents('.strategies-lightbox__bottom-content').scrollTop();\n $(this).parents('.strategies-lightbox').addClass('inner-gallery-open');\n } else {\n screenLock.lock();\n }\n }\n\n closeLightbox() {\n const lightboxWrapper = $('.lightbox-gallery__gallery-wrapper.active');\n lightboxWrapper.removeClass('active');\n\n if ( $(this).parents('.strategies-lightbox') ) {\n $(this).parents('.strategies-lightbox').removeClass('inner-gallery-open');\n $(this).parents('.strategies-lightbox__bottom-content').scrollTop( window.stratScrollTop );\n } else {\n screenLock.unlock();\n }\n }\n\n keyDown(e) {\n const lightboxWrapper = $('.lightbox-gallery__gallery-wrapper.active');\n\n if (e.keyCode == 27 && lightboxWrapper.length > 0) {\n this.closeLightbox();\n }\n }\n}\nexport default new LightboxGallery();\n\n","\nclass HeroBackgroundVideo {\n constructor() {\n this.videoBackground = document.querySelectorAll('.video-bg:not(.video-bg--yt)');\n this.playerYT = document.querySelectorAll('.video-bg--yt');\n }\n\n init() {\n this.setRatio();\n if ( this.playerYT ){\n this.ytPlayer();\n }\n }\n\n setRatio() {\n this.videoBackground.forEach( (el) => {\n const iframe = el.querySelector('iframe');\n if ( iframe ) {\n\n iframe.dataset.ratio = (parseInt(iframe.clientWidth) / parseInt(iframe.clientHeight)).toFixed(2);\n iframe.removeAttribute('width');\n iframe.removeAttribute('height');\n\n let height = (el.parentNode.clientHeight).toFixed(2);\n const newWidth = (height * iframe.dataset.ratio).toFixed(2);\n\n iframe.style.width = `${newWidth}px`;\n iframe.style.height = `${height}px`;\n\n if ( window.innerWidth > newWidth) {\n iframe.style.width = `${parseInt(window.innerWidth)}px`;\n iframe.style.height = `${parseInt(iframe.dataset.ratio * window.innerWidth)}px`;\n }\n }\n });\n }\n\n ytPlayer() {\n let wrapper = jQuery('.playerYT');\n let options = {\n showControls: false,\n loop: true,\n mute: true\n };\n wrapper.YTPlayer(options);\n }\n\n resized() {\n this.setRatio();\n }\n\n}\n\nexport default new HeroBackgroundVideo();","import screenLock from '../__utils/screenLock';\n\nclass VideoLightbox {\n constructor() {\n this.btnOpenLightbox = document.querySelectorAll('.js-play-video');\n this.lightboxClose = document.querySelectorAll('.video-lightbox__close');\n this.lightboxWrapper = document.querySelector('.video-lightbox__wrapper');\n this.player = document.getElementById('player');\n this.isIframe = false;\n }\n\n init() {\n this.btnOpenLightbox.forEach(btn => btn.addEventListener('click', this.openLightbox.bind(this)));\n this.lightboxClose.forEach(btn => btn.addEventListener('click', this.closeLightbox.bind(this)));\n\n }\n\n openLightbox(e) {\n e.preventDefault();\n const url = e.currentTarget.dataset.video;\n\n if ( url ) {\n if ( !this.isIframe ) {\n const iframe = document.createElement('iframe');\n this.player.appendChild(iframe);\n this.isIframe = true;\n }\n const iframeVideo = this.player.querySelector('iframe');\n\n if (this.isYT(url)) {\n var match = url.match(/^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=)([^#\\&\\?]*).*/);\n if (match && match[2].length == 11) {\n iframeVideo.setAttribute('allow','autoplay');\n iframeVideo.src = '//www.youtube.com/embed/' + match[2] + '?autoplay=1';\n }\n } else if ( this.isVimeo(url) ) {\n iframeVideo.setAttribute('allow','autoplay');\n iframeVideo.src = this.getVimeoEmbedUrl(url);\n iframeVideo.src += '?autoplay=1';\n } else if (this.isWistia(url)) {\n const id = this.isWistia(url);\n iframeVideo.src = `https://fast.wistia.net/embed/iframe/${id}`;\n iframeVideo.src += '?volume=1';\n iframeVideo.src += '&muted=0';\n iframeVideo.src += '&autoPlay=1';\n }\n this.lightboxWrapper.classList.add('active');\n screenLock.lock();\n }\n }\n\n closeLightbox() {\n this.player.querySelector('iframe').setAttribute('src','');\n this.lightboxWrapper.classList.remove('active');\n screenLock.unlock();\n }\n\n\n keyDown(e) {\n const lightboxWrapper = document.querySelector('.video-lightbox__wrapper.active');\n if (e.keyCode == 27 && lightboxWrapper) {\n this.closeLightbox();\n }\n }\n\n isYT(url) {\n const yt = /^(?:https?:\\/\\/)?(?:www\\.)?(?:youtu\\.be\\/|youtube\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=))((\\w|-){11})(?:\\S+)?$/;\n return (url.match(yt)) ? RegExp.$1 : false;\n }\n\n isVimeo(url) {\n const vimeo = /(https?:\\/\\/)?(www\\.)?(player\\.)?vimeo\\.com\\/([a-z]*\\/)*([0-9]{6,11})[?]?.*/;\n return (url.match(vimeo)) ? RegExp.$5 : false;\n }\n\n isWistia(url) {\n const wistia = /(?:(?:medias|iframe)\\/|wvideo=)([\\w-]+)/;\n return (url.match(wistia)) ? RegExp.$1 : false;\n }\n\n getVimeoEmbedUrl(url) {\n let matches = url.match(/(https?:\\/\\/)?(www\\.)?(player\\.)?vimeo\\.com\\/([a-z]*\\/)*([0-9]{6,11})[?]?.*/);\n if ( null !== matches ) {\n return 'https://player.vimeo.com/video/' + matches[5];\n }\n }\n}\nexport default new VideoLightbox();\n\n","const $ = jQuery.noConflict();\n\nclass CYEAccordion {\n constructor() {\n this.block = $('.block-cye');\n this.trigger = this.block.find('.block-cye__trigger');\n }\n\n init() {\n this.trigger.on('click', this.toggleContent);\n }\n\n toggleContent() {\n const trigger = $(this);\n const content = trigger.closest('.block-cye').find('.block-cye__wrapper');\n\n if (trigger.hasClass('active')) {\n trigger.removeClass('active').children('span').text(trigger.data('open'));\n content.slideUp(200);\n } else {\n trigger.addClass('active').children('span').text(trigger.data('close'));\n content.slideDown(200);\n }\n }\n}\n\nexport default new CYEAccordion();\n","const paginationBuilder = (postType, currentPage, lastPage, midsize = 1) => {\n const current = parseInt(currentPage);\n const last = parseInt(lastPage);\n const mid = parseInt(midsize);\n const html = [];\n const range = [];\n\n\n if (current >= 1 && last > 1 && current <= last) {\n for (let i = Math.max(2, current - mid); i <= Math.min(last - 1, current + mid); i++) {\n range.push(i);\n }\n\n if (current - mid > 2) {\n range.unshift('...');\n }\n\n if (current + mid < last - 1) {\n range.push('...');\n }\n\n range.unshift(1);\n range.push(last);\n\n // Create Pagination HTML\n range.map((item) => {\n if (typeof item !== 'string') {\n html.push(`${item}`);\n } else {\n html.push(`${item}`);\n }\n });\n }\n\n return html.join('');\n}\n\nexport default paginationBuilder;\n","import ScreenLock from '../__utils/screenLock';\nimport paginationBuilder from '../__utils/paginationBuilder';\n\nconst $ = jQuery.noConflict();\n\nclass PostsAjax {\n constructor(page, action) {\n // General\n this.page = $(page);\n this.action = action;\n this.loader = this.page.find('.loader');\n this.postsContent = this.page.find('.posts-content');\n this.postsWrapper = this.postsContent.find('.posts-cards__cards');\n this.postType = 'post';\n\n // Variables\n this.mobileViewport = window.matchMedia('(max-width: 991px)');\n this.transitionTime = 200;\n\n\n // Filters\n this.filtersWrapper = this.postsContent.find('.posts-filters');\n this.filterTrigger = this.filtersWrapper.find('.posts-filters__filter-trigger');\n this.filterList = this.filtersWrapper.find('.posts-filters__filter-list-outer');\n this.filtersInner = this.filtersWrapper.find('.posts-filters__inner');\n this.filtersInnerWrapper = this.filtersWrapper.find('.posts-filters__inner-wrapper');\n\n this.selectedItems = this.filtersWrapper.find('.selected-items');\n this.filtersSelected = this.filtersWrapper.find('.posts-filters__selected');\n this.filtersSelectedNumber = this.filtersSelected.find('.posts-filters__selected-number');\n this.clearTrigger = this.postsContent.find('.posts-filters__selected-reset');\n\n this.mobileTrigger = this.postsContent.find('.posts-filters__mobile-trigger');\n this.mobileCloseTrigger = this.postsContent.find('.posts-filters__mobile-close');\n this.mobileSelected = this.postsContent.find('.posts-filters__mobile-selected');\n this.filterInputs = this.filtersInner.find('.posts-filters__filter-list-item input[type=checkbox]');\n\n // Search form\n this.form = this.postsContent.find('.posts-content__search');\n\n //pagination\n this.pagination = this.postsContent.find('.pagination-ajax');\n\n // Data Passed\n this.types = [];\n this.categories = [];\n this.divisions = [];\n }\n\n init() {\n if (this.page.length) {\n this.triggerEvents();\n this.addUrlListener();\n this.applyTerms(true);\n this.showSelectedInputs();\n }\n }\n\n addUrlListener() {\n window.addEventListener('popstate', function() {\n location.reload(false);\n });\n }\n\n triggerEvents() {\n // Show mobile filters\n this.mobileTrigger.on('click', (e) => {\n e.preventDefault();\n this.filtersInnerWrapper.addClass('active');\n ScreenLock.lock();\n });\n\n // Close mobile filters\n this.mobileCloseTrigger.on('click', (e) => {\n e.preventDefault();\n this.filtersInnerWrapper.removeClass('active');\n ScreenLock.unlock();\n });\n\n\n\n // // Clear filters\n this.clearTrigger.on('click', (e) => {\n e.preventDefault();\n this.clearFilters();\n });\n\n // Toggle single filter terms dropdown\n this.filterTrigger.on('click', (e) => {\n e.preventDefault();\n this.toggleFilter(e.delegateTarget);\n });\n\n // Apply filter term\n this.filterInputs.on('change', () => {\n this.applyTerms();\n });\n\n\n //Pagination\n this.pagination.on('click', 'a.page-numbers, a.pagination__arrow', (e) => {\n e.preventDefault();\n this.applyFilters($(e.target).attr('data-page'));\n });\n\n // Submit search form\n this.form.on('submit', (e) => {\n e.preventDefault();\n this.applyTerms();\n });\n\n\n // Hide filters on viewport change\n this.mobileViewport.addListener(() => {\n this.filtersInnerWrapper.removeClass('active');\n this.filterTrigger.removeClass('active');\n this.filterList.removeClass('active').css('display', '');\n ScreenLock.unlock();\n });\n }\n\n lockLayout() {\n this.loader.addClass('active');\n }\n\n unlockLayout() {\n this.loader.removeClass('active');\n }\n\n toggleFilter(item) {\n const trigger = $(item);\n const list = trigger.next();\n\n if (trigger.hasClass('active')) {\n if (!this.mobileViewport.matches) list.stop().slideUp(this.transitionTime);\n this.filtersInner.removeClass('active');\n trigger.removeClass('active');\n list.removeClass('active');\n } else {\n if (!this.mobileViewport.matches) list.stop().slideDown(this.transitionTime);\n this.filtersInner.addClass('active');\n trigger.addClass('active');\n list.addClass('active');\n }\n }\n\n clearFilters() {\n this.filterInputs.prop('checked', false);\n this.applyTerms();\n }\n\n applyTerms(initial) {\n this.types = [];\n this.categories = [];\n this.divisions = [];\n\n //type\n this.filterInputs.filter((i, e) => $(e).data('tax') === 'news_type' && $(e).is(':checked')).each((i, e) => {\n this.types.push($(e).data('id'));\n });\n\n this.filterInputs.filter((i, e) => $(e).data('tax') === 'category' && $(e).is(':checked')).each((i, e) => {\n this.categories.push($(e).data('id'));\n });\n\n this.filterInputs.filter((i, e) => $(e).data('tax') === 'news_division' && $(e).is(':checked')).each((i, e) => {\n this.divisions.push($(e).data('id'));\n });\n\n\n if ( !initial ) {\n this.applyFilters();\n }\n }\n\n showSelectedInputs() {\n const checkedInputsNumber = this.filtersInner.find('input[type=\"checkbox\"]:checked').length;\n if (checkedInputsNumber > 0) {\n this.filtersSelected.addClass('active');\n this.mobileSelected.addClass('active');\n this.filtersSelectedNumber.text( `(${checkedInputsNumber})`);\n this.mobileSelected.text(`${checkedInputsNumber}`);\n } else {\n this.filtersSelected.removeClass('active');\n this.mobileSelected.removeClass('active');\n this.filtersSelectedNumber.text( `(${0})`);\n this.mobileSelected.text('0');\n }\n\n this.filterTrigger.each((index, el) => {\n const checkedInputsFilter = $(el).parent().find('input[type=\"checkbox\"]:checked').length;\n if(checkedInputsFilter > 0) {\n $(el).find('.selected-items').addClass('active');\n $(el).find('.selected-items').text( `${checkedInputsFilter}`);\n }else{\n $(el).find('.selected-items').removeClass('active');\n $(el).find('.selected-items').text( `${0}`);\n }\n });\n }\n\n\n updatePagination(current, max) {\n const page = parseInt(current);\n const max_num_pages = parseInt(max);\n\n this.pagination.find('.pagination__numbers-wrapper').html(paginationBuilder(this.postType, page, max_num_pages));\n this.pagination.find('.prev').attr('data-page', page - 1);\n this.pagination.find('.next').attr('data-page', page + 1);\n\n if (page === 1) {\n this.pagination.find('.prev').addClass('disabled');\n } else {\n this.pagination.find('.prev').removeClass('disabled');\n }\n\n if (page === max_num_pages) {\n this.pagination.find('.next').addClass('disabled');\n } else {\n this.pagination.find('.next').removeClass('disabled');\n }\n\n if (max_num_pages < 2) {\n this.pagination.addClass('hidden');\n } else {\n this.pagination.removeClass('hidden');\n }\n }\n\n\n applyFilters(page = 1) {\n this.lockLayout();\n\n const dataArr = this.form.serializeArray();\n const term = dataArr[0].value;\n $.ajax({\n type: 'POST',\n url: WP.ajaxUrl,\n dataType: 'JSON',\n data: {\n action: this.action,\n types: this.types,\n categories: this.categories,\n divisions: this.divisions,\n term,\n baseUrl: this.postsContent.attr('data-url'),\n page\n },\n })\n .done((response) => {\n history.pushState(null, null, response.url);\n this.updatePagination(response.page, response.max_num_pages);\n this.showSelectedInputs();\n this.postsWrapper.html(response.posts_content);\n })\n .fail((errorResponse) => {\n console.log('Error: ', errorResponse);\n alert('An error has occurred, please check console for more informations');\n })\n .always(() => {\n this.unlockLayout();\n });\n }\n}\n\nconst postsFilters = new PostsAjax('body.blog', 'applyPostsFilters');\n\nexport default postsFilters;\n","import ScreenLock from '../__utils/screenLock';\nimport paginationBuilder from '../__utils/paginationBuilder';\n\nconst $ = jQuery.noConflict();\n\nclass EventsAjax {\n constructor(page, action) {\n // General\n this.page = $(page);\n this.action = action;\n this.loader = this.page.find('.loader');\n this.eventsContent = this.page.find('.events-content');\n this.eventsWrapper = this.eventsContent.find('.events-cards__cards');\n this.postType = 'tribe_events';\n this.date = this.eventsContent.attr('data-date');\n\n // Filters\n this.filtersWrapper = this.eventsContent.find('.events-filters');\n this.filterTrigger = this.filtersWrapper.find('.events-filters__filter-trigger');\n this.filterList = this.filtersWrapper.find('.events-filters__filter-list-outer');\n this.filtersInner = this.filtersWrapper.find('.events-filters__inner');\n\n this.selectedItems = this.filtersWrapper.find('.selected-items');\n this.filtersSelected = this.filtersWrapper.find('.events-filters__selected');\n this.filtersSelectedNumber = this.filtersSelected.find('.events-filters__selected-number');\n this.clearTrigger = this.eventsContent.find('.events-filters__selected-reset');\n\n this.mobileTrigger = this.eventsContent.find('.events-filters__mobile-trigger');\n this.mobileCloseTrigger = this.eventsContent.find('.events-filters__mobile-close');\n this.mobileSelected = this.eventsContent.find('.events-filters__mobile-selected');\n this.filterInputs = this.filtersInner.find('.events-filters__filter-list-item input[type=checkbox]');\n\n // Variables\n this.mobileViewport = window.matchMedia('(max-width: 991px)');\n this.transitionTime = 200;\n this.dateIsSelected = parseInt( this.filtersWrapper.find('#date-is-selected').attr('data-value') );\n\n // Search form\n this.form = this.eventsContent.find('.events-content__search');\n\n //pagination\n this.pagination = this.eventsContent.find('.pagination-ajax');\n\n // Data Passed\n this.divisions = [];\n this.sports = [];\n this.event_types = [];\n\n //Calendar\n this.datepicker = this.eventsContent.find('.events-datepicker');\n this.currentDay = this.eventsContent.find('.events-cards__day');\n }\n\n init() {\n if (this.page.length) {\n this.triggerEvents();\n this.addUrlListener();\n this.applyTerms(true);\n this.showSelectedInputs();\n this.initCalendar();\n }\n }\n\n addUrlListener() {\n window.addEventListener('popstate', function() {\n location.reload(false);\n });\n }\n\n triggerEvents() {\n // Show mobile filters\n this.mobileTrigger.on('click', (e) => {\n e.preventDefault();\n this.filtersInner.addClass('active');\n ScreenLock.lock();\n });\n\n // Close mobile filters\n this.mobileCloseTrigger.on('click', (e) => {\n e.preventDefault();\n this.filtersInner.removeClass('active');\n ScreenLock.unlock();\n });\n\n\n\n // // Clear filters\n this.clearTrigger.on('click', (e) => {\n e.preventDefault();\n this.clearFilters();\n });\n\n // Toggle single filter terms dropdown\n this.filterTrigger.on('click', (e) => {\n e.preventDefault();\n this.toggleFilter(e.delegateTarget);\n });\n\n // Apply filter term\n this.filterInputs.on('change', () => {\n this.applyTerms();\n });\n\n\n //Pagination\n\n this.pagination.on('click', 'a.page-numbers, a.pagination__arrow', (e) => {\n e.preventDefault();\n this.applyFilters($(e.target).attr('data-page'), this.datepicker.datepicker().val());\n });\n\n // Submit search form\n this.form.on('submit', (e) => {\n e.preventDefault();\n this.applyTerms();\n });\n\n\n // Hide filters on viewport change\n this.mobileViewport.addListener(() => {\n this.filtersInner.removeClass('active');\n this.filterTrigger.removeClass('active');\n this.filterList.removeClass('active').css('display', '');\n ScreenLock.unlock();\n });\n\n }\n urlParam(name) {\n const results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);\n if(results){\n return results[1] || 0;\n } else {\n return null;\n }\n }\n\n initCalendar() {\n if(this.datepicker){\n this.datepicker.datepicker({\n dayNamesMin: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n navigationAsDateFormat: true,\n nextText: 'MM',\n prevText: 'MM',\n showOtherMonths: true,\n dateFormat: \"yy-mm-dd\",\n selectOtherMonths: true,\n onSelect: (selectdate) => {\n this.applyFilters(1,selectdate);\n this.eventsContent.attr('data-date', selectdate);\n this.date = selectdate;\n this.datepicker.find(\".ui-datepicker-today\").parent().addClass('curr-week');\n this.dateIsSelected = 1;\n this.showSelectedInputs()\n setTimeout(() => {\n this.datepicker.find(\".ui-datepicker-today\").parent().addClass('curr-week');\n }, 0);\n },\n onChangeMonthYear: () =>{\n this.datepicker.find(\".ui-datepicker-today\").parent().addClass('curr-week');\n setTimeout(() => {\n this.datepicker.find(\".ui-datepicker-today\").parent().addClass('curr-week');\n }, 0);\n }\n });\n\n //get parameter\n const date = this.urlParam('date');\n if(date) {\n this.datepicker.datepicker( \"setDate\", date );\n } else {\n this.datepicker.datepicker('setDate', null).find('.ui-datepicker-current-day').removeClass('ui-datepicker-current-day');\n }\n //class to current week\n this.datepicker.find(\".ui-datepicker-today\").parent().addClass('curr-week');\n }\n }\n\n\n lockLayout() {\n this.loader.addClass('active');\n }\n\n unlockLayout() {\n this.loader.removeClass('active');\n }\n\n toggleFilter(item) {\n const trigger = $(item);\n const list = trigger.next();\n\n if (trigger.hasClass('active')) {\n if (!this.mobileViewport.matches) list.stop().slideUp(this.transitionTime);\n trigger.removeClass('active');\n list.removeClass('active');\n } else {\n if (!this.mobileViewport.matches) list.stop().slideDown(this.transitionTime);\n trigger.addClass('active');\n list.addClass('active');\n }\n }\n\n clearFilters() {\n this.filterInputs.prop('checked', false);\n this.datepicker.datepicker('setDate', null).find('.ui-datepicker-current-day').removeClass('ui-datepicker-current-day');\n this.applyTerms();\n }\n\n applyTerms(initial) {\n this.sports = [];\n this.divisions = [];\n this.event_types = [];\n\n //type\n this.filterInputs.filter((i, e) => $(e).data('tax') === 'vi_sport' && $(e).is(':checked')).each((i, e) => {\n this.sports.push($(e).data('id'));\n });\n\n this.filterInputs.filter((i, e) => $(e).data('tax') === 'vi_school_level' && $(e).is(':checked')).each((i, e) => {\n this.divisions.push($(e).data('id'));\n });\n\n this.filterInputs.filter((i, e) => $(e).data('tax') === 'vi_event_type' && $(e).is(':checked')).each((i, e) => {\n this.event_types.push($(e).data('id'));\n });\n\n\n if ( !initial ) {\n this.applyFilters();\n }\n }\n\n showSelectedInputs() {\n let checkedInputsNumber = this.filtersInner.find('input[type=\"checkbox\"]:checked').length;\n checkedInputsNumber += this.dateIsSelected;\n\n if (checkedInputsNumber > 0) {\n this.filtersSelected.addClass('active');\n this.mobileSelected.addClass('active');\n this.filtersSelectedNumber.text( `(${checkedInputsNumber})`);\n this.mobileSelected.text(`${checkedInputsNumber}`);\n } else {\n this.filtersSelected.removeClass('active');\n this.mobileSelected.removeClass('active');\n this.filtersSelectedNumber.text( `(${0})`);\n this.mobileSelected.text('0');\n }\n\n this.filterTrigger.each((index, el) => {\n const checkedInputsFilter = $(el).parent().find('input[type=\"checkbox\"]:checked').length;\n if(checkedInputsFilter > 0) {\n $(el).find('.selected-items').addClass('active');\n $(el).find('.selected-items').text( `${checkedInputsFilter}`);\n }else{\n $(el).find('.selected-items').removeClass('active');\n $(el).find('.selected-items').text( `${0}`);\n }\n });\n }\n\n\n updatePagination(current, max) {\n const page = parseInt(current);\n const max_num_pages = parseInt(max);\n\n this.pagination.find('.pagination__numbers-wrapper').html(paginationBuilder(this.postType, page, max_num_pages));\n this.pagination.find('.prev').attr('data-page', page - 1);\n this.pagination.find('.next').attr('data-page', page + 1);\n\n if (page === 1) {\n this.pagination.find('.prev').addClass('disabled');\n } else {\n this.pagination.find('.prev').removeClass('disabled');\n }\n\n if (page === max_num_pages) {\n this.pagination.find('.next').addClass('disabled');\n } else {\n this.pagination.find('.next').removeClass('disabled');\n }\n\n if (max_num_pages < 2) {\n this.pagination.addClass('hidden');\n } else {\n this.pagination.removeClass('hidden');\n }\n }\n\n\n applyFilters(page = 1, date = '' ) {\n this.lockLayout();\n\n const dataArr = this.form.serializeArray();\n const term = dataArr[0].value;\n $.ajax({\n type: 'POST',\n url: WP.ajaxUrl,\n dataType: 'JSON',\n data: {\n action: this.action,\n divisions: this.divisions,\n event_types: this.event_types,\n sports: this.sports,\n term,\n date,\n baseUrl: this.eventsContent.attr('data-url'),\n page\n },\n })\n .done((response) => {\n if ( response.url.length ) {\n history.pushState(null, null, response.url);\n } else {\n let clearedUrl = window.location.href.split('?');\n window.history.pushState( {}, null, clearedUrl[0] );\n this.dateIsSelected = 0;\n }\n this.updatePagination(response.page, response.max_num_pages);\n this.showSelectedInputs();\n this.eventsWrapper.html(response.posts_content);\n this.currentDay.text(response.date);\n\n this.scrollToTop()\n })\n .fail((errorResponse) => {\n console.log('Error: ', errorResponse);\n alert('An error has occurred, please check console for more informations');\n })\n .always(() => {\n this.unlockLayout();\n });\n }\n\n scrollToTop() {\n $( 'html, body' ).animate({\n scrollTop: this.eventsWrapper.offset().top - 300\n }, 400);\n }\n}\n\nconst eventsFilters = new EventsAjax('body.post-type-archive-tribe_events', 'applyEventsFilters');\n\nexport default eventsFilters;\n","const $ = jQuery.noConflict();\n\nclass ImageLinksSlider {\n constructor() {\n this.block = $('.block-fw-image-links');\n this.link = this.block.find('.block-fw-image-links__link');\n this.slider = this.block.find('.block-fw-image-links__wrapper .row');\n this.breakpoint = 767;\n }\n\n init() {\n this.toggleContent();\n this.initSlider();\n }\n\n toggleContent() {\n this.link.hover(function showContent() {\n $(this).find('.block-fw-image-links__link-hidden').stop().slideDown(200);\n }, function hideContent() {\n $(this).find('.block-fw-image-links__link-hidden').stop().slideUp(200);\n });\n }\n\n initSlider() {\n this.slider.slick({\n dots: true,\n arrows: false,\n infinite: false,\n slidesToShow: 1,\n slidesToScroll: 1,\n centerMode: true,\n variableWidth: true,\n mobileFirst: true,\n responsive: [{\n breakpoint: this.breakpoint,\n settings: \"unslick\"\n }]\n });\n }\n\n resized() {\n if (window.matchMedia(`(max-width: ${this.breakpoint}px)`).matches && !this.slider.hasClass('slick-initialized')) {\n this.initSlider();\n }\n }\n}\n\nexport default new ImageLinksSlider;\n","const $ = jQuery.noConflict();\n\nclass ScoreboardSlider {\n constructor() {\n this.slider = $('.scoreboard__inner');\n this.breakpoint = 768;\n }\n\n init() {\n this.initSlider();\n }\n\n initSlider() {\n this.slider.slick({\n dots: false,\n arrows: true,\n infinite: false,\n slidesToShow: 7,\n slidesToScroll: 1,\n centerMode: false,\n variableWidth: false,\n mobileFirst: false,\n responsive: [\n {\n breakpoint: 1440,\n settings: {\n slidesToShow: 5\n }\n },\n {\n breakpoint: 992,\n settings: {\n slidesToShow: 4\n }\n },\n {\n breakpoint: this.breakpoint,\n settings: \"unslick\"\n }\n ]\n });\n }\n\n resized() {\n if (window.matchMedia(`(min-width: ${this.breakpoint}px)`).matches && !this.slider.hasClass('slick-initialized')) {\n this.initSlider();\n }\n }\n}\n\nexport default new ScoreboardSlider;\n","const $ = jQuery.noConflict();\n\nclass GivingImageLinksSlider {\n constructor() {\n this.block = $('.block-giving-image-links');\n this.slider = this.block.find('.block-giving-image-links__wrapper .row');\n this.breakpoint = 767;\n }\n\n init() {\n this.initSlider();\n }\n\n initSlider() {\n this.slider.slick({\n dots: true,\n arrows: false,\n infinite: false,\n slidesToShow: 1,\n slidesToScroll: 1,\n centerMode: false,\n variableWidth: true,\n mobileFirst: true,\n responsive: [{\n breakpoint: this.breakpoint,\n settings: \"unslick\"\n }]\n });\n }\n\n resized() {\n if (window.matchMedia(`(max-width: ${this.breakpoint}px)`).matches && !this.slider.hasClass('slick-initialized')) {\n this.initSlider();\n }\n }\n}\n\nexport default new GivingImageLinksSlider;\n","const $ = jQuery.noConflict();\n\nclass DonorBlockSlider {\n constructor() {\n this.sliders = $('.top-donors__cards');\n this.breakpoint = 768;\n }\n\n init() {\n this.initSlider();\n }\n\n initSlider() {\n this.sliders.slick({\n arrows: true,\n infinite: false,\n mobileFirst: true,\n slidesToShow: 2,\n slidesToScroll: 2,\n responsive: [\n {\n breakpoint: 500,\n settings: {\n slidesToShow: 3,\n slidesToScroll: 3,\n }\n },\n {\n breakpoint: this.breakpoint,\n settings: \"unslick\"\n }\n ]\n });\n }\n\n resized() {\n if (window.matchMedia(`(max-width: ${this.breakpoint}px)`).matches && !this.sliders.hasClass('slick-initialized')) {\n this.initSlider();\n }\n }\n}\n\nexport default new DonorBlockSlider;\n","const $ = jQuery.noConflict();\n\nconst givingForm = {\n init() {\n const inputs = document.querySelectorAll('.block-content-form__right .gfield input, .block-content-form__right .gfield textarea');\n const textareas = document.querySelectorAll('.block-content-form__right .gfield textarea');\n const selects = $('.block-content-form__right select');\n\n if (inputs) {\n [...inputs].forEach(el => {\n el.addEventListener('focus', (e) => {\n givingForm.checkInputs(e, true);\n });\n el.addEventListener('focusout', (e) => {\n givingForm.checkInputs(e);\n });\n });\n }\n\n if (textareas) {\n [...textareas].forEach(el => {\n el.setAttribute('rows', '0');\n el.addEventListener('input', (e) => {\n e.target.style.height = 'auto';\n e.target.style.height = e.target.scrollHeight + 'px';\n }, false);\n });\n }\n\n if (selects.length) {\n selects.on('change.select2', (e) => {\n if ( e.target.value.length ) {\n selects.parents('.gfield').addClass('filled')\n } else {\n selects.parents('.gfield').removeClass('filled')\n }\n });\n }\n },\n checkInputs(event, focus = false) {\n const el = event.target;\n if (el.value || focus) {\n el.parentElement.parentElement.classList.add('filled');\n } else {\n el.parentElement.parentElement.classList.remove('filled');\n }\n },\n}\n\nexport default givingForm;","const $ = jQuery.noConflict();\nvar FontFaceObserver = require('fontfaceobserver');\n\nclass GoalCards {\n constructor() {\n this.cardBottom = $('.block-goal-cards__card-content-bottom');\n this.cardButton = $('.block-goal-cards__card');\n this.bottomContent = $('.strategies-lightbox__bottom-content');\n this.lightboxGoalButton = $('.strategies-lightbox__goals-button');\n this.strategiesLightbox = $('.strategies-lightbox');\n this.closeButton = $('.strategies-lightbox__back, .strategies-lightbox__close');\n this.contentCol = $('.strategies-lightbox__content-col');\n this.imageCol = $('.strategies-lightbox__image-col');\n this.goalsTop = $('.strategies-lightbox__goals-top');\n this.pbody = $('body');\n }\n init( fontFace = 'HCo Gotham SSm') {\n var instance = this;\n var font = new FontFaceObserver(fontFace);\n \n font.load().then(function () {\n instance.transformCards();\n\n setTimeout(function() {\n $('.block-goal-cards__card').addClass('loaded');\n }, 1);\n });\n\n const {\n cardBottom,\n cardButton,\n bottomContent,\n lightboxGoalButton,\n strategiesLightbox,\n closeButton,\n contentCol,\n imageCol,\n goalsTop,\n pbody\n } = this;\n\n lightboxGoalButton.on('click', switchLightbox);\n cardButton.on('click', openLightbox);\n closeButton.on('click', closeLightbox);\n $(document).on('keyup', closeLightbox);\n\n function switchLightbox(e) {\n if (!$(this).hasClass('card-active')) {\n e.preventDefault();\n lightboxGoalButton.removeClass('card-active');\n var cardID = $(this).attr('data-id');\n $('[data-id]').removeClass('animate');\n goalsTop.removeClass('active');\n contentCol.slideUp();\n imageCol.slideUp();\n $('.strategies-lightbox__goals-button[data-id=\"' + cardID + '\"]').addClass('card-active');\n $('.block-goal-cards__card.active[data-target!=\"' + cardID + '\"]').addClass('fadeOut');\n $('.block-goal-cards__card[data-target=\"' + cardID + '\"]').addClass('switched');\n \n bottomContent.animate({\n scrollTop: 0,\n }, 500, 'swing');\n\n setTimeout(function() {\n $('.block-goal-cards__card[data-target!=\"' + cardID + '\"], .strategies-lightbox__hero-content[data-id!=\"' + cardID + '\"]').removeClass('switched switched2').find('.block-goal-cards__card-image-wrapper');\n $('.block-goal-cards__card[data-target=\"' + cardID + '\"]').addClass('switched2').click();\n }, 300);\n\n setTimeout(function() {\n $('.block-goal-cards__card[data-target!=\"' + cardID + '\"], .strategies-lightbox__hero-content[data-id!=\"' + cardID + '\"]').removeClass('active card-active animate fadeOut').css('transform', 'translateX(0)');\n }, 650);\n } else {\n e.preventDefault();\n $(this).parent().toggleClass('active');\n }\n }\n\n function openLightbox(e) {\n e.preventDefault;\n pbody.addClass('lock-scroll').addClass('goal-card-open');\n var thisCard = e.currentTarget;\n var leftPos = thisCard.getBoundingClientRect().left;\n var lightboxTarget = $(thisCard).attr('data-target');\n\n strategiesLightbox.addClass('active');\n $(lightboxTarget).addClass('active');\n $('[data-id=\"' + lightboxTarget + '\"]').addClass('card-active');\n\n $('html, body').animate({\n scrollTop: $(thisCard).offset().top,\n }, 500, 'swing');\n\n $(thisCard).addClass('active animate').removeClass('fadeOut').find('.block-goal-cards__card-image-wrapper').css({'transform': 'translateX(-' + leftPos + 'px)'});\n \n setTimeout(function() {\n $('[data-id=\"' + lightboxTarget + '\"]').addClass('animate');\n closeButton.addClass('animate');\n bottomContent.addClass('animate');\n $('.strategies-lightbox__content-col[data-id=\"' + lightboxTarget + '\"], .strategies-lightbox__image-col[data-id=\"' + lightboxTarget + '\"]').slideDown();\n }, 1);\n \n setTimeout(function() {\n bottomContent.addClass('opened');\n }, 700);\n }\n\n function closeLightbox(e) {\n if (e.target == this || e.key == \"Escape\") {\n e.preventDefault();\n $('.animate').removeClass('animate');\n $('.switched').removeClass('switched');\n $('.switched2').removeClass('switched2');\n $('.fadeOut').removeClass('fadeOut');\n $('.opened').removeClass('opened');\n \n setTimeout(function() {\n $('.active').removeClass('active');\n $('.card-active').removeClass('card-active');\n pbody.removeClass('lock-scroll').removeClass('goal-card-open');;\n contentCol.hide();\n imageCol.hide();\n }, 650);\n }\n }\n }\n transformCards() {\n this.cardBottom.each(function() {\n var height = $(this).outerHeight() - 23;\n if ( $('body').hasClass('page-template-tpl-donor-page') ) {\n height = $(this).find('.block-goal-cards__explore-button').outerHeight() - 23;\n }\n\n if (height > 0) {\n $(this).prev('.block-goal-cards__card-content-top').first().css('transform', 'translateY(' + height + 'px)');\n $(this).css('transform', 'translateY(' + height + 'px)');\n }\n });\n }\n}\n\nexport default new GoalCards();","const $ = jQuery.noConflict();\nvar FontFaceObserver = require('fontfaceobserver');\n\nclass GoalProgressCards {\n constructor() {\n this.cardBottom = $('.block-goal-progress-cards__card-content-bottom');\n this.cardButton = $('.block-goal-progress-cards__card');\n this.bottomContent = $('.progress-lightbox__bottom-content');\n this.lightboxGoalButton = $('.progress-lightbox__goals-button');\n this.progressLightbox = $('.progress-lightbox');\n this.closeButton = $('.progress-lightbox__back, .progress-lightbox__close');\n this.contentCol = $('.progress-lightbox__content-col');\n this.imageCol = $('.progress-lightbox__image-col');\n this.goalsTop = $('.progress-lightbox__goals-top');\n this.pbody = $('body');\n }\n init( fontFace = 'HCo Gotham SSm') {\n var instance = this;\n var font = new FontFaceObserver(fontFace);\n \n font.load().then(function () {\n instance.transformCards();\n\n setTimeout(function() {\n $('.block-goal-progress-cards__card').addClass('loaded');\n }, 1);\n });\n\n const {\n cardBottom,\n cardButton,\n bottomContent,\n lightboxGoalButton,\n progressLightbox,\n closeButton,\n contentCol,\n imageCol,\n goalsTop,\n pbody\n } = this;\n\n lightboxGoalButton.on('click', switchLightbox);\n cardButton.on('click', openLightbox);\n closeButton.on('click', closeLightbox);\n $(document).on('keyup', closeLightbox);\n\n function switchLightbox(e) {\n if (!$(this).hasClass('card-active')) {\n e.preventDefault();\n lightboxGoalButton.removeClass('card-active');\n var cardID = $(this).attr('data-id');\n $('[data-id]').removeClass('animate');\n goalsTop.removeClass('active');\n contentCol.slideUp();\n imageCol.slideUp();\n $('.progress-lightbox__goals-button[data-id=\"' + cardID + '\"]').addClass('card-active');\n $('.block-goal-progress-cards__card.active[data-target!=\"' + cardID + '\"]').addClass('fadeOut');\n $('.block-goal-progress-cards__card[data-target=\"' + cardID + '\"]').addClass('switched');\n \n bottomContent.animate({\n scrollTop: 0,\n }, 500, 'swing');\n\n setTimeout(function() {\n $('.block-goal-progress-cards__card[data-target!=\"' + cardID + '\"], .progress-lightbox__hero-content[data-id!=\"' + cardID + '\"]').removeClass('switched switched2').find('.block-goal-progress-cards__card-image-wrapper');\n $('.block-goal-progress-cards__card[data-target=\"' + cardID + '\"]').addClass('switched2').click();\n }, 300);\n\n setTimeout(function() {\n $('.block-goal-progress-cards__card[data-target!=\"' + cardID + '\"], .progress-lightbox__hero-content[data-id!=\"' + cardID + '\"]').removeClass('active card-active animate fadeOut').css('transform', 'translateX(0)');\n }, 650);\n } else {\n e.preventDefault();\n $(this).parent().toggleClass('active');\n }\n }\n\n function openLightbox(e) {\n e.preventDefault;\n pbody.addClass('lock-scroll').addClass('goal-card-open');\n var thisCard = e.currentTarget;\n var leftPos = thisCard.getBoundingClientRect().left;\n var lightboxTarget = $(thisCard).attr('data-target');\n\n progressLightbox.addClass('active');\n $(lightboxTarget).addClass('active');\n $('[data-id=\"' + lightboxTarget + '\"]').addClass('card-active');\n\n $('html, body').animate({\n scrollTop: $(thisCard).offset().top,\n }, 500, 'swing');\n\n $(thisCard).addClass('active animate').removeClass('fadeOut').find('.block-goal-progress-cards__card-image-wrapper').css({'transform': 'translateX(-' + leftPos + 'px)'});\n \n setTimeout(function() {\n $('[data-id=\"' + lightboxTarget + '\"]').addClass('animate');\n closeButton.addClass('animate');\n bottomContent.addClass('animate');\n $('.progress-lightbox__content-col[data-id=\"' + lightboxTarget + '\"], .progress-lightbox__image-col[data-id=\"' + lightboxTarget + '\"]').slideDown();\n }, 1);\n \n\t\t\tsetTimeout(function() {\n\t\t\t\t$('.block-news__news-wrapper').slick('refresh');\n\t\t\t}, 100);\n\n setTimeout(function() {\n bottomContent.addClass('opened');\n }, 700);\n }\n\n function closeLightbox(e) {\n if (e.target == this || e.key == \"Escape\") {\n e.preventDefault();\n $('.animate').removeClass('animate');\n $('.switched').removeClass('switched');\n $('.switched2').removeClass('switched2');\n $('.fadeOut').removeClass('fadeOut');\n $('.opened').removeClass('opened');\n \n setTimeout(function() {\n $('.active').removeClass('active');\n $('.card-active').removeClass('card-active');\n pbody.removeClass('lock-scroll').removeClass('goal-card-open');;\n contentCol.hide();\n imageCol.hide();\n }, 650);\n }\n }\n }\n transformCards() {\n this.cardBottom.each(function() {\n var height = $(this).outerHeight() - 23;\n if ( $('body').hasClass('page-template-tpl-donor-page') ) {\n height = $(this).find('.block-goal-progress-cards__explore-button').outerHeight() - 23;\n }\n\n if (height > 0) {\n $(this).prev('.block-goal-progress-cards__card-content-top').first().css('transform', 'translateY(' + height + 'px)');\n $(this).css('transform', 'translateY(' + height + 'px)');\n }\n });\n }\n}\n\nexport default new GoalProgressCards();","require('intersection-observer');\n\n/**\n * Check if the element is in the viewport\n * \n * @param {string} selector \n * @param {() => void} inViewCallback \n * @param {() => void} outOfViewCallback \n * @param {IntersectionObserverInit} customConfig \n */\n\nexport const checkElementInView = (\n\tselector,\n\tinViewCallback,\n\toutOfViewCallback,\n\tcustomConfig = {}\n) => {\n\tlet elements;\n\n\tif ('string' === typeof selector) {\n\t\telements = document.querySelectorAll(selector);\n\t} else {\n\t\telements = selector;\n\t}\n\t\n\tconst defaultConfig = {\n\t\troot: null,\n\t\trootMargin: \"0px 0px 0px 0px\",\n\t\tthreshold: [0],\n\t};\n\n\tconst config = Object.assign({}, defaultConfig, customConfig);\n\t\n\tconst observer = new IntersectionObserver((entries) => {\n\t\tentries.forEach((entry) => {\n\t\t\tif (entry.isIntersecting) {\n\t\t\t\tinViewCallback(entry.target);\n\t\t\t} else {\n\t\t\t\toutOfViewCallback(entry.target);\n\t\t\t}\n\t\t});\n\t}, config);\n\t\n\telements.forEach((element) => {\n\t\tobserver.observe(element);\n\t});\n\n\treturn observer;\n};\n","import { checkElementInView } from \"../__utils/checkElementInView\";\n\nconst charts = () => {\n\n\tconst chartEl = document.querySelectorAll('.donor-page-chart__chart');\n\n\tif (chartEl.length) {\n checkElementInView(\n '.donor-page-chart__charts', \n () => {\n chartEl.forEach(el => {\n el.classList.remove('fade');\n\n if ( ! el.classList.contains( 'rendered' ) || window.matchMedia('(min-width: 992px)').matches ) {\n const data = JSON.parse( el.getAttribute('data-values') );\n \n generateD3Chart( el, data );\n el.classList.add( 'rendered' )\n }\n });\n }, \n () => {\n chartEl.forEach(el => {\n el.classList.add('fade');\n if ( window.matchMedia('(min-width: 992px)').matches ) {\n const svg = el.querySelector('svg');\n if ( null !== svg ) {\n svg.remove();\n }\n }\n });\n }, \n {\n root: null,\n rootMargin: \"0px 0px 0px 0px\",\n threshold: [0],\n }\n );\n }\n};\n\nfunction generateD3Chart( target, data ) {\n var w = 620;\n var h = 300;\n var r = 100;\n var ir = 0;\n var textOffset = 24;\n var tweenDuration = 1050;\n\n //OBJECTS TO BE POPULATED WITH DATA LATER\n var lines, valueLabels, nameLabels;\n var pieData = [];\n var oldPieData = [];\n var filteredPieData = [];\n\n //D3 helper function to populate pie slice parameters from array data\n var pie = d3.layout.pie().value(function(d) {\n return d.value;\n }).sort(null);\n\n //D3 helper function to draw arcs, populates parameter \"d\" in path object\n var arc = d3.svg.arc()\n .startAngle(function(d) {\n return d.startAngle;\n })\n .endAngle(function(d) {\n return d.endAngle;\n })\n .innerRadius(ir)\n .outerRadius(r);\n\n ///////////////////////////////////////////////////////////\n // CREATE VIS & GROUPS ////////////////////////////////////\n ///////////////////////////////////////////////////////////\n\n var vis = d3.select(target).append(\"svg:svg\")\n .attr(\"width\", w)\n .attr(\"height\", h)\n .attr('viewBox', `0 0 ${w} ${h}`)\n\n //GROUP FOR ARCS/PATHS\n var arc_group = vis.append(\"svg:g\")\n .attr(\"class\", \"chart-arc\")\n .attr(\"transform\", \"translate(\" + (w / 2) + \",\" + (h / 2) + \")\");\n\n //GROUP FOR LABELS\n var label_group = vis.append(\"svg:g\")\n .attr(\"class\", \"label_group\")\n .attr(\"transform\", \"translate(\" + (w / 2) + \",\" + (h / 2) + \")\");\n\n ///////////////////////////////////////////////////////////\n // STREAKER CONNECTION ////////////////////////////////////\n ///////////////////////////////////////////////////////////\n\n // to run each time data is generated\n function update(data) {\n\n oldPieData = filteredPieData;\n pieData = pie(data);\n\n var sliceProportion = 0; //size of this slice\n filteredPieData = pieData.filter(filterData);\n\n function filterData(element, index, array) {\n element.name = data[index].text;\n element.value = data[index].value;\n sliceProportion += element.value;\n return (element.value > 0);\n }\n\n //DRAW ARC PATHS\n var paths = arc_group.selectAll(\"path\").data(filteredPieData);\n paths.enter().append(\"svg:path\")\n .attr(\"fill\", function(d, i) {\n return data[i].color;\n })\n .transition()\n .duration(tweenDuration)\n .attrTween(\"d\", pieTween);\n paths\n .transition()\n .duration(tweenDuration)\n .attrTween(\"d\", pieTween);\n paths.exit()\n .transition()\n .duration(tweenDuration)\n .attrTween(\"d\", removePieTween)\n .remove();\n\n\n //DRAW TICK MARK LINES FOR LABELS\n lines = label_group.selectAll(\"line\").data(filteredPieData);\n lines.enter().append(\"svg:line\")\n .attr(\"x1\", 0)\n .attr(\"x2\", 0)\n .attr(\"y1\", -r - 3)\n .attr(\"y2\", -r - 15)\n .attr(\"stroke\", \"gray\")\n .attr(\"transform\", function(d) {\n return \"rotate(\" + (d.startAngle + d.endAngle) / 2 * (180 / Math.PI) + \")\";\n });\n lines.transition()\n .duration(tweenDuration)\n .attr(\"transform\", function(d) {\n return \"rotate(\" + (d.startAngle + d.endAngle) / 2 * (180 / Math.PI) + \")\";\n });\n lines.exit().remove();\n\n //DRAW LABELS WITH HEADINGS VALUES\n valueLabels = label_group.selectAll(\"text.chart-heading\").data(filteredPieData)\n .attr(\"dy\", function(d) {\n if ((d.startAngle + d.endAngle) / 2 > Math.PI / 2 && (d.startAngle + d.endAngle) / 2 < Math.PI * 1.5) {\n return 5 - 5;\n } else {\n return -7 - 5;\n }\n })\n .attr(\"text-anchor\", function(d) {\n if ((d.startAngle + d.endAngle) / 2 < Math.PI) {\n return \"beginning\";\n } else {\n return \"end\";\n }\n })\n .text(function(d) {\n return d.data.heading;\n });\n\n valueLabels.enter().append(\"svg:text\")\n .attr(\"class\", \"chart-heading\")\n .attr(\"transform\", function(d) {\n return \"translate(\" + Math.cos(((d.startAngle + d.endAngle - Math.PI) / 2)) * (r + textOffset) + \",\" + Math.sin((d.startAngle + d.endAngle - Math.PI) / 2) * (r + textOffset) + \")\";\n })\n .attr(\"dy\", function(d) {\n if ((d.startAngle + d.endAngle) / 2 > Math.PI / 2 && (d.startAngle + d.endAngle) / 2 < Math.PI * 1.5) {\n return 5 - 5;\n } else {\n return -7 - 5;\n }\n })\n .attr(\"text-anchor\", function(d) {\n if ((d.startAngle + d.endAngle) / 2 < Math.PI) {\n return \"beginning\";\n } else {\n return \"end\";\n }\n }).text(function(d) {\n return d.data.heading;\n });\n\n valueLabels.transition().duration(tweenDuration).attrTween(\"transform\", textTween);\n\n valueLabels.exit().remove();\n\n\n //DRAW LABELS WITH ENTITY NAMES\n nameLabels = label_group.selectAll(\"text.chart-text\").data(filteredPieData)\n .attr(\"dy\", function(d) {\n if ((d.startAngle + d.endAngle) / 2 > Math.PI / 2 && (d.startAngle + d.endAngle) / 2 < Math.PI * 1.5) {\n return 17;\n } else {\n return 5;\n }\n })\n .attr(\"text-anchor\", function(d) {\n if ((d.startAngle + d.endAngle) / 2 < Math.PI) {\n return \"beginning\";\n } else {\n return \"end\";\n }\n }).text(function(d) {\n return d.name;\n });\n\n nameLabels.enter().append(\"svg:text\")\n .attr(\"class\", \"chart-text\")\n .attr(\"transform\", function(d) {\n return \"translate(\" + Math.cos(((d.startAngle + d.endAngle - Math.PI) / 2)) * (r + textOffset) + \",\" + Math.sin((d.startAngle + d.endAngle - Math.PI) / 2) * (r + textOffset) + \")\";\n })\n .attr(\"dy\", function(d) {\n if ((d.startAngle + d.endAngle) / 2 > Math.PI / 2 && (d.startAngle + d.endAngle) / 2 < Math.PI * 1.5) {\n return 17;\n } else {\n return 5;\n }\n })\n .attr(\"text-anchor\", function(d) {\n if ((d.startAngle + d.endAngle) / 2 < Math.PI) {\n return \"beginning\";\n } else {\n return \"end\";\n }\n }).text(function(d) {\n return d.name;\n });\n\n nameLabels.transition().duration(tweenDuration).attrTween(\"transform\", textTween);\n\n nameLabels.exit().remove();\n }\n\n ///////////////////////////////////////////////////////////\n // FUNCTIONS //////////////////////////////////////////////\n ///////////////////////////////////////////////////////////\n\n // Interpolate the arcs in data space.\n function pieTween(d, i) {\n var s0;\n var e0;\n if (oldPieData[i]) {\n s0 = oldPieData[i].startAngle;\n e0 = oldPieData[i].endAngle;\n } else if (!(oldPieData[i]) && oldPieData[i - 1]) {\n s0 = oldPieData[i - 1].endAngle;\n e0 = oldPieData[i - 1].endAngle;\n } else if (!(oldPieData[i - 1]) && oldPieData.length > 0) {\n s0 = oldPieData[oldPieData.length - 1].endAngle;\n e0 = oldPieData[oldPieData.length - 1].endAngle;\n } else {\n s0 = 0;\n e0 = 0;\n }\n var i = d3.interpolate({\n startAngle: s0,\n endAngle: e0\n }, {\n startAngle: d.startAngle,\n endAngle: d.endAngle\n });\n return function(t) {\n var b = i(t);\n return arc(b);\n };\n }\n\n function removePieTween(d, i) {\n s0 = 2 * Math.PI;\n e0 = 2 * Math.PI;\n var i = d3.interpolate({\n startAngle: d.startAngle,\n endAngle: d.endAngle\n }, {\n startAngle: s0,\n endAngle: e0\n });\n return function(t) {\n var b = i(t);\n return arc(b);\n };\n }\n\n function textTween(d, i) {\n var a;\n if (oldPieData[i]) {\n a = (oldPieData[i].startAngle + oldPieData[i].endAngle - Math.PI) / 2;\n } else if (!(oldPieData[i]) && oldPieData[i - 1]) {\n a = (oldPieData[i - 1].startAngle + oldPieData[i - 1].endAngle - Math.PI) / 2;\n } else if (!(oldPieData[i - 1]) && oldPieData.length > 0) {\n a = (oldPieData[oldPieData.length - 1].startAngle + oldPieData[oldPieData.length - 1].endAngle - Math.PI) / 2;\n } else {\n a = 0;\n }\n var b = (d.startAngle + d.endAngle - Math.PI) / 2;\n\n var fn = d3.interpolateNumber(a, b);\n return function(t) {\n var val = fn(t);\n return \"translate(\" + Math.cos(val) * (r + textOffset) + \",\" + Math.sin(val) * (r + textOffset) + \")\";\n };\n }\n\n update(data);\n\n}\n\nexport default charts;","import { checkElementInView } from \"../__utils/checkElementInView\";\n\nconst chartsBlock = () => {\n\n\tconst chartEl = document.querySelectorAll('.block-chart__chart');\n\n\tif (chartEl.length) {\n checkElementInView(\n '.block-chart__charts', \n () => {\n chartEl.forEach(el => {\n el.classList.remove('fade');\n\n if ( ! el.classList.contains( 'rendered' ) || window.matchMedia('(min-width: 992px)').matches ) {\n const data = JSON.parse( el.getAttribute('data-values') );\n \n generateD3Chart( el, data );\n el.classList.add( 'rendered' )\n }\n });\n }, \n () => {\n chartEl.forEach(el => {\n el.classList.add('fade');\n if ( window.matchMedia('(min-width: 992px)').matches ) {\n const svg = el.querySelector('svg');\n if ( null !== svg ) {\n svg.remove();\n }\n }\n });\n }, \n {\n root: null,\n rootMargin: \"0px 0px 0px 0px\",\n threshold: [0],\n }\n );\n }\n};\n\nfunction generateD3Chart( target, data ) {\n var w = 620;\n var h = 300;\n var r = 100;\n var ir = 0;\n var textOffset = 24;\n var tweenDuration = 1050;\n\n //OBJECTS TO BE POPULATED WITH DATA LATER\n var lines, valueLabels, nameLabels;\n var pieData = [];\n var oldPieData = [];\n var filteredPieData = [];\n\n //D3 helper function to populate pie slice parameters from array data\n var pie = d3.layout.pie().value(function(d) {\n return d.value;\n }).sort(null);\n\n //D3 helper function to draw arcs, populates parameter \"d\" in path object\n var arc = d3.svg.arc()\n .startAngle(function(d) {\n return d.startAngle;\n })\n .endAngle(function(d) {\n return d.endAngle;\n })\n .innerRadius(ir)\n .outerRadius(r);\n\n ///////////////////////////////////////////////////////////\n // CREATE VIS & GROUPS ////////////////////////////////////\n ///////////////////////////////////////////////////////////\n\n var vis = d3.select(target).append(\"svg:svg\")\n .attr(\"width\", w)\n .attr(\"height\", h)\n .attr('viewBox', `0 0 ${w} ${h}`)\n\n //GROUP FOR ARCS/PATHS\n var arc_group = vis.append(\"svg:g\")\n .attr(\"class\", \"chart-arc\")\n .attr(\"transform\", \"translate(\" + (w / 2) + \",\" + (h / 2) + \")\");\n\n //GROUP FOR LABELS\n var label_group = vis.append(\"svg:g\")\n .attr(\"class\", \"label_group\")\n .attr(\"transform\", \"translate(\" + (w / 2) + \",\" + (h / 2) + \")\");\n\n ///////////////////////////////////////////////////////////\n // STREAKER CONNECTION ////////////////////////////////////\n ///////////////////////////////////////////////////////////\n\n // to run each time data is generated\n function update(data) {\n\n oldPieData = filteredPieData;\n pieData = pie(data);\n\n var sliceProportion = 0; //size of this slice\n filteredPieData = pieData.filter(filterData);\n\n function filterData(element, index, array) {\n element.name = data[index].text;\n element.value = data[index].value;\n sliceProportion += element.value;\n return (element.value > 0);\n }\n\n //DRAW ARC PATHS\n var paths = arc_group.selectAll(\"path\").data(filteredPieData);\n paths.enter().append(\"svg:path\")\n .attr(\"fill\", function(d, i) {\n return data[i].color;\n })\n .transition()\n .duration(tweenDuration)\n .attrTween(\"d\", pieTween);\n paths\n .transition()\n .duration(tweenDuration)\n .attrTween(\"d\", pieTween);\n paths.exit()\n .transition()\n .duration(tweenDuration)\n .attrTween(\"d\", removePieTween)\n .remove();\n\n\n //DRAW TICK MARK LINES FOR LABELS\n lines = label_group.selectAll(\"line\").data(filteredPieData);\n lines.enter().append(\"svg:line\")\n .attr(\"x1\", 0)\n .attr(\"x2\", 0)\n .attr(\"y1\", -r - 3)\n .attr(\"y2\", -r - 15)\n .attr(\"stroke\", \"gray\")\n .attr(\"transform\", function(d) {\n return \"rotate(\" + (d.startAngle + d.endAngle) / 2 * (180 / Math.PI) + \")\";\n });\n lines.transition()\n .duration(tweenDuration)\n .attr(\"transform\", function(d) {\n return \"rotate(\" + (d.startAngle + d.endAngle) / 2 * (180 / Math.PI) + \")\";\n });\n lines.exit().remove();\n\n //DRAW LABELS WITH HEADINGS VALUES\n valueLabels = label_group.selectAll(\"text.chart-heading\").data(filteredPieData)\n .attr(\"dy\", function(d) {\n if ((d.startAngle + d.endAngle) / 2 > Math.PI / 2 && (d.startAngle + d.endAngle) / 2 < Math.PI * 1.5) {\n return 5 - 5;\n } else {\n return -7 - 5;\n }\n })\n .attr(\"text-anchor\", function(d) {\n if ((d.startAngle + d.endAngle) / 2 < Math.PI) {\n return \"beginning\";\n } else {\n return \"end\";\n }\n })\n .text(function(d) {\n return d.data.heading;\n });\n\n valueLabels.enter().append(\"svg:text\")\n .attr(\"class\", \"chart-heading\")\n .attr(\"transform\", function(d) {\n return \"translate(\" + Math.cos(((d.startAngle + d.endAngle - Math.PI) / 2)) * (r + textOffset) + \",\" + Math.sin((d.startAngle + d.endAngle - Math.PI) / 2) * (r + textOffset) + \")\";\n })\n .attr(\"dy\", function(d) {\n if ((d.startAngle + d.endAngle) / 2 > Math.PI / 2 && (d.startAngle + d.endAngle) / 2 < Math.PI * 1.5) {\n return 5 - 5;\n } else {\n return -7 - 5;\n }\n })\n .attr(\"text-anchor\", function(d) {\n if ((d.startAngle + d.endAngle) / 2 < Math.PI) {\n return \"beginning\";\n } else {\n return \"end\";\n }\n }).text(function(d) {\n return d.data.heading;\n });\n\n valueLabels.transition().duration(tweenDuration).attrTween(\"transform\", textTween);\n\n valueLabels.exit().remove();\n\n\n //DRAW LABELS WITH ENTITY NAMES\n nameLabels = label_group.selectAll(\"text.chart-text\").data(filteredPieData)\n .attr(\"dy\", function(d) {\n if ((d.startAngle + d.endAngle) / 2 > Math.PI / 2 && (d.startAngle + d.endAngle) / 2 < Math.PI * 1.5) {\n return 17;\n } else {\n return 5;\n }\n })\n .attr(\"text-anchor\", function(d) {\n if ((d.startAngle + d.endAngle) / 2 < Math.PI) {\n return \"beginning\";\n } else {\n return \"end\";\n }\n }).text(function(d) {\n return d.name;\n });\n\n nameLabels.enter().append(\"svg:text\")\n .attr(\"class\", \"chart-text\")\n .attr(\"transform\", function(d) {\n return \"translate(\" + Math.cos(((d.startAngle + d.endAngle - Math.PI) / 2)) * (r + textOffset) + \",\" + Math.sin((d.startAngle + d.endAngle - Math.PI) / 2) * (r + textOffset) + \")\";\n })\n .attr(\"dy\", function(d) {\n if ((d.startAngle + d.endAngle) / 2 > Math.PI / 2 && (d.startAngle + d.endAngle) / 2 < Math.PI * 1.5) {\n return 17;\n } else {\n return 5;\n }\n })\n .attr(\"text-anchor\", function(d) {\n if ((d.startAngle + d.endAngle) / 2 < Math.PI) {\n return \"beginning\";\n } else {\n return \"end\";\n }\n }).text(function(d) {\n return d.name;\n });\n\n nameLabels.transition().duration(tweenDuration).attrTween(\"transform\", textTween);\n\n nameLabels.exit().remove();\n }\n\n ///////////////////////////////////////////////////////////\n // FUNCTIONS //////////////////////////////////////////////\n ///////////////////////////////////////////////////////////\n\n // Interpolate the arcs in data space.\n function pieTween(d, i) {\n var s0;\n var e0;\n if (oldPieData[i]) {\n s0 = oldPieData[i].startAngle;\n e0 = oldPieData[i].endAngle;\n } else if (!(oldPieData[i]) && oldPieData[i - 1]) {\n s0 = oldPieData[i - 1].endAngle;\n e0 = oldPieData[i - 1].endAngle;\n } else if (!(oldPieData[i - 1]) && oldPieData.length > 0) {\n s0 = oldPieData[oldPieData.length - 1].endAngle;\n e0 = oldPieData[oldPieData.length - 1].endAngle;\n } else {\n s0 = 0;\n e0 = 0;\n }\n var i = d3.interpolate({\n startAngle: s0,\n endAngle: e0\n }, {\n startAngle: d.startAngle,\n endAngle: d.endAngle\n });\n return function(t) {\n var b = i(t);\n return arc(b);\n };\n }\n\n function removePieTween(d, i) {\n s0 = 2 * Math.PI;\n e0 = 2 * Math.PI;\n var i = d3.interpolate({\n startAngle: d.startAngle,\n endAngle: d.endAngle\n }, {\n startAngle: s0,\n endAngle: e0\n });\n return function(t) {\n var b = i(t);\n return arc(b);\n };\n }\n\n function textTween(d, i) {\n var a;\n if (oldPieData[i]) {\n a = (oldPieData[i].startAngle + oldPieData[i].endAngle - Math.PI) / 2;\n } else if (!(oldPieData[i]) && oldPieData[i - 1]) {\n a = (oldPieData[i - 1].startAngle + oldPieData[i - 1].endAngle - Math.PI) / 2;\n } else if (!(oldPieData[i - 1]) && oldPieData.length > 0) {\n a = (oldPieData[oldPieData.length - 1].startAngle + oldPieData[oldPieData.length - 1].endAngle - Math.PI) / 2;\n } else {\n a = 0;\n }\n var b = (d.startAngle + d.endAngle - Math.PI) / 2;\n\n var fn = d3.interpolateNumber(a, b);\n return function(t) {\n var val = fn(t);\n return \"translate(\" + Math.cos(val) * (r + textOffset) + \",\" + Math.sin(val) * (r + textOffset) + \")\";\n };\n }\n\n update(data);\n\n}\n\nexport default chartsBlock;","import { checkElementInView } from \"../__utils/checkElementInView\";\n\nconst animationSelectors = 'body.page-template-tpl-donor-page .page-content > *, .block-timeline, .block-chart';\nconst sections = document.querySelectorAll(animationSelectors);\n\nconst showSection = (e) => {\n e.classList.add('in-viewport');\n};\n\nconst hideSection = (e) => {\n e.classList.remove('in-viewport');\n};\n\nconst sectionsInView = () => {\n if (sections.length) {\n checkElementInView(animationSelectors, showSection, hideSection, {\n root: null,\n rootMargin: \"0px 0px -20% 0px\",\n threshold: [0],\n });\n }\n};\n\nexport default sectionsInView;","import detectBrowser from '../__utils/detectBrowser';\nimport vhUnit from '../__utils/vhUnit';\nimport video from '../__utils/video';\nimport smoothScroll from '../__utils/smoothScroll';\nimport Header from '../__header/Header';\nimport HeaderMobile from '../__header/HeaderMobile';\nimport Search from '../__page/Search';\nimport MegaMenu from '../__header/MegaMenu';\nimport MenuMobile from '../__header/MenuMobile';\nimport InpageNav from '../__page/InpageNav';\nimport Tables from '../__utils/Tables';\nimport forms from '../__utils/forms';\n// import Wcag from '../__utils/wcag';\nimport { SimpleSlider, LightboxSlider, HeroSlider, HeroNewsSlider, FactsSlider, HeroEventsSlider, UpcomingGamesSlider, RelatedEventsSlider } from '../__utils/Sliders';\nimport LogosSlider from '../__page/LogosSlider';\nimport Accordion from '../__shortcodes/Accordions';\nimport Tabs from '../__page/Tabs';\nimport GalleryLightbox from '../__page/LightboxGallery';\nimport HeroBackgroundVideo from '../__page/HeroBackgroundVideo';\nimport LightboxVideo from '../__page/LightboxVideo';\nimport CYEAccordion from '../__page/CYEAccordion';\nimport postsFilters from '../__archive/PostsAjax';\nimport eventsFilters from '../__archive/EventsAjax';\nimport ImageLinksSlider from '../__page/ImageLinksSlider';\nimport ScoreboardSlider from '../__page/ScoreboardSlider';\nimport GivingImageLinksSlider from '../__page/GivingImageLinksSlider';\nimport DonorBlockSlider from '../__page/DonorBlockSlider';\nimport givingForm from '../__utils/givingForm';\nimport GoalCards from '../__page/goalCards';\nimport GoalProgressCards from '../__page/goalProgressCards';\nimport charts from '../__page/charts';\nimport chartsBlock from '../__page/chartsBlock';\nimport sectionsInView from \"../__page/sectionsInView\";\n\n// GLOBAL APP CONTROLLER\nconst controller = {\n init() {\n document.querySelector('html').classList.remove('no-js');\n detectBrowser();\n smoothScroll();\n vhUnit();\n Header.init();\n HeaderMobile.init();\n Search.init();\n MegaMenu.init();\n MenuMobile.init();\n InpageNav.init();\n // Wcag.init();\n CYEAccordion.init();\n video.init();\n Accordion.init();\n Tabs.init();\n HeroSlider.init();\n SimpleSlider.init();\n LightboxSlider.init();\n HeroNewsSlider.init();\n HeroEventsSlider.init();\n LogosSlider.init();\n FactsSlider.init();\n GalleryLightbox.init();\n Tables.init();\n HeroBackgroundVideo.init();\n LightboxVideo.init();\n postsFilters.init();\n eventsFilters.init();\n ImageLinksSlider.init();\n ScoreboardSlider.init();\n UpcomingGamesSlider.init();\n RelatedEventsSlider.init();\n GivingImageLinksSlider.init();\n DonorBlockSlider.init();\n forms.hubspot();\n GoalCards.init( 'Gotham' );\n GoalProgressCards.init( 'Gotham' );\n charts();\n chartsBlock();\n sectionsInView();\n },\n loaded() {\n document.querySelector('body').classList.add('page-has-loaded');\n vhUnit();\n HeroBackgroundVideo.init();\n // Wcag.init();\n },\n scrolled() {\n InpageNav.scrolled();\n },\n resized() {\n vhUnit();\n Header.resized();\n HeaderMobile.resized();\n Search.resized();\n InpageNav.scrolled();\n Tables.toggleShadow();\n Tabs.toggleShadow();\n HeroBackgroundVideo.resized();\n HeroSlider.refresh();\n SimpleSlider.refresh();\n LightboxSlider.refresh();\n HeroNewsSlider.refresh();\n LogosSlider.refresh();\n FactsSlider.refresh();\n ImageLinksSlider.resized();\n ScoreboardSlider.resized();\n UpcomingGamesSlider.refresh();\n GivingImageLinksSlider.resized();\n DonorBlockSlider.resized();\n GoalCards.transformCards();\n GoalProgressCards.transformCards();\n },\n mouseUp(e) {\n Search.hideOutsideClick(e);\n InpageNav.hideOutsideClick(e);\n },\n keyDown(e){\n Header.keyDown(e);\n Search.keyDown(e);\n LightboxVideo.keyDown(e);\n GalleryLightbox.keyDown(e);\n },\n gformRender() {\n forms.select();\n givingForm.init();\n },\n};\nexport default controller;\n","const detectTabNav = (e) => {\n if (e.keyCode === 9) {\n document.querySelector('html').classList.add('user-tab-nav');\n\n window.removeEventListener('keydown', detectTabNav);\n window.addEventListener('mousedown', detectMouseNav);\n }\n}\n\nconst detectMouseNav = () => {\n document.querySelector('html').classList.remove('user-tab-nav');\n\n window.removeEventListener('mousedown', detectMouseNav);\n window.addEventListener('keydown', detectTabNav);\n}\n\nexport default detectTabNav;\n","import throttle from 'lodash/throttle';\nimport controller from './__init/controller';\nimport detectTabNav from './__utils/detectTabNav';\n\nlet handled = false;\n\ncontroller.init();\nwindow.addEventListener('load', controller.loaded);\nwindow.addEventListener('scroll', throttle(controller.scrolled, 100), { passive: true });\nwindow.addEventListener('resize', throttle(controller.resized, 100));\nwindow.addEventListener('keydown', controller.keyDown);\nwindow.addEventListener('keydown', detectTabNav);\n\njQuery(document).on('touchend mouseup', (e) => {\n if (e.type === 'touchend') {\n handled = true;\n controller.mouseUp(e);\n } else if (e.type === 'mouseup' && !handled) {\n controller.mouseUp(e);\n } else {\n handled = false;\n }\n});\n\n// Gravity Forms\njQuery(document).bind('gform_post_render', controller.gformRender);\n"],"sourceRoot":""}