{"version":3,"sources":["../../build/js/CardRefresh.js","../../build/js/CardWidget.js","../../build/js/ControlSidebar.js","../../build/js/DirectChat.js","../../build/js/Dropdown.js","../../build/js/ExpandableTable.js","../../build/js/Fullscreen.js","../../build/js/IFrame.js","../../build/js/Layout.js","../../build/js/PushMenu.js","../../build/js/SidebarSearch.js","../../build/js/NavbarSearch.js","../../build/js/Toasts.js","../../build/js/TodoList.js","../../build/js/Treeview.js","../../build/js/ScrollingTabs.js","../../build/js/AlsoResizeReverse.js"],"names":["NAME","DATA_KEY","EVENT_KEY","JQUERY_NO_CONFLICT","$","fn","EVENT_LOADED","EVENT_OVERLAY_ADDED","EVENT_OVERLAY_REMOVED","CLASS_NAME_CARD","SELECTOR_DATA_REFRESH","Default","source","sourceSelector","params","trigger","content","loadInContent","loadOnInit","responseType","overlayTemplate","onLoadStart","onLoadDone","response","CardRefresh","constructor","element","settings","this","_element","_parent","parents","first","_settings","extend","_overlay","hasClass","Error","load","_addOverlay","call","get","find","html","_removeOverlay","Event","append","remove","_init","on","[object Object]","config","data","_options","match","document","event","preventDefault","_jQueryInterface","each","Constructor","noConflict","EVENT_EXPANDED","EVENT_COLLAPSED","EVENT_MAXIMIZED","EVENT_MINIMIZED","EVENT_REMOVED","CLASS_NAME_COLLAPSED","CLASS_NAME_COLLAPSING","CLASS_NAME_EXPANDING","CLASS_NAME_WAS_COLLAPSED","CLASS_NAME_MAXIMIZED","SELECTOR_DATA_REMOVE","SELECTOR_DATA_COLLAPSE","SELECTOR_DATA_MAXIMIZE","animationSpeed","collapseTrigger","removeTrigger","maximizeTrigger","collapseIcon","expandIcon","maximizeIcon","minimizeIcon","CardWidget","collapse","addClass","children","slideUp","removeClass","expand","slideDown","toggle","maximize","css","height","width","transition","delay","queue","$element","dequeue","minimize","style","toggleMaximize","card","click","SELECTOR_CONTROL_SIDEBAR","SELECTOR_DATA_TOGGLE","SELECTOR_HEADER","SELECTOR_FOOTER","CLASS_NAME_CONTROL_SIDEBAR_ANIMATE","CLASS_NAME_CONTROL_SIDEBAR_OPEN","CLASS_NAME_CONTROL_SIDEBAR_SLIDE","CLASS_NAME_LAYOUT_FIXED","controlsidebarSlide","scrollbarTheme","scrollbarAutoHide","target","ControlSidebar","_config","$body","$html","that","hide","show","_fixHeight","_fixScrollHeight","not","window","resize","scroll","_isNavbarFixed","_isFooterFixed","$controlSidebar","attr","heights","header","outerHeight","footer","positions","Math","abs","scrollTop","navbarFixed","footerFixed","$controlsidebarContent","bottom","top","sidebarHeight","overlayScrollbars","className","sizeAutoCapable","scrollbars","autoHide","clickScrolling","operation","ready","EVENT_TOGGLED","DirectChat","toggleClass","SELECTOR_DROPDOWN_MENU","Dropdown","toggleSubmenu","siblings","next","fixPosition","length","left","right","offset","visiblePart","stopPropagation","parent","setTimeout","SELECTOR_ARIA_ATTR","ExpandableTable","options","init","_","$header","$type","toggleRow","stop","SELECTOR_DATA_WIDGET","SELECTOR_ICON","Fullscreen","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","msFullscreenElement","windowed","fullscreen","documentElement","requestFullscreen","webkitRequestFullscreen","msRequestFullscreen","exitFullscreen","webkitExitFullscreen","msExitFullscreen","plugin","SELECTOR_DATA_TOGGLE_FULLSCREEN","SELECTOR_CONTENT_WRAPPER","SELECTOR_CONTENT_IFRAME","SELECTOR_TAB_NAVBAR_NAV","SELECTOR_TAB_NAVBAR_NAV_ITEM","SELECTOR_TAB_CONTENT","SELECTOR_TAB_EMPTY","SELECTOR_TAB_LOADING","SELECTOR_SIDEBAR_MENU_ITEM","SELECTOR_HEADER_MENU_ITEM","CLASS_NAME_IFRAME_MODE","CLASS_NAME_FULLSCREEN_MODE","onTabClick","item","onTabChanged","onTabCreated","autoIframeMode","autoItemActive","autoShowNewTab","loadingScreen","useNavbarItems","scrollOffset","scrollBehaviorSwap","iconMaximize","iconMinimize","IFrame","createTab","title","link","uniqueName","autoOpen","tabId","floor","random","navId","newNavItem","escape","newTabItem","$loadingScreen","fadeIn","switchTab","fadeOut","openTabSidebar","$item","clone","undefined","text","replace","replaceAll","tab","_setItemActive","removeActiveTab","$navItem","$navItemParent","navItemIndex","index","prevNavItemIndex","eq","toggleFullscreen","frameElement","_setupListeners","_navScroll","leftPos","scrollLeft","animate","e","mousedown","mousedownInterval","clearInterval","setInterval","href","$headerMenuItem","$headerDropdownItem","$sidebarMenuItem","i","prevAll","tabEmpty","windowHeight","contentWrapperHeight","parseFloat","navbarHeight","args","SELECTOR_MAIN_SIDEBAR","SELECTOR_SIDEBAR","CLASS_NAME_SIDEBAR_FOCUSED","panelAutoHeight","panelAutoHeightMode","loginRegisterAutoHeight","Layout","fixLayoutHeight","extra","controlSidebar","sidebar","max","_max","$contentSelector","fixLoginRegisterHeight","$selector","boxHeight","parseInt","numbers","Object","keys","forEach","key","SELECTOR_TOGGLE_BUTTON","SELECTOR_BODY","CLASS_NAME_OPEN","CLASS_NAME_IS_OPENING","CLASS_NAME_CLOSED","autoCollapseSize","enableRemember","noTransitionAfterReload","PushMenu","$bodySelector","localStorage","setItem","autoCollapse","remember","getItem","overlay","id","button","currentTarget","closest","CLASS_NAME_ICON_SEARCH","CLASS_NAME_ICON_CLOSE","CLASS_NAME_SEARCH_RESULTS","CLASS_NAME_LIST_GROUP","SELECTOR_SEARCH_INPUT","SELECTOR_SEARCH_BUTTON","SELECTOR_SEARCH_ICON","SELECTOR_SEARCH_RESULTS","SELECTOR_SEARCH_RESULTS_GROUP","arrowSign","minLength","maxResults","highlightName","highlightPath","highlightClass","notFoundText","SearchItems","SidebarSearch","items","after","class","_addNotFound","child","_parseItem","search","searchValue","val","toLowerCase","empty","close","searchResults","filter","name","includes","endResults","slice","result","_renderItem","path","open","itemObject","navLink","navTreeview","end","_trimText","push","newPath","concat","trim","join","unescape","regExp","RegExp","str","groupItemElement","searchTitleElement","searchPathElement","keyCode","last","focus","$focused","is","prev","SELECTOR_SEARCH_BLOCK","resetOnClose","NavbarSearch","test","POSITION_TOP_RIGHT","POSITION_TOP_LEFT","POSITION_BOTTOM_RIGHT","POSITION_BOTTOM_LEFT","position","fixed","autohide","autoremove","fade","icon","image","imageAlt","imageHeight","subtitle","body","Toasts","_prepareContainer","create","toast","toastHeader","toastImage","toastClose","_getContainerId","prepend","container","option","CLASS_NAME_TODO_LIST_DONE","onCheck","onUnCheck","TodoList","prop","check","unCheck","$toggleSelector","SELECTOR_LI","SELECTOR_TREEVIEW_MENU","SELECTOR_OPEN","accordion","expandSidebar","sidebarButtonSelector","Treeview","treeviewMenu","parentLi","expandedEvent","openMenuLi","openTreeview","_expandSidebar","collapsedEvent","$relativeTarget","$parent","elementId","sr","p","CONSTANTS","CONTINUOUS_SCROLLING_TIMEOUT_INTERVAL","SCROLL_OFFSET_FRACTION","DATA_KEY_DDMENU_MODIFIED","DATA_KEY_IS_MOUSEDOWN","DATA_KEY_BOOTSTRAP_TAB","CSS_CLASSES","BOOTSTRAP4","RTL","SCROLL_ARROW_CLICK_TARGET","SCROLL_ARROW_DISABLE","SCROLL_ARROW_WITH_CLICK_TARGET","SLIDE_DIRECTION","LEFT","RIGHT","EVENTS","CLICK","DROPDOWN_MENU_HIDE","DROPDOWN_MENU_SHOW","FORCE_REFRESH","MOUSEDOWN","MOUSEUP","TABS_READY","TOUCH_END","TOUCH_MOVE","TOUCH_START","WINDOW_RESIZE","ElementsHandler","scrollingTabsControl","stc","EventHandlers","ScrollMovement","ScrollingTabsControl","$tabsContainer","instanceId","scrollingTabs","nextInstanceId","movableContainerLeftPos","scrollArrowsVisible","scrollToTabEdge","disableScrollArrowsOnFullyScrolled","reverseScroll","widthMultiplier","scrollMovement","eventHandlers","elementsHandler","customEventName","func","threshold","execAsap","timeout","eventName","bind","obj","arguments","delayed","apply","clearTimeout","prototype","initElements","setElementReferences","setEventListeners","listenForTouchEvents","touchStartX","startingContainerLeftPos","newLeftPos","smv","ev","touching","$movableContainer","originalEvent","changedTouches","pageX","minPos","diff","rtl","getMinPos","leftOrRight","getMovableContainerCssLeftVal","refreshScrollArrowsDisabledState","refreshAllElementSizes","ehd","scrollArrowsWereVisible","actionsTaken","didScrollToActiveTab","setElementWidths","setScrollArrowVisibility","scrollToActiveTab","isOnWindowResize","movableContainerRightPos","incrementMovableContainerLeft","incrementMovableContainerRight","slideMovableContainerToLeftPos","$leftArrow","$rightArrow","$leftArrowClickTarget","$rightArrowClickTarget","isNavPills","usingBootstrap4","$fixedContainer","leftArrowContent","rightArrowContent","$tabsUl","$tabsLiCollection","$slideLeftArrow","$slideLeftArrowClickTarget","$slideRightArrow","$slideRightArrowClickTarget","$scrollArrows","add","$win","winWidth","scrollArrowsCombinedWidth","outerWidth","setFixedContainerWidth","setMovableContainerWidth","evh","resizeEventName","enableSwiping","off","handleMousedownOnSlideMovContainerLeftArrow","handleMouseupOnSlideMovContainerLeftArrow","handleClickOnSlideMovContainerLeftArrow","handleMousedownOnSlideMovContainerRightArrow","handleMouseupOnSlideMovContainerRightArrow","handleClickOnSlideMovContainerRightArrow","tabClickHandler","handleDelayedScrollbar","listenForDelayedScrollbar","smartresizeScrtabs","handleWindowResize","iframe","createElement","cssText","onload","handleResize","contentWindow","addEventListener","appendChild","tabsContainerRect","getBoundingClientRect","fixedContainerWidth","setFixedContainerWidthForHiddenScrollArrows","setFixedContainerWidthForVisibleScrollArrows","$tabLi","movableContainerWidth","$li","totalMargin","shouldBeVisible","continueSlideMovableContainerLeft","continueSlideMovableContainerRight","newWinWidth","decrementMovableContainerLeftPos","setMovableContainerLeftPosToTabEdge","disableSlideLeftArrow","disableSlideRightArrow","enableSlideLeftArrow","enableSlideRightArrow","$activeTab","$activeTabAnchor","activeTabLeftPos","activeTabRightPos","rightArrowLeftPos","activeTabWidth","leftPosOffset","offsetToMiddle","rightScrollArrowWidth","slideDirection","offscreenWidth","totalTabWidth","tabWidth","leftOrRightVal","performingSlideAnim","targetPos","newMinPos","initTabs","$scroller","readyCallback","attachTabContentToDomCallback","num","enableRtlSupport","Number","isNaN","bootstrapVersion","toString","charAt","tabElements","getElTabPaneForLi","getNewElNavTabs","getNewElScrollerElementWrappingNavTabsInstance","$navTabsInstance","cssClassLeftArrow","cssClassRightArrow","getNewElTabAnchor","getNewElTabContent","getNewElTabLi","propNames","liContent","tabLiContent","$a","appendTo","disabled","forceActiveTab","active","tabPostProcessor","getNewElTabPane","$pane","paneId","tabUtils","didTabOrderChange","$currTabLis","updatedTabs","isTabOrderChanged","currDomIdx","newIdx","getTabIndexByPaneId","getIndexOfClosestEnabledTab","startIndex","lastIndex","closestIdx","incrementFromStartIndex","testIdx","storeDataOnLiEl","tabs","paneIdPropName","idx","some","wrapNavTabsInstanceInScroller","removeData","navTabsInstanceData","scroller","replaceWith","hasTabClickHandler","$ddMenu","handleDropdownHide","handleDropdownShow","ddMenuRightX","tabsContainerMaxX","ddMenuTargetLeft","$ddParentTabLi","ddLiOffset","$currActiveTab","handleClickOnDropdownMenuItem","$selectedMenuItemAnc","$selectedMenuItemLi","$selectedMenuItemDropdownMenu","targetPaneId","display","listenForDropdownMenuTabs","checkForTabsRemovedOrUpdated","refreshData","updatedTabsArray","isInitTabsRequired","origTabData","newTabData","tabLi","$contentPane","idxToMakeActive","tabLiData","ignoreTabPanes","$currTabContentPanes","checkForTabRemoved","checkForTabPropertiesUpdated","refreshDataDrivenTabs","$container","instanceData","scrtabs","$navTabs","$currTabContentPanesContainer","updatedTabsLiContent","tabsLiContent","updatedTabsPostProcessors","tabsPostProcessors","isTabIdxPastCurrTabs","insertBefore","checkForTabAdded","newTabsCollection","newTabPanesCollection","t","checkForTabsOrderChanged","scrtabsData","methods","destroy","destroyPlugin","$targetEls","targetElsLastIndex","defaults","$targetElInstance","propPaneId","propTitle","propActive","propDisabled","propContent","hasTabContent","$tabContent","buildNavTabsAndTabContentForTargetElementInstance","isWrapperOnly","refresh","refreshTargetElementInstance","enableSwipingElement","ALLOW_SCROLLBAR","removeAttr","methodOrOptions","Array","error","jQuery","ui","start","o","resizable","alsoResizeReverse","el","os","originalSize","op","originalPosition","delta","size","originalElement","sum"],"mappings":";;;;;uWAcA,MAAMA,EAAO,cACPC,EAAW,kBACXC,EAAa,IAAGD,IAChBE,EAAqBC,EAAAA,QAAEC,GAAGL,GAE1BM,EAAgB,SAAQJ,IACxBK,EAAuB,gBAAeL,IACtCM,EAAyB,kBAAiBN,IAE1CO,EAAkB,OAGlBC,EAAwB,oCAExBC,EAAU,CACdC,OAAQ,GACRC,eAAgB,GAChBC,OAAQ,GACRC,QAASL,EACTM,QAAS,aACTC,eAAe,EACfC,YAAY,EACZC,aAAc,GACdC,gBAAiB,2EACjBC,gBAEAC,WAAWC,GACFA,GAIX,MAAMC,EACJC,YAAYC,EAASC,GAUnB,GATAC,KAAKC,SAAWH,EAChBE,KAAKE,QAAUJ,EAAQK,QAvBJ,SAuB2BC,QAC9CJ,KAAKK,UAAY7B,EAAAA,QAAE8B,OAAO,GAAIvB,EAASgB,GACvCC,KAAKO,SAAW/B,EAAAA,QAAEwB,KAAKK,UAAUb,iBAE7BM,EAAQU,SAAS3B,KACnBmB,KAAKE,QAAUJ,GAGa,KAA1BE,KAAKK,UAAUrB,OACjB,MAAM,IAAIyB,MAAM,uFAIpBC,OACEV,KAAKW,cACLX,KAAKK,UAAUZ,YAAYmB,KAAKpC,EAAAA,QAAEwB,OAElCxB,EAAAA,QAAEqC,IAAIb,KAAKK,UAAUrB,OAAQgB,KAAKK,UAAUnB,QAAQS,IAC9CK,KAAKK,UAAUhB,gBACqB,KAAlCW,KAAKK,UAAUpB,iBACjBU,EAAWnB,EAAAA,QAAEmB,GAAUmB,KAAKd,KAAKK,UAAUpB,gBAAgB8B,QAG7Df,KAAKE,QAAQY,KAAKd,KAAKK,UAAUjB,SAAS2B,KAAKpB,IAGjDK,KAAKK,UAAUX,WAAWkB,KAAKpC,EAAAA,QAAEwB,MAAOL,GACxCK,KAAKgB,mBAC4B,KAAhChB,KAAKK,UAAUd,cAAuBS,KAAKK,UAAUd,cAExDf,EAAAA,QAAEwB,KAAKC,UAAUd,QAAQX,EAAAA,QAAEyC,MAAMvC,IAGnCiC,cACEX,KAAKE,QAAQgB,OAAOlB,KAAKO,UACzB/B,EAAAA,QAAEwB,KAAKC,UAAUd,QAAQX,EAAAA,QAAEyC,MAAMtC,IAGnCqC,iBACEhB,KAAKE,QAAQY,KAAKd,KAAKO,UAAUY,SACjC3C,EAAAA,QAAEwB,KAAKC,UAAUd,QAAQX,EAAAA,QAAEyC,MAAMrC,IAKnCwC,QACE5C,EAAAA,QAAEwB,MAAMc,KAAKd,KAAKK,UAAUlB,SAASkC,GAAG,SAAS,KAC/CrB,KAAKU,UAGHV,KAAKK,UAAUf,YACjBU,KAAKU,OAMTY,wBAAwBC,GACtB,IAAIC,EAAOhD,EAAAA,QAAEwB,MAAMwB,KAAKnD,GACxB,MAAMoD,EAAWjD,EAAAA,QAAE8B,OAAO,GAAIvB,EAASP,EAAAA,QAAEwB,MAAMwB,QAE1CA,IACHA,EAAO,IAAI5B,EAAYpB,EAAAA,QAAEwB,MAAOyB,GAChCjD,EAAAA,QAAEwB,MAAMwB,KAAKnD,EAA4B,iBAAXkD,EAAsBC,EAAOD,IAGvC,iBAAXA,GAAuBA,EAAOG,MAAM,QAC7CF,EAAKD,KAELC,EAAKJ,MAAM5C,EAAAA,QAAEwB,QAUnBxB,EAAAA,QAAEmD,UAAUN,GAAG,QAASvC,GAAuB,SAAU8C,GACnDA,GACFA,EAAMC,iBAGRjC,EAAYkC,iBAAiBlB,KAAKpC,EAAAA,QAAEwB,MAAO,WAG7CxB,EAAAA,SAAE,KACAA,EAAAA,QAAEM,GAAuBiD,MAAK,WAC5BnC,EAAYkC,iBAAiBlB,KAAKpC,EAAAA,QAAEwB,aASxCxB,EAAAA,QAAEC,GAAGL,GAAQwB,EAAYkC,iBACzBtD,EAAAA,QAAEC,GAAGL,GAAM4D,YAAcpC,EACzBpB,EAAAA,QAAEC,GAAGL,GAAM6D,WAAa,WAEtB,OADAzD,EAAAA,QAAEC,GAAGL,GAAQG,EACNqB,EAAYkC,kBCxIrB,MAAM1D,EAAO,aACPC,EAAW,iBACXC,EAAa,IAAGD,IAChBE,EAAqBC,EAAAA,QAAEC,GAAGL,GAE1B8D,EAAkB,WAAU5D,IAC5B6D,EAAmB,YAAW7D,IAC9B8D,EAAmB,YAAW9D,IAC9B+D,EAAmB,YAAW/D,IAC9BgE,EAAiB,UAAShE,IAE1BO,EAAkB,OAClB0D,EAAuB,iBACvBC,EAAwB,kBACxBC,EAAuB,iBACvBC,EAA2B,gBAC3BC,EAAuB,iBAEvBC,EAAuB,8BACvBC,EAAyB,gCACzBC,EAAyB,gCAMzB/D,EAAU,CACdgE,eAAgB,SAChBC,gBAAiBH,EACjBI,cAAeL,EACfM,gBAAiBJ,EACjBK,aAAc,WACdC,WAAY,UACZC,aAAc,YACdC,aAAc,eAGhB,MAAMC,EACJ1D,YAAYC,EAASC,GACnBC,KAAKC,SAAWH,EAChBE,KAAKE,QAAUJ,EAAQK,QAnBJ,SAmB2BC,QAE1CN,EAAQU,SAAS3B,KACnBmB,KAAKE,QAAUJ,GAGjBE,KAAKK,UAAY7B,EAAAA,QAAE8B,OAAO,GAAIvB,EAASgB,GAGzCyD,WACExD,KAAKE,QAAQuD,SAASjB,GAAuBkB,SAAU,4BACpDC,QAAQ3D,KAAKK,UAAU0C,gBAAgB,KACtC/C,KAAKE,QAAQuD,SAASlB,GAAsBqB,YAAYpB,MAG5DxC,KAAKE,QAAQY,KAAM,kBAA4Bd,KAAKK,UAAU2C,oBAAoBhD,KAAKK,UAAU8C,gBAC9FM,SAASzD,KAAKK,UAAU+C,YACxBQ,YAAY5D,KAAKK,UAAU8C,cAE9BnD,KAAKC,SAASd,QAAQX,EAAAA,QAAEyC,MAAMkB,GAAkBnC,KAAKE,SAGvD2D,SACE7D,KAAKE,QAAQuD,SAAShB,GAAsBiB,SAAU,4BACnDI,UAAU9D,KAAKK,UAAU0C,gBAAgB,KACxC/C,KAAKE,QAAQ0D,YAAYrB,GAAsBqB,YAAYnB,MAG/DzC,KAAKE,QAAQY,KAAM,kBAA4Bd,KAAKK,UAAU2C,oBAAoBhD,KAAKK,UAAU+C,cAC9FK,SAASzD,KAAKK,UAAU8C,cACxBS,YAAY5D,KAAKK,UAAU+C,YAE9BpD,KAAKC,SAASd,QAAQX,EAAAA,QAAEyC,MAAMiB,GAAiBlC,KAAKE,SAGtDiB,SACEnB,KAAKE,QAAQyD,UACb3D,KAAKC,SAASd,QAAQX,EAAAA,QAAEyC,MAAMqB,GAAgBtC,KAAKE,SAGrD6D,SACM/D,KAAKE,QAAQM,SAAS+B,GACxBvC,KAAK6D,SAIP7D,KAAKwD,WAGPQ,WACEhE,KAAKE,QAAQY,KAAM,GAAEd,KAAKK,UAAU6C,oBAAoBlD,KAAKK,UAAUgD,gBACpEI,SAASzD,KAAKK,UAAUiD,cACxBM,YAAY5D,KAAKK,UAAUgD,cAC9BrD,KAAKE,QAAQ+D,IAAI,CACfC,OAAQlE,KAAKE,QAAQgE,SACrBC,MAAOnE,KAAKE,QAAQiE,QACpBC,WAAY,aACXC,MAAM,KAAKC,OAAM,WAClB,MAAMC,EAAW/F,EAAAA,QAAEwB,MAEnBuE,EAASd,SAASd,GAClBnE,EAAAA,QAAE,QAAQiF,SAASd,GACf4B,EAAS/D,SAAS+B,IACpBgC,EAASd,SAASf,GAGpB6B,EAASC,aAGXxE,KAAKC,SAASd,QAAQX,EAAAA,QAAEyC,MAAMmB,GAAkBpC,KAAKE,SAGvDuE,WACEzE,KAAKE,QAAQY,KAAM,GAAEd,KAAKK,UAAU6C,oBAAoBlD,KAAKK,UAAUiD,gBACpEG,SAASzD,KAAKK,UAAUgD,cACxBO,YAAY5D,KAAKK,UAAUiD,cAC9BtD,KAAKE,QAAQ+D,IAAI,UAAY,WAAUjE,KAAKE,QAAQ,GAAGwE,MAAMR,6BAA6BlE,KAAKE,QAAQ,GAAGwE,MAAMP,2CAC9GE,MAAM,IAAIC,OAAM,WAChB,MAAMC,EAAW/F,EAAAA,QAAEwB,MAEnBuE,EAASX,YAAYjB,GACrBnE,EAAAA,QAAE,QAAQoF,YAAYjB,GACtB4B,EAASN,IAAI,CACXC,OAAQ,UACRC,MAAO,YAELI,EAAS/D,SAASkC,IACpB6B,EAASX,YAAYlB,GAGvB6B,EAASC,aAGXxE,KAAKC,SAASd,QAAQX,EAAAA,QAAEyC,MAAMoB,GAAkBrC,KAAKE,SAGvDyE,iBACM3E,KAAKE,QAAQM,SAASmC,GACxB3C,KAAKyE,WAIPzE,KAAKgE,WAKP5C,MAAMwD,GACJ5E,KAAKE,QAAU0E,EAEfpG,EAAAA,QAAEwB,MAAMc,KAAKd,KAAKK,UAAU2C,iBAAiB6B,OAAM,KACjD7E,KAAK+D,YAGPvF,EAAAA,QAAEwB,MAAMc,KAAKd,KAAKK,UAAU6C,iBAAiB2B,OAAM,KACjD7E,KAAK2E,oBAGPnG,EAAAA,QAAEwB,MAAMc,KAAKd,KAAKK,UAAU4C,eAAe4B,OAAM,KAC/C7E,KAAKmB,YAMTG,wBAAwBC,GACtB,IAAIC,EAAOhD,EAAAA,QAAEwB,MAAMwB,KAAKnD,GACxB,MAAMoD,EAAWjD,EAAAA,QAAE8B,OAAO,GAAIvB,EAASP,EAAAA,QAAEwB,MAAMwB,QAE1CA,IACHA,EAAO,IAAI+B,EAAW/E,EAAAA,QAAEwB,MAAOyB,GAC/BjD,EAAAA,QAAEwB,MAAMwB,KAAKnD,EAA4B,iBAAXkD,EAAsBC,EAAOD,IAGvC,iBAAXA,GAAuBA,EAAOG,MAAM,kEAC7CF,EAAKD,KACsB,iBAAXA,GAChBC,EAAKJ,MAAM5C,EAAAA,QAAEwB,QAUnBxB,EAAAA,QAAEmD,UAAUN,GAAG,QAASwB,GAAwB,SAAUjB,GACpDA,GACFA,EAAMC,iBAGR0B,EAAWzB,iBAAiBlB,KAAKpC,EAAAA,QAAEwB,MAAO,aAG5CxB,EAAAA,QAAEmD,UAAUN,GAAG,QAASuB,GAAsB,SAAUhB,GAClDA,GACFA,EAAMC,iBAGR0B,EAAWzB,iBAAiBlB,KAAKpC,EAAAA,QAAEwB,MAAO,aAG5CxB,EAAAA,QAAEmD,UAAUN,GAAG,QAASyB,GAAwB,SAAUlB,GACpDA,GACFA,EAAMC,iBAGR0B,EAAWzB,iBAAiBlB,KAAKpC,EAAAA,QAAEwB,MAAO,qBAQ5CxB,EAAAA,QAAEC,GAAGL,GAAQmF,EAAWzB,iBACxBtD,EAAAA,QAAEC,GAAGL,GAAM4D,YAAcuB,EACzB/E,EAAAA,QAAEC,GAAGL,GAAM6D,WAAa,WAEtB,OADAzD,EAAAA,QAAEC,GAAGL,GAAQG,EACNgF,EAAWzB,kBC5NpB,MAAM1D,EAAO,iBACPC,EAAW,qBACXC,EAAa,IAAGD,IAChBE,EAAqBC,EAAAA,QAAEC,GAAGL,GAE1B+D,EAAmB,YAAW7D,IAC9B4D,EAAkB,WAAU5D,IAE5BwG,EAA2B,mBAE3BC,EAAuB,kCACvBC,EAAkB,eAClBC,EAAkB,eAElBC,EAAqC,0BACrCC,EAAkC,uBAClCC,EAAmC,6BACnCC,EAA0B,eAY1BtG,EAAU,CACduG,qBAAqB,EACrBC,eAAgB,iBAChBC,kBAAmB,IACnBC,OAAQX,GAQV,MAAMY,EACJ7F,YAAYC,EAASyB,GACnBvB,KAAKC,SAAWH,EAChBE,KAAK2F,QAAUpE,EAKjBiC,WACE,MAAMoC,EAAQpH,EAAAA,QAAE,QACVqH,EAAQrH,EAAAA,QAAE,QACVsH,EAAO9F,KAGTA,KAAK2F,QAAQL,qBACfO,EAAMpC,SAASyB,GACfU,EAAMhC,YAAYwB,GAAkCf,MAAM,KAAKC,OAAM,WACnE9F,EAAAA,QAAEsH,EAAKH,QAAQF,QAAQM,OACvBF,EAAMjC,YAAYsB,GAClB1G,EAAAA,QAAEwB,MAAMwE,cAGVoB,EAAMhC,YAAYuB,GAGpB3G,EAAAA,QAAEwB,KAAKC,UAAUd,QAAQX,EAAAA,QAAEyC,MAAMkB,IAGnC6D,OACE,MAAMJ,EAAQpH,EAAAA,QAAE,QACVqH,EAAQrH,EAAAA,QAAE,QAGZwB,KAAK2F,QAAQL,qBACfO,EAAMpC,SAASyB,GACf1G,EAAAA,QAAEwB,KAAK2F,QAAQF,QAAQO,OAAO3B,MAAM,IAAIC,OAAM,WAC5CsB,EAAMnC,SAAS2B,GAAkCf,MAAM,KAAKC,OAAM,WAChEuB,EAAMjC,YAAYsB,GAClB1G,EAAAA,QAAEwB,MAAMwE,aAEVhG,EAAAA,QAAEwB,MAAMwE,cAGVoB,EAAMnC,SAAS0B,GAGjBnF,KAAKiG,aACLjG,KAAKkG,mBAEL1H,EAAAA,QAAEwB,KAAKC,UAAUd,QAAQX,EAAAA,QAAEyC,MAAMiB,IAGnC6B,SACE,MAAM6B,EAAQpH,EAAAA,QAAE,QACIoH,EAAMpF,SAAS2E,IAC/BS,EAAMpF,SAAS4E,GAIjBpF,KAAKwD,WAGLxD,KAAKgG,OAMT5E,QACE,MAAMwE,EAAQpH,EAAAA,QAAE,QACSoH,EAAMpF,SAAS2E,IACpCS,EAAMpF,SAAS4E,IAGjB5G,EAAAA,QAAEsG,GAA0BqB,IAAInG,KAAK2F,QAAQF,QAAQM,OACrDvH,EAAAA,QAAEwB,KAAK2F,QAAQF,QAAQxB,IAAI,UAAW,UAEtCzF,EAAAA,QAAEsG,GAA0BiB,OAG9B/F,KAAKiG,aACLjG,KAAKkG,mBAEL1H,EAAAA,QAAE4H,QAAQC,QAAO,KACfrG,KAAKiG,aACLjG,KAAKkG,sBAGP1H,EAAAA,QAAE4H,QAAQE,QAAO,KACf,MAAMV,EAAQpH,EAAAA,QAAE,SACQoH,EAAMpF,SAAS2E,IACnCS,EAAMpF,SAAS4E,KAGjBpF,KAAKkG,sBAKXK,iBACE,MAAMX,EAAQpH,EAAAA,QAAE,QAChB,OACEoH,EAAMpF,SA7HoB,wBA8HxBoF,EAAMpF,SA7HqB,2BA8H3BoF,EAAMpF,SA7HqB,2BA8H3BoF,EAAMpF,SA7HqB,2BA8H3BoF,EAAMpF,SA7HqB,0BAiIjCgG,iBACE,MAAMZ,EAAQpH,EAAAA,QAAE,QAChB,OACEoH,EAAMpF,SAnIoB,wBAoIxBoF,EAAMpF,SAnIqB,2BAoI3BoF,EAAMpF,SAnIqB,2BAoI3BoF,EAAMpF,SAnIqB,2BAoI3BoF,EAAMpF,SAnIqB,0BAuIjC0F,mBACE,MAAMN,EAAQpH,EAAAA,QAAE,QACViI,EAAkBjI,EAAAA,QAAEwB,KAAK2F,QAAQF,QAEvC,IAAKG,EAAMpF,SAAS6E,GAElB,YADAoB,EAAgBC,KAAK,QAAS,mBAIhC,MAAMC,EAAU,CACdL,OAAQ9H,EAAAA,QAAEmD,UAAUuC,SACpBkC,OAAQ5H,EAAAA,QAAE4H,QAAQlC,SAClB0C,OAAQpI,EAAAA,QAAEwG,GAAiB6B,cAC3BC,OAAQtI,EAAAA,QAAEyG,GAAiB4B,eAEvBE,EACIC,KAAKC,IAAKN,EAAQP,OAAS5H,EAAAA,QAAE4H,QAAQc,YAAeP,EAAQL,QADhES,EAECvI,EAAAA,QAAE4H,QAAQc,YAGXC,EAAcnH,KAAKuG,kBAA2D,UAAvC/H,EAAAA,QAAEwG,GAAiBf,IAAI,YAE9DmD,EAAcpH,KAAKwG,kBAA2D,UAAvChI,EAAAA,QAAEyG,GAAiBhB,IAAI,YAE9DoD,EAAyB7I,EAAAA,QAAG,GAAEwB,KAAK2F,QAAQF,WAAWzF,KAAK2F,QAAQF,mCAEzE,GAAsB,IAAlBsB,GAA4C,IAArBA,EACzBN,EAAgBxC,IAAI,CAClBqD,OAAQX,EAAQG,OAChBS,IAAKZ,EAAQC,SAEfS,EAAuBpD,IAAI,SAAU0C,EAAQP,QAAUO,EAAQC,OAASD,EAAQG,cAC3E,GAAIC,GAAoBJ,EAAQG,OACrC,IAAoB,IAAhBM,EAAuB,CACzB,MAAMG,EAAMZ,EAAQC,OAASG,EAC7BN,EAAgBxC,IAAI,SAAU0C,EAAQG,OAASC,GAAkB9C,IAAI,MAAOsD,GAAO,EAAIA,EAAM,GAC7FF,EAAuBpD,IAAI,SAAU0C,EAAQP,QAAUO,EAAQG,OAASC,SAExEN,EAAgBxC,IAAI,SAAU0C,EAAQG,aAE/BC,GAAiBJ,EAAQC,QACd,IAAhBO,GACFV,EAAgBxC,IAAI,MAAO0C,EAAQC,OAASG,GAC5CM,EAAuBpD,IAAI,SAAU0C,EAAQP,QAAUO,EAAQC,OAASG,KAExEN,EAAgBxC,IAAI,MAAO0C,EAAQC,SAEZ,IAAhBO,GACTV,EAAgBxC,IAAI,MAAO,GAC3BoD,EAAuBpD,IAAI,SAAU0C,EAAQP,SAE7CK,EAAgBxC,IAAI,MAAO0C,EAAQC,QAGjCQ,GAAeD,GACjBE,EAAuBpD,IAAI,SAAU,QACrCwC,EAAgBxC,IAAI,SAAU,MACrBmD,GAAeD,KACxBE,EAAuBpD,IAAI,SAAU,QACrCoD,EAAuBpD,IAAI,SAAU,KAIzCgC,aACE,MAAML,EAAQpH,EAAAA,QAAE,QACViI,EAAkBjI,EAAAA,QAAG,GAAEwB,KAAK2F,QAAQF,mCAE1C,IAAKG,EAAMpF,SAAS6E,GAElB,YADAoB,EAAgBC,KAAK,QAAS,IAIhC,MAAMC,EACInI,EAAAA,QAAE4H,QAAQlC,SADdyC,EAEInI,EAAAA,QAAEwG,GAAiB6B,cAFvBF,EAGInI,EAAAA,QAAEyG,GAAiB4B,cAG7B,IAAIW,EAAgBb,EAAiBA,EAEjC3G,KAAKwG,kBACoC,UAAvChI,EAAAA,QAAEyG,GAAiBhB,IAAI,cACzBuD,EAAgBb,EAAiBA,EAAiBA,GAItDF,EAAgBxC,IAAI,SAAUuD,GAEQ,oBAA3BhJ,EAAAA,QAAEC,GAAGgJ,mBACdhB,EAAgBgB,kBAAkB,CAChCC,UAAW1H,KAAK2F,QAAQJ,eACxBoC,iBAAiB,EACjBC,WAAY,CACVC,SAAU7H,KAAK2F,QAAQH,kBACvBsC,gBAAgB,KAQxBxG,wBAAwByG,GACtB,OAAO/H,KAAK+B,MAAK,WACf,IAAIP,EAAOhD,EAAAA,QAAEwB,MAAMwB,KAAKnD,GACxB,MAAMoD,EAAWjD,EAAAA,QAAE8B,OAAO,GAAIvB,EAASP,EAAAA,QAAEwB,MAAMwB,QAO/C,GALKA,IACHA,EAAO,IAAIkE,EAAe1F,KAAMyB,GAChCjD,EAAAA,QAAEwB,MAAMwB,KAAKnD,EAAUmD,IAGD,cAApBA,EAAKuG,GACP,MAAM,IAAItH,MAAO,GAAEsH,uBAGrBvG,EAAKuG,SAUXvJ,EAAAA,QAAEmD,UAAUN,GAAG,QAAS0D,GAAsB,SAAUnD,GACtDA,EAAMC,iBAEN6D,EAAe5D,iBAAiBlB,KAAKpC,EAAAA,QAAEwB,MAAO,aAGhDxB,EAAAA,QAAEmD,UAAUqG,OAAM,KAChBtC,EAAe5D,iBAAiBlB,KAAKpC,EAAAA,QAAEuG,GAAuB,YAQhEvG,EAAAA,QAAEC,GAAGL,GAAQsH,EAAe5D,iBAC5BtD,EAAAA,QAAEC,GAAGL,GAAM4D,YAAc0D,EACzBlH,EAAAA,QAAEC,GAAGL,GAAM6D,WAAa,WAEtB,OADAzD,EAAAA,QAAEC,GAAGL,GAAQG,EACNmH,EAAe5D,kBCnTxB,MAAM1D,EAAO,aACPC,EAAW,iBACXC,GAAa,IAAGD,IAChBE,GAAqBC,EAAAA,QAAEC,GAAGL,GAE1B6J,GAAiB,UAAS3J,KAYhC,MAAM4J,GACJrI,YAAYC,GACVE,KAAKC,SAAWH,EAGlBiE,SACEvF,EAAAA,QAAEwB,KAAKC,UAAUE,QAfQ,gBAesBC,QAAQ+H,YAbvB,6BAchC3J,EAAAA,QAAEwB,KAAKC,UAAUd,QAAQX,EAAAA,QAAEyC,MAAMgH,KAKnC3G,wBAAwBC,GACtB,OAAOvB,KAAK+B,MAAK,WACf,IAAIP,EAAOhD,EAAAA,QAAEwB,MAAMwB,KAAKnD,GAEnBmD,IACHA,EAAO,IAAI0G,GAAW1J,EAAAA,QAAEwB,OACxBxB,EAAAA,QAAEwB,MAAMwB,KAAKnD,EAAUmD,IAGzBA,EAAKD,SAWX/C,EAAAA,QAAEmD,UAAUN,GAAG,QA1Cc,oCA0CiB,SAAUO,GAClDA,GACFA,EAAMC,iBAGRqG,GAAWpG,iBAAiBlB,KAAKpC,EAAAA,QAAEwB,MAAO,aAQ5CxB,EAAAA,QAAEC,GAAGL,GAAQ8J,GAAWpG,iBACxBtD,EAAAA,QAAEC,GAAGL,GAAM4D,YAAckG,GACzB1J,EAAAA,QAAEC,GAAGL,GAAM6D,WAAa,WAEtB,OADAzD,EAAAA,QAAEC,GAAGL,GAAQG,GACN2J,GAAWpG,kBClEpB,MAAM1D,GAAO,WACPC,GAAW,eACXE,GAAqBC,EAAAA,QAAEC,GAAGL,IAG1BgK,GAAyB,iBAQzBrJ,GAAU,GAQhB,MAAMsJ,GACJxI,YAAYC,EAASyB,GACnBvB,KAAK2F,QAAUpE,EACfvB,KAAKC,SAAWH,EAKlBwI,gBACEtI,KAAKC,SAASsI,WAAWvC,OAAOmC,YAAY,QAEvCnI,KAAKC,SAASuI,OAAOhI,SAAS,SACjCR,KAAKC,SAASE,QAAQiI,IAAwBhI,QAAQU,KAAK,SAAS8C,YAAY,QAAQmC,OAG1F/F,KAAKC,SAASE,QAAQ,6BAA6BkB,GAAG,sBAAsB,KAC1E7C,EAAAA,QAAE,2BAA2BoF,YAAY,QAAQmC,UAIrD0C,cACE,MAAMlE,EAAW/F,EAAAA,QApCiB,uBAsClC,GAAwB,IAApB+F,EAASmE,OACX,OAGEnE,EAAS/D,SAvCiB,uBAwC5B+D,EAASN,IAAI,CACX0E,KAAM,UACNC,MAAO,IAGTrE,EAASN,IAAI,CACX0E,KAAM,EACNC,MAAO,YAIX,MAAMC,EAAStE,EAASsE,SAClB1E,EAAQI,EAASJ,QACjB2E,EAActK,EAAAA,QAAE4H,QAAQjC,QAAU0E,EAAOF,KAE3CE,EAAOF,KAAO,EAChBpE,EAASN,IAAI,CACX0E,KAAM,UACNC,MAAOC,EAAOF,KAAO,IAEdG,EAAc3E,GACvBI,EAASN,IAAI,CACX0E,KAAM,UACNC,MAAO,IAObtH,wBAAwBC,GACtB,OAAOvB,KAAK+B,MAAK,WACf,IAAIP,EAAOhD,EAAAA,QAAEwB,MAAMwB,KAAKnD,IACxB,MAAMsH,EAAUnH,EAAAA,QAAE8B,OAAO,GAAIvB,GAASP,EAAAA,QAAEwB,MAAMwB,QAEzCA,IACHA,EAAO,IAAI6G,GAAS7J,EAAAA,QAAEwB,MAAO2F,GAC7BnH,EAAAA,QAAEwB,MAAMwB,KAAKnD,GAAUmD,IAGV,kBAAXD,GAAyC,gBAAXA,GAChCC,EAAKD,SAWb/C,EAAAA,QAAG,2CAAwD6C,GAAG,SAAS,SAAUO,GAC/EA,EAAMC,iBACND,EAAMmH,kBAENV,GAASvG,iBAAiBlB,KAAKpC,EAAAA,QAAEwB,MAAO,oBAG1CxB,EAAAA,QAAG,oCAAiD6C,GAAG,SAASO,IAC9DA,EAAMC,iBAEFrD,EAAAA,QAAEoD,EAAM6D,QAAQuD,SAASxI,SArGK,qBAyGlCyI,YAAW,WACTZ,GAASvG,iBAAiBlB,KAAKpC,EAAAA,QAAEwB,MAAO,iBACvC,MAQLxB,EAAAA,QAAEC,GAAGL,IAAQiK,GAASvG,iBACtBtD,EAAAA,QAAEC,GAAGL,IAAM4D,YAAcqG,GACzB7J,EAAAA,QAAEC,GAAGL,IAAM6D,WAAa,WAEtB,OADAzD,EAAAA,QAAEC,GAAGL,IAAQG,GACN8J,GAASvG,kBCjIlB,MAAM1D,GAAO,kBACPC,GAAW,sBACXC,GAAa,IAAGD,KAChBE,GAAqBC,EAAAA,QAAEC,GAAGL,IAE1B8D,GAAkB,WAAU5D,KAC5B6D,GAAmB,YAAW7D,KAG9ByG,GAAuB,mCACvBmE,GAAqB,gBAM3B,MAAMC,GACJtJ,YAAYC,EAASsJ,GACnBpJ,KAAKyB,SAAW2H,EAChBpJ,KAAKC,SAAWH,EAKlBuJ,OACE7K,EAAAA,QAAEuG,IAAsBhD,MAAK,CAACuH,EAAGC,KAC/B,MAAMC,EAAQhL,EAAAA,QAAE+K,GAAS7C,KAAKwC,IACxBtD,EAAQpH,EAAAA,QAAE+K,GAASf,OAAO9E,WAAWtD,QAAQsD,WACrC,SAAV8F,EACF5D,EAAMI,OACa,UAAVwD,IACT5D,EAAMG,OACNH,EAAMoD,SAASA,SAASvF,SAAS,cAKvCgG,YACE,MAAMlF,EAAWvE,KAAKC,SAEhBuJ,EAAQjF,EAASmC,KAAKwC,IACtBtD,EAAQrB,EAASiE,OAAO9E,WAAWtD,QAAQsD,WAEjDkC,EAAM8D,OACQ,SAAVF,GACF5D,EAAMjC,QANK,KAMS,KAClBY,EAASiE,OAAO/E,SAAS,aAE3Bc,EAASmC,KAAKwC,GAAoB,SAClC3E,EAASpF,QAAQX,EAAAA,QAAEyC,MAAMkB,MACN,UAAVqH,IACTjF,EAASiE,OAAO5E,YAAY,UAC5BgC,EAAM9B,UAbK,KAcXS,EAASmC,KAAKwC,GAAoB,QAClC3E,EAASpF,QAAQX,EAAAA,QAAEyC,MAAMiB,MAM7BZ,wBAAwByG,GACtB,OAAO/H,KAAK+B,MAAK,WACf,IAAIP,EAAOhD,EAAAA,QAAEwB,MAAMwB,KAAKnD,IAEnBmD,IACHA,EAAO,IAAI2H,GAAgB3K,EAAAA,QAAEwB,OAC7BxB,EAAAA,QAAEwB,MAAMwB,KAAKnD,GAAUmD,IAGA,iBAAduG,GAA0BA,EAAUrG,MAAM,mBACnDF,EAAKuG,SAUbvJ,EAAAA,QAxEuB,qBAwELwJ,OAAM,WACtBmB,GAAgBrH,iBAAiBlB,KAAKpC,EAAAA,QAAEwB,MAAO,WAGjDxB,EAAAA,QAAEmD,UAAUN,GAAG,QAAS0D,IAAsB,WAC5CoE,GAAgBrH,iBAAiBlB,KAAKpC,EAAAA,QAAEwB,MAAO,gBAQjDxB,EAAAA,QAAEC,GAAGL,IAAQ+K,GAAgBrH,iBAC7BtD,EAAAA,QAAEC,GAAGL,IAAM4D,YAAcmH,GACzB3K,EAAAA,QAAEC,GAAGL,IAAM6D,WAAa,WAEtB,OADAzD,EAAAA,QAAEC,GAAGL,IAAQG,GACN4K,GAAgBrH,kBCjGzB,MAAM1D,GAAO,aACPC,GAAW,iBACXE,GAAqBC,EAAAA,QAAEC,GAAGL,IAE1BuL,GAAuB,6BACvBC,GAAiB,GAAED,OAEnB5K,GAAU,CACduE,aAAc,yBACdD,aAAc,wBAQhB,MAAMwG,GACJhK,YAAYI,EAAUwB,GACpBzB,KAAKF,QAAUG,EACfD,KAAKoJ,QAAU5K,EAAAA,QAAE8B,OAAO,GAAIvB,GAAS0C,GAKvCsC,SACMpC,SAASmI,mBACXnI,SAASoI,sBACTpI,SAASqI,yBACTrI,SAASsI,oBACTjK,KAAKkK,WAELlK,KAAKmK,aAITA,aACMxI,SAASyI,gBAAgBC,kBAC3B1I,SAASyI,gBAAgBC,oBAChB1I,SAASyI,gBAAgBE,wBAClC3I,SAASyI,gBAAgBE,0BAChB3I,SAASyI,gBAAgBG,qBAClC5I,SAASyI,gBAAgBG,sBAG3B/L,EAAAA,QAAEoL,IAAehG,YAAY5D,KAAKoJ,QAAQ/F,cAAcI,SAASzD,KAAKoJ,QAAQ9F,cAGhF4G,WACMvI,SAAS6I,eACX7I,SAAS6I,iBACA7I,SAAS8I,qBAClB9I,SAAS8I,uBACA9I,SAAS+I,kBAClB/I,SAAS+I,mBAGXlM,EAAAA,QAAEoL,IAAehG,YAAY5D,KAAKoJ,QAAQ9F,cAAcG,SAASzD,KAAKoJ,QAAQ/F,cAKhF/B,wBAAwBC,GACtB,IAAIC,EAAOhD,EAAAA,QAAEwB,MAAMwB,KAAKnD,IAEnBmD,IACHA,EAAOhD,EAAAA,QAAEwB,MAAMwB,QAGjB,MAAMC,EAAWjD,EAAAA,QAAE8B,OAAO,GAAIvB,GAA2B,iBAAXwC,EAAsBA,EAASC,GACvEmJ,EAAS,IAAId,GAAWrL,EAAAA,QAAEwB,MAAOyB,GAEvCjD,EAAAA,QAAEwB,MAAMwB,KAAKnD,GAA4B,iBAAXkD,EAAsBA,EAASC,GAEvC,iBAAXD,GAAuBA,EAAOG,MAAM,8BAC7CiJ,EAAOpJ,KAEPoJ,EAAOtB,QASb7K,EAAAA,QAAEmD,UAAUN,GAAG,QAASsI,IAAsB,WAC5CE,GAAW/H,iBAAiBlB,KAAKpC,EAAAA,QAAEwB,MAAO,aAQ5CxB,EAAAA,QAAEC,GAAGL,IAAQyL,GAAW/H,iBACxBtD,EAAAA,QAAEC,GAAGL,IAAM4D,YAAc6H,GACzBrL,EAAAA,QAAEC,GAAGL,IAAM6D,WAAa,WAEtB,OADAzD,EAAAA,QAAEC,GAAGL,IAAQG,GACNsL,GAAW/H,kBCnGpB,MACMzD,GAAW,aACXE,GAAqBC,EAAAA,QAAEC,GAAF,OAErBsG,GAAuB,yBAIvB6F,GAAkC,oCAClCC,GAA2B,mBAC3BC,GAA2B,0BAE3BC,GAA2B,iDAC3BC,GAAgC,GAAED,eAClCE,GAAwB,kDACxBC,GAAsB,GAAED,gBACxBE,GAAwB,GAAEF,kBAC1BG,GAA6B,uCAC7BC,GAA4B,oCAE5BC,GAAyB,cACzBC,GAA6B,yBAE7BxM,GAAU,CACdyM,WAAWC,GACFA,EAETC,aAAaD,GACJA,EAETE,aAAaF,GACJA,EAETG,gBAAgB,EAChBC,gBAAgB,EAChBC,gBAAgB,EAChBC,eAAe,EACfC,gBAAgB,EAChBC,aAAc,GACdC,oBAAoB,EACpBC,aAAc,YACdC,aAAc,eAQhB,MAAMC,GACJxM,YAAYC,EAASyB,GACnBvB,KAAK2F,QAAUpE,EACfvB,KAAKC,SAAWH,EAEhBE,KAAKoB,QAKPoK,WAAWC,GACTzL,KAAK2F,QAAQ6F,WAAWC,GAG1BC,aAAaD,GACXzL,KAAK2F,QAAQ+F,aAAaD,GAG5BE,aAAaF,GACXzL,KAAK2F,QAAQgG,aAAaF,GAG5Ba,UAAUC,EAAOC,EAAMC,EAAYC,GACjC,MAAMC,EAAS,SAAQF,KAAczF,KAAK4F,MAAsB,IAAhB5F,KAAK6F,YAC/CC,EAAS,OAAML,KAAczF,KAAK4F,MAAsB,IAAhB5F,KAAK6F,YAE7CE,EAAc,sFAAqFD,aAAiBH,gCAAoCA,4BAAgCJ,aAC9L/N,EAAAA,QAAEuM,IAAyB7J,OAAO8L,OAAOD,IAEzC,MAAME,EAAc,kCAAiCN,uCAA2CG,mBAAuBN,qBAGvH,GAFAhO,EAAAA,QAAEyM,IAAsB/J,OAAO8L,OAAOC,IAElCP,EACF,GAAI1M,KAAK2F,QAAQoG,cAAe,CAC9B,MAAMmB,EAAiB1O,EAAAA,QAAE2M,IACzB+B,EAAeC,SACf3O,EAAAA,QAAG,GAAEmO,YAAgB3E,OAAM,KACiB,iBAA/BhI,KAAK2F,QAAQoG,eACtB/L,KAAKoN,UAAW,IAAGN,IAAS9M,KAAK2F,QAAQoG,eACzC9C,YAAW,KACTiE,EAAeG,YACdrN,KAAK2F,QAAQoG,iBAEhB/L,KAAKoN,UAAW,IAAGN,IAAS9M,KAAK2F,QAAQoG,eACzCmB,EAAeG,mBAInBrN,KAAKoN,UAAW,IAAGN,KAIvB9M,KAAK2L,aAAanN,EAAAA,QAAG,IAAGsO,MAG1BQ,eAAe7B,EAAMiB,EAAW1M,KAAK2F,QAAQmG,gBAC3C,IAAIyB,EAAQ/O,EAAAA,QAAEiN,GAAM+B,aACOC,IAAvBF,EAAM7G,KAAK,UACb6G,EAAQ/O,EAAAA,QAAEiN,GAAMzC,OAAO,KAAKwE,SAG9BD,EAAMzM,KAAK,UAAUK,SACrB,IAAIoL,EAAQgB,EAAMzM,KAAK,KAAK4M,OACd,KAAVnB,IACFA,EAAQgB,EAAMG,QAGhB,MAAMlB,EAAOe,EAAM7G,KAAK,QACX,MAAT8F,GAAyB,KAATA,QAAwBiB,IAATjB,GAInCxM,KAAKsM,UAAUC,EAAOC,EAAMA,EAAKmB,QAAQ,QAAS,IAAIA,QAAQ,KAAM,IAAIC,WAAW,IAAK,KAAMlB,GAGhGU,UAAU3B,GACR,MAAM8B,EAAQ/O,EAAAA,QAAEiN,GACVkB,EAAQY,EAAM7G,KAAK,QAEzBlI,EAAAA,QAAE0M,IAAoBnF,OACtBvH,EAAAA,QAAG,GAAEuM,cAAmC8C,IAAI,WAAWjK,YAAY,UACnE5D,KAAKiG,aAELsH,EAAMM,IAAI,QACVN,EAAMpN,QAAQ,MAAMsD,SAAS,UAC7BzD,KAAK0L,aAAa6B,GAEdvN,KAAK2F,QAAQkG,gBACf7L,KAAK8N,eAAetP,EAAAA,QAAG,GAAEmO,YAAgBjG,KAAK,QAIlDqH,kBACE,MAAMC,EAAWxP,EAAAA,QAAG,GAAEwM,aAChBiD,EAAiBD,EAAShF,SAC1BkF,EAAeF,EAASG,QAI9B,GAHAH,EAAS7M,SACT3C,EAAAA,QAAE,oBAAoB2C,SAElB3C,EAAAA,QAAEyM,IAAsBvH,WAAWgF,QAAUlK,EAAAA,QAAG,GAAE0M,OAAuBC,MAAwBzC,OACnGlK,EAAAA,QAAE0M,IAAoBlF,WACjB,CACL,MAAMoI,EAAmBF,EAAe,EACxClO,KAAKoN,UAAUa,EAAevK,WAAW2K,GAAGD,GAAkBtN,KAAK,OAIvEwN,mBACM9P,EAAAA,QAAE,QAAQgC,SAAS+K,KACrB/M,EAAAA,QAAG,uCAAuCoF,YAAY5D,KAAK2F,QAAQyG,cAAc3I,SAASzD,KAAK2F,QAAQwG,cACvG3N,EAAAA,QAAE,QAAQoF,YAAY2H,IACtB/M,EAAAA,QAAG,GAAE0M,OAAuBC,MAAwBjH,OAAO,QAC3D1F,EAAAA,QAAEqM,IAA0B3G,OAAO,QACnC1F,EAAAA,QAAEsM,IAAyB5G,OAAO,UAElC1F,EAAAA,QAAG,uCAAuCoF,YAAY5D,KAAK2F,QAAQwG,cAAc1I,SAASzD,KAAK2F,QAAQyG,cACvG5N,EAAAA,QAAE,QAAQiF,SAAS8H,KAGrB/M,EAAAA,QAAE4H,QAAQjH,QAAQ,UAClBa,KAAKiG,YAAW,GAKlB7E,QACMgF,OAAOmI,cAAgBvO,KAAK2F,QAAQiG,eACtCpN,EAAAA,QAAE,QAAQiF,SAAS6H,IACV9M,EAAAA,QAAEqM,IAA0BrK,SAAS8K,MAC9CtL,KAAKwO,kBACLxO,KAAKiG,YAAW,IAIpBwI,WAAW5F,GACT,MAAM6F,EAAUlQ,EAAAA,QAAEuM,IAAyB4D,aAC3CnQ,EAAAA,QAAEuM,IAAyB6D,QAAQ,CAAED,WAAaD,EAAU7F,GAAW,IAAK,UAG9E2F,kBACEhQ,EAAAA,QAAE4H,QAAQ/E,GAAG,UAAU,KACrB4H,YAAW,KACTjJ,KAAKiG,eACJ,MAELzH,EAAAA,QAAEmD,UAAUN,GAAG,QAAS+J,IAA4ByD,IAClDA,EAAEhN,iBACF7B,KAAKsN,eAAeuB,EAAEpJ,WAGpBzF,KAAK2F,QAAQqG,gBACfxN,EAAAA,QAAEmD,UAAUN,GAAG,QAAU,GAAEgK,oCAA+DwD,IACxFA,EAAEhN,iBACF7B,KAAKsN,eAAeuB,EAAEpJ,WAI1BjH,EAAAA,QAAEmD,UAAUN,GAAG,QAAS2J,IAA8B6D,IACpDA,EAAEhN,iBACF7B,KAAKwL,WAAWqD,EAAEpJ,QAClBzF,KAAKoN,UAAUyB,EAAEpJ,WAEnBjH,EAAAA,QAAEmD,UAAUN,GAAG,QA9MgB,gCA8MqBwN,IAClDA,EAAEhN,iBACF7B,KAAK+N,qBAEPvP,EAAAA,QAAEmD,UAAUN,GAAG,QAASuJ,IAAiCiE,IACvDA,EAAEhN,iBACF7B,KAAKsO,sBAEP,IAAIQ,GAAY,EACZC,EAAoB,KACxBvQ,EAAAA,QAAEmD,UAAUN,GAAG,YAvNsB,qCAuNyBwN,IAC5DA,EAAEhN,iBACFmN,cAAcD,GAEd,IAAI9C,aAAEA,GAAiBjM,KAAK2F,QAEvB3F,KAAK2F,QAAQuG,qBAChBD,GAAgBA,GAGlB6C,GAAY,EACZ9O,KAAKyO,WAAWxC,GAEhB8C,EAAoBE,aAAY,KAC9BjP,KAAKyO,WAAWxC,KACf,QAELzN,EAAAA,QAAEmD,UAAUN,GAAG,YAvOuB,sCAuOyBwN,IAC7DA,EAAEhN,iBACFmN,cAAcD,GAEd,IAAI9C,aAAEA,GAAiBjM,KAAK2F,QAExB3F,KAAK2F,QAAQuG,qBACfD,GAAgBA,GAGlB6C,GAAY,EACZ9O,KAAKyO,WAAWxC,GAEhB8C,EAAoBE,aAAY,KAC9BjP,KAAKyO,WAAWxC,KACf,QAELzN,EAAAA,QAAEmD,UAAUN,GAAG,WAAW,KACpByN,IACFA,GAAY,EACZE,cAAcD,GACdA,EAAoB,SAK1BjB,eAAeoB,GACb1Q,EAAAA,QAAG,GAAE4M,oCAAgExH,YAAY,UACjFpF,EAAAA,QAAE6M,IAA2BrC,SAASpF,YAAY,UAElD,MAAMuL,EAAkB3Q,EAAAA,QAAG,GAAE6M,aAAoC6D,OAC3DE,EAAsB5Q,EAAAA,QAAG,uCAA0C0Q,OACnEG,EAAmB7Q,EAAAA,QAAG,GAAE4M,aAAqC8D,OAEnEC,EAAgBpN,MAAK,CAACuN,EAAGT,KACvBrQ,EAAAA,QAAEqQ,GAAG7F,SAASvF,SAAS,aAEzB2L,EAAoBrN,MAAK,CAACuN,EAAGT,KAC3BrQ,EAAAA,QAAEqQ,GAAGpL,SAAS,aAEhB4L,EAAiBtN,MAAK,CAACuN,EAAGT,KACxBrQ,EAAAA,QAAEqQ,GAAGpL,SAAS,UACdjF,EAAAA,QAAEqQ,GAAG1O,QAAQ,iBAAiBoP,QAAQ,aAAa9L,SAAS,aAIhEwC,WAAWuJ,GAAW,GACpB,GAAIhR,EAAAA,QAAE,QAAQgC,SAAS+K,IAA6B,CAClD,MAAMkE,EAAejR,EAAAA,QAAE4H,QAAQlC,SAC/B1F,EAAAA,QAAG,GAAE0M,OAAuBC,MAAwBjH,OAAOuL,GAC3DjR,EAAAA,QAAEqM,IAA0B3G,OAAOuL,GACnCjR,EAAAA,QAAEsM,IAAyB5G,OAAOuL,OAC7B,CACL,MAAMC,EAAuBC,WAAWnR,EAAAA,QAAEqM,IAA0B5G,IAAI,eAClE2L,EAAepR,EAAAA,QAzRD,2CAyRqBqI,cACzB,GAAZ2I,EACFvG,YAAW,KACTzK,EAAAA,QAAG,GAAE0M,OAAuBC,MAAwBjH,OAAOwL,EAAuBE,KACjF,IAEHpR,EAAAA,QAAEsM,IAAyB5G,OAAOwL,EAAuBE,IAO/DtO,wBAAwByG,KAAc8H,GACpC,IAAIrO,EAAOhD,EAAAA,QAAEwB,MAAMwB,KAAKnD,IACxB,MAAMoD,EAAWjD,EAAAA,QAAE8B,OAAO,GAAIvB,GAASP,EAAAA,QAAEwB,MAAMwB,QAE1CA,IACHA,EAAO,IAAI6K,GAAOrM,KAAMyB,GACxBjD,EAAAA,QAAEwB,MAAMwB,KAAKnD,GAAUmD,IAGA,iBAAduG,GAA0BA,EAAUrG,MAAM,uDACnDF,EAAKuG,MAAc8H,IAUzBrR,EAAAA,QAAE4H,QAAQ/E,GAAG,QAAQ,KACnBgL,GAAOvK,iBAAiBlB,KAAKpC,EAAAA,QAAEuG,QAQjCvG,EAAAA,QAAEC,GAAF,OAAa4N,GAAOvK,iBACpBtD,EAAAA,QAAEC,GAAF,OAAWuD,YAAcqK,GACzB7N,EAAAA,QAAEC,GAAF,OAAWwD,WAAa,WAEtB,OADAzD,EAAAA,QAAEC,GAAF,OAAaF,GACN8N,GAAOvK,kBClVhB,MACMzD,GAAW,aACXE,GAAqBC,EAAAA,QAAEC,GAAF,OAErBuG,GAAkB,eAClB8K,GAAwB,gBACxBC,GAAmB,yBAInB9K,GAAkB,eAMlB+K,GAA6B,kBAK7BjR,GAAU,CACdwG,eAAgB,iBAChBC,kBAAmB,IACnByK,iBAAiB,EACjBC,oBAAqB,aACrBC,yBAAyB,GAQ3B,MAAMC,GACJvQ,YAAYC,EAASyB,GACnBvB,KAAK2F,QAAUpE,EACfvB,KAAKC,SAAWH,EAEhBE,KAAKoB,QAKPiP,gBAAgBC,EAAQ,MACtB,MAAM1K,EAAQpH,EAAAA,QAAE,QAChB,IAAI+R,EAAiB,GAEjB3K,EAAMpF,SA9BgC,+BA8BmBoF,EAAMpF,SA7B/B,yBA6BsF,oBAAV8P,KAC9GC,EAAiB/R,EAAAA,QAzCkB,4BAyCkBqI,eAGvD,MAAMF,EAAU,CACdP,OAAQ5H,EAAAA,QAAE4H,QAAQlC,SAClB0C,OAAQpI,EAAAA,QAAEwG,IAAiB0D,OAAS,EAAIlK,EAAAA,QAAEwG,IAAiB6B,cAAgB,EAC3EC,OAAQtI,EAAAA,QAAEyG,IAAiByD,OAAS,EAAIlK,EAAAA,QAAEyG,IAAiB4B,cAAgB,EAC3E2J,QAAShS,EAAAA,QAAEuR,IAAkBrH,OAAS,EAAIlK,EAAAA,QAAEuR,IAAkB7L,SAAW,EACzEqM,eAAAA,GAGIE,EAAMzQ,KAAK0Q,KAAK/J,GACtB,IAAIkC,EAAS7I,KAAK2F,QAAQsK,iBAEX,IAAXpH,IACFA,EAAS,GAGX,MAAM8H,EAAmBnS,EAAAA,QA5DJ,qBA8DN,IAAXqK,IACE4H,IAAQ9J,EAAQ4J,eAClBI,EAAiB1M,IAAIjE,KAAK2F,QAAQuK,oBAAsBO,EAAM5H,GACrD4H,IAAQ9J,EAAQP,OACzBuK,EAAiB1M,IAAIjE,KAAK2F,QAAQuK,oBAAsBO,EAAM5H,EAAUlC,EAAQC,OAASD,EAAQG,QAEjG6J,EAAiB1M,IAAIjE,KAAK2F,QAAQuK,oBAAsBO,EAAM5H,EAAUlC,EAAQC,QAG9ED,EAAQ4J,eAAiB5J,EAAQG,QAAUH,EAAQ6J,SAAqC,GAA1B7J,EAAQ4J,gBACxEI,EAAiB1M,IAAIjE,KAAK2F,QAAQuK,oBAAsBvJ,EAAQ4J,eAAiB1H,GAG/E7I,KAAKwG,kBACPmK,EAAiB1M,IAAIjE,KAAK2F,QAAQuK,oBAAqBP,WAAWgB,EAAiB1M,IAAIjE,KAAK2F,QAAQuK,sBAAwBvJ,EAAQG,SAInIlB,EAAMpF,SAtEiB,mBA0Eb,IAAXqI,GACF8H,EAAiB1M,IAAIjE,KAAK2F,QAAQuK,oBAAsBO,EAAM5H,EAAUlC,EAAQC,OAASD,EAAQG,QAG7D,oBAA3BtI,EAAAA,QAAEC,GAAGgJ,kBACdjJ,EAAAA,QAAEuR,IAAkBtI,kBAAkB,CACpCC,UAAW1H,KAAK2F,QAAQJ,eACxBoC,iBAAiB,EACjBC,WAAY,CACVC,SAAU7H,KAAK2F,QAAQH,kBACvBsC,gBAAgB,KAIpBtJ,EAAAA,QAAEuR,IAAkB9L,IAAI,aAAc,SAI1C2M,yBACE,MAAMhL,EAAQpH,EAAAA,QAAE,QACVqS,EAAYrS,EAAAA,QAAG,6BAErB,GAAyB,IAArBqS,EAAUnI,OACZ9C,EAAM3B,IAAI,SAAU,QACpBzF,EAAAA,QAAE,QAAQyF,IAAI,SAAU,YACnB,CACL,MAAM6M,EAAYD,EAAU3M,SAExB0B,EAAM3B,IAAIjE,KAAK2F,QAAQuK,uBAAyBY,GAClDlL,EAAM3B,IAAIjE,KAAK2F,QAAQuK,oBAAqBY,IAOlD1P,QAEEpB,KAAKqQ,mBAEwC,IAAzCrQ,KAAK2F,QAAQwK,wBACfnQ,KAAK4Q,yBACI5Q,KAAK2F,QAAQwK,0BAA4BY,SAAS/Q,KAAK2F,QAAQwK,wBAAyB,KACjGlB,YAAYjP,KAAK4Q,uBAAwB5Q,KAAK2F,QAAQwK,yBAGxD3R,EAAAA,QAAEuR,IACC1O,GAAG,gDAAgD,KAClDrB,KAAKqQ,qBAGT7R,EAAAA,QAAEsR,IACCzO,GAAG,yBAAyB,KACvB7C,EAAAA,QAAE,QAAQgC,SAjIe,qBAkI3BR,KAAKqQ,qBAIX7R,EAAAA,QA1I0B,4BA2IvB6C,GAAG,6CAA6C,KAC/C4H,YAAW,KACTjJ,KAAKqQ,oBACJ,QAGP7R,EAAAA,QAnJiC,mCAoJ9B6C,GAAG,gCAAgC,KAClCrB,KAAKqQ,qBAENhP,GAAG,+BAA+B,KACjCrB,KAAKqQ,gBAAgB,sBAGzB7R,EAAAA,QAAE4H,QAAQC,QAAO,KACfrG,KAAKqQ,qBAGP7R,EAAAA,QAAEmD,UAAUqG,OAAM,KAChBhI,KAAKqQ,qBAGPpH,YAAW,KACTzK,EAAAA,QAAE,wBAAwBoF,YAAY,qBACrC,IAGL8M,KAAKM,GAEH,IAAIP,EAAM,EAQV,OANAQ,OAAOC,KAAKF,GAASG,SAAQC,IACvBJ,EAAQI,GAAOX,IACjBA,EAAMO,EAAQI,OAIXX,EAGTjK,iBACE,MAA8C,UAAvChI,EAAAA,QAAEyG,IAAiBhB,IAAI,YAKhC3C,wBAAwBC,EAAS,IAC/B,OAAOvB,KAAK+B,MAAK,WACf,IAAIP,EAAOhD,EAAAA,QAAEwB,MAAMwB,KAAKnD,IACxB,MAAMoD,EAAWjD,EAAAA,QAAE8B,OAAO,GAAIvB,GAASP,EAAAA,QAAEwB,MAAMwB,QAE1CA,IACHA,EAAO,IAAI4O,GAAO5R,EAAAA,QAAEwB,MAAOyB,GAC3BjD,EAAAA,QAAEwB,MAAMwB,KAAKnD,GAAUmD,IAGV,SAAXD,GAAgC,KAAXA,EACvBC,EAAKJ,QACe,oBAAXG,GAA2C,2BAAXA,GACzCC,EAAKD,SAWb/C,EAAAA,QAAE4H,QAAQ/E,GAAG,QAAQ,KACnB+O,GAAOtO,iBAAiBlB,KAAKpC,EAAAA,QAAE,YAGjCA,EAAAA,QAAG,GAAEuR,QAAsB1O,GAAG,WAAW,KACvC7C,EAAAA,QAAEsR,IAAuBrM,SAASuM,OAGpCxR,EAAAA,QAAG,GAAEuR,QAAsB1O,GAAG,YAAY,KACxC7C,EAAAA,QAAEsR,IAAuBlM,YAAYoM,OAQvCxR,EAAAA,QAAEC,GAAF,OAAa2R,GAAOtO,iBACpBtD,EAAAA,QAAEC,GAAF,OAAWuD,YAAcoO,GACzB5R,EAAAA,QAAEC,GAAF,OAAWwD,WAAa,WAEtB,OADAzD,EAAAA,QAAEC,GAAF,OAAaF,GACN6R,GAAOtO,kBCjPhB,MAAM1D,GAAO,WACPC,GAAW,eAEXE,GAAqBC,EAAAA,QAAEC,GAAGL,IAK1BiT,GAAyB,2BACzBC,GAAgB,OAIhB/O,GAAuB,mBACvBgP,GAAkB,eAClBC,GAAwB,qBACxBC,GAAoB,iBAEpB1S,GAAU,CACd2S,iBAAkB,KAClBC,gBAAgB,EAChBC,yBAAyB,GAQ3B,MAAMC,GACJhS,YAAYC,EAASsJ,GACnBpJ,KAAKC,SAAWH,EAChBE,KAAKyB,SAAWjD,EAAAA,QAAE8B,OAAO,GAAIvB,GAASqK,GAEH,IAA/B5K,EAAAA,QAxBiB,oBAwBGkK,QACtB1I,KAAKW,cAGPX,KAAKoB,QAKPyC,SACE,MAAMiO,EAAgBtT,EAAAA,QAAE8S,IAEpBtR,KAAKyB,SAASiQ,kBACZlT,EAAAA,QAAE4H,QAAQjC,SAAWnE,KAAKyB,SAASiQ,kBACrCI,EAAcrO,SAAS8N,IAI3BO,EAAcrO,SAAS+N,IAAuB5N,YAAa,mCAA+CS,MAAM,IAAIC,OAAM,WACxHwN,EAAclO,YAAY4N,IAC1BhT,EAAAA,QAAEwB,MAAMwE,aAGNxE,KAAKyB,SAASkQ,gBAChBI,aAAaC,QAAS,wBAAuBT,IAG/C/S,EAAAA,QAAEwB,KAAKC,UAAUd,QAAQX,EAAAA,QAAEyC,MAvDV,uBA0DnBuC,WACE,MAAMsO,EAAgBtT,EAAAA,QAAE8S,IAEpBtR,KAAKyB,SAASiQ,kBACZlT,EAAAA,QAAE4H,QAAQjC,SAAWnE,KAAKyB,SAASiQ,kBACrCI,EAAclO,YAAY2N,IAAiB9N,SAASgO,IAIxDK,EAAcrO,SAASlB,IAEnBvC,KAAKyB,SAASkQ,gBAChBI,aAAaC,QAAS,wBAAuBzP,IAG/C/D,EAAAA,QAAEwB,KAAKC,UAAUd,QAAQX,EAAAA,QAAEyC,MA1EN,2BA6EvB8C,SACMvF,EAAAA,QAAE8S,IAAe9Q,SAAS+B,IAC5BvC,KAAK6D,SAEL7D,KAAKwD,WAITyO,aAAa5L,GAAS,GACpB,IAAKrG,KAAKyB,SAASiQ,iBACjB,OAGF,MAAMI,EAAgBtT,EAAAA,QAAE8S,IAEpB9S,EAAAA,QAAE4H,QAAQjC,SAAWnE,KAAKyB,SAASiQ,iBAChCI,EAActR,SAAS+Q,KAC1BvR,KAAKwD,YAEa,IAAX6C,IACLyL,EAActR,SAAS+Q,IACzBO,EAAclO,YAAY2N,IACjBO,EAActR,SAASiR,KAChCzR,KAAK6D,UAKXqO,WACE,IAAKlS,KAAKyB,SAASkQ,eACjB,OAGF,MAAM/L,EAAQpH,EAAAA,QAAE,QACIuT,aAAaI,QAAS,2BAEtB5P,GACdvC,KAAKyB,SAASmQ,wBAChBhM,EAAMnC,SAAS,mBAAmBA,SAASlB,IAAsB8B,MAAM,IAAIC,OAAM,WAC/E9F,EAAAA,QAAEwB,MAAM4D,YAAY,mBACpBpF,EAAAA,QAAEwB,MAAMwE,aAGVoB,EAAMnC,SAASlB,IAERvC,KAAKyB,SAASmQ,wBACvBhM,EAAMnC,SAAS,mBAAmBG,YAAYrB,IAAsB8B,MAAM,IAAIC,OAAM,WAClF9F,EAAAA,QAAEwB,MAAM4D,YAAY,mBACpBpF,EAAAA,QAAEwB,MAAMwE,aAGVoB,EAAMhC,YAAYrB,IAMtBnB,QACEpB,KAAKkS,WACLlS,KAAKiS,eAELzT,EAAAA,QAAE4H,QAAQC,QAAO,KACfrG,KAAKiS,cAAa,MAItBtR,cACE,MAAMyR,EAAU5T,EAAAA,QAAE,UAAW,CAC3B6T,GAAI,oBAGND,EAAQ/Q,GAAG,SAAS,KAClBrB,KAAKwD,cAGPhF,EAAAA,QAlJqB,YAkJD0C,OAAOkR,GAK7B9Q,wBAAwByG,GACtB,OAAO/H,KAAK+B,MAAK,WACf,IAAIP,EAAOhD,EAAAA,QAAEwB,MAAMwB,KAAKnD,IACxB,MAAMoD,EAAWjD,EAAAA,QAAE8B,OAAO,GAAIvB,GAASP,EAAAA,QAAEwB,MAAMwB,QAE1CA,IACHA,EAAO,IAAIqQ,GAAS7R,KAAMyB,GAC1BjD,EAAAA,QAAEwB,MAAMwB,KAAKnD,GAAUmD,IAGA,iBAAduG,GAA0BA,EAAUrG,MAAM,2BACnDF,EAAKuG,SAWbvJ,EAAAA,QAAEmD,UAAUN,GAAG,QAASgQ,IAAwBzP,IAC9CA,EAAMC,iBAEN,IAAIyQ,EAAS1Q,EAAM2Q,cAEc,aAA7B/T,EAAAA,QAAE8T,GAAQ9Q,KAAK,YACjB8Q,EAAS9T,EAAAA,QAAE8T,GAAQE,QAAQnB,KAG7BQ,GAAS/P,iBAAiBlB,KAAKpC,EAAAA,QAAE8T,GAAS,aAG5C9T,EAAAA,QAAE4H,QAAQ/E,GAAG,QAAQ,KACnBwQ,GAAS/P,iBAAiBlB,KAAKpC,EAAAA,QAAE6S,QAQnC7S,EAAAA,QAAEC,GAAGL,IAAQyT,GAAS/P,iBACtBtD,EAAAA,QAAEC,GAAGL,IAAM4D,YAAc6P,GACzBrT,EAAAA,QAAEC,GAAGL,IAAM6D,WAAa,WAEtB,OADAzD,EAAAA,QAAEC,GAAGL,IAAQG,GACNsT,GAAS/P,kBCjNlB,MAAM1D,GAAO,gBACPC,GAAW,qBACXE,GAAqBC,EAAAA,QAAEC,GAAGL,IAE1BmT,GAAkB,sBAClBkB,GAAyB,YACzBC,GAAwB,WAExBC,GAA4B,yBAC5BC,GAAwB,aAExBjJ,GAAuB,iCAIvBkJ,GAAyB,GAAElJ,mBAC3BmJ,GAA0B,GAAEnJ,UAC5BoJ,GAAwB,GAAED,OAE1BE,GAA2B,0BAC3BC,GAAiC,sCAEjClU,GAAU,CACdmU,UAAW,KACXC,UAAW,EACXC,WAAY,EACZC,eAAe,EACfC,eAAe,EACfC,eAAgB,aAChBC,aAAc,qBAGVC,GAAc,GAOpB,MAAMC,GACJ7T,YAAYI,EAAUwB,GACpBzB,KAAKF,QAAUG,EACfD,KAAKoJ,QAAU5K,EAAAA,QAAE8B,OAAO,GAAIvB,GAAS0C,GACrCzB,KAAK2T,MAAQ,GAKftK,OACwC,GAAlC7K,EAAAA,QAAEmL,IAAsBjB,SAIwC,GAAhElK,EAAAA,QAAEmL,IAAsBnB,KAAKwK,IAAyBtK,QACxDlK,EAAAA,QAAEmL,IAAsBiK,MACtBpV,EAAAA,QAAE,UAAW,CAAEqV,MAAOlB,MAIoD,GAA1EnU,EAAAA,QAAEwU,IAAyBtP,SAzCC,eAyCoCgF,QAClElK,EAAAA,QAAEwU,IAAyB9R,OACzB1C,EAAAA,QAAE,UAAW,CAAEqV,MAAOjB,MAI1B5S,KAAK8T,eAELtV,EAAAA,QAvDqB,8BAuDDkF,WAAW3B,MAAK,CAACuN,EAAGyE,KACtC/T,KAAKgU,WAAWD,OAIpBE,SACE,MAAMC,EAAc1V,EAAAA,QAAEqU,IAAuBsB,MAAMC,cACnD,GAAIF,EAAYxL,OAAS1I,KAAKoJ,QAAQ+J,UAIpC,OAHA3U,EAAAA,QAAEyU,IAA+BoB,QACjCrU,KAAK8T,oBACL9T,KAAKsU,QAIP,MAAMC,EAAgBd,GAAYe,QAAO/I,GAASA,EAAKgJ,KAAML,cAAcM,SAASR,KAC9ES,EAAanW,EAAAA,QAAE+V,EAAcK,MAAM,EAAG5U,KAAKoJ,QAAQgK,aACzD5U,EAAAA,QAAEyU,IAA+BoB,QAEP,IAAtBM,EAAWjM,OACb1I,KAAK8T,eAELa,EAAW5S,MAAK,CAACuN,EAAGuF,KAClBrW,EAAAA,QAAEyU,IAA+B/R,OAAOlB,KAAK8U,YAAY9H,OAAO6H,EAAOJ,MAAOzH,OAAO6H,EAAOrI,MAAOqI,EAAOE,UAI9G/U,KAAKgV,OAGPA,OACExW,EAAAA,QAAEmL,IAAsBX,SAASvF,SAAS8N,IAC1C/S,EAAAA,QAAEuU,IAAsBnP,YAAY6O,IAAwBhP,SAASiP,IAGvE4B,QACE9V,EAAAA,QAAEmL,IAAsBX,SAASpF,YAAY2N,IAC7C/S,EAAAA,QAAEuU,IAAsBnP,YAAY8O,IAAuBjP,SAASgP,IAGtE1O,SACMvF,EAAAA,QAAEmL,IAAsBX,SAASxI,SAAS+Q,IAC5CvR,KAAKsU,QAELtU,KAAKgV,OAMThB,WAAWvI,EAAMsJ,EAAO,IACtB,GAAIvW,EAAAA,QAAEiN,GAAMjL,SA9GU,cA+GpB,OAGF,MAAMyU,EAAa,GACbC,EAAU1W,EAAAA,QAAEiN,GAAM+B,QAAQ1M,KAAM,eAChCqU,EAAc3W,EAAAA,QAAEiN,GAAM+B,QAAQ1M,KAAM,mBAEpC0L,EAAO0I,EAAQxO,KAAK,QACpB+N,EAAOS,EAAQpU,KAAK,KAAK4C,WAAWvC,SAASiU,MAAM1H,OAMzD,GAJAuH,EAAWR,KAAOzU,KAAKqV,UAAUZ,GACjCQ,EAAWzI,KAAOA,EAClByI,EAAWF,KAAOA,EAES,IAAvBI,EAAYzM,OACd+K,GAAY6B,KAAKL,OACZ,CACL,MAAMM,EAAUN,EAAWF,KAAKS,OAAO,CAACP,EAAWR,OACnDU,EAAYzR,WAAW3B,MAAK,CAACuN,EAAGyE,KAC9B/T,KAAKgU,WAAWD,EAAOwB,OAK7BF,UAAU3H,GACR,OAAO+H,EAAAA,KAAK/H,EAAKC,QAAQ,iBAAkB,MAG7CmH,YAAYL,EAAMjI,EAAMuI,GAItB,GAHAA,EAAOA,EAAKW,KAAM,IAAG1V,KAAKoJ,QAAQ8J,cAClCuB,EAAOkB,SAASlB,GAEZzU,KAAKoJ,QAAQiK,eAAiBrT,KAAKoJ,QAAQkK,cAAe,CAC5D,MAAMY,EAAc1V,EAAAA,QAAEqU,IAAuBsB,MAAMC,cAC7CwB,EAAS,IAAIC,OAAO3B,EAAa,MAEnClU,KAAKoJ,QAAQiK,gBACfoB,EAAOA,EAAK9G,QACViI,GACAE,GACU,kBAAiB9V,KAAKoJ,QAAQmK,mBAAmBuC,gBAK3D9V,KAAKoJ,QAAQkK,gBACfyB,EAAOA,EAAKpH,QACViI,GACAE,GACU,kBAAiB9V,KAAKoJ,QAAQmK,mBAAmBuC,gBAMjE,MAAMC,EAAmBvX,EAAAA,QAAE,OAAQ,CACjC0Q,KAAM1C,EACNqH,MAAO,oBAEHmC,EAAqBxX,EAAAA,QAAE,SAAU,CACrCqV,MAAO,iBACN9S,KAAK0T,GACFwB,EAAoBzX,EAAAA,QAAE,SAAU,CACpCqV,MAAO,gBACN9S,KAAKgU,GAIR,OAFAgB,EAAiB7U,OAAO8U,GAAoB9U,OAAO+U,GAE5CF,EAGTjC,eACEtV,EAAAA,QAAEyU,IAA+B/R,OAAOlB,KAAK8U,YAAY9U,KAAKoJ,QAAQoK,aAAc,IAAK,KAK3FlS,wBAAwBC,GACtB,IAAIC,EAAOhD,EAAAA,QAAEwB,MAAMwB,KAAKnD,IAEnBmD,IACHA,EAAOhD,EAAAA,QAAEwB,MAAMwB,QAGjB,MAAMC,EAAWjD,EAAAA,QAAE8B,OAAO,GAAIvB,GAA2B,iBAAXwC,EAAsBA,EAASC,GACvEmJ,EAAS,IAAI+I,GAAclV,EAAAA,QAAEwB,MAAOyB,GAE1CjD,EAAAA,QAAEwB,MAAMwB,KAAKnD,GAA4B,iBAAXkD,EAAsBA,EAASC,GAEvC,iBAAXD,GAAuBA,EAAOG,MAAM,iCAC7CiJ,EAAOpJ,KAEPoJ,EAAOtB,QASb7K,EAAAA,QAAEmD,UAAUN,GAAG,QAASyR,IAAwBlR,IAC9CA,EAAMC,iBAEN6R,GAAc5R,iBAAiBlB,KAAKpC,EAAAA,QAAEmL,IAAuB,aAG/DnL,EAAAA,QAAEmD,UAAUN,GAAG,QAASwR,IAAuBjR,GACxB,IAAjBA,EAAMsU,SACRtU,EAAMC,sBACNrD,EAAAA,QAAEyU,IAA+BvP,WAAWyS,OAAOC,SAIhC,IAAjBxU,EAAMsU,SACRtU,EAAMC,sBACNrD,EAAAA,QAAEyU,IAA+BvP,WAAWtD,QAAQgW,cAItDnN,YAAW,KACTyK,GAAc5R,iBAAiBlB,KAAKpC,EAAAA,QAAEmL,IAAuB,YAC5D,OAGLnL,EAAAA,QAAEmD,UAAUN,GAAG,UAAW4R,IAA+BrR,IACvD,MAAMyU,EAAW7X,EAAAA,QAAE,UAEE,IAAjBoD,EAAMsU,UACRtU,EAAMC,iBAEFwU,EAASC,GAAG,gBACdD,EAAS9N,WAAW4N,OAAOC,QAE3BC,EAASE,OAAOH,SAIC,IAAjBxU,EAAMsU,UACRtU,EAAMC,iBAEFwU,EAASC,GAAG,eACdD,EAAS9N,WAAWnI,QAAQgW,QAE5BC,EAAS7N,OAAO4N,YAKtB5X,EAAAA,QAAE4H,QAAQ/E,GAAG,QAAQ,KACnBqS,GAAc5R,iBAAiBlB,KAAKpC,EAAAA,QAAEmL,IAAuB,WAQ/DnL,EAAAA,QAAEC,GAAGL,IAAQsV,GAAc5R,iBAC3BtD,EAAAA,QAAEC,GAAGL,IAAM4D,YAAc0R,GACzBlV,EAAAA,QAAEC,GAAGL,IAAM6D,WAAa,WAEtB,OADAzD,EAAAA,QAAEC,GAAGL,IAAQG,GACNmV,GAAc5R,kBCxRvB,MAAM1D,GAAO,eACPC,GAAW,oBACXE,GAAqBC,EAAAA,QAAEC,GAAGL,IAE1BiT,GAAyB,gCACzBmF,GAAwB,uBACxB3D,GAAwB,qCAExBtB,GAAkB,qBAElBxS,GAAU,CACd0X,cAAc,GAQhB,MAAMC,GACJ7W,YAAYI,EAAUwB,GACpBzB,KAAKC,SAAWA,EAChBD,KAAK2F,QAAUnH,EAAAA,QAAE8B,OAAO,GAAIvB,GAAS0C,GAKvCuT,OACExW,EAAAA,QAAEgY,IAAuBvS,IAAI,UAAW,QAAQ8B,OAAOoH,SAAS1J,SAAS8N,IACzE/S,EAAAA,QAAEqU,IAAuBuD,QAG3B9B,QACE9V,EAAAA,QAAEgY,IAAuBnJ,UAAUzJ,YAAY2N,IAE3CvR,KAAK2F,QAAQ8Q,cACfjY,EAAAA,QAAEqU,IAAuBsB,IAAI,IAIjCpQ,SACMvF,EAAAA,QAAEgY,IAAuBhW,SAAS+Q,IACpCvR,KAAKsU,QAELtU,KAAKgV,OAMT1T,wBAAwB8H,GACtB,OAAOpJ,KAAK+B,MAAK,WACf,IAAIP,EAAOhD,EAAAA,QAAEwB,MAAMwB,KAAKnD,IAOxB,GALKmD,IACHA,EAAO,IAAIkV,GAAa1W,KAAMoJ,GAC9B5K,EAAAA,QAAEwB,MAAMwB,KAAKnD,GAAUmD,KAGpB,oBAAoBmV,KAAKvN,GAC5B,MAAM,IAAI3I,MAAO,oBAAmB2I,KAGtC5H,EAAK4H,SASX5K,EAAAA,QAAEmD,UAAUN,GAAG,QAASgQ,IAAwBzP,IAC9CA,EAAMC,iBAEN,IAAIyQ,EAAS9T,EAAAA,QAAEoD,EAAM2Q,eAES,kBAA1BD,EAAO9Q,KAAK,YACd8Q,EAASA,EAAOE,QAAQnB,KAG1BqF,GAAa5U,iBAAiBlB,KAAK0R,EAAQ,aAQ7C9T,EAAAA,QAAEC,GAAGL,IAAQsY,GAAa5U,iBAC1BtD,EAAAA,QAAEC,GAAGL,IAAM4D,YAAc0U,GACzBlY,EAAAA,QAAEC,GAAGL,IAAM6D,WAAa,WAEtB,OADAzD,EAAAA,QAAEC,GAAGL,IAAQG,GACNmY,GAAa5U,kBC7FtB,MAGMvD,GAAqBC,EAAAA,QAAEC,GAAF,OAgBrBmY,GAAqB,WACrBC,GAAoB,UACpBC,GAAwB,cACxBC,GAAuB,aAEvBhY,GAAU,CACdiY,SAAUJ,GACVK,OAAO,EACPC,UAAU,EACVC,YAAY,EACZ9S,MAAO,IACP+S,MAAM,EACNC,KAAM,KACNC,MAAO,KACPC,SAAU,KACVC,YAAa,OACbjL,MAAO,KACPkL,SAAU,KACVnD,OAAO,EACPoD,KAAM,KACN7D,MAAO,MAOT,MAAM8D,GACJ9X,YAAYC,EAASyB,GACnBvB,KAAK2F,QAAUpE,EACfvB,KAAK4X,oBAELpZ,EAAAA,QAAE,QAAQW,QAAQX,EAAAA,QAAEyC,MA9CJ,oBAmDlB4W,SACE,MAAMC,EAAQtZ,EAAAA,QAAE,8EAEhBsZ,EAAMtW,KAAK,WAAYxB,KAAK2F,QAAQuR,UACpCY,EAAMtW,KAAK,YAAaxB,KAAK2F,QAAQyR,MAEjCpX,KAAK2F,QAAQkO,OACfiE,EAAMrU,SAASzD,KAAK2F,QAAQkO,OAG1B7T,KAAK2F,QAAQtB,OAA+B,KAAtBrE,KAAK2F,QAAQtB,OACrCyT,EAAMtW,KAAK,QAASxB,KAAK2F,QAAQtB,OAGnC,MAAM0T,EAAcvZ,EAAAA,QAAE,8BAEtB,GAA0B,MAAtBwB,KAAK2F,QAAQ2R,MAAe,CAC9B,MAAMU,EAAaxZ,EAAAA,QAAE,WAAWiF,SAAS,gBAAgBiD,KAAK,MAAO1G,KAAK2F,QAAQ2R,OAAO5Q,KAAK,MAAO1G,KAAK2F,QAAQ4R,UAElF,MAA5BvX,KAAK2F,QAAQ6R,aACfQ,EAAW9T,OAAOlE,KAAK2F,QAAQ6R,aAAarT,MAAM,QAGpD4T,EAAY7W,OAAO8W,GAerB,GAZyB,MAArBhY,KAAK2F,QAAQ0R,MACfU,EAAY7W,OAAO1C,EAAAA,QAAE,SAASiF,SAAS,QAAQA,SAASzD,KAAK2F,QAAQ0R,OAG7C,MAAtBrX,KAAK2F,QAAQ4G,OACfwL,EAAY7W,OAAO1C,EAAAA,QAAE,cAAciF,SAAS,WAAW1C,KAAKf,KAAK2F,QAAQ4G,QAG9C,MAAzBvM,KAAK2F,QAAQ8R,UACfM,EAAY7W,OAAO1C,EAAAA,QAAE,aAAauC,KAAKf,KAAK2F,QAAQ8R,WAG5B,GAAtBzX,KAAK2F,QAAQ2O,MAAe,CAC9B,MAAM2D,EAAazZ,EAAAA,QAAE,mCAAmCkI,KAAK,OAAQ,UAAUjD,SAAS,mBAAmBiD,KAAK,aAAc,SAASxF,OAAO,2CAEpH,MAAtBlB,KAAK2F,QAAQ4G,OACf0L,EAAW9P,YAAY,gBAGzB4P,EAAY7W,OAAO+W,GAGrBH,EAAM5W,OAAO6W,GAEY,MAArB/X,KAAK2F,QAAQ+R,MACfI,EAAM5W,OAAO1C,EAAAA,QAAE,8BAA8BuC,KAAKf,KAAK2F,QAAQ+R,OAGjElZ,EAAAA,QAAEwB,KAAKkY,mBAAmBC,QAAQL,GAElC,MAAMlS,EAAQpH,EAAAA,QAAE,QAEhBoH,EAAMzG,QAAQX,EAAAA,QAAEyC,MA5GG,uBA6GnB6W,EAAMA,MAAM,QAER9X,KAAK2F,QAAQwR,YACfW,EAAMzW,GAAG,mBAAmB,WAC1B7C,EAAAA,QAAEwB,MAAMqE,MAAM,KAAKlD,SACnByE,EAAMzG,QAAQX,EAAAA,QAAEyC,MAjHD,0BAwHrBiX,kBACE,OAAIlY,KAAK2F,QAAQqR,UAAYJ,GAvHI,2BA2H7B5W,KAAK2F,QAAQqR,UAAYH,GA1HG,0BA8H5B7W,KAAK2F,QAAQqR,UAAYF,GA7HO,8BAiIhC9W,KAAK2F,QAAQqR,UAAYD,GAhIM,kCAgInC,EAKFa,oBACE,GAAyC,IAArCpZ,EAAAA,QAAEwB,KAAKkY,mBAAmBxP,OAAc,CAC1C,MAAM0P,EAAY5Z,EAAAA,QAAE,WAAWkI,KAAK,KAAM1G,KAAKkY,kBAAkBvK,QAAQ,IAAK,KAC1E3N,KAAK2F,QAAQqR,UAAYJ,GAC3BwB,EAAU3U,SAvIW,oBAwIZzD,KAAK2F,QAAQqR,UAAYH,GAClCuB,EAAU3U,SAxIU,mBAyIXzD,KAAK2F,QAAQqR,UAAYF,GAClCsB,EAAU3U,SAzIc,uBA0IfzD,KAAK2F,QAAQqR,UAAYD,IAClCqB,EAAU3U,SA1Ia,sBA6IzBjF,EAAAA,QAAE,QAAQ0C,OAAOkX,GAGfpY,KAAK2F,QAAQsR,MACfzY,EAAAA,QAAEwB,KAAKkY,mBAAmBzU,SAAS,SAEnCjF,EAAAA,QAAEwB,KAAKkY,mBAAmBtU,YAAY,SAM1CtC,wBAAwB+W,EAAQ9W,GAC9B,OAAOvB,KAAK+B,MAAK,WACf,MAAMN,EAAWjD,EAAAA,QAAE8B,OAAO,GAAIvB,GAASwC,GACjCuW,EAAQ,IAAIH,GAAOnZ,EAAAA,QAAEwB,MAAOyB,GAEnB,WAAX4W,GACFP,EAAMO,SAWd7Z,EAAAA,QAAEC,GAAF,OAAakZ,GAAO7V,iBACpBtD,EAAAA,QAAEC,GAAF,OAAWuD,YAAc2V,GACzBnZ,EAAAA,QAAEC,GAAF,OAAWwD,WAAa,WAEtB,OADAzD,EAAAA,QAAEC,GAAF,OAAaF,GACNoZ,GAAO7V,kBC/LhB,MAAM1D,GAAO,WACPC,GAAW,eACXE,GAAqBC,EAAAA,QAAEC,GAAGL,IAG1Bka,GAA4B,OAE5BvZ,GAAU,CACdwZ,QAAQ9M,GACCA,EAET+M,UAAU/M,GACDA,GASX,MAAMgN,GACJ5Y,YAAYC,EAASyB,GACnBvB,KAAK2F,QAAUpE,EACfvB,KAAKC,SAAWH,EAEhBE,KAAKoB,QAKP2C,OAAO0H,GACLA,EAAKtL,QAAQ,MAAMgI,YAAYmQ,IAC1B9Z,EAAAA,QAAEiN,GAAMiN,KAAK,WAKlB1Y,KAAK2Y,MAAMlN,GAJTzL,KAAK4Y,QAAQpa,EAAAA,QAAEiN,IAOnBkN,MAAMlN,GACJzL,KAAK2F,QAAQ4S,QAAQ3X,KAAK6K,GAG5BmN,QAAQnN,GACNzL,KAAK2F,QAAQ6S,UAAU5X,KAAK6K,GAK9BrK,QACE,MAAMyX,EAAkB7Y,KAAKC,SAE7B4Y,EAAgB/X,KAAK,0BAA0BX,QAAQ,MAAMgI,YAAYmQ,IACzEO,EAAgBxX,GAAG,SAAU,kBAAkBO,IAC7C5B,KAAK+D,OAAOvF,EAAAA,QAAEoD,EAAM6D,YAMxBnE,wBAAwBC,GACtB,OAAOvB,KAAK+B,MAAK,WACf,IAAIP,EAAOhD,EAAAA,QAAEwB,MAAMwB,KAAKnD,IAEnBmD,IACHA,EAAOhD,EAAAA,QAAEwB,MAAMwB,QAGjB,MAAMC,EAAWjD,EAAAA,QAAE8B,OAAO,GAAIvB,GAA2B,iBAAXwC,EAAsBA,EAASC,GACvEmJ,EAAS,IAAI8N,GAASja,EAAAA,QAAEwB,MAAOyB,GAErCjD,EAAAA,QAAEwB,MAAMwB,KAAKnD,GAA4B,iBAAXkD,EAAsBA,EAASC,GAE9C,SAAXD,GACFoJ,EAAOpJ,SAWf/C,EAAAA,QAAE4H,QAAQ/E,GAAG,QAAQ,KACnBoX,GAAS3W,iBAAiBlB,KAAKpC,EAAAA,QApFJ,iCA4F7BA,EAAAA,QAAEC,GAAGL,IAAQqa,GAAS3W,iBACtBtD,EAAAA,QAAEC,GAAGL,IAAM4D,YAAcyW,GACzBja,EAAAA,QAAEC,GAAGL,IAAM6D,WAAa,WAEtB,OADAzD,EAAAA,QAAEC,GAAGL,IAAQG,GACNka,GAAS3W,kBCpGlB,MAAM1D,GAAO,WACPC,GAAW,eAEXE,GAAqBC,EAAAA,QAAEC,GAAGL,IAM1B0a,GAAc,YAEdC,GAAyB,gBACzBC,GAAgB,aAChBrP,GAAuB,2BAEvB4H,GAAkB,YAClBC,GAAwB,kBAGxBzS,GAAU,CACdI,QAAU,qCACV4D,eAAgB,IAChBkW,WAAW,EACXC,eAAe,EACfC,sBAAuB,4BAOzB,MAAMC,GACJvZ,YAAYC,EAASyB,GACnBvB,KAAK2F,QAAUpE,EACfvB,KAAKC,SAAWH,EAKlBuJ,OACE7K,EAAAA,QAAG,qCAA2DyF,IAAI,UAAW,SAC7EjE,KAAKwO,kBAGP3K,OAAOwV,EAAcC,GACnB,MAAMC,EAAgB/a,EAAAA,QAAEyC,MAxCJ,yBA0CpB,GAAIjB,KAAK2F,QAAQsT,UAAW,CAC1B,MAAMO,EAAaF,EAAS/Q,SAASyQ,IAAe5Y,QAC9CqZ,EAAeD,EAAW1Y,KAAKiY,IAAwB3Y,QAC7DJ,KAAKwD,SAASiW,EAAcD,GAG9BF,EAAS7V,SAAS+N,IAClB6H,EAAa3P,OAAO5F,UAAU9D,KAAK2F,QAAQ5C,gBAAgB,KACzDuW,EAAS7V,SAAS8N,IAClB/S,EAAAA,QAAEwB,KAAKC,UAAUd,QAAQoa,MAGvBvZ,KAAK2F,QAAQuT,eACflZ,KAAK0Z,iBAITlW,SAAS6V,EAAcC,GACrB,MAAMK,EAAiBnb,EAAAA,QAAEyC,MA3DJ,0BA6DrBqY,EAAS1V,YAAa,6BACtByV,EAAa3P,OAAO/F,QAAQ3D,KAAK2F,QAAQ5C,gBAAgB,KACvDvE,EAAAA,QAAEwB,KAAKC,UAAUd,QAAQwa,GACzBN,EAAavY,KAAM,8BAA+C6C,UAClE0V,EAAavY,KAAKkY,IAAepV,YAAY2N,OAIjDxN,OAAOnC,GACL,MAAMgY,EAAkBpb,EAAAA,QAAEoD,EAAM2Q,eAC1BsH,EAAUD,EAAgB5Q,SAEhC,IAAIqQ,EAAeQ,EAAQ/Y,KAAM,mBAEjC,IAAKuY,EAAa/C,GAAGyC,MACdc,EAAQvD,GAAGwC,MACdO,EAAeQ,EAAQ7Q,SAASlI,KAAM,qBAGnCuY,EAAa/C,GAAGyC,KACnB,OAIJnX,EAAMC,iBAEN,MAAMyX,EAAWM,EAAgBzZ,QAAQ2Y,IAAa1Y,QACvCkZ,EAAS9Y,SAAS+Q,IAG/BvR,KAAKwD,SAAShF,EAAAA,QAAE6a,GAAeC,GAE/BtZ,KAAK6D,OAAOrF,EAAAA,QAAE6a,GAAeC,GAMjC9K,kBACE,MAAMsL,OAAyCrM,IAA7BzN,KAAKC,SAASyG,KAAK,MAAuB,IAAG1G,KAAKC,SAASyG,KAAK,QAAU,GAC5FlI,EAAAA,QAAEmD,UAAUN,GAAG,QAAU,GAAEyY,IAAY9Z,KAAK2F,QAAQxG,WAAWyC,IAC7D5B,KAAK+D,OAAOnC,MAIhB8X,iBACMlb,EAAAA,QAAE,QAAQgC,SAhGmB,qBAiG/BhC,EAAAA,QAAEwB,KAAK2F,QAAQwT,uBAAuBtH,SAAS,UAMnDvQ,wBAAwBC,GACtB,OAAOvB,KAAK+B,MAAK,WACf,IAAIP,EAAOhD,EAAAA,QAAEwB,MAAMwB,KAAKnD,IACxB,MAAMoD,EAAWjD,EAAAA,QAAE8B,OAAO,GAAIvB,GAASP,EAAAA,QAAEwB,MAAMwB,QAE1CA,IACHA,EAAO,IAAI4X,GAAS5a,EAAAA,QAAEwB,MAAOyB,GAC7BjD,EAAAA,QAAEwB,MAAMwB,KAAKnD,GAAUmD,IAGV,SAAXD,GACFC,EAAKD,SAWb/C,EAAAA,QAAE4H,QAAQ/E,GAvImB,qBAuIK,KAChC7C,EAAAA,QAAEmL,IAAsB5H,MAAK,WAC3BqX,GAAStX,iBAAiBlB,KAAKpC,EAAAA,QAAEwB,MAAO,cAS5CxB,EAAAA,QAAEC,GAAGL,IAAQgb,GAAStX,iBACtBtD,EAAAA,QAAEC,GAAGL,IAAM4D,YAAcoX,GACzB5a,EAAAA,QAAEC,GAAGL,IAAM6D,WAAa,WAEtB,OADAzD,EAAAA,QAAEC,GAAGL,IAAQG,GACN6a,GAAStX,kBC8Hf,SAAUtD,EAAG4H,GAKZ,IAwCW2T,EAuCAC,EA/EPC,EAAY,CACZC,sCAAuC,GAGvCC,uBAAwB,EAGxBC,yBAA0B,wBAC1BC,sBAAuB,qBACvBC,uBAAwB,SAExBC,YAAa,CACTC,WAAY,qBACZC,IAAK,cACLC,0BAA2B,uBAC3BC,qBAAsB,kBACtBC,+BAAgC,6BAGpCC,gBAAiB,CACbC,KAAM,EACNC,MAAO,GAGXC,OAAQ,CACJC,MAAO,gBACPC,mBAAoB,2BACpBC,mBAAoB,2BACpBC,cAAe,uBACfC,UAAW,oBACXC,QAAS,kBACTC,WAAY,gBACZC,UAAW,mBACXC,WAAY,oBACZC,YAAa,qBACbC,cAAe,mBAqCvB,SAASC,EAAgBC,GACX7b,KAEN8b,IAAMD,EA0Vd,SAASE,EAAcF,GACT7b,KAEN8b,IAAMD,EAmEd,SAASG,EAAeH,GACV7b,KAEN8b,IAAMD,EA+Td,SAASI,EAAqBC,GAC1B,IAAIJ,EAAM9b,KAEV8b,EAAII,eAAiBA,EACrBJ,EAAIK,WAAa3d,EAAEC,GAAG2d,cAAcC,iBAEpCP,EAAIQ,wBAA0B,EAC9BR,EAAIS,qBAAsB,EAC1BT,EAAIU,iBAAkB,EACtBV,EAAIW,oCAAqC,EACzCX,EAAIY,eAAgB,EACpBZ,EAAIa,gBAAkB,EAEtBb,EAAIc,eAAiB,IAAIZ,EAAeF,GACxCA,EAAIe,cAAgB,IAAId,EAAcD,GACtCA,EAAIgB,gBAAkB,IAAIlB,EAAgBE,GApxBnC/B,EA2BR,qBALCvb,EAAEC,GAAGsb,GAAM,SAAUtb,EAAIse,GACrB,IAtBqBC,EAAMC,EAAWC,EAClCC,EAqBAC,EAAYL,GAAmB9C,EAAUe,OAAOW,cACpD,OAAOld,EAAKuB,KAAKqd,KAAKD,GAvBDJ,EAuBqBve,EApBnC,WACH,IAAI6e,EAAMtd,KAAM6P,EAAO0N,UACvB,SAASC,IACAN,GACDF,EAAKS,MAAMH,EAAKzN,GAEpBsN,EAAU,KAGVA,EACAO,aAAaP,GACND,GACPF,EAAKS,MAAMH,EAAKzN,GAGpBsN,EAAUlU,WAAWuU,EAASP,GAAa,QAKEjd,KAAKb,QAAQ4a,KAe3DC,EAiVT4B,EAAgB+B,WAhVZC,aAAe,SAAUxU,GACbpJ,KAEN6d,qBAAqBzU,GAFfpJ,KAGN8d,kBAAkB1U,IAG1B4Q,EAAE+D,qBAAuB,WACrB,IAMIC,EACAC,EACAC,EAPApC,EADM9b,KACI8b,IACVqC,EAAMrC,EAAIc,eACVwB,EAAKnE,EAAUe,OAEfqD,GAAW,EAKfvC,EAAIwC,kBACCjd,GAAG+c,EAAG1C,aAAa,SAAU7M,GAC1BwP,GAAW,EACXJ,EAA2BnC,EAAIQ,wBAC/B0B,EAAcnP,EAAE0P,cAAcC,eAAe,GAAGC,SAEnDpd,GAAG+c,EAAG5C,WAAW,WACd6C,GAAW,KAEdhd,GAAG+c,EAAG3C,YAAY,SAAU5M,GACzB,GAAKwP,EAAL,CAIA,IAKIK,EAJAC,EADa9P,EAAE0P,cAAcC,eAAe,GAAGC,MAC3BT,EACpBlC,EAAI8C,MACJD,GAAQA,IAIZT,EAAaD,EAA2BU,GACvB,EACbT,EAAa,GAEbQ,EAASP,EAAIU,YACTX,EAAaQ,IACbR,EAAaQ,IAGrB5C,EAAIQ,wBAA0B4B,EAE9B,IAAIY,EAAchD,EAAI8C,IAAM,QAAU,OACtC9C,EAAIwC,kBAAkBra,IAAI6a,EAAaX,EAAIY,iCAC3CZ,EAAIa,wCAIhBhF,EAAEiF,uBAAyB,WACvB,IAQIP,EARAQ,EAAMlf,KACN8b,EAAMoD,EAAIpD,IACVqC,EAAMrC,EAAIc,eACVuC,EAA0BrD,EAAIS,oBAC9B6C,EAAe,CACXC,sBAAsB,GA2C9B,OAtCAH,EAAII,mBACJJ,EAAIK,2BAOAzD,EAAIS,qBAEJmC,EAASP,EAAIU,YAEWV,EAAIqB,kBAAkB,CAC1CC,kBAAkB,MAIlBtB,EAAIa,mCAEAlD,EAAI8C,IACA9C,EAAI4D,yBAA2BhB,GAC/BP,EAAIwB,8BAA8BjB,GAGlC5C,EAAIQ,wBAA0BoC,GAC9BP,EAAIyB,+BAA+BlB,IAK/CU,EAAaC,sBAAuB,GAE7BF,IAEPrD,EAAIQ,wBAA0B,EAC9B6B,EAAI0B,kCAGDT,GAGXpF,EAAE6D,qBAAuB,SAAU9d,GAC/B,IAGI+f,EACAC,EACAC,EACAC,EALAnE,EADM9b,KACI8b,IACVI,EAAiBJ,EAAII,eAMzBJ,EAAIoE,YAAa,EAEbpE,EAAI8C,KACJ1C,EAAezY,SAASwW,EAAUM,YAAYE,KAG9CqB,EAAIqE,iBACJjE,EAAezY,SAASwW,EAAUM,YAAYC,YAGlDsB,EAAIsE,gBAAkBlE,EAAepb,KAAK,iCAC1Cgf,EAAahE,EAAIsE,gBAAgB7J,OACjCwJ,EAAcjE,EAAIsE,gBAAgB5X,OAG9BzI,EAASsgB,mBACTL,EAAwBF,EAAWhf,KAAK,IAAMmZ,EAAUM,YAAYG,4BAGpE3a,EAASugB,oBACTL,EAAyBF,EAAYjf,KAAK,IAAMmZ,EAAUM,YAAYG,4BAGtEsF,GAAyBA,EAAsBtX,OAC/CoX,EAAWrc,SAASwW,EAAUM,YAAYK,gCAE1CoF,EAAwBF,EAGxBG,GAA0BA,EAAuBvX,OACjDqX,EAAYtc,SAASwW,EAAUM,YAAYK,gCAE3CqF,EAAyBF,EAG7BjE,EAAIwC,kBAAoBpC,EAAepb,KAAK,mCAC5Cgb,EAAIyE,QAAUrE,EAAepb,KAAK,aAG7Bgb,EAAIyE,QAAQ7X,SACboT,EAAIyE,QAAUrE,EAAepb,KAAK,cAE9Bgb,EAAIyE,QAAQ7X,SACZoT,EAAIoE,YAAa,IAIzBpE,EAAI0E,kBAAoB1E,EAAIyE,QAAQzf,KAAK,QAEzCgb,EAAI2E,gBAAkB3E,EAAIY,cAAgBoD,EAAaC,EACvDjE,EAAI4E,2BAA6B5E,EAAIY,cAAgBsD,EAAwBC,EAC7EnE,EAAI6E,iBAAmB7E,EAAIY,cAAgBqD,EAAcD,EACzDhE,EAAI8E,4BAA8B9E,EAAIY,cAAgBuD,EAAyBD,EAC/ElE,EAAI+E,cAAgB/E,EAAI2E,gBAAgBK,IAAIhF,EAAI6E,kBAEhD7E,EAAIiF,KAAOviB,EAAE4H,IAGjB4T,EAAEsF,iBAAmB,WACjB,IAAIJ,EAAMlf,KACN8b,EAAMoD,EAAIpD,IAEdA,EAAIkF,SAAWlF,EAAIiF,KAAK5c,QACxB2X,EAAImF,0BAA4BnF,EAAI2E,gBAAgBS,aAAepF,EAAI6E,iBAAiBO,aAExFhC,EAAIiC,yBACJjC,EAAIkC,4BAGRpH,EAAE8D,kBAAoB,SAAU/d,GAC5B,IAAImf,EAAMlf,KACN8b,EAAMoD,EAAIpD,IACVuF,EAAMvF,EAAIe,cACVuB,EAAKnE,EAAUe,OACfsG,EAAkBlD,EAAGzC,cAAgBG,EAAIK,WAEzCpc,EAASwhB,eACTrC,EAAInB,uBAGRjC,EAAI4E,2BACCc,IAAI,YACJngB,GAAG+c,EAAG/C,WAAW,SAAUxM,GAAKwS,EAAII,4CAA4C7gB,KAAKygB,EAAKxS,MAC1FxN,GAAG+c,EAAG9C,SAAS,SAAUzM,GAAKwS,EAAIK,0CAA0C9gB,KAAKygB,EAAKxS,MACtFxN,GAAG+c,EAAGnD,OAAO,SAAUpM,GAAKwS,EAAIM,wCAAwC/gB,KAAKygB,EAAKxS,MAEvFiN,EAAI8E,4BACCY,IAAI,YACJngB,GAAG+c,EAAG/C,WAAW,SAAUxM,GAAKwS,EAAIO,6CAA6ChhB,KAAKygB,EAAKxS,MAC3FxN,GAAG+c,EAAG9C,SAAS,SAAUzM,GAAKwS,EAAIQ,2CAA2CjhB,KAAKygB,EAAKxS,MACvFxN,GAAG+c,EAAGnD,OAAO,SAAUpM,GAAKwS,EAAIS,yCAAyClhB,KAAKygB,EAAKxS,MAEpFiN,EAAIiG,iBACJjG,EAAI0E,kBACC1f,KAAK,wBACL0gB,IAAIpD,EAAGnD,OACP5Z,GAAG+c,EAAGnD,MAAOa,EAAIiG,iBAGtBhiB,EAASiiB,wBACT9C,EAAI+C,4BAGRnG,EAAIiF,KACCS,IAAIF,GACJY,oBAAmB,SAAUrT,GAAKwS,EAAIc,mBAAmBvhB,KAAKygB,EAAKxS,KAAOyS,GAE/E9iB,EAAE,QAAQ6C,GAAG4Y,EAAUe,OAAOI,cAAeU,EAAIgB,gBAAgBmC,uBAAuB5B,KAAKvB,EAAIgB,mBAGrG9C,EAAEiI,0BAA4B,WAC1B,IAAIG,EAASzgB,SAAS0gB,cAAc,UACpCD,EAAO/P,GAAK,oCACZ+P,EAAO1d,MAAM4d,QAAU,uIACvBF,EAAOG,OAAS,WACZ,IAAIpF,EAEJ,SAASqF,IACL,IACIhkB,EAAE4H,GAAQjH,QAAQ,UAClBge,EAAU,KACZ,MAAOtO,KAGbuT,EAAOK,cAAcC,iBAAiB,UAAU,WACxCvF,GACAO,aAAaP,GAGjBA,EAAUlU,WAAWuZ,EAAc,SAI3C7gB,SAAS+V,KAAKiL,YAAYP,IAG9BpI,EAAEmH,uBAAyB,WACvB,IACIrF,EADM9b,KACI8b,IACV8G,EAAoB9G,EAAII,eAAerb,IAAI,GAAGgiB,wBAMlD/G,EAAIgH,oBAAsBF,EAAkBze,OAAUye,EAAkBha,MAAQga,EAAkBja,KAClGmT,EAAIgH,oBAAsBhH,EAAIgH,oBAAsBhH,EAAIa,gBAExDb,EAAIsE,gBAAgBjc,MAAM2X,EAAIgH,sBAGlC9I,EAAE+I,4CAA8C,WAC5C,IACIjH,EADM9b,KACI8b,IAEdA,EAAIsE,gBAAgBjc,MAAM2X,EAAIgH,sBAGlC9I,EAAEgJ,6CAA+C,WAC7C,IACIlH,EADM9b,KACI8b,IAEdA,EAAIsE,gBAAgBjc,MAAM2X,EAAIgH,oBAAsBhH,EAAImF,4BAG5DjH,EAAEoH,yBAA2B,WACzB,IACItF,EADM9b,KACI8b,IACVmH,EAASnH,EAAIyE,QAAQzf,KAAK,QAE9Bgb,EAAIoH,sBAAwB,EAExBD,EAAOva,SAEPua,EAAOlhB,MAAK,WACR,IAAIohB,EAAM3kB,EAAEwB,MACRojB,EAAc,EAEdtH,EAAIoE,aACJkD,EAAcrS,SAASoS,EAAIlf,IAAI,eAAgB,IAAM8M,SAASoS,EAAIlf,IAAI,gBAAiB,KAG3F6X,EAAIoH,uBAA0BC,EAAIjC,aAAekC,KAGrDtH,EAAIoH,uBAAyB,EAMzBpH,EAAIoH,sBAAwBpH,EAAIgH,sBAChChH,EAAIoH,sBAAwBpH,EAAIgH,sBAIxChH,EAAIwC,kBAAkBna,MAAM2X,EAAIoH,wBAGpClJ,EAAEuF,yBAA2B,WACzB,IAAIL,EAAMlf,KACN8b,EAAMoD,EAAIpD,IACVuH,EAAkBvH,EAAIoH,sBAAwBpH,EAAIgH,oBAElDO,IAAoBvH,EAAIS,qBACxBT,EAAI+E,cAAc7a,OAClB8V,EAAIS,qBAAsB,IAClB8G,GAAmBvH,EAAIS,sBAC/BT,EAAI+E,cAAc9a,OAClB+V,EAAIS,qBAAsB,GAG1BT,EAAIS,oBACJ2C,EAAI8D,+CAEJ9D,EAAI6D,+CAgBf,SAAU/I,GACPA,EAAE2H,wCAA0C,WAC9B3hB,KACI8b,IAEVc,eAAe+C,iCAGvB3F,EAAE8H,yCAA2C,WAC/B9hB,KACI8b,IAEVc,eAAegD,kCAGvB5F,EAAEyH,4CAA8C,WAC5C,IACI3F,EADM9b,KACI8b,IAEdA,EAAI4E,2BAA2Blf,KAAKyY,EAAUI,uBAAuB,GACrEyB,EAAIc,eAAe0G,qCAGvBtJ,EAAE4H,6CAA+C,WAC7C,IACI9F,EADM9b,KACI8b,IAEdA,EAAI8E,4BAA4Bpf,KAAKyY,EAAUI,uBAAuB,GACtEyB,EAAIc,eAAe2G,sCAGvBvJ,EAAE0H,0CAA4C,WAChC1hB,KACI8b,IAEV4E,2BAA2Blf,KAAKyY,EAAUI,uBAAuB,IAGzEL,EAAE6H,2CAA6C,WACjC7hB,KACI8b,IAEV8E,4BAA4Bpf,KAAKyY,EAAUI,uBAAuB,IAG1EL,EAAEmI,mBAAqB,WACnB,IACIrG,EADM9b,KACI8b,IACV0H,EAAc1H,EAAIiF,KAAK5c,QAE3B,GAAIqf,IAAgB1H,EAAIkF,SACpB,OAAO,EAGXlF,EAAIkF,SAAWwC,EACf1H,EAAIgB,gBAAgBmC,0BAvD3B,CA0DClD,EAAc4B,WAYf,SAAU3D,GAEPA,EAAEsJ,kCAAoC,WAClC,IAAInF,EAAMne,KACN8b,EAAMqC,EAAIrC,IAEd7S,YAAW,WACH6S,EAAIQ,yBAA2B6B,EAAIU,cAClC/C,EAAI4E,2BAA2Blf,KAAKyY,EAAUI,wBAI9C8D,EAAIwB,iCACLxB,EAAImF,sCAETrJ,EAAUC,wCAGjBF,EAAEuJ,mCAAqC,WACnC,IAAIpF,EAAMne,KACN8b,EAAMqC,EAAIrC,IAEd7S,YAAW,WACH6S,EAAIQ,yBAA2B,IAC9BR,EAAI8E,4BAA4Bpf,KAAKyY,EAAUI,wBAI/C8D,EAAIyB,kCACLzB,EAAIoF,uCAETtJ,EAAUC,wCAGjBF,EAAEyJ,iCAAmC,SAAU/E,GAC3C,IACI5C,EADM9b,KACI8b,IAEdA,EAAIQ,yBAA4BR,EAAIgH,oBAAsB7I,EAAUE,uBAChE2B,EAAIQ,wBAA0BoC,EAC9B5C,EAAIQ,wBAA0BoC,EACvB5C,EAAIU,kBANLxc,KAOF0jB,oCAAoCzJ,EAAUY,gBAAgBC,MAE9DgB,EAAIQ,wBAA0BoC,IAC9B5C,EAAIQ,wBAA0BoC,KAK1C1E,EAAE2J,sBAAwB,WACtB,IACI7H,EADM9b,KACI8b,IAETA,EAAIW,oCAAuCX,EAAIS,qBAIpDT,EAAI2E,gBAAgBhd,SAASwW,EAAUM,YAAYI,uBAGvDX,EAAE4J,uBAAyB,WACvB,IACI9H,EADM9b,KACI8b,IAETA,EAAIW,oCAAuCX,EAAIS,qBAIpDT,EAAI6E,iBAAiBld,SAASwW,EAAUM,YAAYI,uBAGxDX,EAAE6J,qBAAuB,WACrB,IACI/H,EADM9b,KACI8b,IAETA,EAAIW,oCAAuCX,EAAIS,qBAIpDT,EAAI2E,gBAAgB7c,YAAYqW,EAAUM,YAAYI,uBAG1DX,EAAE8J,sBAAwB,WACtB,IACIhI,EADM9b,KACI8b,IAETA,EAAIW,oCAAuCX,EAAIS,qBAIpDT,EAAI6E,iBAAiB/c,YAAYqW,EAAUM,YAAYI,uBAG3DX,EAAE6E,UAAY,WACV,IACI/C,EADM9b,KACI8b,IAEd,OAAOA,EAAIS,oBAAuBT,EAAIgH,oBAAsBhH,EAAIoH,sBAAwBpH,EAAImF,0BAA6B,GAG7HjH,EAAE+E,8BAAgC,WAC9B,IACIjD,EADM9b,KACI8b,IAEd,OAAwC,IAAhCA,EAAIQ,wBAAiC,IAAMR,EAAIQ,wBAA0B,MAGrFtC,EAAE2F,8BAAgC,WAC9B,IAAIxB,EAAMne,KACN8b,EAAMqC,EAAIrC,IACV4C,EAASP,EAAIU,YAOjB,OALAV,EAAIsF,iCAAiC/E,GACrCP,EAAI0B,iCACJ1B,EAAI2F,wBAGIhI,EAAIQ,0BAA4BoC,GAG5C1E,EAAE4F,+BAAiC,SAAUlB,GACzC,IAAIP,EAAMne,KACN8b,EAAMqC,EAAIrC,IAoBd,OAjBI4C,EACA5C,EAAIQ,wBAA0BoC,GAE9B5C,EAAIQ,yBAA4BR,EAAIgH,oBAAsB7I,EAAUE,uBAEhE2B,EAAIQ,wBAA0B,EAC9BR,EAAIQ,wBAA0B,EACvBR,EAAIU,iBACX2B,EAAIuF,oCAAoCzJ,EAAUY,gBAAgBE,QAI1EoD,EAAI0B,iCACJ1B,EAAI0F,uBAIoC,IAAhC/H,EAAIQ,yBAGhBtC,EAAEgF,iCAAmC,WACjC,IAAIb,EAAMne,KACN8b,EAAMqC,EAAIrC,IAEd,GAAKA,EAAIW,oCAAuCX,EAAIS,oBAApD,CAIA,GAAIT,EAAIQ,yBAA2B,EAG/B,OAFA6B,EAAIyF,8BACJzF,EAAI0F,uBAIR,GAAI/H,EAAIQ,yBAA2B6B,EAAIU,YAGnC,OAFAV,EAAIwF,6BACJxF,EAAI2F,wBAIR3F,EAAI0F,uBACJ1F,EAAI2F,0BAGR9J,EAAEwF,kBAAoB,WAClB,IAEIuE,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAEAC,EAXApG,EAAMne,KACN8b,EAAMqC,EAAIrC,IAYd,GAAKA,EAAIS,sBAILT,EAAIqE,iBACJ6D,EAAmBlI,EAAIyE,QAAQzf,KAAK,0BACf4H,SACjBqb,EAAaC,EAAiBhb,UAGlC+a,EAAajI,EAAIyE,QAAQzf,KAAK,aAG7BijB,GAAeA,EAAWrb,QAA/B,CAgBA,GAZA6b,EAAwBzI,EAAI6E,iBAAiBO,aAC7CkD,EAAiBL,EAAW7C,aAO5BgD,GADAD,EAAmBF,EAAWlb,SAASF,KAAOmT,EAAIsE,gBAAgBvX,SAASF,MACpCyb,EAEvCD,EAAoBrI,EAAIgH,oBAAsByB,EAE1CzI,EAAI8C,IAAK,CAGT,GAFuB9C,EAAI2E,gBAAgBS,aAEvC+C,EAAmB,EAGnB,OAFAnI,EAAIQ,yBAA2B2H,EAC/B9F,EAAI0B,kCACG,EAEP,GAAIqE,EAAoBC,EAGpB,OAFArI,EAAIQ,yBAA4B4H,EAAoBC,EAAsB,EAAII,EAC9EpG,EAAI0B,kCACG,MAGZ,CACH,GAAIqE,EAAoBC,EAMpB,OALAE,EAAgBH,EAAoBC,EAAoBI,EAExDF,IADAC,EAAiBxI,EAAIgH,oBAAsB,GACRsB,EAAiB,EACpDtI,EAAIQ,yBAA2B+H,EAC/BlG,EAAI0B,kCACG,EAGP,GADuB/D,EAAI2E,gBAAgBS,aACvC+C,EAAmB,EAInB,OAHAK,EAAiBxI,EAAIgH,oBAAsB,EAC3ChH,EAAIQ,0BAA6B2H,EAAoBK,EAAkBF,EAAiB,EACxFjG,EAAI0B,kCACG,EAKnB,OAAO,IAGX7F,EAAE0J,oCAAsC,SAAUc,GAC9C,IACI1I,EADM9b,KACI8b,IACV2I,GAAkB3I,EAAIQ,wBACtBoI,EAAgB,EAIpB5I,EAAI0E,kBAAkBze,MAAK,WACvB,IAAI4iB,EAAWnmB,EAAEwB,MAAMmE,QAIvB,IAFAugB,GAAiBC,GAEGF,EAEhB,OADA3I,EAAIQ,wBAA2BkI,IAAmBvK,EAAUY,gBAAgBE,QAAW2J,EAAgBC,IAAaD,GAC7G,MAMnB1K,EAAE6F,+BAAiC,WAC/B,IAGI+E,EAHAzG,EAAMne,KACN8b,EAAMqC,EAAIrC,IACV4C,EAASP,EAAIU,YAGb/C,EAAIQ,wBAA0B,EAC9BR,EAAIQ,wBAA0B,EACvBR,EAAIQ,wBAA0BoC,IACrC5C,EAAIQ,wBAA0BoC,GAGlC5C,EAAIQ,wBAA0BR,EAAIQ,wBAA0B,EAC5DsI,EAAiBzG,EAAIY,gCAErBZ,EAAI0G,qBAAsB,EAE1B,IAAIC,EAAYhJ,EAAI8C,IAAM,CAAEhW,MAAOgc,GAAmB,CAAEjc,KAAMic,GAE9D9I,EAAIwC,kBAAkB5U,OAAOkF,QAAQkW,EAAW,QAAQ,WACpD,IAAIC,EAAY5G,EAAIU,YAEpBV,EAAI0G,qBAAsB,EAItB/I,EAAIQ,wBAA0ByI,GAC9B5G,EAAIsF,iCAAiCsB,GAErCD,EAAYhJ,EAAI8C,IAAM,CAAEhW,MAAOuV,EAAIY,iCAAoC,CAAEpW,KAAMwV,EAAIY,iCAEnFjD,EAAIwC,kBAAkB5U,OAAOkF,QAAQkW,EAAW,QAAQ,WACpD3G,EAAIa,uCAGRb,EAAIa,uCAjTnB,CAsTChD,EAAe2B,WAwBhB,SAAU3D,GACPA,EAAEgL,SAAW,SAAU5b,EAAS6b,EAAWC,EAAeC,GACtD,IAEIC,EAFAtJ,EAAM9b,KACN8c,EAAkBhB,EAAIgB,gBAGtB1T,EAAQic,kBAA8C,QAA1B7mB,EAAE,QAAQkI,KAAK,SAC3CoV,EAAI8C,KAAM,GAGVxV,EAAQoT,kBACRV,EAAIU,iBAAkB,GAGtBpT,EAAQqT,qCACRX,EAAIW,oCAAqC,GAGzCrT,EAAQsT,gBACRZ,EAAIY,eAAgB,GAGQ,IAA5BtT,EAAQuT,kBACRyI,EAAME,OAAOlc,EAAQuT,iBAEhB4I,MAAMH,KACPtJ,EAAIa,gBAAkByI,IAIwB,MAAlDhc,EAAQoc,iBAAiBC,WAAWC,OAAO,KAC3C5J,EAAIqE,iBAAkB,GAG1BlX,YAEA,WAOIgc,EAAUnkB,KAAK,aAAakF,OAE5B8W,EAAgBc,aAAaxU,GACd0T,EAAgBmC,yBAE/BgG,EAAUhhB,IAAI,aAAc,WAExBkhB,GACAA,IAGAD,GACAA,MArByB,MA0BrClL,EAAEwF,kBAAoB,SAAUpW,GAClBpJ,KACI4c,eAEV4C,kBAAkBpW,IAhE7B,CAkEC6S,EAAqB0B,WAIvB,IAAIgI,EAAe,WAEf,MAAO,CACHC,kBAYJ,SAA2BzC,GACvB,OAAO3kB,EAAE2kB,EAAIriB,KAAK,KAAK4F,KAAK,UAZ5Bmf,gBAiBJ,WACI,OAAOrnB,EAAE,kDAjBTsnB,+CAoBJ,SAAwDC,EAAkBhmB,GACtE,IAAImc,EAAiB1d,EAAE,6CACnB6hB,EAAmBtgB,EAASsgB,kBAAoB,oFAAsFtgB,EAASimB,kBAAoB,kBACnKlG,EAAathB,EAAE6hB,GACfC,EAAoBvgB,EAASugB,mBAAqB,qFAAuFvgB,EAASkmB,mBAAqB,kBACvKlG,EAAcvhB,EAAE8hB,GAChBF,EAAkB5hB,EAAE,oDACpB8f,EAAoB9f,EAAE,sDAEtBuB,EAAS0c,oCACTqD,EAAWgB,IAAIf,GAAatc,SAASwW,EAAUM,YAAYI,sBAG/D,OAAOuB,EACFhb,OAAO4e,EACJM,EAAgBlf,OAAOod,EAAkBpd,OAAO6kB,IAChDhG,IAnCRmG,kBAAmBA,EACnBC,mBA2CJ,WACI,OAAO3nB,EAAE,oCA3CT4nB,cA8CJ,SAAuBvY,EAAKwY,EAAWjd,GACnC,IAAIkd,EAAYld,EAAQmd,cAAgB,yCACpCpD,EAAM3kB,EAAE8nB,GACRE,EAAKN,EAAkBrY,EAAKwY,GAAWI,SAAStD,GAEhDtV,EAAIwY,EAAUK,WACdvD,EAAI1f,SAAS,YACb+iB,EAAG9f,KAAK,cAAe,KAChB0C,EAAQud,gBAAkB9Y,EAAIwY,EAAUO,SAC/CzD,EAAI1f,SAAS,UAGb2F,EAAQyd,kBACRzd,EAAQyd,iBAAiB1D,EAAKqD,GAGlC,OAAOrD,GA7DP2D,gBAgEJ,SAAyBjZ,EAAKwY,EAAWjd,GACrC,IAAI2d,EAAQvoB,EAAE,gDACTkI,KAAK,KAAMmH,EAAIwY,EAAUW,SACzBjmB,KAAK8M,EAAIwY,EAAUjnB,UAEpBgK,EAAQud,gBAAkB9Y,EAAIwY,EAAUO,SACxCG,EAAMtjB,SAAS,UAGnB,OAAOsjB,IAtCX,SAASb,EAAkBrY,EAAKwY,GAC5B,OAAO7nB,EAAE,wCACJkI,KAAK,OAAQ,IAAMmH,EAAIwY,EAAUW,SACjCjmB,KAAK8M,EAAIwY,EAAU9Z,SA/Cb,GAwFf0a,EAAY,WAEZ,MAAO,CACHC,kBAQJ,SAA2BC,EAAaC,EAAaf,GACjD,IAAIgB,GAAoB,EAWxB,OATAF,EAAYplB,MAAK,SAAUulB,GACvB,IAAIC,EAASC,EAAoBJ,EAAaf,EAAUW,OAAQxoB,EAAEwB,MAAMwB,KAAK,OAAO6kB,EAAUW,SAE9F,GAAKO,GAAU,GAAOA,IAAWD,EAE7B,OADAD,GAAoB,GACb,KAIRA,GAnBPI,4BAsBJ,SAAqCN,EAAaO,GAC9C,IAAIC,EAAYR,EAAYze,OAAS,EACjCkf,GAAc,EACdC,EAA0B,EAC1BC,EAAU,EAId,MAAwB,IAAhBF,GAAuBE,GAAW,KAE/BA,EAAUJ,KAAgBG,IAA6BF,IACzDR,EAAY9Y,GAAGyZ,GAAStnB,SAAS,cAC/BsnB,EAAUJ,EAAaG,IAA4B,IACjDV,EAAY9Y,GAAGyZ,GAAStnB,SAAS,eAEtConB,EAAaE,GAKrB,OAAOF,GAzCPJ,oBAAqBA,EACrBO,gBAwDJ,SAAyB5E,EAAK6E,EAAM7Z,GAChCgV,EAAI3hB,KAAK,CACLqM,IAAKrP,EAAE8B,OAAO,GAAI0nB,EAAK7Z,IACvBA,MAAOA,MAhBf,SAASqZ,EAAoBQ,EAAMC,EAAgBjB,GAC/C,IAAIkB,GAAO,EASX,OAPAF,EAAKG,MAAK,SAAUta,EAAKyB,GACrB,GAAIzB,EAAIoa,KAAoBjB,EAExB,OADAkB,EAAM5Y,GACC,KAIR4Y,GA3DC,GAgJhB,SAASE,EAA8BrC,EAAkBhmB,EAAUmlB,EAAeC,GAE9EY,EACKjlB,KAAK,wBACLunB,WAAWpO,EAAUK,wBAE1B,IAAI2K,EAAYU,EAAYG,+CAA+CC,EAAiBvY,OAAM,GAAOzN,GACrG8b,EAAuB,IAAII,EAAqBgJ,GAChDqD,EAAsBvC,EAAiBvkB,KAAK,WAgChD,OA9BK8mB,EAKDA,EAAoBC,SAAWtD,EAJ/Bc,EAAiBvkB,KAAK,UAAW,CAC7B+mB,SAAUtD,IAMlBc,EAAiByC,YAAYvD,EAAUhhB,IAAI,aAAc,WAErDlE,EAASgiB,iBAAwD,mBAA7BhiB,EAASgiB,kBAC7CkD,EAAUwD,oBAAqB,EAC/B5M,EAAqBkG,gBAAkBhiB,EAASgiB,iBAGpDkD,EAAUD,SAAW,WACjBnJ,EAAqBmJ,SAASjlB,EAC1BklB,EACAC,EACAC,IAGRF,EAAUzF,kBAAoB,WAC1B3D,EAAqB2D,kBAAkBzf,IAG3CklB,EAAUD,WA8Nd,SAAmCC,EAAWnJ,GAC1C,IAAI4M,EAQJ,SAASC,EAAmB9Z,GAExBrQ,EAAEqQ,EAAEpJ,QAAQvE,OAAOwnB,EAAQlH,IAAIvH,EAAUe,OAAOC,QAGpD,SAAS2N,EAAmB/Z,GACxB,IAGIga,EACAC,EACAC,EALAC,EAAiBxqB,EAAEqQ,EAAEpJ,QACrBwjB,EAAaD,EAAengB,SAC5BqgB,EAAiBjE,EAAUnkB,KAAK,kCAqCpC,SAASqoB,IAEL,IAAIC,EAAuB5qB,EAAEwB,MACzBqpB,EAAsBD,EAAqBpgB,OAAO,MAClDsgB,EAAgCD,EAAoBrgB,OAAO,kBAC3DugB,EAAeH,EAAqB1iB,KAAK,QAEzC2iB,EAAoB7oB,SAAS,YAQjCykB,EACKnkB,KAAK,aACLqF,IAAI6iB,GACJlI,IAAIwI,EAA8BxoB,KAAK,cACvC8C,YAAY,UAEjBolB,EACKlI,IAAIuI,GACJ5lB,SAAS,UAGdjF,EAAE,iCAAiCoF,YAAY,UAC/CpF,EAAE+qB,GAAc9lB,SAAS,WA3D7BilB,EAAUM,EACLloB,KAAK,kBACL4F,KAAK,QAAUuT,EAAUG,0BAA0B,GAIpD8O,EAAe,KAAOF,EAAe,IACrCN,EAAQ5nB,KAAK,aAAa8C,YAAY,UAM1C8kB,EAAQrnB,GAAG4Y,EAAUe,OAAOC,MAAO,gBAAiBkO,GAEpD3qB,EAAE,QAAQ0C,OAAOwnB,GAGjBG,EAAeH,EAAQvkB,QAAU8kB,EAAWtgB,KAC5CmgB,EAAoB7D,EAAU9gB,SAAW2X,EAAI6E,iBAAiBO,aAAe,GAC7E6H,EAAmBE,EAAWtgB,KAE1BkgB,EAAeC,IACfC,GAAqBF,EAAeC,GAGxCJ,EAAQzkB,IAAI,CACRulB,QAAW,QACXjiB,IAAO0hB,EAAW1hB,IAAMyhB,EAAeniB,cAAgB,EACvD8B,KAAQogB,IA9ChB9D,EACK5jB,GAAG4Y,EAAUe,OAAOG,mBAAoByN,GACxCvnB,GAAG4Y,EAAUe,OAAOE,mBAAoByN,GAnO7Cc,CAA0BxE,EAAWpJ,GAE9BoJ,EAuLX,SAASyE,EAA6BC,GAClC,IAAIxC,EAAcwC,EAAYxC,YAC1ByC,EAAmBD,EAAYC,iBAC/BvD,EAAYsD,EAAYtD,UACxBwD,GAAqB,EA4BzB,OAzBA1C,EAAYplB,MAAK,SAAUulB,GACvB,IAAInE,EAAM3kB,EAAEwB,MACR8pB,EAAc3G,EAAI3hB,KAAK,OACvB+lB,EAASN,EAASO,oBAAoBoC,EAAkBvD,EAAUW,OAAQ8C,EAAYzD,EAAUW,SAChG+C,EAAcxC,GAAU,EAAKqC,EAAiBrC,GAAU,KAE5DoC,EAAYK,MAAQ,CAChB7G,IAAKA,EACLmE,WAAYA,EACZC,OAAQA,EACR0C,aAActE,EAAYC,kBAAkBzC,GAC5C2G,YAAaA,EACbC,WAAYA,IA3FxB,SAA4BJ,GACxB,IAGIO,EAHAC,EAAYR,EAAYK,MACxBI,EAAiBT,EAAYS,eAC7BjH,EAAMgH,EAAUhH,IAGpB,OAA0B,IAAtBgH,EAAU5C,SAKVpE,EAAI3iB,SAAS,YAEb0pB,EAAkBjD,EAASQ,4BAA4BkC,EAAYxC,YAAagD,EAAU7C,cACnE,IACnBqC,EAAYxC,YACP9Y,GAAG6b,GACHzmB,SAAS,UAET2mB,GACDT,EAAYU,qBACPhc,GAAG6b,GACHzmB,SAAS,WAK1B0f,EAAIhiB,SAECipB,GACDD,EAAUF,aAAa9oB,UAGpB,GA6DCmpB,CAAmBX,IArJ/B,SAAsCA,GAClC,IAAIQ,EAAYR,EAAYK,MACxBI,EAAiBT,EAAYS,eAC7BjH,EAAMgH,EAAUhH,IAChB8G,EAAeE,EAAUF,aACzBH,EAAcK,EAAUL,YACxBC,EAAaI,EAAUJ,WACvB1D,EAAYsD,EAAYtD,UACxBwD,GAAqB,EA4CzB,OAzCIC,EAAYzD,EAAU9Z,SAAWwd,EAAW1D,EAAU9Z,SACtD4W,EAAIriB,KAAK,iBACJC,KAAK+oB,EAAYzD,EAAU9Z,OAASwd,EAAW1D,EAAU9Z,QAE9Dsd,GAAqB,GAIrBC,EAAYzD,EAAUK,YAAcqD,EAAW1D,EAAUK,YACrDqD,EAAW1D,EAAUK,WACrBvD,EAAI1f,SAAS,YACb0f,EAAIriB,KAAK,iBAAiB4F,KAAK,cAAe,MAE9Cyc,EAAIvf,YAAY,YAChBuf,EAAIriB,KAAK,iBAAiB4F,KAAK,cAAe,QAGlDojB,EAAYzD,EAAUK,UAAYqD,EAAW1D,EAAUK,UACvDmD,GAAqB,GAIrBF,EAAYvgB,QAAQud,iBAIpBxD,EAAI4G,EAAW1D,EAAUO,QAAU,WAAa,eAAe,UAE/DqD,EAAaF,EAAW1D,EAAUO,QAAU,WAAa,eAAe,UAExEkD,EAAYzD,EAAUO,QAAUmD,EAAW1D,EAAUO,QAErDiD,GAAqB,GAIpBO,GAAkBN,EAAYzD,EAAUjnB,WAAa2qB,EAAW1D,EAAUjnB,WAC3E6qB,EAAalpB,KAAK+oB,EAAYzD,EAAUjnB,SAAW2qB,EAAW1D,EAAUjnB,UACxEyqB,GAAqB,GAGlBA,EAsGCU,CAA6BZ,MAJ7BE,GAAqB,MAStBA,EA0FX,SAASW,EAAsBC,EAAYrhB,GACvC,IAAIshB,EAAeD,EAAWjpB,OAAOmpB,QACjCpC,EAAWmC,EAAanC,SACxBqC,EAAWH,EAAW3pB,KAAK,oCAC3B+pB,EAAgCJ,EAAW3pB,KAAK,gBAChD+oB,GAAqB,EACrBF,EAAc,CACVvgB,QAASA,EACTwgB,iBAAkBc,EAAa1C,KAC/B8C,qBAAsBJ,EAAaK,cACnCC,0BAA2BN,EAAaO,mBACxC5E,UAAWqE,EAAarE,UACxB+D,eAAgBM,EAAaN,eAC7BQ,SAAUA,EACVzD,YAAayD,EAAS9pB,KAAK,QAC3B+pB,8BAA+BA,EAC/BR,qBAAsBQ,EAA8B/pB,KAAK,cAsBjE,OAjVJ,SAA0B6oB,GACtB,IAAIC,EAAmBD,EAAYC,iBAC/BkB,EAAuBnB,EAAYmB,sBAAwB,GAC3DE,EAA4BrB,EAAYqB,2BAA6B,GACrE3E,EAAYsD,EAAYtD,UACxB+D,EAAiBT,EAAYS,eAC7BhhB,EAAUugB,EAAYvgB,QACtB+d,EAAcwC,EAAYxC,YAC1ByD,EAAWjB,EAAYiB,SACvBC,EAAgCT,EAAiB,KAAOT,EAAYkB,8BACpER,EAAuBD,EAAiB,KAAOT,EAAYU,qBAC3DR,GAAqB,EAoCzB,OAjCAD,EAAiBzY,SAAQ,SAAUtD,EAAKqa,GACpC,IAEInB,EAFA5D,EAAMgE,EAAYrmB,KAAK,YAAc+M,EAAIwY,EAAUW,QAAU,MAC7DkE,EAAwBhD,GAAOf,EAAYze,OAG1Cya,EAAIza,SACLmhB,GAAqB,EAGrBzgB,EAAQmd,aAAeuE,EAAqB5C,GAC5C9e,EAAQyd,iBAAmBmE,EAA0B9C,GACrD/E,EAAMwC,EAAYS,cAAcvY,EAAKwY,EAAWjd,GAChD6d,EAASc,gBAAgB5E,EAAKyG,EAAkB1B,GAE5CgD,EACA/H,EAAIsD,SAASmE,GAEbzH,EAAIgI,aAAahE,EAAY9Y,GAAG6Z,IAG/BkC,QAA6C3c,IAA3BI,EAAIwY,EAAUjnB,WACjC2nB,EAAQpB,EAAYmB,gBAAgBjZ,EAAKwY,EAAWjd,GAChD8hB,EACAnE,EAAMN,SAASoE,GAEf9D,EAAMoE,aAAad,EAAqBhc,GAAG6Z,SAQpD2B,EAkRHuB,CAAiBzB,KACjBE,GAAqB,GArL7B,SAAkCF,GAC9B,IAAIxC,EAAcwC,EAAYxC,YAC1ByC,EAAmBD,EAAYC,iBAC/BvD,EAAYsD,EAAYtD,UACxB+D,EAAiBT,EAAYS,eAC7BiB,EAAoB,GACpBC,EAAwBlB,EAAiB,KAAO,GAEpD,QAAKnD,EAASC,kBAAkBC,EAAayC,EAAkBvD,KAK/DuD,EAAiBzY,SAAQ,SAAUoa,GAC/B,IAAIvE,EAASuE,EAAElF,EAAUW,QAEzBqE,EAAkB/V,KACd6R,EACKrmB,KAAK,wBAA0BkmB,EAAS,MACxChe,OAAO,OAGXohB,GACDkB,EAAsBhW,KAAK9W,EAAE,IAAMwoB,OAI3C2C,EAAYiB,SAAS1pB,OAAOmqB,GAEvBjB,GACDT,EAAYkB,8BAA8B3pB,OAAOoqB,IAG9C,GAuJHE,CAAyB7B,KACzBE,GAAqB,GAGrBH,EAA6BC,KAC7BE,GAAqB,GAGrBA,GACAtB,EAASvD,WAGN6E,EAeX,SAASrK,IAEL,IACIiM,EADoBjtB,EAAEwB,MACUwB,KAAK,WAEpCiqB,GAILA,EAAYlD,SAAS/I,oBAGzB,IAAIkM,EAAU,CACVC,QAAS,WAGL,OAFiB3rB,KAEC+B,KAAK6pB,IAG3BviB,KAAM,SAAUD,GACZ,IAAIyiB,EAAa7rB,KACb8rB,EAAqBD,EAAWnjB,OAAS,EACzC3I,EAAWvB,EAAE8B,OAAO,GAAI9B,EAAEC,GAAG2d,cAAc2P,SAAU3iB,GAAW,IAGpE,OAAKrJ,EAASioB,KAkBP6D,EAAW9pB,MAAK,SAAUoM,IAlgBzC,SAA2D6d,EAAmBjsB,EAAUmlB,GACpF,IAYID,EAZA+C,EAAOjoB,EAASioB,KAChB3B,EAAY,CACRW,OAAQjnB,EAASksB,WACjB1f,MAAOxM,EAASmsB,UAChBtF,OAAQ7mB,EAASosB,WACjBzF,SAAU3mB,EAASqsB,aACnBhtB,QAASW,EAASssB,aAEtBjC,EAAiBrqB,EAASqqB,eAC1BkC,EAAgBtE,EAAKtf,aAAyC+E,IAA/Bua,EAAK,GAAG3B,EAAUjnB,SACjDwrB,EAAWjF,EAAYE,kBACvB0G,EAAc5G,EAAYQ,qBAE1BhB,EAAgCiF,EAAiB,KAAO,WACpDnF,EAAUrR,MAAM2Y,IAGxB,GAAKvE,EAAKtf,OAIVsf,EAAK7W,SAAQ,SAAUtD,EAAKM,GACxB,IAAI/E,EAAU,CACVud,gBAAgB,EAChBJ,aAAcxmB,EAASgrB,eAAiBhrB,EAASgrB,cAAc5c,GAC/D0Y,iBAAkB9mB,EAASkrB,oBAAsBlrB,EAASkrB,mBAAmB9c,IAGjFwX,EACKS,cAAcvY,EAAKwY,EAAWjd,GAC9Bqd,SAASmE,IAITR,GAAkBkC,GACnB3G,EACKmB,gBAAgBjZ,EAAKwY,EAAWjd,GAChCqd,SAAS8F,OAItBtH,EAAYmD,EAA8BwC,EACtC7qB,EACAmlB,EACAC,IAEMsB,SAASuF,GAEnBA,EAAkBxqB,KAAK,CACnBmpB,QAAS,CACL3C,KAAMA,EACN3B,UAAWA,EACX+D,eAAgBA,EAChBkC,cAAeA,EACfvB,cAAehrB,EAASgrB,cACxBE,mBAAoBlrB,EAASkrB,mBAC7B1C,SAAUtD,KAQlBA,EAAUnkB,KAAK,kBAAkBiB,MAAK,SAAUoM,GAC5C8Y,EAASc,gBAAgBvpB,EAAEwB,MAAOgoB,EAAM7Z,MAscpCqe,CALgBhuB,EAAEwB,MAK2CD,EAJxCoO,EAAQ2d,EAAsB,KAAO,WAClDD,EAAW1sB,QAAQ8a,EAAUe,OAAOO,iBAlBrCsQ,EAAW9pB,MAAK,SAAUoM,GAS7Bia,EALgB5pB,EAAEwB,MAAMwB,KAAK,CAAEmpB,QAHjB,CACV8B,eAAe,KAOsB1sB,EAJpBoO,EAAQ2d,EAAsB,KAAO,WAClDD,EAAW1sB,QAAQ8a,EAAUe,OAAOO,kBAmBxDmR,QAAS,SAAUtjB,GACf,IACIrJ,EAAWvB,EAAE8B,OAAO,GAAI9B,EAAEC,GAAG2d,cAAc2P,SAAU3iB,GAAW,IAEpE,OAHiBpJ,KAGC+B,MAAK,YArE/B,SAAsC0oB,EAAYrhB,GACzCqhB,EAAWjpB,KAAK,cAMjBipB,EAAWjpB,KAAK,WAAWirB,eAAkBjC,EAAsBC,EAAYrhB,IAC/E5K,EAAE,QAAQW,QAAQ8a,EAAUe,OAAOI,gBA8D/BuR,CAA6BnuB,EAAEwB,MAAOD,OAI9Cyf,kBAAmB,WACf,OAAOxf,KAAK+B,KAAKyd,KAIzB,SAASoM,IAEL,IAEI1P,EAFA8P,EAAoBxtB,EAAEwB,MACtByrB,EAAcO,EAAkBxqB,KAAK,WAGzC,GAAKiqB,EAAL,CAsDA,IAlDyC,SAArCA,EAAYmB,qBACZZ,EAAkBpoB,YAAYqW,EAAUM,YAAYsS,iBACR,WAArCpB,EAAYmB,sBACnBZ,EAAkBxZ,QAAQ,0BAA0BxJ,SAASpF,YAAYqW,EAAUM,YAAYsS,iBAGnGpB,EAAYlD,SACP/G,IAAIvH,EAAUe,OAAOG,oBACrBqG,IAAIvH,EAAUe,OAAOE,oBAI1BuQ,EAAYlD,SACPznB,KAAK,SAAWmZ,EAAUG,yBAA2B,KACrDnW,IAAI,CACDulB,QAAS,GACT7gB,KAAM,GACNpB,IAAK,KAERia,IAAIvH,EAAUe,OAAOC,OACrB6R,WAAW,QAAU7S,EAAUG,0BAEhCqR,EAAYlD,SAASE,oBACrBuD,EACKlrB,KAAK,wBACL0gB,IAAI,YAGTiK,EAAYgB,eAEZvQ,EAAiB8P,EAAkB7rB,QAAQ,2BAExBuI,QACfwT,EAAesM,YAAYwD,IAI3BP,EAAYlD,UAAYkD,EAAYlD,SAASvD,WAC7CyG,EAAYlD,SAASvD,SAAW,MAIpCgH,EACKlrB,KAAK,0BACLggB,IAAI,gBACJ3f,UAGT6qB,EAAkB3D,WAAW,aAEpB7pB,EAAEC,GAAG2d,cAAcC,gBAAkB,GAC1C7d,EAAE4H,GAAQob,IAAIvH,EAAUe,OAAOW,cAAgBnd,EAAEC,GAAG2d,cAAcC,gBAGtE7d,EAAE,QAAQgjB,IAAIvH,EAAUe,OAAOI,gBAInC5c,EAAEC,GAAG2d,cAAgB,SAAU2Q,GAE3B,OAAIrB,EAAQqB,GACDrB,EAAQqB,GAAiBtP,MAAMzd,KAAMgtB,MAAMrP,UAAU/I,MAAMhU,KAAK2c,UAAW,IAC1EwP,GAA+C,iBAApBA,OAGnCvuB,EAAEyuB,MAAM,UAAYF,EAAkB,uCAF/BrB,EAAQriB,KAAKoU,MAAMzd,KAAMud,YAMxC/e,EAAEC,GAAG2d,cAAcC,eAAiB,EAEpC7d,EAAEC,GAAG2d,cAAc2P,SAAW,CAC1B/D,KAAM,KACNiE,WAAY,SACZC,UAAW,QACXC,WAAY,SACZC,aAAc,WACdC,YAAa,UACbjC,gBAAgB,EAChB5N,iBAAiB,EACjBC,oCAAoC,EACpCkK,gBAAgB,EAChBjK,eAAe,EACfC,gBAAiB,EACjBoF,gBAAiB,KACjBiE,kBAAmB,mCACnBC,mBAAoB,oCACpB5F,iBAAkB,GAClBC,kBAAmB,GACnByK,cAAe,KACfE,mBAAoB,KACpB1J,eAAe,EACf8D,kBAAkB,EAClBrD,wBAAwB,EACxBwD,iBAAkB,GA5qDvB,CA8qDD0H,OAAQ9mB,QCv9DV5H,EAAE2uB,GAAGxiB,OAAOmW,IAAI,YAAa,oBAAqB,CAC9CsM,MAAO,WACH,IACIC,EADO7uB,EAAEwB,MAAMstB,UAAU,YAChBlkB,QAEb5K,EAAE6uB,EAAEE,mBAAmBxrB,MAAK,WACxB,IAAIyrB,EAAKhvB,EAAEwB,MACXwtB,EAAGhsB,KAAK,iCAAkC,CACtC2C,MAAO4M,SAASyc,EAAGrpB,QAAS,IAC5BD,OAAQ6M,SAASyc,EAAGtpB,SAAU,IAC9ByE,KAAMoI,SAASyc,EAAGvpB,IAAI,QAAS,IAC/BsD,IAAKwJ,SAASyc,EAAGvpB,IAAI,OAAQ,UAKzCoC,OAAQ,SAAUzE,EAAOurB,GACrB,IAAIrnB,EAAOtH,EAAEwB,MAAMstB,UAAU,YACzBD,EAAIvnB,EAAKsD,QACTqkB,EAAK3nB,EAAK4nB,aACVC,EAAK7nB,EAAK8nB,iBACVC,EAAQ,CACJ3pB,OAAQ4B,EAAKgoB,KAAK5pB,OAASupB,EAAGvpB,QAAU,EACxCC,MAAO2B,EAAKgoB,KAAK3pB,MAAQspB,EAAGtpB,OAAS,EACrCoD,IAAKzB,EAAKkR,SAASzP,IAAMomB,EAAGpmB,KAAO,EACnCoB,KAAM7C,EAAKkR,SAASrO,KAAOglB,EAAGhlB,MAAQ,GAG9CnK,EAAE6uB,EAAEE,mBAAmBxrB,MAAK,WACxB,IAAIyrB,EAAKhvB,EAAEwB,MACPotB,EAAQ5uB,EAAEwB,MAAMwB,KAAK,mCACrBkD,EAAQ,GACRT,EAAMupB,EAAGrtB,QAAQgtB,EAAGY,gBAAgB,IAAIrlB,OAAS,CAAC,QAAS,UAAY,CAAC,QAAS,SAAU,MAAO,QAEtGlK,EAAEuD,KAAKkC,GAAK,SAAUqL,EAAGoJ,GACrB,IAAIsV,GAAOZ,EAAM1U,IAAS,IAAMmV,EAAMnV,IAAS,GAC3CsV,GAAOA,GAAO,IACdtpB,EAAMgU,GAAQsV,GAAO,SAI7BR,EAAGvpB,IAAIS,OAIfgF,KAAM,WACFlL,EAAEwB,MAAMqoB,WAAW","sourcesContent":["/**\n * --------------------------------------------\n * AdminLTE CardRefresh.js\n * License MIT\n * --------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * Constants\n * ====================================================\n */\n\nconst NAME = 'CardRefresh'\nconst DATA_KEY = 'lte.cardrefresh'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst EVENT_LOADED = `loaded${EVENT_KEY}`\nconst EVENT_OVERLAY_ADDED = `overlay.added${EVENT_KEY}`\nconst EVENT_OVERLAY_REMOVED = `overlay.removed${EVENT_KEY}`\n\nconst CLASS_NAME_CARD = 'card'\n\nconst SELECTOR_CARD = `.${CLASS_NAME_CARD}`\nconst SELECTOR_DATA_REFRESH = '[data-card-widget=\"card-refresh\"]'\n\nconst Default = {\n source: '',\n sourceSelector: '',\n params: {},\n trigger: SELECTOR_DATA_REFRESH,\n content: '.card-body',\n loadInContent: true,\n loadOnInit: true,\n responseType: '',\n overlayTemplate: '
',\n onLoadStart() {\n },\n onLoadDone(response) {\n return response\n }\n}\n\nclass CardRefresh {\n constructor(element, settings) {\n this._element = element\n this._parent = element.parents(SELECTOR_CARD).first()\n this._settings = $.extend({}, Default, settings)\n this._overlay = $(this._settings.overlayTemplate)\n\n if (element.hasClass(CLASS_NAME_CARD)) {\n this._parent = element\n }\n\n if (this._settings.source === '') {\n throw new Error('Source url was not defined. Please specify a url in your CardRefresh source option.')\n }\n }\n\n load() {\n this._addOverlay()\n this._settings.onLoadStart.call($(this))\n\n $.get(this._settings.source, this._settings.params, response => {\n if (this._settings.loadInContent) {\n if (this._settings.sourceSelector !== '') {\n response = $(response).find(this._settings.sourceSelector).html()\n }\n\n this._parent.find(this._settings.content).html(response)\n }\n\n this._settings.onLoadDone.call($(this), response)\n this._removeOverlay()\n }, this._settings.responseType !== '' && this._settings.responseType)\n\n $(this._element).trigger($.Event(EVENT_LOADED))\n }\n\n _addOverlay() {\n this._parent.append(this._overlay)\n $(this._element).trigger($.Event(EVENT_OVERLAY_ADDED))\n }\n\n _removeOverlay() {\n this._parent.find(this._overlay).remove()\n $(this._element).trigger($.Event(EVENT_OVERLAY_REMOVED))\n }\n\n // Private\n\n _init() {\n $(this).find(this._settings.trigger).on('click', () => {\n this.load()\n })\n\n if (this._settings.loadOnInit) {\n this.load()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n let data = $(this).data(DATA_KEY)\n const _options = $.extend({}, Default, $(this).data())\n\n if (!data) {\n data = new CardRefresh($(this), _options)\n $(this).data(DATA_KEY, typeof config === 'string' ? data : config)\n }\n\n if (typeof config === 'string' && config.match(/load/)) {\n data[config]()\n } else {\n data._init($(this))\n }\n }\n}\n\n/**\n * Data API\n * ====================================================\n */\n\n$(document).on('click', SELECTOR_DATA_REFRESH, function (event) {\n if (event) {\n event.preventDefault()\n }\n\n CardRefresh._jQueryInterface.call($(this), 'load')\n})\n\n$(() => {\n $(SELECTOR_DATA_REFRESH).each(function () {\n CardRefresh._jQueryInterface.call($(this))\n })\n})\n\n/**\n * jQuery API\n * ====================================================\n */\n\n$.fn[NAME] = CardRefresh._jQueryInterface\n$.fn[NAME].Constructor = CardRefresh\n$.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return CardRefresh._jQueryInterface\n}\n\nexport default CardRefresh\n","/**\n * --------------------------------------------\n * AdminLTE CardWidget.js\n * License MIT\n * --------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * Constants\n * ====================================================\n */\n\nconst NAME = 'CardWidget'\nconst DATA_KEY = 'lte.cardwidget'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst EVENT_EXPANDED = `expanded${EVENT_KEY}`\nconst EVENT_COLLAPSED = `collapsed${EVENT_KEY}`\nconst EVENT_MAXIMIZED = `maximized${EVENT_KEY}`\nconst EVENT_MINIMIZED = `minimized${EVENT_KEY}`\nconst EVENT_REMOVED = `removed${EVENT_KEY}`\n\nconst CLASS_NAME_CARD = 'card'\nconst CLASS_NAME_COLLAPSED = 'collapsed-card'\nconst CLASS_NAME_COLLAPSING = 'collapsing-card'\nconst CLASS_NAME_EXPANDING = 'expanding-card'\nconst CLASS_NAME_WAS_COLLAPSED = 'was-collapsed'\nconst CLASS_NAME_MAXIMIZED = 'maximized-card'\n\nconst SELECTOR_DATA_REMOVE = '[data-card-widget=\"remove\"]'\nconst SELECTOR_DATA_COLLAPSE = '[data-card-widget=\"collapse\"]'\nconst SELECTOR_DATA_MAXIMIZE = '[data-card-widget=\"maximize\"]'\nconst SELECTOR_CARD = `.${CLASS_NAME_CARD}`\nconst SELECTOR_CARD_HEADER = '.card-header'\nconst SELECTOR_CARD_BODY = '.card-body'\nconst SELECTOR_CARD_FOOTER = '.card-footer'\n\nconst Default = {\n animationSpeed: 'normal',\n collapseTrigger: SELECTOR_DATA_COLLAPSE,\n removeTrigger: SELECTOR_DATA_REMOVE,\n maximizeTrigger: SELECTOR_DATA_MAXIMIZE,\n collapseIcon: 'fa-minus',\n expandIcon: 'fa-plus',\n maximizeIcon: 'fa-expand',\n minimizeIcon: 'fa-compress'\n}\n\nclass CardWidget {\n constructor(element, settings) {\n this._element = element\n this._parent = element.parents(SELECTOR_CARD).first()\n\n if (element.hasClass(CLASS_NAME_CARD)) {\n this._parent = element\n }\n\n this._settings = $.extend({}, Default, settings)\n }\n\n collapse() {\n this._parent.addClass(CLASS_NAME_COLLAPSING).children(`${SELECTOR_CARD_BODY}, ${SELECTOR_CARD_FOOTER}`)\n .slideUp(this._settings.animationSpeed, () => {\n this._parent.addClass(CLASS_NAME_COLLAPSED).removeClass(CLASS_NAME_COLLAPSING)\n })\n\n this._parent.find(`> ${SELECTOR_CARD_HEADER} ${this._settings.collapseTrigger} .${this._settings.collapseIcon}`)\n .addClass(this._settings.expandIcon)\n .removeClass(this._settings.collapseIcon)\n\n this._element.trigger($.Event(EVENT_COLLAPSED), this._parent)\n }\n\n expand() {\n this._parent.addClass(CLASS_NAME_EXPANDING).children(`${SELECTOR_CARD_BODY}, ${SELECTOR_CARD_FOOTER}`)\n .slideDown(this._settings.animationSpeed, () => {\n this._parent.removeClass(CLASS_NAME_COLLAPSED).removeClass(CLASS_NAME_EXPANDING)\n })\n\n this._parent.find(`> ${SELECTOR_CARD_HEADER} ${this._settings.collapseTrigger} .${this._settings.expandIcon}`)\n .addClass(this._settings.collapseIcon)\n .removeClass(this._settings.expandIcon)\n\n this._element.trigger($.Event(EVENT_EXPANDED), this._parent)\n }\n\n remove() {\n this._parent.slideUp()\n this._element.trigger($.Event(EVENT_REMOVED), this._parent)\n }\n\n toggle() {\n if (this._parent.hasClass(CLASS_NAME_COLLAPSED)) {\n this.expand()\n return\n }\n\n this.collapse()\n }\n\n maximize() {\n this._parent.find(`${this._settings.maximizeTrigger} .${this._settings.maximizeIcon}`)\n .addClass(this._settings.minimizeIcon)\n .removeClass(this._settings.maximizeIcon)\n this._parent.css({\n height: this._parent.height(),\n width: this._parent.width(),\n transition: 'all .15s'\n }).delay(150).queue(function () {\n const $element = $(this)\n\n $element.addClass(CLASS_NAME_MAXIMIZED)\n $('html').addClass(CLASS_NAME_MAXIMIZED)\n if ($element.hasClass(CLASS_NAME_COLLAPSED)) {\n $element.addClass(CLASS_NAME_WAS_COLLAPSED)\n }\n\n $element.dequeue()\n })\n\n this._element.trigger($.Event(EVENT_MAXIMIZED), this._parent)\n }\n\n minimize() {\n this._parent.find(`${this._settings.maximizeTrigger} .${this._settings.minimizeIcon}`)\n .addClass(this._settings.maximizeIcon)\n .removeClass(this._settings.minimizeIcon)\n this._parent.css('cssText', `height: ${this._parent[0].style.height} !important; width: ${this._parent[0].style.width} !important; transition: all .15s;`\n ).delay(10).queue(function () {\n const $element = $(this)\n\n $element.removeClass(CLASS_NAME_MAXIMIZED)\n $('html').removeClass(CLASS_NAME_MAXIMIZED)\n $element.css({\n height: 'inherit',\n width: 'inherit'\n })\n if ($element.hasClass(CLASS_NAME_WAS_COLLAPSED)) {\n $element.removeClass(CLASS_NAME_WAS_COLLAPSED)\n }\n\n $element.dequeue()\n })\n\n this._element.trigger($.Event(EVENT_MINIMIZED), this._parent)\n }\n\n toggleMaximize() {\n if (this._parent.hasClass(CLASS_NAME_MAXIMIZED)) {\n this.minimize()\n return\n }\n\n this.maximize()\n }\n\n // Private\n\n _init(card) {\n this._parent = card\n\n $(this).find(this._settings.collapseTrigger).click(() => {\n this.toggle()\n })\n\n $(this).find(this._settings.maximizeTrigger).click(() => {\n this.toggleMaximize()\n })\n\n $(this).find(this._settings.removeTrigger).click(() => {\n this.remove()\n })\n }\n\n // Static\n\n static _jQueryInterface(config) {\n let data = $(this).data(DATA_KEY)\n const _options = $.extend({}, Default, $(this).data())\n\n if (!data) {\n data = new CardWidget($(this), _options)\n $(this).data(DATA_KEY, typeof config === 'string' ? data : config)\n }\n\n if (typeof config === 'string' && config.match(/collapse|expand|remove|toggle|maximize|minimize|toggleMaximize/)) {\n data[config]()\n } else if (typeof config === 'object') {\n data._init($(this))\n }\n }\n}\n\n/**\n * Data API\n * ====================================================\n */\n\n$(document).on('click', SELECTOR_DATA_COLLAPSE, function (event) {\n if (event) {\n event.preventDefault()\n }\n\n CardWidget._jQueryInterface.call($(this), 'toggle')\n})\n\n$(document).on('click', SELECTOR_DATA_REMOVE, function (event) {\n if (event) {\n event.preventDefault()\n }\n\n CardWidget._jQueryInterface.call($(this), 'remove')\n})\n\n$(document).on('click', SELECTOR_DATA_MAXIMIZE, function (event) {\n if (event) {\n event.preventDefault()\n }\n\n CardWidget._jQueryInterface.call($(this), 'toggleMaximize')\n})\n\n/**\n * jQuery API\n * ====================================================\n */\n\n$.fn[NAME] = CardWidget._jQueryInterface\n$.fn[NAME].Constructor = CardWidget\n$.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return CardWidget._jQueryInterface\n}\n\nexport default CardWidget\n","/**\n * --------------------------------------------\n * AdminLTE ControlSidebar.js\n * License MIT\n * --------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * Constants\n * ====================================================\n */\n\nconst NAME = 'ControlSidebar'\nconst DATA_KEY = 'lte.controlsidebar'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst EVENT_COLLAPSED = `collapsed${EVENT_KEY}`\nconst EVENT_EXPANDED = `expanded${EVENT_KEY}`\n\nconst SELECTOR_CONTROL_SIDEBAR = '.control-sidebar'\nconst SELECTOR_CONTROL_SIDEBAR_CONTENT = '.control-sidebar-content'\nconst SELECTOR_DATA_TOGGLE = '[data-widget=\"control-sidebar\"]'\nconst SELECTOR_HEADER = '.main-header'\nconst SELECTOR_FOOTER = '.main-footer'\n\nconst CLASS_NAME_CONTROL_SIDEBAR_ANIMATE = 'control-sidebar-animate'\nconst CLASS_NAME_CONTROL_SIDEBAR_OPEN = 'control-sidebar-open'\nconst CLASS_NAME_CONTROL_SIDEBAR_SLIDE = 'control-sidebar-slide-open'\nconst CLASS_NAME_LAYOUT_FIXED = 'layout-fixed'\nconst CLASS_NAME_NAVBAR_FIXED = 'layout-navbar-fixed'\nconst CLASS_NAME_NAVBAR_SM_FIXED = 'layout-sm-navbar-fixed'\nconst CLASS_NAME_NAVBAR_MD_FIXED = 'layout-md-navbar-fixed'\nconst CLASS_NAME_NAVBAR_LG_FIXED = 'layout-lg-navbar-fixed'\nconst CLASS_NAME_NAVBAR_XL_FIXED = 'layout-xl-navbar-fixed'\nconst CLASS_NAME_FOOTER_FIXED = 'layout-footer-fixed'\nconst CLASS_NAME_FOOTER_SM_FIXED = 'layout-sm-footer-fixed'\nconst CLASS_NAME_FOOTER_MD_FIXED = 'layout-md-footer-fixed'\nconst CLASS_NAME_FOOTER_LG_FIXED = 'layout-lg-footer-fixed'\nconst CLASS_NAME_FOOTER_XL_FIXED = 'layout-xl-footer-fixed'\n\nconst Default = {\n controlsidebarSlide: true,\n scrollbarTheme: 'os-theme-light',\n scrollbarAutoHide: 'l',\n target: SELECTOR_CONTROL_SIDEBAR\n}\n\n/**\n * Class Definition\n * ====================================================\n */\n\nclass ControlSidebar {\n constructor(element, config) {\n this._element = element\n this._config = config\n }\n\n // Public\n\n collapse() {\n const $body = $('body')\n const $html = $('html')\n const that = this\n\n // Show the control sidebar\n if (this._config.controlsidebarSlide) {\n $html.addClass(CLASS_NAME_CONTROL_SIDEBAR_ANIMATE)\n $body.removeClass(CLASS_NAME_CONTROL_SIDEBAR_SLIDE).delay(300).queue(function () {\n $(that._config.target).hide()\n $html.removeClass(CLASS_NAME_CONTROL_SIDEBAR_ANIMATE)\n $(this).dequeue()\n })\n } else {\n $body.removeClass(CLASS_NAME_CONTROL_SIDEBAR_OPEN)\n }\n\n $(this._element).trigger($.Event(EVENT_COLLAPSED))\n }\n\n show() {\n const $body = $('body')\n const $html = $('html')\n\n // Collapse the control sidebar\n if (this._config.controlsidebarSlide) {\n $html.addClass(CLASS_NAME_CONTROL_SIDEBAR_ANIMATE)\n $(this._config.target).show().delay(10).queue(function () {\n $body.addClass(CLASS_NAME_CONTROL_SIDEBAR_SLIDE).delay(300).queue(function () {\n $html.removeClass(CLASS_NAME_CONTROL_SIDEBAR_ANIMATE)\n $(this).dequeue()\n })\n $(this).dequeue()\n })\n } else {\n $body.addClass(CLASS_NAME_CONTROL_SIDEBAR_OPEN)\n }\n\n this._fixHeight()\n this._fixScrollHeight()\n\n $(this._element).trigger($.Event(EVENT_EXPANDED))\n }\n\n toggle() {\n const $body = $('body')\n const shouldClose = $body.hasClass(CLASS_NAME_CONTROL_SIDEBAR_OPEN) ||\n $body.hasClass(CLASS_NAME_CONTROL_SIDEBAR_SLIDE)\n\n if (shouldClose) {\n // Close the control sidebar\n this.collapse()\n } else {\n // Open the control sidebar\n this.show()\n }\n }\n\n // Private\n\n _init() {\n const $body = $('body')\n const shouldNotHideAll = $body.hasClass(CLASS_NAME_CONTROL_SIDEBAR_OPEN) ||\n $body.hasClass(CLASS_NAME_CONTROL_SIDEBAR_SLIDE)\n\n if (shouldNotHideAll) {\n $(SELECTOR_CONTROL_SIDEBAR).not(this._config.target).hide()\n $(this._config.target).css('display', 'block')\n } else {\n $(SELECTOR_CONTROL_SIDEBAR).hide()\n }\n\n this._fixHeight()\n this._fixScrollHeight()\n\n $(window).resize(() => {\n this._fixHeight()\n this._fixScrollHeight()\n })\n\n $(window).scroll(() => {\n const $body = $('body')\n const shouldFixHeight = $body.hasClass(CLASS_NAME_CONTROL_SIDEBAR_OPEN) ||\n $body.hasClass(CLASS_NAME_CONTROL_SIDEBAR_SLIDE)\n\n if (shouldFixHeight) {\n this._fixScrollHeight()\n }\n })\n }\n\n _isNavbarFixed() {\n const $body = $('body')\n return (\n $body.hasClass(CLASS_NAME_NAVBAR_FIXED) ||\n $body.hasClass(CLASS_NAME_NAVBAR_SM_FIXED) ||\n $body.hasClass(CLASS_NAME_NAVBAR_MD_FIXED) ||\n $body.hasClass(CLASS_NAME_NAVBAR_LG_FIXED) ||\n $body.hasClass(CLASS_NAME_NAVBAR_XL_FIXED)\n )\n }\n\n _isFooterFixed() {\n const $body = $('body')\n return (\n $body.hasClass(CLASS_NAME_FOOTER_FIXED) ||\n $body.hasClass(CLASS_NAME_FOOTER_SM_FIXED) ||\n $body.hasClass(CLASS_NAME_FOOTER_MD_FIXED) ||\n $body.hasClass(CLASS_NAME_FOOTER_LG_FIXED) ||\n $body.hasClass(CLASS_NAME_FOOTER_XL_FIXED)\n )\n }\n\n _fixScrollHeight() {\n const $body = $('body')\n const $controlSidebar = $(this._config.target)\n\n if (!$body.hasClass(CLASS_NAME_LAYOUT_FIXED)) {\n $controlSidebar.attr('style', 'display: block;')\n return\n }\n\n const heights = {\n scroll: $(document).height(),\n window: $(window).height(),\n header: $(SELECTOR_HEADER).outerHeight(),\n footer: $(SELECTOR_FOOTER).outerHeight()\n }\n const positions = {\n bottom: Math.abs((heights.window + $(window).scrollTop()) - heights.scroll),\n top: $(window).scrollTop()\n }\n\n const navbarFixed = this._isNavbarFixed() && $(SELECTOR_HEADER).css('position') === 'fixed'\n\n const footerFixed = this._isFooterFixed() && $(SELECTOR_FOOTER).css('position') === 'fixed'\n\n const $controlsidebarContent = $(`${this._config.target}, ${this._config.target} ${SELECTOR_CONTROL_SIDEBAR_CONTENT}`)\n\n if (positions.top === 0 && positions.bottom === 0) {\n $controlSidebar.css({\n bottom: heights.footer,\n top: heights.header\n })\n $controlsidebarContent.css('height', heights.window - (heights.header + heights.footer))\n } else if (positions.bottom <= heights.footer) {\n if (footerFixed === false) {\n const top = heights.header - positions.top\n $controlSidebar.css('bottom', heights.footer - positions.bottom).css('top', top >= 0 ? top : 0)\n $controlsidebarContent.css('height', heights.window - (heights.footer - positions.bottom))\n } else {\n $controlSidebar.css('bottom', heights.footer)\n }\n } else if (positions.top <= heights.header) {\n if (navbarFixed === false) {\n $controlSidebar.css('top', heights.header - positions.top)\n $controlsidebarContent.css('height', heights.window - (heights.header - positions.top))\n } else {\n $controlSidebar.css('top', heights.header)\n }\n } else if (navbarFixed === false) {\n $controlSidebar.css('top', 0)\n $controlsidebarContent.css('height', heights.window)\n } else {\n $controlSidebar.css('top', heights.header)\n }\n\n if (footerFixed && navbarFixed) {\n $controlsidebarContent.css('height', '100%')\n $controlSidebar.css('height', '')\n } else if (footerFixed || navbarFixed) {\n $controlsidebarContent.css('height', '100%')\n $controlsidebarContent.css('height', '')\n }\n }\n\n _fixHeight() {\n const $body = $('body')\n const $controlSidebar = $(`${this._config.target} ${SELECTOR_CONTROL_SIDEBAR_CONTENT}`)\n\n if (!$body.hasClass(CLASS_NAME_LAYOUT_FIXED)) {\n $controlSidebar.attr('style', '')\n return\n }\n\n const heights = {\n window: $(window).height(),\n header: $(SELECTOR_HEADER).outerHeight(),\n footer: $(SELECTOR_FOOTER).outerHeight()\n }\n\n let sidebarHeight = heights.window - heights.header\n\n if (this._isFooterFixed()) {\n if ($(SELECTOR_FOOTER).css('position') === 'fixed') {\n sidebarHeight = heights.window - heights.header - heights.footer\n }\n }\n\n $controlSidebar.css('height', sidebarHeight)\n\n if (typeof $.fn.overlayScrollbars !== 'undefined') {\n $controlSidebar.overlayScrollbars({\n className: this._config.scrollbarTheme,\n sizeAutoCapable: true,\n scrollbars: {\n autoHide: this._config.scrollbarAutoHide,\n clickScrolling: true\n }\n })\n }\n }\n\n // Static\n\n static _jQueryInterface(operation) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _options = $.extend({}, Default, $(this).data())\n\n if (!data) {\n data = new ControlSidebar(this, _options)\n $(this).data(DATA_KEY, data)\n }\n\n if (data[operation] === 'undefined') {\n throw new Error(`${operation} is not a function`)\n }\n\n data[operation]()\n })\n }\n}\n\n/**\n *\n * Data Api implementation\n * ====================================================\n */\n$(document).on('click', SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n\n ControlSidebar._jQueryInterface.call($(this), 'toggle')\n})\n\n$(document).ready(() => {\n ControlSidebar._jQueryInterface.call($(SELECTOR_DATA_TOGGLE), '_init')\n})\n\n/**\n * jQuery API\n * ====================================================\n */\n\n$.fn[NAME] = ControlSidebar._jQueryInterface\n$.fn[NAME].Constructor = ControlSidebar\n$.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return ControlSidebar._jQueryInterface\n}\n\nexport default ControlSidebar\n","/**\n * --------------------------------------------\n * AdminLTE DirectChat.js\n * License MIT\n * --------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * Constants\n * ====================================================\n */\n\nconst NAME = 'DirectChat'\nconst DATA_KEY = 'lte.directchat'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst EVENT_TOGGLED = `toggled${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-widget=\"chat-pane-toggle\"]'\nconst SELECTOR_DIRECT_CHAT = '.direct-chat'\n\nconst CLASS_NAME_DIRECT_CHAT_OPEN = 'direct-chat-contacts-open'\n\n/**\n * Class Definition\n * ====================================================\n */\n\nclass DirectChat {\n constructor(element) {\n this._element = element\n }\n\n toggle() {\n $(this._element).parents(SELECTOR_DIRECT_CHAT).first().toggleClass(CLASS_NAME_DIRECT_CHAT_OPEN)\n $(this._element).trigger($.Event(EVENT_TOGGLED))\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n\n if (!data) {\n data = new DirectChat($(this))\n $(this).data(DATA_KEY, data)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n *\n * Data Api implementation\n * ====================================================\n */\n\n$(document).on('click', SELECTOR_DATA_TOGGLE, function (event) {\n if (event) {\n event.preventDefault()\n }\n\n DirectChat._jQueryInterface.call($(this), 'toggle')\n})\n\n/**\n * jQuery API\n * ====================================================\n */\n\n$.fn[NAME] = DirectChat._jQueryInterface\n$.fn[NAME].Constructor = DirectChat\n$.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return DirectChat._jQueryInterface\n}\n\nexport default DirectChat\n","/**\n * --------------------------------------------\n * AdminLTE Dropdown.js\n * License MIT\n * --------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * Constants\n * ====================================================\n */\n\nconst NAME = 'Dropdown'\nconst DATA_KEY = 'lte.dropdown'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst SELECTOR_NAVBAR = '.navbar'\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu'\nconst SELECTOR_DROPDOWN_MENU_ACTIVE = '.dropdown-menu.show'\nconst SELECTOR_DROPDOWN_TOGGLE = '[data-toggle=\"dropdown\"]'\n\nconst CLASS_NAME_DROPDOWN_RIGHT = 'dropdown-menu-right'\nconst CLASS_NAME_DROPDOWN_SUBMENU = 'dropdown-submenu'\n\n// TODO: this is unused; should be removed along with the extend?\nconst Default = {\n}\n\n/**\n * Class Definition\n * ====================================================\n */\n\nclass Dropdown {\n constructor(element, config) {\n this._config = config\n this._element = element\n }\n\n // Public\n\n toggleSubmenu() {\n this._element.siblings().show().toggleClass('show')\n\n if (!this._element.next().hasClass('show')) {\n this._element.parents(SELECTOR_DROPDOWN_MENU).first().find('.show').removeClass('show').hide()\n }\n\n this._element.parents('li.nav-item.dropdown.show').on('hidden.bs.dropdown', () => {\n $('.dropdown-submenu .show').removeClass('show').hide()\n })\n }\n\n fixPosition() {\n const $element = $(SELECTOR_DROPDOWN_MENU_ACTIVE)\n\n if ($element.length === 0) {\n return\n }\n\n if ($element.hasClass(CLASS_NAME_DROPDOWN_RIGHT)) {\n $element.css({\n left: 'inherit',\n right: 0\n })\n } else {\n $element.css({\n left: 0,\n right: 'inherit'\n })\n }\n\n const offset = $element.offset()\n const width = $element.width()\n const visiblePart = $(window).width() - offset.left\n\n if (offset.left < 0) {\n $element.css({\n left: 'inherit',\n right: offset.left - 5\n })\n } else if (visiblePart < width) {\n $element.css({\n left: 'inherit',\n right: 0\n })\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = $.extend({}, Default, $(this).data())\n\n if (!data) {\n data = new Dropdown($(this), _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (config === 'toggleSubmenu' || config === 'fixPosition') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API\n * ====================================================\n */\n\n$(`${SELECTOR_DROPDOWN_MENU} ${SELECTOR_DROPDOWN_TOGGLE}`).on('click', function (event) {\n event.preventDefault()\n event.stopPropagation()\n\n Dropdown._jQueryInterface.call($(this), 'toggleSubmenu')\n})\n\n$(`${SELECTOR_NAVBAR} ${SELECTOR_DROPDOWN_TOGGLE}`).on('click', event => {\n event.preventDefault()\n\n if ($(event.target).parent().hasClass(CLASS_NAME_DROPDOWN_SUBMENU)) {\n return\n }\n\n setTimeout(function () {\n Dropdown._jQueryInterface.call($(this), 'fixPosition')\n }, 1)\n})\n\n/**\n * jQuery API\n * ====================================================\n */\n\n$.fn[NAME] = Dropdown._jQueryInterface\n$.fn[NAME].Constructor = Dropdown\n$.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown._jQueryInterface\n}\n\nexport default Dropdown\n","/**\n * --------------------------------------------\n * AdminLTE ExpandableTable.js\n * License MIT\n * --------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * Constants\n * ====================================================\n */\n\nconst NAME = 'ExpandableTable'\nconst DATA_KEY = 'lte.expandableTable'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst EVENT_EXPANDED = `expanded${EVENT_KEY}`\nconst EVENT_COLLAPSED = `collapsed${EVENT_KEY}`\n\nconst SELECTOR_TABLE = '.expandable-table'\nconst SELECTOR_DATA_TOGGLE = '[data-widget=\"expandable-table\"]'\nconst SELECTOR_ARIA_ATTR = 'aria-expanded'\n\n/**\n * Class Definition\n * ====================================================\n */\nclass ExpandableTable {\n constructor(element, options) {\n this._options = options\n this._element = element\n }\n\n // Public\n\n init() {\n $(SELECTOR_DATA_TOGGLE).each((_, $header) => {\n const $type = $($header).attr(SELECTOR_ARIA_ATTR)\n const $body = $($header).next().children().first().children()\n if ($type === 'true') {\n $body.show()\n } else if ($type === 'false') {\n $body.hide()\n $body.parent().parent().addClass('d-none')\n }\n })\n }\n\n toggleRow() {\n const $element = this._element\n const time = 500\n const $type = $element.attr(SELECTOR_ARIA_ATTR)\n const $body = $element.next().children().first().children()\n\n $body.stop()\n if ($type === 'true') {\n $body.slideUp(time, () => {\n $element.next().addClass('d-none')\n })\n $element.attr(SELECTOR_ARIA_ATTR, 'false')\n $element.trigger($.Event(EVENT_COLLAPSED))\n } else if ($type === 'false') {\n $element.next().removeClass('d-none')\n $body.slideDown(time)\n $element.attr(SELECTOR_ARIA_ATTR, 'true')\n $element.trigger($.Event(EVENT_EXPANDED))\n }\n }\n\n // Static\n\n static _jQueryInterface(operation) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n\n if (!data) {\n data = new ExpandableTable($(this))\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof operation === 'string' && operation.match(/init|toggleRow/)) {\n data[operation]()\n }\n })\n }\n}\n\n/**\n * Data API\n * ====================================================\n */\n$(SELECTOR_TABLE).ready(function () {\n ExpandableTable._jQueryInterface.call($(this), 'init')\n})\n\n$(document).on('click', SELECTOR_DATA_TOGGLE, function () {\n ExpandableTable._jQueryInterface.call($(this), 'toggleRow')\n})\n\n/**\n * jQuery API\n * ====================================================\n */\n\n$.fn[NAME] = ExpandableTable._jQueryInterface\n$.fn[NAME].Constructor = ExpandableTable\n$.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return ExpandableTable._jQueryInterface\n}\n\nexport default ExpandableTable\n","/**\n * --------------------------------------------\n * AdminLTE Fullscreen.js\n * License MIT\n * --------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * Constants\n * ====================================================\n */\n\nconst NAME = 'Fullscreen'\nconst DATA_KEY = 'lte.fullscreen'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst SELECTOR_DATA_WIDGET = '[data-widget=\"fullscreen\"]'\nconst SELECTOR_ICON = `${SELECTOR_DATA_WIDGET} i`\n\nconst Default = {\n minimizeIcon: 'fa-compress-arrows-alt',\n maximizeIcon: 'fa-expand-arrows-alt'\n}\n\n/**\n * Class Definition\n * ====================================================\n */\n\nclass Fullscreen {\n constructor(_element, _options) {\n this.element = _element\n this.options = $.extend({}, Default, _options)\n }\n\n // Public\n\n toggle() {\n if (document.fullscreenElement ||\n document.mozFullScreenElement ||\n document.webkitFullscreenElement ||\n document.msFullscreenElement) {\n this.windowed()\n } else {\n this.fullscreen()\n }\n }\n\n fullscreen() {\n if (document.documentElement.requestFullscreen) {\n document.documentElement.requestFullscreen()\n } else if (document.documentElement.webkitRequestFullscreen) {\n document.documentElement.webkitRequestFullscreen()\n } else if (document.documentElement.msRequestFullscreen) {\n document.documentElement.msRequestFullscreen()\n }\n\n $(SELECTOR_ICON).removeClass(this.options.maximizeIcon).addClass(this.options.minimizeIcon)\n }\n\n windowed() {\n if (document.exitFullscreen) {\n document.exitFullscreen()\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen()\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen()\n }\n\n $(SELECTOR_ICON).removeClass(this.options.minimizeIcon).addClass(this.options.maximizeIcon)\n }\n\n // Static\n\n static _jQueryInterface(config) {\n let data = $(this).data(DATA_KEY)\n\n if (!data) {\n data = $(this).data()\n }\n\n const _options = $.extend({}, Default, typeof config === 'object' ? config : data)\n const plugin = new Fullscreen($(this), _options)\n\n $(this).data(DATA_KEY, typeof config === 'object' ? config : data)\n\n if (typeof config === 'string' && config.match(/toggle|fullscreen|windowed/)) {\n plugin[config]()\n } else {\n plugin.init()\n }\n }\n}\n\n/**\n * Data API\n * ====================================================\n */\n$(document).on('click', SELECTOR_DATA_WIDGET, function () {\n Fullscreen._jQueryInterface.call($(this), 'toggle')\n})\n\n/**\n * jQuery API\n * ====================================================\n */\n\n$.fn[NAME] = Fullscreen._jQueryInterface\n$.fn[NAME].Constructor = Fullscreen\n$.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Fullscreen._jQueryInterface\n}\n\nexport default Fullscreen\n","/**\n * --------------------------------------------\n * AdminLTE IFrame.js\n * License MIT\n * --------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * Constants\n * ====================================================\n */\n\nconst NAME = 'IFrame'\nconst DATA_KEY = 'lte.iframe'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst SELECTOR_DATA_TOGGLE = '[data-widget=\"iframe\"]'\nconst SELECTOR_DATA_TOGGLE_CLOSE = '[data-widget=\"iframe-close\"]'\nconst SELECTOR_DATA_TOGGLE_SCROLL_LEFT = '[data-widget=\"iframe-scrollleft\"]'\nconst SELECTOR_DATA_TOGGLE_SCROLL_RIGHT = '[data-widget=\"iframe-scrollright\"]'\nconst SELECTOR_DATA_TOGGLE_FULLSCREEN = '[data-widget=\"iframe-fullscreen\"]'\nconst SELECTOR_CONTENT_WRAPPER = '.content-wrapper'\nconst SELECTOR_CONTENT_IFRAME = `${SELECTOR_CONTENT_WRAPPER} iframe`\nconst SELECTOR_TAB_NAV = `${SELECTOR_DATA_TOGGLE}.iframe-mode .nav`\nconst SELECTOR_TAB_NAVBAR_NAV = `${SELECTOR_DATA_TOGGLE}.iframe-mode .navbar-nav`\nconst SELECTOR_TAB_NAVBAR_NAV_ITEM = `${SELECTOR_TAB_NAVBAR_NAV} .nav-item`\nconst SELECTOR_TAB_CONTENT = `${SELECTOR_DATA_TOGGLE}.iframe-mode .tab-content`\nconst SELECTOR_TAB_EMPTY = `${SELECTOR_TAB_CONTENT} .tab-empty`\nconst SELECTOR_TAB_LOADING = `${SELECTOR_TAB_CONTENT} .tab-loading`\nconst SELECTOR_SIDEBAR_MENU_ITEM = '.main-sidebar .nav-item > a.nav-link'\nconst SELECTOR_HEADER_MENU_ITEM = '.main-header .nav-item a.nav-link'\nconst SELECTOR_HEADER_DROPDOWN_ITEM = '.main-header a.dropdown-item'\nconst CLASS_NAME_IFRAME_MODE = 'iframe-mode'\nconst CLASS_NAME_FULLSCREEN_MODE = 'iframe-mode-fullscreen'\n\nconst Default = {\n onTabClick(item) {\n return item\n },\n onTabChanged(item) {\n return item\n },\n onTabCreated(item) {\n return item\n },\n autoIframeMode: true,\n autoItemActive: true,\n autoShowNewTab: true,\n loadingScreen: true,\n useNavbarItems: true,\n scrollOffset: 40,\n scrollBehaviorSwap: false,\n iconMaximize: 'fa-expand',\n iconMinimize: 'fa-compress'\n}\n\n/**\n * Class Definition\n * ====================================================\n */\n\nclass IFrame {\n constructor(element, config) {\n this._config = config\n this._element = element\n\n this._init()\n }\n\n // Public\n\n onTabClick(item) {\n this._config.onTabClick(item)\n }\n\n onTabChanged(item) {\n this._config.onTabChanged(item)\n }\n\n onTabCreated(item) {\n this._config.onTabCreated(item)\n }\n\n createTab(title, link, uniqueName, autoOpen) {\n const tabId = `panel-${uniqueName}-${Math.floor(Math.random() * 1000)}`\n const navId = `tab-${uniqueName}-${Math.floor(Math.random() * 1000)}`\n\n const newNavItem = `
  • ${title}
  • `\n $(SELECTOR_TAB_NAVBAR_NAV).append(escape(newNavItem))\n\n const newTabItem = `
    `\n $(SELECTOR_TAB_CONTENT).append(escape(newTabItem))\n\n if (autoOpen) {\n if (this._config.loadingScreen) {\n const $loadingScreen = $(SELECTOR_TAB_LOADING)\n $loadingScreen.fadeIn()\n $(`${tabId} iframe`).ready(() => {\n if (typeof this._config.loadingScreen === 'number') {\n this.switchTab(`#${navId}`, this._config.loadingScreen)\n setTimeout(() => {\n $loadingScreen.fadeOut()\n }, this._config.loadingScreen)\n } else {\n this.switchTab(`#${navId}`, this._config.loadingScreen)\n $loadingScreen.fadeOut()\n }\n })\n } else {\n this.switchTab(`#${navId}`)\n }\n }\n\n this.onTabCreated($(`#${navId}`))\n }\n\n openTabSidebar(item, autoOpen = this._config.autoShowNewTab) {\n let $item = $(item).clone()\n if ($item.attr('href') === undefined) {\n $item = $(item).parent('a').clone()\n }\n\n $item.find('.right').remove()\n let title = $item.find('p').text()\n if (title === '') {\n title = $item.text()\n }\n\n const link = $item.attr('href')\n if (link === '#' || link === '' || link === undefined) {\n return\n }\n\n this.createTab(title, link, link.replace('.html', '').replace('./', '').replaceAll('/', '-'), autoOpen)\n }\n\n switchTab(item) {\n const $item = $(item)\n const tabId = $item.attr('href')\n\n $(SELECTOR_TAB_EMPTY).hide()\n $(`${SELECTOR_TAB_NAVBAR_NAV} .active`).tab('dispose').removeClass('active')\n this._fixHeight()\n\n $item.tab('show')\n $item.parents('li').addClass('active')\n this.onTabChanged($item)\n\n if (this._config.autoItemActive) {\n this._setItemActive($(`${tabId} iframe`).attr('src'))\n }\n }\n\n removeActiveTab() {\n const $navItem = $(`${SELECTOR_TAB_NAVBAR_NAV_ITEM}.active`)\n const $navItemParent = $navItem.parent()\n const navItemIndex = $navItem.index()\n $navItem.remove()\n $('.tab-pane.active').remove()\n\n if ($(SELECTOR_TAB_CONTENT).children().length == $(`${SELECTOR_TAB_EMPTY}, ${SELECTOR_TAB_LOADING}`).length) {\n $(SELECTOR_TAB_EMPTY).show()\n } else {\n const prevNavItemIndex = navItemIndex - 1\n this.switchTab($navItemParent.children().eq(prevNavItemIndex).find('a'))\n }\n }\n\n toggleFullscreen() {\n if ($('body').hasClass(CLASS_NAME_FULLSCREEN_MODE)) {\n $(`${SELECTOR_DATA_TOGGLE_FULLSCREEN} i`).removeClass(this._config.iconMinimize).addClass(this._config.iconMaximize)\n $('body').removeClass(CLASS_NAME_FULLSCREEN_MODE)\n $(`${SELECTOR_TAB_EMPTY}, ${SELECTOR_TAB_LOADING}`).height('auto')\n $(SELECTOR_CONTENT_WRAPPER).height('auto')\n $(SELECTOR_CONTENT_IFRAME).height('auto')\n } else {\n $(`${SELECTOR_DATA_TOGGLE_FULLSCREEN} i`).removeClass(this._config.iconMaximize).addClass(this._config.iconMinimize)\n $('body').addClass(CLASS_NAME_FULLSCREEN_MODE)\n }\n\n $(window).trigger('resize')\n this._fixHeight(true)\n }\n\n // Private\n\n _init() {\n if (window.frameElement && this._config.autoIframeMode) {\n $('body').addClass(CLASS_NAME_IFRAME_MODE)\n } else if ($(SELECTOR_CONTENT_WRAPPER).hasClass(CLASS_NAME_IFRAME_MODE)) {\n this._setupListeners()\n this._fixHeight(true)\n }\n }\n\n _navScroll(offset) {\n const leftPos = $(SELECTOR_TAB_NAVBAR_NAV).scrollLeft()\n $(SELECTOR_TAB_NAVBAR_NAV).animate({ scrollLeft: (leftPos + offset) }, 250, 'linear')\n }\n\n _setupListeners() {\n $(window).on('resize', () => {\n setTimeout(() => {\n this._fixHeight()\n }, 1)\n })\n $(document).on('click', SELECTOR_SIDEBAR_MENU_ITEM, e => {\n e.preventDefault()\n this.openTabSidebar(e.target)\n })\n\n if (this._config.useNavbarItems) {\n $(document).on('click', `${SELECTOR_HEADER_MENU_ITEM}, ${SELECTOR_HEADER_DROPDOWN_ITEM}`, e => {\n e.preventDefault()\n this.openTabSidebar(e.target)\n })\n }\n\n $(document).on('click', SELECTOR_TAB_NAVBAR_NAV_ITEM, e => {\n e.preventDefault()\n this.onTabClick(e.target)\n this.switchTab(e.target)\n })\n $(document).on('click', SELECTOR_DATA_TOGGLE_CLOSE, e => {\n e.preventDefault()\n this.removeActiveTab()\n })\n $(document).on('click', SELECTOR_DATA_TOGGLE_FULLSCREEN, e => {\n e.preventDefault()\n this.toggleFullscreen()\n })\n let mousedown = false\n let mousedownInterval = null\n $(document).on('mousedown', SELECTOR_DATA_TOGGLE_SCROLL_LEFT, e => {\n e.preventDefault()\n clearInterval(mousedownInterval)\n\n let { scrollOffset } = this._config\n\n if (!this._config.scrollBehaviorSwap) {\n scrollOffset = -scrollOffset\n }\n\n mousedown = true\n this._navScroll(scrollOffset)\n\n mousedownInterval = setInterval(() => {\n this._navScroll(scrollOffset)\n }, 250)\n })\n $(document).on('mousedown', SELECTOR_DATA_TOGGLE_SCROLL_RIGHT, e => {\n e.preventDefault()\n clearInterval(mousedownInterval)\n\n let { scrollOffset } = this._config\n\n if (this._config.scrollBehaviorSwap) {\n scrollOffset = -scrollOffset\n }\n\n mousedown = true\n this._navScroll(scrollOffset)\n\n mousedownInterval = setInterval(() => {\n this._navScroll(scrollOffset)\n }, 250)\n })\n $(document).on('mouseup', () => {\n if (mousedown) {\n mousedown = false\n clearInterval(mousedownInterval)\n mousedownInterval = null\n }\n })\n }\n\n _setItemActive(href) {\n $(`${SELECTOR_SIDEBAR_MENU_ITEM}, ${SELECTOR_HEADER_DROPDOWN_ITEM}`).removeClass('active')\n $(SELECTOR_HEADER_MENU_ITEM).parent().removeClass('active')\n\n const $headerMenuItem = $(`${SELECTOR_HEADER_MENU_ITEM}[href$=\"${href}\"]`)\n const $headerDropdownItem = $(`${SELECTOR_HEADER_DROPDOWN_ITEM}[href$=\"${href}\"]`)\n const $sidebarMenuItem = $(`${SELECTOR_SIDEBAR_MENU_ITEM}[href$=\"${href}\"]`)\n\n $headerMenuItem.each((i, e) => {\n $(e).parent().addClass('active')\n })\n $headerDropdownItem.each((i, e) => {\n $(e).addClass('active')\n })\n $sidebarMenuItem.each((i, e) => {\n $(e).addClass('active')\n $(e).parents('.nav-treeview').prevAll('.nav-link').addClass('active')\n })\n }\n\n _fixHeight(tabEmpty = false) {\n if ($('body').hasClass(CLASS_NAME_FULLSCREEN_MODE)) {\n const windowHeight = $(window).height()\n $(`${SELECTOR_TAB_EMPTY}, ${SELECTOR_TAB_LOADING}`).height(windowHeight)\n $(SELECTOR_CONTENT_WRAPPER).height(windowHeight)\n $(SELECTOR_CONTENT_IFRAME).height(windowHeight)\n } else {\n const contentWrapperHeight = parseFloat($(SELECTOR_CONTENT_WRAPPER).css('min-height'))\n const navbarHeight = $(SELECTOR_TAB_NAV).outerHeight()\n if (tabEmpty == true) {\n setTimeout(() => {\n $(`${SELECTOR_TAB_EMPTY}, ${SELECTOR_TAB_LOADING}`).height(contentWrapperHeight - navbarHeight)\n }, 50)\n } else {\n $(SELECTOR_CONTENT_IFRAME).height(contentWrapperHeight - navbarHeight)\n }\n }\n }\n\n // Static\n\n static _jQueryInterface(operation, ...args) {\n let data = $(this).data(DATA_KEY)\n const _options = $.extend({}, Default, $(this).data())\n\n if (!data) {\n data = new IFrame(this, _options)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof operation === 'string' && operation.match(/createTab|openTabSidebar|switchTab|removeActiveTab/)) {\n data[operation](...args)\n }\n }\n}\n\n/**\n * Data API\n * ====================================================\n */\n\n$(window).on('load', () => {\n IFrame._jQueryInterface.call($(SELECTOR_DATA_TOGGLE))\n})\n\n/**\n * jQuery API\n * ====================================================\n */\n\n$.fn[NAME] = IFrame._jQueryInterface\n$.fn[NAME].Constructor = IFrame\n$.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return IFrame._jQueryInterface\n}\n\nexport default IFrame\n","/**\n * --------------------------------------------\n * AdminLTE Layout.js\n * License MIT\n * --------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * Constants\n * ====================================================\n */\n\nconst NAME = 'Layout'\nconst DATA_KEY = 'lte.layout'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst SELECTOR_HEADER = '.main-header'\nconst SELECTOR_MAIN_SIDEBAR = '.main-sidebar'\nconst SELECTOR_SIDEBAR = '.main-sidebar .sidebar'\nconst SELECTOR_CONTENT = '.content-wrapper'\nconst SELECTOR_CONTROL_SIDEBAR_CONTENT = '.control-sidebar-content'\nconst SELECTOR_CONTROL_SIDEBAR_BTN = '[data-widget=\"control-sidebar\"]'\nconst SELECTOR_FOOTER = '.main-footer'\nconst SELECTOR_PUSHMENU_BTN = '[data-widget=\"pushmenu\"]'\nconst SELECTOR_LOGIN_BOX = '.login-box'\nconst SELECTOR_REGISTER_BOX = '.register-box'\n\nconst CLASS_NAME_SIDEBAR_COLLAPSED = 'sidebar-collapse'\nconst CLASS_NAME_SIDEBAR_FOCUSED = 'sidebar-focused'\nconst CLASS_NAME_LAYOUT_FIXED = 'layout-fixed'\nconst CLASS_NAME_CONTROL_SIDEBAR_SLIDE_OPEN = 'control-sidebar-slide-open'\nconst CLASS_NAME_CONTROL_SIDEBAR_OPEN = 'control-sidebar-open'\n\nconst Default = {\n scrollbarTheme: 'os-theme-light',\n scrollbarAutoHide: 'l',\n panelAutoHeight: true,\n panelAutoHeightMode: 'min-height',\n loginRegisterAutoHeight: true\n}\n\n/**\n * Class Definition\n * ====================================================\n */\n\nclass Layout {\n constructor(element, config) {\n this._config = config\n this._element = element\n\n this._init()\n }\n\n // Public\n\n fixLayoutHeight(extra = null) {\n const $body = $('body')\n let controlSidebar = 0\n\n if ($body.hasClass(CLASS_NAME_CONTROL_SIDEBAR_SLIDE_OPEN) || $body.hasClass(CLASS_NAME_CONTROL_SIDEBAR_OPEN) || extra === 'control_sidebar') {\n controlSidebar = $(SELECTOR_CONTROL_SIDEBAR_CONTENT).outerHeight()\n }\n\n const heights = {\n window: $(window).height(),\n header: $(SELECTOR_HEADER).length > 0 ? $(SELECTOR_HEADER).outerHeight() : 0,\n footer: $(SELECTOR_FOOTER).length > 0 ? $(SELECTOR_FOOTER).outerHeight() : 0,\n sidebar: $(SELECTOR_SIDEBAR).length > 0 ? $(SELECTOR_SIDEBAR).height() : 0,\n controlSidebar\n }\n\n const max = this._max(heights)\n let offset = this._config.panelAutoHeight\n\n if (offset === true) {\n offset = 0\n }\n\n const $contentSelector = $(SELECTOR_CONTENT)\n\n if (offset !== false) {\n if (max === heights.controlSidebar) {\n $contentSelector.css(this._config.panelAutoHeightMode, (max + offset))\n } else if (max === heights.window) {\n $contentSelector.css(this._config.panelAutoHeightMode, (max + offset) - heights.header - heights.footer)\n } else {\n $contentSelector.css(this._config.panelAutoHeightMode, (max + offset) - heights.header)\n }\n\n if (heights.controlSidebar + heights.footer >= heights.sidebar && heights.controlSidebar != 0) {\n $contentSelector.css(this._config.panelAutoHeightMode, (heights.controlSidebar + offset))\n }\n\n if (this._isFooterFixed()) {\n $contentSelector.css(this._config.panelAutoHeightMode, parseFloat($contentSelector.css(this._config.panelAutoHeightMode)) + heights.footer)\n }\n }\n\n if (!$body.hasClass(CLASS_NAME_LAYOUT_FIXED)) {\n return\n }\n\n if (offset !== false) {\n $contentSelector.css(this._config.panelAutoHeightMode, (max + offset) - heights.header - heights.footer)\n }\n\n if (typeof $.fn.overlayScrollbars !== 'undefined') {\n $(SELECTOR_SIDEBAR).overlayScrollbars({\n className: this._config.scrollbarTheme,\n sizeAutoCapable: true,\n scrollbars: {\n autoHide: this._config.scrollbarAutoHide,\n clickScrolling: true\n }\n })\n } else {\n $(SELECTOR_SIDEBAR).css('overflow-y', 'auto')\n }\n }\n\n fixLoginRegisterHeight() {\n const $body = $('body')\n const $selector = $(`${SELECTOR_LOGIN_BOX}, ${SELECTOR_REGISTER_BOX}`)\n\n if ($selector.length === 0) {\n $body.css('height', 'auto')\n $('html').css('height', 'auto')\n } else {\n const boxHeight = $selector.height()\n\n if ($body.css(this._config.panelAutoHeightMode) !== boxHeight) {\n $body.css(this._config.panelAutoHeightMode, boxHeight)\n }\n }\n }\n\n // Private\n\n _init() {\n // Activate layout height watcher\n this.fixLayoutHeight()\n\n if (this._config.loginRegisterAutoHeight === true) {\n this.fixLoginRegisterHeight()\n } else if (this._config.loginRegisterAutoHeight === parseInt(this._config.loginRegisterAutoHeight, 10)) {\n setInterval(this.fixLoginRegisterHeight, this._config.loginRegisterAutoHeight)\n }\n\n $(SELECTOR_SIDEBAR)\n .on('collapsed.lte.treeview expanded.lte.treeview', () => {\n this.fixLayoutHeight()\n })\n\n $(SELECTOR_MAIN_SIDEBAR)\n .on('mouseenter mouseleave', () => {\n if ($('body').hasClass(CLASS_NAME_SIDEBAR_COLLAPSED)) {\n this.fixLayoutHeight()\n }\n })\n\n $(SELECTOR_PUSHMENU_BTN)\n .on('collapsed.lte.pushmenu shown.lte.pushmenu', () => {\n setTimeout(() => {\n this.fixLayoutHeight()\n }, 300)\n })\n\n $(SELECTOR_CONTROL_SIDEBAR_BTN)\n .on('collapsed.lte.controlsidebar', () => {\n this.fixLayoutHeight()\n })\n .on('expanded.lte.controlsidebar', () => {\n this.fixLayoutHeight('control_sidebar')\n })\n\n $(window).resize(() => {\n this.fixLayoutHeight()\n })\n\n $(document).ready(() => {\n this.fixLayoutHeight()\n })\n\n setTimeout(() => {\n $('body.hold-transition').removeClass('hold-transition')\n }, 50)\n }\n\n _max(numbers) {\n // Calculate the maximum number in a list\n let max = 0\n\n Object.keys(numbers).forEach(key => {\n if (numbers[key] > max) {\n max = numbers[key]\n }\n })\n\n return max\n }\n\n _isFooterFixed() {\n return $(SELECTOR_FOOTER).css('position') === 'fixed'\n }\n\n // Static\n\n static _jQueryInterface(config = '') {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _options = $.extend({}, Default, $(this).data())\n\n if (!data) {\n data = new Layout($(this), _options)\n $(this).data(DATA_KEY, data)\n }\n\n if (config === 'init' || config === '') {\n data._init()\n } else if (config === 'fixLayoutHeight' || config === 'fixLoginRegisterHeight') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API\n * ====================================================\n */\n\n$(window).on('load', () => {\n Layout._jQueryInterface.call($('body'))\n})\n\n$(`${SELECTOR_SIDEBAR} a`).on('focusin', () => {\n $(SELECTOR_MAIN_SIDEBAR).addClass(CLASS_NAME_SIDEBAR_FOCUSED)\n})\n\n$(`${SELECTOR_SIDEBAR} a`).on('focusout', () => {\n $(SELECTOR_MAIN_SIDEBAR).removeClass(CLASS_NAME_SIDEBAR_FOCUSED)\n})\n\n/**\n * jQuery API\n * ====================================================\n */\n\n$.fn[NAME] = Layout._jQueryInterface\n$.fn[NAME].Constructor = Layout\n$.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Layout._jQueryInterface\n}\n\nexport default Layout\n","/**\n * --------------------------------------------\n * AdminLTE PushMenu.js\n * License MIT\n * --------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * Constants\n * ====================================================\n */\n\nconst NAME = 'PushMenu'\nconst DATA_KEY = 'lte.pushmenu'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst EVENT_COLLAPSED = `collapsed${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst SELECTOR_TOGGLE_BUTTON = '[data-widget=\"pushmenu\"]'\nconst SELECTOR_BODY = 'body'\nconst SELECTOR_OVERLAY = '#sidebar-overlay'\nconst SELECTOR_WRAPPER = '.wrapper'\n\nconst CLASS_NAME_COLLAPSED = 'sidebar-collapse'\nconst CLASS_NAME_OPEN = 'sidebar-open'\nconst CLASS_NAME_IS_OPENING = 'sidebar-is-opening'\nconst CLASS_NAME_CLOSED = 'sidebar-closed'\n\nconst Default = {\n autoCollapseSize: 1200,\n enableRemember: false,\n noTransitionAfterReload: true\n}\n\n/**\n * Class Definition\n * ====================================================\n */\n\nclass PushMenu {\n constructor(element, options) {\n this._element = element\n this._options = $.extend({}, Default, options)\n\n if ($(SELECTOR_OVERLAY).length === 0) {\n this._addOverlay()\n }\n\n this._init()\n }\n\n // Public\n\n expand() {\n const $bodySelector = $(SELECTOR_BODY)\n\n if (this._options.autoCollapseSize) {\n if ($(window).width() <= this._options.autoCollapseSize) {\n $bodySelector.addClass(CLASS_NAME_OPEN)\n }\n }\n\n $bodySelector.addClass(CLASS_NAME_IS_OPENING).removeClass(`${CLASS_NAME_COLLAPSED} ${CLASS_NAME_CLOSED}`).delay(50).queue(function () {\n $bodySelector.removeClass(CLASS_NAME_IS_OPENING)\n $(this).dequeue()\n })\n\n if (this._options.enableRemember) {\n localStorage.setItem(`remember${EVENT_KEY}`, CLASS_NAME_OPEN)\n }\n\n $(this._element).trigger($.Event(EVENT_SHOWN))\n }\n\n collapse() {\n const $bodySelector = $(SELECTOR_BODY)\n\n if (this._options.autoCollapseSize) {\n if ($(window).width() <= this._options.autoCollapseSize) {\n $bodySelector.removeClass(CLASS_NAME_OPEN).addClass(CLASS_NAME_CLOSED)\n }\n }\n\n $bodySelector.addClass(CLASS_NAME_COLLAPSED)\n\n if (this._options.enableRemember) {\n localStorage.setItem(`remember${EVENT_KEY}`, CLASS_NAME_COLLAPSED)\n }\n\n $(this._element).trigger($.Event(EVENT_COLLAPSED))\n }\n\n toggle() {\n if ($(SELECTOR_BODY).hasClass(CLASS_NAME_COLLAPSED)) {\n this.expand()\n } else {\n this.collapse()\n }\n }\n\n autoCollapse(resize = false) {\n if (!this._options.autoCollapseSize) {\n return\n }\n\n const $bodySelector = $(SELECTOR_BODY)\n\n if ($(window).width() <= this._options.autoCollapseSize) {\n if (!$bodySelector.hasClass(CLASS_NAME_OPEN)) {\n this.collapse()\n }\n } else if (resize === true) {\n if ($bodySelector.hasClass(CLASS_NAME_OPEN)) {\n $bodySelector.removeClass(CLASS_NAME_OPEN)\n } else if ($bodySelector.hasClass(CLASS_NAME_CLOSED)) {\n this.expand()\n }\n }\n }\n\n remember() {\n if (!this._options.enableRemember) {\n return\n }\n\n const $body = $('body')\n const toggleState = localStorage.getItem(`remember${EVENT_KEY}`)\n\n if (toggleState === CLASS_NAME_COLLAPSED) {\n if (this._options.noTransitionAfterReload) {\n $body.addClass('hold-transition').addClass(CLASS_NAME_COLLAPSED).delay(50).queue(function () {\n $(this).removeClass('hold-transition')\n $(this).dequeue()\n })\n } else {\n $body.addClass(CLASS_NAME_COLLAPSED)\n }\n } else if (this._options.noTransitionAfterReload) {\n $body.addClass('hold-transition').removeClass(CLASS_NAME_COLLAPSED).delay(50).queue(function () {\n $(this).removeClass('hold-transition')\n $(this).dequeue()\n })\n } else {\n $body.removeClass(CLASS_NAME_COLLAPSED)\n }\n }\n\n // Private\n\n _init() {\n this.remember()\n this.autoCollapse()\n\n $(window).resize(() => {\n this.autoCollapse(true)\n })\n }\n\n _addOverlay() {\n const overlay = $('
    ', {\n id: 'sidebar-overlay'\n })\n\n overlay.on('click', () => {\n this.collapse()\n })\n\n $(SELECTOR_WRAPPER).append(overlay)\n }\n\n // Static\n\n static _jQueryInterface(operation) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _options = $.extend({}, Default, $(this).data())\n\n if (!data) {\n data = new PushMenu(this, _options)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof operation === 'string' && operation.match(/collapse|expand|toggle/)) {\n data[operation]()\n }\n })\n }\n}\n\n/**\n * Data API\n * ====================================================\n */\n\n$(document).on('click', SELECTOR_TOGGLE_BUTTON, event => {\n event.preventDefault()\n\n let button = event.currentTarget\n\n if ($(button).data('widget') !== 'pushmenu') {\n button = $(button).closest(SELECTOR_TOGGLE_BUTTON)\n }\n\n PushMenu._jQueryInterface.call($(button), 'toggle')\n})\n\n$(window).on('load', () => {\n PushMenu._jQueryInterface.call($(SELECTOR_TOGGLE_BUTTON))\n})\n\n/**\n * jQuery API\n * ====================================================\n */\n\n$.fn[NAME] = PushMenu._jQueryInterface\n$.fn[NAME].Constructor = PushMenu\n$.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return PushMenu._jQueryInterface\n}\n\nexport default PushMenu\n","/**\n * --------------------------------------------\n * AdminLTE SidebarSearch.js\n * License MIT\n * --------------------------------------------\n */\n\nimport $, { trim } from 'jquery'\n\n/**\n * Constants\n * ====================================================\n */\n\nconst NAME = 'SidebarSearch'\nconst DATA_KEY = 'lte.sidebar-search'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_OPEN = 'sidebar-search-open'\nconst CLASS_NAME_ICON_SEARCH = 'fa-search'\nconst CLASS_NAME_ICON_CLOSE = 'fa-times'\nconst CLASS_NAME_HEADER = 'nav-header'\nconst CLASS_NAME_SEARCH_RESULTS = 'sidebar-search-results'\nconst CLASS_NAME_LIST_GROUP = 'list-group'\n\nconst SELECTOR_DATA_WIDGET = '[data-widget=\"sidebar-search\"]'\nconst SELECTOR_SIDEBAR = '.main-sidebar .nav-sidebar'\nconst SELECTOR_NAV_LINK = '.nav-link'\nconst SELECTOR_NAV_TREEVIEW = '.nav-treeview'\nconst SELECTOR_SEARCH_INPUT = `${SELECTOR_DATA_WIDGET} .form-control`\nconst SELECTOR_SEARCH_BUTTON = `${SELECTOR_DATA_WIDGET} .btn`\nconst SELECTOR_SEARCH_ICON = `${SELECTOR_SEARCH_BUTTON} i`\nconst SELECTOR_SEARCH_LIST_GROUP = `.${CLASS_NAME_LIST_GROUP}`\nconst SELECTOR_SEARCH_RESULTS = `.${CLASS_NAME_SEARCH_RESULTS}`\nconst SELECTOR_SEARCH_RESULTS_GROUP = `${SELECTOR_SEARCH_RESULTS} .${CLASS_NAME_LIST_GROUP}`\n\nconst Default = {\n arrowSign: '->',\n minLength: 3,\n maxResults: 7,\n highlightName: true,\n highlightPath: false,\n highlightClass: 'text-light',\n notFoundText: 'No element found!'\n}\n\nconst SearchItems = []\n\n/**\n * Class Definition\n * ====================================================\n */\n\nclass SidebarSearch {\n constructor(_element, _options) {\n this.element = _element\n this.options = $.extend({}, Default, _options)\n this.items = []\n }\n\n // Public\n\n init() {\n if ($(SELECTOR_DATA_WIDGET).length == 0) {\n return\n }\n\n if ($(SELECTOR_DATA_WIDGET).next(SELECTOR_SEARCH_RESULTS).length == 0) {\n $(SELECTOR_DATA_WIDGET).after(\n $('
    ', { class: CLASS_NAME_SEARCH_RESULTS })\n )\n }\n\n if ($(SELECTOR_SEARCH_RESULTS).children(SELECTOR_SEARCH_LIST_GROUP).length == 0) {\n $(SELECTOR_SEARCH_RESULTS).append(\n $('
    ', { class: CLASS_NAME_LIST_GROUP })\n )\n }\n\n this._addNotFound()\n\n $(SELECTOR_SIDEBAR).children().each((i, child) => {\n this._parseItem(child)\n })\n }\n\n search() {\n const searchValue = $(SELECTOR_SEARCH_INPUT).val().toLowerCase()\n if (searchValue.length < this.options.minLength) {\n $(SELECTOR_SEARCH_RESULTS_GROUP).empty()\n this._addNotFound()\n this.close()\n return\n }\n\n const searchResults = SearchItems.filter(item => (item.name).toLowerCase().includes(searchValue))\n const endResults = $(searchResults.slice(0, this.options.maxResults))\n $(SELECTOR_SEARCH_RESULTS_GROUP).empty()\n\n if (endResults.length === 0) {\n this._addNotFound()\n } else {\n endResults.each((i, result) => {\n $(SELECTOR_SEARCH_RESULTS_GROUP).append(this._renderItem(escape(result.name), escape(result.link), result.path))\n })\n }\n\n this.open()\n }\n\n open() {\n $(SELECTOR_DATA_WIDGET).parent().addClass(CLASS_NAME_OPEN)\n $(SELECTOR_SEARCH_ICON).removeClass(CLASS_NAME_ICON_SEARCH).addClass(CLASS_NAME_ICON_CLOSE)\n }\n\n close() {\n $(SELECTOR_DATA_WIDGET).parent().removeClass(CLASS_NAME_OPEN)\n $(SELECTOR_SEARCH_ICON).removeClass(CLASS_NAME_ICON_CLOSE).addClass(CLASS_NAME_ICON_SEARCH)\n }\n\n toggle() {\n if ($(SELECTOR_DATA_WIDGET).parent().hasClass(CLASS_NAME_OPEN)) {\n this.close()\n } else {\n this.open()\n }\n }\n\n // Private\n\n _parseItem(item, path = []) {\n if ($(item).hasClass(CLASS_NAME_HEADER)) {\n return\n }\n\n const itemObject = {}\n const navLink = $(item).clone().find(`> ${SELECTOR_NAV_LINK}`)\n const navTreeview = $(item).clone().find(`> ${SELECTOR_NAV_TREEVIEW}`)\n\n const link = navLink.attr('href')\n const name = navLink.find('p').children().remove().end().text()\n\n itemObject.name = this._trimText(name)\n itemObject.link = link\n itemObject.path = path\n\n if (navTreeview.length === 0) {\n SearchItems.push(itemObject)\n } else {\n const newPath = itemObject.path.concat([itemObject.name])\n navTreeview.children().each((i, child) => {\n this._parseItem(child, newPath)\n })\n }\n }\n\n _trimText(text) {\n return trim(text.replace(/(\\r\\n|\\n|\\r)/gm, ' '))\n }\n\n _renderItem(name, link, path) {\n path = path.join(` ${this.options.arrowSign} `)\n name = unescape(name)\n\n if (this.options.highlightName || this.options.highlightPath) {\n const searchValue = $(SELECTOR_SEARCH_INPUT).val().toLowerCase()\n const regExp = new RegExp(searchValue, 'gi')\n\n if (this.options.highlightName) {\n name = name.replace(\n regExp,\n str => {\n return `${str}`\n }\n )\n }\n\n if (this.options.highlightPath) {\n path = path.replace(\n regExp,\n str => {\n return `${str}`\n }\n )\n }\n }\n\n const groupItemElement = $('', {\n href: link,\n class: 'list-group-item'\n })\n const searchTitleElement = $('
    ', {\n class: 'search-title'\n }).html(name)\n const searchPathElement = $('
    ', {\n class: 'search-path'\n }).html(path)\n\n groupItemElement.append(searchTitleElement).append(searchPathElement)\n\n return groupItemElement\n }\n\n _addNotFound() {\n $(SELECTOR_SEARCH_RESULTS_GROUP).append(this._renderItem(this.options.notFoundText, '#', []))\n }\n\n // Static\n\n static _jQueryInterface(config) {\n let data = $(this).data(DATA_KEY)\n\n if (!data) {\n data = $(this).data()\n }\n\n const _options = $.extend({}, Default, typeof config === 'object' ? config : data)\n const plugin = new SidebarSearch($(this), _options)\n\n $(this).data(DATA_KEY, typeof config === 'object' ? config : data)\n\n if (typeof config === 'string' && config.match(/init|toggle|close|open|search/)) {\n plugin[config]()\n } else {\n plugin.init()\n }\n }\n}\n\n/**\n * Data API\n * ====================================================\n */\n$(document).on('click', SELECTOR_SEARCH_BUTTON, event => {\n event.preventDefault()\n\n SidebarSearch._jQueryInterface.call($(SELECTOR_DATA_WIDGET), 'toggle')\n})\n\n$(document).on('keyup', SELECTOR_SEARCH_INPUT, event => {\n if (event.keyCode == 38) {\n event.preventDefault()\n $(SELECTOR_SEARCH_RESULTS_GROUP).children().last().focus()\n return\n }\n\n if (event.keyCode == 40) {\n event.preventDefault()\n $(SELECTOR_SEARCH_RESULTS_GROUP).children().first().focus()\n return\n }\n\n setTimeout(() => {\n SidebarSearch._jQueryInterface.call($(SELECTOR_DATA_WIDGET), 'search')\n }, 100)\n})\n\n$(document).on('keydown', SELECTOR_SEARCH_RESULTS_GROUP, event => {\n const $focused = $(':focus')\n\n if (event.keyCode == 38) {\n event.preventDefault()\n\n if ($focused.is(':first-child')) {\n $focused.siblings().last().focus()\n } else {\n $focused.prev().focus()\n }\n }\n\n if (event.keyCode == 40) {\n event.preventDefault()\n\n if ($focused.is(':last-child')) {\n $focused.siblings().first().focus()\n } else {\n $focused.next().focus()\n }\n }\n})\n\n$(window).on('load', () => {\n SidebarSearch._jQueryInterface.call($(SELECTOR_DATA_WIDGET), 'init')\n})\n\n/**\n * jQuery API\n * ====================================================\n */\n\n$.fn[NAME] = SidebarSearch._jQueryInterface\n$.fn[NAME].Constructor = SidebarSearch\n$.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return SidebarSearch._jQueryInterface\n}\n\nexport default SidebarSearch\n","/**\n * --------------------------------------------\n * AdminLTE NavbarSearch.js\n * License MIT\n * --------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * Constants\n * ====================================================\n */\n\nconst NAME = 'NavbarSearch'\nconst DATA_KEY = 'lte.navbar-search'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst SELECTOR_TOGGLE_BUTTON = '[data-widget=\"navbar-search\"]'\nconst SELECTOR_SEARCH_BLOCK = '.navbar-search-block'\nconst SELECTOR_SEARCH_INPUT = '.navbar-search-block .form-control'\n\nconst CLASS_NAME_OPEN = 'navbar-search-open'\n\nconst Default = {\n resetOnClose: true\n}\n\n/**\n * Class Definition\n * ====================================================\n */\n\nclass NavbarSearch {\n constructor(_element, _options) {\n this._element = _element\n this._config = $.extend({}, Default, _options)\n }\n\n // Public\n\n open() {\n $(SELECTOR_SEARCH_BLOCK).css('display', 'flex').hide().fadeIn().addClass(CLASS_NAME_OPEN)\n $(SELECTOR_SEARCH_INPUT).focus()\n }\n\n close() {\n $(SELECTOR_SEARCH_BLOCK).fadeOut().removeClass(CLASS_NAME_OPEN)\n\n if (this._config.resetOnClose) {\n $(SELECTOR_SEARCH_INPUT).val('')\n }\n }\n\n toggle() {\n if ($(SELECTOR_SEARCH_BLOCK).hasClass(CLASS_NAME_OPEN)) {\n this.close()\n } else {\n this.open()\n }\n }\n\n // Static\n\n static _jQueryInterface(options) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n\n if (!data) {\n data = new NavbarSearch(this, options)\n $(this).data(DATA_KEY, data)\n }\n\n if (!/toggle|close|open/.test(options)) {\n throw new Error(`Undefined method ${options}`)\n }\n\n data[options]()\n })\n }\n}\n\n/**\n * Data API\n * ====================================================\n */\n$(document).on('click', SELECTOR_TOGGLE_BUTTON, event => {\n event.preventDefault()\n\n let button = $(event.currentTarget)\n\n if (button.data('widget') !== 'navbar-search') {\n button = button.closest(SELECTOR_TOGGLE_BUTTON)\n }\n\n NavbarSearch._jQueryInterface.call(button, 'toggle')\n})\n\n/**\n * jQuery API\n * ====================================================\n */\n\n$.fn[NAME] = NavbarSearch._jQueryInterface\n$.fn[NAME].Constructor = NavbarSearch\n$.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return NavbarSearch._jQueryInterface\n}\n\nexport default NavbarSearch\n","/**\n * --------------------------------------------\n * AdminLTE Toasts.js\n * License MIT\n * --------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * Constants\n * ====================================================\n */\n\nconst NAME = 'Toasts'\nconst DATA_KEY = 'lte.toasts'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst EVENT_INIT = `init${EVENT_KEY}`\nconst EVENT_CREATED = `created${EVENT_KEY}`\nconst EVENT_REMOVED = `removed${EVENT_KEY}`\n\nconst SELECTOR_CONTAINER_TOP_RIGHT = '#toastsContainerTopRight'\nconst SELECTOR_CONTAINER_TOP_LEFT = '#toastsContainerTopLeft'\nconst SELECTOR_CONTAINER_BOTTOM_RIGHT = '#toastsContainerBottomRight'\nconst SELECTOR_CONTAINER_BOTTOM_LEFT = '#toastsContainerBottomLeft'\n\nconst CLASS_NAME_TOP_RIGHT = 'toasts-top-right'\nconst CLASS_NAME_TOP_LEFT = 'toasts-top-left'\nconst CLASS_NAME_BOTTOM_RIGHT = 'toasts-bottom-right'\nconst CLASS_NAME_BOTTOM_LEFT = 'toasts-bottom-left'\n\nconst POSITION_TOP_RIGHT = 'topRight'\nconst POSITION_TOP_LEFT = 'topLeft'\nconst POSITION_BOTTOM_RIGHT = 'bottomRight'\nconst POSITION_BOTTOM_LEFT = 'bottomLeft'\n\nconst Default = {\n position: POSITION_TOP_RIGHT,\n fixed: true,\n autohide: false,\n autoremove: true,\n delay: 1000,\n fade: true,\n icon: null,\n image: null,\n imageAlt: null,\n imageHeight: '25px',\n title: null,\n subtitle: null,\n close: true,\n body: null,\n class: null\n}\n\n/**\n * Class Definition\n * ====================================================\n */\nclass Toasts {\n constructor(element, config) {\n this._config = config\n this._prepareContainer()\n\n $('body').trigger($.Event(EVENT_INIT))\n }\n\n // Public\n\n create() {\n const toast = $('
    ')\n\n toast.data('autohide', this._config.autohide)\n toast.data('animation', this._config.fade)\n\n if (this._config.class) {\n toast.addClass(this._config.class)\n }\n\n if (this._config.delay && this._config.delay != 500) {\n toast.data('delay', this._config.delay)\n }\n\n const toastHeader = $('
    ')\n\n if (this._config.image != null) {\n const toastImage = $('').addClass('rounded mr-2').attr('src', this._config.image).attr('alt', this._config.imageAlt)\n\n if (this._config.imageHeight != null) {\n toastImage.height(this._config.imageHeight).width('auto')\n }\n\n toastHeader.append(toastImage)\n }\n\n if (this._config.icon != null) {\n toastHeader.append($('').addClass('mr-2').addClass(this._config.icon))\n }\n\n if (this._config.title != null) {\n toastHeader.append($('').addClass('mr-auto').html(this._config.title))\n }\n\n if (this._config.subtitle != null) {\n toastHeader.append($('').html(this._config.subtitle))\n }\n\n if (this._config.close == true) {\n const toastClose = $('',\n * '
    '\n * ].join(''),\n * rightArrowContent: [\n * '
    ',\n * ' ',\n * '
    '\n * ].join('')\n *\n * enableRtlSupport:\n * set to true if you want your site to support\n * right-to-left languages. If true, the plugin will\n * check the page's tag for attribute dir=\"rtl\"\n * and will adjust its behavior accordingly.\n * handleDelayedScrollbar:\n * set to true if you experience a situation where the\n * right scroll arrow wraps to the next line due to a\n * vertical scrollbar coming into existence on the page\n * after the plugin already calculated its width without\n * a scrollbar present. This would occur if, for example,\n * the bulk of the page's content loaded after a delay, \n * and only then did a vertical scrollbar become necessary.\n * It would also occur if a vertical scrollbar only appeared \n * on selection of a particular tab that had more content \n * than the default tab.\n * bootstrapVersion:\n * set to 4 if you're using Boostrap 4. Default is 3.\n * Bootstrap 4 handles some things differently than 3\n * (e.g., the 'active' class gets applied to the tab's\n * 'li > a' element rather than the 'li' itself).\n *\n *\n * On tabs data change:\n *\n * $('#tabs-inside-here').scrollingTabs('refresh');\n *\n * On tabs data change, if you want the active tab to be set based on\n * the updated tabs data (i.e., you want to override the current\n * active tab setting selected by the user), for example, if you\n * added a new tab and you want it to be the active tab:\n *\n * $('#tabs-inside-here').scrollingTabs('refresh', {\n * forceActiveTab: true\n * });\n *\n * Any options that can be passed into the plugin can be set on the\n * plugin's 'defaults' object instead so you don't have to pass them in:\n *\n * $.fn.scrollingTabs.defaults.tabs = tabs;\n * $.fn.scrollingTabs.defaults.forceActiveTab = true;\n * $.fn.scrollingTabs.defaults.scrollToTabEdge = true;\n * $.fn.scrollingTabs.defaults.disableScrollArrowsOnFullyScrolled = true;\n * $.fn.scrollingTabs.defaults.reverseScroll = true;\n * $.fn.scrollingTabs.defaults.widthMultiplier = 0.5;\n * $.fn.scrollingTabs.defaults.tabClickHandler = function () { };\n *\n *\n * Methods\n * -----------------------------\n * - refresh\n * On window resize, the tabs should refresh themselves, but to force a refresh:\n *\n * $('.nav-tabs').scrollingTabs('refresh');\n *\n * - scrollToActiveTab\n * On window resize, the active tab will automatically be scrolled to\n * if it ends up offscreen, but you can also programmatically force a\n * scroll to the active tab any time (if, for example, you're\n * programmatically setting the active tab) by calling the\n * 'scrollToActiveTab' method:\n *\n * $('.nav-tabs').scrollingTabs('scrollToActiveTab');\n *\n *\n * Events\n * -----------------------------\n * The plugin triggers event 'ready.scrtabs' when the tabs have\n * been wrapped in the scroller and are ready for viewing:\n *\n * $('.nav-tabs')\n * .scrollingTabs()\n * .on('ready.scrtabs', function() {\n * // tabs ready, do my other stuff...\n * });\n *\n * $('#tabs-inside-here')\n * .scrollingTabs({ tabs: tabs })\n * .on('ready.scrtabs', function() {\n * // tabs ready, do my other stuff...\n * });\n *\n *\n * Destroying\n * -----------------------------\n * To destroy:\n *\n * $('.nav-tabs').scrollingTabs('destroy');\n *\n * $('#tabs-inside-here').scrollingTabs('destroy');\n *\n * If you were wrapping markup, the markup will be restored; if your tabs\n * were data-driven, the tabs will be destroyed along with the plugin.\n *\n */\n\n; (function ($, window) {\n 'use strict';\n /* jshint unused:false */\n\n /* exported CONSTANTS */\n var CONSTANTS = {\n CONTINUOUS_SCROLLING_TIMEOUT_INTERVAL: 50, // timeout interval for repeatedly moving the tabs container\n // by one increment while the mouse is held down--decrease to\n // make mousedown continous scrolling faster\n SCROLL_OFFSET_FRACTION: 6, // each click moves the container this fraction of the fixed container--decrease\n // to make the tabs scroll farther per click\n\n DATA_KEY_DDMENU_MODIFIED: 'scrtabsddmenumodified',\n DATA_KEY_IS_MOUSEDOWN: 'scrtabsismousedown',\n DATA_KEY_BOOTSTRAP_TAB: 'bs.tab',\n\n CSS_CLASSES: {\n BOOTSTRAP4: 'scrtabs-bootstrap4',\n RTL: 'scrtabs-rtl',\n SCROLL_ARROW_CLICK_TARGET: 'scrtabs-click-target',\n SCROLL_ARROW_DISABLE: 'scrtabs-disable',\n SCROLL_ARROW_WITH_CLICK_TARGET: 'scrtabs-with-click-target'\n },\n\n SLIDE_DIRECTION: {\n LEFT: 1,\n RIGHT: 2\n },\n\n EVENTS: {\n CLICK: 'click.scrtabs',\n DROPDOWN_MENU_HIDE: 'hide.bs.dropdown.scrtabs',\n DROPDOWN_MENU_SHOW: 'show.bs.dropdown.scrtabs',\n FORCE_REFRESH: 'forcerefresh.scrtabs',\n MOUSEDOWN: 'mousedown.scrtabs',\n MOUSEUP: 'mouseup.scrtabs',\n TABS_READY: 'ready.scrtabs',\n TOUCH_END: 'touchend.scrtabs',\n TOUCH_MOVE: 'touchmove.scrtabs',\n TOUCH_START: 'touchstart.scrtabs',\n WINDOW_RESIZE: 'resize.scrtabs'\n }\n };\n\n // smartresize from Paul Irish (debounced window resize)\n (function (sr) {\n var debounce = function (func, threshold, execAsap) {\n var timeout;\n\n return function debounced() {\n var obj = this, args = arguments;\n function delayed() {\n if (!execAsap) {\n func.apply(obj, args);\n }\n timeout = null;\n }\n\n if (timeout) {\n clearTimeout(timeout);\n } else if (execAsap) {\n func.apply(obj, args);\n }\n\n timeout = setTimeout(delayed, threshold || 100);\n };\n };\n $.fn[sr] = function (fn, customEventName) {\n var eventName = customEventName || CONSTANTS.EVENTS.WINDOW_RESIZE;\n return fn ? this.bind(eventName, debounce(fn)) : this.trigger(sr);\n };\n\n })('smartresizeScrtabs');\n\n /* ***********************************************************************************\n * ElementsHandler - Class that each instance of ScrollingTabsControl will instantiate\n * **********************************************************************************/\n function ElementsHandler(scrollingTabsControl) {\n var ehd = this;\n\n ehd.stc = scrollingTabsControl;\n }\n\n // ElementsHandler prototype methods\n (function (p) {\n p.initElements = function (options) {\n var ehd = this;\n\n ehd.setElementReferences(options);\n ehd.setEventListeners(options);\n };\n\n p.listenForTouchEvents = function () {\n var ehd = this,\n stc = ehd.stc,\n smv = stc.scrollMovement,\n ev = CONSTANTS.EVENTS;\n\n var touching = false;\n var touchStartX;\n var startingContainerLeftPos;\n var newLeftPos;\n\n stc.$movableContainer\n .on(ev.TOUCH_START, function (e) {\n touching = true;\n startingContainerLeftPos = stc.movableContainerLeftPos;\n touchStartX = e.originalEvent.changedTouches[0].pageX;\n })\n .on(ev.TOUCH_END, function () {\n touching = false;\n })\n .on(ev.TOUCH_MOVE, function (e) {\n if (!touching) {\n return;\n }\n\n var touchPageX = e.originalEvent.changedTouches[0].pageX;\n var diff = touchPageX - touchStartX;\n if (stc.rtl) {\n diff = -diff;\n }\n var minPos;\n\n newLeftPos = startingContainerLeftPos + diff;\n if (newLeftPos > 0) {\n newLeftPos = 0;\n } else {\n minPos = smv.getMinPos();\n if (newLeftPos < minPos) {\n newLeftPos = minPos;\n }\n }\n stc.movableContainerLeftPos = newLeftPos;\n\n var leftOrRight = stc.rtl ? 'right' : 'left';\n stc.$movableContainer.css(leftOrRight, smv.getMovableContainerCssLeftVal());\n smv.refreshScrollArrowsDisabledState();\n });\n };\n\n p.refreshAllElementSizes = function () {\n var ehd = this,\n stc = ehd.stc,\n smv = stc.scrollMovement,\n scrollArrowsWereVisible = stc.scrollArrowsVisible,\n actionsTaken = {\n didScrollToActiveTab: false\n },\n isPerformingSlideAnim = false,\n minPos;\n\n ehd.setElementWidths();\n ehd.setScrollArrowVisibility();\n\n // this could have been a window resize or the removal of a\n // dynamic tab, so make sure the movable container is positioned\n // correctly because, if it is far to the left and we increased the\n // window width, it's possible that the tabs will be too far left,\n // beyond the min pos.\n if (stc.scrollArrowsVisible) {\n // make sure container not too far left\n minPos = smv.getMinPos();\n\n isPerformingSlideAnim = smv.scrollToActiveTab({\n isOnWindowResize: true\n });\n\n if (!isPerformingSlideAnim) {\n smv.refreshScrollArrowsDisabledState();\n\n if (stc.rtl) {\n if (stc.movableContainerRightPos < minPos) {\n smv.incrementMovableContainerLeft(minPos);\n }\n } else {\n if (stc.movableContainerLeftPos < minPos) {\n smv.incrementMovableContainerRight(minPos);\n }\n }\n }\n\n actionsTaken.didScrollToActiveTab = true;\n\n } else if (scrollArrowsWereVisible) {\n // scroll arrows went away after resize, so position movable container at 0\n stc.movableContainerLeftPos = 0;\n smv.slideMovableContainerToLeftPos();\n }\n\n return actionsTaken;\n };\n\n p.setElementReferences = function (settings) {\n var ehd = this,\n stc = ehd.stc,\n $tabsContainer = stc.$tabsContainer,\n $leftArrow,\n $rightArrow,\n $leftArrowClickTarget,\n $rightArrowClickTarget;\n\n stc.isNavPills = false;\n\n if (stc.rtl) {\n $tabsContainer.addClass(CONSTANTS.CSS_CLASSES.RTL);\n }\n\n if (stc.usingBootstrap4) {\n $tabsContainer.addClass(CONSTANTS.CSS_CLASSES.BOOTSTRAP4);\n }\n\n stc.$fixedContainer = $tabsContainer.find('.scrtabs-tabs-fixed-container');\n $leftArrow = stc.$fixedContainer.prev();\n $rightArrow = stc.$fixedContainer.next();\n\n // if we have custom arrow content, we might have a click target defined\n if (settings.leftArrowContent) {\n $leftArrowClickTarget = $leftArrow.find('.' + CONSTANTS.CSS_CLASSES.SCROLL_ARROW_CLICK_TARGET);\n }\n\n if (settings.rightArrowContent) {\n $rightArrowClickTarget = $rightArrow.find('.' + CONSTANTS.CSS_CLASSES.SCROLL_ARROW_CLICK_TARGET);\n }\n\n if ($leftArrowClickTarget && $leftArrowClickTarget.length) {\n $leftArrow.addClass(CONSTANTS.CSS_CLASSES.SCROLL_ARROW_WITH_CLICK_TARGET);\n } else {\n $leftArrowClickTarget = $leftArrow;\n }\n\n if ($rightArrowClickTarget && $rightArrowClickTarget.length) {\n $rightArrow.addClass(CONSTANTS.CSS_CLASSES.SCROLL_ARROW_WITH_CLICK_TARGET);\n } else {\n $rightArrowClickTarget = $rightArrow;\n }\n\n stc.$movableContainer = $tabsContainer.find('.scrtabs-tabs-movable-container');\n stc.$tabsUl = $tabsContainer.find('.nav-tabs');\n\n // check for pills\n if (!stc.$tabsUl.length) {\n stc.$tabsUl = $tabsContainer.find('.nav-pills');\n\n if (stc.$tabsUl.length) {\n stc.isNavPills = true;\n }\n }\n\n stc.$tabsLiCollection = stc.$tabsUl.find('> li');\n\n stc.$slideLeftArrow = stc.reverseScroll ? $leftArrow : $rightArrow;\n stc.$slideLeftArrowClickTarget = stc.reverseScroll ? $leftArrowClickTarget : $rightArrowClickTarget;\n stc.$slideRightArrow = stc.reverseScroll ? $rightArrow : $leftArrow;\n stc.$slideRightArrowClickTarget = stc.reverseScroll ? $rightArrowClickTarget : $leftArrowClickTarget;\n stc.$scrollArrows = stc.$slideLeftArrow.add(stc.$slideRightArrow);\n\n stc.$win = $(window);\n };\n\n p.setElementWidths = function () {\n var ehd = this,\n stc = ehd.stc;\n\n stc.winWidth = stc.$win.width();\n stc.scrollArrowsCombinedWidth = stc.$slideLeftArrow.outerWidth() + stc.$slideRightArrow.outerWidth();\n\n ehd.setFixedContainerWidth();\n ehd.setMovableContainerWidth();\n };\n\n p.setEventListeners = function (settings) {\n var ehd = this,\n stc = ehd.stc,\n evh = stc.eventHandlers,\n ev = CONSTANTS.EVENTS,\n resizeEventName = ev.WINDOW_RESIZE + stc.instanceId;\n\n if (settings.enableSwiping) {\n ehd.listenForTouchEvents();\n }\n\n stc.$slideLeftArrowClickTarget\n .off('.scrtabs')\n .on(ev.MOUSEDOWN, function (e) { evh.handleMousedownOnSlideMovContainerLeftArrow.call(evh, e); })\n .on(ev.MOUSEUP, function (e) { evh.handleMouseupOnSlideMovContainerLeftArrow.call(evh, e); })\n .on(ev.CLICK, function (e) { evh.handleClickOnSlideMovContainerLeftArrow.call(evh, e); });\n\n stc.$slideRightArrowClickTarget\n .off('.scrtabs')\n .on(ev.MOUSEDOWN, function (e) { evh.handleMousedownOnSlideMovContainerRightArrow.call(evh, e); })\n .on(ev.MOUSEUP, function (e) { evh.handleMouseupOnSlideMovContainerRightArrow.call(evh, e); })\n .on(ev.CLICK, function (e) { evh.handleClickOnSlideMovContainerRightArrow.call(evh, e); });\n\n if (stc.tabClickHandler) {\n stc.$tabsLiCollection\n .find('a[data-toggle=\"tab\"]')\n .off(ev.CLICK)\n .on(ev.CLICK, stc.tabClickHandler);\n }\n\n if (settings.handleDelayedScrollbar) {\n ehd.listenForDelayedScrollbar();\n }\n\n stc.$win\n .off(resizeEventName)\n .smartresizeScrtabs(function (e) { evh.handleWindowResize.call(evh, e); }, resizeEventName);\n\n $('body').on(CONSTANTS.EVENTS.FORCE_REFRESH, stc.elementsHandler.refreshAllElementSizes.bind(stc.elementsHandler));\n };\n\n p.listenForDelayedScrollbar = function () {\n var iframe = document.createElement('iframe');\n iframe.id = \"scrtabs-scrollbar-resize-listener\";\n iframe.style.cssText = 'height: 0; background-color: transparent; margin: 0; padding: 0; overflow: hidden; border-width: 0; position: absolute; width: 100%;';\n iframe.onload = function () {\n var timeout;\n\n function handleResize() {\n try {\n $(window).trigger('resize');\n timeout = null;\n } catch (e) { }\n }\n\n iframe.contentWindow.addEventListener('resize', function () {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n timeout = setTimeout(handleResize, 100);\n });\n };\n\n document.body.appendChild(iframe);\n };\n\n p.setFixedContainerWidth = function () {\n var ehd = this,\n stc = ehd.stc,\n tabsContainerRect = stc.$tabsContainer.get(0).getBoundingClientRect();\n /**\n * @author poletaew\n * It solves problem with rounding by jQuery.outerWidth\n * If we have real width 100.5 px, jQuery.outerWidth returns us 101 px and we get layout's fail\n */\n stc.fixedContainerWidth = tabsContainerRect.width || (tabsContainerRect.right - tabsContainerRect.left);\n stc.fixedContainerWidth = stc.fixedContainerWidth * stc.widthMultiplier;\n\n stc.$fixedContainer.width(stc.fixedContainerWidth);\n };\n\n p.setFixedContainerWidthForHiddenScrollArrows = function () {\n var ehd = this,\n stc = ehd.stc;\n\n stc.$fixedContainer.width(stc.fixedContainerWidth);\n };\n\n p.setFixedContainerWidthForVisibleScrollArrows = function () {\n var ehd = this,\n stc = ehd.stc;\n\n stc.$fixedContainer.width(stc.fixedContainerWidth - stc.scrollArrowsCombinedWidth);\n };\n\n p.setMovableContainerWidth = function () {\n var ehd = this,\n stc = ehd.stc,\n $tabLi = stc.$tabsUl.find('> li');\n\n stc.movableContainerWidth = 0;\n\n if ($tabLi.length) {\n\n $tabLi.each(function () {\n var $li = $(this),\n totalMargin = 0;\n\n if (stc.isNavPills) { // pills have a margin-left, tabs have no margin\n totalMargin = parseInt($li.css('margin-left'), 10) + parseInt($li.css('margin-right'), 10);\n }\n\n stc.movableContainerWidth += ($li.outerWidth() + totalMargin);\n });\n\n stc.movableContainerWidth += 1;\n\n // if the tabs don't span the width of the page, force the\n // movable container width to full page width so the bottom\n // border spans the page width instead of just spanning the\n // width of the tabs\n if (stc.movableContainerWidth < stc.fixedContainerWidth) {\n stc.movableContainerWidth = stc.fixedContainerWidth;\n }\n }\n\n stc.$movableContainer.width(stc.movableContainerWidth);\n };\n\n p.setScrollArrowVisibility = function () {\n var ehd = this,\n stc = ehd.stc,\n shouldBeVisible = stc.movableContainerWidth > stc.fixedContainerWidth;\n\n if (shouldBeVisible && !stc.scrollArrowsVisible) {\n stc.$scrollArrows.show();\n stc.scrollArrowsVisible = true;\n } else if (!shouldBeVisible && stc.scrollArrowsVisible) {\n stc.$scrollArrows.hide();\n stc.scrollArrowsVisible = false;\n }\n\n if (stc.scrollArrowsVisible) {\n ehd.setFixedContainerWidthForVisibleScrollArrows();\n } else {\n ehd.setFixedContainerWidthForHiddenScrollArrows();\n }\n };\n\n }(ElementsHandler.prototype));\n\n /* ***********************************************************************************\n * EventHandlers - Class that each instance of ScrollingTabsControl will instantiate\n * **********************************************************************************/\n function EventHandlers(scrollingTabsControl) {\n var evh = this;\n\n evh.stc = scrollingTabsControl;\n }\n\n // prototype methods\n (function (p) {\n p.handleClickOnSlideMovContainerLeftArrow = function () {\n var evh = this,\n stc = evh.stc;\n\n stc.scrollMovement.incrementMovableContainerLeft();\n };\n\n p.handleClickOnSlideMovContainerRightArrow = function () {\n var evh = this,\n stc = evh.stc;\n\n stc.scrollMovement.incrementMovableContainerRight();\n };\n\n p.handleMousedownOnSlideMovContainerLeftArrow = function () {\n var evh = this,\n stc = evh.stc;\n\n stc.$slideLeftArrowClickTarget.data(CONSTANTS.DATA_KEY_IS_MOUSEDOWN, true);\n stc.scrollMovement.continueSlideMovableContainerLeft();\n };\n\n p.handleMousedownOnSlideMovContainerRightArrow = function () {\n var evh = this,\n stc = evh.stc;\n\n stc.$slideRightArrowClickTarget.data(CONSTANTS.DATA_KEY_IS_MOUSEDOWN, true);\n stc.scrollMovement.continueSlideMovableContainerRight();\n };\n\n p.handleMouseupOnSlideMovContainerLeftArrow = function () {\n var evh = this,\n stc = evh.stc;\n\n stc.$slideLeftArrowClickTarget.data(CONSTANTS.DATA_KEY_IS_MOUSEDOWN, false);\n };\n\n p.handleMouseupOnSlideMovContainerRightArrow = function () {\n var evh = this,\n stc = evh.stc;\n\n stc.$slideRightArrowClickTarget.data(CONSTANTS.DATA_KEY_IS_MOUSEDOWN, false);\n };\n\n p.handleWindowResize = function () {\n var evh = this,\n stc = evh.stc,\n newWinWidth = stc.$win.width();\n\n if (newWinWidth === stc.winWidth) {\n return false;\n }\n\n stc.winWidth = newWinWidth;\n stc.elementsHandler.refreshAllElementSizes();\n };\n\n }(EventHandlers.prototype));\n\n /* ***********************************************************************************\n * ScrollMovement - Class that each instance of ScrollingTabsControl will instantiate\n * **********************************************************************************/\n function ScrollMovement(scrollingTabsControl) {\n var smv = this;\n\n smv.stc = scrollingTabsControl;\n }\n\n // prototype methods\n (function (p) {\n\n p.continueSlideMovableContainerLeft = function () {\n var smv = this,\n stc = smv.stc;\n\n setTimeout(function () {\n if (stc.movableContainerLeftPos <= smv.getMinPos() ||\n !stc.$slideLeftArrowClickTarget.data(CONSTANTS.DATA_KEY_IS_MOUSEDOWN)) {\n return;\n }\n\n if (!smv.incrementMovableContainerLeft()) { // haven't reached max left\n smv.continueSlideMovableContainerLeft();\n }\n }, CONSTANTS.CONTINUOUS_SCROLLING_TIMEOUT_INTERVAL);\n };\n\n p.continueSlideMovableContainerRight = function () {\n var smv = this,\n stc = smv.stc;\n\n setTimeout(function () {\n if (stc.movableContainerLeftPos >= 0 ||\n !stc.$slideRightArrowClickTarget.data(CONSTANTS.DATA_KEY_IS_MOUSEDOWN)) {\n return;\n }\n\n if (!smv.incrementMovableContainerRight()) { // haven't reached max right\n smv.continueSlideMovableContainerRight();\n }\n }, CONSTANTS.CONTINUOUS_SCROLLING_TIMEOUT_INTERVAL);\n };\n\n p.decrementMovableContainerLeftPos = function (minPos) {\n var smv = this,\n stc = smv.stc;\n\n stc.movableContainerLeftPos -= (stc.fixedContainerWidth / CONSTANTS.SCROLL_OFFSET_FRACTION);\n if (stc.movableContainerLeftPos < minPos) {\n stc.movableContainerLeftPos = minPos;\n } else if (stc.scrollToTabEdge) {\n smv.setMovableContainerLeftPosToTabEdge(CONSTANTS.SLIDE_DIRECTION.LEFT);\n\n if (stc.movableContainerLeftPos < minPos) {\n stc.movableContainerLeftPos = minPos;\n }\n }\n };\n\n p.disableSlideLeftArrow = function () {\n var smv = this,\n stc = smv.stc;\n\n if (!stc.disableScrollArrowsOnFullyScrolled || !stc.scrollArrowsVisible) {\n return;\n }\n\n stc.$slideLeftArrow.addClass(CONSTANTS.CSS_CLASSES.SCROLL_ARROW_DISABLE);\n };\n\n p.disableSlideRightArrow = function () {\n var smv = this,\n stc = smv.stc;\n\n if (!stc.disableScrollArrowsOnFullyScrolled || !stc.scrollArrowsVisible) {\n return;\n }\n\n stc.$slideRightArrow.addClass(CONSTANTS.CSS_CLASSES.SCROLL_ARROW_DISABLE);\n };\n\n p.enableSlideLeftArrow = function () {\n var smv = this,\n stc = smv.stc;\n\n if (!stc.disableScrollArrowsOnFullyScrolled || !stc.scrollArrowsVisible) {\n return;\n }\n\n stc.$slideLeftArrow.removeClass(CONSTANTS.CSS_CLASSES.SCROLL_ARROW_DISABLE);\n };\n\n p.enableSlideRightArrow = function () {\n var smv = this,\n stc = smv.stc;\n\n if (!stc.disableScrollArrowsOnFullyScrolled || !stc.scrollArrowsVisible) {\n return;\n }\n\n stc.$slideRightArrow.removeClass(CONSTANTS.CSS_CLASSES.SCROLL_ARROW_DISABLE);\n };\n\n p.getMinPos = function () {\n var smv = this,\n stc = smv.stc;\n\n return stc.scrollArrowsVisible ? (stc.fixedContainerWidth - stc.movableContainerWidth - stc.scrollArrowsCombinedWidth) : 0;\n };\n\n p.getMovableContainerCssLeftVal = function () {\n var smv = this,\n stc = smv.stc;\n\n return (stc.movableContainerLeftPos === 0) ? '0' : stc.movableContainerLeftPos + 'px';\n };\n\n p.incrementMovableContainerLeft = function () {\n var smv = this,\n stc = smv.stc,\n minPos = smv.getMinPos();\n\n smv.decrementMovableContainerLeftPos(minPos);\n smv.slideMovableContainerToLeftPos();\n smv.enableSlideRightArrow();\n\n // return true if we're fully left, false otherwise\n return (stc.movableContainerLeftPos === minPos);\n };\n\n p.incrementMovableContainerRight = function (minPos) {\n var smv = this,\n stc = smv.stc;\n\n // if minPos passed in, the movable container was beyond the minPos\n if (minPos) {\n stc.movableContainerLeftPos = minPos;\n } else {\n stc.movableContainerLeftPos += (stc.fixedContainerWidth / CONSTANTS.SCROLL_OFFSET_FRACTION);\n\n if (stc.movableContainerLeftPos > 0) {\n stc.movableContainerLeftPos = 0;\n } else if (stc.scrollToTabEdge) {\n smv.setMovableContainerLeftPosToTabEdge(CONSTANTS.SLIDE_DIRECTION.RIGHT);\n }\n }\n\n smv.slideMovableContainerToLeftPos();\n smv.enableSlideLeftArrow();\n\n // return true if we're fully right, false otherwise\n // left pos of 0 is the movable container's max position (farthest right)\n return (stc.movableContainerLeftPos === 0);\n };\n\n p.refreshScrollArrowsDisabledState = function () {\n var smv = this,\n stc = smv.stc;\n\n if (!stc.disableScrollArrowsOnFullyScrolled || !stc.scrollArrowsVisible) {\n return;\n }\n\n if (stc.movableContainerLeftPos >= 0) { // movable container fully right\n smv.disableSlideRightArrow();\n smv.enableSlideLeftArrow();\n return;\n }\n\n if (stc.movableContainerLeftPos <= smv.getMinPos()) { // fully left\n smv.disableSlideLeftArrow();\n smv.enableSlideRightArrow();\n return;\n }\n\n smv.enableSlideLeftArrow();\n smv.enableSlideRightArrow();\n };\n\n p.scrollToActiveTab = function () {\n var smv = this,\n stc = smv.stc,\n $activeTab,\n $activeTabAnchor,\n activeTabLeftPos,\n activeTabRightPos,\n rightArrowLeftPos,\n activeTabWidth,\n leftPosOffset,\n offsetToMiddle,\n leftScrollArrowWidth,\n rightScrollArrowWidth;\n\n if (!stc.scrollArrowsVisible) {\n return;\n }\n\n if (stc.usingBootstrap4) {\n $activeTabAnchor = stc.$tabsUl.find('li > .nav-link.active');\n if ($activeTabAnchor.length) {\n $activeTab = $activeTabAnchor.parent();\n }\n } else {\n $activeTab = stc.$tabsUl.find('li.active');\n }\n\n if (!$activeTab || !$activeTab.length) {\n return;\n }\n\n rightScrollArrowWidth = stc.$slideRightArrow.outerWidth();\n activeTabWidth = $activeTab.outerWidth();\n\n /**\n * @author poletaew\n * We need relative offset (depends on $fixedContainer), don't absolute\n */\n activeTabLeftPos = $activeTab.offset().left - stc.$fixedContainer.offset().left;\n activeTabRightPos = activeTabLeftPos + activeTabWidth;\n\n rightArrowLeftPos = stc.fixedContainerWidth - rightScrollArrowWidth;\n\n if (stc.rtl) {\n leftScrollArrowWidth = stc.$slideLeftArrow.outerWidth();\n\n if (activeTabLeftPos < 0) { // active tab off left side\n stc.movableContainerLeftPos += activeTabLeftPos;\n smv.slideMovableContainerToLeftPos();\n return true;\n } else { // active tab off right side\n if (activeTabRightPos > rightArrowLeftPos) {\n stc.movableContainerLeftPos += (activeTabRightPos - rightArrowLeftPos) + (2 * rightScrollArrowWidth);\n smv.slideMovableContainerToLeftPos();\n return true;\n }\n }\n } else {\n if (activeTabRightPos > rightArrowLeftPos) { // active tab off right side\n leftPosOffset = activeTabRightPos - rightArrowLeftPos + rightScrollArrowWidth;\n offsetToMiddle = stc.fixedContainerWidth / 2;\n leftPosOffset += offsetToMiddle - (activeTabWidth / 2);\n stc.movableContainerLeftPos -= leftPosOffset;\n smv.slideMovableContainerToLeftPos();\n return true;\n } else {\n leftScrollArrowWidth = stc.$slideLeftArrow.outerWidth();\n if (activeTabLeftPos < 0) { // active tab off left side\n offsetToMiddle = stc.fixedContainerWidth / 2;\n stc.movableContainerLeftPos += (-activeTabLeftPos) + offsetToMiddle - (activeTabWidth / 2);\n smv.slideMovableContainerToLeftPos();\n return true;\n }\n }\n }\n\n return false;\n };\n\n p.setMovableContainerLeftPosToTabEdge = function (slideDirection) {\n var smv = this,\n stc = smv.stc,\n offscreenWidth = -stc.movableContainerLeftPos,\n totalTabWidth = 0;\n\n // make sure LeftPos is set so that a tab edge will be against the\n // left scroll arrow so we won't have a partial, cut-off tab\n stc.$tabsLiCollection.each(function () {\n var tabWidth = $(this).width();\n\n totalTabWidth += tabWidth;\n\n if (totalTabWidth > offscreenWidth) {\n stc.movableContainerLeftPos = (slideDirection === CONSTANTS.SLIDE_DIRECTION.RIGHT) ? -(totalTabWidth - tabWidth) : -totalTabWidth;\n return false; // exit .each() loop\n }\n\n });\n };\n\n p.slideMovableContainerToLeftPos = function () {\n var smv = this,\n stc = smv.stc,\n minPos = smv.getMinPos(),\n leftOrRightVal;\n\n if (stc.movableContainerLeftPos > 0) {\n stc.movableContainerLeftPos = 0;\n } else if (stc.movableContainerLeftPos < minPos) {\n stc.movableContainerLeftPos = minPos;\n }\n\n stc.movableContainerLeftPos = stc.movableContainerLeftPos / 1;\n leftOrRightVal = smv.getMovableContainerCssLeftVal();\n\n smv.performingSlideAnim = true;\n\n var targetPos = stc.rtl ? { right: leftOrRightVal } : { left: leftOrRightVal };\n\n stc.$movableContainer.stop().animate(targetPos, 'slow', function __slideAnimComplete() {\n var newMinPos = smv.getMinPos();\n\n smv.performingSlideAnim = false;\n\n // if we slid past the min pos--which can happen if you resize the window\n // quickly--move back into position\n if (stc.movableContainerLeftPos < newMinPos) {\n smv.decrementMovableContainerLeftPos(newMinPos);\n\n targetPos = stc.rtl ? { right: smv.getMovableContainerCssLeftVal() } : { left: smv.getMovableContainerCssLeftVal() };\n\n stc.$movableContainer.stop().animate(targetPos, 'fast', function () {\n smv.refreshScrollArrowsDisabledState();\n });\n } else {\n smv.refreshScrollArrowsDisabledState();\n }\n });\n };\n\n }(ScrollMovement.prototype));\n\n /* **********************************************************************\n * ScrollingTabsControl - Class that each directive will instantiate\n * **********************************************************************/\n function ScrollingTabsControl($tabsContainer) {\n var stc = this;\n\n stc.$tabsContainer = $tabsContainer;\n stc.instanceId = $.fn.scrollingTabs.nextInstanceId++;\n\n stc.movableContainerLeftPos = 0;\n stc.scrollArrowsVisible = false;\n stc.scrollToTabEdge = false;\n stc.disableScrollArrowsOnFullyScrolled = false;\n stc.reverseScroll = false;\n stc.widthMultiplier = 1;\n\n stc.scrollMovement = new ScrollMovement(stc);\n stc.eventHandlers = new EventHandlers(stc);\n stc.elementsHandler = new ElementsHandler(stc);\n }\n\n // prototype methods\n (function (p) {\n p.initTabs = function (options, $scroller, readyCallback, attachTabContentToDomCallback) {\n var stc = this,\n elementsHandler = stc.elementsHandler,\n num;\n\n if (options.enableRtlSupport && $('html').attr('dir') === 'rtl') {\n stc.rtl = true;\n }\n\n if (options.scrollToTabEdge) {\n stc.scrollToTabEdge = true;\n }\n\n if (options.disableScrollArrowsOnFullyScrolled) {\n stc.disableScrollArrowsOnFullyScrolled = true;\n }\n\n if (options.reverseScroll) {\n stc.reverseScroll = true;\n }\n\n if (options.widthMultiplier !== 1) {\n num = Number(options.widthMultiplier); // handle string value\n\n if (!isNaN(num)) {\n stc.widthMultiplier = num;\n }\n }\n\n if (options.bootstrapVersion.toString().charAt(0) === '4') {\n stc.usingBootstrap4 = true;\n }\n\n setTimeout(initTabsAfterTimeout, 100);\n\n function initTabsAfterTimeout() {\n var actionsTaken;\n\n // if we're just wrapping non-data-driven tabs, the user might\n // have the .nav-tabs hidden to prevent the clunky flash of\n // multi-line tabs on page refresh, so we need to make sure\n // they're visible before trying to wrap them\n $scroller.find('.nav-tabs').show();\n\n elementsHandler.initElements(options);\n actionsTaken = elementsHandler.refreshAllElementSizes();\n\n $scroller.css('visibility', 'visible');\n\n if (attachTabContentToDomCallback) {\n attachTabContentToDomCallback();\n }\n\n if (readyCallback) {\n readyCallback();\n }\n }\n };\n\n p.scrollToActiveTab = function (options) {\n var stc = this,\n smv = stc.scrollMovement;\n\n smv.scrollToActiveTab(options);\n };\n }(ScrollingTabsControl.prototype));\n\n\n /* exported buildNavTabsAndTabContentForTargetElementInstance */\n var tabElements = (function () {\n\n return {\n getElTabPaneForLi: getElTabPaneForLi,\n getNewElNavTabs: getNewElNavTabs,\n getNewElScrollerElementWrappingNavTabsInstance: getNewElScrollerElementWrappingNavTabsInstance,\n getNewElTabAnchor: getNewElTabAnchor,\n getNewElTabContent: getNewElTabContent,\n getNewElTabLi: getNewElTabLi,\n getNewElTabPane: getNewElTabPane\n };\n\n ///////////////////\n\n // ---- retrieve existing elements from the DOM ----------\n function getElTabPaneForLi($li) {\n return $($li.find('a').attr('href'));\n }\n\n\n // ---- create new elements ----------\n function getNewElNavTabs() {\n return $('
      ');\n }\n\n function getNewElScrollerElementWrappingNavTabsInstance($navTabsInstance, settings) {\n var $tabsContainer = $('
      '),\n leftArrowContent = settings.leftArrowContent || '
      ',\n $leftArrow = $(leftArrowContent),\n rightArrowContent = settings.rightArrowContent || '
      ',\n $rightArrow = $(rightArrowContent),\n $fixedContainer = $('
      '),\n $movableContainer = $('
      ');\n\n if (settings.disableScrollArrowsOnFullyScrolled) {\n $leftArrow.add($rightArrow).addClass(CONSTANTS.CSS_CLASSES.SCROLL_ARROW_DISABLE);\n }\n\n return $tabsContainer\n .append($leftArrow,\n $fixedContainer.append($movableContainer.append($navTabsInstance)),\n $rightArrow);\n }\n\n function getNewElTabAnchor(tab, propNames) {\n return $('')\n .attr('href', '#' + tab[propNames.paneId])\n .html(tab[propNames.title]);\n }\n\n function getNewElTabContent() {\n return $('
      ');\n }\n\n function getNewElTabLi(tab, propNames, options) {\n var liContent = options.tabLiContent || '
    • ',\n $li = $(liContent),\n $a = getNewElTabAnchor(tab, propNames).appendTo($li);\n\n if (tab[propNames.disabled]) {\n $li.addClass('disabled');\n $a.attr('data-toggle', '');\n } else if (options.forceActiveTab && tab[propNames.active]) {\n $li.addClass('active');\n }\n\n if (options.tabPostProcessor) {\n options.tabPostProcessor($li, $a);\n }\n\n return $li;\n }\n\n function getNewElTabPane(tab, propNames, options) {\n var $pane = $('
      ')\n .attr('id', tab[propNames.paneId])\n .html(tab[propNames.content]);\n\n if (options.forceActiveTab && tab[propNames.active]) {\n $pane.addClass('active');\n }\n\n return $pane;\n }\n\n\n }()); // tabElements\n\n var tabUtils = (function () {\n\n return {\n didTabOrderChange: didTabOrderChange,\n getIndexOfClosestEnabledTab: getIndexOfClosestEnabledTab,\n getTabIndexByPaneId: getTabIndexByPaneId,\n storeDataOnLiEl: storeDataOnLiEl\n };\n\n ///////////////////\n\n function didTabOrderChange($currTabLis, updatedTabs, propNames) {\n var isTabOrderChanged = false;\n\n $currTabLis.each(function (currDomIdx) {\n var newIdx = getTabIndexByPaneId(updatedTabs, propNames.paneId, $(this).data('tab')[propNames.paneId]);\n\n if ((newIdx > -1) && (newIdx !== currDomIdx)) { // tab moved\n isTabOrderChanged = true;\n return false; // exit .each() loop\n }\n });\n\n return isTabOrderChanged;\n }\n\n function getIndexOfClosestEnabledTab($currTabLis, startIndex) {\n var lastIndex = $currTabLis.length - 1,\n closestIdx = -1,\n incrementFromStartIndex = 0,\n testIdx = 0;\n\n // expand out from the current tab looking for an enabled tab;\n // we prefer the tab after us over the tab before\n while ((closestIdx === -1) && (testIdx >= 0)) {\n\n if ((((testIdx = startIndex + (++incrementFromStartIndex)) <= lastIndex) &&\n !$currTabLis.eq(testIdx).hasClass('disabled')) ||\n (((testIdx = startIndex - incrementFromStartIndex) >= 0) &&\n !$currTabLis.eq(testIdx).hasClass('disabled'))) {\n\n closestIdx = testIdx;\n\n }\n }\n\n return closestIdx;\n }\n\n function getTabIndexByPaneId(tabs, paneIdPropName, paneId) {\n var idx = -1;\n\n tabs.some(function (tab, i) {\n if (tab[paneIdPropName] === paneId) {\n idx = i;\n return true; // exit loop\n }\n });\n\n return idx;\n }\n\n function storeDataOnLiEl($li, tabs, index) {\n $li.data({\n tab: $.extend({}, tabs[index]), // store a clone so we can check for changes\n index: index\n });\n }\n\n }()); // tabUtils\n\n function buildNavTabsAndTabContentForTargetElementInstance($targetElInstance, settings, readyCallback) {\n var tabs = settings.tabs,\n propNames = {\n paneId: settings.propPaneId,\n title: settings.propTitle,\n active: settings.propActive,\n disabled: settings.propDisabled,\n content: settings.propContent\n },\n ignoreTabPanes = settings.ignoreTabPanes,\n hasTabContent = tabs.length && tabs[0][propNames.content] !== undefined,\n $navTabs = tabElements.getNewElNavTabs(),\n $tabContent = tabElements.getNewElTabContent(),\n $scroller,\n attachTabContentToDomCallback = ignoreTabPanes ? null : function () {\n $scroller.after($tabContent);\n };\n\n if (!tabs.length) {\n return;\n }\n\n tabs.forEach(function (tab, index) {\n var options = {\n forceActiveTab: true,\n tabLiContent: settings.tabsLiContent && settings.tabsLiContent[index],\n tabPostProcessor: settings.tabsPostProcessors && settings.tabsPostProcessors[index]\n };\n\n tabElements\n .getNewElTabLi(tab, propNames, options)\n .appendTo($navTabs);\n\n // build the tab panes if we weren't told to ignore them and there's\n // tab content data available\n if (!ignoreTabPanes && hasTabContent) {\n tabElements\n .getNewElTabPane(tab, propNames, options)\n .appendTo($tabContent);\n }\n });\n\n $scroller = wrapNavTabsInstanceInScroller($navTabs,\n settings,\n readyCallback,\n attachTabContentToDomCallback);\n\n $scroller.appendTo($targetElInstance);\n\n $targetElInstance.data({\n scrtabs: {\n tabs: tabs,\n propNames: propNames,\n ignoreTabPanes: ignoreTabPanes,\n hasTabContent: hasTabContent,\n tabsLiContent: settings.tabsLiContent,\n tabsPostProcessors: settings.tabsPostProcessors,\n scroller: $scroller\n }\n });\n\n // once the nav-tabs are wrapped in the scroller, attach each tab's\n // data to it for reference later; we need to wait till they're\n // wrapped in the scroller because we wrap a *clone* of the nav-tabs\n // we built above, not the original nav-tabs\n $scroller.find('.nav-tabs > li').each(function (index) {\n tabUtils.storeDataOnLiEl($(this), tabs, index);\n });\n\n return $targetElInstance;\n }\n\n\n function wrapNavTabsInstanceInScroller($navTabsInstance, settings, readyCallback, attachTabContentToDomCallback) {\n // Remove tab data stored by Bootstrap in order to fix tabs that were already visited\n $navTabsInstance\n .find('a[data-toggle=\"tab\"]')\n .removeData(CONSTANTS.DATA_KEY_BOOTSTRAP_TAB);\n\n var $scroller = tabElements.getNewElScrollerElementWrappingNavTabsInstance($navTabsInstance.clone(true), settings), // use clone because we replaceWith later\n scrollingTabsControl = new ScrollingTabsControl($scroller),\n navTabsInstanceData = $navTabsInstance.data('scrtabs');\n\n if (!navTabsInstanceData) {\n $navTabsInstance.data('scrtabs', {\n scroller: $scroller\n });\n } else {\n navTabsInstanceData.scroller = $scroller;\n }\n\n $navTabsInstance.replaceWith($scroller.css('visibility', 'hidden'));\n\n if (settings.tabClickHandler && (typeof settings.tabClickHandler === 'function')) {\n $scroller.hasTabClickHandler = true;\n scrollingTabsControl.tabClickHandler = settings.tabClickHandler;\n }\n\n $scroller.initTabs = function () {\n scrollingTabsControl.initTabs(settings,\n $scroller,\n readyCallback,\n attachTabContentToDomCallback);\n };\n\n $scroller.scrollToActiveTab = function () {\n scrollingTabsControl.scrollToActiveTab(settings);\n };\n\n $scroller.initTabs();\n\n listenForDropdownMenuTabs($scroller, scrollingTabsControl);\n\n return $scroller;\n }\n\n /* exported listenForDropdownMenuTabs,\n refreshTargetElementInstance,\n scrollToActiveTab */\n function checkForTabAdded(refreshData) {\n var updatedTabsArray = refreshData.updatedTabsArray,\n updatedTabsLiContent = refreshData.updatedTabsLiContent || [],\n updatedTabsPostProcessors = refreshData.updatedTabsPostProcessors || [],\n propNames = refreshData.propNames,\n ignoreTabPanes = refreshData.ignoreTabPanes,\n options = refreshData.options,\n $currTabLis = refreshData.$currTabLis,\n $navTabs = refreshData.$navTabs,\n $currTabContentPanesContainer = ignoreTabPanes ? null : refreshData.$currTabContentPanesContainer,\n $currTabContentPanes = ignoreTabPanes ? null : refreshData.$currTabContentPanes,\n isInitTabsRequired = false;\n\n // make sure each tab in the updated tabs array has a corresponding DOM element\n updatedTabsArray.forEach(function (tab, idx) {\n var $li = $currTabLis.find('a[href=\"#' + tab[propNames.paneId] + '\"]'),\n isTabIdxPastCurrTabs = (idx >= $currTabLis.length),\n $pane;\n\n if (!$li.length) { // new tab\n isInitTabsRequired = true;\n\n // add the tab, add its pane (if necessary), and refresh the scroller\n options.tabLiContent = updatedTabsLiContent[idx];\n options.tabPostProcessor = updatedTabsPostProcessors[idx];\n $li = tabElements.getNewElTabLi(tab, propNames, options);\n tabUtils.storeDataOnLiEl($li, updatedTabsArray, idx);\n\n if (isTabIdxPastCurrTabs) { // append to end of current tabs\n $li.appendTo($navTabs);\n } else { // insert in middle of current tabs\n $li.insertBefore($currTabLis.eq(idx));\n }\n\n if (!ignoreTabPanes && tab[propNames.content] !== undefined) {\n $pane = tabElements.getNewElTabPane(tab, propNames, options);\n if (isTabIdxPastCurrTabs) { // append to end of current tabs\n $pane.appendTo($currTabContentPanesContainer);\n } else { // insert in middle of current tabs\n $pane.insertBefore($currTabContentPanes.eq(idx));\n }\n }\n\n }\n\n });\n\n return isInitTabsRequired;\n }\n\n function checkForTabPropertiesUpdated(refreshData) {\n var tabLiData = refreshData.tabLi,\n ignoreTabPanes = refreshData.ignoreTabPanes,\n $li = tabLiData.$li,\n $contentPane = tabLiData.$contentPane,\n origTabData = tabLiData.origTabData,\n newTabData = tabLiData.newTabData,\n propNames = refreshData.propNames,\n isInitTabsRequired = false;\n\n // update tab title if necessary\n if (origTabData[propNames.title] !== newTabData[propNames.title]) {\n $li.find('a[role=\"tab\"]')\n .html(origTabData[propNames.title] = newTabData[propNames.title]);\n\n isInitTabsRequired = true;\n }\n\n // update tab disabled state if necessary\n if (origTabData[propNames.disabled] !== newTabData[propNames.disabled]) {\n if (newTabData[propNames.disabled]) { // enabled -> disabled\n $li.addClass('disabled');\n $li.find('a[role=\"tab\"]').attr('data-toggle', '');\n } else { // disabled -> enabled\n $li.removeClass('disabled');\n $li.find('a[role=\"tab\"]').attr('data-toggle', 'tab');\n }\n\n origTabData[propNames.disabled] = newTabData[propNames.disabled];\n isInitTabsRequired = true;\n }\n\n // update tab active state if necessary\n if (refreshData.options.forceActiveTab) {\n // set the active tab based on the tabs array regardless of the current\n // DOM state, which could have been changed by the user clicking a tab\n // without those changes being reflected back to the tab data\n $li[newTabData[propNames.active] ? 'addClass' : 'removeClass']('active');\n\n $contentPane[newTabData[propNames.active] ? 'addClass' : 'removeClass']('active');\n\n origTabData[propNames.active] = newTabData[propNames.active];\n\n isInitTabsRequired = true;\n }\n\n // update tab content pane if necessary\n if (!ignoreTabPanes && origTabData[propNames.content] !== newTabData[propNames.content]) {\n $contentPane.html(origTabData[propNames.content] = newTabData[propNames.content]);\n isInitTabsRequired = true;\n }\n\n return isInitTabsRequired;\n }\n\n function checkForTabRemoved(refreshData) {\n var tabLiData = refreshData.tabLi,\n ignoreTabPanes = refreshData.ignoreTabPanes,\n $li = tabLiData.$li,\n idxToMakeActive;\n\n if (tabLiData.newIdx !== -1) { // tab was not removed--it has a valid index\n return false;\n }\n\n // if this was the active tab, make the closest enabled tab active\n if ($li.hasClass('active')) {\n\n idxToMakeActive = tabUtils.getIndexOfClosestEnabledTab(refreshData.$currTabLis, tabLiData.currDomIdx);\n if (idxToMakeActive > -1) {\n refreshData.$currTabLis\n .eq(idxToMakeActive)\n .addClass('active');\n\n if (!ignoreTabPanes) {\n refreshData.$currTabContentPanes\n .eq(idxToMakeActive)\n .addClass('active');\n }\n }\n }\n\n $li.remove();\n\n if (!ignoreTabPanes) {\n tabLiData.$contentPane.remove();\n }\n\n return true;\n }\n\n function checkForTabsOrderChanged(refreshData) {\n var $currTabLis = refreshData.$currTabLis,\n updatedTabsArray = refreshData.updatedTabsArray,\n propNames = refreshData.propNames,\n ignoreTabPanes = refreshData.ignoreTabPanes,\n newTabsCollection = [],\n newTabPanesCollection = ignoreTabPanes ? null : [];\n\n if (!tabUtils.didTabOrderChange($currTabLis, updatedTabsArray, propNames)) {\n return false;\n }\n\n // the tab order changed...\n updatedTabsArray.forEach(function (t) {\n var paneId = t[propNames.paneId];\n\n newTabsCollection.push(\n $currTabLis\n .find('a[role=\"tab\"][href=\"#' + paneId + '\"]')\n .parent('li')\n );\n\n if (!ignoreTabPanes) {\n newTabPanesCollection.push($('#' + paneId));\n }\n });\n\n refreshData.$navTabs.append(newTabsCollection);\n\n if (!ignoreTabPanes) {\n refreshData.$currTabContentPanesContainer.append(newTabPanesCollection);\n }\n\n return true;\n }\n\n function checkForTabsRemovedOrUpdated(refreshData) {\n var $currTabLis = refreshData.$currTabLis,\n updatedTabsArray = refreshData.updatedTabsArray,\n propNames = refreshData.propNames,\n isInitTabsRequired = false;\n\n\n $currTabLis.each(function (currDomIdx) {\n var $li = $(this),\n origTabData = $li.data('tab'),\n newIdx = tabUtils.getTabIndexByPaneId(updatedTabsArray, propNames.paneId, origTabData[propNames.paneId]),\n newTabData = (newIdx > -1) ? updatedTabsArray[newIdx] : null;\n\n refreshData.tabLi = {\n $li: $li,\n currDomIdx: currDomIdx,\n newIdx: newIdx,\n $contentPane: tabElements.getElTabPaneForLi($li),\n origTabData: origTabData,\n newTabData: newTabData\n };\n\n if (checkForTabRemoved(refreshData)) {\n isInitTabsRequired = true;\n return; // continue to next $li in .each() since we removed this tab\n }\n\n if (checkForTabPropertiesUpdated(refreshData)) {\n isInitTabsRequired = true;\n }\n });\n\n return isInitTabsRequired;\n }\n\n function listenForDropdownMenuTabs($scroller, stc) {\n var $ddMenu;\n\n // for dropdown menus to show, we need to move them out of the\n // scroller and append them to the body\n $scroller\n .on(CONSTANTS.EVENTS.DROPDOWN_MENU_SHOW, handleDropdownShow)\n .on(CONSTANTS.EVENTS.DROPDOWN_MENU_HIDE, handleDropdownHide);\n\n function handleDropdownHide(e) {\n // move the dropdown menu back into its tab\n $(e.target).append($ddMenu.off(CONSTANTS.EVENTS.CLICK));\n }\n\n function handleDropdownShow(e) {\n var $ddParentTabLi = $(e.target),\n ddLiOffset = $ddParentTabLi.offset(),\n $currActiveTab = $scroller.find('li[role=\"presentation\"].active'),\n ddMenuRightX,\n tabsContainerMaxX,\n ddMenuTargetLeft;\n\n $ddMenu = $ddParentTabLi\n .find('.dropdown-menu')\n .attr('data-' + CONSTANTS.DATA_KEY_DDMENU_MODIFIED, true);\n\n // if the dropdown's parent tab li isn't already active,\n // we need to deactivate any active menu item in the dropdown\n if ($currActiveTab[0] !== $ddParentTabLi[0]) {\n $ddMenu.find('li.active').removeClass('active');\n }\n\n // we need to do our own click handling because the built-in\n // bootstrap handlers won't work since we moved the dropdown\n // menu outside the tabs container\n $ddMenu.on(CONSTANTS.EVENTS.CLICK, 'a[role=\"tab\"]', handleClickOnDropdownMenuItem);\n\n $('body').append($ddMenu);\n\n // make sure the menu doesn't go off the right side of the page\n ddMenuRightX = $ddMenu.width() + ddLiOffset.left;\n tabsContainerMaxX = $scroller.width() - (stc.$slideRightArrow.outerWidth() + 1);\n ddMenuTargetLeft = ddLiOffset.left;\n\n if (ddMenuRightX > tabsContainerMaxX) {\n ddMenuTargetLeft -= (ddMenuRightX - tabsContainerMaxX);\n }\n\n $ddMenu.css({\n 'display': 'block',\n 'top': ddLiOffset.top + $ddParentTabLi.outerHeight() - 2,\n 'left': ddMenuTargetLeft\n });\n\n function handleClickOnDropdownMenuItem() {\n /* jshint validthis: true */\n var $selectedMenuItemAnc = $(this),\n $selectedMenuItemLi = $selectedMenuItemAnc.parent('li'),\n $selectedMenuItemDropdownMenu = $selectedMenuItemLi.parent('.dropdown-menu'),\n targetPaneId = $selectedMenuItemAnc.attr('href');\n\n if ($selectedMenuItemLi.hasClass('active')) {\n return;\n }\n\n // once we select a menu item from the dropdown, deactivate\n // the current tab (unless it's our parent tab), deactivate\n // any active dropdown menu item, make our parent tab active\n // (if it's not already), and activate the selected menu item\n $scroller\n .find('li.active')\n .not($ddParentTabLi)\n .add($selectedMenuItemDropdownMenu.find('li.active'))\n .removeClass('active');\n\n $ddParentTabLi\n .add($selectedMenuItemLi)\n .addClass('active');\n\n // manually deactivate current active pane and activate our pane\n $('.tab-content .tab-pane.active').removeClass('active');\n $(targetPaneId).addClass('active');\n }\n\n }\n }\n\n function refreshDataDrivenTabs($container, options) {\n var instanceData = $container.data().scrtabs,\n scroller = instanceData.scroller,\n $navTabs = $container.find('.scrtabs-tab-container .nav-tabs'),\n $currTabContentPanesContainer = $container.find('.tab-content'),\n isInitTabsRequired = false,\n refreshData = {\n options: options,\n updatedTabsArray: instanceData.tabs,\n updatedTabsLiContent: instanceData.tabsLiContent,\n updatedTabsPostProcessors: instanceData.tabsPostProcessors,\n propNames: instanceData.propNames,\n ignoreTabPanes: instanceData.ignoreTabPanes,\n $navTabs: $navTabs,\n $currTabLis: $navTabs.find('> li'),\n $currTabContentPanesContainer: $currTabContentPanesContainer,\n $currTabContentPanes: $currTabContentPanesContainer.find('.tab-pane')\n };\n\n // to preserve the tab positions if we're just adding or removing\n // a tab, don't completely rebuild the tab structure, but check\n // for differences between the new tabs array and the old\n if (checkForTabAdded(refreshData)) {\n isInitTabsRequired = true;\n }\n\n if (checkForTabsOrderChanged(refreshData)) {\n isInitTabsRequired = true;\n }\n\n if (checkForTabsRemovedOrUpdated(refreshData)) {\n isInitTabsRequired = true;\n }\n\n if (isInitTabsRequired) {\n scroller.initTabs();\n }\n\n return isInitTabsRequired;\n }\n\n function refreshTargetElementInstance($container, options) {\n if (!$container.data('scrtabs')) { // target element doesn't have plugin on it\n return;\n }\n\n // force a refresh if the tabs are static html or they're data-driven\n // but the data didn't change so we didn't call initTabs()\n if ($container.data('scrtabs').isWrapperOnly || !refreshDataDrivenTabs($container, options)) {\n $('body').trigger(CONSTANTS.EVENTS.FORCE_REFRESH);\n }\n }\n\n function scrollToActiveTab() {\n /* jshint validthis: true */\n var $targetElInstance = $(this),\n scrtabsData = $targetElInstance.data('scrtabs');\n\n if (!scrtabsData) {\n return;\n }\n\n scrtabsData.scroller.scrollToActiveTab();\n }\n\n var methods = {\n destroy: function () {\n var $targetEls = this;\n\n return $targetEls.each(destroyPlugin);\n },\n\n init: function (options) {\n var $targetEls = this,\n targetElsLastIndex = $targetEls.length - 1,\n settings = $.extend({}, $.fn.scrollingTabs.defaults, options || {});\n\n // ---- tabs NOT data-driven -------------------------\n if (!settings.tabs) {\n\n // just wrap the selected .nav-tabs element(s) in the scroller\n return $targetEls.each(function (index) {\n var dataObj = {\n isWrapperOnly: true\n },\n $targetEl = $(this).data({ scrtabs: dataObj }),\n readyCallback = (index < targetElsLastIndex) ? null : function () {\n $targetEls.trigger(CONSTANTS.EVENTS.TABS_READY);\n };\n\n wrapNavTabsInstanceInScroller($targetEl, settings, readyCallback);\n });\n\n }\n\n // ---- tabs data-driven -------------------------\n return $targetEls.each(function (index) {\n var $targetEl = $(this),\n readyCallback = (index < targetElsLastIndex) ? null : function () {\n $targetEls.trigger(CONSTANTS.EVENTS.TABS_READY);\n };\n\n buildNavTabsAndTabContentForTargetElementInstance($targetEl, settings, readyCallback);\n });\n },\n\n refresh: function (options) {\n var $targetEls = this,\n settings = $.extend({}, $.fn.scrollingTabs.defaults, options || {});\n\n return $targetEls.each(function () {\n refreshTargetElementInstance($(this), settings);\n });\n },\n\n scrollToActiveTab: function () {\n return this.each(scrollToActiveTab);\n }\n };\n\n function destroyPlugin() {\n /* jshint validthis: true */\n var $targetElInstance = $(this),\n scrtabsData = $targetElInstance.data('scrtabs'),\n $tabsContainer;\n\n if (!scrtabsData) {\n return;\n }\n\n if (scrtabsData.enableSwipingElement === 'self') {\n $targetElInstance.removeClass(CONSTANTS.CSS_CLASSES.ALLOW_SCROLLBAR);\n } else if (scrtabsData.enableSwipingElement === 'parent') {\n $targetElInstance.closest('.scrtabs-tab-container').parent().removeClass(CONSTANTS.CSS_CLASSES.ALLOW_SCROLLBAR);\n }\n\n scrtabsData.scroller\n .off(CONSTANTS.EVENTS.DROPDOWN_MENU_SHOW)\n .off(CONSTANTS.EVENTS.DROPDOWN_MENU_HIDE);\n\n // if there were any dropdown menus opened, remove the css we added to\n // them so they would display correctly\n scrtabsData.scroller\n .find('[data-' + CONSTANTS.DATA_KEY_DDMENU_MODIFIED + ']')\n .css({\n display: '',\n left: '',\n top: ''\n })\n .off(CONSTANTS.EVENTS.CLICK)\n .removeAttr('data-' + CONSTANTS.DATA_KEY_DDMENU_MODIFIED);\n\n if (scrtabsData.scroller.hasTabClickHandler) {\n $targetElInstance\n .find('a[data-toggle=\"tab\"]')\n .off('.scrtabs');\n }\n\n if (scrtabsData.isWrapperOnly) { // we just wrapped nav-tabs markup, so restore it\n // $targetElInstance is the ul.nav-tabs\n $tabsContainer = $targetElInstance.parents('.scrtabs-tab-container');\n\n if ($tabsContainer.length) {\n $tabsContainer.replaceWith($targetElInstance);\n }\n\n } else { // we generated the tabs from data so destroy everything we created\n if (scrtabsData.scroller && scrtabsData.scroller.initTabs) {\n scrtabsData.scroller.initTabs = null;\n }\n\n // $targetElInstance is the container for the ul.nav-tabs we generated\n $targetElInstance\n .find('.scrtabs-tab-container')\n .add('.tab-content')\n .remove();\n }\n\n $targetElInstance.removeData('scrtabs');\n\n while (--$.fn.scrollingTabs.nextInstanceId >= 0) {\n $(window).off(CONSTANTS.EVENTS.WINDOW_RESIZE + $.fn.scrollingTabs.nextInstanceId);\n }\n\n $('body').off(CONSTANTS.EVENTS.FORCE_REFRESH);\n }\n\n\n $.fn.scrollingTabs = function (methodOrOptions) {\n\n if (methods[methodOrOptions]) {\n return methods[methodOrOptions].apply(this, Array.prototype.slice.call(arguments, 1));\n } else if (!methodOrOptions || (typeof methodOrOptions === 'object')) {\n return methods.init.apply(this, arguments);\n } else {\n $.error('Method ' + methodOrOptions + ' does not exist on $.scrollingTabs.');\n }\n };\n\n $.fn.scrollingTabs.nextInstanceId = 0;\n\n $.fn.scrollingTabs.defaults = {\n tabs: null,\n propPaneId: 'paneId',\n propTitle: 'title',\n propActive: 'active',\n propDisabled: 'disabled',\n propContent: 'content',\n ignoreTabPanes: false,\n scrollToTabEdge: false,\n disableScrollArrowsOnFullyScrolled: false,\n forceActiveTab: false,\n reverseScroll: false,\n widthMultiplier: 1,\n tabClickHandler: null,\n cssClassLeftArrow: 'glyphicon glyphicon-chevron-left',\n cssClassRightArrow: 'glyphicon glyphicon-chevron-right',\n leftArrowContent: '',\n rightArrowContent: '',\n tabsLiContent: null,\n tabsPostProcessors: null,\n enableSwiping: false,\n enableRtlSupport: false,\n handleDelayedScrollbar: false,\n bootstrapVersion: 3\n };\n}(jQuery, window));","$.ui.plugin.add('resizable', 'alsoResizeReverse', {\r\n start: function () {\r\n var that = $(this).resizable('instance'),\r\n o = that.options;\r\n\r\n $(o.alsoResizeReverse).each(function () {\r\n var el = $(this);\r\n el.data('ui-resizable-alsoresizeReverse', {\r\n width: parseInt(el.width(), 10),\r\n height: parseInt(el.height(), 10),\r\n left: parseInt(el.css('left'), 10),\r\n top: parseInt(el.css('top'), 10)\r\n });\r\n });\r\n },\r\n\r\n resize: function (event, ui) {\r\n var that = $(this).resizable('instance'),\r\n o = that.options,\r\n os = that.originalSize,\r\n op = that.originalPosition,\r\n delta = {\r\n height: that.size.height - os.height || 0,\r\n width: that.size.width - os.width || 0,\r\n top: that.position.top - op.top || 0,\r\n left: that.position.left - op.left || 0\r\n };\r\n\r\n $(o.alsoResizeReverse).each(function () {\r\n var el = $(this),\r\n start = $(this).data('ui-resizable-alsoresize-reverse'),\r\n style = {},\r\n css = el.parents(ui.originalElement[0]).length ? ['width', 'height'] : ['width', 'height', 'top', 'left'];\r\n\r\n $.each(css, function (i, prop) {\r\n var sum = (start[prop] || 0) - (delta[prop] || 0);\r\n if (sum && sum >= 0) {\r\n style[prop] = sum || null;\r\n }\r\n });\r\n\r\n el.css(style);\r\n });\r\n },\r\n\r\n stop: function () {\r\n $(this).removeData('resizable-alsoresize-reverse');\r\n }\r\n});"]}