{"version":3,"sources":["site.js"],"names":["r","e","n","t","o","i","f","c","require","u","a","Error","code","p","exports","call","length","1","module","this","Object","assign","s","arguments","prototype","hasOwnProperty","apply","endVal","options","version","defaults","startVal","decimalPlaces","duration","useEasing","useGrouping","useIndianSeparators","smartEasingThreshold","smartEasingAmount","separator","decimal","prefix","suffix","enableScrollSpy","scrollSpyDelay","scrollSpyOnce","finalEndVal","countDown","error","paused","once","count","startTime","remaining","frameVal","easingFn","Number","toFixed","printValue","rAF","requestAnimationFrame","update","onCompleteCallback","formatNumber","Math","abs","split","l","h","numerals","replace","easeOutExpo","pow","formattingFn","validateValue","max","resetDuration","String","el","document","getElementById","window","console","onScrollFns","push","handleScroll","onscroll","forEach","innerHeight","scrollY","getBoundingClientRect","top","pageYOffset","height","setTimeout","start","reset","determineDirectionAndSmartEasing","onStartCallback","pauseResume","cancelAnimationFrame","plugin","render","tagName","value","textContent","innerHTML","ensureNumber","isNaN","concat","CountUp","defineProperty","define","amd","globalThis","self","countUp","2","Accordions","$accordion","optionsLogic","$accordionModule","$accordionSlides","$accordionNodes","exclusive","triggerClass","accordionContentClass","parentClass","activeClass","bindEvents","collapseAll","removeClass","slideUp","collapseAccordion","find","expandAccordion","addClass","slideDown","toggleVisibility","$parentNode","closest","hasClass","_self","on","ev","preventDefault","$","3","$leaders","$listing","zoomTiles","zoomFeature","./zoom-feature","4","magicController","globalVars","$bioHeader","$bioHeaderTrigger","mobileSettings","ScrollMagic","Scene","triggerHook","triggerElement","setClassToggle","parent","addTo","./global-vars","5","BuildPanel","item","publish","isExpanded","button","querySelector","content","updateState","type","classList","add","setAttribute","remove","toggle","addEventListener","expand","collapse","init","containers","Array","from","querySelectorAll","container","panels","expandCollapseButton","handleClick","toggleAll","items","elements","allExpanded","allCollapsed","toggleAction","ignorePublish","every","panel","updateToggleClass","map","expandAll","BuildPanels","CareersAccordion","6","emailTo","$modal","evt","enableScroll","removeEventListener","body","target","attr","location","href","7","ready","each","click","toggleClass","next","slideToggle","8","$tilesWrapper","9","observer","IntersectionObserver","entries","entry","isIntersecting","unobserve","threshold","observe","10","$featuredArticle","zoomArticle","direction","11","clamp","val","min","containerBottom","containerTop","practices","resizeTimeout","lastScrollY","scrollDirection","html","nav","navHeight","offsetHeight","topThreshold","bottomThreshold","isHomepage","withinScrollRange","style","scrollSnapType","practice","index","bottom","visibleHeight","practiceBottom","image","handleResize","clearTimeout","practicesContainers","practicesImages","zIndex","FeaturedPractices","12","$topics","$allTopicsBtn","$topicsList","$mobileToggle","mobileVar","isTopicsExpanded","toggleExpandedTopics","$filterToggle","data","filter","text","isMobile","13","cardsContainer","cardsContainerHeight","cardsContainerTop","cards","card","y","dy","step","progress","cardHeight","diff","transform","computedStyle","getComputedStyle","getPropertyValue","attachScrollListener","FlipCard","14","windowUtil","domValues","setupValues","mqMobile","headerDesktopHeight","headerDesktopHeightCollased","headerMobileHeight","windowHeight","windowWidth","mobileState","innerWidth","Controller","matchMedia","addListener","changed","15","assetsLoaded","showHero","heroVideo","backgroundImageSrc","dataset","backgroundImage","Image","src","Home","16","17","$tabMenu","$tabMenuButtons","$panelWrapper","$featureArticle","currentTabID","updateTabUI","$insightLanding","tabID","$tabButton","selectedID","18","COLLAPSED_HEADER_HEIGHT","SCROLL_PADDING","links","link","currentTarget","getAttribute","section","substring","offset","scrollTo","behavior","focus","preventScroll","JobsJumpLinks","19","$jumpMenuNodes","$sectionModules","$bodyHtml","nodeCollection","windowOffset","headerOffset","sceneCollection","populateNodeCollection","scrollToSection","updateNavStatus","addMagicSceneSection","$jumpMenu","$navNode","$relatedModule","sectionID","slice","navItem","eq","sectionName","directionOffset","sectionOffset","animate","scrollTop","moduleName","outerHeight","lastItemName","20","$jumpNavNodes","$jumpNavModules","getOffsetValues","$jumpNav","bioStickyHeaderOffset","scrollTotal","reverse","21","elemsToAnimate","startVisPoll","elem","clientRect","isInView","isScrolledPast","parentElement","22","global","undefined","scope","mobileSized","width","overlayTiming","closeFlyout","HomeApp","that","isScrolledPastHeader","_","hide","show","resize","off","reload","closeNotification","fadeOut","searchKeyup","toggleSearch","trigger","showOverlay","css","removeOverlay","menuHover","localName","not","showMenu","openFlyout","stopPropagation","closeMenu","scrollPastHero","$featureCard","$header","goToUrl","url","herf","expandSection","$target","$section","unload","test","navigator","userAgent","checkForHero","hasHeroImg","App","23","$filtersToggle","$filters","toggleAdvancedFilters","isFiltersExpanded","$peopleSearch","./select-dropdown","24","$practiceGrouping","$this","$grouping","$node","$content","./accordions","25","queryParams","URLSearchParams","search","sectionId","get","encodeURIComponent","toLowerCase","jumpNav","jumpNavHeight","clientHeight","26","nextButton","prevButton","slides","images","scrollContainer","slideObserver","currentIndex","handleNextButton","handleSlideChange","handleMobileScroll","scrollLeft","handlePrevButton","nextIndex","prevSlide","nextSlide","currentDot","nextDot","currentNumber","nextNumber","checkButtonState","nextX","left","disabled","addSlideNumbers","numberContainer","num","createElement","numberIndex","padStart","insertAdjacentElement","handleMobileObserver","indexOf","slide","prevIsMobile","checkMobile","layoutChanged","QuoteCarousel","27","$searchboxes","$inputBoxes","handleLabelEvent","handleFocus","handleBlur","$wrapper","28","$sectionNavNodes","$sectionNav","$isInitial","navLabel","29","updateFacadeText","initializeDropdowns","runCallback","selectLabel","$selectedItem","$selectLabel","currentText","siblings","callback","$selectDropdowns","30","$siteHeader","$homepage","$toggleSpanish","$toggleEnglish","ChangeLanguage","cultureCode","currentUrl","hostName","hostname","31","$panelDefault","$panelAjax","$appliedFilters","$resultsCount","runningAnimation","updatePanelUI","requestData","$siteSearch","32","stats","animations","startAnimation","inViewStat","hasRun","controller","statsObserver","stat","textArray","textObj","char","attemptNum","parseInt","join","countUpInstance","StatBlock","StatBlocks","countup.js","33","$stories","34","$subscribeNow","$subscribeNowTrigger","35","$mobileTrigger","updateDropdownLabel","prependTo","36","containerHeight","newY","TwoImageFlexPanel","37","handleFeatureHover","mouseEnterLogic","mouseLeaveLogic","timeoutID","$link","targetParentClass","customCallback","targetChildClass","38","./features/accordions","./features/attorney-area","./features/bio-sticky-header","./features/careers-accordion","./features/email-disclaimer","./features/expand-collapse","./features/experience-tiles","./features/fade-in","./features/featured-article-component","./features/featured-practices","./features/filter-toggles","./features/flip-cards","./features/global-vars","./features/home","./features/insight-tiles","./features/insights-landing","./features/jobs-jump-links","./features/jump-menu","./features/jump-navigation","./features/large-story-animate","./features/main","./features/people-search","./features/practice-grouping","./features/practices-landing","./features/quote-carousel","./features/searchbox","./features/section-navigation","./features/select-dropdown","./features/site-head","./features/site-search","./features/statblock","./features/stories-area","./features/subscribe-now","./features/tab-menu","./features/two-image-flex-panel","./features/zoom-feature"],"mappings":"CAAA,WAA+b,OAAnb,SAASA,EAAEC,EAAEC,EAAEC,GAAG,SAASC,EAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,IAAIE,EAAE,mBAAmBC,SAASA,QAAQ,IAAIF,GAAGC,EAAE,OAAOA,EAAEF,GAAE,GAAI,GAAGI,EAAE,OAAOA,EAAEJ,GAAE,GAAI,IAAIK,EAAE,IAAIC,MAAM,uBAAuBN,EAAE,KAAK,MAAMK,EAAEE,KAAK,mBAAmBF,EAAE,IAAIG,EAAEX,EAAEG,IAAIS,YAAYb,EAAEI,GAAG,GAAGU,KAAKF,EAAEC,QAAQ,SAASd,GAAoB,OAAOI,EAAlBH,EAAEI,GAAG,GAAGL,IAAeA,IAAIa,EAAEA,EAAEC,QAAQd,EAAEC,EAAEC,EAAEC,GAAG,OAAOD,EAAEG,GAAGS,QAAQ,IAAI,IAAIL,EAAE,mBAAmBD,SAASA,QAAQH,EAAE,EAAEA,EAAEF,EAAEa,OAAOX,IAAID,EAAED,EAAEE,IAAI,OAAOD,GAA7b,EAAA,EAA6ca,GAAG,SAAST,EAAQU,EAAOJ,GACve,IAASX,EAAEE,EAAFF,EAAsMgB,KAApMd,EAAyM,SAAUF,GAAG,aAAa,IAAIE,EAAE,WAAW,OAAOA,EAAEe,OAAOC,QAAQ,SAASlB,GAAG,IAAI,IAAIE,EAAEH,EAAE,EAAEoB,EAAEC,UAAUP,OAAOd,EAAEoB,EAAEpB,IAAI,IAAI,IAAID,KAAKI,EAAEkB,UAAUrB,GAAGkB,OAAOI,UAAUC,eAAeV,KAAKV,EAAEJ,KAAKE,EAAEF,GAAGI,EAAEJ,IAAI,OAAOE,IAAKuB,MAAMP,KAAKI,YAAYrB,EAAE,WAAW,SAASC,EAAEA,EAAED,EAAEoB,GAAG,IAAIrB,EAAEkB,KAAKA,KAAKQ,OAAOzB,EAAEiB,KAAKS,QAAQN,EAAEH,KAAKU,QAAQ,QAAQV,KAAKW,UAAUC,SAAS,EAAEC,cAAc,EAAEC,SAAS,EAAEC,WAAU,EAAGC,aAAY,EAAGC,qBAAoB,EAAGC,qBAAqB,IAAIC,kBAAkB,IAAIC,UAAU,IAAIC,QAAQ,IAAIC,OAAO,GAAGC,OAAO,GAAGC,iBAAgB,EAAGC,eAAe,IAAIC,eAAc,GAAI1B,KAAK2B,YAAY,KAAK3B,KAAKe,WAAU,EAAGf,KAAK4B,WAAU,EAAG5B,KAAK6B,MAAM,GAAG7B,KAAKY,SAAS,EAAEZ,KAAK8B,QAAO,EAAG9B,KAAK+B,MAAK,EAAG/B,KAAKgC,MAAM,SAAShD,GAAGF,EAAEmD,YAAYnD,EAAEmD,UAAUjD,GAAG,IAAIE,EAAEF,EAAEF,EAAEmD,UAAUnD,EAAEoD,UAAUpD,EAAEgC,SAAS5B,EAAEJ,EAAEiC,UAAUjC,EAAE8C,UAAU9C,EAAEqD,SAASrD,EAAE8B,SAAS9B,EAAEsD,SAASlD,EAAE,EAAEJ,EAAE8B,SAAS9B,EAAE0B,OAAO1B,EAAEgC,UAAUhC,EAAEqD,SAASrD,EAAEsD,SAASlD,EAAEJ,EAAE8B,SAAS9B,EAAE0B,OAAO1B,EAAE8B,SAAS9B,EAAEgC,UAAUhC,EAAEqD,SAASrD,EAAE8B,UAAU9B,EAAE0B,OAAO1B,EAAE8B,WAAW1B,EAAEJ,EAAEgC,UAAU,IAAI/B,EAAED,EAAE8C,UAAU9C,EAAEqD,SAASrD,EAAE0B,OAAO1B,EAAEqD,SAASrD,EAAE0B,OAAO1B,EAAEqD,SAASpD,EAAED,EAAE0B,OAAO1B,EAAEqD,SAASrD,EAAEqD,SAASE,OAAOvD,EAAEqD,SAASG,QAAQxD,EAAE2B,QAAQI,gBAAgB/B,EAAEyD,WAAWzD,EAAEqD,UAAUjD,EAAEJ,EAAEgC,SAAShC,EAAE0D,IAAIC,sBAAsB3D,EAAEkD,OAAO,OAAOlD,EAAE6C,YAAY7C,EAAE4D,OAAO5D,EAAE6C,aAAa7C,EAAE2B,QAAQkC,oBAAoB7D,EAAE2B,QAAQkC,sBAAsB3C,KAAK4C,aAAa,SAAS5D,GAAG,IAAIE,EAAEH,EAAEoB,EAAEZ,EAAEN,EAAED,EAAE,EAAE,IAAI,GAAGE,EAAE2D,KAAKC,IAAI9D,GAAGsD,QAAQxD,EAAE2B,QAAQI,eAAe,IAAIhC,GAAGK,GAAG,IAAI6D,MAAM,KAAK,GAAGhE,EAAEF,EAAE,GAAGsB,EAAEtB,EAAEgB,OAAO,EAAEf,EAAE2B,QAAQY,QAAQxC,EAAE,GAAG,GAAGC,EAAE2B,QAAQO,YAAY,CAACzB,EAAE,GAAG,IAAI,IAAIyD,EAAE,EAAE1D,EAAE,EAAE2D,EAAE,EAAEvD,EAAEX,EAAEc,OAAOoD,EAAEvD,IAAIuD,EAAEnE,EAAE2B,QAAQQ,qBAAqB,IAAIgC,IAAID,EAAE,EAAE1D,EAAE,GAAG,IAAI2D,GAAG3D,EAAE0D,GAAG,IAAIzD,EAAET,EAAE2B,QAAQW,UAAU7B,GAAGD,IAAIC,EAAER,EAAEW,EAAEuD,EAAE,GAAG1D,EAAER,EAAEQ,EAAE,OAAOT,EAAE2B,QAAQyC,UAAUpE,EAAE2B,QAAQyC,SAASrD,SAASd,EAAEA,EAAEoE,QAAQ,SAAS,SAAUnE,GAAG,OAAOF,EAAE2B,QAAQyC,UAAUlE,KAAMmB,EAAEA,EAAEgD,QAAQ,SAAS,SAAUnE,GAAG,OAAOF,EAAE2B,QAAQyC,UAAUlE,MAAOC,EAAEH,EAAE2B,QAAQa,OAAOvC,EAAEoB,EAAErB,EAAE2B,QAAQc,QAAQvB,KAAKoD,YAAY,SAASpE,EAAEE,EAAEH,EAAEoB,GAAG,OAAOpB,GAAG,EAAE8D,KAAKQ,IAAI,GAAG,GAAGrE,EAAEmB,IAAI,KAAK,KAAKjB,GAAGc,KAAKS,QAAQvB,EAAEA,KAAKc,KAAKW,UAAUR,GAAGH,KAAKsD,aAAatD,KAAKS,QAAQ6C,aAAatD,KAAKS,QAAQ6C,aAAatD,KAAK4C,aAAa5C,KAAKoC,SAASpC,KAAKS,QAAQ2B,SAASpC,KAAKS,QAAQ2B,SAASpC,KAAKoD,YAAYpD,KAAKY,SAASZ,KAAKuD,cAAcvD,KAAKS,QAAQG,UAAUZ,KAAKmC,SAASnC,KAAKY,SAASZ,KAAKQ,OAAOR,KAAKuD,cAAcxE,GAAGiB,KAAKS,QAAQI,cAAcgC,KAAKW,IAAIxD,KAAKS,QAAQI,eAAeb,KAAKyD,gBAAgBzD,KAAKS,QAAQW,UAAUsC,OAAO1D,KAAKS,QAAQW,WAAWpB,KAAKe,UAAUf,KAAKS,QAAQM,UAAU,KAAKf,KAAKS,QAAQW,YAAYpB,KAAKS,QAAQO,aAAY,GAAIhB,KAAK2D,GAAG,iBAAiB3E,EAAE4E,SAASC,eAAe7E,GAAGA,EAAEgB,KAAK2D,GAAG3D,KAAKuC,WAAWvC,KAAKY,UAAUZ,KAAK6B,MAAM,wCAAwC,oBAAoBiC,QAAQ9D,KAAKS,QAAQe,kBAAkBxB,KAAK6B,MAAMkC,QAAQlC,MAAM7B,KAAK6B,MAAM7C,IAAI8E,OAAOE,YAAYF,OAAOE,gBAAgBF,OAAOE,YAAYC,KAAK,WAAY,OAAOnF,EAAEoF,aAAapF,KAAMgF,OAAOK,SAAS,WAAWL,OAAOE,YAAYI,QAAQ,SAAUpF,GAAG,OAAOA,OAAQgB,KAAKkE,aAAalE,QAAQ,OAAOhB,EAAEqB,UAAU6D,aAAa,SAASlF,GAAG,GAAGA,GAAG8E,SAAS9E,EAAE+C,KAAK,CAAC,IAAI7C,EAAE4E,OAAOO,YAAYP,OAAOQ,QAAQvF,EAAEC,EAAE2E,GAAGY,wBAAwBpE,EAAEpB,EAAEyF,IAAIV,OAAOW,YAAY3F,EAAEC,EAAEyF,IAAIzF,EAAE2F,OAAOZ,OAAOW,YAAY3F,EAAEI,GAAGJ,EAAEgF,OAAOQ,SAAStF,EAAE8C,QAAQ9C,EAAE8C,QAAO,EAAG6C,WAAW,WAAY,OAAO3F,EAAE4F,SAAU5F,EAAEyB,QAAQgB,gBAAgBzC,EAAEyB,QAAQiB,gBAAgB1C,EAAE+C,MAAK,KAAM+B,OAAOQ,QAAQxF,GAAGqB,EAAEjB,KAAKF,EAAE8C,QAAQ9C,EAAE6F,UAAU7F,EAAEqB,UAAUyE,iCAAiC,WAAW,IAAI9F,EAAEgB,KAAK2B,YAAY3B,KAAK2B,YAAY3B,KAAKQ,OAAOR,KAAK4B,UAAU5B,KAAKY,SAAS5B,EAAE,IAAIE,EAAEF,EAAEgB,KAAKY,SAAS,GAAGiC,KAAKC,IAAI5D,GAAGc,KAAKS,QAAQS,sBAAsBlB,KAAKS,QAAQM,UAAU,CAACf,KAAK2B,YAAY3C,EAAE,IAAID,EAAEiB,KAAK4B,UAAU,GAAG,EAAE5B,KAAKQ,OAAOxB,EAAED,EAAEiB,KAAKS,QAAQU,kBAAkBnB,KAAKc,SAASd,KAAKc,SAAS,OAAOd,KAAKQ,OAAOxB,EAAEgB,KAAK2B,YAAY,KAAK,OAAO3B,KAAK2B,YAAY3B,KAAKe,WAAU,EAAGf,KAAKe,UAAUf,KAAKS,QAAQM,WAAW/B,EAAEqB,UAAUuE,MAAM,SAAS5F,GAAGgB,KAAK6B,QAAQ7B,KAAKS,QAAQsE,iBAAiB/E,KAAKS,QAAQsE,kBAAkB/F,IAAIgB,KAAKS,QAAQkC,mBAAmB3D,GAAGgB,KAAKc,SAAS,GAAGd,KAAK8E,mCAAmC9E,KAAK8B,QAAO,EAAG9B,KAAKwC,IAAIC,sBAAsBzC,KAAKgC,QAAQhC,KAAKuC,WAAWvC,KAAKQ,UAAUxB,EAAEqB,UAAU2E,YAAY,WAAWhF,KAAK8B,QAAQ9B,KAAKiC,UAAU,KAAKjC,KAAKc,SAASd,KAAKkC,UAAUlC,KAAKY,SAASZ,KAAKmC,SAASnC,KAAK8E,mCAAmC9E,KAAKwC,IAAIC,sBAAsBzC,KAAKgC,QAAQiD,qBAAqBjF,KAAKwC,KAAKxC,KAAK8B,QAAQ9B,KAAK8B,QAAQ9C,EAAEqB,UAAUwE,MAAM,WAAWI,qBAAqBjF,KAAKwC,KAAKxC,KAAK8B,QAAO,EAAG9B,KAAKyD,gBAAgBzD,KAAKY,SAASZ,KAAKuD,cAAcvD,KAAKS,QAAQG,UAAUZ,KAAKmC,SAASnC,KAAKY,SAASZ,KAAKuC,WAAWvC,KAAKY,WAAW5B,EAAEqB,UAAUqC,OAAO,SAAS1D,GAAGiG,qBAAqBjF,KAAKwC,KAAKxC,KAAKiC,UAAU,KAAKjC,KAAKQ,OAAOR,KAAKuD,cAAcvE,GAAGgB,KAAKQ,SAASR,KAAKmC,WAAWnC,KAAKY,SAASZ,KAAKmC,SAAS,MAAMnC,KAAK2B,aAAa3B,KAAKyD,gBAAgBzD,KAAK2B,YAAY,KAAK3B,KAAK8E,mCAAmC9E,KAAKwC,IAAIC,sBAAsBzC,KAAKgC,SAAShD,EAAEqB,UAAUkC,WAAW,SAASvD,GAAG,IAAIE,EAAE,GAAGc,KAAK2D,GAAG,CAAC,IAAI5E,EAAEiB,KAAKsD,aAAatE,IAAM,QAAQE,EAAEc,KAAKS,QAAQyE,cAAS,IAAShG,OAAE,EAAOA,EAAEiG,QAAOnF,KAAKS,QAAQyE,OAAOC,OAAOnF,KAAK2D,GAAG5E,GAAW,UAAUiB,KAAK2D,GAAGyB,QAAQpF,KAAK2D,GAAG0B,MAAMtG,EAAM,SAASiB,KAAK2D,GAAGyB,SAAS,UAAUpF,KAAK2D,GAAGyB,QAAQpF,KAAK2D,GAAG2B,YAAYvG,EAAEiB,KAAK2D,GAAG4B,UAAUxG,IAAIC,EAAEqB,UAAUmF,aAAa,SAASxG,GAAG,MAAM,iBAAiBA,IAAIyG,MAAMzG,IAAIA,EAAEqB,UAAUkD,cAAc,SAASvE,GAAG,IAAIE,EAAEmD,OAAOrD,GAAG,OAAOgB,KAAKwF,aAAatG,GAAGA,GAAGc,KAAK6B,MAAM,yCAAyC6D,OAAO1G,GAAG,OAAOA,EAAEqB,UAAUoD,cAAc,WAAWzD,KAAKiC,UAAU,KAAKjC,KAAKc,SAAS,IAAIuB,OAAOrC,KAAKS,QAAQK,UAAUd,KAAKkC,UAAUlC,KAAKc,UAAU9B,EAAh1K,GAAq1KA,EAAE2G,QAAQ5G,EAAEkB,OAAO2F,eAAe5G,EAAE,cAAcqG,OAAM,KAAn0L,iBAAiB1F,QAAS,IAAoBI,EAAOb,EAAES,GAAS,mBAAmBkG,QAAQA,OAAOC,IAAID,QAAQ,WAAW3G,GAAGA,GAAGF,EAAE,oBAAoB+G,WAAWA,WAAW/G,GAAGgH,MAAMC,iBAE7LC,GAAG,SAAS7G,EAAQU,EAAOJ,GACjC,aAGA,SAASwG,EAAWC,EAAYC,GAC5BrG,KAAKsG,iBAAmBF,EACxBpG,KAAKuG,iBAAmB,KACxBvG,KAAKwG,gBAAkB,KACvBxG,KAAKS,QAAU4F,IACXI,WAAW,EACX3F,SAAU,IACV4F,aAAc,uBACdC,sBAAuB,uBACvBC,YAAa,oBACbC,YAAa,eAGjB7G,KAAK8G,aAGTX,EAAW9F,UAAU0G,YAAc,WAC/B/G,KAAKwG,gBAAgBQ,YAAYhH,KAAKS,QAAQoG,aAC9C7G,KAAKuG,iBAAiBU,WAG1Bd,EAAW9F,UAAU6G,kBAAoB,SAAkBd,GACvDA,EAAWY,YAAYhH,KAAKS,QAAQoG,aACpCT,EAAWe,KAAK,IAAMnH,KAAKS,QAAQkG,uBAAuBM,QAAQjH,KAAKS,QAAQK,WAGnFqF,EAAW9F,UAAU+G,gBAAkB,SAAgBhB,GAE/CpG,KAAKS,QAAQgG,WACbzG,KAAK+G,cAGTX,EAAWiB,SAASrH,KAAKS,QAAQoG,aACjCT,EAAWe,KAAK,IAAMnH,KAAKS,QAAQkG,uBAAuBW,UAAUtH,KAAKS,QAAQK,WAKrFqF,EAAW9F,UAAUkH,iBAAmB,SAAgBnB,GACpD,IAAIoB,EAAcpB,EAAWqB,QAAQ,IAAMzH,KAAKS,QAAQmG,aAEtDY,EAAYE,SAAS1H,KAAKS,QAAQoG,aAAiB7G,KAAKkH,kBAAkBM,GAAexH,KAAKoH,gBAAgBI,IAGpHrB,EAAW9F,UAAUyG,WAAa,WAE9B,IAAIa,EAAQ3H,KAGZ2H,EAAMrB,iBAAiBsB,GAAG,mBAAoB,IAAMD,EAAMlH,QAAQiG,aAAc,SAASmB,GACrFA,EAAGC,iBAEHH,EAAMJ,iBAAiBQ,EAAE/H,SAMzB2H,EAAMlH,QAAQgG,YACdkB,EAAMpB,iBAAmBoB,EAAMrB,iBAAiBa,KAAK,IAAMQ,EAAMlH,QAAQkG,uBACzEgB,EAAMnB,gBAAkBmB,EAAMrB,iBAAiBa,KAAK,IAAMQ,EAAMlH,QAAQmG,eAMhF7G,EAAOJ,QAAUwG,OACX6B,GAAG,SAAS3I,EAAQU,EAAOJ,GACjCoI,EAAE,WACD,aAEA,IAAIE,EACHC,GAIDD,EAAWF,EAAE,mBAEAlI,SAIbqI,EAAWD,EAASd,KAAK,2BAEzBgB,EAAa9I,EAAQ,kBAAkB+I,aAE7BF,EAAU,kCAAmC,iBAIrDG,iBAAiB,KAAKC,GAAG,SAASjJ,EAAQU,EAAOJ,GACpDoI,EAAE,WACE,aAEA,IAEIQ,EAKAC,EAPAC,EAAaV,EAAE,yBACfW,EAAoBX,EAAE,mCAY1BS,EAAanJ,EAAQ,kBAEEsJ,eAEvBJ,EAAkBC,EAAWD,gBAEzBG,EAAkB,IAEC,IAAIE,YAAYC,OAC/BC,YAAa,IACbC,eAAgBL,EAAkB,KAEjCM,eAAeP,EAAWQ,SAAS,GArBvB,gBAsBZC,MAAMX,OAIhBY,gBAAgB,KAAKC,GAAG,SAAS/J,EAAQU,EAAOJ,GA6GnD,MAAM0J,EAAa,CAACC,EAAMC,KACxB,IAAIC,GAAa,EACjB,MAAMC,EAASH,EAAKI,cAAc,oCAC5BC,EAAUL,EAAKI,cAAc,qCAE7BE,EAAeC,IACnB,OAAQA,GACN,IAAK,SACHP,EAAKQ,UAAUC,IAAI,YACnBN,EAAOO,aAAa,gBAAiB,QACrCL,EAAQK,aAAa,cAAe,SACpCR,GAAa,EACb,MAEF,IAAK,WACHF,EAAKQ,UAAUG,OAAO,YACtBR,EAAOO,aAAa,gBAAiB,SACrCL,EAAQK,aAAa,cAAe,QACpCR,GAAa,EACb,MAEF,IAAK,SACL,QACEF,EAAKQ,UAAUI,OAAO,YACtBV,GAAcA,EACdC,EAAOO,aAAa,mBAAoBR,KACxCG,EAAQK,aAAa,kBAAmBR,KAI5CD,KAGFE,EAAOU,iBAAiB,QAAS,KAC/BP,EAAY,YAWd,OACEH,OAAAA,EACAE,QAAAA,EACAS,OAXa,KACbR,EAAY,WAWZS,SARe,KACfT,EAAY,aAQZJ,iBACE,OAAOA,OAnJFc,KAXI,KACX,MAAMC,EAAaC,MAAMC,KACvB7G,SAAS8G,iBAAiB,uBAEvBH,EAAW1K,QAChB0K,EAAWnG,QAASuG,KASxB,SAA0BA,GACxB,IAAIC,EACAC,EAEJ,MAiBMC,EAAc,KAClBF,EAAOG,aAGT,OAAST,KArBI,KACX,MAAMU,EAAQR,MAAMC,KAClBE,EAAUD,iBAAiB,6BAE7BG,EAAuBF,EAAUjB,cAC/B,8CAGGsB,EAAMnL,SAEX+K,EAcJ,SAAqBK,EAAUf,GAC7B,IAAIc,EACAE,GAAc,EACdC,GAAe,EACfC,EAAe,SACfC,GAAgB,EAEpB,MAAM9B,EAAU,KACV8B,IACJH,EAAcF,EAAMM,MAAOC,IAA+B,IAArBA,EAAM/B,YAC3C2B,EAAeH,EAAMM,MAAOC,IAA+B,IAArBA,EAAM/B,YAExC0B,IAAaE,EAAe,YAC5BD,IAAcC,EAAe,UAEjCI,MAgCIA,EAAoB,KACnBtB,IAEgB,WAAjBkB,EACFlB,EAAOJ,UAAUG,OAAO,YACE,aAAjBmB,GACTlB,EAAOJ,UAAUC,IAAI,cAIzB,OACEiB,MAxCFA,EAAQC,EAASQ,IAAKnC,IACpB,MAAMiC,EAAQlC,EAAWC,EAAMC,GAC/B,OAAOgC,IAuCPG,UApCgB,KAChBV,EAAM5G,QAASkF,IACbA,EAAKc,YAmCPrD,YA/BkB,KAClBiE,EAAM5G,QAASkF,IACbA,EAAKe,cA8BPU,UA1BgB,KAChBM,GAAgB,EAChBL,EAAM5G,QAASkF,IACbA,EAAK8B,OAEPF,GAAeA,EAEfE,GADAD,GAAgBA,GACc,SAAW,WACzCK,IACAH,GAAgB,IA1DPM,CAAYX,EAAOH,GAExBA,GACFA,EAAqBV,iBAAiB,QAASW,OAzBtBc,CAAiBjB,GACzBL,YA6JLA,YAEZuB,GAAG,SAASxM,EAAQU,EAAOJ,GACjCoI,EAAE,WACE,aAEA,IAAI+D,EACAC,EAIJ,SAASjE,EAAekE,GAAOA,EAAIlE,iBAyBnC,SAASmE,IACLnI,OAAOoI,oBAAoB,QAASpE,GACpChE,OAAOoI,oBAAoB,YAAapE,GA7B5CiE,EAAShE,EAAE,wBAIXA,EAAEnE,SAASuI,MAAMvE,GAAG,QAAS,4BAA6B,SAAU9I,GAmBhEgF,OAAOqG,iBAAiB,QAASrC,GACjChE,OAAOqG,iBAAiB,YAAarC,GAlBrCgE,EAAU/D,EAAEjJ,EAAEsN,QAAQC,KAAK,iBAC3BN,EAAO1E,SAAS,YAGpBU,EAAEnE,SAASuI,MAAMvE,GAAG,QAAS,iBAAkB,WACxCkE,GAAuB,KAAZA,IACVhI,OAAOwI,SAASC,KAAO,UAAYT,GACvCC,EAAO/E,YAAY,UACnBiF,MAGJlE,EAAEnE,SAASuI,MAAMvE,GAAG,QAAS,gBAAiB,WAC1CmE,EAAO/E,YAAY,UACnBiF,aAaFO,GAAG,SAASnN,EAAQU,EAAOJ,GACjCoI,EAAEnE,UAAU6I,MAEZ,WAC0B1E,EAAE,eACR2E,KAAK,WACjB3E,EAAE/H,MAAM2M,MAAM,WACV5E,EAAE/H,MAAM4M,YAAY,YACpB7E,EAAE/H,MAAM6M,OAAOC,yBAQrBC,GAAG,SAAS1N,EAAQU,EAAOJ,GACjCoI,EAAE,WACA,aAEA,IAAIiF,EAAgBjF,EAAE,wBAGlBiF,EAAcnN,SAIlBsI,EAAa9I,EAAQ,kBAAkB+I,aAE7B4E,EAAe,eAAgB,iBAKxC3E,iBAAiB,KAAK4E,GAAG,SAAS5N,EAAQU,EAAOJ,KAsBzC2K,KApBI,KACX,MAAMW,EAAWT,MAAMC,KAAK7G,SAAS8G,iBAAiB,gBACtD,IAAKO,EAASpL,OAAQ,OAEtB,MAAMqN,EAAW,IAAIC,qBAClBC,IACCA,EAAQhJ,QAASiJ,IACXA,EAAMC,iBACRD,EAAMjB,OAAOtC,UAAUC,IAAI,WAC3BmD,EAASK,UAAUF,EAAMjB,aAI7BoB,UAAW,MAEfvC,EAAS7G,QAAST,IAChBuJ,EAASO,QAAQ9J,QAQhB2G,YACDoD,IAAI,SAASrO,EAAQU,EAAOJ,GAClCoI,EAAE,WACD,aAEG,IAAI4F,EAAmB5F,EAAE,+BAE5B,GAAK4F,EAAiB9N,OAAtB,EAaA+N,EATkBvO,EAAQ,kBAAkB+I,aAShCuF,EAAkB,yBAA0B,mBARxC,SAAUE,GACJ,WAAdA,EACAF,EAAiBtG,SAAS,aAE1BsG,EAAiB3G,YAAY,oBAQnCqB,iBAAiB,KAAKyF,IAAI,SAASzO,EAAQU,EAAOJ,GAsFrD,MAAMoO,EAAQ,CAACC,EAAKC,EAAKzK,IAChBwK,EAAMC,EAAMA,EAAMD,EAAMxK,EAAMA,EAAMwK,GAtF7C,WACE,IAAIrD,EACAuD,EACAC,EACJ,MAAMC,KAEN,IAEIC,EAFAC,EAAc,EACdC,EAAkB,OAGtB,MA2BMrK,EAAe,KACfoK,EAAcxK,OAAOQ,QACvBiK,EAAkB,OACTD,EAAcxK,OAAOQ,UAC9BiK,EAAkB,MAEpBD,EAAcxK,OAAOQ,QACrB,MAAMkK,EAAO5K,SAAS8F,cAAc,QAC9B+E,EAAM7K,SAAS8F,cAAc,OAC7BgF,EAAYD,EAAIE,aAChBC,EAAeT,EAAerK,OAAOO,YAAc,EACnDwK,EACgB,SAApBN,EACIL,EAAkBpK,OAAOO,YACzB6J,EAAkBpK,OAAOO,YAAc,EACvCyK,EAAiD,OAApClL,SAAS8F,cAAc,SACpCqF,EAAoBjL,OAAOQ,SAAWuK,IAAoBC,GAAchL,OAAOQ,SAAWsK,GAChGJ,EAAKQ,MAAMC,eAAiBF,EAAoB,cAAgB,OAChEnL,SAAS8F,cAAc,6BAA6BsF,MAAMxK,OAASiK,EAAIE,iBAEvEP,EAAUhK,QAAQ,CAAC8K,EAAUC,KAE3B,GADAD,EAASvE,UAAUqE,MAAM,wBAA0BP,EAAIE,iBACnDQ,IAAUf,EAAUvO,OAAS,EAAG,CAClC,MAAMuP,EAASF,EAASvE,UAAUpG,wBAAwB6K,OACpDC,EAAgBvL,OAAOO,YAAcqK,EACrCY,EAAiBF,EAASV,EAChCQ,EAASK,MAAMP,MAAMtK,UAAYqJ,EAC/BuB,EACA,EACAD,WAMFG,EAAe,KACfnB,GAAeoB,aAAapB,GAChCA,EAAgB1J,WAAW,KACzB,MAAMH,IAAEA,EAAG4K,OAAEA,GAAWzE,EAAUpG,wBAClC2J,EAAkBkB,EAAStL,OAAOQ,SACjC,KAGL,OACEgG,KAvEW,KACXK,EAAY/G,SAAS8F,cAAc,uBAEnC,MAAMgG,EAAsBlF,MAAMC,KAChC7G,SAAS8G,iBAAiB,wBAEtBiF,EAAkBnF,MAAMC,KAC5B7G,SAAS8G,iBAAiB,qCAE5B,IAAKC,IAAc+E,EAAoB7P,SAAW8P,EAAgB9P,OAChE,OAEF,MAAM2E,IAAEA,EAAG4K,OAAEA,GAAWzE,EAAUpG,wBAClC2J,EAAkBkB,EAClBjB,EAAe3J,EACfmL,EAAgBvL,QAAQ,CAACmL,EAAOJ,KAC9BI,EAAMP,MAAMY,OAASD,EAAgB9P,OAASsP,IAEhDO,EAAoBtL,QAAQ,CAACuG,EAAWwE,KACtCf,EAAUnK,MAAO0G,UAAAA,EAAW4E,MAAOI,EAAgBR,OAGrDvL,SAASuG,iBAAiB,SAAUjG,GACpCN,SAASuG,iBAAiB,SAAUqF,MAwDfK,GACRvF,YAEXwF,IAAI,SAASzQ,EAAQU,EAAOJ,GAClCoI,EAAE,WACD,aAEA,IACCgI,EAEAC,EACAC,EACAC,EAGA1H,EACA2H,EAEAC,EACAC,EAZGC,EAAgBvI,EAAE,qBAgBjBuI,EAAczQ,SAMnB2I,EAAanJ,EAAQ,iBAErB8Q,EAAY3H,EAAWG,eAEvBsH,EAAcK,EAAcnJ,KAAK,mBACjC4I,EAAUO,EAAcnJ,KAAK,aAC7B+I,EAAgBI,EAAcnJ,KAAK,kBACnC6I,EAAgBM,EAAcnJ,KAAK,iBAEnB8I,EAAYM,KAAK,mBACmB,IAEpCR,EAAQS,OAAO,iBACb,cACF,cAEhBJ,GAAmB,EAanBC,EAAuB,WACnBD,GACFJ,EAAcS,KAAKT,EAAcO,KAAK,mBAEtCH,GAAmB,IAGnBJ,EAAcS,KAAKT,EAAcO,KAAK,kBAEtCH,GAAmB,IAYrBF,EAActI,GAAG,qBAAsB,SAASC,GAC/CA,EAAGC,iBAEAqI,EAAUO,WACZR,EAActD,YAzCE,eA0ChBqD,EAAYnD,iBAIdkD,EAAcpI,GAAG,sBAAuB,SAASC,GAChDA,EAAGC,iBAEHuI,WAGClH,gBAAgB,KAAKwH,IAAI,SAAStR,EAAQU,EAAOJ,GA4FpD,MAAMoO,EAAQ,CAACC,EAAKC,EAAKzK,IAChBwK,EAAMC,EAAMA,EAAMD,EAAMxK,EAAMA,EAAMwK,IAjFlC1D,KAVI,KACX,MAAMC,EAAaC,MAAMC,KAAK7G,SAAS8G,iBAAiB,gBACnDH,EAAW1K,QAEhB0K,EAAWnG,QAASuG,KASxB,SAAkBA,GAChB,IAAIiG,EACAC,EACAC,EACAC,EAEAL,EAEJ,MAsBM5F,EAAekG,IACnBA,EAAKlH,UAAUI,OAAO,YAGlBhG,EAAe,KACnB,MAAM+M,EAAInN,OAAOQ,QACX4M,EAAKD,EAAIH,EAAoBhN,OAAOO,YACpC4J,GAAOnK,OAAOO,YACdb,EAAMsN,EAAoBD,EAChC,GAAIK,EAAKjD,GAAOiD,EAAK1N,EAAK,OAE1B,MAAM2N,EAAOpD,EAAMmD,EAAIjD,EAAKzK,GACtB4N,EAAWD,GAAQN,EAAuB/M,OAAOO,aAEvD0M,EAAM3M,QAAQ,CAAC4M,EAAM7B,KACnB,MAAMkC,EAAaL,EAAKrC,aAClB2C,EAAOT,EAAuBQ,EACpC,IAAIH,EAAKI,EAAOF,EACF,IAAVjC,IAAa+B,IAAO,GAExBF,EAAKhC,MAAMuC,8BAAgCL,eAIzC1B,EAAe,KACnB1L,OAAOoI,oBAAoB,SAAUhI,GACrC,MAAMsN,EAAgBC,iBAAiBb,IACvCF,EAA4D,SAAjDc,EAAcE,iBAAiB,eAExCX,EAAM3M,QAAS4M,IACbA,EAAKhC,MAAMuC,UAAY,+BAI3BI,KAGIA,EAAuB,KAC3B,MAAMnN,IAAEA,EAAGE,OAAEA,GAAWkM,EAAerM,wBACvCsM,EAAuBnM,EACvBoM,EAAoBtM,EAAMV,OAAOQ,QACjCR,OAAOqG,iBAAiB,SAAUjG,IAGpC,OAASoG,KAlEI,KAEX,KADAsG,EAAiBjG,EAAUjB,cAAc,sBACpB,OAKrB,KAHAqH,EAAQvG,MAAMC,KACZmG,EAAelG,iBAAiB,4BAEvB7K,OAAQ,OAEnBkR,EAAM3M,QAAS4M,IACb,MAAMvH,EAASuH,EAAKtH,cAAc,uBAC9BD,GACFA,EAAOU,iBAAiB,QAAS,IAAMW,EAAYkG,MAGvD,MAAMQ,EAAgBC,iBAAiBb,IACvCF,EAA4D,SAAjDc,EAAcE,iBAAiB,gBAE3BC,IACf7N,OAAOqG,iBAAiB,SAAUqF,MAnCfoC,CAASjH,GACjBL,YAyFLA,YAEJuH,IAAI,SAASxS,EAAQU,EAAOJ,GAGlCoI,EAAE,WACD,aAGA,IAAI+J,EACHnJ,EACAoJ,EAGAC,EAGAC,EAGA1J,EAGDI,GACC+H,UAAU,GAGXqB,GACCG,oBAAqB,GACrBC,4BAA6B,GAC7BC,mBAAoB,IAGrBN,GACCO,aAAc,KACdC,YAAa,MAGdN,EAAc,SAASO,GACtB5J,EAAe+H,SAAW6B,EAC1BT,EAAWO,aAAevO,OAAOO,YACjCyN,EAAWQ,YAAcxO,OAAO0O,YAGjCjK,EAAkB,IAAIK,YAAY6J,YAIlCR,EAAWnO,OAAO4O,WAAW,uBAEZ,QAAIV,GAAY,GAAQA,GAAY,GAErDC,EAASU,YAAa,SAASC,GAC7BA,EAAe,QAAIZ,GAAY,GAAQA,GAAY,KAGrDjS,EAAOJ,SACNgJ,eAAgBA,EAChBmJ,WAAYA,EACZC,UAAWA,EACXxJ,gBAAiBA,UAGbsK,IAAI,SAASxT,EAAQU,EAAOJ,IAClC,WACE,IAAIgL,EACAmI,GAAe,EACnB,MA+BMC,EAAW,KACVpI,IAAamI,IAClBA,GAAe,EACfnI,EAAUb,UAAUC,IAAI,UAG1B,OAASO,KArCI,KAEX,KADAK,EAAY/G,SAAS8F,cAAc,4BACnB,OAEhB,MACMgH,EAA4D,SAD5Ce,iBAAiB9G,GACR+G,iBAAiB,cAC1CsB,EAAYrI,EAAUjB,cAAc,yBAC1C,IAAKsJ,IAActC,EAEjB,YADAqC,IAIF,MAAME,EAAqBtI,EAAUuI,QAAQC,gBAC7C,IAAIA,EAAkB,IAAIC,MAC1BD,EAAgBhJ,iBAAiB,OAAQ,KACvCQ,EAAUqE,MAAMmE,uBAAyBF,KACzCF,IACAI,EAAkB,OAEpBA,EAAgBhJ,iBAAiB,QAAS,KACxC4I,IACAI,EAAkB,OAEpBA,EAAgBE,IAAMJ,EAEjBvC,IACHsC,EAAU7I,iBAAiB,iBAAkB4I,GAC7CC,EAAU7I,iBAAiB,QAAS4I,OAa7BO,GACRhJ,YAECiJ,IAAI,SAASlU,EAAQU,EAAOJ,GAClCoI,EAAE,WACA,aAEA,IAAIiF,EAAgBjF,EAAE,qBAGlBiF,EAAcnN,SAIlBsI,EAAa9I,EAAQ,kBAAkB+I,aAE7B4E,EAAe,eAAgB,iBAExC3E,iBAAiB,KAAKmL,IAAI,SAASnU,EAAQU,EAAOJ,GACrDoI,EAAE,WACD,aAEA,IACC0L,EACAC,EACAC,EAGAC,EAGAC,EAUAC,EAnBGC,EAAkBhM,EAAE,wBA4BnBgM,EAAgBlU,SAKRR,EAAQ,iBAEEsJ,eAGvB8K,EAAWM,EAAgB5M,KAAK,gBAChCuM,EAAkBD,EAAStM,KAAK,oBAChCwM,EAAgBI,EAAgB5M,KAAK,eACPA,KAAK,qBACtBwM,EAAcxM,KAAK,kBAEhCyM,EAAkB7L,EAAE,qBAEC,cACF,cAEE,qBAEF,EAEL,SAASiM,KAcvBF,EAAc,SAASG,GACtBP,EAAgB1M,YAtBI,eAuBpBiN,EAAW5M,SAvBS,gBA0BL,SAAS2M,KA4BzBP,EAAS7L,GAAG,QAAS,kBAAmB,SAASC,GAChDA,EAAGC,iBAEH,IAAIH,EAAQI,EAAE/H,MACbkU,EAAavM,EAAM4I,KAAK,UAEtB2D,IAAeL,GAIlBC,EAAYnM,KAKbkM,EAAgBH,EAAgBlD,OAAO,gBAAgBD,KAAK,UAGzDqD,EAAgB/T,SAClB+N,EAAevO,EAAQ,kBAAkB+I,aAU3BwL,EAAiB,yBAA0B,mBAT7C,SAAS/F,GAEH,WAAdA,EACF+F,EAAgBvM,SAAS,aAEzBuM,EAAgB5M,YAAY,oBAO7BmC,gBAAgB,GAAGd,iBAAiB,KAAK8L,IAAI,SAAS9U,EAAQU,EAAOJ,GACxE,MAAMyU,EAA0B,GAC1BC,EAAiB,IAEvB,WACE,IAAI7K,GAAa,EAiCjB,OAASc,KAhCI,KACX,MAAMK,EAAY/G,SAAS8F,cAAc,kCACzC,IAAKiB,EAAW,OAEhB,MAAM8D,EAAM9D,EAAUjB,cAAc,2CAC9BD,EAASkB,EAAUjB,cAAc,0CACjC4K,EAAQ9J,MAAMC,KAAKE,EAAUD,iBAAiB,mCAE/CjB,GAAWgF,GAAQ6F,EAAMzU,SAE9B4J,EAAOU,iBAAiB,QAAS,KAC/BX,GAAcA,EACdmB,EAAUb,UAAUI,OAAO,YAC3BT,EAAOO,aAAa,mBAAoBR,KACxCiF,EAAIzE,aAAa,kBAAmBR,OAGtC8K,EAAMlQ,QAASmQ,IACbA,EAAKpK,iBAAiB,QAAUrL,IAC9BA,EAAEgJ,iBACF,MAAMyE,EAAOzN,EAAE0V,cAAcC,aAAa,QAC1C,IAAKlI,EAAM,OACX,MAAMmI,EAAU9Q,SAASC,eAAe0I,EAAKoI,UAAU,MACvD,IAAKD,EAAS,OACd,MAAME,EAASR,EAA0BC,EAAiB1J,EAAUgE,aAC9DnK,EAAMkQ,EAAQnQ,wBAAwBC,IAAMV,OAAOQ,QACzDR,OAAO+Q,UAAWrQ,IAAKA,EAAMoQ,EAAQE,SAAU,WAC/CJ,EAAQK,OAAQC,eAAe,YAQjBC,GACR3K,YAER4K,IAAI,SAAS7V,EAAQU,EAAOJ,GAClCoI,EAAE,WACE,aAEA,IACIoN,EACAC,EACAC,EAKAC,EAGAC,EACAC,EAEAjN,EACAkN,EAGAC,EACAC,EACAC,EACAC,EAEArN,EACA2H,EAxBA2F,EAAY/N,EAAE,iBA0BlB,GAAK+N,EAAUjW,OAAf,CAKAwV,EAAYtN,EAAE,aAEdoN,EAAiBW,EAAU3O,KAAK,gBAChCiO,EAAmBrN,EAAE,0BAA0BZ,KAAK,yBAEnC,cAKjBgJ,GAFA3H,EAAanJ,EAAQ,kBAEEsJ,eAEvBJ,EAAkBC,EAAWD,gBAE7BkN,KAGItF,EAAUO,UACV8E,EAAehN,EAAWuJ,UAAUK,mBACpCmD,EAAeC,EAAe,KAG9BA,EAAehN,EAAWuJ,UAAUG,oBACpCqD,EAAeC,EAAe,IAIlCE,EAAwB,SAASK,GAE7B,IAAIC,EACAC,EAAYF,EAAS,GAAGtB,aAAa,QAEzCwB,EAAYA,EAAUC,MAAM,GAC5BF,EAAiBZ,EAAgB5E,OAAO,IAAMyF,GAG9CX,EAAeW,IACXlW,OAAQiW,EACRG,QAASJ,IAKjBT,KAGA,IAAK,IAAIpW,EAAIiW,EAAetV,OAAS,EAAGX,GAAK,EAAGA,IAC5CwW,EAAwBP,EAAeiB,GAAGlX,IAK9CyW,EAAkB,SAASU,GAEvB,IAAIC,EAEAC,EADiBjB,EAAee,GAAatW,OACd6U,SAASpQ,IAMxC8R,GAFHxS,OAAOW,YAEc8Q,GAMtBF,EAAUmB,SACNC,UAAWF,EAAgBD,GAC5B,MAIPR,EAAUlO,GAAG,iBAAkB,eAAgB,SAASC,GAEpDA,EAAGC,iBAEH,IAAImO,EAAajW,KAAKyU,aAAa,QAEnCwB,EAAYA,EAAUC,MAAM,GAE5BP,EAAgBM,KAKpBL,EAAkB,SAASS,GACvBlB,EAAenO,YAnFF,eAqFRqP,GACDf,EAAee,GAAaF,QAAQ9O,SAtF3B,gBA2FjBwO,EAAuB,SAAUE,GAC7B,IAAIW,EAAaX,EAAS,GAAGtB,aAAa,QAE1CiC,EAAaA,EAAWR,MAAM,GAE9BT,EAAgBiB,EAAa,SAAU,IAAI9N,YAAYC,OACnDE,eAAgBuM,EAAeoB,GAAY3W,OAAO,GAClDe,SAAUwU,EAAeoB,GAAY3W,OAAO4W,gBAE/C/O,GAAG,QAAS,WAAWgO,EAAgBc,KACvCxN,MAAMX,IAIX,IAASrJ,EAAIiW,EAAetV,OAAS,EAAGX,GAAK,EAAGA,IAC5C2W,EAAsBV,EAAeiB,GAAGlX,IAI5C,IAAI0X,EAAezB,EACEiB,GAAGjB,EAAetV,OAAS,GAAG,GAC9B4U,aAAa,QACbyB,MAAM,GAE3BT,EAA0B,SAAI,IAAI7M,YAAYC,OAC1CC,YAAa,IACb8L,OAASU,EAAesB,GAAc7W,OAAO6U,SAASpQ,IAAO8Q,EAAesB,GAAc7W,OAAO4W,gBAEpG/O,GAAG,QAAS,WAAWgO,MACvB1M,MAAMX,QAIRY,gBAAgB,KAAK0N,IAAI,SAASxX,EAAQU,EAAOJ,GACpDoI,EAAE,WACA,aAEA,IACE+O,EACAC,EACA7G,EACAmF,EAKAC,EAGAC,EAEAhN,EACAkN,EAEAC,EACAC,EACAC,EACAC,EACArN,EAEAwO,EAvBEC,EAAWlP,EAAE,uBAUfmP,EAAwB,EAe1B,GAAKD,EAASpX,OAAd,CAIAwV,EAAYtN,EAAE,aAEd+O,EAAgBG,EAAS9P,KAAK,0BAC9B4P,EAAkBhP,EAAE,2CAEpBmI,EAAgB+G,EAAS9P,KAAK,kBAEb,YACK,mBAGtBqB,EAAanJ,EAAQ,kBAEEsJ,eAEvBJ,EAAkBC,EAAWD,gBAE7BkN,MAEAuB,EAAmB,WACjBzB,EAAe/M,EAAWuJ,UAAUK,mBAAqB6E,EAASN,cAE9D5O,EAAE,yBAAyBlI,SAC7BqX,EAAwBnP,EAAE,yBAAyB4O,mBAMvD5O,EAAEjE,QAAQ8D,GAAG,SAAU,WACrBoP,MAGFtB,EAAyB,SAAUK,GACjC,IAAIE,EAAYF,EAASxF,KAAK,UAC5ByF,EAAiBe,EAAgBvG,OAC/B,qBAAuByF,EAAY,MAGvCX,EAAeW,IACblW,OAAQiW,EACRG,QAASJ,IAIbT,KAGA,IAAK,IAAIpW,EAAI4X,EAAcjX,OAAS,EAAGX,GAAK,EAAGA,IAC7CwW,EAAuBoB,EAAcV,GAAGlX,IAG1CyW,EAAkB,SAAUU,GAC1B,IAEEc,EAFmB7B,EAAee,GAAatW,OAChB6U,SAASpQ,IACV+Q,EAAe2B,EAC/C7B,EAAUmB,SAENC,UAAWU,GAEb,MAIJjH,EAActI,GAAG,QAAS,SAAUC,GAClCA,EAAGC,iBACHmP,EAASrK,YA1DW,qBA6DtBqK,EAASrP,GAAG,QAAS,yBAA0B,SAAUC,GACvDA,EAAGC,iBAEH,IACEmO,EADUlO,EAAE/H,MACMuQ,KAAK,UAEzBoF,EAAgBM,GAChBgB,EAASjQ,YApEW,qBAwEtB4O,EAAkB,SAAUS,GACxBS,EAAc9P,YA1ED,aA4EfsO,EAAee,GAAaF,QAAQ9O,SA5ErB,aA+Eb6I,EAAcO,KAAK6E,EAAee,GAAaF,QAAQ1F,QACvDwG,EAASjQ,YA/ES,oBAoFtB6O,EAAuB,SAAUE,GAC/B,IAAIW,EAAaX,EAASxF,KAAK,UAC3BzP,EAAWwU,EAAeoB,GAAY3W,OAAO4W,cACjDlB,EAAgBiB,EAAa,SAAW,IAAI9N,YAAYC,OACtDE,eAAgBuM,EAAeoB,GAAY3W,OAAO,GAClD+I,YAAa,EACb8L,WAAYW,EAAe,EAAI2B,IAC/BpW,SAAYA,GAAsB,MAEjCsW,SAAQ,GACRxP,GAAG,QAAS,WAEXgO,EAAgBc,KAEjBxN,MAAMX,IAGX,IAASrJ,EAAI4X,EAAcjX,OAAS,EAAGX,GAAK,EAAGA,IAC7C2W,EAAqBiB,EAAcV,GAAGlX,KAE3B,EAWbgR,EAAcO,KACZ6E,EAAewB,EAAcV,GAAG,GAAG7F,KAAK,WAAW4F,QAAQ1F,QAE7D1I,EAAE,iBAAiBV,SAAS,+BAG3B8B,gBAAgB,KAAKkO,IAAI,SAAShY,EAAQU,EAAOJ,GACpD,aAEA,IACI2X,KAAoBpB,MAAMtW,KAAKgE,SAAS8G,iBAAiB,6BAU7D,SAAS6M,KAUT,WACID,EAAiBA,EAAe9G,OAEhC,SAAqBgH,EAAMrI,GACvB,IAAIsI,EAAaD,EAAKjT,wBAClBmT,EAAWD,EAAWjT,IAAMH,aAAeoT,EAAWjT,KAAO,EAG7DmT,EAAiBF,EAAWjT,IAAMiT,EAAW/S,OAEjD,OAAIgT,IAAYC,IACZL,EAAenI,GAAOrF,UAAUC,IALhB,mCAMhBuN,EAAenI,GAAOyI,cAAc9N,UAAUC,IALf,0CAMxB,KApBfyM,GAEIc,EAAezX,QACf8E,WAAW4S,EALqB,KATpCD,EAAezX,QAKfiE,OAAOqG,iBAAiB,OAAQoN,QAiC9BM,IAAI,SAASxY,EAAQU,EAAOJ,IACjC,SAAWmY,EAAQC,GACRD,EAAOlU,SAAjB,IACIoU,GACFC,YAAalQ,EAAEjE,QAAQoU,MAAQ,IAC/BC,cAAepQ,EAAE,SAASsE,KAAK,uBAC/B+L,YAAa,WACXrQ,EAAE,uBACCf,YAAY,aACZqF,KAAK,cAAe,QAEvBtE,EAAE,gCAAgCf,YAAY,aAC9Ce,EAAE,6BAA6BsE,KAAK,gBAAiB,WAIrDgM,GACF/N,KAAM,WACJ,IAAIgO,EAAOtY,KA2EX,OA1EAsY,EAAKC,uBAELC,EAAE9L,KAAK3E,EAAE,eAAgB,SAAUuB,GAC7BgP,EAAK5H,WAEP3I,EAAEuB,GAAM1B,GAAG,QAASyQ,EAAQtQ,EAAEuB,GAAM+C,KAAK,eAEzCtE,EAAEuB,GAAM1B,GACN,wBACAyQ,EAAQtQ,EAAEuB,GAAM+C,KAAK,iBAK3BmM,EAAE9L,KAAK3E,EAAE,qBAAsB,SAAUuB,GACvCvB,EAAEuB,GAAM1B,GAAG,aAAcyQ,EAAQtQ,EAAEuB,GAAM+C,KAAK,uBAGhDmM,EAAE9L,KAAK3E,EAAE,qBAAsB,SAAUuB,GACvCvB,EAAEuB,GAAM1B,GAAG,aAAcyQ,EAAQtQ,EAAEuB,GAAM+C,KAAK,uBAGhDmM,EAAE9L,KAAK3E,EAAE,eAAgB,SAAUuB,GACjCvB,EAAEuB,GAAM1B,GAAG,QAASyQ,EAAQtQ,EAAEuB,GAAM+C,KAAK,iBAE3CmM,EAAE9L,KAAK3E,EAAE,eAAgB,SAAUuB,GACjCvB,EAAEuB,GAAM1B,GAAG,QAASyQ,EAAQtQ,EAAEuB,GAAM+C,KAAK,iBAE3CmM,EAAE9L,KAAK3E,EAAE,kCAAmC,SAAUuB,GACpDvB,EAAEjE,QAAQ8D,GAAG,mBAAoB,WAC/BjD,WAAW,WAEPoD,EAAE,eAAeL,SAAS,sBAC1BK,EAAE,WAAWL,SAAS,eAEtBK,EAAEuB,GAAMmP,OAER1Q,EAAEuB,GAAMoP,QAET,SAGP3Q,EAAEjE,QAAQ8D,GAAG,SAAU,WACrB0Q,EAAKC,yBAEPxQ,EAAEjE,QAAQ6U,OAAO,WAEVL,EAAK5H,aACJ3I,EAAEjE,QAAQoU,QAAU,MAAQF,EAAMC,aACpCD,EAAMC,aAAc,EAEpBO,EAAE9L,KAAK3E,EAAE,eAAgB,SAAUuB,GACjCvB,EAAEuB,GAAMsP,IACN,wBACAP,EAAQtQ,EAAEuB,GAAM+C,KAAK,iBAGzBmM,EAAE9L,KAAK3E,EAAE,eAAgB,SAAUuB,GACjCvB,EAAEuB,GAAM1B,GAAG,QAASyQ,EAAQtQ,EAAEuB,GAAM+C,KAAK,kBAElCtE,EAAEjE,QAAQoU,SAAW,KAAOF,EAAMC,cAC3CD,EAAMC,aAAc,EACpBO,EAAE9L,KAAK3E,EAAE,eAAgB,SAAUuB,GACjCvB,EAAEuB,GAAM1B,GACN,wBACAyQ,EAAQtQ,EAAEuB,GAAM+C,KAAK,iBAGzBmM,EAAE9L,KAAK3E,EAAE,eAAgB,SAAUuB,GACjCvB,EAAEuB,GAAMsP,IAAI,QAASP,EAAQtQ,EAAEuB,GAAM+C,KAAK,qBAK3CrM,MAGT6Y,OAAQ,WACN,OAAO7Y,MAET8Y,kBAAmB,SAASha,GAC1BiJ,EAAE,2BAA2BgR,WAE/BC,YAAa,SAAUla,GACjBiJ,EAAEjJ,EAAE0V,eAAexG,MAAMnO,OAAS,EACpCkI,EAAEjJ,EAAE0V,eAAevL,SAAS5B,SAAS,aAErCU,EAAEjJ,EAAE0V,eAAevL,SAASjC,YAAY,cAG5CiS,aAAc,SAAUna,GAClBiJ,EAAE,WAAWL,SAAS,gBACxBK,EAAE,wBAAwBiG,IAAI,IAGhCjG,EAAE,WAAW6E,YAAY,eAEzB7E,EAAEjE,QAAQoV,QAAQ,oBACdnR,EAAE,WAAWL,SAAS,gBACxB/C,WAAW,WACToD,EAAE,kCAAkCgN,SACnC,MAGPoE,YAAa,SAAUra,GACjBkZ,EAAMG,eAAiBH,EAAMG,cAAgB,EAC/CxT,WAAW,WACToD,EAAE,SAASV,SAAS,gBAAgB4B,SAASmQ,IAAI,WAAY,WACtC,IAAtBpB,EAAMG,eAETpQ,EAAE,SAASV,SAAS,gBAAgB4B,SAASmQ,IAAI,WAAY,WAGjEC,cAAe,SAAUva,GACvBiJ,EAAE,SAASf,YAAY,gBAAgBiC,SAASmQ,IAAI,WAAY,KAElEE,UAAW,SAAUxa,GACnB,IAAIsN,EAASrE,EAAEjJ,EAAE0V,eAEgB,MAA7B1V,EAAE0V,cAAc+E,YAAmBnN,EAASA,EAAOnD,SAASA,UAEhElB,EAAE,qCACCyR,IAAIxZ,KAAK4X,eACT5Q,YAAY,UAEfoF,EAAOnD,SAAS2D,YAAY,UAC5B7E,EAAE,cAAc6E,YAAY,WAE9B6M,SAAU,WACR1R,EAAE,gBAAgBV,SAAS,UAC3BU,EAAE,WAAWf,YAAY,eACzBe,EAAEjE,QAAQoV,QAAQ,qBAEpBQ,WAAY,SAAU5a,GACpB,GAAIA,EAAEsN,OAAQ,CACZtN,EAAEgJ,iBACFhJ,EAAE6a,kBAEF,IAAIvN,EAASrE,EAAEjJ,EAAEsN,QAAQC,KAAK,cAC9BtE,EAAEqE,GAAQ/E,SAAS,aAEnBU,EAAEjJ,EAAEsN,QAAQC,KAAK,gBAAiB,QAElCtE,EAAE,uBACCV,SAAS,aACTgF,KAAK,cAAe,WAG3B+L,YAAaJ,EAAMI,YAEnBwB,UAAW,SAAU9a,GACfiJ,EAAEjJ,EAAEsN,QAAQ1E,SAAS,aAAeK,EAAEjJ,EAAEsN,QAAQ1E,SAAS,cAG3DK,EAAEjJ,EAAEsN,QAAQ3E,QAAQM,EAAE,iBAAiBlI,OAAS,IAC/CkI,EAAEjJ,EAAEsN,QAAQ1E,SAAS,uBAGxBK,EAAE,gBAAgBf,YAAY,UAC9BgR,EAAMI,cAGJrQ,EAAEjJ,EAAEsN,QAAQ1E,SAAS,WACrBK,EAAEjJ,EAAEsN,QAAQ1E,SAAS,wBAIjBK,EAAEjJ,EAAEsN,QAAQ1E,SAAS,2BAA6BK,EAAEjJ,EAAEsN,QAAQ1E,SAAS,mCAGvEK,EAAE,WAAWL,SAAS,gBACxBK,EAAE,wBAAwBiG,IAAI,IAG5BjG,EAAE,WAAWL,SAAS,gBACxBK,EAAE,WAAW6E,YAAY,eAC3B7E,EAAEjE,QAAQoV,QAAQ,uBAGtBW,eAAgB,SAAU/a,GACxB,IAAIuW,EAAYtN,EAAE,aAChB+R,EAAe/R,EAAE,yBACjBgS,QAAUhS,EAAE,WACdsN,EAAUmB,SAENC,UAAWqD,EAAalF,SAASpQ,IAAMuV,QAAQrV,UAEjD,MAGJsV,QAAS,SAAUC,GACjBnW,OAAOwI,SAAS4N,KAAOD,GAEzBE,cAAe,SAAUrb,GACvB,IAAIsb,EAAUrS,EAAEjJ,EAAEsN,QAEdiO,EADUD,EAAQ3S,QAAQM,EAAE,eACTZ,KAAK,sBAC5B,GAAIiT,EAAQ1S,SAAS,QAAS,CAC5B2S,EAASpT,UACTmT,EAAQpT,YAAY,QACpB,IAAIqD,EAAW+P,EAAQ7J,KAAK,YACtBlG,GACJ+P,EAAQ5L,KAAKnE,OAEV,CACLgQ,EAAS/S,YACT8S,EAAQ/S,SAAS,QACjB,IAAI+C,EAASgQ,EAAQ7J,KAAK,UACpBnG,GACJgQ,EAAQ5L,KAAKpE,KAInBkQ,OAAQ,WACN,OAAOta,MAET0Q,SAAU,WACR,MAAO,iEAAiE6J,KACtEC,UAAUC,YAGdC,aAAc,WACZ,OAAG3S,EAAE,kBAAkBlI,OAAS,IAC7BkI,EAAE,kBAAkBlI,OAAS,IAC7BkI,EAAE,cAAclI,OAAS,IACzBkI,EAAE,eAAelI,OAAS,IAC1BkI,EAAE,SAASlI,OAAS,IACpBkI,EAAE,gCAAgClI,OAAS,IAC3CkI,EAAE,sCAAsClI,OAAS,GACjDkI,EAAE,uBAAuBlI,OAAS,SAGvC0Y,qBAAsB,WACpB,MAAMoC,EAAa3a,KAAK0a,eACpB3S,EAAE,WAAWrD,SAAWqD,EAAEjE,QAAQ2S,cAAgBkE,EACpD5S,EAAE,WAAWV,SAAS,gBAEtBU,EAAE,WAAWf,YAAY,kBAK/B8Q,EAAO8C,IAAMvC,EAEbA,EAAQ/N,OAtQT,CAuQEtK,WAEG6a,IAAI,SAASxb,EAAQU,EAAOJ,GAClCoI,EAAE,WACD,aAEA,IACC+S,EACAC,EAGAC,EACAC,EANGC,EAAgBnT,EAAE,qBAYjBmT,EAAcrb,SAKNR,EAAQ,iBAEEsJ,eAELtJ,EAAQ,qBAG1Byb,EAAiBI,EAAc/T,KAAK,mBAEpC4T,EAAWG,EAAc/T,KAAK,eAEjB+T,EAAc/T,KAAK,uBAIhC6T,EAAwB,WACpBC,GACCH,EAAe9T,YAAY,eAAeyJ,KAAKqK,EAAevK,KAAK,iBACtEwK,EAAS9T,UACTgU,GAAoB,IAEjBH,EAAezT,SAAS,eAAeoJ,KAAKqK,EAAevK,KAAK,mBACnEwK,EAASzT,YACT2T,GAAoB,IAKtBH,EAAelT,GAAG,QAAS,SAASC,GACnCA,EAAGC,iBACHkT,WAwFC7R,gBAAgB,GAAGgS,oBAAoB,KAAKC,IAAI,SAAS/b,EAAQU,EAAOJ,GAC3EoI,EAAE,WACD,aAEA,IAAIsT,EAAoBtT,EAAE,yBAQrBsT,EAAkBxb,SAOH,IAFPR,EAAQ,gBAED,CAAgBgc,GAKlBtT,EAAE,oCACJ4E,MAAM,WACrB,IAAI2O,EACHC,EACAC,EACAC,EAMDD,GADAD,GADAD,EAAQvT,EAAE/H,OACQyH,QAAQ,0BACRN,KAAK,sBACvBsU,EAAWF,EAAUpU,KAAK,yBAKtBmU,EAAM5T,SAHU,sBAInB8T,EAAMxU,YAHW,eAIjByU,EAASxU,UACTqU,EAAMtU,YANa,uBAQnBwU,EAAMnU,SAPW,eAQjBoU,EAASnU,YACTgU,EAAMjU,SAVa,6BAcnBqU,eAAe,IAAIC,IAAI,SAAStc,EAAQU,EAAOJ,GAClD,MAAMyU,EAA0B,GAC1BC,EAAiB,KA0BZ/J,KAvBI,KAEX,IADgB1G,SAAS8F,cAAc,sBACzB,OAEd,MAAMkS,EAAc,IAAIC,gBAAgBjY,SAAS0I,SAASwP,QAC1D,IAAKF,EAAa,OAElB,MAAMG,EAAYH,EAAYI,IAAI,mBAClC,IAAKD,EAAW,OAEhB,MAAMrH,EAAU9Q,SAAS8F,mCACFuS,mBAAmBF,GAAWG,mBAErD,IAAKxH,EAAS,OAEd,MAAMyH,EAAUvY,SAAS8F,cAAc,oBACjC0S,EAAgBD,EAAUA,EAAQE,aAAe,EACjDzH,EAASR,EAA0BC,EAAiB+H,EACpD5X,EAAMkQ,EAAQnQ,wBAAwBC,IAAMV,OAAOQ,QACzDR,OAAO+Q,UAAWrQ,IAAKA,EAAMoQ,EAAQE,SAAU,WAC/CJ,EAAQK,OAAQC,eAAe,OAOlB1K,YAEXgS,IAAI,SAASjd,EAAQU,EAAOJ,KAWvB2K,KATI,KACX,MAAMC,EAAaC,MAAMC,KAAK7G,SAAS8G,iBAAiB,oBACnDH,EAAW1K,QAChB0K,EAAWnG,QAASuG,KASxB,SAAuBA,GACrB,IAAI4R,EACAC,EAEAC,EACAC,EAGAhM,EACAiM,EACAC,EAJAC,EAAe,EAMnB,MAkCMC,EAAmB,KACvBC,EAAkBF,EAAe,GAC7BnM,GACFsM,EAAmBL,EAAgBM,WAAanZ,OAAO0O,aAGrD0K,EAAmB,KACvBH,EAAkBF,EAAe,GAC7BnM,GACFsM,EAAmBL,EAAgBM,WAAanZ,OAAO0O,aAGrDuK,EAAqBI,IACzB,MAAMC,EAAYX,EAAOI,GACnBQ,EAAYZ,EAAOU,GACnBG,EAAa3S,EAAUjB,cAAc,eACrC6T,EAAU5S,EAAUjB,kCAAkCyT,OACtDK,EAAgB7S,EAAUjB,cAAc,kBACxC+T,EAAa9S,EAAUjB,qCACJyT,OAEnB5N,EACJ4N,EAAYN,EAAeH,EAAOG,GAAgBH,EAAOS,GAGxDC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAlO,IAKHA,EAAMzF,UAAUI,OAAO,gBACvBkT,EAAUtT,UAAUG,OAAO,sBAC3BoT,EAAUvT,UAAUC,IAAI,sBACxBuT,EAAWxT,UAAUG,OAAO,cAC5BsT,EAAQzT,UAAUC,IAAI,cACtByT,EAAc1T,UAAUG,OAAO,iBAC/BwT,EAAW3T,UAAUC,IAAI,iBACzB8S,EAAeM,EACfO,MAGIV,EAAsBW,IAC1BhB,EAAgB9H,UAAW+I,KAAMD,EAAO7I,SAAU,YAG9C4I,EAAmB,KACvBlB,EAAWqB,SAA4B,IAAjBhB,EACtBN,EAAWsB,SAAWhB,IAAiBJ,EAAO5c,OAAS,GAGnDie,EAAkB,KACtB,MAAMC,EAAkBpT,EAAUjB,cAAc,kBAChD+S,EAAOrY,QAAQ,CAACoU,EAAGrJ,KACjB,GAAIA,EAAQ,EAAG,CACb,MAAM6O,EAAMpa,SAASqa,cAAc,QACnCD,EAAIlU,UAAUC,IAAI,gBAClBiU,EAAI9K,QAAQgL,YAAc/O,EAC1B6O,EAAI1Y,eAAiB6J,EAAQ,IAAIgP,SAAS,EAAG,KAC7CJ,EAAgBK,sBAAsB,YAAaJ,OAKnDK,EAAuB,KAC3BzB,EAAgB,IAAIzP,qBACjBC,IACCA,EAAQhJ,QAASiJ,IACf,GAAIA,EAAMC,eAAgB,CACxB,MAAM6P,EAAYV,EAAO6B,QAAQjR,EAAMjB,QACnC+Q,GAAa,GACfJ,EAAkBI,QAKxB3P,UAAW,KAEfiP,EAAOrY,QAASma,IACd3B,EAAcnP,QAAQ8Q,MAIpB/O,EAAe,KACnB,MAAMgP,EAAe9N,EACrB+N,IACA,MAAMC,EAAgBF,IAAiB9N,EAClCgO,KAEAhO,GAAYkM,GACfH,EAAOrY,QAASma,IACd3B,EAAcrP,UAAUgR,KAG5BxB,EAAkB,KAGd0B,EAAc,KAClB,MAAMjN,EAAgBC,iBAAiB9G,GACvC+F,EAA4D,SAAjDc,EAAcE,iBAAiB,eAG5C,OAASpH,KA7II,KACXmU,IACA9B,EAAkBhS,EAAUjB,cAAc,uBAE1C+S,EAASjS,MAAMC,KAAKE,EAAUD,iBAAiB,2BAC/CgS,EAASlS,MAAMC,KACbE,EAAUD,iBAAiB,wCAG7B6R,EAAa5R,EAAUjB,cAAc,gCACrC8S,EAAa7R,EAAUjB,cAAc,oCAElCiT,GACAF,EAAO5c,QACP6c,EAAO7c,QACP0c,GACAC,IAIHE,EAAOtY,QAAQ,CAACmL,EAAOJ,KACrBI,EAAMP,MAAMY,OAAS8M,EAAO7c,OAASsP,IAEvCuO,IACAI,IACAvB,EAAWpS,iBAAiB,QAAS2S,GACrCN,EAAWrS,iBAAiB,QAAS+S,GACrCpZ,OAAOqG,iBAAiB,SAAUqF,GAE9BkB,GACF2N,QAlDsBM,CAAchU,GACtBL,YAoKLA,YAETsU,IAAI,SAASvf,EAAQU,EAAOJ,GAClCoI,EAAE,WACD,aAEA,IAAI8W,EACHC,EAGAC,EACAC,EACAC,GAGDJ,EAAe9W,EAAE,kBAEAlI,SAIE,aAEnBmf,EAAc,WACDjX,EAAG/H,MAGEyH,QAAQ,iBAEhBJ,SARS,eAWnB4X,EAAa,WACZ,IACCC,EADG5D,EAAQvT,EAAG/H,MAGfkf,EAAW5D,EAAM7T,QAAQ,iBAEC,IAAvB6T,EAAMtN,MAAMnO,OACdqf,EAASlY,YAlBQ,cAqBjBkY,EAAS7X,SArBQ,eAyBnB0X,EAAmB,WACNhX,EAAG/H,MAET6M,OAAOqM,QAAQ,oBAGtB4F,EAAcD,EAAa1X,KAAK,oBAEhC0X,EAAajX,GAAG,cAAe,mBAAoB,WAAamX,EAAiBnf,KAAKI,QAEtF8e,EACElX,GAAG,kBAAmB,WAAaoX,EAAYpf,KAAKI,QACpD4H,GAAG,iBAAkB,WAAaqX,EAAWrf,KAAKI,QAIpD8e,EAAYpS,KAAK,SAASyC,EAAOxL,GAChCsb,EAAWrf,KAAK+D,aAMZwb,IAAI,SAAS9f,EAAQU,EAAOJ,GAClCoI,EAAE,WACE,aAEA,IACIqX,EACAhK,EACAlF,EACAmF,EAMAC,EAGAC,EACAC,EAEAjN,EACAkN,EAGAC,EACAC,EACAC,EACAC,EAEArN,EACA2H,EA1BAkP,EAActX,EAAE,0BAKhBuX,GAAa,EAuBjB,GAAKD,EAAYxf,OAAjB,CAQAwV,EAAYtN,EAAE,aAEdqX,EAAmBC,EAAYlY,KAAK,qBACpCiO,EAAmBrN,EAAE,mCAErBmI,EAAgBmP,EAAYlY,KAAK,kBAEhB,YACK,kBAItBqB,EAAanJ,EAAQ,iBAErB8Q,EAAY3H,EAAWG,eAEvBJ,EAAkBC,EAAWD,gBAE7BkN,KAGItF,EAAUO,UACV8E,EAAehN,EAAWuJ,UAAUK,mBACpCmD,EAAeC,EAAe,KAG9BA,EAAehN,EAAWuJ,UAAUG,oBACpCqD,EAAeC,EAAe,IAIlCE,EAAwB,SAASK,GAE7B,IAAIE,EAAYF,EAASxF,KAAK,UAC1ByF,EAAiBZ,EAAgB5E,OAAO,qBAAuByF,EAAY,MAG/EX,EAAeW,IACXlW,OAAQiW,EACRG,QAASJ,EACTwJ,SAAUxJ,EAAS5O,KAAK,mBAAmBsJ,SAKnD6E,KAGA,IAAK,IAAIpW,EAAIkgB,EAAiBvf,OAAS,EAAGX,GAAK,EAAGA,IAC9CwW,EAAwB0J,EAAiBhJ,GAAGlX,IAKhDyW,EAAkB,SAASU,GAEvB,IAAIC,EAEAC,EADiBjB,EAAee,GAAatW,OACd6U,SAASpQ,IAMxC8R,GAFHxS,OAAOW,YAEc8Q,GAMtBF,EAAUmB,SACNC,UAAWF,EAAgBD,GAC5B,MAIP+I,EAAYzX,GAAG,kBAAmB,oBAAqB,SAASC,GAE5DA,EAAGC,iBAEH,IACImO,EADQlO,EAAE/H,MACSuQ,KAAK,UAE5BoF,EAAgBM,KAKpBL,EAAkB,SAASS,GACvB+I,EAAiBpY,YAlFJ,aAoFbsO,EAAee,GAAaF,QAAQ9O,SApFvB,aAsFV8I,EAAUO,UAA0B,GAAd4O,IACrBpP,EAAcO,KAAM6E,EAAee,GAAakJ,UAEhDF,EAAYrY,YAxFE,qBA+FtB6O,EAAuB,SAAUE,GAC7B,IAAIW,EAAaX,EAASxF,KAAK,UAE/BkF,EAAgBiB,EAAa,SAAU,IAAI9N,YAAYC,OACnDE,eAAgBuM,EAAeoB,GAAY3W,OAAO,GAClDe,SAAUwU,EAAeoB,GAAY3W,OAAO4W,gBAE/C/O,GAAG,QAAS,WACTjD,WAAWiR,EAAgBc,GAAa,OAE3CxN,MAAMX,IAIX,IAASrJ,EAAIkgB,EAAiBvf,OAAS,EAAGX,GAAK,EAAGA,IAC9C2W,EAAsBuJ,EAAiBhJ,GAAGlX,IAE9CogB,GAAa,EAEbpP,EAActI,GAAG,qBAAsB,SAASC,GAC5CA,EAAGC,iBAEHuX,EAAYzS,YArHM,qBA2HtB6I,EAA6B,YAAI,IAAI7M,YAAYC,OAC7CC,YAAa,IACb8L,OAAQ,OAEX5L,eAAeqW,EAAY,GAAI,YAC/BnW,MAAMX,GAIP2H,EAAcO,KAAK6E,EAAe8J,EAAiBhJ,GAAG,GAAG7F,KAAK,WAAWgP,UACzExX,EAAE,iBAAiBV,SAAS,kCAE7B8B,gBAAgB,KAAKqW,IAAI,SAASngB,EAAQU,EAAOJ,GACpDoI,EAAE,WACD,aAEA,IAAI0X,EACHC,EACAC,EAGDF,EAAmB,SAA0BG,GAC5C,IACCC,EACAC,EACAC,EAHGzE,EAAQvT,EAAG/H,OAKf6f,EAAgBvE,EAAMnU,KAAK,cAERtH,SAInBigB,EAAexE,EAAM0E,SAASJ,GAI9BG,EAAcF,EAAcpP,OAIxBqP,EAAajgB,QAAUkgB,EAAYlgB,QACtCigB,EAAarP,KAAKsP,KAIpBJ,EAAc,SAAqBM,GAClC,IAAI3E,EAAQvT,EAAG/H,MAGfigB,EAAS3E,EAFQA,EAAMnU,KAAK,eAM7BuY,EAAuB,SAASQ,EAAkBD,GAChCC,EAAiB/Y,KAAK,2BAIrCyR,IAAI,yBACJhR,GAAG,wBAA2B,WAC9B6X,EAAiB7f,KAAKI,KAAM,0BAEJ,mBAAbigB,GACVN,EAAY/f,KAAKI,KAAMigB,MAO3BlgB,EAAOJ,SACN+f,oBAAqBA,UAKjBS,IAAI,SAAS9gB,EAAQU,EAAOJ,GAClCoI,EAAE,WAEE,aAGA,IAKFQ,EAKAC,EACA2H,EAXMiQ,EAAcrY,EAAE,WACtBsY,EAAYtY,EAAE,SACRuY,EAAiBvY,EAAE,YACnBwY,EAAiBxY,EAAE,YAyCvB,SAASyY,EAAeC,GACpB,IAAIC,EAAa5c,OAAOwI,SAASC,KACjC,IAAoD,GAAhDmU,EAAWpC,QAAQ,IAAMmC,EAAc,QAER,GAA/BC,EAAWpC,QAAQ,SAAgC,MAAfmC,GAMxC,GAAIC,EAAWpC,QAAQ,SAAW,GAAoB,MAAfmC,EACnC3c,OAAOwI,SAASC,KAAOmU,EAAWvd,QAAQ,OAAQ,SADtD,CAMA,IAAIwd,EAAWrU,SAASsU,SACxB9c,OAAOwI,SAASC,KAAOmU,EAAWvd,QAAQwd,EAAW,IAAKA,EAAW,IAAMF,EAAc,MA3C7FtQ,GAFA3H,EAAanJ,EAAQ,kBAEEsJ,eAIvBJ,EAAkBC,EAAWD,gBAExB4H,EAAUO,UAAa2P,EAAUxgB,QAGf,IAAI+I,YAAYC,OAC/BC,YAAa,IACb8L,OAAQpM,EAAWuJ,UAAUI,8BAEtCnJ,eAAeoX,EAAY,GAXT,gBAYlBlX,MAAMX,GAEL+X,EAAe3T,MAAM,WACjB5E,EAAE,YAAYf,YAAY,UAC1Be,EAAE,YAAYV,SAAS,UACvBmZ,EAAe,QAEnBD,EAAe5T,MAAM,WACjB5E,EAAE,YAAYf,YAAY,UAC1Be,EAAE,YAAYV,SAAS,UACvBmZ,EAAe,YAwBpBrX,gBAAgB,KAAK0X,IAAI,SAASxhB,EAAQU,EAAOJ,GACpDoI,EAAE,WACD,aAEA,IACC0L,EACAC,EACAC,EACAmN,EACAC,EACAC,EACAC,EAGApN,EAOAqN,EAGApN,EACAqN,EACAC,EAtBGC,EAActZ,EAAE,mBA2BfsZ,EAAYxhB,SAMJR,EAAQ,iBAEEsJ,eAGvB8K,EAAW4N,EAAYla,KAAK,gBAC5BuM,EAAkBD,EAAStM,KAAK,mBAChCwM,EAAgB0N,EAAYla,KAAK,cACjC2Z,EAAgBnN,EAAcxM,KAAK,qBACnC4Z,EAAapN,EAAcxM,KAAK,kBAEhC6Z,EAAkBK,EAAYla,KAAK,uBACnC8Z,EAAgBI,EAAYla,KAAK,qBAEZ,cACF,cAEE,oBAErB+Z,GAAmB,EAGnBE,EAAc,SAASpN,GACtB8M,EAAc9Z,YARI,eAWlB+Z,EAAW1Z,SAXO,eAalBsM,EACI3M,YAZgB,qBAahBwP,SAAS9R,OAAQqc,EAAWpK,eAC5B,IAAK,WACJhD,EAAcyF,IAAI,SAAU,MAGjCvF,EAAeG,EACfkN,GAAmB,GAIpBpN,EAAc,SAASG,GACtBP,EAAgB1M,YA3BI,eA6BpBiN,EAAW5M,SA7BS,gBAmCrB8Z,EAAgB,SAASnN,GACxBkN,GAAmB,EACnBvN,EAActM,SAlCM,qBAmChB+R,IAAI,SAAUzF,EAAcjP,UAGlB,YAAVsP,EAsBJrP,WAAW,WACVyc,EAAYpN,IACV,KAtBFrP,WAAW,WACVoc,EAAW/Z,YA3CK,eA6ChB8Z,EAAczZ,SA7CE,eA+ChBsM,EACE3M,YA9CgB,qBA+ChBwP,SAAS9R,OAAQoc,EAAcnK,eAC/B,IAAK,WACJhD,EAAcyF,IAAI,SAAU,MAE/BvF,EAAeG,EACfkN,GAAmB,GAEjB,MAYLzN,EAAS7L,GAAG,QAAS,kBAAmB,SAASC,GAChDA,EAAGC,iBAEH,IAAIH,EAAQI,EAAE/H,MACbkU,EAAavM,EAAM4I,KAAK,UAEtB2D,IAAeL,GAAgBqN,IAIlCpN,EAAYnM,GACZwZ,EAAcjN,MAMfL,EAAgBH,EACVlD,OAAO,gBACPD,KAAK,UAIXyQ,EAAgBpZ,GAAG,QAAS,aAAc,SAASC,GAClDA,EAAGC,iBAGHC,EAAE/H,MAAMiK,SAEW+W,EAAgB7Z,KAAK,cAEvBtH,SAChBmhB,EAAgB/Z,UAChBga,EAAcha,aAGbW,GAAG,QAAS,mBAAoB,SAASC,GAC3CA,EAAGC,iBAEHkZ,EAAgB/Z,UACXE,KAAK,cAAc8C,SAExBgX,EAAcha,iBAIbkC,gBAAgB,KAAKmY,IAAI,SAASjiB,EAAQU,EAAOJ,GACpD,MAAMsG,EAAU5G,EAAQ,eAExB,WACE,IAAIkL,EAWJ,OAASD,KATI,MACXC,EAAaC,MAAMC,KAAK7G,SAAS8G,iBAAiB,gBAClC7K,QAChB0K,EAAWnG,QAASuG,KASxB,SAAmBA,GACjB,IAAI4W,EACAC,KAEJ,MA8CMC,EAAkBtS,IACtB,MAAMuS,EAAaF,EAAWrS,GACzBuS,IAAcA,EAAWC,SAC9BD,EAAWC,QAAS,EACpBD,EAAWE,WAAWhd,UAGxB,OAAS0F,KArDI,KAEX,KADAiX,EAAQ/W,MAAMC,KAAKE,EAAUD,iBAAiB,qBACnC7K,OAAQ,OACnB,MAAMgiB,EAAgB,IAAI1U,qBAAsBC,IAC9CA,EAAQhJ,QAASiJ,IACf,GAAIA,EAAMC,eAAgB,CACxB,MAAM6B,EAAQoS,EAAMjD,QAAQjR,EAAMjB,QAC9B+C,GAAS,GAAGsS,EAAetS,QAGhC3B,UAAW,KAEhB+T,EAAMnd,QAAS0d,IACbD,EAAcpU,QAAQqU,GAEtB,MAAMrR,EAAOqR,EAAK5O,QAAQ4O,KACpBC,EAAYtR,EAAK1N,MAAM,IACvBif,GACJ1gB,UACA0c,OACAzc,WAaF,GAXAwgB,EAAU3d,QAAS6d,IACjB,MAAMC,EAAaC,SAASF,EAAM,KAC7BD,EAAQhE,IAAIne,QAAUwC,OAAOoD,MAAMyc,GACtCF,EAAQ1gB,OAAO2C,KAAKge,GACV5f,OAAOoD,MAAMyc,GAEdF,EAAQhE,IAAIne,QAAUwC,OAAOoD,MAAMyc,IAC5CF,EAAQzgB,OAAO0C,KAAKge,GAFpBD,EAAQhE,IAAI/Z,KAAKge,KAMjBD,EAAQhE,IAAIne,OAAQ,CACtB,MAAMme,EAAMmE,SAASH,EAAQhE,IAAIoE,KAAK,IAAK,IACrC3hB,KACFuhB,EAAQ1gB,OAAOzB,SAAQY,EAAQa,OAAS0gB,EAAQ1gB,OAAO8gB,KAAK,KAC5DJ,EAAQzgB,OAAO1B,SAAQY,EAAQc,OAASygB,EAAQzgB,OAAO6gB,KAAK,KAChE,MAAMC,EAAkB,IAAIpc,EAAQN,QAAQmc,EAAM9D,EAAKvd,GAClD4hB,EAAgBxgB,OACnB2f,EAAWvd,MAAO2d,WAAYS,EAAiBV,QAAQ,UApDzCW,CAAU3X,GAClBL,YAmEGiY,GACRjY,SAERkY,aAAa,IAAIC,IAAI,SAASpjB,EAAQU,EAAOJ,GAChDoI,EAAE,WACD,aAEA,IAAI2a,EACHxa,GAIDwa,EAAW3a,EAAE,kBAEAlI,SAIbqI,EAAWwa,EAASvb,KAAK,0BAEzBgB,EAAa9I,EAAQ,kBAAkB+I,aAE7BF,EAAU,oCAAqC,mBAIvDG,iBAAiB,KAAKsa,IAAI,SAAStjB,EAAQU,EAAOJ,GACrDoI,EAAE,WACE,aAEA,IAEIQ,EAFAqa,EAAgB7a,EAAE,qBAClB8a,EAAuB9a,EAAE,6BAc7BQ,EAHalJ,EAAQ,iBAGQkJ,gBAEzBqa,EAAc,IAEK,IAAIha,YAAYC,OAC/BC,YAAa,IACbC,eAAgB8Z,EAAqB,KAEpC7Z,eAAe4Z,EAAc,GAnBpB,yBAoBT1Z,MAAMX,OAGhBY,gBAAgB,KAAK2Z,IAAI,SAASzjB,EAAQU,EAAOJ,GACpDoI,EAAE,WACD,aAEA,IACC2L,EACAqP,EAQAjP,EACAkP,EAXGvP,EAAW1L,EAAE,gBAkBZ0L,EAAS5T,SAMDR,EAAQ,iBAEEsJ,eAGvB+K,EAAkBD,EAAStM,KAAK,mBAEX,cACC,qBACF,gBAEpB2M,EAAc,SAASG,GACtBP,EAAgB1M,YALI,eAOpBiN,EAAW5M,SAPS,gBAUrB2b,EAAsB,SAAS/O,GAE9B8O,EAAetS,KAAMwD,EAAWxD,QAChCgD,EAASzM,YAXU,kBAejB0M,EAAgB7T,OAAS,KAG3BkjB,EAAiBhb,EAAE,0DAGjBkb,UAAUxP,GACVhD,KAAMgD,EAAStM,KAAK,gBAAgBsJ,QACpC7I,GAAG,iBAAkB,WACrB6L,EAAS7G,YAxBQ,mBA2BnB6G,EAASpM,SA5BY,uBAgCtBoM,EAAS7L,GAAG,gBAAiB,kBAAmB,SAASC,GACxDA,EAAGC,iBAEH,IAAIH,EAAQI,EAAE/H,MAEd8T,EAAYnM,GAET+L,EAAgB7T,OAAS,GAC3BmjB,EAAoBrb,UAKpBwB,gBAAgB,KAAK+Z,IAAI,SAAS7jB,EAAQU,EAAOJ,GA2EpD,MAAMoO,EAAQ,CAACC,EAAKC,EAAKzK,IAChBwK,EAAMC,EAAMA,EAAMD,EAAMxK,EAAMA,EAAMwK,IA/DlC1D,KAXI,KACX,MAAMC,EAAaC,MAAMC,KACvB7G,SAAS8G,iBAAiB,qBAEvBH,EAAW1K,QAChB0K,EAAWnG,QAASuG,KASxB,SAA2BA,GACzB,IAAI+R,EACAyG,EACAhV,EAEAuC,EAEJ,MASMxM,EAAe,KACnB,MAAM+M,EAAInN,OAAOQ,QACX4M,EAAKD,EAAI9C,EAAerK,OAAOO,YAC/B4J,GAAOnK,OAAOO,YACdb,EAAM2K,EAAegV,EAC3B,GAAIjS,EAAKjD,GAAOiD,EAAK1N,EAAK,OAE1B,MAAM2N,EAAOpD,EAAMmD,EAAIjD,EAAKzK,GACtB4N,EAAWD,GAAQgS,EAAkBrf,OAAOO,aAElDqY,EAAOtY,QAAQ,CAACmL,EAAOJ,KACrB,MAAMkC,EAAa9B,EAAMZ,aACnB2C,EAAO6R,EAAkB9R,EAC/B,IAAIH,EAAKI,EAAOF,EAAW,GACb,IAAVjC,IAAa+B,IAAO,GACxB,MAAMkS,EAAiB,IAAVjU,EAAcpB,EAAMmD,GAAY,EAARI,EAAW,GAAKvD,EAAMmD,EAAI,EAAGI,GAClE/B,EAAMP,MAAMuC,8BAAgC6R,eAI1C5T,EAAe,KACnB1L,OAAOoI,oBAAoB,SAAUhI,GACrC,MAAMsN,EAAgBC,iBAAiB9G,IACvC+F,EAA4D,SAAjDc,EAAcE,iBAAiB,eAExCgL,EAAOtY,QAASmL,IACdA,EAAMP,MAAMuC,UAAY,+BAI5BI,KAGIA,EAAuB,KAC3B,MAAMnN,IAAEA,EAAGE,OAAEA,GAAWiG,EAAUpG,wBAClC4e,EAAkBze,EAClByJ,EAAe3J,EAAMV,OAAOQ,QAC5BR,OAAOqG,iBAAiB,SAAUjG,IAGpC,OAASoG,KAjDI,KACXoS,EAASlS,MAAMC,KAAKE,EAAUD,iBAAiB,0BAC/C,MAAM8G,EAAgBC,iBAAiB9G,IACvC+F,EAA4D,SAAjDc,EAAcE,iBAAiB,gBAE3BC,IACf7N,OAAOqG,iBAAiB,SAAUqF,MArBf6T,CAAkB1Y,GAC1BL,YAuELA,YAEJgZ,IAAI,SAASjkB,EAAQU,EAAOJ,GAClC,aAGA,IAAIyI,EAEAmb,EACAC,EACAC,EAGAC,EAGJH,EAAqB,SAASI,EAAOC,GACnCD,EACGlc,QAAQ,IAAMmc,GACdvc,SARgB,cAWrBmc,EAAmB,SAAUI,EAAmBC,GAC9C,IAAIlc,EAAQ3H,KAER0jB,GACFjU,aAAaiU,GAGZG,EAAkBA,EAAe,UAAYN,EAAoBxb,EAAEJ,GAAQic,GAE9EF,EAAY/e,WAAW,WAClBkf,EAAkBA,EAAe,UAAYN,EAAoBxb,EAAEJ,GAAQic,IApBtE,KAwBZH,EAAkB,SAAUG,EAAmBC,GACzCH,GACFjU,aAAaiU,GAGVG,EACHA,EAAe,WAEf9b,EAAE/H,MACDyH,QAAQ,IAAMmc,GACd5c,YAnCgB,cAyCrBoB,EAAc,SAAU8W,EAAU4E,EAAkBF,EAAmBC,GAIjE3E,EAASxX,SAASkc,GAEpB1E,EAAStX,GAAG,uBAAwB,IAAMkc,EAAkB,SAASjc,GACnE2b,EAAgB5jB,KAAKI,KAAM4jB,EAAmBC,KAC7Cjc,GAAG,uBAAwB,IAAMkc,EAAkB,SAASjc,GAC7D4b,EAAgB7jB,KAAKI,KAAM4jB,EAAmBC,KAIhD3E,EAAStX,GAAG,uBAAwB,IAAMkc,EAAkB,SAASjc,GACnE2b,EAAgB5jB,KAAKI,KAAM4jB,KAC1Bhc,GAAG,uBAAwB,IAAMkc,EAAkB,SAASjc,GAC7D4b,EAAgB7jB,KAAKI,KAAM4jB,MAMjC7jB,EAAOJ,SACLyI,YAAaA,QAET2b,IAAI,SAAS1kB,EAAQU,EAAOJ,GAClC,aAEAoI,EAAEnE,UAAU6I,MAAM,WAChBpN,EAAQ,mBACRA,EAAQ,0BACRA,EAAQ,8BACRA,EAAQ,yBACRA,EAAQ,2BACRA,EAAQ,+BACRA,EAAQ,4BACRA,EAAQ,iCACRA,EAAQ,8BACRA,EAAQ,8BACRA,EAAQ,wBACRA,EAAQ,6BACRA,EAAQ,+BACRA,EAAQ,4BACRA,EAAQ,wBACRA,EAAQ,uBACRA,EAAQ,0BACRA,EAAQ,wBACRA,EAAQ,4BACRA,EAAQ,2BACRA,EAAQ,gCACRA,EAAQ,+BACRA,EAAQ,kCACRA,EAAQ,yCACRA,EAAQ,gCACRA,EAAQ,4BACRA,EAAQ,iCACRA,EAAQ,yBACRA,EAAQ,wBACRA,EAAQ,mCACRA,EAAQ,sBACRA,EAAQ,6BACRA,EAAQ,gCACRA,EAAQ,8BACRA,EAAQ,gCACRA,EAAQ,uBAEP2kB,wBAAwB,EAAEC,2BAA2B,EAAEC,+BAA+B,EAAEC,+BAA+B,EAAEC,8BAA8B,EAAEC,6BAA6B,EAAEC,8BAA8B,EAAEC,qBAAqB,EAAEC,wCAAwC,GAAGC,gCAAgC,GAAGC,4BAA4B,GAAGC,wBAAwB,GAAGC,yBAAyB,GAAGC,kBAAkB,GAAGC,2BAA2B,GAAGC,8BAA8B,GAAGC,6BAA6B,GAAGC,uBAAuB,GAAGC,6BAA6B,GAAGC,iCAAiC,GAAGC,kBAAkB,GAAGC,2BAA2B,GAAGC,+BAA+B,GAAGC,+BAA+B,GAAGC,4BAA4B,GAAGC,uBAAuB,GAAGC,gCAAgC,GAAGC,6BAA6B,GAAGC,uBAAuB,GAAGC,yBAAyB,GAAGC,uBAAuB,GAAGC,0BAA0B,GAAGC,2BAA2B,GAAGC,sBAAsB,GAAGC,kCAAkC,GAAGC,0BAA0B,UAAU","file":"site.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;ie.endVal;e.frameVal=n?e.endVal:e.frameVal,e.frameVal=Number(e.frameVal.toFixed(e.options.decimalPlaces)),e.printValue(e.frameVal),i1?e.options.decimal+r[1]:\"\",e.options.useGrouping){a=\"\";for(var l=3,u=0,h=0,p=n.length;hwindow.scrollY&&t.paused?(t.paused=!1,setTimeout((function(){return t.start()}),t.options.scrollSpyDelay),t.options.scrollSpyOnce&&(t.once=!0)):(window.scrollY>e||s>i)&&!t.paused&&t.reset()}},t.prototype.determineDirectionAndSmartEasing=function(){var t=this.finalEndVal?this.finalEndVal:this.endVal;this.countDown=this.startVal>t;var i=t-this.startVal;if(Math.abs(i)>this.options.smartEasingThreshold&&this.options.useEasing){this.finalEndVal=t;var n=this.countDown?1:-1;this.endVal=t+n*this.options.smartEasingAmount,this.duration=this.duration/2}else this.endVal=t,this.finalEndVal=null;null!==this.finalEndVal?this.useEasing=!1:this.useEasing=this.options.useEasing},t.prototype.start=function(t){this.error||(this.options.onStartCallback&&this.options.onStartCallback(),t&&(this.options.onCompleteCallback=t),this.duration>0?(this.determineDirectionAndSmartEasing(),this.paused=!1,this.rAF=requestAnimationFrame(this.count)):this.printValue(this.endVal))},t.prototype.pauseResume=function(){this.paused?(this.startTime=null,this.duration=this.remaining,this.startVal=this.frameVal,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count)):cancelAnimationFrame(this.rAF),this.paused=!this.paused},t.prototype.reset=function(){cancelAnimationFrame(this.rAF),this.paused=!0,this.resetDuration(),this.startVal=this.validateValue(this.options.startVal),this.frameVal=this.startVal,this.printValue(this.startVal)},t.prototype.update=function(t){cancelAnimationFrame(this.rAF),this.startTime=null,this.endVal=this.validateValue(t),this.endVal!==this.frameVal&&(this.startVal=this.frameVal,null==this.finalEndVal&&this.resetDuration(),this.finalEndVal=null,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count))},t.prototype.printValue=function(t){var i;if(this.el){var n=this.formattingFn(t);if(null===(i=this.options.plugin)||void 0===i?void 0:i.render)this.options.plugin.render(this.el,n);else if(\"INPUT\"===this.el.tagName)this.el.value=n;else\"text\"===this.el.tagName||\"tspan\"===this.el.tagName?this.el.textContent=n:this.el.innerHTML=n}},t.prototype.ensureNumber=function(t){return\"number\"==typeof t&&!isNaN(t)},t.prototype.validateValue=function(t){var i=Number(t);return this.ensureNumber(i)?i:(this.error=\"[CountUp] invalid start or end value: \".concat(t),null)},t.prototype.resetDuration=function(){this.startTime=null,this.duration=1e3*Number(this.options.duration),this.remaining=this.duration},t}();t.CountUp=n,Object.defineProperty(t,\"__esModule\",{value:!0})}));\n\n},{}],2:[function(require,module,exports){\n'use strict';\r\n\r\n\r\nfunction Accordions($accordion, optionsLogic) {\r\n this.$accordionModule = $accordion;\r\n this.$accordionSlides = null;\r\n this.$accordionNodes = null;\r\n this.options = optionsLogic || {\r\n exclusive: false,\r\n duration: 350, //in ms,\r\n triggerClass: 'js-accordion-trigger',\r\n accordionContentClass: 'js-accordion-content',\r\n parentClass: 'js-accordion-node',\r\n activeClass: 'is-expanded'\r\n };\r\n\r\n this.bindEvents();\r\n}\r\n\r\nAccordions.prototype.collapseAll = function collaseAll() {\r\n this.$accordionNodes.removeClass(this.options.activeClass);\r\n this.$accordionSlides.slideUp();\r\n};\r\n\r\nAccordions.prototype.collapseAccordion = function collapse($accordion) {\r\n $accordion.removeClass(this.options.activeClass);\r\n $accordion.find('.' + this.options.accordionContentClass).slideUp(this.options.duration);\r\n};\r\n\r\nAccordions.prototype.expandAccordion = function expand($accordion) {\r\n\r\n if (this.options.exclusive) {\r\n this.collapseAll();\r\n }\r\n\r\n $accordion.addClass(this.options.activeClass);\r\n $accordion.find('.' + this.options.accordionContentClass).slideDown(this.options.duration);\r\n};\r\n\r\n\r\n\r\nAccordions.prototype.toggleVisibility = function toggle($accordion) {\r\n var $parentNode = $accordion.closest('.' + this.options.parentClass);\r\n\r\n ( $parentNode.hasClass(this.options.activeClass) ) ? this.collapseAccordion($parentNode) : this.expandAccordion($parentNode);\r\n};\r\n\r\nAccordions.prototype.bindEvents = function bindEvents() {\r\n\r\n var _self = this;\r\n\r\n //initialize events\r\n _self.$accordionModule.on('click.Accordions', '.' + _self.options.triggerClass, function(ev) {\r\n ev.preventDefault();\r\n\r\n _self.toggleVisibility($(this));\r\n\r\n });\r\n\r\n\r\n //if accordion is exclusive, we cache elements for future use\r\n if (_self.options.exclusive) {\r\n _self.$accordionSlides = _self.$accordionModule.find('.' + _self.options.accordionContentClass);\r\n _self.$accordionNodes = _self.$accordionModule.find('.' + _self.options.parentClass);\r\n }\r\n\r\n};\r\n\r\n\r\nmodule.exports = Accordions;\n},{}],3:[function(require,module,exports){\n$(function(){\r\n\t'use strict';\r\n\r\n\tvar $leaders,\r\n\t\t$listing,\r\n\t\tzoomTiles;\r\n\r\n\r\n\t$leaders = $('.attorney-area');\r\n\r\n\tif(!$leaders.length){\r\n\t\treturn;\r\n\t}\r\n\r\n\t$listing = $leaders.find('.attorney-area-listing');\r\n\r\n\tzoomTiles = require('./zoom-feature').zoomFeature;\r\n\r\n\tzoomTiles($listing, 'bio-card-figure, .bio-card-link', 'bio-card');\r\n});\r\n\r\n\n},{\"./zoom-feature\":37}],4:[function(require,module,exports){\n$(function () {\r\n 'use strict';\r\n\r\n var $bioHeader = $('.js-bio-sticky-header'),\r\n $bioHeaderTrigger = $('.js-bio-sticky-header__trigger'),\r\n magicController,\r\n magicSceneHeader,\r\n collapsedClass = 'is-collapsed',\r\n\r\n //functions\r\n globalVars,\r\n mobileVar;\r\n\r\n \r\n\r\n //global variables initiliazation\r\n globalVars = require('./global-vars');\r\n\r\n mobileVar = globalVars.mobileSettings;\r\n\r\n magicController = globalVars.magicController;\r\n\r\n if ($bioHeaderTrigger[0]) {\r\n //Setup magic scene to scroll \r\n magicSceneHeader = new ScrollMagic.Scene({\r\n triggerHook: '0',\r\n triggerElement: $bioHeaderTrigger[0],\r\n })\r\n .setClassToggle($bioHeader.parent()[0], collapsedClass)\r\n .addTo(magicController);\r\n }\r\n\r\n});\n},{\"./global-vars\":14}],5:[function(require,module,exports){\nfunction CareersAccordions() {\r\n const init = () => {\r\n const containers = Array.from(\r\n document.querySelectorAll(\".careers-accordion\")\r\n );\r\n if (!containers.length) return;\r\n containers.forEach((container) => {\r\n const careersAccordion = CareersAccordion(container);\r\n careersAccordion.init();\r\n });\r\n };\r\n\r\n return { init };\r\n}\r\n\r\nfunction CareersAccordion(container) {\r\n let panels;\r\n let expandCollapseButton;\r\n\r\n const init = () => {\r\n const items = Array.from(\r\n container.querySelectorAll(\".careers-accordion__item\")\r\n );\r\n expandCollapseButton = container.querySelector(\r\n \".careers-accordion__expand-collapse-button\"\r\n );\r\n\r\n if (!items.length) return;\r\n\r\n panels = BuildPanels(items, expandCollapseButton);\r\n\r\n if (expandCollapseButton) {\r\n expandCollapseButton.addEventListener(\"click\", handleClick);\r\n }\r\n };\r\n\r\n const handleClick = () => {\r\n panels.toggleAll();\r\n };\r\n\r\n return { init };\r\n}\r\n\r\nfunction BuildPanels(elements, toggle) {\r\n let items;\r\n let allExpanded = false;\r\n let allCollapsed = true;\r\n let toggleAction = \"expand\";\r\n let ignorePublish = false;\r\n\r\n const publish = () => {\r\n if (ignorePublish) return;\r\n allExpanded = items.every((panel) => panel.isExpanded === true);\r\n allCollapsed = items.every((panel) => panel.isExpanded === false);\r\n\r\n if (allExpanded) toggleAction = \"collapse\";\r\n if (allCollapsed) toggleAction = \"expand\";\r\n\r\n updateToggleClass();\r\n };\r\n\r\n items = elements.map((item) => {\r\n const panel = BuildPanel(item, publish);\r\n return panel;\r\n });\r\n\r\n const expandAll = () => {\r\n items.forEach((item) => {\r\n item.expand();\r\n });\r\n };\r\n\r\n const collapseAll = () => {\r\n items.forEach((item) => {\r\n item.collapse();\r\n });\r\n };\r\n\r\n const toggleAll = () => {\r\n ignorePublish = true;\r\n items.forEach((item) => {\r\n item[toggleAction]();\r\n });\r\n allExpanded = !allExpanded;\r\n allCollapsed = !allCollapsed;\r\n toggleAction = allCollapsed ? \"expand\" : \"collapse\";\r\n updateToggleClass();\r\n ignorePublish = false;\r\n };\r\n\r\n const updateToggleClass = () => {\r\n if (!toggle) return;\r\n\r\n if (toggleAction === \"expand\") {\r\n toggle.classList.remove(\"collapse\");\r\n } else if (toggleAction === \"collapse\") {\r\n toggle.classList.add(\"collapse\");\r\n }\r\n };\r\n\r\n return {\r\n items,\r\n expandAll,\r\n collapseAll,\r\n toggleAll,\r\n };\r\n}\r\n\r\nconst BuildPanel = (item, publish) => {\r\n let isExpanded = false;\r\n const button = item.querySelector(\".careers-accordion__item--button\");\r\n const content = item.querySelector(\".careers-accordion__item--content\");\r\n\r\n const updateState = (type) => {\r\n switch (type) {\r\n case \"expand\": {\r\n item.classList.add(\"expanded\");\r\n button.setAttribute(\"aria-expanded\", \"true\");\r\n content.setAttribute(\"aria-hidden\", \"false\");\r\n isExpanded = true;\r\n break;\r\n }\r\n case \"collapse\": {\r\n item.classList.remove(\"expanded\");\r\n button.setAttribute(\"aria-expanded\", \"false\");\r\n content.setAttribute(\"aria-hidden\", \"true\");\r\n isExpanded = false;\r\n break;\r\n }\r\n case \"toggle\":\r\n default: {\r\n item.classList.toggle(\"expanded\");\r\n isExpanded = !isExpanded;\r\n button.setAttribute(\"aria-expanded\", `${isExpanded}`);\r\n content.setAttribute(\"aria-hidden\", `${!isExpanded}`);\r\n break;\r\n }\r\n }\r\n publish();\r\n };\r\n\r\n button.addEventListener(\"click\", () => {\r\n updateState(\"toggle\");\r\n });\r\n\r\n const expand = () => {\r\n updateState(\"expand\");\r\n };\r\n\r\n const collapse = () => {\r\n updateState(\"collapse\");\r\n };\r\n\r\n return {\r\n button,\r\n content,\r\n expand,\r\n collapse,\r\n get isExpanded() {\r\n return isExpanded;\r\n },\r\n };\r\n};\r\n\r\nconst careersAccordions = CareersAccordions();\r\ncareersAccordions.init();\r\n\n},{}],6:[function(require,module,exports){\n$(function () {\r\n 'use strict';\r\n\r\n var emailTo,\r\n $modal;\r\n\r\n $modal = $('.email-disclaimer-js');\r\n\r\n function preventDefault(evt) { evt.preventDefault(); }\r\n\r\n $(document.body).on('click', '.open-email-disclaimer-js', function (e) { \r\n disableScroll();\r\n emailTo = $(e.target).attr('data-email-to');\r\n $modal.addClass('active');\r\n });\r\n\r\n $(document.body).on('click', '.accept-btn-js', function () {\r\n if(emailTo && emailTo !== '')\r\n window.location.href = 'mailto:' + emailTo;\r\n $modal.removeClass('active');\r\n enableScroll();\r\n });\r\n\r\n $(document.body).on('click', '.close-btn-js', function () {\r\n $modal.removeClass('active');\r\n enableScroll();\r\n });\r\n\r\n function disableScroll() {\r\n window.addEventListener('wheel', preventDefault);\r\n window.addEventListener('touchmove', preventDefault);\r\n }\r\n\r\n function enableScroll() {\r\n window.removeEventListener('wheel', preventDefault);\r\n window.removeEventListener('touchmove', preventDefault);\r\n }\r\n});\n},{}],7:[function(require,module,exports){\n$(document).ready(bindEpandCollapseHandlers);\r\n\r\nfunction bindEpandCollapseHandlers() {\r\n var expandableItems = $(\".expandable\");\r\n expandableItems.each(function () {\r\n $(this).click(function () {\r\n $(this).toggleClass(\"expanded\");\r\n $(this).next().slideToggle();\r\n });\r\n\r\n\r\n })\r\n \r\n\r\n}\n},{}],8:[function(require,module,exports){\n$(function(){\r\n 'use strict';\r\n\r\n var $tilesWrapper = $('.js-experience-tiles'),\r\n zoomTiles;\r\n\r\n if(!$tilesWrapper.length){\r\n return;\r\n }\r\n\r\n zoomTiles = require('./zoom-feature').zoomFeature;\r\n\r\n zoomTiles($tilesWrapper, 'js-tile-link', 'tile-base');\r\n});\r\n\r\n\r\n\n},{\"./zoom-feature\":37}],9:[function(require,module,exports){\nfunction FadeIn() {\r\n const init = () => {\r\n const elements = Array.from(document.querySelectorAll('.js-fade-in'));\r\n if (!elements.length) return;\r\n\r\n const observer = new IntersectionObserver(\r\n (entries) => {\r\n entries.forEach((entry) => {\r\n if (entry.isIntersecting) {\r\n entry.target.classList.add(\"visible\");\r\n observer.unobserve(entry.target);\r\n }\r\n });\r\n },\r\n { threshold: 0.25 }\r\n );\r\n elements.forEach((el) => {\r\n observer.observe(el);\r\n })\r\n };\r\n\r\n return { init };\r\n}\r\n\r\nconst fadeIn = FadeIn();\r\nfadeIn.init();\n},{}],10:[function(require,module,exports){\n$(function(){\r\n\t'use strict';\r\n\r\n var $featuredArticle = $('.featured-article-component');\r\n\r\n\tif (!$featuredArticle.length) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar zoomArticle = require('./zoom-feature').zoomFeature;\r\n\tvar zoomLogic = function (direction) {\r\n\t if (direction === 'zoomIn') {\r\n\t $featuredArticle.addClass('is-zoomed');\r\n\t } else {\r\n\t $featuredArticle.removeClass('is-zoomed');\r\n\t }\r\n\t}\r\n\r\n\tzoomArticle($featuredArticle, 'featured-article-title', 'featured-article', zoomLogic);\r\n});\r\n\r\n\n},{\"./zoom-feature\":37}],11:[function(require,module,exports){\nfunction FeaturedPractices() {\r\n let container;\r\n let containerBottom;\r\n let containerTop;\r\n const practices = [];\r\n\r\n let lastScrollY = 0;\r\n let scrollDirection = \"down\";\r\n let resizeTimeout;\r\n\r\n const init = () => {\r\n container = document.querySelector(\".featured-practices\");\r\n\r\n const practicesContainers = Array.from(\r\n document.querySelectorAll(\".practice-container\")\r\n );\r\n const practicesImages = Array.from(\r\n document.querySelectorAll(\".practice-img-container--desktop\")\r\n );\r\n if (!container || !practicesContainers.length || !practicesImages.length)\r\n return;\r\n\r\n const { top, bottom } = container.getBoundingClientRect();\r\n containerBottom = bottom;\r\n containerTop = top;\r\n practicesImages.forEach((image, index) => {\r\n image.style.zIndex = practicesImages.length - index;\r\n });\r\n practicesContainers.forEach((container, index) => {\r\n practices.push({ container, image: practicesImages[index] });\r\n });\r\n\r\n document.addEventListener(\"scroll\", handleScroll);\r\n document.addEventListener(\"resize\", handleResize);\r\n };\r\n\r\n\r\n const handleScroll = () => {\r\n if (lastScrollY < window.scrollY) {\r\n scrollDirection = \"down\";\r\n } else if (lastScrollY > window.scrollY) {\r\n scrollDirection = \"up\";\r\n }\r\n lastScrollY = window.scrollY;\r\n const html = document.querySelector(\"html\");\r\n const nav = document.querySelector(\"nav\");\r\n const navHeight = nav.offsetHeight;\r\n const topThreshold = containerTop - window.innerHeight / 2;\r\n const bottomThreshold =\r\n scrollDirection === \"down\"\r\n ? containerBottom - window.innerHeight\r\n : containerBottom - window.innerHeight / 2;\r\n const isHomepage = document.querySelector(\".home\") !== null;\r\n const withinScrollRange = window.scrollY <= bottomThreshold && (isHomepage || window.scrollY >= topThreshold);\r\n html.style.scrollSnapType = withinScrollRange ? \"y mandatory\" : \"none\";\r\n document.querySelector(\".practice-images--desktop\").style.top = `${nav.offsetHeight}px`;\r\n\r\n practices.forEach((practice, index) => {\r\n practice.container.style[\"scroll-margin-top\"] = `${nav.offsetHeight}px`;\r\n if (index !== practices.length - 1) {\r\n const bottom = practice.container.getBoundingClientRect().bottom;\r\n const visibleHeight = window.innerHeight - navHeight;\r\n const practiceBottom = bottom - navHeight;\r\n practice.image.style.height = `${clamp(\r\n practiceBottom,\r\n 0,\r\n visibleHeight\r\n )}px`;\r\n }\r\n });\r\n };\r\n\r\n const handleResize = () => {\r\n if (resizeTimeout) clearTimeout(resizeTimeout);\r\n resizeTimeout = setTimeout(() => {\r\n const { top, bottom } = container.getBoundingClientRect();\r\n containerBottom = bottom - window.scrollY;\r\n }, 10);\r\n };\r\n\r\n return {\r\n init,\r\n };\r\n}\r\n\r\nconst clamp = (val, min, max) => {\r\n return val < min ? min : val > max ? max : val;\r\n};\r\n\r\nconst featuredPratices = FeaturedPractices();\r\nfeaturedPratices.init();\r\n\n},{}],12:[function(require,module,exports){\n$(function(){\r\n\t'use strict';\r\n\r\n\tvar $filterToggle = $('.js-filter-topics'),\r\n\t\t$topics,\r\n\t\t$hiddenTopics,\r\n\t\t$allTopicsBtn,\r\n\t\t$topicsList,\r\n\t\t$mobileToggle,\r\n\t\t\r\n\t\tchildSelector,\r\n\t\tglobalVars,\r\n\t\tmobileVar,\r\n\t\tshowTopicsClass,\r\n\t\tisTopicsExpanded,\r\n\t\ttoggleExpandedTopics,\r\n\t\tselectedClass,\r\n\t\tactivateTopic;\r\n\r\n\tif (!$filterToggle.length) {\r\n\t\treturn;\r\n\t}\r\n\r\n\r\n\t//global variables initiliazation\r\n\tglobalVars = require('./global-vars');\r\n\r\n\tmobileVar = globalVars.mobileSettings;\r\n\r\n\t$topicsList = $filterToggle.find('.js-topics-list');\r\n\t$topics = $filterToggle.find('.js-topic');\r\n\t$mobileToggle = $filterToggle.find('.js-mobile-btn');\r\n\t$allTopicsBtn = $filterToggle.find('.js-topic-all');\r\n\r\n\tchildSelector = $topicsList.data('child-selector');\r\n\tchildSelector = (!!childSelector) ? childSelector : '9';\r\n\r\n\t$hiddenTopics = $topics.filter('.non-featured');\r\n\tshowTopicsClass = 'show-topics';\r\n\tselectedClass = 'is-selected';\r\n\r\n\tisTopicsExpanded = false;\r\n\t//expandedFilters = false;\r\n\r\n\r\n\t//activateTopic = function activeTopic($topic){\r\n\t//\tif( $topic.hasClass(selectedClass) ) {\r\n\t//\t\t$topics.removeClass(selectedClass);\t\t\t\r\n\t//\t\treturn;\r\n\t//\t}\r\n\t//\t$topics.removeClass(selectedClass);\r\n\t//\t$topic.addClass(selectedClass);\r\n\t//};\r\n\r\n\ttoggleExpandedTopics = function toggle() {\r\n\t\tif(isTopicsExpanded) {\r\n\t\t\t$allTopicsBtn.text($allTopicsBtn.data('collapsed-text') );\r\n\t\t\t//$hiddenTopics.slideUp();\r\n\t\t\tisTopicsExpanded = false;\r\n\r\n\t\t} else {\r\n\t\t\t$allTopicsBtn.text($allTopicsBtn.data('expanded-text') );\r\n\t\t\t//$hiddenTopics.slideDown();\r\n\t\t\tisTopicsExpanded = true;\r\n\t\t}\r\n\t};\r\n\r\n\r\n\t//$filterToggle.on('click.topic', '.js-topic', function(ev){\r\n\t//\tev.preventDefault();\r\n\t//\tev.stopPropagation();\r\n\r\n\t//\tactivateTopic( $(this) );\r\n\t//});\r\n\r\n\t$mobileToggle.on('click.mobileToggle', function(ev){\r\n\t\tev.preventDefault();\r\n\r\n\t\tif(mobileVar.isMobile) {\r\n\t\t\t$mobileToggle.toggleClass(showTopicsClass);\r\n\t\t\t$topicsList.slideToggle();\r\n\t\t}\r\n\t});\r\n\r\n\t$allTopicsBtn.on('click.ExpandFilters', function(ev){\r\n\t\tev.preventDefault();\r\n\r\n\t\ttoggleExpandedTopics();\r\n\t});\r\n});\n},{\"./global-vars\":14}],13:[function(require,module,exports){\nfunction FlipCards() {\r\n const init = () => {\r\n const containers = Array.from(document.querySelectorAll(\".flip-cards\"));\r\n if (!containers.length) return;\r\n\r\n containers.forEach((container) => {\r\n const flipCard = FlipCard(container);\r\n flipCard.init();\r\n });\r\n };\r\n\r\n return { init };\r\n}\r\n\r\nfunction FlipCard(container) {\r\n let cardsContainer;\r\n let cardsContainerHeight;\r\n let cardsContainerTop;\r\n let cards;\r\n\r\n let isMobile;\r\n\r\n const init = () => {\r\n cardsContainer = container.querySelector(\".flip-cards__list\");\r\n if (!cardsContainer) return;\r\n\r\n cards = Array.from(\r\n cardsContainer.querySelectorAll(\".flip-cards__list-item\")\r\n );\r\n if (!cards.length) return;\r\n\r\n cards.forEach((card) => {\r\n const button = card.querySelector(\".flip-cards__button\");\r\n if (button) {\r\n button.addEventListener(\"click\", () => handleClick(card));\r\n }\r\n });\r\n const computedStyle = getComputedStyle(cardsContainer);\r\n isMobile = computedStyle.getPropertyValue(\"--isMobile\") === \"true\";\r\n\r\n if (!isMobile) attachScrollListener();\r\n window.addEventListener(\"resize\", handleResize);\r\n };\r\n\r\n const handleClick = (card) => {\r\n card.classList.toggle(\"flipped\");\r\n };\r\n\r\n const handleScroll = () => {\r\n const y = window.scrollY;\r\n const dy = y - cardsContainerTop + window.innerHeight;\r\n const min = -window.innerHeight;\r\n const max = cardsContainerTop + cardsContainerHeight;\r\n if (dy < min || dy > max) return;\r\n\r\n const step = clamp(dy, min, max);\r\n const progress = step / (cardsContainerHeight + window.innerHeight);\r\n\r\n cards.forEach((card, index) => {\r\n const cardHeight = card.offsetHeight;\r\n const diff = cardsContainerHeight - cardHeight;\r\n let dy = diff * progress;\r\n if (index === 1) dy *= -1;\r\n\r\n card.style.transform = `translate3d(0px, ${dy}px, 0px)`;\r\n });\r\n };\r\n\r\n const handleResize = () => {\r\n window.removeEventListener(\"scroll\", handleScroll);\r\n const computedStyle = getComputedStyle(cardsContainer);\r\n isMobile = computedStyle.getPropertyValue(\"--isMobile\") === \"true\";\r\n if (isMobile) {\r\n cards.forEach((card) => {\r\n card.style.transform = `translate3d(0px, 0px, 0px)`;\r\n });\r\n return;\r\n }\r\n attachScrollListener();\r\n };\r\n\r\n const attachScrollListener = () => {\r\n const { top, height } = cardsContainer.getBoundingClientRect();\r\n cardsContainerHeight = height;\r\n cardsContainerTop = top + window.scrollY;\r\n window.addEventListener(\"scroll\", handleScroll);\r\n };\r\n\r\n return { init };\r\n}\r\n\r\nconst clamp = (val, min, max) => {\r\n return val < min ? min : val > max ? max : val;\r\n};\r\n\r\nconst flipCards = FlipCards();\r\nflipCards.init();\r\n\n},{}],14:[function(require,module,exports){\n\r\n\r\n$(function(){\r\n\t'use strict';\r\n\r\n\t\t\r\n\tvar windowUtil,\r\n\t\tmobileSettings,\r\n\t\tdomValues,\r\n\r\n\t\t//functions\r\n\t\tsetupValues,\r\n\r\n\t\t//responsive media query function\r\n\t\tmqMobile,\r\n\r\n\t\t//Global magic controller\r\n\t\tmagicController;\r\n\r\n\r\n\tmobileSettings = {\r\n\t\tisMobile: false\r\n\t};\r\n\r\n\tdomValues = {\r\n\t\theaderDesktopHeight: 87,\r\n\t\theaderDesktopHeightCollased: 87,\r\n\t\theaderMobileHeight: 69\r\n\t};\r\n\r\n\twindowUtil = {\r\n\t\twindowHeight: null,\r\n\t\twindowWidth: null,\r\n\t};\r\n\r\n\tsetupValues = function(mobileState) {\r\n\t\tmobileSettings.isMobile = mobileState;\r\n\t\twindowUtil.windowHeight = window.innerHeight;\r\n\t\twindowUtil.windowWidth = window.innerWidth;\r\n\t};\r\n\r\n\tmagicController = new ScrollMagic.Controller();\r\n\r\n\r\n\r\n\tmqMobile = window.matchMedia('(max-width: 767px)');\r\n\r\n\t(mqMobile.matches) ? setupValues(true) : setupValues(false);\r\n\t\t\r\n\tmqMobile.addListener( function(changed) {\r\n\t\t(changed.matches) ? setupValues(true) : setupValues(false);\r\n\t}); \r\n\r\n\tmodule.exports = {\r\n\t\tmobileSettings: mobileSettings,\r\n\t\twindowUtil: windowUtil,\r\n\t\tdomValues: domValues,\r\n\t\tmagicController: magicController\r\n\t};\r\n});\n},{}],15:[function(require,module,exports){\nfunction Home() {\r\n let container;\r\n let assetsLoaded = false;\r\n const init = () => {\r\n container = document.querySelector('.home-hero-container-js');\r\n if (!container) return;\r\n\r\n const computedStyle = getComputedStyle(container);\r\n const isMobile = computedStyle.getPropertyValue('--isMobile') === 'true';\r\n const heroVideo = container.querySelector('.homepage-hero__video');\r\n if (!heroVideo && !isMobile) {\r\n showHero();\r\n return;\r\n }\r\n\r\n const backgroundImageSrc = container.dataset.backgroundImage;\r\n let backgroundImage = new Image();\r\n backgroundImage.addEventListener('load', () => {\r\n container.style.backgroundImage = `url(${backgroundImageSrc})`;\r\n showHero();\r\n backgroundImage = null;\r\n });\r\n backgroundImage.addEventListener('error', () => {\r\n showHero();\r\n backgroundImage = null;\r\n });\r\n backgroundImage.src = backgroundImageSrc;\r\n\r\n if (!isMobile) {\r\n heroVideo.addEventListener('canplaythrough', showHero);\r\n heroVideo.addEventListener('error', showHero);\r\n }\r\n };\r\n\r\n const showHero = () => {\r\n if (!container || assetsLoaded) return;\r\n assetsLoaded = true;\r\n container.classList.add('show');\r\n };\r\n\r\n return { init };\r\n}\r\n\r\nconst home = Home();\r\nhome.init();\r\n\n},{}],16:[function(require,module,exports){\n$(function(){\r\n 'use strict';\r\n\r\n var $tilesWrapper = $('.js-insight-tiles'),\r\n zoomTiles;\r\n\r\n if(!$tilesWrapper.length){\r\n return;\r\n }\r\n\r\n zoomTiles = require('./zoom-feature').zoomFeature;\r\n\r\n zoomTiles($tilesWrapper, 'js-tile-link', 'tile-base');\r\n});\n},{\"./zoom-feature\":37}],17:[function(require,module,exports){\n$(function(){\r\n\t'use strict';\r\n\r\n\tvar $insightLanding = $('.js-insights-landing'),\r\n\t\t$tabMenu,\r\n\t\t$tabMenuButtons,\r\n\t\t$panelWrapper,\r\n\t\t$panelDefault,\r\n\t\t$panelAjax,\r\n\t\t$featureArticle,\r\n\r\n\t\t//state based variables\r\n\t\tcurrentTabID,\r\n\r\n\t\t//classes\r\n\t\tactiveTabMenuClass,\r\n\t\tactivePanelClass,\r\n\t\ttransitionOutClass,\r\n\t\t//transitionInClass,\r\n\t\trunningAnimation,\r\n\r\n\t\t//functions\r\n\t\tupdateTabUI,\r\n\t\tupdatePanelUI,\r\n\t\trequestData,\r\n\t\tzoomArticle,\r\n\t\tzoomLogic,\r\n\r\n\t\tglobalVars,\r\n\t\tmobileVar;\r\n\r\n\tif (!$insightLanding.length) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t//global variables initiliazation\r\n\tglobalVars = require('./global-vars');\r\n\r\n\tmobileVar = globalVars.mobileSettings;\r\n\r\n\t//initialize jquery options\r\n\t$tabMenu = $insightLanding.find('.js-tab-menu');\r\n\t$tabMenuButtons = $tabMenu.find('.js-menu-option');\r\n\t$panelWrapper = $insightLanding.find('.js-panels');\r\n\t$panelDefault = $panelWrapper.find('.js-panel-default');\r\n\t$panelAjax = $panelWrapper.find('.js-panel-ajax');\r\n\r\n\t$featureArticle = $('.featured-article');\r\n\r\n\tactiveTabMenuClass = 'is-selected';\r\n\tactivePanelClass = 'is-selected';\r\n\r\n\ttransitionOutClass = 'is-transition-out';\r\n\r\n\trunningAnimation = false;\r\n\r\n\trequestData = function(tabID) {\r\n\t\t//$panelDefault.removeClass(activePanelClass);\t\t\r\n\t\t//$panelAjax.addClass(activePanelClass);\r\n\r\n\t\t//$panelWrapper.removeClass(transitionOutClass)\r\n\t\t//\t\t\t.animate({height: $panelAjax.outerHeight()}, \r\n\t\t//\t\t\t\t300, function(){\r\n\t\t//\t\t\t\t\t$panelWrapper.css('height', '');\r\n\t\t//\t\t\t\t});\r\n\r\n\t\t//currentTabID = tabID;\r\n\t\t//runningAnimation = false;\r\n\t};\r\n\r\n\tupdateTabUI = function($tabButton){\r\n\t\t$tabMenuButtons.removeClass(activeTabMenuClass);\r\n\t\t$tabButton.addClass(activeTabMenuClass);\r\n\t};\r\n\r\n\tupdatePanelUI = function(tabID) {\r\n\t\t//runningAnimation = true;\r\n\t\t//$panelWrapper.addClass(transitionOutClass).css('height', $panelWrapper.height() );\r\n\r\n\t\t//check if default tab was selected to show content already preloaded\r\n\t\t//if( tabID === 'default') {\t\t\t\r\n\t\t//\tsetTimeout(function(){\r\n\t\t//\t\t//$panelAjax.removeClass(activePanelClass);\r\n\t\t//\t\t//$panelDefault.addClass(activePanelClass);\r\n\r\n\t\t//\t\t$panelWrapper\r\n\t\t//\t\t\t.removeClass(transitionOutClass)\r\n\t\t//\t\t\t.animate({height: $panelDefault.outerHeight()}, \r\n\t\t//\t\t\t\t300, function(){\r\n\t\t//\t\t\t\t\t$panelWrapper.css('height', '');\r\n\t\t//\t\t\t\t});\r\n\t\t//\t\tcurrentTabID = tabID;\r\n\t\t//\t\trunningAnimation = false;\r\n\t\t//\t}, 500); //timeout needs to be in sync with css timing\r\n\t\t//\treturn;\r\n\t\t//}\r\n\r\n\t\t//we can replace this ajax request\r\n\t\t//setTimeout(function() {\r\n\t\t//\trequestData(tabID);\r\n\t\t//}, 1000);\r\n\t};\r\n\r\n\t$tabMenu.on('click', '.js-menu-option', function(ev) {\r\n\t\tev.preventDefault();\r\n\r\n\t\tvar _self = $(this),\r\n\t\t\tselectedID = _self.data('tab-id');\r\n\r\n\t\tif(selectedID === currentTabID || runningAnimation ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tupdateTabUI(_self);\r\n\t\tupdatePanelUI(selectedID);\r\n\t});\r\n\r\n\t//setup initial view\r\n\tcurrentTabID = \t$tabMenuButtons.filter('.is-selected').data('tab-id');\r\n\r\n\t//attach zooming behavior\r\n\tif($featureArticle.length) {\r\n\t\tzoomArticle = require('./zoom-feature').zoomFeature;\r\n\t\tzoomLogic = function(direction) {\r\n\t\t\t\r\n\t\t\tif(direction === 'zoomIn') {\r\n\t\t\t\t$featureArticle.addClass('is-zoomed');\r\n\t\t\t} else {\r\n\t\t\t\t$featureArticle.removeClass('is-zoomed');\r\n\t\t\t}\r\n\t\t}\r\n\r\n \t\tzoomArticle($featureArticle, 'featured-article-title', 'featured-article', zoomLogic);\r\n\t}\r\n});\n},{\"./global-vars\":14,\"./zoom-feature\":37}],18:[function(require,module,exports){\nconst COLLAPSED_HEADER_HEIGHT = 69; // no other way to grab this value from the CSS -- header starts expanded\r\nconst SCROLL_PADDING = 16;\r\n\r\nfunction JobsJumpLinks() {\r\n let isExpanded = false;\r\n const init = () => {\r\n const container = document.querySelector('.job-opportunity__anchor-links');\r\n if (!container) return;\r\n\r\n const nav = container.querySelector('.job-opportunity__anchor-links--wrapper');\r\n const button = container.querySelector('.job-opportunity__anchor-links--button');\r\n const links = Array.from(container.querySelectorAll('.job-opportunity__anchor--link'));\r\n\r\n if (!button || !nav || !links.length) return;\r\n\r\n button.addEventListener('click', () => {\r\n isExpanded = !isExpanded;\r\n container.classList.toggle('expanded');\r\n button.setAttribute('aria-expanded', `${isExpanded}`);\r\n nav.setAttribute('aria-hidden', `${!isExpanded}`);\r\n });\r\n\r\n links.forEach((link) => {\r\n link.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n const href = e.currentTarget.getAttribute('href');\r\n if (!href) return;\r\n const section = document.getElementById(href.substring('1'));\r\n if (!section) return;\r\n const offset = COLLAPSED_HEADER_HEIGHT + SCROLL_PADDING + container.offsetHeight;\r\n const top = section.getBoundingClientRect().top + window.scrollY;\r\n window.scrollTo({ top: top - offset, behavior: 'smooth' });\r\n section.focus({ preventScroll: true });\r\n })\r\n })\r\n }\r\n\r\n return { init }\r\n}\r\n\r\nconst jobsJumpLinks = JobsJumpLinks();\r\njobsJumpLinks.init();\r\n\n},{}],19:[function(require,module,exports){\n$(function(){\r\n 'use strict';\r\n\r\n var $jumpMenu = $('.js-jump-menu'),\r\n $jumpMenuNodes,\r\n $sectionModules,\r\n $bodyHtml,\r\n\r\n //active Classes \r\n activeNavClass,\r\n\r\n nodeCollection,\r\n\r\n //offsets\r\n windowOffset,\r\n headerOffset,\r\n\r\n magicController,\r\n sceneCollection,\r\n\r\n //functions\r\n populateNodeCollection,\r\n scrollToSection,\r\n updateNavStatus,\r\n addMagicSceneSection,\r\n\r\n globalVars,\r\n mobileVar;\r\n\r\n if (!$jumpMenu.length) {\r\n return;\r\n }\r\n\r\n\r\n $bodyHtml = $('html,body');\r\n\r\n $jumpMenuNodes = $jumpMenu.find('.js-menu-btn');\r\n $sectionModules = $('.js-jump-menu-sections').find('.js-jump-menu-section');\r\n\r\n activeNavClass = 'is-selected';\r\n\r\n //global variables initiliazation\r\n globalVars = require('./global-vars');\r\n\r\n mobileVar = globalVars.mobileSettings;\r\n \r\n magicController = globalVars.magicController;\r\n \r\n sceneCollection = {};\r\n\r\n\r\n if( mobileVar.isMobile) {\r\n headerOffset = globalVars.domValues.headerMobileHeight;\r\n windowOffset = headerOffset + 25; //magic number accounts for menu height\r\n\r\n } else {\r\n headerOffset = globalVars.domValues.headerDesktopHeight;\r\n windowOffset = headerOffset + 25; //magic number accounts for menu height\r\n }\r\n\r\n\r\n populateNodeCollection= function($navNode) {\r\n\r\n var $relatedModule,\r\n sectionID = $navNode[0].getAttribute('href');\r\n\r\n sectionID = sectionID.slice(1); \r\n $relatedModule = $sectionModules.filter('#' + sectionID);\r\n\r\n\r\n nodeCollection[sectionID] = {\r\n module: $relatedModule,\r\n navItem: $navNode\r\n };\r\n\r\n };\r\n\r\n nodeCollection= {};\r\n\r\n //run through nav items to collect all sections on a page\r\n for (var i = $jumpMenuNodes.length - 1; i >= 0; i--) {\r\n populateNodeCollection( $jumpMenuNodes.eq(i) ) ;\r\n }\r\n\r\n\r\n\r\n scrollToSection = function(sectionName) {\r\n\r\n var directionOffset,\r\n $sectionModule = nodeCollection[sectionName].module,\r\n sectionOffset = $sectionModule.offset().top;\r\n\r\n\r\n //direction logic to determine offset of header\r\n (window.pageYOffset > sectionOffset) ? ( \r\n //going up, headroom will show header so we need to account for offset\r\n directionOffset = windowOffset \r\n ) : (\r\n //going down, headroom will hide header so we need to adjust offset\r\n directionOffset = windowOffset //- headerOffset un comment this line if we ever have to add headroom\r\n );\r\n\r\n $bodyHtml.animate({\r\n scrollTop: sectionOffset - directionOffset\r\n }, 500);\r\n };\r\n\r\n\r\n $jumpMenu.on('click.jumpMenu', '.js-menu-btn', function(ev) {\r\n\r\n ev.preventDefault();\r\n\r\n var sectionID = this.getAttribute('href');\r\n\r\n sectionID = sectionID.slice(1);\r\n\r\n scrollToSection(sectionID);\r\n });\r\n\r\n\r\n //updating navigation\r\n updateNavStatus = function(sectionName) {\r\n $jumpMenuNodes.removeClass(activeNavClass);\r\n\r\n if(!!sectionName) {\r\n nodeCollection[sectionName].navItem.addClass(activeNavClass); \r\n }\r\n };\r\n\r\n //setupmagic Scenes for each module\r\n addMagicSceneSection = function ($navNode) {\r\n var moduleName = $navNode[0].getAttribute('href');\r\n\r\n moduleName = moduleName.slice(1);\r\n\r\n sceneCollection[moduleName + 'Scene']= new ScrollMagic.Scene({\r\n triggerElement: nodeCollection[moduleName].module[0],\r\n duration: nodeCollection[moduleName].module.outerHeight()\r\n })\r\n .on('enter', function(){updateNavStatus(moduleName);})\r\n .addTo(magicController);\r\n };\r\n\r\n\r\n for (var i = $jumpMenuNodes.length - 1; i >= 0; i--) {\r\n addMagicSceneSection( $jumpMenuNodes.eq(i));\r\n }\r\n\r\n //setup trigger for last item and remove all active classes from jump menu\r\n var lastItemName = $jumpMenuNodes\r\n .eq($jumpMenuNodes.length - 1)[0]\r\n .getAttribute('href')\r\n .slice(1);\r\n\r\n sceneCollection['lastItem'] = new ScrollMagic.Scene({\r\n triggerHook: '0',\r\n offset: nodeCollection[lastItemName].module.offset().top + nodeCollection[lastItemName].module.outerHeight() //offset of menu\r\n })\r\n .on('enter', function(){updateNavStatus()})\r\n .addTo(magicController);\r\n\r\n\r\n});\n},{\"./global-vars\":14}],20:[function(require,module,exports){\n$(function () {\r\n 'use strict'\r\n\r\n var $jumpNav = $('.js-jump-navigation'),\r\n $jumpNavNodes,\r\n $jumpNavModules,\r\n $mobileToggle,\r\n $bodyHtml,\r\n $isInitial = true,\r\n //active Classes\r\n activeNavClass,\r\n showNavigationClass,\r\n nodeCollection,\r\n bioStickyHeaderOffset = 0,\r\n //offsets\r\n windowOffset,\r\n headerOffset,\r\n magicController,\r\n sceneCollection,\r\n //functions\r\n populateNodeCollection,\r\n scrollToSection,\r\n updateNavStatus,\r\n addMagicSceneSection,\r\n globalVars,\r\n mobileVar,\r\n getOffsetValues\r\n\r\n if (!$jumpNav.length) {\r\n return\r\n }\r\n\r\n $bodyHtml = $('html,body')\r\n\r\n $jumpNavNodes = $jumpNav.find('.jump-navigation__item')\r\n $jumpNavModules = $('.page-content-wrapper [data-section-id]')\r\n\r\n $mobileToggle = $jumpNav.find('.js-mobile-btn')\r\n\r\n activeNavClass = 'is-active'\r\n showNavigationClass = 'show-navigation'\r\n\r\n //global variables initiliazation\r\n globalVars = require('./global-vars')\r\n\r\n mobileVar = globalVars.mobileSettings\r\n\r\n magicController = globalVars.magicController\r\n\r\n sceneCollection = {}\r\n\r\n getOffsetValues = function() {\r\n windowOffset = globalVars.domValues.headerMobileHeight + $jumpNav.outerHeight()\r\n\r\n if ($('.js-bio-sticky-header').length) {\r\n bioStickyHeaderOffset = $('.js-bio-sticky-header').outerHeight()\r\n }\r\n }\r\n\r\n getOffsetValues()\r\n\r\n $(window).on('resize', function() {\r\n getOffsetValues()\r\n })\r\n\r\n populateNodeCollection = function ($navNode) {\r\n var sectionID = $navNode.data('nav-id'),\r\n $relatedModule = $jumpNavModules.filter(\r\n '[data-section-id=\"' + sectionID + '\"]'\r\n )\r\n\r\n nodeCollection[sectionID] = {\r\n module: $relatedModule,\r\n navItem: $navNode\r\n }\r\n }\r\n\r\n nodeCollection = {}\r\n\r\n //run through nav items to collect all sections on a page\r\n for (var i = $jumpNavNodes.length - 1; i >= 0; i--) {\r\n populateNodeCollection($jumpNavNodes.eq(i))\r\n }\r\n\r\n scrollToSection = function (sectionName) {\r\n var $jumpNavModule = nodeCollection[sectionName].module,\r\n sectionOffset = $jumpNavModule.offset().top,\r\n scrollTotal = sectionOffset - windowOffset - bioStickyHeaderOffset\r\n $bodyHtml.animate(\r\n {\r\n scrollTop: scrollTotal\r\n },\r\n 500\r\n )\r\n }\r\n\r\n $mobileToggle.on('click', function (ev) {\r\n ev.preventDefault()\r\n $jumpNav.toggleClass(showNavigationClass)\r\n })\r\n\r\n $jumpNav.on('click', '.jump-navigation__item', function (ev) {\r\n ev.preventDefault()\r\n\r\n var _self = $(this),\r\n sectionID = _self.data('nav-id')\r\n\r\n scrollToSection(sectionID)\r\n $jumpNav.removeClass(showNavigationClass)\r\n })\r\n\r\n //updating navigation\r\n updateNavStatus = function (sectionName) {\r\n $jumpNavNodes.removeClass(activeNavClass)\r\n\r\n nodeCollection[sectionName].navItem.addClass(activeNavClass)\r\n\r\n // if (mobileVar.isMobile) {\r\n $mobileToggle.text(nodeCollection[sectionName].navItem.text())\r\n $jumpNav.removeClass(showNavigationClass)\r\n // }\r\n }\r\n\r\n //setupmagic Scenes for each module\r\n addMagicSceneSection = function ($navNode) {\r\n var moduleName = $navNode.data('nav-id')\r\n var duration = nodeCollection[moduleName].module.outerHeight()\r\n sceneCollection[moduleName + 'Scene'] = new ScrollMagic.Scene({\r\n triggerElement: nodeCollection[moduleName].module[0],\r\n triggerHook: 0,\r\n offset: `-${windowOffset + 1 + bioStickyHeaderOffset}`,\r\n duration: !!duration ? duration : 300\r\n })\r\n .reverse(true)\r\n .on('enter', function () {\r\n // setTimeout(updateNavStatus(moduleName), 100)\r\n updateNavStatus(moduleName)\r\n })\r\n .addTo(magicController)\r\n }\r\n\r\n for (var i = $jumpNavNodes.length - 1; i >= 0; i--) {\r\n addMagicSceneSection($jumpNavNodes.eq(i))\r\n }\r\n $isInitial = false\r\n\r\n //Setup one off interaction to adjust position of navigation on desktop\r\n // sceneCollection['scrolledNav'] = new ScrollMagic.Scene({\r\n // triggerHook: '0',\r\n // offset: '100' //offset of menu\r\n // })\r\n // // .setClassToggle($jumpNav[0], 'scrolled')\r\n // .addTo(magicController)\r\n\r\n //setup default state for mobile toggle\r\n $mobileToggle.text(\r\n nodeCollection[$jumpNavNodes.eq(0).data('nav-id')].navItem.text()\r\n )\r\n $('.main-content').addClass('main-content--jump-nav')\r\n})\r\n\n},{\"./global-vars\":14}],21:[function(require,module,exports){\n'use strict';\r\n\r\nvar elemsToAnimateClass = 'large-story-animate--js';\r\nvar elemsToAnimate = [].slice.call(document.querySelectorAll('.' + elemsToAnimateClass));\r\n\r\nif (elemsToAnimate.length) {\r\n init();\r\n}\r\n\r\nfunction init() {\r\n window.addEventListener('load', startVisPoll);\r\n}\r\n\r\nfunction startVisPoll() {\r\n var aDelayThatWontHurtPerformance = 250;\r\n\r\n animate();\r\n\r\n if (elemsToAnimate.length) {\r\n setTimeout(startVisPoll, aDelayThatWontHurtPerformance);\r\n }\r\n} \r\n \r\nfunction animate() {\r\n elemsToAnimate = elemsToAnimate.filter(isOutOfView);\r\n\r\n function isOutOfView(elem, index) {\r\n var clientRect = elem.getBoundingClientRect();\r\n var isInView = clientRect.top < innerHeight && clientRect.top >= 0;\r\n var isInViewClass = 'large-story-animate--is-in-view';\r\n var largeStoryPanelIsInViewClass = 'large-story-panel-animate--is-in-view';\r\n var isScrolledPast = clientRect.top < clientRect.height;\r\n\r\n if (isInView || isScrolledPast) {\r\n elemsToAnimate[index].classList.add(isInViewClass); \r\n elemsToAnimate[index].parentElement.classList.add(largeStoryPanelIsInViewClass);\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n}\r\n\n},{}],22:[function(require,module,exports){\n;(function (global, undefined) {\r\n var doc = global.document || null\r\n var scope = {\r\n mobileSized: $(window).width < 768,\r\n overlayTiming: $('.home').attr('data-overlay-timing'),\r\n closeFlyout: function () {\r\n $('#mobile-menu-flyout')\r\n .removeClass('is-active')\r\n .attr('aria-hidden', 'true')\r\n\r\n $('.mobile-menu__flyout-content').removeClass('is-active')\r\n $('.sub-menu__flyout-trigger').attr('aria-expanded', 'false')\r\n }\r\n }\r\n\r\n var HomeApp = {\r\n init: function () {\r\n var that = this\r\n that.isScrolledPastHeader()\r\n //bind hover events to attribute\r\n _.each($('[app-hover]'), function (item) {\r\n if (that.isMobile()) {\r\n //use click event in mobile\r\n $(item).on('click', HomeApp[$(item).attr('app-hover')])\r\n } else {\r\n $(item).on(\r\n 'mouseenter mouseleave',\r\n HomeApp[$(item).attr('app-hover')]\r\n )\r\n }\r\n })\r\n //bind hover events to attribute\r\n _.each($('[app-mouse-leave]'), function (item) {\r\n $(item).on('mouseleave', HomeApp[$(item).attr('app-mouse-leave')])\r\n })\r\n //bind hover events to attribute\r\n _.each($('[app-mouse-enter]'), function (item) {\r\n $(item).on('mouseenter', HomeApp[$(item).attr('app-mouse-enter')])\r\n })\r\n //bind click event to attribute\r\n _.each($('[app-click]'), function (item) {\r\n $(item).on('click', HomeApp[$(item).attr('app-click')])\r\n })\r\n _.each($('[app-keyup]'), function (item) {\r\n $(item).on('keyup', HomeApp[$(item).attr('app-keyup')])\r\n })\r\n _.each($('[app-hide-on-typeahead-active]'), function (item) {\r\n $(window).on('typeaheadchanged', function () {\r\n setTimeout(function () {\r\n if (\r\n $('.type-ahead').hasClass('type-ahead-active') &&\r\n $('.header').hasClass('show-search')\r\n ) {\r\n $(item).hide()\r\n } else {\r\n $(item).show()\r\n }\r\n }, 100)\r\n })\r\n })\r\n $(window).on('scroll', function () {\r\n that.isScrolledPastHeader()\r\n })\r\n $(window).resize(function () {\r\n //ignore mobile devices\r\n if (!that.isMobile()) {\r\n if ($(window).width() < 768 && !scope.mobileSized) {\r\n scope.mobileSized = true\r\n //change hovers into click events\r\n _.each($('[app-hover]'), function (item) {\r\n $(item).off(\r\n 'mouseenter mouseleave',\r\n HomeApp[$(item).attr('app-hover')]\r\n )\r\n })\r\n _.each($('[app-hover]'), function (item) {\r\n $(item).on('click', HomeApp[$(item).attr('app-hover')])\r\n })\r\n } else if ($(window).width() >= 768 && scope.mobileSized) {\r\n scope.mobileSized = false\r\n _.each($('[app-hover]'), function (item) {\r\n $(item).on(\r\n 'mouseenter mouseleave',\r\n HomeApp[$(item).attr('app-hover')]\r\n )\r\n })\r\n _.each($('[app-hover]'), function (item) {\r\n $(item).off('click', HomeApp[$(item).attr('app-hover')])\r\n })\r\n }\r\n }\r\n })\r\n return this\r\n },\r\n\r\n reload: function () {\r\n return this\r\n },\r\n closeNotification: function(e) {\r\n $('.emergency-notification').fadeOut()\r\n },\r\n searchKeyup: function (e) {\r\n if ($(e.currentTarget).val().length > 0) {\r\n $(e.currentTarget).parent().addClass('has-input')\r\n } else {\r\n $(e.currentTarget).parent().removeClass('has-input')\r\n }\r\n },\r\n toggleSearch: function (e) {\r\n if ($('.header').hasClass('show-search')) {\r\n $('.search-input__input').val('')\r\n }\r\n\r\n $('.header').toggleClass('show-search')\r\n\r\n $(window).trigger('typeaheadchanged')\r\n if ($('.header').hasClass('show-search')) {\r\n setTimeout(function () {\r\n $('.header-search__keyword--input').focus()\r\n }, 500)\r\n }\r\n },\r\n showOverlay: function (e) {\r\n if (scope.overlayTiming && scope.overlayTiming > 0) {\r\n setTimeout(function () {\r\n $('.home').addClass('show-overlay').parent().css('overflow', 'hidden')\r\n }, scope.overlayTiming * 1000)\r\n } else {\r\n $('.home').addClass('show-overlay').parent().css('overflow', 'hidden')\r\n }\r\n },\r\n removeOverlay: function (e) {\r\n $('.home').removeClass('show-overlay').parent().css('overflow', '')\r\n },\r\n menuHover: function (e) {\r\n var target = $(e.currentTarget)\r\n //check if close button\r\n if (e.currentTarget.localName == 'li') target = target.parent().parent()\r\n //close other open menus on mobile\r\n $('.main-menu-container .menu-option')\r\n .not(this.parentElement)\r\n .removeClass('active')\r\n\r\n target.parent().toggleClass('active')\r\n $('.main-menu').toggleClass('active')\r\n },\r\n showMenu: function () {\r\n $('.mobile-menu').addClass('active')\r\n $('.header').removeClass('show-search')\r\n $(window).trigger('typeaheadchanged')\r\n },\r\n openFlyout: function (e) {\r\n if (e.target) {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n\r\n var target = $(e.target).attr('app-target')\r\n $(target).addClass('is-active')\r\n\r\n $(e.target).attr('aria-expanded', 'true')\r\n \r\n $('#mobile-menu-flyout')\r\n .addClass('is-active')\r\n .attr('aria-hidden', 'false' )\r\n }\r\n },\r\n closeFlyout: scope.closeFlyout,\r\n //close menu if not menu button and not clicked in mobile menu area\r\n closeMenu: function (e) {\r\n if ($(e.target).hasClass('menu-btn') || $(e.target).hasClass('menu-icon'))\r\n return\r\n if (\r\n $(e.target).closest($('.mobile-menu')).length > 0 &&\r\n !$(e.target).hasClass('ion-android-close')\r\n )\r\n return\r\n $('.mobile-menu').removeClass('active')\r\n scope.closeFlyout()\r\n\r\n if (\r\n $(e.target).hasClass('search') ||\r\n $(e.target).hasClass('search-input__input')\r\n ) {\r\n return\r\n } else {\r\n if ($(e.target).hasClass('header-search__keyword') || $(e.target).hasClass('header-search__keyword--input')){\r\n return\r\n }\r\n if ($('.header').hasClass('show-search')) {\r\n $('.search-input__input').val('')\r\n }\r\n\r\n if ($('.header').hasClass('show-search'))\r\n $('.header').toggleClass('show-search')\r\n $(window).trigger('typeaheadchanged')\r\n }\r\n },\r\n scrollPastHero: function (e) {\r\n var $bodyHtml = $('html,body'),\r\n $featureCard = $('.home-section-content')\r\n $header = $('.header')\r\n $bodyHtml.animate(\r\n {\r\n scrollTop: $featureCard.offset().top - $header.height()\r\n },\r\n 500\r\n )\r\n },\r\n goToUrl: function (url) {\r\n window.location.herf = url\r\n },\r\n expandSection: function (e) {\r\n var $target = $(e.target)\r\n var $expand = $target.closest($('.js-expand'))\r\n var $section = $expand.find('.js-expand-section')\r\n if ($target.hasClass('open')) {\r\n $section.slideUp()\r\n $target.removeClass('open')\r\n var collapse = $target.data('collapse')\r\n if (!!collapse) {\r\n $target.html(collapse)\r\n }\r\n } else {\r\n $section.slideDown()\r\n $target.addClass('open')\r\n var expand = $target.data('expand')\r\n if (!!expand) {\r\n $target.html(expand)\r\n }\r\n }\r\n },\r\n unload: function () {\r\n return this\r\n },\r\n isMobile: function () {\r\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\r\n navigator.userAgent\r\n )\r\n },\r\n checkForHero: function() {\r\n if($('.hero-intro-bg').length > 0) return true\r\n if($('.flexible-hero').length > 0) return true\r\n if($('.bio-image').length > 0) return true\r\n if($('.hero-items').length > 0) return true\r\n if($('.hero').length > 0) return true\r\n if($('.hero-content-wrapper__image').length > 0) return true\r\n if($('.detail-overview-header--has-image').length > 0) return true\r\n if($('.large-story-header').length > 0) return true\r\n return false\r\n },\r\n isScrolledPastHeader: function() {\r\n const hasHeroImg = this.checkForHero()\r\n if ($('.header').height() < $(window).scrollTop() || !hasHeroImg) {\r\n $('.header').addClass('header--gray')\r\n } else {\r\n $('.header').removeClass('header--gray')\r\n }\r\n }\r\n }\r\n\r\n global.App = HomeApp\r\n\r\n HomeApp.init()\r\n})(this)\r\n\n},{}],23:[function(require,module,exports){\n$(function(){\r\n\t'use strict';\r\n\r\n\tvar $peopleSearch = $('.js-people-search'),\r\n\t\t$filtersToggle,\r\n\t\t$filters,\r\n\t\t$dropdowns,\r\n\r\n\t\ttoggleAdvancedFilters,\r\n\t\tisFiltersExpanded,\r\n\r\n\t\tselectDropdowns,\r\n\t\tglobalVars,\r\n\t\tmobileVar;\r\n\r\n\tif (!$peopleSearch.length) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t//global variables initiliazation\r\n\tglobalVars = require('./global-vars');\r\n\r\n\tmobileVar = globalVars.mobileSettings;\r\n\r\n\tselectDropdowns = require('./select-dropdown');\r\n\r\n\t//initialize jquery options\r\n\t$filtersToggle = $peopleSearch.find('.js-view-toggle');\r\n\r\n\t$filters = $peopleSearch.find('.js-filters');\r\n\r\n\t$dropdowns = $peopleSearch.find('.js-select-dropdown');\r\n\r\n\t/*---------- Advanced Search Toggle ----------*/\r\n\r\n\ttoggleAdvancedFilters = function toggle() {\r\n\t\tif(isFiltersExpanded) {\r\n\t\t $filtersToggle.removeClass('is-expanded').text($filtersToggle.data('expand-label'));\r\n\t\t\t$filters.slideUp();\r\n\t\t\tisFiltersExpanded = false;\r\n\t\t} else {\r\n\t\t $filtersToggle.addClass('is-expanded').text($filtersToggle.data('collapse-label'));\r\n\t\t\t$filters.slideDown();\r\n\t\t\tisFiltersExpanded = true;\r\n\t\t}\r\n\t};\r\n\r\n\r\n\t$filtersToggle.on('click', function(ev) {\r\n\t\tev.preventDefault();\t\t\r\n\t\ttoggleAdvancedFilters();\r\n\t});\r\n\r\n\t\r\n\r\n\r\n\t/*---------- initialize dropdown Functionality ----------*/\r\n\r\n\r\n\t//selectDropdowns.initializeDropdowns($dropdowns, handleDropdownSelection); //handledropdownselection, we can remove\r\n\r\n\r\n\t/*---------- template specific functionality, can remove on live sitecore site ----------*/\r\n\r\n\r\n\r\n\t//var $searchContent = $('.js-people-search-content'),\r\n\t//\t$appliedFilters = $searchContent.find('.js-applied-filters'),\r\n\t//\t$appliedFiltersList = $appliedFilters.find('.js-filters-list'),\r\n\r\n\t//\t$alphaSearch = $peopleSearch.find('.js-alpha-search'),\r\n\t//\t$advancedSearch = $peopleSearch.find('.js-advanced-search'),\r\n\t//\t$advancedSearchFilters = $advancedSearch.find('.js-filters'),\r\n\r\n\t//\t//simple function to perform search\r\n\t//\thandleAlphaSearch,\r\n\r\n\t//\tsearchPerformed,\r\n\t//\tshowSiteresults;\r\n\r\n\t//searchPerformed = $searchContent.data('show-results') === true;\r\n\r\n\t//showSiteresults = function () {\r\n\t//\t$searchContent.css('height', $searchContent.outerHeight() + 'px').addClass('show-search-results');\r\n\r\n\t//\tsearchPerformed = true;\r\n\t//\t$searchContent.data('show-results', true);\r\n\r\n\t//\tvar timeout = setTimeout(function () {\r\n\t//\t $searchContent.css('height', '');\r\n\t//\t}, 500);\r\n\t//};\r\n\r\n\t//handleAlphaSearch = function ($letter) {\r\n\t//\tif(!searchPerformed) {\r\n\t//\t\tshowSiteresults();\r\n\t//\t}\r\n\r\n\t//\tif( !!$letter.data('search-active') ) {\r\n\t//\t\t$letter.removeClass('is-selected');\r\n\t//\t\t$letter.data('search-active', false) ;\r\n\r\n\t//\t\t$appliedFiltersList\r\n\t//\t\t\t.find('[data-filter-id=\"' + $letter.data('alpha-letter') + '\"]')\r\n\t//\t\t\t.remove();\r\n\r\n\t//\t} else {\r\n\t//\t\t$letter.addClass('is-selected');\r\n\t//\t\t$letter\r\n\t//\t\t\t.data('search-active', true)\r\n\t//\t\t\t.data('filter-id', $letter.data('alpha-letter') ) ;\r\n\r\n\t//\t\t$('
' + \r\n\t//\t\t\t'' + \r\n // \t\t\t$letter.text() + \r\n // \t'
')\r\n // \t.appendTo($appliedFiltersList);\r\n\t//\t}\r\n\t//};\r\n\r\n\t//temporary function\r\n\t//function handleDropdownSelection($dropdown, $selectedOption) {\r\n\r\n\t//\tif(!searchPerformed) {\r\n\t//\t\tshowSiteresults();\r\n\t//\t}\r\n\r\n\t//\t$('
' + \r\n\t//\t\t'' + \r\n // \t\t\t$selectedOption.text() + \r\n //\t'
').appendTo($appliedFiltersList);\r\n\t//}\r\n\r\n\t//$alphaSearch.on('click.alpha', '.js-alpha-letter', function (ev) {\r\n\t//\tev.preventDefault();\r\n\t//\thandleAlphaSearch( $(this) );\r\n\t//});\r\n});\n},{\"./global-vars\":14,\"./select-dropdown\":29}],24:[function(require,module,exports){\n$(function(){\r\n\t'use strict';\r\n\r\n\tvar $practiceGrouping = $('.js-practice-grouping'),\r\n\t\t$practiceToggle,\r\n\t\tpracticeAccordion,\r\n\r\n\t\t//Modules\r\n\t\tAccordions,\r\n\t\tmobileVar;\r\n\r\n\tif (!$practiceGrouping.length) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t//initialize accordions\r\n\tAccordions = require('./accordions');\r\n\r\n\tpracticeAccordion = new Accordions( $practiceGrouping );\r\n\r\n\r\n\t// Practice Grouping Toggle\r\n\r\n\t$practiceToggle = $('.js-practice-grouping-toggle-btn');\r\n\t$practiceToggle.click(function(){\r\n\t\tvar $this,\r\n\t\t\t$grouping,\r\n\t\t\t$node,\r\n\t\t\t$content,\r\n\t\t\ttoggleExpandClass,\r\n\t\t\tnodeExpandClass;\r\n\r\n\t\t$this = $(this);\r\n\t\t$grouping = $this.closest('.js-practice-grouping');\r\n\t\t$node = $grouping.find('.js-accordion-node');\r\n\t\t$content = $grouping.find('.js-accordion-content');\r\n\r\n\t\ttoggleExpandClass = 'expand-accordions';\r\n\t\tnodeExpandClass = 'is-expanded';\r\n\r\n\t\tif ($this.hasClass(toggleExpandClass)){\r\n\t\t\t$node.removeClass(nodeExpandClass);\r\n\t\t\t$content.slideUp();\r\n\t\t\t$this.removeClass(toggleExpandClass);\r\n\t\t} else {\r\n\t\t\t$node.addClass(nodeExpandClass);\r\n\t\t\t$content.slideDown();\r\n\t\t\t$this.addClass(toggleExpandClass)\r\n\t\t}\r\n\t});\r\n});\n},{\"./accordions\":2}],25:[function(require,module,exports){\nconst COLLAPSED_HEADER_HEIGHT = 69; // no other way to grab this value from the CSS -- header starts expanded\r\nconst SCROLL_PADDING = 16;\r\n\r\nfunction PracticesLanding() {\r\n const init = () => {\r\n const wrapper = document.querySelector('.practices-landing');\r\n if (!wrapper) return;\r\n\r\n const queryParams = new URLSearchParams(document.location.search);\r\n if (!queryParams) return;\r\n\r\n const sectionId = queryParams.get('data-section-id');\r\n if (!sectionId) return;\r\n\r\n const section = document.querySelector(\r\n `[data-section-id=\"${encodeURIComponent(sectionId).toLowerCase()}\"]`\r\n );\r\n if (!section) return;\r\n\r\n const jumpNav = document.querySelector('.jump-navigation');\r\n const jumpNavHeight = jumpNav ? jumpNav.clientHeight : 0;\r\n const offset = COLLAPSED_HEADER_HEIGHT + SCROLL_PADDING + jumpNavHeight;\r\n const top = section.getBoundingClientRect().top + window.scrollY;\r\n window.scrollTo({ top: top - offset, behavior: 'smooth' });\r\n section.focus({ preventScroll: true });\r\n };\r\n\r\n return { init };\r\n}\r\n\r\nconst practicesLanding = PracticesLanding();\r\npracticesLanding.init();\r\n\n},{}],26:[function(require,module,exports){\nfunction QuoteCarousels() {\r\n const init = () => {\r\n const containers = Array.from(document.querySelectorAll(\".quote-carousel\"));\r\n if (!containers.length) return;\r\n containers.forEach((container) => {\r\n const quoteCarousel = QuoteCarousel(container);\r\n quoteCarousel.init();\r\n });\r\n };\r\n\r\n return { init };\r\n}\r\n\r\nfunction QuoteCarousel(container) {\r\n let nextButton;\r\n let prevButton;\r\n\r\n let slides;\r\n let images;\r\n let currentIndex = 0;\r\n\r\n let isMobile;\r\n let scrollContainer;\r\n let slideObserver;\r\n\r\n const init = () => {\r\n checkMobile();\r\n scrollContainer = container.querySelector(\".carousel-container\");\r\n\r\n slides = Array.from(container.querySelectorAll(\".testimonial-container\"));\r\n images = Array.from(\r\n container.querySelectorAll(\".testimonial-img-container--desktop\")\r\n );\r\n\r\n nextButton = container.querySelector(\".quote-carousel__next-button\");\r\n prevButton = container.querySelector(\".quote-carousel__previous-button\");\r\n if (\r\n !scrollContainer ||\r\n !slides.length ||\r\n !images.length ||\r\n !nextButton ||\r\n !prevButton\r\n )\r\n return;\r\n\r\n images.forEach((image, index) => {\r\n image.style.zIndex = images.length - index;\r\n });\r\n checkButtonState();\r\n addSlideNumbers();\r\n nextButton.addEventListener(\"click\", handleNextButton);\r\n prevButton.addEventListener(\"click\", handlePrevButton);\r\n window.addEventListener(\"resize\", handleResize);\r\n\r\n if (isMobile) {\r\n handleMobileObserver();\r\n }\r\n };\r\n\r\n const handleNextButton = () => {\r\n handleSlideChange(currentIndex + 1);\r\n if (isMobile)\r\n handleMobileScroll(scrollContainer.scrollLeft + window.innerWidth);\r\n };\r\n\r\n const handlePrevButton = () => {\r\n handleSlideChange(currentIndex - 1);\r\n if (isMobile)\r\n handleMobileScroll(scrollContainer.scrollLeft - window.innerWidth);\r\n };\r\n\r\n const handleSlideChange = (nextIndex) => {\r\n const prevSlide = slides[currentIndex];\r\n const nextSlide = slides[nextIndex];\r\n const currentDot = container.querySelector(\".active-dot\");\r\n const nextDot = container.querySelector(`[data-dot-index=\"${nextIndex}\"]`);\r\n const currentNumber = container.querySelector(\".active-number\");\r\n const nextNumber = container.querySelector(\r\n `[data-number-index=\"${nextIndex}\"]`\r\n );\r\n const image =\r\n nextIndex > currentIndex ? images[currentIndex] : images[nextIndex];\r\n\r\n if (\r\n !prevSlide ||\r\n !nextSlide ||\r\n !currentDot ||\r\n !nextDot ||\r\n !currentNumber ||\r\n !nextNumber ||\r\n !image\r\n ) {\r\n return;\r\n }\r\n\r\n image.classList.toggle(\"hidden-image\");\r\n prevSlide.classList.remove(\"active-testimonial\");\r\n nextSlide.classList.add(\"active-testimonial\");\r\n currentDot.classList.remove(\"active-dot\");\r\n nextDot.classList.add(\"active-dot\");\r\n currentNumber.classList.remove(\"active-number\");\r\n nextNumber.classList.add(\"active-number\");\r\n currentIndex = nextIndex;\r\n checkButtonState();\r\n };\r\n\r\n const handleMobileScroll = (nextX) => {\r\n scrollContainer.scrollTo({ left: nextX, behavior: \"smooth\" });\r\n };\r\n\r\n const checkButtonState = () => {\r\n prevButton.disabled = currentIndex === 0;\r\n nextButton.disabled = currentIndex === slides.length - 1;\r\n };\r\n\r\n const addSlideNumbers = () => {\r\n const numberContainer = container.querySelector(\".slide-numbers\");\r\n slides.forEach((_, index) => {\r\n if (index > 0) {\r\n const num = document.createElement(\"span\");\r\n num.classList.add(\"slide-number\");\r\n num.dataset.numberIndex = index;\r\n num.textContent = `${index + 1}`.padStart(2, \"0\");\r\n numberContainer.insertAdjacentElement(\"beforeend\", num);\r\n }\r\n });\r\n };\r\n\r\n const handleMobileObserver = () => {\r\n slideObserver = new IntersectionObserver(\r\n (entries) => {\r\n entries.forEach((entry) => {\r\n if (entry.isIntersecting) {\r\n const nextIndex = slides.indexOf(entry.target);\r\n if (nextIndex > -1) {\r\n handleSlideChange(nextIndex);\r\n }\r\n }\r\n });\r\n },\r\n { threshold: 0.5 }\r\n );\r\n slides.forEach((slide) => {\r\n slideObserver.observe(slide);\r\n });\r\n };\r\n\r\n const handleResize = () => {\r\n const prevIsMobile = isMobile;\r\n checkMobile();\r\n const layoutChanged = prevIsMobile !== isMobile;\r\n if (!layoutChanged) return;\r\n\r\n if (!isMobile && slideObserver) {\r\n slides.forEach((slide) => {\r\n slideObserver.unobserve(slide);\r\n })\r\n }\r\n handleSlideChange(0);\r\n };\r\n\r\n const checkMobile = () => {\r\n const computedStyle = getComputedStyle(container);\r\n isMobile = computedStyle.getPropertyValue(\"--isMobile\") === \"true\";\r\n };\r\n\r\n return { init };\r\n}\r\n\r\nconst quoteCarousels = QuoteCarousels();\r\nquoteCarousels.init();\r\n\n},{}],27:[function(require,module,exports){\n$(function(){\r\n\t'use strict';\r\n\r\n\tvar $searchboxes,\r\n\t\t$inputBoxes,\r\n\r\n\t\tinputActiveClass,\r\n\t\thandleLabelEvent,\r\n\t\thandleFocus,\r\n\t\thandleBlur;\r\n\r\n\r\n\t$searchboxes = $('.js-searchbox');\r\n\r\n\tif(!$searchboxes.length){\r\n\t\treturn;\r\n\t}\r\n\r\n\tinputActiveClass = 'is-focused';\r\n\r\n\thandleFocus = function updateFacadeText() {\r\n\t\tvar $this = $( this ),\r\n\t\t\t$wrapper;\r\n\r\n\t\t$wrapper = $this.closest('.js-searchbox');\r\n\r\n\t\t$wrapper.addClass(inputActiveClass);\r\n\t};\r\n\r\n\thandleBlur = function updateFacadeText() {\r\n\t\tvar $this = $( this ),\r\n\t\t\t$wrapper;\r\n\r\n\t\t$wrapper = $this.closest('.js-searchbox');\r\n\r\n\t\tif($this.val().length === 0) {\r\n\t\t\t$wrapper.removeClass(inputActiveClass);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t$wrapper.addClass(inputActiveClass);\r\n\t\t}\r\n\t};\r\n\r\n\thandleLabelEvent = function focusInput() {\r\n\t\tvar $this = $( this );\r\n\r\n\t\t$this.next().trigger('focus.searchbox');\r\n\t};\r\n\r\n\t$inputBoxes = $searchboxes.find('.searchbox-input');\r\n\r\n\t$searchboxes.on('click.label', '.searchbox-label', function () {handleLabelEvent.call(this);});\r\n\r\n\t$inputBoxes\r\n\t\t.on('focus.searchbox', function () {handleFocus.call(this);})\r\n\t\t.on('blur.searchbox', function () {handleBlur.call(this);});\r\n\r\n\r\n\r\n\t$inputBoxes.each(function(index, el) {\r\n\t\thandleBlur.call(el);\r\n\t});\r\n\r\n});\r\n\r\n\n},{}],28:[function(require,module,exports){\n$(function(){\r\n 'use strict';\r\n\r\n var $sectionNav = $('.js-section-navigation'),\r\n $sectionNavNodes,\r\n $sectionModules,\r\n $mobileToggle,\r\n $bodyHtml,\r\n $isInitial = true,\r\n //active Classes \r\n activeNavClass,\r\n showNavigationClass,\r\n\r\n nodeCollection,\r\n\r\n //offsets\r\n windowOffset,\r\n headerOffset,\r\n\r\n magicController,\r\n sceneCollection,\r\n\r\n //functions\r\n populateNodeCollection,\r\n scrollToSection,\r\n updateNavStatus,\r\n addMagicSceneSection,\r\n\r\n globalVars,\r\n mobileVar;\r\n\r\n if (!$sectionNav.length) {\r\n return;\r\n }\r\n\r\n\r\n\r\n \r\n\r\n $bodyHtml = $('html,body');\r\n\r\n $sectionNavNodes = $sectionNav.find('.section-nav-item');\r\n $sectionModules = $('.main-content [data-section-id]');\r\n\r\n $mobileToggle = $sectionNav.find('.js-mobile-btn');\r\n\r\n activeNavClass = 'is-active';\r\n showNavigationClass = 'show-navigation';\r\n\r\n\r\n //global variables initiliazation\r\n globalVars = require('./global-vars');\r\n\r\n mobileVar = globalVars.mobileSettings;\r\n \r\n magicController = globalVars.magicController;\r\n \r\n sceneCollection = {};\r\n\r\n\r\n if( mobileVar.isMobile) {\r\n headerOffset = globalVars.domValues.headerMobileHeight;\r\n windowOffset = headerOffset + 75; //magic number accounts for section nav height\r\n\r\n } else {\r\n headerOffset = globalVars.domValues.headerDesktopHeight;\r\n windowOffset = headerOffset + 30;\r\n }\r\n\r\n\r\n populateNodeCollection= function($navNode) {\r\n\r\n var sectionID = $navNode.data('nav-id'),\r\n $relatedModule = $sectionModules.filter('[data-section-id=\"' + sectionID + '\"]');\r\n\r\n\r\n nodeCollection[sectionID] = {\r\n module: $relatedModule,\r\n navItem: $navNode,\r\n navLabel: $navNode.find('.nav-item-hover').text()\r\n };\r\n\r\n };\r\n\r\n nodeCollection= {};\r\n\r\n //run through nav items to collect all sections on a page\r\n for (var i = $sectionNavNodes.length - 1; i >= 0; i--) {\r\n populateNodeCollection( $sectionNavNodes.eq(i) ) ;\r\n }\r\n\r\n\r\n\r\n scrollToSection = function(sectionName) {\r\n\r\n var directionOffset,\r\n $sectionModule = nodeCollection[sectionName].module,\r\n sectionOffset = $sectionModule.offset().top;\r\n\r\n\r\n //direction logic to determine offset of header\r\n (window.pageYOffset > sectionOffset) ? ( \r\n //going up, headroom will show header so we need to account for offset\r\n directionOffset = windowOffset \r\n ) : (\r\n //going down, headroom will hide header so we need to adjust offset\r\n directionOffset = windowOffset //- headerOffset un comment this line if we ever have to add headroom\r\n );\r\n\r\n $bodyHtml.animate({\r\n scrollTop: sectionOffset - directionOffset\r\n }, 500);\r\n };\r\n\r\n\r\n $sectionNav.on('click.navOption', '.section-nav-item', function(ev) {\r\n\r\n ev.preventDefault();\r\n\r\n var _self = $(this),\r\n sectionID = _self.data('nav-id');\r\n\r\n scrollToSection(sectionID);\r\n });\r\n\r\n\r\n //updating navigation\r\n updateNavStatus = function(sectionName) {\r\n $sectionNavNodes.removeClass(activeNavClass);\r\n\r\n nodeCollection[sectionName].navItem.addClass(activeNavClass);\r\n\r\n if(mobileVar.isMobile && $isInitial == false) {\r\n $mobileToggle.text( nodeCollection[sectionName].navLabel );\r\n\r\n $sectionNav.removeClass(showNavigationClass);\r\n }\r\n };\r\n\r\n\r\n\r\n //setupmagic Scenes for each module\r\n addMagicSceneSection = function ($navNode) {\r\n var moduleName = $navNode.data('nav-id');\r\n\r\n sceneCollection[moduleName + 'Scene']= new ScrollMagic.Scene({\r\n triggerElement: nodeCollection[moduleName].module[0],\r\n duration: nodeCollection[moduleName].module.outerHeight()\r\n })\r\n .on('enter', function () {\r\n setTimeout(updateNavStatus(moduleName), 1000);\r\n })\r\n .addTo(magicController);\r\n };\r\n\r\n\r\n for (var i = $sectionNavNodes.length - 1; i >= 0; i--) {\r\n addMagicSceneSection( $sectionNavNodes.eq(i) );\r\n }\r\n $isInitial = false;\r\n\r\n $mobileToggle.on('click.mobileToggle', function(ev) {\r\n ev.preventDefault();\r\n\r\n $sectionNav.toggleClass(showNavigationClass);\r\n });\r\n\r\n\r\n\r\n //Setup one off interaction to adjust position of navigation on desktop\r\n sceneCollection['scrolledNav'] = new ScrollMagic.Scene({\r\n triggerHook: '0',\r\n offset: '10' //offset of menu\r\n })\r\n .setClassToggle($sectionNav[0], \"scrolled\")\r\n .addTo(magicController);\r\n\r\n\r\n //setup default state for mobile toggle\r\n $mobileToggle.text(nodeCollection[$sectionNavNodes.eq(0).data('nav-id')].navLabel);\r\n $('.main-content').addClass('main-content--section-nav');\r\n});\n},{\"./global-vars\":14}],29:[function(require,module,exports){\n$(function(){\r\n\t'use strict';\r\n\r\n\tvar updateFacadeText,\r\n\t\tinitializeDropdowns,\r\n\t\trunCallback;\r\n\r\n\r\n\tupdateFacadeText = function updateFacadeText(selectLabel) {\r\n\t\tvar $this = $( this ),\r\n\t\t\t$selectedItem,\r\n\t\t\t$selectLabel,\r\n\t\t\tcurrentText;\r\n\r\n\t\t$selectedItem = $this.find(':selected');\r\n\r\n\t\tif (!$selectedItem.length) { return; } \r\n\r\n\t\t// get the facade element used to display\r\n\t\t// the text of the selected option\r\n\t\t$selectLabel = $this.siblings(selectLabel);\r\n\r\n\r\n\t\t// get 'value' attribute value for selected option\r\n\t\tcurrentText = $selectedItem.text();\r\n\r\n\r\n\t\t// update select text label with current selected option value\r\n\t\tif ($selectLabel.length && currentText.length) {\r\n\t\t\t$selectLabel.text(currentText);\r\n\t\t}\r\n\t};\r\n\r\n\trunCallback = function runCallback(callback) {\r\n\t\tvar $this = $( this ),\r\n\t\t\t$selectedItem = $this.find(':selected');\r\n\r\n\t\tcallback($this, $selectedItem);\r\n\t};\r\n\r\n\r\n\tinitializeDropdowns = function($selectDropdowns, callback) {\r\n\t\tvar $dropdowns = $selectDropdowns.find('.select-dropdown-select'),\r\n\t\t\teventNamespace = '.selectDropdown';\r\n\r\n\t\t$dropdowns\r\n\t\t\t.off('change' + eventNamespace)\r\n\t\t\t.on('change' + eventNamespace, function () {\r\n\t\t\t\tupdateFacadeText.call(this, '.select-dropdown-label');\r\n\r\n\t\t\t\tif( typeof callback === 'function') {\r\n\t\t\t\t\trunCallback.call(this, callback);\r\n\t\t\t\t}\r\n\t\t \t});\r\n\t};\r\n\r\n\r\n\r\n\tmodule.exports = {\r\n\t\tinitializeDropdowns: initializeDropdowns\r\n\t};\r\n});\r\n\r\n\n},{}],30:[function(require,module,exports){\n$(function () {\r\n\r\n 'use strict';\r\n\r\n\r\n var $siteHeader = $('.header'),\r\n\t\t$homepage = $('.home'),\r\n $toggleSpanish = $(\".spanish\"),\r\n $toggleEnglish = $(\".english\"),\r\n\r\n\t\tmagicController,\r\n\t\tmagicSceneHeader,\r\n\t\tcollapsedClass,\r\n\r\n\t\t//functions\r\n\t\tglobalVars,\r\n\t\tmobileVar;\r\n\r\n\r\n\r\n //global variables initiliazation\r\n globalVars = require('./global-vars');\r\n\r\n mobileVar = globalVars.mobileSettings;\r\n\r\n collapsedClass = 'is-collapsed';\r\n\r\n magicController = globalVars.magicController;\r\n\r\n if (!mobileVar.isMobile && !$homepage.length) {\r\n\r\n //Setup magic scene to scroll \r\n magicSceneHeader = new ScrollMagic.Scene({\r\n triggerHook: '0',\r\n offset: globalVars.domValues.headerDesktopHeightCollased //offset of collapsedmenu\r\n })\r\n\t\t.setClassToggle($siteHeader[0], collapsedClass)\r\n\t\t.addTo(magicController);\r\n }\r\n $toggleSpanish.click(function () {\r\n $('.english').removeClass('active');\r\n $('.spanish').addClass('active');\r\n ChangeLanguage(\"es\")\r\n })\r\n $toggleEnglish.click(function () {\r\n $('.spanish').removeClass('active');\r\n $('.english').addClass('active');\r\n ChangeLanguage(\"en\")\r\n })\r\n function ChangeLanguage(cultureCode) {\r\n var currentUrl = window.location.href;\r\n if (currentUrl.indexOf(\"/\" + cultureCode + \"/\") != -1)\r\n return;\r\n if (currentUrl.indexOf(\"/es/\") == -1 && cultureCode == \"en\")\r\n return;\r\n\r\n //build url\r\n //first look to see if the culture code exists already\r\n\r\n if (currentUrl.indexOf(\"/es/\") > -1 && cultureCode == \"en\") { //language code needs to be replaced\r\n window.location.href = currentUrl.replace(\"/es/\", \"/\");\r\n return;\r\n }\r\n \r\n //if we make it here no culture code is in the url so we need to add it \r\n var hostName = location.hostname;\r\n window.location.href = currentUrl.replace(hostName + \"/\", hostName + \"/\" + cultureCode + \"/\");\r\n }\r\n});\r\n\r\n\n},{\"./global-vars\":14}],31:[function(require,module,exports){\n$(function(){\r\n\t'use strict';\r\n\r\n\tvar $siteSearch = $('.js-site-search'),\r\n\t\t$tabMenu,\r\n\t\t$tabMenuButtons,\r\n\t\t$panelWrapper,\r\n\t\t$panelDefault,\r\n\t\t$panelAjax,\r\n\t\t$appliedFilters,\r\n\t\t$resultsCount,\r\n\r\n\t\t//state based variables\r\n\t\tcurrentTabID,\r\n\r\n\t\t//classes\r\n\t\tactiveTabMenuClass,\r\n\t\tactivePanelClass,\r\n\t\ttransitionOutClass,\r\n\t\t//transitionInClass,\r\n\t\trunningAnimation,\r\n\r\n\t\t//functions\r\n\t\tupdateTabUI,\r\n\t\tupdatePanelUI,\r\n\t\trequestData,\r\n\r\n\t\tglobalVars,\r\n\t\tmobileVar;\r\n\r\n\tif (!$siteSearch.length) {\r\n\t\treturn;\r\n\t}\r\n\r\n\r\n\t//global variables initiliazation\r\n\tglobalVars = require('./global-vars');\r\n\r\n\tmobileVar = globalVars.mobileSettings;\r\n\r\n\t//initialize jquery options\r\n\t$tabMenu = $siteSearch.find('.js-tab-menu');\r\n\t$tabMenuButtons = $tabMenu.find('.js-menu-option');\r\n\t$panelWrapper = $siteSearch.find('.js-panels');\r\n\t$panelDefault = $panelWrapper.find('.js-panel-default');\r\n\t$panelAjax = $panelWrapper.find('.js-panel-ajax');\r\n\r\n\t$appliedFilters = $siteSearch.find('.js-applied-filters');\r\n\t$resultsCount = $siteSearch.find('.js-results-count');\r\n\r\n\tactiveTabMenuClass = 'is-selected';\r\n\tactivePanelClass = 'is-selected';\r\n\r\n\ttransitionOutClass = 'is-transition-out';\r\n\r\n\trunningAnimation = false;\r\n\r\n\r\n\trequestData = function(tabID) {\r\n\t\t$panelDefault.removeClass(activePanelClass);\r\n\t\t\r\n\t\t\r\n\t\t$panelAjax.addClass(activePanelClass);\r\n\r\n\t\t$panelWrapper\r\n\t\t\t\t\t.removeClass(transitionOutClass)\r\n\t\t\t\t\t.animate({height: $panelAjax.outerHeight()}, \r\n\t\t\t\t\t\t300, function(){\r\n\t\t\t\t\t\t\t$panelWrapper.css('height', '');\r\n\t\t\t\t\t\t});\r\n\r\n\t\tcurrentTabID = tabID;\r\n\t\trunningAnimation = false;\r\n\t};\r\n\r\n\r\n\tupdateTabUI = function($tabButton){\r\n\t\t$tabMenuButtons.removeClass(activeTabMenuClass);\r\n\r\n\t\t$tabButton.addClass(activeTabMenuClass);\r\n\t};\r\n\r\n\r\n\r\n\r\n\tupdatePanelUI = function(tabID) {\r\n\t\trunningAnimation = true;\r\n\t\t$panelWrapper.addClass(transitionOutClass)\r\n\t\t\t\t\t.css('height', $panelWrapper.height() );\r\n\r\n\t\t//check if default tab was selected to show content already preloaded\r\n\t\tif( tabID === 'default') {\r\n\t\t\t\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\t$panelAjax.removeClass(activePanelClass);\r\n\r\n\t\t\t\t$panelDefault.addClass(activePanelClass);\r\n\r\n\t\t\t\t$panelWrapper\r\n\t\t\t\t\t.removeClass(transitionOutClass)\r\n\t\t\t\t\t.animate({height: $panelDefault.outerHeight()}, \r\n\t\t\t\t\t\t300, function(){\r\n\t\t\t\t\t\t\t$panelWrapper.css('height', '');\r\n\t\t\t\t\t\t});\r\n\t\t\t\tcurrentTabID = tabID;\r\n\t\t\t\trunningAnimation = false;\r\n\r\n\t\t\t}, 500); //timeout needs to be in sync with css timing\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//we can replace this ajax request\r\n\t\tsetTimeout(function() {\r\n\t\t\trequestData(tabID);\r\n\t\t}, 700);\r\n\r\n\t};\r\n\r\n\t$tabMenu.on('click', '.js-menu-option', function(ev) {\r\n\t\tev.preventDefault();\r\n\r\n\t\tvar _self = $(this),\r\n\t\t\tselectedID = _self.data('tab-id');\r\n\r\n\t\tif(selectedID === currentTabID || runningAnimation ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tupdateTabUI(_self);\r\n\t\tupdatePanelUI(selectedID);\r\n\t});\r\n\r\n\r\n\r\n\t//setup initial view\r\n\tcurrentTabID = \t$tabMenuButtons\r\n\t\t\t\t\t\t.filter('.is-selected')\r\n\t\t\t\t\t\t.data('tab-id');\r\n\r\n\r\n\t//throw away code, only usable for templates\r\n\t$appliedFilters.on('click', '.js-filter', function(ev) {\r\n\t\tev.preventDefault();\r\n\r\n\r\n\t\t$(this).remove();\r\n\r\n\t\tvar filterLength = $appliedFilters.find('.js-filter');\r\n\r\n\t\tif(!filterLength.length) {\r\n\t\t\t$appliedFilters.slideUp();\r\n\t\t\t$resultsCount.slideUp();\r\n\t\t}\r\n\r\n\t}).on('click', '.js-filter-clear', function(ev) {\r\n\t\tev.preventDefault();\r\n\r\n\t\t$appliedFilters.slideUp()\r\n\t\t\t\t\t\t.find('.js-filter').remove();\r\n\r\n\t\t$resultsCount.slideUp();\r\n\t});\r\n\r\n});\n},{\"./global-vars\":14}],32:[function(require,module,exports){\nconst countUp = require(\"countup.js\");\r\n\r\nfunction StatBlocks() {\r\n let containers;\r\n\r\n const init = () => {\r\n containers = Array.from(document.querySelectorAll(\".statblock\"));\r\n if (!containers.length) return;\r\n containers.forEach((container) => {\r\n const statBlock = StatBlock(container);\r\n statBlock.init();\r\n });\r\n };\r\n\r\n return { init };\r\n}\r\n\r\nfunction StatBlock(container) {\r\n let stats;\r\n let animations = [];\r\n\r\n const init = () => {\r\n stats = Array.from(container.querySelectorAll(\".statblock-stat\"));\r\n if (!stats.length) return;\r\n const statsObserver = new IntersectionObserver((entries) => {\r\n entries.forEach((entry) => {\r\n if (entry.isIntersecting) {\r\n const index = stats.indexOf(entry.target);\r\n if (index >= 0) startAnimation(index);\r\n }\r\n })\r\n }, { threshold: 0.3 })\r\n\r\n stats.forEach((stat) => {\r\n statsObserver.observe(stat);\r\n\r\n const text = stat.dataset.stat;\r\n const textArray = text.split(\"\");\r\n const textObj = {\r\n prefix: [],\r\n num: [],\r\n suffix: [],\r\n };\r\n textArray.forEach((char) => {\r\n const attemptNum = parseInt(char, 10);\r\n if (!textObj.num.length && Number.isNaN(attemptNum)) {\r\n textObj.prefix.push(char);\r\n } else if (!Number.isNaN(attemptNum)) {\r\n textObj.num.push(char);\r\n } else if (textObj.num.length && Number.isNaN(attemptNum)) {\r\n textObj.suffix.push(char);\r\n }\r\n });\r\n\r\n if (textObj.num.length) {\r\n const num = parseInt(textObj.num.join(\"\"), 10);\r\n const options = {};\r\n if (textObj.prefix.length) options.prefix = textObj.prefix.join(\"\");\r\n if (textObj.suffix.length) options.suffix = textObj.suffix.join(\"\");\r\n const countUpInstance = new countUp.CountUp(stat, num, options);\r\n if (!countUpInstance.error) {\r\n animations.push({ controller: countUpInstance, hasRun: false });\r\n }\r\n }\r\n });\r\n };\r\n\r\n const startAnimation = (index) => {\r\n const inViewStat = animations[index];\r\n if (!inViewStat || inViewStat.hasRun) return;\r\n inViewStat.hasRun = true;\r\n inViewStat.controller.start();\r\n }\r\n\r\n return { init };\r\n}\r\n\r\nconst statBlocks = StatBlocks();\r\nstatBlocks.init();\r\n\n},{\"countup.js\":1}],33:[function(require,module,exports){\n$(function(){\r\n\t'use strict';\r\n\r\n\tvar $stories,\r\n\t\t$listing,\r\n\t\tzoomTiles;\r\n\r\n\r\n\t$stories = $('.stories-area');\r\n\r\n\tif(!$stories.length){\r\n\t\treturn;\r\n\t}\r\n\r\n\t$listing = $stories.find('.stories-area-listing');\r\n\r\n\tzoomTiles = require('./zoom-feature').zoomFeature;\r\n\r\n\tzoomTiles($listing, 'story-tile-title, .story-tile-cta', 'story-tile');\r\n});\r\n\r\n\n},{\"./zoom-feature\":37}],34:[function(require,module,exports){\n$(function () {\r\n 'use strict';\r\n\r\n var $subscribeNow = $('.js-subscribe-now'),\r\n $subscribeNowTrigger = $('.js-subscribe-now-trigger'),\r\n magicController,\r\n magicSceneHeader,\r\n customClass = 'subscribe-now--reveal',\r\n\r\n //functions\r\n globalVars;\r\n\r\n\r\n\r\n //global variables initiliazation\r\n globalVars = require('./global-vars');\r\n\r\n\r\n magicController = globalVars.magicController;\r\n\r\n if ($subscribeNow[0]) {\r\n //Setup magic scene to scroll \r\n magicSceneHeader = new ScrollMagic.Scene({\r\n triggerHook: '0',\r\n triggerElement: $subscribeNowTrigger[0],\r\n })\r\n .setClassToggle($subscribeNow[0], customClass)\r\n .addTo(magicController);\r\n }\r\n});\n},{\"./global-vars\":14}],35:[function(require,module,exports){\n$(function(){\r\n\t'use strict';\r\n\r\n\tvar $tabMenu = $('.js-tab-menu'),\r\n\t\t$tabMenuButtons,\r\n\t\t$mobileTrigger,\r\n\r\n\t\t//classes\r\n\t\tactiveTabMenuClass,\r\n\t\tdropdownActiveClass,\r\n\t\tshowDropdownClass,\r\n\r\n\t\t//functions\r\n\t\tupdateTabUI,\r\n\t\tupdateDropdownLabel,\r\n\t\tdropdownSetup,\r\n\r\n\t\t\r\n\t\tglobalVars,\r\n\t\tmobileVar;\r\n\r\n\tif (!$tabMenu.length) {\r\n\t\treturn;\r\n\t}\r\n\r\n\r\n\t//global variables initiliazation\r\n\tglobalVars = require('./global-vars');\r\n\r\n\tmobileVar = globalVars.mobileSettings;\r\n\r\n\t//initialize jquery options\r\n\t$tabMenuButtons = $tabMenu.find('.js-menu-option');\r\n\r\n\tactiveTabMenuClass = 'is-selected';\r\n\tdropdownActiveClass = 'tab-menu--dropdown';\r\n\tshowDropdownClass = 'show-dropdown';\r\n\r\n\tupdateTabUI = function($tabButton) {\r\n\t\t$tabMenuButtons.removeClass(activeTabMenuClass);\r\n\r\n\t\t$tabButton.addClass(activeTabMenuClass);\r\n\t};\r\n\r\n\tupdateDropdownLabel = function($tabButton) {\r\n\r\n\t\t$mobileTrigger.text( $tabButton.text() );\r\n\t\t$tabMenu.removeClass(showDropdownClass);\r\n\t};\r\n\r\n\t//initialization \r\n\tif($tabMenuButtons.length > 2) {\r\n\r\n\t\t//append mobile button\r\n\t\t$mobileTrigger = $('');\r\n\r\n\t\t$mobileTrigger\r\n\t\t\t.prependTo($tabMenu)\r\n\t\t\t.text( $tabMenu.find('.is-selected').text() )\r\n\t\t\t.on('click.dropdown', function() {\r\n\t\t\t\t$tabMenu.toggleClass(showDropdownClass);\r\n\t\t\t});\r\n\r\n\t\t$tabMenu.addClass(dropdownActiveClass);\r\n\r\n\t}\r\n\r\n\t$tabMenu.on('click.tabMenu', '.js-menu-option', function(ev) {\r\n\t\tev.preventDefault();\r\n\r\n\t\tvar _self = $(this);\r\n\r\n\t\tupdateTabUI(_self);\r\n\r\n\t\tif($tabMenuButtons.length > 2) {\r\n\t\t\tupdateDropdownLabel(_self);\t\r\n\t\t}\r\n\t});\r\n\r\n});\n},{\"./global-vars\":14}],36:[function(require,module,exports){\nfunction TwoImageFlexPanels() {\r\n const init = () => {\r\n const containers = Array.from(\r\n document.querySelectorAll(\".dual-image-card\")\r\n );\r\n if (!containers.length) return;\r\n containers.forEach((container) => {\r\n const twoImage = TwoImageFlexPanel(container);\r\n twoImage.init();\r\n });\r\n };\r\n\r\n return { init };\r\n}\r\n\r\nfunction TwoImageFlexPanel(container) {\r\n let images;\r\n let containerHeight;\r\n let containerTop;\r\n\r\n let isMobile;\r\n\r\n const init = () => {\r\n images = Array.from(container.querySelectorAll(\".dual-image-card__img\"));\r\n const computedStyle = getComputedStyle(container);\r\n isMobile = computedStyle.getPropertyValue(\"--isMobile\") === \"true\";\r\n\r\n if (!isMobile) attachScrollListener();\r\n window.addEventListener(\"resize\", handleResize);\r\n };\r\n\r\n const handleScroll = () => {\r\n const y = window.scrollY;\r\n const dy = y - containerTop + window.innerHeight;\r\n const min = -window.innerHeight;\r\n const max = containerTop + containerHeight;\r\n if (dy < min || dy > max) return;\r\n\r\n const step = clamp(dy, min, max);\r\n const progress = step / (containerHeight + window.innerHeight);\r\n\r\n images.forEach((image, index) => {\r\n const cardHeight = image.offsetHeight;\r\n const diff = containerHeight - cardHeight;\r\n let dy = diff * progress * 0.5;\r\n if (index === 1) dy *= -1;\r\n const newY = index === 1 ? clamp(dy, diff * -1, 0) : clamp(dy, 0, diff)\r\n image.style.transform = `translate3d(0px, ${newY}px, 0px)`;\r\n });\r\n };\r\n\r\n const handleResize = () => {\r\n window.removeEventListener(\"scroll\", handleScroll);\r\n const computedStyle = getComputedStyle(container);\r\n isMobile = computedStyle.getPropertyValue(\"--isMobile\") === \"true\";\r\n if (isMobile) {\r\n images.forEach((image) => {\r\n image.style.transform = `translate3d(0px, 0px, 0px)`;\r\n });\r\n return;\r\n }\r\n attachScrollListener();\r\n };\r\n\r\n const attachScrollListener = () => {\r\n const { top, height } = container.getBoundingClientRect();\r\n containerHeight = height;\r\n containerTop = top + window.scrollY;\r\n window.addEventListener(\"scroll\", handleScroll);\r\n };\r\n\r\n return { init };\r\n}\r\n\r\nconst clamp = (val, min, max) => {\r\n return val < min ? min : val > max ? max : val;\r\n};\r\n\r\nconst twoImages = TwoImageFlexPanels();\r\ntwoImages.init();\r\n\n},{}],37:[function(require,module,exports){\n'use strict';\r\n\r\n\r\nvar zoomFeature,\r\n attachEvents,\r\n handleFeatureHover,\r\n mouseEnterLogic,\r\n mouseLeaveLogic,\r\n tileHoverClass = 'is-zoomed',\r\n delay = 45,\r\n timeoutID;\r\n \r\n \r\nhandleFeatureHover = function($link, targetParentClass) {\r\n $link\r\n .closest('.' + targetParentClass)\r\n .addClass(tileHoverClass);\r\n};\r\n\r\nmouseEnterLogic = function (targetParentClass, customCallback) {\r\n var _self = this;\r\n\r\n if (timeoutID) {\r\n clearTimeout(timeoutID);\r\n }\r\n\r\n (!!customCallback) ? customCallback('zoomIn') : handleFeatureHover( $(_self), targetParentClass );\r\n \r\n timeoutID = setTimeout(function() {\r\n (!!customCallback) ? customCallback('zoomIn') : handleFeatureHover( $(_self), targetParentClass);\r\n }, delay);\r\n};\r\n\r\nmouseLeaveLogic = function (targetParentClass, customCallback) {\r\n if (timeoutID) {\r\n clearTimeout(timeoutID);\r\n }\r\n\r\n if(!!customCallback) {\r\n customCallback('zoomOut')\r\n } else {\r\n $(this)\r\n .closest('.' + targetParentClass)\r\n .removeClass(tileHoverClass);\r\n }\r\n \r\n}\r\n\r\n//TODO need to replace arguments with options object instead\r\nzoomFeature = function ($wrapper, targetChildClass, targetParentClass, customCallback) {\r\n\r\n\r\n //we are only applying hover state to one element\r\n if( $wrapper.hasClass(targetParentClass) ) {\r\n\r\n $wrapper.on('mouseenter.hovertile', '.' + targetChildClass, function(ev) {\r\n mouseEnterLogic.call(this, targetParentClass, customCallback);\r\n }).on('mouseleave.hovertile', '.' + targetChildClass, function(ev) {\r\n mouseLeaveLogic.call(this, targetParentClass, customCallback);\r\n });\r\n \r\n } else {\r\n $wrapper.on('mouseenter.hovertile', '.' + targetChildClass, function(ev) {\r\n mouseEnterLogic.call(this, targetParentClass);\r\n }).on('mouseleave.hovertile', '.' + targetChildClass, function(ev) {\r\n mouseLeaveLogic.call(this, targetParentClass);\r\n });\r\n }\r\n};\r\n\r\n\r\nmodule.exports = {\r\n zoomFeature: zoomFeature\r\n}\n},{}],38:[function(require,module,exports){\n'use strict';\r\n\r\n$(document).ready(function(){\r\n require('./features/main');\r\n require('./features/global-vars');\r\n require('./features/select-dropdown');\r\n require('./features/accordions');\r\n require('./features/zoom-feature');\r\n require('./features/experience-tiles');\r\n require('./features/insight-tiles');\r\n require('./features/section-navigation');\r\n require('./features/jump-navigation'); \r\n require('./features/expand-collapse');\r\n require('./features/site-head');\r\n require('./features/filter-toggles');\r\n require('./features/insights-landing'); \r\n require('./features/people-search');\r\n require('./features/searchbox');\r\n require('./features/tab-menu');\r\n require('./features/site-search');\r\n require('./features/jump-menu');\r\n require('./features/attorney-area'); \r\n require('./features/stories-area');\r\n require('./features/practice-grouping');\r\n require('./features/email-disclaimer');\r\n require('./features/large-story-animate');\r\n require('./features/featured-article-component');\r\n require('./features/bio-sticky-header');\r\n require('./features/subscribe-now');\r\n require('./features/featured-practices');\r\n require('./features/flip-cards');\r\n require('./features/statblock');\r\n require('./features/two-image-flex-panel');\r\n require('./features/fade-in');\r\n require('./features/quote-carousel');\r\n require('./features/careers-accordion');\r\n require('./features/jobs-jump-links');\r\n require('./features/practices-landing');\r\n require('./features/home');\r\n});\n},{\"./features/accordions\":2,\"./features/attorney-area\":3,\"./features/bio-sticky-header\":4,\"./features/careers-accordion\":5,\"./features/email-disclaimer\":6,\"./features/expand-collapse\":7,\"./features/experience-tiles\":8,\"./features/fade-in\":9,\"./features/featured-article-component\":10,\"./features/featured-practices\":11,\"./features/filter-toggles\":12,\"./features/flip-cards\":13,\"./features/global-vars\":14,\"./features/home\":15,\"./features/insight-tiles\":16,\"./features/insights-landing\":17,\"./features/jobs-jump-links\":18,\"./features/jump-menu\":19,\"./features/jump-navigation\":20,\"./features/large-story-animate\":21,\"./features/main\":22,\"./features/people-search\":23,\"./features/practice-grouping\":24,\"./features/practices-landing\":25,\"./features/quote-carousel\":26,\"./features/searchbox\":27,\"./features/section-navigation\":28,\"./features/select-dropdown\":29,\"./features/site-head\":30,\"./features/site-search\":31,\"./features/statblock\":32,\"./features/stories-area\":33,\"./features/subscribe-now\":34,\"./features/tab-menu\":35,\"./features/two-image-flex-panel\":36,\"./features/zoom-feature\":37}]},{},[38]);\n"]}