{"version":3,"sources":["../node_modules/browser-pack/_prelude.js","core/JsInterop/ObservableApi/mutationObserver.ts","core/JsInterop/ObservableApi/observableApi.ts","core/JsInterop/ObservableApi/resizeObserver.ts","core/JsInterop/interop.ts","core/JsInterop/modules/components/backtopHelper.ts","core/JsInterop/modules/components/export.ts","core/JsInterop/modules/components/iconHelper.ts","core/JsInterop/modules/components/inputHelper.ts","core/JsInterop/modules/components/mentionsHelper.ts","core/JsInterop/modules/components/modalHelper.ts","core/JsInterop/modules/components/overlay.ts","core/JsInterop/modules/components/overlayHelper.ts","core/JsInterop/modules/components/tableHelper.ts","core/JsInterop/modules/components/uploadHelper.ts","core/JsInterop/modules/dom/dragHelper.ts","core/JsInterop/modules/dom/eventHelper.ts","core/JsInterop/modules/dom/exports.ts","core/JsInterop/modules/dom/infoHelper.ts","core/JsInterop/modules/dom/manipulationHelper.ts","core/JsInterop/modules/dom/types.ts","core/JsInterop/modules/enums.ts","core/JsInterop/modules/stateProvider.ts","core/JsInterop/modules/styleHelper.ts","main.ts"],"names":["r","e","n","t","o","i","f","c","require","u","a","Error","code","p","exports","call","length","1","module","infoHelper_1","mutationObserver","key","invoker","observer","arguments","undefined","MutationObserver","mutations","observerCallback","mutationObservers","set","element","options","get","domElement","infoHelper","observe","this","disconnect","delete","entriesJson","JSON","stringify","invokeMethodAsync","Map","resizeObserver_1","mutationObserver_1","Object","defineProperty","enumerable","resizeObserver","ResizeObserverEntry","window","ResizeObserver","entries","observerCallBack","resizeObservers","unobserve","mappedEntries","Array","forEach","entry","mEntry","borderBoxSize","blockSize","inlineSize","contentBoxSize","contentRect","x","y","width","height","top","right","bottom","left","target","push","stateProvider_1","exports_1","state","observable","styleHelper_1","domInfoHelper","domTypes","domManipulationHelper","eventHelper","export_1","styleHelper","dragHelper_1","backtopHelper","iconHelper","inputHelper","mentionsHelper","modalHelper","overlayHelper","tableHelper","uploadHelper","enableDraggable","disableDraggable","resetModalPosition","log","text","console","dom","slideTo","scrollTop","backtopHelper_1","overlayHelper_1","uploadHelper_1","mentionsHelper_1","modalHelper_1","inputHelper_1","tableHelper_1","iconHelper_1","scriptUrl","script","document","querySelector","createElement","setAttribute","body","appendChild","observableApi_1","result","scrollHeight","currentStyle","parseFloat","getComputedStyle","defaultView","getPropertyValue","is","NaN","minRows","maxRows","objReference","objReferenceDict","id","eventCallbackRegistry","resizeTextArea","addEventListener","resize","create","style","getTextAreaInfo","disposeResizeTextArea","removeEventListener","dims","rowHeight","offsetHeight","oldHeight","oldRows","rows","Math","trunc","newHeight","max","overflowY","scrollWidth","position","value","selectionStart","selectionEnd","mentionsOnWindowClick","offset","getOffset","elem","InputCaret","mentionsObj","inputor","_classCallCheck","getPos","domInputor","getPosition","pos","format","replace","test","navigator","userAgent","inputorValue","start_range","slice","end_range","html","Mirror","rect","getBoundingClientRect","scrollLeft","$mirror","AntDesign","interop","css","mirrorCss","innerHTML","parentElement","append","_this","zIndex","css_attr","flag","oRect","offsetLeft","offsetTop","removeChild","selector","htmlElement","count","ele","hasAttribute","activeElement","blur","setTimeout","focus","getActiveElement","focusDialog","querySelectorAll","parentNode","Placement","TriggerBoundyAdjustMode","Overlay","end","overlay","className","indexOf","start","lastIndexOf","substr","classList","remove","isContainerBody","scrollbarSize","horizontalHeight","innerHeight","documentElement","clientHeight","verticalWidth","innerWidth","clientWidth","container","offsetWidth","blazorId","resizing","bind","trigger","mutating","attributes","characterData","childList","subtree","attributeOldValue","characterDataOldValue","onScroll","diff","isTriggerFixed","lastScrollPosition","pageYOffset","reversePositionValue","containerInfo","overlayInfo","selectedVerticalPosition","sanitizedPosition","getAdjustedBottom","calculatePosition","overlayPreset","duringInit","lastStyleMutation","cssText","dispose","contains","applyLocation","firstTime","offsetParent","recentPlacement","placement","getKeyElementDimensions","restoreInitialPlacement","calculationsToPerform","getNominalPositions","size","adjustToContainerBoundaries","sanitizeCalculatedPositions","triggerPrefixCls","add","assign","getMaxZIndex","selectedHorizontalPosition","getAdjustedRight","containerBoundarySize","getContainerBoundarySize","directionsToCalculate","Set","boundyAdjustMode","None","horizontalPosition","getHorizontalPosition","verticalPosition","getVerticalPosition","initialPlacement","appliedStylePositionMap","horizontal","vertical","verticalCalculation","setVerticalCalculation","horizontalCalculation","setHorizontalCalculation","info","parentInfo","containerId","absoluteTop","triggerInfo","absoluteLeft","triggerHtml","outerHTML","class","appliedCssPosition","overlay_style_top","overlay_style_bottom","overlay_style_left","overlay_style_right","pageXOffset","containerIsBody","scrollbars","overlayConstraints","placment","applyPlacement","stringMach","currentPlacement","newPlacement","getInfo","calculateScrollBarSizes","triggerPosition","clientTop","clientLeft","has","adjustVerticalToContainerBoundaries","adjustHorizontalToContainerBoundaries","getWindow","scroll","getScroll","bodyBoundarySize","InScroll","setBodyBoundayrSize","verticalScrollBasedOnParent","parentIsInsignificant","horizontalScrollBasedOnParent","visibleIn","boundary","positionCache","selectedPositionCache","placementCache","horizontalCalculationCache","visibleWidthBeforeAdjustment","visibleWidthInBodyBeforeAdjustment","visibleWidthAfterAdjustment","visibleWidthInBodyAfterAdjustment","overlayFitsContainer","getOverlayVisibleWidth","isContainerOverBody","getHorizontalAdjustment","verticalCalculationCache","visibleHeightBeforeAdjustment","visibleHeightInBodyBeforeAdjustment","visibleHeightAfterAdjustment","visibleHeightInBodyAfterAdjustment","getOverlayVisibleHeight","getVerticalAdjustment","type","endExpressedAsLeft","endExpressedAsTop","reverseVerticalPlacementMap","reverseHorizontalPlacementMap","triggerIsWrappedInDiv","childNodes","childElement","LeftTop","RightTop","triggerTop","triggerHeight","overlayHeight","constraints","BottomLeft","BottomCenter","Bottom","BottomRight","verticalOffset","Left","Right","TopLeft","TopCenter","Top","TopRight","triggerBottom","LeftBottom","RightBottom","triggerLeft","triggerWidth","overlayWidth","horizontalOffset","triggerRight","containerDimension","overlayDimension","triggerBoundyAdjustMode","findAncestorWithZIndex","removeHiddenClass","getFirstValidChild","arrowPointAtCenter","arrowCenterPlacementMatch","isFixedPosition","overlay_1","overlaySelector","triggerSelector","containerSelector","overlayTop","overlayLeft","overlayElement","containerElement","triggerElement","addElementTo","overlayPresets","overlayRegistry","addOverlayToContainer","preventKeyOnCondition","bodyRef","tableRef","headerRef","scrollX","scrollY","bindScroll","SetScrollPositionClassName","pingLeft","pingRight","abs","btn","fileClickEvent","stopPropagation","fileId","currentTarget","nodeValue","getElementById","click","files","fileInfo","file","objectUrl","getObjectURL","fileName","name","objectURL","url","URL","createObjectURL","webkitURL","index","data","headers","instance","percentMethod","successMethod","errorMethod","method","formData","FormData","req","XMLHttpRequest","onreadystatechange","readyState","status","responseText","upload","onprogress","event","percent","floor","loaded","onerror","open","header","setRequestHeader","send","throttle","fn","threshold","timeout","Date","_len","args","_key","curTime","clearTimeout","apply","eventMap","defaultOptions","inViewport","Dragger","_container","_trigger","_options","onMousedown","onMouseup","onMousemove","onResize","_style","_isFirst","dragInViewport","_this2","_state","_getContainerPos","isInDrag","mX","clientX","mY","clientY","getContainerPos","domMaxY","domMaxX","getAttribute","domStartX","domStartY","_getContainerPos2","newDomX","nowX","nowY","disX","disY","newDomY","margin","paddingBottom","parseInt","dragger","bindDrag","unbindDrag","resetContainerStyle","eventType","eventName","evt","createEvent","initEvent","dispatchEvent","preventDefault","callback","k","obj","json","v","Node","Window","debounce","firstElementChild","addDomEventListener","inputElement","keys","map","toUpperCase","preventKeys","check","func","wait","immediate","_arguments","context","callNow","manipulationHelper_1","eventHelper_1","manipulationHelper","absolutePosition","getElementAbsolutePos","round","res","viewportElement","box","innerText","concat","_toConsumableArray","reduce","node","nodeName","toLowerCase","zIndexAsString","Number","isNaN","enums","cachedScrollBarSize","addElement","elementSelector","prepend","parent","insertBefore","firstChild","delElement","copyElementAsRichText","copy","selection","getSelection","range","rangeCount","removeAllRanges","createRange","selectNode","addRange","successful","execCommand","err","clipboard","writeText","then","error","fallbackCopyTextToClipboard","textArea","select","msg","noScroll","option","FocusBehavior","FocusAtLast","HTMLElement","preventScroll","HTMLInputElement","HTMLTextAreaElement","FocusAndSelectAll","FocusAtFirst","setSelectionRange","scrollIntoView","behavior","block","inline","targetPageY","timer","setInterval","currentY","speed","ceil","clearInterval","scrollTo","currInput","tagName","inputs","getElementsByTagName","next","oldBodyCache","scrollBarSize","oldBodyCacheStack","getScrollBarSize","hasScrollbar","overflow","addCls","pop","_a","_b","_c","removeCls","outer","widthContained","widthScroll","inner","outerStyle","pointerEvents","visibility","objReferenceName","State","getInstance","_element$classList","clsName","_element$classList2","query","matchMedia","matches","styleProp","cssAttributes","split","cssAttribute","attribute","setProperty","hasOwnProperty"],"mappings":"CAAA,SAAAA,EAAAC,EAAAC,EAAAC,GAAA,SAAAC,EAAAC,EAAAC,GAAA,IAAAJ,EAAAG,GAAA,CAAA,IAAAJ,EAAAI,GAAA,CAAA,IAAAE,EAAA,mBAAAC,SAAAA,QAAA,IAAAF,GAAAC,EAAA,OAAAA,EAAAF,GAAA,GAAA,GAAAI,EAAA,OAAAA,EAAAJ,GAAA,GAAA,MAAAK,EAAA,IAAAC,MAAA,uBAAAN,EAAA,MAAAO,KAAA,mBAAAF,EAAAG,EAAAX,EAAAG,GAAA,CAAAS,QAAA,IAAAb,EAAAI,GAAA,GAAAU,KAAAF,EAAAC,QAAA,SAAAd,GAAA,OAAAI,EAAAH,EAAAI,GAAA,GAAAL,IAAAA,IAAAa,EAAAA,EAAAC,QAAAd,EAAAC,EAAAC,EAAAC,GAAA,OAAAD,EAAAG,GAAAS,QAAA,IAAA,IAAAL,EAAA,mBAAAD,SAAAA,QAAAH,EAAA,EAAAA,EAAAF,EAAAa,OAAAX,IAAAD,EAAAD,EAAAE,IAAA,OAAAD,EAAA,CAAA,CAAAa,EAAA,CAAA,SAAAT,EAAAU,EAAAJ,gB,+SCAC,IAAAK,EAAAX,EAAA,6BAEYY,G,uCAKGC,EAAaC,GAAwC,IAE7DC,OAAA,EAGFA,IAL+D,EAAAC,UAAAR,aAAAS,IAAAD,UAAA,KAAAA,UAAA,GAKpD,IAAIE,iBAAiB,SAAAC,GAAA,OAAaP,EAAiBQ,iBAAiBD,EAAWL,KAE/E,IAAII,iBAAiB,SAAAC,GAAA,OAAaL,EAAQK,KAEvDP,EAAiBS,kBAAkBC,IAAIT,EAAKE,K,8BAG/BF,EAAaU,EAASC,GAC7BT,EAAWH,EAAiBS,kBAAkBI,IAAIZ,GACpDE,IACEW,EAAaf,EAAAgB,WAAcF,IAAIF,GACnCR,EAASa,QAAQF,EAAYF,M,iCAIfX,GACVE,EAAWc,KAAKR,kBAAkBI,IAAIZ,GACxCE,GACFA,EAASe,e,8BAIEjB,GACbgB,KAAKC,WAAWjB,GAChBgB,KAAKR,kBAAkBU,OAAOlB,K,uCAGAM,EAAWL,GAEnCkB,EAAcC,KAAKC,UAAUf,GACnCL,EAAQqB,kBAAkB,SAAUH,O,kGAxCxC1B,EAAAM,iBAAAA,GAEiBS,kBAAmD,IAAIe,K,mHCJvE,IAAAC,EAAArC,EAAA,oBACDsC,GADUC,OAAAC,eAAAlC,EAAA,SAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAAY,EAAAK,kBACV1C,EAAA,uBAASuC,OAAAC,eAAAlC,EAAA,mBAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAAa,EAAA1B,qB,meCEH+B,I,UAHL,IAAAhC,EAAAX,EAAA,6BAUY0C,G,4DAGT,MAAO,mBAAoBE,S,6BAMf/B,EAAKC,GAAwC,IAErDC,OAAA,EAGFA,IALuD,EAAAC,UAAAR,aAAAS,IAAAD,UAAA,KAAAA,UAAA,GAK5C,IAAI6B,eAAe,SAACC,EAAS/B,GAAV,OAAuB2B,EAAeK,iBAAiBD,EAAS/B,EAAUD,KAE7F,IAAI+B,eAAe,SAACC,EAAS/B,GAAV,OAAuBD,EAAQgC,EAAS/B,KAExE2B,EAAeM,gBAAgB1B,IAAIT,EAAKE,K,8BAG3BF,EAAaU,GACpBR,EAAW2B,EAAeM,gBAAgBvB,IAAIZ,GAChDE,IACEW,EAAaf,EAAAgB,WAAcF,IAAIF,GACnCR,EAASa,QAAQF,M,iCAIHb,GACVE,EAAWc,KAAKmB,gBAAgBvB,IAAIZ,GACtCE,GACFA,EAASe,e,gCAIIjB,EAAaU,GACtBR,EAAWc,KAAKmB,gBAAgBvB,IAAIZ,GAEtCE,IACEW,EAAaf,EAAAgB,WAAcF,IAAIF,GACnCR,EAASkC,UAAUvB,M,8BAIRb,GACbgB,KAAKC,WAAWjB,GAChBgB,KAAKmB,gBAAgBjB,OAAOlB,K,uCAGEiC,EAAS/B,EAAUD,GACjD,IACQoC,EADJpC,IACIoC,EAAgB,IAAIC,MAC1BL,EAAQM,QAAQ,SAAAC,GACd,IACQC,EADJD,IACIC,EAAS,IAAIX,EACfU,EAAME,gBACRD,EAAOC,cAAgB,CACrBC,UAAWH,EAAME,cAAcC,UAC/BC,WAAYJ,EAAME,cAAcE,aAIhCJ,EAAMK,iBACRJ,EAAOI,eAAiB,CACtBF,UAAWH,EAAMK,eAAeF,UAChCC,WAAYJ,EAAMK,eAAeD,aAIjCJ,EAAMM,cACRL,EAAOK,YAAc,CACnBC,EAAGP,EAAMM,YAAYC,EACrBC,EAAGR,EAAMM,YAAYE,EACrBC,MAAOT,EAAMM,YAAYG,MACzBC,OAAQV,EAAMM,YAAYI,OAC1BC,IAAKX,EAAMM,YAAYK,IACvBC,MAAOZ,EAAMM,YAAYM,MACzBC,OAAQb,EAAMM,YAAYO,OAC1BC,KAAMd,EAAMM,YAAYQ,OAK5Bb,EAAOc,OAASf,EAAMe,OACtBlB,EAAcmB,KAAKf,MAIjBtB,EAAcC,KAAKC,UAAUgB,GACnCpC,EAAQqB,kBAAkB,SAAUH,Q,2BA1F1C1B,EAAAoC,eAAAA,GAOiBM,gBAA+C,IAAIZ,K,gICjBpE,IAAAkC,EAAAtE,EAAA,2BAEAuE,GAFShC,OAAAC,eAAAlC,EAAA,QAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAA6C,EAAAE,SACTlE,EAAAmE,WAAAzE,EAAA,iCACAA,EAAA,0BACA0E,GADSnC,OAAAC,eAAAlC,EAAA,gBAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAA8C,EAAAI,iBAAepC,OAAAC,eAAAlC,EAAA,WAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAA8C,EAAAK,YAAUrC,OAAAC,eAAAlC,EAAA,wBAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAA8C,EAAAM,yBAAuBtC,OAAAC,eAAAlC,EAAA,cAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAA8C,EAAAO,eACzD9E,EAAA,0BACA+E,GADSxC,OAAAC,eAAAlC,EAAA,cAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAAiD,EAAAM,eACThF,EAAA,gCAUAiF,GATE1C,OAAAC,eAAAlC,EAAA,gBAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAAsD,EAAAG,iBACA3C,OAAAC,eAAAlC,EAAA,aAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAAsD,EAAAI,cACA5C,OAAAC,eAAAlC,EAAA,cAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAAsD,EAAAK,eACA7C,OAAAC,eAAAlC,EAAA,iBAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAAsD,EAAAM,kBACA9C,OAAAC,eAAAlC,EAAA,cAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAAsD,EAAAO,eACA/C,OAAAC,eAAAlC,EAAA,gBAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAAsD,EAAAQ,iBACAhD,OAAAC,eAAAlC,EAAA,cAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAAsD,EAAAS,eACAjD,OAAAC,eAAAlC,EAAA,eAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAAsD,EAAAU,gBAEFzF,EAAA,6BAASuC,OAAAC,eAAAlC,EAAA,kBAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAAwD,EAAAS,mBAAiBnD,OAAAC,eAAAlC,EAAA,mBAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAAwD,EAAAU,oBAAkBpD,OAAAC,eAAAlC,EAAA,qBAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAAwD,EAAAW,sBAE5CtF,EAAAuF,IAAA,SAAoBC,GAClBC,QAAQF,IAAIC,K,kgBCjBb,IAAAvB,EAAAvE,EAAA,kB,sIAGgBoE,GACT4B,EAAMzB,EAAAI,cAAclD,IAAI2C,GACxB4B,EACFzB,EAAAM,sBAAsBoB,QAAQD,EAAIE,WAElC3B,EAAAM,sBAAsBoB,QAAQ,OANpC3F,EAAA4E,c,2GCFC,IAAAiB,EAAAnG,EAAA,mBACDoG,GADU7D,OAAAC,eAAAlC,EAAA,gBAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAA0E,EAAAjB,iBACVlF,EAAA,oBACAqG,GADS9D,OAAAC,eAAAlC,EAAA,gBAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAA2E,EAAAb,iBACTvF,EAAA,mBACAsG,GADS/D,OAAAC,eAAAlC,EAAA,eAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAA4E,EAAAZ,gBACTzF,EAAA,qBACAuG,GADShE,OAAAC,eAAAlC,EAAA,iBAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAA6E,EAAAjB,kBACTrF,EAAA,kBACAwG,GADSjE,OAAAC,eAAAlC,EAAA,cAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAA8E,EAAAjB,eACTtF,EAAA,kBACAyG,GADSlE,OAAAC,eAAAlC,EAAA,cAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAA+E,EAAApB,eACTpF,EAAA,kBACA0G,GADSnE,OAAAC,eAAAlC,EAAA,cAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAAgF,EAAAjB,eACTxF,EAAA,iBAASuC,OAAAC,eAAAlC,EAAA,aAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAAiF,EAAAvB,e,4hBCNqBwB,GAC1B,IAGMC,EAHFC,SAASC,cAAT,oBAA2CH,EAA3C,SAGEC,EAASC,SAASE,cAAc,WAC/BC,aAAa,MAAOL,GAC3BC,EAAOI,aAAa,iBAAkBL,GACtCE,SAASI,KAAKC,YAAYN,QARhBzB,E,gGAAb7E,EAAA6E,WAAAA,G,8UCAA,IAAAZ,EAAAvE,EAAA,kBACDsE,EAAAtE,EAAA,oBACAmH,EAAAnH,EAAA,qCAEaoF,G,gDAEY7D,GACrB,IAAI6F,EAAS,GACTpB,EAAMzB,EAAAI,cAAclD,IAAIF,GAC5B,OAAKyE,GACLoB,EAAA,aAAyBpB,EAAIqB,cAAgB,EAEzC9F,EAAQ+F,cACVF,EAAA,WAAuBG,WAAWhG,EAAQ+F,aAAa,gBACvDF,EAAA,WAAuBG,WAAWhG,EAAQ+F,aAAa,gBACvDF,EAAA,cAA0BG,WAAWhG,EAAQ+F,aAAa,mBAC1DF,EAAA,aAAyBG,WAAWhG,EAAQ+F,aAAa,kBACzDF,EAAA,UAAsBG,WAAWhG,EAAQ+F,aAAa,gBAE/C1E,OAAO4E,mBACdJ,EAAA,WAAuBG,WAAWV,SAASY,YAAYD,iBAAiBjG,EAAS,MAAMmG,iBAAiB,gBACxGN,EAAA,WAAuBG,WAAWV,SAASY,YAAYD,iBAAiBjG,EAAS,MAAMmG,iBAAiB,gBACxGN,EAAA,cAA0BG,WAAWV,SAASY,YAAYD,iBAAiBjG,EAAS,MAAMmG,iBAAiB,mBAC3GN,EAAA,aAAyBG,WAAWV,SAASY,YAAYD,iBAAiBjG,EAAS,MAAMmG,iBAAiB,kBAC1GN,EAAA,UAAsBG,WAAWV,SAASY,YAAYD,iBAAiBjG,EAAS,MAAMmG,iBAAiB,gBAGrGnF,OAAOoF,GAAGC,IAAKR,EAAA,aACjBA,EAAA,UAAsB,GACpB7E,OAAOoF,GAAGC,IAAKR,EAAA,gBACjBA,EAAA,aAAyB,GACpBA,GAtBU,O,6CAyBW7F,EAA8BsG,EAAiBC,EAAiBC,GAC5F,GAAKA,EAaH,OATAzD,EAAAE,MAAMwD,iBAAiBzG,EAAQ0G,IAAMF,EACrCzD,EAAAE,MAAM0D,sBAAsB3G,EAAQ0G,GAAK,SAAW,WAAc7C,EAAY+C,eAAe5G,EAASsG,EAASC,IAC/GvG,EAAQ6G,iBAAiB,QAAS9D,EAAAE,MAAM0D,sBAAsB3G,EAAQ0G,GAAK,UAC3Ed,EAAAkB,OAAOC,OAAO/G,EAAQ0G,GAAK,UAAW,WACpC7C,EAAY+C,eAAe5G,EAASsG,EAASC,KAC5C,GACHX,EAAAkB,OAAOzG,QAAQL,EAAQ0G,GAAK,UAAW1G,GACvC6D,EAAY+C,eAAe5G,EAASsG,EAASC,GAC7CvG,EAAQgH,MAAMF,OAAS,OAChBxG,KAAK2G,gBAAgBjH,GAZ5BM,KAAK4G,sBAAsBlH,K,4CAgBFA,GAC3BA,EAAQmH,oBAAoB,QAASpE,EAAAE,MAAM0D,sBAAsB3G,EAAQ0G,GAAK,UAC9Ed,EAAAkB,OAAOpF,UAAU1B,EAAQ0G,GAAK,UAAW1G,GACzC+C,EAAAE,MAAMwD,iBAAiBzG,EAAQ0G,IAAM,KACrC3D,EAAAE,MAAM0D,sBAAsB3G,EAAQ0G,GAAK,SAAW,O,qCAGhC1G,EAA8BsG,EAAiBC,GACnE,IAAIa,EAAO9G,KAAK2G,gBAAgBjH,GAC5BqH,EAAYD,EAAA,WACZE,EAAeF,EAAA,WAAqBA,EAAA,cAAwBA,EAAA,UAAoBA,EAAA,aAChFG,EAAYvB,WAAWhG,EAAQgH,MAAMxE,QAErCgF,EAAUxH,EAAQyH,KAIlBA,GAHJzH,EAAQyH,KAAOnB,EACftG,EAAQgH,MAAMxE,OAAS,OAEZkF,KAAKC,MAAM3H,EAAQ8F,aAAeuB,IAGzCO,GAFJ5H,EAAQyH,KAAOD,EAEC,GACLjB,GAFXkB,EAAOC,KAAKG,IAAIvB,EAASmB,KAMvBzH,EAAQgH,MAAMxE,QADdoF,GAFAH,EAAOlB,GAEac,EAAYC,GACG,KACnCtH,EAAQgH,MAAMc,UAAY,YAI1B9H,EAAQgH,MAAMxE,QADdoF,EAAYH,EAAOJ,EAAYC,GACI,KACnCtH,EAAQgH,MAAMc,UAAY,UAExBP,IAAcK,GACE7E,EAAAE,MAAMwD,iBAAiBzG,EAAQ0G,IACrC9F,kBAAkB,oBAAqBZ,EAAQ+H,YAAaH,K,wCAInD5H,EAASgI,GAChB,GAAZA,KACEvD,EAAwBzB,EAAAI,cAAclD,IAAIF,KAExCgI,GAAYvD,EAAIwD,MAAMhJ,SACxBwF,EAAIyD,eAAiBF,EACrBvD,EAAI0D,aAAeH,Q,iGA7F7BjJ,EAAA8E,YAAAA,G,8fCJC,IAAAd,EAAAtE,EAAA,oB,mEAIoBuB,EAASwG,GAC1BzD,EAAAE,MAAMwD,iBAAN,SAAqCD,EACrCnF,OAAOwF,iBAAiB,QAASvG,KAAK8H,uBAEhCC,EAAS/H,KAAKgI,UAAUtI,GAE9B,MAAO,CAACqI,EAAOzF,KAAMyF,EAAO5F,IAAM4F,EAAO7F,OAAS,M,gCAG3B+F,GACvB,OAAQ,IAAIC,EAAWD,GAAOD,c,4CAGKpK,GACnC,IAAIuK,EAAc1F,EAAAE,MAAMwD,iBAAN,SACdgC,EACFA,EAAY7H,kBAAkB,yBAE9BS,OAAO8F,oBAAoB,QAAS7G,KAAK8H,2BApB/CrJ,EAAA+E,e,MA0BM0E,EAGJ,SAAAA,EAAYE,GAAOC,EAAArI,KAAAkI,GAInBlI,KAAAsI,OAAS,WACP,OAAOtI,KAAKuI,WAAWX,gBAGzB5H,KAAAwI,YAAc,SAAUC,GACtB,IACAF,EAAavI,KAAKuI,WAElBG,EAAS,SAAUf,GAKjB,OAJAA,EAAQA,EAAMgB,QAAQ,aAAc,KAAKA,QAAQ,cAAe,SAE9DhB,EADE,WAAWiB,KAAKC,UAAUC,WACpBnB,EAAMgB,QAAQ,MAAO,UAExBhB,GAKLoB,GAFFN,EADGA,GACGzI,KAAKsI,SAEMC,EAAWZ,OAC9BqB,EAAcD,EAAaE,MAAM,EAAGR,GACpCS,EAAYH,EAAaE,MAAMR,GAC/BU,EAAO,sDAAwDT,EAAOM,GAAe,UAIrF,OAFAG,GADAA,GAAQ,2EACA,sDAAwDT,EAAOQ,GAAa,WAC3E,IAAIE,EAAOb,GACN9B,OAAO0C,GAAME,QAG7BrJ,KAAAgI,UAAY,WAAoB,IAAVS,EAAU,EAAAtJ,UAAAR,aAAAS,IAAAD,UAAA,GAAAA,UAAA,GAAJ,KAE1BoJ,EAAavI,KAAKuI,WAEdc,EAAOd,EAAWe,wBAEtBvB,EAAS,CACPzF,KAAM+G,EAAK/G,KACXH,IAAKkH,EAAKlH,KAGZuF,EAAW1H,KAAKwI,YAAYC,GAC5B,MAAgB,CACdnG,KAAMyF,EAAOzF,KAAOoF,EAASpF,KAAOiG,EAAWgB,WAC/CpH,IAAK4F,EAAO5F,IAAMuF,EAASvF,IAAMoG,EAAWlE,UAC5CnC,OAAQwF,EAASxF,SA9CnBlC,KAAKuI,WAAaH,GAoDhBgB,EAGJ,SAAAA,EAAYhB,GAAOC,EAAArI,KAAAoJ,GAKnBpJ,KAAAyG,OAAS,SAAU0C,GAQjB,OAPAnJ,KAAKwJ,QAAUxE,SAASE,cAAc,OAEhCnE,OAAQ0I,UAAUC,QAAQvG,YAAYwG,IAAI3J,KAAKwJ,QAASxJ,KAAK4J,aAEnE5J,KAAKwJ,QAAQK,UAAYV,EACzBnJ,KAAKuI,WAAWuB,cAAcC,OAAO/J,KAAKwJ,SAEnCxJ,MAGTA,KAAA4J,UAAY,WACV,IAASI,EAAQhK,KACjB2J,EAAM,CACJjC,SAAU,WACVpF,MAAO,KACPH,IAAK,EACL8H,QAAS,KASX,OANAjK,KAAKkK,SAAS1H,KAAK,SAEnBxC,KAAKkK,SAAS3I,QAAQ,SAAC/C,GACrB,OAAOmL,EAAInL,GAAKwL,EAAMzB,WAAW7B,MAAMlI,KAGlCmL,GAGT3J,KAAAqJ,KAAO,WACL,IACAc,EAAOnK,KAAKwJ,QAAQvE,cAAc,UAC9BmF,EAAQD,EAAKb,wBAEjBb,EAAM,CACJnG,KAAM6H,EAAKE,WACXlI,IAAKgI,EAAKG,WAGZjB,EAAO,CACL/G,KAAMmG,EAAInG,KACVH,IAAKsG,EAAItG,IACTD,OAAQkI,EAAMlI,QAIhB,OADAlC,KAAKwJ,QAAQM,cAAcS,YAAYvK,KAAKwJ,SACrCH,GAlDPrJ,KAAKuI,WAAaH,EAClBpI,KAAKkK,SAAW,K,oWCzFnB,IAAAxH,EAAAvE,EAAA,kB,0IAGoBqM,GAAmC,IAI5CC,EAJ4CT,EAAAhK,KAAjB0K,EAAiB,EAAAvL,UAAAR,aAAAS,IAAAD,UAAA,GAAAA,UAAA,GAAD,EAC/CwL,EAAmB3F,SAASC,cAAcuF,GAC1CG,IACEA,EAAIC,aAAa,YAEnBH,OADIA,EAA2BzF,SAAS6F,gBACxCJ,EAAaK,OAEbC,WAAW,WACTJ,EAAIK,QACQ,IAAMtI,EAAAI,cAAcmI,qBAClBT,GACRE,EAAQ,IACVV,EAAKkB,YAAYV,EAAUE,EAAQ,IAGtC,O,yCAMP1F,SAASmG,iBAAiB,mBACvB5J,QAAQ,SAAA3D,GAAA,OAAKoH,SAASI,KAAKmF,YAAY3M,EAAEwN,kBAvBhD3M,EAAAgF,Y,uYCFC,IAKW4H,EAkBAC,EAvBX5I,EAAAvE,EAAA,kBACDmH,EAAAnH,EAAA,qCACAsC,EAAAtC,EAAA,wCA2DaoN,IAxDDF,EAAAA,EAAA5M,EAAA4M,YAAA5M,EAAA4M,UAAS,KACnBA,EAAA,QAAA,GAAA,UACAA,EAAAA,EAAA,UAAA,GAAA,YACAA,EAAAA,EAAA,IAAA,GAAA,MACAA,EAAAA,EAAA,SAAA,GAAA,WACAA,EAAAA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,QAAA,GAAA,UACAA,EAAAA,EAAA,WAAA,GAAA,aACAA,EAAAA,EAAA,MAAA,GAAA,QACAA,EAAAA,EAAA,SAAA,GAAA,WACAA,EAAAA,EAAA,YAAA,GAAA,cACAA,EAAAA,EAAA,WAAA,IAAA,aACAA,EAAAA,EAAA,aAAA,IAAA,eACAA,EAAAA,EAAA,OAAA,IAAA,SACAA,EAAAA,EAAA,YAAA,IAAA,eAIUC,EAAAA,EAAA7M,EAAA6M,0BAAA7M,EAAA6M,wBAAuB,KACjCA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,OAAA,GAAA,SACAA,EAAAA,EAAA,SAAA,GAAA,W,+CAmWE,IAAIE,EAAMxL,KAAKyL,QAAQC,UAAUC,QAAQ,WACrCC,EAAQ5L,KAAKyL,QAAQC,UAAUG,YAAY,IAAKL,GACvC,GAATI,IAEgB,MADdF,EAAY1L,KAAKyL,QAAQC,UAAUI,OAAOF,EAAQ,EAAGJ,KAEvDxL,KAAKyL,QAAQM,UAAUC,OAAON,M,gDAM9B1L,KAAKiM,gBACPjM,KAAKkM,cAAgB,CACnBC,iBAAkBpL,OAAOqL,YAAcpH,SAASqH,gBAAgBC,aAChEC,cAAexL,OAAOyL,WAAaxH,SAASqH,gBAAgBI,aAI9DzM,KAAKkM,cAAgB,CACnBC,iBAAkBnM,KAAK0M,UAAU1F,aAAehH,KAAK0M,UAAUJ,aAC/DC,cAAevM,KAAK0M,UAAUC,YAAc3M,KAAK0M,UAAUD,e,gCAM/DnH,EAAAkB,OAAOC,OAAP,aAA2BzG,KAAK4M,SAAY5M,KAAK6M,SAASC,KAAK9M,OAAO,GACtEsF,EAAAkB,OAAOzG,QAAP,aAA4BC,KAAK4M,SAAY5M,KAAK0M,WAClDpH,EAAAkB,OAAOzG,QAAP,aAA4BC,KAAK4M,SAAY5M,KAAK+M,SAClDtM,EAAA1B,iBAAS0H,OAAT,WAA2BzG,KAAK4M,SAAY5M,KAAKgN,SAASF,KAAK9M,OAAO,GACtES,EAAA1B,iBAASgB,QAAT,WAA4BC,KAAK4M,SAAY5M,KAAK+M,QAAS,CACzDE,YAAY,EACZC,eAAe,EACfC,WAAW,EACXC,SAAS,EACTC,mBAAmB,EACnBC,uBAAuB,KAGrBtN,KAAKiM,gBACPlL,OAGAf,KAAK0M,WAHEnG,iBAAiB,SAAUvG,KAAKuN,SAAST,KAAK9M,S,iCAQvD,IAEUwN,EAFNxN,KAAKyN,eACHzN,KAAK0N,qBAAuB3M,OAAO4M,cAC/BH,EAAOzM,OAAO4M,YAAc3N,KAAK0N,mBACvC1N,KAAK0H,SAASvF,KAAOqL,EACrBxN,KAAK0H,SAASrF,OAASkJ,EAAQqC,qBAAqB5N,KAAK0H,SAASvF,IAAKnC,KAAK6N,cAAcrI,aAAcxF,KAAK8N,YAAYxB,cACnF,QAAlCtM,KAAK+N,0BACP/N,KAAKgO,kBAAkB7L,IAAMnC,KAAK0H,SAASvF,IAC3CnC,KAAKyL,QAAQ/E,MAAMvE,IAAMnC,KAAKgO,kBAAkB7L,IAAM,OAEtDnC,KAAKgO,kBAAkB3L,OAASrC,KAAKiO,oBACrCjO,KAAKyL,QAAQ/E,MAAMrE,OAASrC,KAAKgO,kBAAkB3L,OAAS,MAE9DrC,KAAK0N,mBAAqB3M,OAAO4M,aAWnC3N,KAAKkO,mBAAkB,GAAM,EAAOlO,KAAKmO,iB,+BAI5BlN,EAAS/B,GAEpBc,KAAKoO,WACPpO,KAAKoO,YAAa,EAGpBpO,KAAKkO,mBAAkB,GAAM,EAAOlO,KAAKmO,iB,+BAW1B7O,GACXU,KAAKoO,WACPpO,KAAKoO,YAAa,EAGhBpO,KAAKqO,oBAAsBrO,KAAK+M,QAAQrG,MAAM4H,UAChDtO,KAAKqO,kBAAoBrO,KAAK+M,QAAQrG,MAAM4H,QAC5CtO,KAAKkO,mBAAkB,GAAM,EAAOlO,KAAKmO,kB,gCAM3C7I,EAAAkB,OAAO+H,QAAP,aAA4BvO,KAAK4M,UACjCnM,EAAA1B,iBAASwP,QAAT,WAA4BvO,KAAK4M,UAC7B5M,KAAK0M,UAAU8B,SAASxO,KAAKyL,UAC/BzL,KAAK0M,UAAUnC,YAAYvK,KAAKyL,UAG9BzL,KAAKiM,gBACPlL,OAGAf,KAAK0M,WAHE7F,oBAAoB,SAAU7G,KAAKuN,Y,wCAOrBkB,GAA4E,IAApDC,EAAoD,EAAAvP,UAAAR,aAAAS,IAAAD,UAAA,IAAAA,UAAA,GAAjCgP,EAAiChP,UAAA,GAEnG,GAAKuP,GAAc1O,KAAKyL,QAAQkD,aAIhC,OAAKR,GAAkBnO,KAAK+M,QAAQ4B,cAMpC3O,KAAK0N,mBAAqB3M,OAAO4M,YACjC3N,KAAK4O,gBAAkB5O,KAAK6O,UAC5B7O,KAAKmO,cAAgBA,EAErBnO,KAAK8O,wBAAwBJ,GAE7B1O,KAAK+O,0BAGL/O,KAAKgP,sBAAwBhP,KAAKiP,sBACI,EAAlCjP,KAAKgP,sBAAsBE,MAC7BlP,KAAKmP,8BAGPnP,KAAKoP,8BAEDX,GACFzO,KAAKyO,gBAEAzO,KAAKgO,oBAxBLhO,KAAKyL,QAAQM,UAAUyC,SAASxO,KAAKqP,iBAAmB,YAC3DrP,KAAKyL,QAAQM,UAAUuD,IAAItP,KAAKqP,iBAAmB,WAE9CrP,KAAK0H,Y,oDAkCd1H,KAAKgO,kBAAiBtN,OAAA6O,OAAA,GAAQvP,KAAK0H,UACnC1H,KAAKgO,kBAAkB/D,OAASvH,EAAAI,cAAc0M,eAC9CxP,KAAKgO,kBAAkBa,UAAY7O,KAAK6O,UACA,SAApC7O,KAAKyP,2BACPzP,KAAKgO,kBAAkB5L,MAAQ,MAG/BpC,KAAKgO,kBAAkB1L,KAAO,KAC9BtC,KAAKgO,kBAAkB5L,MAAQpC,KAAK0P,oBAGA,QAAlC1P,KAAK+N,yBACP/N,KAAKgO,kBAAkB3L,OAAS,MAGhCrC,KAAKgO,kBAAkB7L,IAAM,KAC7BnC,KAAKgO,kBAAkB3L,OAASrC,KAAKiO,uB,4CAavCjO,KAAK2P,sBAAwB3P,KAAK4P,2BAClC,IAAM1N,EAASlC,KAAK2P,sBAAsBtN,OAASrC,KAAK2P,sBAAsBxN,IACxEF,EAAQjC,KAAK2P,sBAAsBvN,MAAQpC,KAAK2P,sBAAsBrN,KACtEuN,EAAwB,IAAIC,IA4BlC,OA1BI9P,KAAK+P,kBAAoBzE,EAAwB0E,MAAQ/N,EAAQjC,KAAK8N,YAAYrB,aAAezM,KAAKiM,gBAChE,SAApCjM,KAAKyP,2BACPzP,KAAK0H,SAASpF,KAAO,EAErBtC,KAAK0H,SAAStF,MAAQ,GAGlB6N,EAAqBjQ,KAAKkQ,wBAChClQ,KAAK0H,SAASpF,KAAO2N,EAAmB3N,KACxCtC,KAAK0H,SAAStF,MAAQ6N,EAAmB7N,MACzCyN,EAAsBP,IAAI,eAGxBtP,KAAK+P,kBAAoBzE,EAAwB0E,MAAQ9N,EAASlC,KAAK8N,YAAYxB,cAAgBtM,KAAKiM,gBACpE,QAAlCjM,KAAK+N,yBACP/N,KAAK0H,SAASvF,IAAM,EAEpBnC,KAAK0H,SAASrF,OAAS,GAInB8N,EAAmBnQ,KAAKoQ,sBAC9BpQ,KAAK0H,SAASvF,IAAMgO,EAAiBhO,IACrCnC,KAAK0H,SAASrF,OAAS8N,EAAiB9N,OACxCwN,EAAsBP,IAAI,aAErBO,I,gDAUH7P,KAAK6O,YAAc7O,KAAKqQ,mBAC1BrQ,KAAK6O,UAAY7O,KAAKqQ,iBACtBrQ,KAAKyP,2BAA6BlE,EAAQ+E,wBAAwB1Q,IAAII,KAAK6O,WAAW0B,WACtFvQ,KAAK+N,yBAA2BxC,EAAQ+E,wBAAwB1Q,IAAII,KAAK6O,WAAW2B,SACpFxQ,KAAKyQ,oBAAsBlF,EAAQmF,uBAAuB1Q,KAAK6O,UAAW7O,KAAK+N,0BAC/E/N,KAAK2Q,sBAAwBpF,EAAQqF,yBAAyB5Q,KAAK6O,UAAW7O,KAAKyP,+B,qCAUrFvL,QAAQF,KAD4B,EAAA7E,UAAAR,aAAAS,IAAAD,UAAA,GAAAA,UAAA,GAAF,IACP,qBAAsBa,KAAK0H,SACpD,QACA,CACEkF,SAAU5M,KAAK4M,SACfF,UAAW,CACTmE,KAAM7Q,KAAK6N,cACXiD,WAAY,CACVxE,aAActM,KAAK0M,UAAU5C,cAAcwC,aAC3CG,YAAazM,KAAK0M,UAAU5C,cAAc2C,YAC1ClD,WAAYvJ,KAAK0M,UAAU5C,cAAcP,WACzClF,UAAWrE,KAAK0M,UAAU5C,cAAczF,WAE1C0M,YAAa/Q,KAAK0M,UAAUtG,GAC5BuJ,sBAAuB3P,KAAK2P,uBAE9B5C,QAAS,CACPiE,YAAahR,KAAKiR,YAAYD,YAC9BE,aAAclR,KAAKiR,YAAYC,aAC/B5E,aAActM,KAAKiR,YAAY3E,aAC/BG,YAAazM,KAAKiR,YAAYxE,YAC9BzF,aAAchH,KAAKiR,YAAYjK,aAC/B2F,YAAa3M,KAAKiR,YAAYtE,YAC9BoD,iBAAkB/P,KAAK+P,iBAEvBoB,YAAanR,KAAK+M,QAAQqE,UAC1B/B,iBAAkBrP,KAAKqP,kBAEzB5D,QAAS,CACPa,aAActM,KAAK8N,YAAYxB,aAC/BG,YAAazM,KAAK8N,YAAYrB,YAC9BzF,aAAchH,KAAK8N,YAAY9G,aAC/B2F,YAAa3M,KAAK8N,YAAYnB,YAC9B0E,MAAOrR,KAAKyL,QAAQC,UACpB4F,mBAAoB,CAClBC,kBAAmBvR,KAAKyL,QAAQ/E,MAAMvE,IACtCqP,qBAAsBxR,KAAKyL,QAAQ/E,MAAMrE,OACzCoP,mBAAoBzR,KAAKyL,QAAQ/E,MAAMpE,KACvCoP,oBAAqB1R,KAAKyL,QAAQ/E,MAAMtE,QAG5CrB,OAAQ,CACNqL,YAAarL,OAAOqL,YACpBI,WAAYzL,OAAOyL,WACnBmF,YAAa5Q,OAAO4Q,YACpBhE,YAAa5M,OAAO4M,aAEtBtB,gBAAiB,CACfC,aAActH,SAASqH,gBAAgBC,aACvCG,YAAazH,SAASqH,gBAAgBI,YACtCmF,gBAAiB5R,KAAKiM,iBAExB4F,WAAY7R,KAAKkM,cACjBiC,cAAenO,KAAKmO,cACpB2D,mBAAoB9R,KAAK8R,mBACzBpK,SAAU1H,KAAK0H,SACfsG,kBAAmBhO,KAAKgO,kBACxB+D,SAAU,CACT1B,iBAAkBrQ,KAAKqQ,iBACvBzB,gBAAiB5O,KAAK4O,gBACtBC,UAAW7O,KAAK6O,UAChBY,2BAA4BzP,KAAKyP,2BACjC1B,yBAA0B/N,KAAK+N,8B,yCAmBpC,OAAI/N,KAAKiM,gBACAjM,KAAK0H,SAAStF,OAASpC,KAAK6N,cAAcpG,YAAc1G,OAAOyL,YAClExM,KAAKkM,cAAcK,cAElBvM,KAAK0H,SAAStF,Q,0CAgBrB,OAAIpC,KAAKiM,gBACAjM,KAAK0H,SAASrF,QAAUrC,KAAK6N,cAAcrI,aAAezE,OAAOqL,aACpEpM,KAAKkM,cAAcC,iBAElBnM,KAAK0H,SAASrF,S,sCAImB,SAApCrC,KAAKyP,4BACPzP,KAAKyL,QAAQ/E,MAAMpE,KAAOtC,KAAKgO,kBAAkB1L,KAAO,KACxDtC,KAAKyL,QAAQ/E,MAAMtE,MAAQ,UAE3BpC,KAAKyL,QAAQ/E,MAAMtE,MAAQpC,KAAKgO,kBAAkB5L,MAAQ,KAC1DpC,KAAKyL,QAAQ/E,MAAMpE,KAAO,SAGU,QAAlCtC,KAAK+N,0BACP/N,KAAKyL,QAAQ/E,MAAMvE,IAAMnC,KAAKgO,kBAAkB7L,IAAM,KACtDnC,KAAKyL,QAAQ/E,MAAMrE,OAAS,UAE5BrC,KAAKyL,QAAQ/E,MAAMrE,OAASrC,KAAKgO,kBAAkB3L,OAAS,KAC5DrC,KAAKyL,QAAQ/E,MAAMvE,IAAM,SAG3BnC,KAAKgS,mB,uCAIL,IAEQC,EACArG,EAGJsG,EAIEC,EAVFnS,KAAK4O,kBAAoB5O,KAAK6O,YAC5BqD,OAAA,EACED,EAAgBjS,KAAKqP,iBAArB,cACAzD,EAAQ5L,KAAKyL,QAAQC,UAAUC,QAAQsG,GACvCzG,EAAMxL,KAAKyL,QAAQC,UAAUC,QAAQ,IAAKC,EAAQqG,EAAWtT,QAEjEuT,EADW,GAATtG,EACiB5L,KAAKyL,QAAQC,UAAUI,OAAOF,EAAOJ,EAAII,GAEzCL,EAAQ+E,wBAAwB1Q,IAAII,KAAKqQ,kBAAkBgB,MAE5Ec,EAAeF,EAAa1G,EAAQ+E,wBAAwB1Q,IAAII,KAAK6O,WAAWwC,MACpFrR,KAAKyL,QAAQM,UAAUpD,QAAQuJ,EAAkBC,M,8CAcrBzD,GACzBA,IACH1O,KAAK6N,cAAgBnL,EAAAI,cAAcsP,QAAQpS,KAAK0M,WAChD1M,KAAKqS,2BAEPrS,KAAKiR,YAAcvO,EAAAI,cAAcsP,QAAQpS,KAAK+M,SAC9C/M,KAAK8N,YAAcpL,EAAAI,cAAcsP,QAAQpS,KAAKyL,W,4CAgC9C,OApBAzL,KAAKsS,gBAAgBpQ,OAA0C,GAAjClC,KAAKiR,YAAYjK,aAAoBhH,KAAKiR,YAAYjK,aAClFhH,KAAKiR,YAAY3E,aACftM,KAAKmO,eACPnO,KAAKsS,gBAAgBnQ,IAAMnC,KAAKiR,YAAYD,YAAchR,KAAKmO,cAAcnM,EAC7EhC,KAAKsS,gBAAgBpQ,OAAS,GAE9BlC,KAAKsS,gBAAgBnQ,IAAMnC,KAAK6N,cAAcxJ,UAAYrE,KAAKiR,YAAYD,YACvEhR,KAAK6N,cAAcmD,YAAchR,KAAK6N,cAAc0E,UAE1DvS,KAAKsS,gBAAgBtB,YAAchR,KAAKiR,YAAYD,YAEd,QAAlChR,KAAK+N,yBACI/N,KAAKyQ,oBAAoBzQ,KAAKsS,gBAAgBnQ,IAAKnC,KAAKsS,gBAAgBpQ,OAAQlC,KAAK6N,cAC9F7N,KAAKiR,YAAajR,KAAK8N,YAAYxB,aAActM,KAAK8R,qBAGxD9R,KAAKsS,gBAAgBjQ,OAASrC,KAAK6N,cAAcrI,aAAexF,KAAKsS,gBAAgBnQ,IAAMnC,KAAKsS,gBAAgBpQ,OACrGlC,KAAKyQ,oBAAoBzQ,KAAKsS,gBAAgBjQ,OAAQrC,KAAKsS,gBAAgBpQ,OAAQlC,KAAK6N,cACjG7N,KAAKiR,YAAajR,KAAK8N,YAAYxB,aAActM,KAAK8R,uB,8CAmC1D,OArBA9R,KAAKsS,gBAAgBrQ,MAAwC,GAAhCjC,KAAKiR,YAAYtE,YAAmB3M,KAAKiR,YAAYtE,YAAc3M,KAAKiR,YAAYxE,YAG7GzM,KAAKmO,eACPnO,KAAKsS,gBAAgBhQ,KAAOtC,KAAKiR,YAAYC,aAAelR,KAAKmO,cAAcpM,EAC/E/B,KAAKsS,gBAAgBrQ,MAAQ,GAE7BjC,KAAKsS,gBAAgBhQ,KAAOtC,KAAK6N,cAActE,WAAavJ,KAAKiR,YAAYC,aACzElR,KAAK6N,cAAcqD,aAAelR,KAAK6N,cAAc2E,WAE3DxS,KAAKsS,gBAAgBpB,aAAelR,KAAKiR,YAAYC,aAEb,SAApClR,KAAKyP,2BACIzP,KAAK2Q,sBAAsB3Q,KAAKsS,gBAAgBhQ,KAAMtC,KAAKsS,gBAAgBrQ,MAAOjC,KAAK6N,cAChG7N,KAAKiR,YAAajR,KAAK8N,YAAYrB,YAAazM,KAAK8R,qBAGvD9R,KAAKsS,gBAAgBlQ,MAAQpC,KAAK6N,cAAcpG,YAAczH,KAAKsS,gBAAgBhQ,KAAOtC,KAAKsS,gBAAgBrQ,MACpGjC,KAAK2Q,sBAAsB3Q,KAAKsS,gBAAgBlQ,MAAOpC,KAAKsS,gBAAgBrQ,MAAOjC,KAAK6N,cACjG7N,KAAKiR,YAAajR,KAAK8N,YAAYrB,YAAazM,KAAK8R,uB,oDAYrD9R,KAAK+P,mBAAqBzE,EAAwB0E,OAIlDhQ,KAAKgP,sBAAsByD,IAAI,aACjCzS,KAAK0S,sCAGH1S,KAAKgP,sBAAsByD,IAAI,eACjCzS,KAAK2S,2C,4CAKL,IAAM5R,EAAS2B,EAAAI,cAAc8P,YACvBC,EAASnQ,EAAAI,cAAcgQ,YAC7B9S,KAAK+S,iBAAmB,CACtB5Q,IAAM0Q,EAAO7Q,EACbM,KAAMuQ,EAAO9Q,EACbK,MAAOrB,EAAOyL,WAAaqG,EAAO9Q,EAClCM,OAAQtB,EAAOqL,YAAcyG,EAAO7Q,K,iDAaxC,OAAIhC,KAAK+P,mBAAqBzE,EAAwB0H,UAC/ChT,KAAKiM,iBACRjM,KAAKiT,sBAEA,CACH3Q,KAAM,EACNF,MAAOpC,KAAK6N,cAAcpG,YAC1BtF,IAAK,EACLE,OAAQrC,KAAK6N,cAAcrI,gBAGjCxF,KAAKiT,sBAEDjT,KAAKiM,gBACAjM,KAAK+S,kBAKNG,IAFAC,EAAsE,IAA9CnT,KAAK0M,UAAU5C,cAAcwC,cACT,IAA7CtM,KAAK0M,UAAU5C,cAAc2C,cAE7BzM,KAAK0M,UAAU5C,cAAcwC,aAAetM,KAAK6N,cAAcvB,aAC9D8G,GAAiCD,GAClCnT,KAAK0M,UAAU5C,cAAc2C,YAAczM,KAAK6N,cAAcpB,YAK/DlD,EADAlF,EADAoI,EADAH,OAAA,EAqBG,CACLnK,IAAMkC,EAjBJ6O,GACF5G,EAAetM,KAAK0M,UAAU5C,cAAcwC,aAChCtM,KAAK0M,UAAU5C,cAAczF,YAEzCiI,EAAetM,KAAK6N,cAAcvB,aACtBtM,KAAK6N,cAAcxJ,WAa/BhC,OAAQgC,EAAYiI,EACpBhK,KAAMiH,EAXJ6J,GACF3G,EAAczM,KAAK0M,UAAU5C,cAAc2C,YAC9BzM,KAAK0M,UAAU5C,cAAcP,aAE1CkD,EAAczM,KAAK6N,cAAcpB,YACpBzM,KAAK6N,cAActE,YAOhCnH,MAAOmH,EAAakD,KApCxB,IAMQyG,EAEAE,EAGF9G,EACAG,EAMFpI,EAQAkF,I,8CAkB0B8J,GAC9B,IAAIC,OAAA,EACAnR,OAAA,EAGFA,EAFgB,cAAdkR,GACFC,EAAWtT,KAAK2P,sBACV3P,KAAKsS,gBAAgBnQ,MAE3BmR,EAAWtT,KAAK+S,iBACV/S,KAAKsS,gBAAgBtB,aAG7B,MAAsC,QAAlChR,KAAK+N,yBACAuF,EAASjR,QAAUF,EAAMnC,KAAKsS,gBAAgBpQ,QAE9CC,EAAMmR,EAASnR,M,6CAOKkR,GAC7B,IAAIC,OAAA,EACAhR,OAAA,EAGFA,EAFgB,cAAd+Q,GACFC,EAAWtT,KAAK2P,sBACT3P,KAAKsS,gBAAgBhQ,OAE5BgR,EAAWtT,KAAK+S,iBACT/S,KAAKsS,gBAAgBpB,cAG9B,MAAwC,SAApClR,KAAKyP,2BACA6D,EAASlR,OAASE,EAAOtC,KAAKsS,gBAAgBrQ,OAE9CK,EAAOgR,EAAShR,O,8DAUzB,IACQiR,EACAC,EACAC,EACAC,EACAC,EAGJC,EAOIC,EAGJC,EAlBC9T,KAAK+T,qBAAqB,aAAc/T,KAAK0H,SAASpF,KAAMtC,KAAK0H,SAAStF,SACvEmR,EAAa7S,OAAA6O,OAAA,GAAyBvP,KAAK0H,UAC3C8L,EAAwBxT,KAAKyP,2BAC7BgE,EAAiBzT,KAAK6O,UACtB6E,EAA6B1T,KAAK2Q,sBAClCgD,EAA+B3T,KAAKgU,uBAAuB,aAC7DJ,OAAA,EAEFA,EADE5T,KAAKiU,oBAC8BjU,KAAKgU,uBAAuB,QAE5BL,EAGvC3T,KAAKkU,0BAECL,EAA8B7T,KAAKgU,uBAAuB,aAC5DF,OAAA,EAQAF,GAAqCE,EAPrC9T,KAAKiU,oBAC6BjU,KAAKgU,uBAAuB,QAE5BH,IAKK,EAApCC,GAC0E,GAA1EA,EAAoCF,GAEvCD,EAA+BE,GAA6D,EAA9BA,IAChE7T,KAAK0H,SAAW6L,EAChBvT,KAAKyP,2BAA6B+D,EAClCxT,KAAK6O,UAAY4E,EACjBzT,KAAK2Q,sBAAwB+C,M,4DAWjC,IACQH,EACAC,EACAC,EACAU,EACAC,EAGJC,EAOIC,EAGJC,EAlBCvU,KAAK+T,qBAAqB,WAAY/T,KAAK0H,SAASvF,IAAKnC,KAAK0H,SAASrF,UACpEkR,EAAa7S,OAAA6O,OAAA,GAAyBvP,KAAK0H,UAC3C8L,EAAwBxT,KAAK+N,yBAC7B0F,EAAiBzT,KAAK6O,UACtBsF,EAA2BnU,KAAKyQ,oBAChC2D,EAAgCpU,KAAKwU,wBAAwB,aAC/DH,OAAA,EAEFA,EADErU,KAAKiU,oBAC+BjU,KAAKwU,wBAAwB,QAE7BJ,EAGxCpU,KAAKyU,wBAECH,EAA+BtU,KAAKwU,wBAAwB,aAC9DD,OAAA,EAQAF,GAAsCE,EAPtCvU,KAAKiU,oBAC8BjU,KAAKwU,wBAAwB,QAE7BF,IAKK,EAArCC,GAC4E,GAA5EA,EAAqCF,GAExCD,EAAgCE,GAA+D,EAA/BA,IAClEtU,KAAK0H,SAAW6L,EAChBvT,KAAK+N,yBAA2ByF,EAChCxT,KAAK6O,UAAY4E,EACjBzT,KAAKyQ,oBAAsB0D,M,2CAKJO,EAAiC9I,EAAeJ,GAC3E,GAAa,eAATkJ,EAEF,OADMC,EAAqB/I,EAAQ5L,KAAK8N,YAAYrB,YAC7CzM,KAAK2P,sBAAsBrN,MAAQsJ,GACnCA,GAAS5L,KAAK2P,sBAAsBvN,OACpCpC,KAAK2P,sBAAsBrN,MAAQqS,GACnCA,GAAsB3U,KAAK2P,sBAAsBvN,MAEpDwS,EAAoBhJ,EAAQ5L,KAAK8N,YAAYxB,aACnD,OAAOtM,KAAK2P,sBAAsBxN,KAAOyJ,GAClCA,GAAS5L,KAAK2P,sBAAsBtN,QACpCrC,KAAK2P,sBAAsBxN,KAAOyS,GAClCA,GAAqB5U,KAAK2P,sBAAsBtN,S,8CAQvDrC,KAAK6O,UAAYtD,EAAQsJ,4BAA4BjV,IAAII,KAAK6O,UAA7CtD,CAAwDvL,KAAK+N,0BAC9E/N,KAAK+N,yBAA2BxC,EAAQ+E,wBAAwB1Q,IAAII,KAAK6O,WAAW2B,SACpFxQ,KAAKyQ,oBAAsBlF,EAAQmF,uBAAuB1Q,KAAK6O,UAAW7O,KAAK+N,0BAC/E,IAAMoC,EAAmBnQ,KAAKoQ,sBAC9BpQ,KAAK0H,SAASvF,IAAMgO,EAAiBhO,IACrCnC,KAAK0H,SAASrF,OAAS8N,EAAiB9N,S,gDAQxCrC,KAAK6O,UAAYtD,EAAQuJ,8BAA8BlV,IAAII,KAAK6O,UAA/CtD,CAA0DvL,KAAKyP,4BAChFzP,KAAKyP,2BAA6BlE,EAAQ+E,wBAAwB1Q,IAAII,KAAK6O,WAAW0B,WACtFvQ,KAAK2Q,sBAAwBpF,EAAQqF,yBAAyB5Q,KAAK6O,UAAW7O,KAAKyP,4BACnF,IAAMQ,EAAqBjQ,KAAKkQ,wBAChClQ,KAAK0H,SAASpF,KAAO2N,EAAmB3N,KACxCtC,KAAK0H,SAAStF,MAAQ6N,EAAmB7N,S,0CAp3BjB1C,EAAsBqV,GAC9C,GAAIA,EAEF,IAAI,IAAI/W,EAAI,EAAGA,EAAI0B,EAAQsV,WAAWrW,OAAQX,IAAK,CACjD,IAAMiX,EAAevV,EAAQsV,WAAWhX,GACxC,GAAIiX,EAAapL,UACf,OAAOoL,EAGb,OAAOvV,I,6CAGqBmP,EAAsBnH,GAClD,GAAiB,QAAbA,EACF,OAAQmH,GACN,KAAKxD,EAAU6J,QACf,KAAK7J,EAAU8J,SACb,OAAO,SAASC,EAAoBC,EAAuB3I,EAA6BK,EAA2BuI,EAAuBC,GACxI,MAAO,CACLpT,IAAKiT,EACL/S,OAAQkJ,EAAQqC,qBAAqBwH,EAAY1I,EAAUlH,aAAc8P,KAG/E,KAAKjK,EAAUmK,WACf,KAAKnK,EAAUoK,aACf,KAAKpK,EAAUqK,OACf,KAAKrK,EAAUsK,YACb,OAAO,SAASP,EAAoBC,EAAuB3I,EAA6BK,EAA2BuI,EAAuBC,GAClI7N,EAA6B,CACjCvF,IAAKiT,EAAaC,EAAgBE,EAAYK,gBAGhD,OADAlO,EAASrF,OAASkJ,EAAQqC,qBAAqBlG,EAASvF,IAAKuK,EAAUlH,aAAc8P,GAC9E5N,GAEX,KAAK2D,EAAUwK,KACf,KAAKxK,EAAUyK,MACb,OAAO,SAASV,EAAoBC,EAAuB3I,EAA6BK,EAA2BuI,EAAuBC,GAClI7N,EAA6B,CACjCvF,IAAKiT,EAAcC,EAAgB,EAAMC,EAAgB,GAG3D,OADA5N,EAASrF,OAASkJ,EAAQqC,qBAAqBlG,EAASvF,IAAKuK,EAAUlH,aAAc8P,GAC9E5N,GAIf,GAAiB,WAAbA,EACF,OAAQmH,GACN,KAAKxD,EAAU0K,QACf,KAAK1K,EAAU2K,UACf,KAAK3K,EAAU4K,IACf,KAAK5K,EAAU6K,SACb,OAAO,SAASC,EAAuBd,EAAuB3I,EAA6BK,EAA2BuI,EAAuBC,GACrI7N,EAA6B,CACjCrF,OAAQ8T,EAAgBd,EAAgBE,EAAYK,gBAGtD,OADAlO,EAASvF,IAAMoJ,EAAQqC,qBAAqBlG,EAASrF,OAAQqK,EAAUlH,aAAc8P,GAC9E5N,GAEX,KAAK2D,EAAU+K,WACf,KAAK/K,EAAUgL,YACb,OAAO,SAASF,EAAuBd,EAAuB3I,EAA6BK,EAA2BuI,EAAuBC,GAK3I,MAJmC,CACjClT,OAAQ8T,EACRhU,IAAKoJ,EAAQqC,qBAAqBuI,EAAezJ,EAAUlH,aAAc8P,KAQnF,OADApR,QAAQF,IAAI,6EAA8E6K,EAAWnH,GAC9F6D,EAAQmF,uBAAuBrF,EAAUmK,WAAY,S,+CAG9B3G,EAAsBnH,GACpD,GAAiB,SAAbA,EACF,OAAQmH,GACN,KAAKxD,EAAU0K,QACf,KAAK1K,EAAUmK,WACb,OAAO,SAASc,EAAqBC,EAAsB7J,EAA6BK,EAA2ByJ,EAAsBjB,GACvI,MAAO,CACLjT,KAAMgU,EACNlU,MAAOmJ,EAAQqC,qBAAqB0I,EAAa5J,EAAUjF,YAAa+O,KAG9E,KAAKnL,EAAUyK,MACf,KAAKzK,EAAU8J,SACf,KAAK9J,EAAUgL,YACb,OAAO,SAASC,EAAqBC,EAAsB7J,EAA6BK,EAA2ByJ,EAAsBjB,GACjI7N,EAA+B,CACnCpF,KAAMgU,EAAcC,EAAehB,EAAYkB,kBAGjD,OADA/O,EAAStF,MAAQmJ,EAAQqC,qBAAqBlG,EAASpF,KAAMoK,EAAUjF,YAAa+O,GAC7E9O,GAEX,KAAK2D,EAAU2K,UACf,KAAK3K,EAAU4K,IACf,KAAK5K,EAAUoK,aACf,KAAKpK,EAAUqK,OACb,OAAO,SAASY,EAAqBC,EAAsB7J,EAA6BK,EAA2ByJ,EAAsBjB,GACjI7N,EAA+B,CACnCpF,KAAMgU,EAAeC,EAAe,EAAMC,EAAe,GAG3D,OADA9O,EAAStF,MAAQmJ,EAAQqC,qBAAqBlG,EAASpF,KAAMoK,EAAUjF,YAAa+O,GAC7E9O,GAIf,GAAiB,UAAbA,EACF,OAAQmH,GACN,KAAKxD,EAAU6K,SACf,KAAK7K,EAAUsK,YACb,OAAO,SAASe,EAAsBH,EAAsB7J,EAA6BK,EAA2ByJ,EAAsBjB,GAKxI,MAJmC,CACjCnT,MAAOsU,EACPpU,KAAMiJ,EAAQqC,qBAAqB8I,EAAchK,EAAUjF,YAAa+O,KAI9E,KAAKnL,EAAUwK,KACf,KAAKxK,EAAU6J,QACf,KAAK7J,EAAU+K,WACb,OAAO,SAASM,EAAsBH,EAAsB7J,EAA6BK,EAA2ByJ,EAAsBjB,GAClI7N,EAA+B,CACnCtF,MAAOsU,EAAeH,EAAehB,EAAYkB,kBAGnD,OADA/O,EAASpF,KAAOiJ,EAAQqC,qBAAqBlG,EAAStF,MAAOsK,EAAUjF,YAAa+O,GAC7E9O,GAMf,OADAxD,QAAQF,IAAI,+EAAgF6K,EAAWnH,GAChG6D,EAAQmF,uBAAuBrF,EAAUmK,WAAY,S,2CAWlC9N,EAAkBiP,EAA4BC,GACxE,OAAOD,EAAqBjP,EAAWkP,M,GA9LzC,SAAArL,EAAYqB,EACVnB,EAAyBiB,EAAwBK,EAAsB8B,EACvEgI,EAAkD9B,EAAgC1F,EAClFyC,G,KAAsC9R,gBAAAuL,G,yDApBhCvL,KAAAoO,YAAa,EAKbpO,KAAAsS,gBAAkH,GAGlHtS,KAAAiU,qBAAsB,EA+RtBjU,KAAAqO,kBAAoB,GAlR1BrO,KAAK4M,SAAWA,EAChB5M,KAAKyL,QAAUA,EAIfzL,KAAK6N,cAAgBnL,EAAAI,cAAcsP,QAAQ1F,GAC3C1M,KAAK0M,UAAYA,EACjB1M,KAAKiM,gBAAkBS,IAAc1H,SAASI,KAC9CpF,KAAKqS,0BACArS,KAAKiM,kBACRjM,KAAKiU,oBAA6E,EAAvDvR,EAAAI,cAAcgU,uBAAuB9W,KAAK0M,YAGvE1M,KAAKyL,QAAQ/E,MAAM4H,QAAUtO,KAAKyL,QAAQ/E,MAAM4H,QAAQ3F,QAAQ,iBAAkB,IAClF3I,KAAKyL,QAAQ/E,MAAMvE,IAAM,MACzBnC,KAAK+W,oBAKL/W,KAAK+M,QAAUxB,EAAQyL,mBAAmBjK,EAASgI,GACnD/U,KAAKqP,iBAAmBA,EACpByC,EAAmBmF,mBACrBjX,KAAK6O,UAAYtD,EAAQ2L,0BAA0BtX,IAAIiP,GAEvD7O,KAAK6O,UAAYA,EAEnB7O,KAAKqQ,iBAAmBrQ,KAAK6O,UAC7B7O,KAAK+P,iBAAmB8G,EACxB7W,KAAK8R,mBAAqBA,EAE1B9R,KAAK0H,SAAW,CAAEuC,OAAQ,GAC1BjK,KAAKyP,2BAA6BlE,EAAQ+E,wBAAwB1Q,IAAII,KAAK6O,WAAW0B,WACtFvQ,KAAK+N,yBAA2BxC,EAAQ+E,wBAAwB1Q,IAAII,KAAK6O,WAAW2B,SAEpFxQ,KAAKyQ,oBAAsBlF,EAAQmF,uBAAuB1Q,KAAK6O,UAAW7O,KAAK+N,0BAC/E/N,KAAK2Q,sBAAwBpF,EAAQqF,yBAAyB5Q,KAAK6O,UAAW7O,KAAKyP,4BACnFzP,KAAKyN,eAAiB/K,EAAAI,cAAcqU,gBAAgBnX,KAAK+M,SACzD/M,KAAKD,WAxKTtB,EAAA8M,QAAAA,GACmB+E,wBAEf,IAAI/P,IAAI,CACN,CAAC8K,EAAU0K,QAAe,CAAExF,WAAY,OAAQC,SAAU,SAAUa,MAAO,YAC3E,CAAChG,EAAU2K,UAAe,CAAEzF,WAAY,OAAQC,SAAU,SAAUa,MAAO,cAC3E,CAAChG,EAAU4K,IAAe,CAAE1F,WAAY,OAAQC,SAAU,SAAUa,MAAO,QAC3E,CAAChG,EAAU6K,SAAe,CAAE3F,WAAY,QAASC,SAAU,SAAUa,MAAO,aAC5E,CAAChG,EAAUwK,KAAe,CAAEtF,WAAY,QAASC,SAAU,MAAOa,MAAO,SACzE,CAAChG,EAAU6J,QAAe,CAAE3E,WAAY,QAASC,SAAU,MAAOa,MAAO,YACzE,CAAChG,EAAU+K,WAAe,CAAE7F,WAAY,QAASC,SAAU,SAAUa,MAAO,eAC5E,CAAChG,EAAUyK,MAAe,CAAEvF,WAAY,OAAQC,SAAU,MAAOa,MAAO,UACxE,CAAChG,EAAU8J,SAAe,CAAE5E,WAAY,OAAQC,SAAU,MAAOa,MAAO,aACxE,CAAChG,EAAUgL,YAAe,CAAE9F,WAAY,OAAQC,SAAU,SAAUa,MAAO,gBAC3E,CAAChG,EAAUmK,WAAe,CAAEjF,WAAY,OAAQC,SAAU,MAAOa,MAAO,eACxE,CAAChG,EAAUoK,aAAe,CAAElF,WAAY,OAAQC,SAAU,MAAOa,MAAO,iBACxE,CAAChG,EAAUqK,OAAe,CAAEnF,WAAY,OAAQC,SAAU,MAAOa,MAAO,WACxE,CAAChG,EAAUsK,YAAe,CAAEpF,WAAY,QAASC,SAAU,MAAOa,MAAO,kBAG9D9F,EAAAsJ,4BACb,IAAItU,IAAI,CACN,CAAC8K,EAAU0K,QAAe,SAACrO,GAAD,OAAsB2D,EAAUmK,aAC1D,CAACnK,EAAU2K,UAAe,SAACtO,GAAD,OAAsB2D,EAAUoK,eAC1D,CAACpK,EAAU4K,IAAe,SAACvO,GAAD,OAAsB2D,EAAUqK,SAC1D,CAACrK,EAAU6K,SAAe,SAACxO,GAAD,OAAsB2D,EAAUsK,cAC1D,CAACtK,EAAUwK,KAAe,SAACnO,GAAD,MAAmC,QAAbA,EAAqB2D,EAAU+K,WAAa/K,EAAU6J,UACtG,CAAC7J,EAAU6J,QAAe,SAACxN,GAAD,OAAsB2D,EAAU+K,aAC1D,CAAC/K,EAAU+K,WAAe,SAAC1O,GAAD,OAAsB2D,EAAU6J,UAC1D,CAAC7J,EAAUyK,MAAe,SAACpO,GAAD,MAAmC,QAAbA,EAAqB2D,EAAUgL,YAAchL,EAAU8J,WACvG,CAAC9J,EAAU8J,SAAe,SAACzN,GAAD,OAAsB2D,EAAUgL,cAC1D,CAAChL,EAAUgL,YAAe,SAAC3O,GAAD,OAAsB2D,EAAU8J,WAC1D,CAAC9J,EAAUmK,WAAe,SAAC9N,GAAD,OAAsB2D,EAAU0K,UAC1D,CAAC1K,EAAUoK,aAAe,SAAC/N,GAAD,OAAsB2D,EAAU2K,YAC1D,CAAC3K,EAAUqK,OAAe,SAAChO,GAAD,OAAsB2D,EAAU4K,MAC1D,CAAC5K,EAAUsK,YAAe,SAACjO,GAAD,OAAsB2D,EAAU6K,aAG/C3K,EAAAuJ,8BACb,IAAIvU,IAAI,CACN,CAAC8K,EAAU0K,QAAe,SAACrO,GAAD,OAAsB2D,EAAU6K,WAC1D,CAAC7K,EAAU2K,UAAe,SAACtO,GAAD,MAAmC,SAAbA,EAAsB2D,EAAU6K,SAAW7K,EAAU0K,UACrG,CAAC1K,EAAU4K,IAAS,SAACvO,GAAD,MAAmC,SAAbA,EAAsB2D,EAAU6K,SAAW7K,EAAU0K,UAC/F,CAAC1K,EAAU6K,SAAe,SAACxO,GAAD,OAAsB2D,EAAU0K,UAC1D,CAAC1K,EAAUwK,KAAe,SAACnO,GAAD,OAAsB2D,EAAUyK,QAC1D,CAACzK,EAAU6J,QAAe,SAACxN,GAAD,OAAsB2D,EAAU8J,WAC1D,CAAC9J,EAAU+K,WAAe,SAAC1O,GAAD,OAAsB2D,EAAUgL,cAC1D,CAAChL,EAAUyK,MAAe,SAACpO,GAAD,OAAsB2D,EAAUwK,OAC1D,CAACxK,EAAU8J,SAAe,SAACzN,GAAD,OAAsB2D,EAAU+K,aAC1D,CAAC/K,EAAUgL,YAAe,SAAC3O,GAAD,OAAsB2D,EAAU6J,UAC1D,CAAC7J,EAAUmK,WAAe,SAAC9N,GAAD,OAAsB2D,EAAUsK,cAC1D,CAACtK,EAAUoK,aAAe,SAAC/N,GAAD,MAAmC,SAAbA,EAAsB2D,EAAUsK,YAActK,EAAUmK,aACxG,CAACnK,EAAUqK,OAAe,SAAChO,GAAD,MAAmC,SAAbA,EAAsB2D,EAAUsK,YAActK,EAAUmK,aACxG,CAACnK,EAAUsK,YAAe,SAACjO,GAAD,OAAsB2D,EAAUmK,eAG/CjK,EAAA2L,0BACb,IAAI3W,IAAI,CACN,CAAC8K,EAAU0K,QAAe1K,EAAU4K,KACpC,CAAC5K,EAAU2K,UAAe3K,EAAU2K,WACpC,CAAC3K,EAAU4K,IAAe5K,EAAU4K,KACpC,CAAC5K,EAAU6K,SAAe7K,EAAU4K,KACpC,CAAC5K,EAAUwK,KAAexK,EAAUwK,MACpC,CAACxK,EAAU6J,QAAe7J,EAAUwK,MACpC,CAACxK,EAAU+K,WAAe/K,EAAUwK,MACpC,CAACxK,EAAUyK,MAAezK,EAAUyK,OACpC,CAACzK,EAAU8J,SAAe9J,EAAUyK,OACpC,CAACzK,EAAUgL,YAAehL,EAAUyK,OACpC,CAACzK,EAAUmK,WAAenK,EAAUqK,QACpC,CAACrK,EAAUoK,aAAepK,EAAUoK,cACpC,CAACpK,EAAUqK,OAAerK,EAAUqK,QACpC,CAACrK,EAAUsK,YAAetK,EAAUqK,W,mbCpIzC,IAAAhT,EAAAvE,EAAA,kBACDiZ,EAAAjZ,EAAA,aACAsE,EAAAtE,EAAA,oBAEauF,G,sDAGkBkJ,EAC3ByK,EAAiBC,EAAiBzI,EAAuB0I,EACzDV,EAAkD9B,EAAgC1F,EAClFuG,EAAwBa,EAA0BQ,EAClDO,EAAqBC,GAErB,IAAMC,EAAiBhV,EAAAI,cAAclD,IAAIyX,GACnCM,EAAmBjV,EAAAI,cAAclD,IAAI2X,GACrCK,EAAiBlV,EAAAI,cAAclD,IAAI0X,GAEzC,IAAK5U,EAAAM,sBAAsB6U,aAAaR,EAAiBM,GAMvD,OALAzT,QAAQF,IAAI,kCAAmC,CAC5CqL,iBAAkBA,EAClBgI,gBAAiBA,EACjBM,iBAAkBA,IAEd,KAGLG,OAAA,GACAN,GAAcC,KAChBK,EAAiB,CAAE/V,EAAG0V,EAAazV,EAAGwV,IASlC/L,EAAU,IAAI2L,EAAA7L,QAAQqB,EAAU8K,EAAgBC,EAAkBC,EAAgB/I,EAAWgI,EAAyB9B,EAAuB1F,EANpG,CAC7CuG,eAAgBA,EAChBa,iBAAkBA,EAClBQ,mBAAoBA,IAOtB,OAFAjX,KAAK+X,gBAAgBnL,GAAYnB,GAElByC,mBAAkB,GAAO,EAAM4J,K,4CAInBlL,EAAkByK,EAAiBC,EAAiBzI,EAAuB0I,EACtGV,EAAkD9B,EAAgC1F,EAClFuG,EAAwBa,EAA0BQ,EAClDO,EAAqBC,GACrB,IAAMhM,EAAUzL,KAAK+X,gBAAgBnL,GACrC,OAAInB,EAKKA,EAAQyC,mBAAkB,GAAO,EAHlCsJ,GAAcC,EACC,CAAE1V,EAAG0V,EAAazV,EAAGwV,QAFtC,GASG9T,EAAcsU,sBAAsBpL,EAAUyK,EAAiBC,EAAiBzI,EAAY0I,EAAkBV,EAAyB9B,EAAuB1F,EACrKuG,EAAgBa,EAAkBQ,EAClCO,EAAYC,K,iDAIkB7K,GAChC,IAAMnB,EAAUzL,KAAK+X,gBAAgBnL,GACjCnB,IACFA,EAAQ8C,iBACDvO,KAAK+X,gBAAgBnL,M,sDAIOlN,EAASgY,GAC9C,IACQvT,EADJzE,GAAWgY,KACPvT,EAAmBzB,EAAAI,cAAclD,IAAIF,MAEzC+C,EAAAE,MAAM0D,sBAAsB3G,EAAQ0G,GAAK,iBAAmB,SAACxI,GAAD,OAAO8E,EAAAO,YAAYgV,sBAAsBra,EAAG,QAAS,WAAA,OAAsC,OAAhC8Z,EAAe/I,gBACtIxK,EAAIoC,iBAAiB,UAAW9D,EAAAE,MAAM0D,sBAAsB3G,EAAQ0G,GAAK,kBAAkB,O,yDAKvD1G,GACxC,IACQyE,EADJzE,IACIyE,EAAmBzB,EAAAI,cAAclD,IAAIF,MAEzCyE,EAAI0C,oBAAoB,UAAWpE,EAAAE,MAAM0D,sBAAsB3G,EAAQ0G,GAAK,kBAC5E3D,EAAAE,MAAM0D,sBAAsB3G,EAAQ0G,GAAK,iBAAmB,U,kGArFpE3H,EAAAiF,cAAAA,GACSqU,gBAA6C,I,qhBCJ7BG,EAASC,EAAUC,EAAWC,EAASC,GAC5DJ,EAAQK,WAAa,WACfF,GACF1U,EAAY6U,2BAA2BN,EAASC,GAE9CG,IACFF,EAAU7O,WAAa2O,EAAQ3O,aAGnC2O,EAAQK,aACRL,EAAQ3R,iBAAiB,SAAU2R,EAAQK,YAC3CxX,OAAOwF,iBAAiB,SAAU2R,EAAQK,c,wCAGnBL,GACnBA,IACFA,EAAQrR,oBAAoB,SAAUqR,EAAQK,YAC9CxX,OAAO8F,oBAAoB,SAAUqR,EAAQK,e,iDAIfL,EAASC,GAEzC,IAAI5O,EAAa2O,EAAQ3O,WACrB9B,EAAcyQ,EAAQzQ,YACtBgF,EAAcyL,EAAQzL,YAEtBgM,GAAW,EACXC,GAAY,EAEXjR,GAAegF,GAA8B,GAAfhF,EAEjCiR,EADAD,GAAW,EAGU,GAAdlP,EAEPmP,IADAD,GAAW,GAGJrR,KAAKuR,IAAIlR,GAAe8B,EAAakD,KAAiB,EAE7DgM,IADAC,GAAY,GAKZA,EADAD,GAAW,EAIbA,EAAWN,EAASpM,UAAUuD,IAAI,uBAAyB6I,EAASpM,UAAUC,OAAO,uBACrF0M,EAAYP,EAASpM,UAAUuD,IAAI,wBAA0B6I,EAASpM,UAAUC,OAAO,4BAjD1FvN,EAAAkF,Y,6YCQkCiV,GAC3BA,EAAIrS,kBACNqS,EAAIrS,iBAAiB,QAAS3C,EAAaiV,kB,mDAIXD,GAClCA,EAAI/R,oBAAoB,QAASjD,EAAaiV,kB,qCAGlBjb,GAC5BA,EAAEkb,kBACIC,EAAUnb,EAAEob,cAAkC/L,WAAW,eAAegM,UAC9DjU,SAASkU,eAAeH,GAChCI,U,gCAGOzZ,GACfA,EAAQyF,aAAa,OAAQ,SAC7BzF,EAAQiI,MAAQ,GAChBjI,EAAQyF,aAAa,OAAQ,U,kCAGZzF,GACjB,GAAIA,EAAQ0Z,OAAgC,EAAvB1Z,EAAQ0Z,MAAMza,OAAY,CAE7C,IADA,IAAI0a,EAAW/X,QACNtD,EAAI,EAAGA,EAAI0B,EAAQ0Z,MAAMza,OAAQX,IAAK,CAC7C,IAAIsb,EAAO5Z,EAAQ0Z,MAAMpb,GACnBub,EAAYvZ,KAAKwZ,aAAaF,GACpCD,EAAS7W,KAAK,CACZiX,SAAUH,EAAKI,KACfxK,KAAMoK,EAAKpK,KACXyK,UAAWJ,EACX7E,KAAM4E,EAAK5E,OAIf,OAAO2E,K,mCAIiBC,GAC1B,IAAIM,EAAM,KAMV,OALkBxa,MAAd2B,OAAO8Y,IACTD,EAAM7Y,OAAO8Y,IAAIC,gBAAgBR,GACJla,MAApB2B,OAAOgZ,YAChBH,EAAM7Y,OAAOgZ,UAAUD,gBAAgBR,IAElCM,I,iCAGSla,EAASsa,EAAOC,EAAMC,EAASnB,EAAQa,EAAKF,EAAMS,EAAUC,EAAeC,EAAeC,EAAaC,GACvH,IAAIC,EAAW,IAAIC,SACfnB,EAAO5Z,EAAQ0Z,MAAMY,GACrB9K,EAAOoK,EAAKpK,KAEhB,GADAsL,EAASzQ,OAAO2P,EAAMJ,GACV,MAARW,EACF,IAAK,IAAIjb,KAAOib,EACdO,EAASzQ,OAAO/K,EAAKib,EAAKjb,IAG9B,IAAM0b,EAAM,IAAIC,eAmBhB,GAlBAD,EAAIE,mBAAqB,WACA,IAAnBF,EAAIG,aAEFH,EAAII,OAAS,KAAoB,IAAbJ,EAAII,OAC1BX,EAAS7Z,kBAAkBga,EAAavB,EAAxC,cAA8D2B,EAAII,OAAlE,KAGFX,EAAS7Z,kBAAkB+Z,EAAetB,EAAQ2B,EAAIK,gBAG1DL,EAAIM,OAAOC,WAAa,SAAUC,GAC5BC,EAAU/T,KAAKgU,MAAMF,EAAMG,OAASnM,EAAO,KAC/CiL,EAAS7Z,kBAAkB8Z,EAAerB,EAAQoC,IAEpDT,EAAIY,QAAU,SAAU1d,GACtBuc,EAAS7Z,kBAAkBga,EAAavB,EAAQ,UAElD2B,EAAIa,KAAKhB,EAAQX,GAAK,GACP,MAAXM,EACF,IAAK,IAAIsB,KAAUtB,EACjBQ,EAAIe,iBAAiBD,EAAQtB,EAAQsB,IAGzCd,EAAIgB,KAAKlB,OAtFA5W,E,gGAAbnF,EAAAmF,aAAAA,G,2XCNiB,SAAX+X,EAAYC,GAAuB,IAAnBC,EAAmB,EAAA1c,UAAAR,aAAAS,IAAAD,UAAA,GAAAA,UAAA,GAAP,IAC1B2c,OAAA,EACAlQ,GAAS,IAAImQ,KACjB,OAAO,WAAiB,IAAA,IAAA/R,EAAAhK,KAAAgc,EAAA7c,UAAAR,OAAJsd,EAAI3a,MAAA0a,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAA/c,UAAA+c,GACpB,IAAoBC,GAAW,IAAIJ,KAEnChb,OAAOqb,aAAaN,GACGD,GAAnBM,EAAUvQ,GAEVgQ,EAAGS,MALOrc,KAKQic,GAClBrQ,EAAQuQ,GAIRL,EAAU/a,OAAOgK,WAAW,WAExB6Q,EAAGS,MAAMrS,EAAMiS,IAChBJ,IAjBf,IAsBMS,EAAW,IAAI/b,IAEfgc,EAAiB,CACnBC,YAAY,GAGVC,G,6CAyBE,IAAMpT,EAAOrJ,KAAK0c,WAAWpT,wBAC7B,MAAO,CACHhH,KAAM+G,EAAK/G,KACXH,IAAKkH,EAAKlH,O,iCAmGd,IAAM4K,EAAU/M,KAAK2c,SACfhd,EAAUK,KAAK4c,SAErB7P,EAAQxG,iBAAiB,YAAavG,KAAK6c,aAAa,GACxD9b,OAAOwF,iBAAiB,UAAWvG,KAAK8c,WAAW,GACnD9X,SAASuB,iBAAiB,YAAavG,KAAK+c,aACxCpd,EAAQ6c,YACRzb,OAAOwF,iBAAiB,SAAUvG,KAAKgd,UAAU,K,mCAKrChd,KAAK2c,SAEb9V,oBAAoB,YAAa7G,KAAK6c,aAAa,GAC3D9b,OAAO8F,oBAAoB,UAAW7G,KAAK8c,WAAW,GACtD9X,SAAS6B,oBAAoB,YAAa7G,KAAK+c,aAC3C/c,KAAK4c,SAASJ,YACdzb,OAAO8F,oBAAoB,SAAU7G,KAAKgd,UAAU,K,4CAKpC,OAAhBhd,KAAKid,SACLjd,KAAKkd,UAAW,EAChBld,KAAK0c,WAAWvX,aAAa,QAASnF,KAAKid,a,GA/InD,SAAAR,EAAY1P,EAAsBL,EAAwByQ,GAAuB,IAAAC,EAAApd,K,KAAAA,gBAAAyc,G,yDAPzEzc,KAAA2c,SAAwB,KACxB3c,KAAA0c,WAA0B,KAC1B1c,KAAA4c,SAAgB,KAChB5c,KAAAqd,OAAc,KACdrd,KAAAkd,UAAoB,EACpBld,KAAAid,OAAiB,KAyBzBjd,KAAA6c,YAAc,SAACjf,GACX,IAAM+E,EAAQya,EAAKC,OADHC,GAEhB3a,EAAM4a,UAAW,EACjB5a,EAAM6a,GAAK5f,EAAE6f,QACb9a,EAAM+a,GAAK9f,EAAE+f,QACbP,EAAKV,WAAWhW,MAAMgB,SAAW,WACX0V,EAAKQ,mBAAnBtb,EANQgb,EAMRhb,KAAMH,EANEmb,EAMFnb,IAEVib,EAAKF,WAELva,EAAMkb,QAAU7Y,SAASqH,gBAAgBC,aACnC8Q,EAAKV,WAAW1V,aAAe,EACrCrE,EAAMmb,QAAU9Y,SAASqH,gBAAgBI,YACnC2Q,EAAKV,WAAW/P,YAAc,EACpChK,EAAMkb,QAAUlb,EAAMkb,QAAU,EAAI,EAAIlb,EAAMkb,QAC9Clb,EAAMmb,QAAUnb,EAAMmb,QAAU,EAAI,EAAInb,EAAMmb,QAE9CV,EAAKV,WAAWhW,MAAMpE,KAAOA,EAAO,KACpC8a,EAAKV,WAAWhW,MAAMvE,IAAMA,EAAM,KAE7Bib,EAAKH,SACNG,EAAKH,OAASG,EAAKV,WAAWqB,aAAa,UAG/CX,EAAKF,UAAW,GAGpBva,EAAMqb,UAAY1b,EAClBK,EAAMsb,UAAY9b,GAGtBnC,KAAA8c,UAAY,SAAClf,GACT,IAAM+E,EAAQya,EAAKC,OADLa,GAGdvb,EAAM4a,UAAW,EAEKH,EAAKQ,mBAAnBtb,EALM4b,EAKN5b,KAAMH,EALA+b,EAKA/b,IACdQ,EAAMqb,UAAY1b,EAClBK,EAAMsb,UAAY9b,GAGtBnC,KAAA+c,YAAcpB,EAAS,SAAC/d,GACpB,IAOQugB,EAPFxb,EAAQya,EAAKC,OACf1a,EAAM4a,WACFa,EAAOxgB,EAAE6f,QACTY,EAAOzgB,EAAE+f,QACTW,EAAOF,EAAOzb,EAAM6a,GACpBe,EAAOF,EAAO1b,EAAM+a,GAEpBS,EAAUxb,EAAMqb,UAAYM,EAC5BE,EAAU7b,EAAMsb,UAAYM,EAC5BnB,EAAKR,SAASJ,aACV2B,EAAU,EACVA,EAAU,EAELA,EAAUxb,EAAMmb,UACrBK,EAAUxb,EAAMmb,SAEhBU,EAAU,EACVA,EAAU,EAELA,EAAU7b,EAAMkb,UACrBW,EAAU7b,EAAMkb,UAGxBT,EAAKV,WAAWhW,MAAMgB,SAAW,WACjC0V,EAAKV,WAAWhW,MAAM+X,OAAS,IAC/BrB,EAAKV,WAAWhW,MAAMgY,cAAgB,IACtCtB,EAAKV,WAAWhW,MAAMpE,KAAO6b,EAAU,KACvCf,EAAKV,WAAWhW,MAAMvE,IAAMqc,EAAU,OAE3C,IAAI1R,KAAK9M,MAEZA,KAAAgd,SAAWrB,EAAS,SAAC/d,GACjB,IAAM+E,EAAQya,EAAKC,OAEnB1a,EAAMkb,QAAU7Y,SAASqH,gBAAgBC,aACnC8Q,EAAKV,WAAW1V,aAAe,EACrCrE,EAAMmb,QAAU9Y,SAASqH,gBAAgBI,YACnC2Q,EAAKV,WAAW/P,YAAc,EACpChK,EAAMkb,QAAUlb,EAAMkb,QAAU,EAAI,EAAIlb,EAAMkb,QAC9Clb,EAAMmb,QAAUnb,EAAMmb,QAAU,EAAI,EAAInb,EAAMmb,QAC9Cnb,EAAMsb,UAAYU,SAASvB,EAAKV,WAAWhW,MAAMvE,KACjDQ,EAAMqb,UAAYW,SAASvB,EAAKV,WAAWhW,MAAMpE,MAC7CK,EAAMsb,UAAYtb,EAAMkb,SACJ,EAAhBlb,EAAMkb,UACNT,EAAKV,WAAWhW,MAAMvE,IAAMQ,EAAMkb,QAAU,MAGhDlb,EAAMqb,UAAYrb,EAAMmb,UACxBV,EAAKV,WAAWhW,MAAMpE,KAAOK,EAAMmb,QAAU,OAElD,IAAIhR,KAAK9M,MAlHRA,KAAK2c,SAAW5P,EAChB/M,KAAK0c,WAAahQ,EAClB1M,KAAK4c,SAAWlc,OAAO6O,OAAO,GAAIgN,EAAgB,CAC9CC,WAAYW,IAEhBnd,KAAKqd,OAAS,CACVE,UAAU,EACVC,GAAI,EACJE,GAAI,EACJM,UAAW,EACXC,UAAW,GAgKdxf,EAAAoF,gBAvBT,SAAyBkJ,EAAsBL,GAAsD,IAA9ByQ,IAA8B,EAAAhe,UAAAR,aAAAS,IAAAD,UAAA,KAAAA,UAAA,GAC7Fyf,EAAUtC,EAAS1c,IAAImN,GACtB6R,IACDA,EAAU,IAAInC,EAAQ1P,EAASL,EAAWyQ,GAC1Cb,EAAS7c,IAAIsN,EAAS6R,IAE1BA,EAAQC,YAiBcpgB,EAAAqF,iBAd1B,SAA0BiJ,IAChB6R,EAAUtC,EAAS1c,IAAImN,KAEzB6R,EAAQE,cAW4BrgB,EAAAsF,mBAP5C,SAA4BgJ,IAClB6R,EAAUtC,EAAS1c,IAAImN,KAEzB6R,EAAQG,wB,+UC7Mf,IAAArc,EAAAvE,EAAA,aACDsE,EAAAtE,EAAA,oBAEa8E,G,6CACSvD,EAA2Bsf,EAAmBC,GAG1DC,EAAMla,SAASma,YAAYH,GAEjC,OADAE,EAAIE,UAAUH,GACPvf,EAAQ2f,cAAcH,K,0CAGJxf,EAASuf,EAAmBK,EAAyBrgB,GAC7D,SAAXsgB,EAAWtD,GACf,IACSuD,EADHC,EAAM,GACZ,IAASD,KAAKvD,EACF,mBAANuD,IACFC,EAAID,GAAKvD,EAAKuD,IAGlB,IAAME,EAAOtf,KAAKC,UAAUof,EAAK,SAACD,EAAGG,GACnC,OAAIA,aAAaC,KAAa,OAC1BD,aAAaE,OAAe,SACzBF,GACN,KACH5U,WAAW,WAAc9L,EAAQqB,kBAAkB,SAAUof,IAAS,IAC/C,IAAnBJ,GACFrD,EAAKqD,iBAIO,WAAZ5f,EACgB,WAAduf,EACFle,OAAOwF,iBAAiB0Y,EAAWjf,KAAK8f,SAAS,WAAA,OAAMP,EAAS,CAAE/S,WAAYzL,OAAOyL,WAAYJ,YAAarL,OAAOqL,eAAgB,KAAK,IAE1IrL,OAAOwF,iBAAiB0Y,EAAWM,IAG/Bpb,EAAMzB,EAAAI,cAAclD,IAAIF,KAE3ByE,EAAoBoC,iBAAiB0Y,EAAWM,K,sDAKhB7f,EAASuf,EAAWK,EAAgBrgB,GACnEkF,EAAMzB,EAAAI,cAAclD,IAAIF,GAE1ByE,GAAOA,EAAI4b,mBACb/f,KAAKggB,oBAAoB7b,EAAI4b,kBAAmBd,EAAWK,EAAgBrgB,K,qCAIzDghB,EAAcC,GAAc,IAExC/b,EAFwC6F,EAAAhK,KAC5CigB,IACI9b,EAAMzB,EAAAI,cAAclD,IAAIqgB,GAC9BC,EAAOA,EAAKC,IAAI,SAAUpe,GAAK,OAAOA,EAAEqe,gBACxC3d,EAAAE,MAAM0D,sBAAsB4Z,EAAa7Z,GAAK,WAAa,SAACxI,GAAD,OAAOoM,EAAKqW,YAAYziB,EAAGsiB,IACrF/b,EAAoBoC,iBAAiB,UAAW9D,EAAAE,MAAM0D,sBAAsB4Z,EAAa7Z,GAAK,YAAY,M,4CAIlFxI,EAAkBoB,EAAashB,GAC1D,GAAI1iB,EAAEoB,IAAIohB,gBAAkBphB,EAAIohB,eAAiBE,IAE/C,OADA1iB,EAAE0hB,kBACK,I,wCAIcW,GACvB,IACQ9b,EADJ8b,IACI9b,EAAMzB,EAAAI,cAAclD,IAAIqgB,MAE3B9b,EAAoB0C,oBAAoB,UAAWpE,EAAAE,MAAM0D,sBAAsB4Z,EAAa7Z,GAAK,YAClG3D,EAAAE,MAAM0D,sBAAsB4Z,EAAa7Z,GAAK,WAAa,Q,+BAKzCma,EAAMC,EAAMC,GAAS,IACvC3E,EADuCsB,EAAApd,KAAA0gB,EAAAvhB,UAE3C,OAAO,WACL,IAAMwhB,EAAUvD,EAAMnB,EAAOyE,EAKvBE,EAAUH,IAAc3E,EAC9BM,aAAaN,GACbA,EAAU/Q,WANI,WACZ+Q,EAAU,KACL2E,GAAWF,EAAKlE,MAAMe,EAAMnB,IAIPuE,GACxBI,GAASL,EAAKlE,MAAMsE,EAAS1E,M,kCAIVre,EAAkBsiB,GAC3C,IAA2C,IAAvCA,EAAKvU,QAAQ/N,EAAEoB,IAAIohB,eAErB,OADAxiB,EAAE0hB,kBACK,M,iGA9Fb7gB,EAAAwE,YAAAA,G,0HCHC,IAAAnE,EAAAX,EAAA,gBACD0iB,GADUngB,OAAAC,eAAAlC,EAAA,gBAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAAd,EAAAgB,cACV3B,EAAA,yBACA2iB,GADSpgB,OAAAC,eAAAlC,EAAA,wBAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAAihB,EAAAE,sBACT5iB,EAAA,kBAASuC,OAAAC,eAAAlC,EAAA,cAAA,CAAAmC,YAAA,EAAAhB,IAAA,WAAA,OAAAkhB,EAAA7d,eACTxE,EAAAsE,SAAA5E,EAAA,Y,qcCCI,MAAO,CACLqO,WAAYzL,OAAOyL,WACnBJ,YAAarL,OAAOqL,e,0BAIb1M,GACT,GAAKA,GAEE,GAAuB,iBAAZA,EAAsB,CACtC,GAAgB,aAAZA,EACF,OAAOsF,SAETtF,EAAUsF,SAASC,cAAcvF,SALjCA,EAAUsF,SAASI,KAOrB,OAAO1F,I,8BAGMA,GACb,IAEEG,GADGA,EADYG,KAAKJ,IAAIF,KAEX,GAETshB,EAAmBhhB,KAAKihB,sBAAsBphB,GAkBpD,MAjBiC,CAC/ByK,UAAWzK,EAAWyK,WAAa,EACnCD,WAAYxK,EAAWwK,YAAc,EACrCsC,YAAa9M,EAAW8M,aAAe,EACvC3F,aAAcnH,EAAWmH,cAAgB,EACzCxB,aAAc3F,EAAW2F,cAAgB,EACzCiC,YAAa5H,EAAW4H,aAAe,EACvC8B,WAAY1J,EAAW0J,YAAc,EACrClF,UAAWxE,EAAWwE,WAAa,EACnCkO,UAAW1S,EAAW0S,WAAa,EACnCC,WAAY3S,EAAW2S,YAAc,EACrClG,aAAczM,EAAWyM,cAAgB,EACzCG,YAAa5M,EAAW4M,aAAe,EACvC7E,eAAgB/H,EAAW+H,gBAAkB,EAC7CoJ,YAAa5J,KAAK8Z,MAAMF,EAAiBhf,GACzCkP,aAAc9J,KAAK8Z,MAAMF,EAAiBjf,M,4CAKjBrC,GAC3B,IAQU6J,EACAlF,EATJ8c,EAAyB,CAC7Bpf,EAAG,EACHC,EAAG,GAaL,OAXgB,OAAZtC,GACEA,EAAQ4J,wBACJ8X,EAAkBpc,SAASqH,gBAC3BgV,EAAM3hB,EAAQ4J,wBACdC,EAAa6X,EAAgB7X,WAC7BlF,EAAY+c,EAAgB/c,UAElC8c,EAAIpf,EAAIsf,EAAI/e,KAAOiH,EACnB4X,EAAInf,EAAIqf,EAAIlf,IAAMkC,GAGf8c,I,4CAGoBzhB,GAC3B,IAAMG,EAAaG,KAAKJ,IAAIF,GAC5B,OAAIG,GAAcA,EAAWyJ,sBAGpB,CACLrH,OAHIoH,EAAOxJ,EAAWyJ,yBAGVrH,MACZC,OAAQmH,EAAKnH,OACbC,IAAKkH,EAAKlH,IACVC,MAAOiH,EAAKjH,MACZC,OAAQgH,EAAKhH,OACbC,KAAM+G,EAAK/G,KACXP,EAAGsH,EAAKtH,EACRC,EAAGqH,EAAKrH,GAGL,O,2CAGmBtC,GACpBG,EAAaG,KAAKJ,IAAIF,GAC5B,OAAIG,EACEA,EAAWkgB,kBACN/f,KAAKoS,QAAQvS,EAAWkgB,mBAExB/f,KAAKoS,QAAQvS,GAGjB,O,yCAMP,OAFgBmF,SAAS6F,cACNkT,aAAa,OAAS,K,kCAKzC,MAAO,CAAEhc,EAAGhB,OAAO4Q,YAAa3P,EAAGjB,OAAO4M,e,+BAG5BnD,GACRrG,EAAMnE,KAAKJ,IAAI4K,GACrB,OAAQxF,SAAS6F,gBAAkB1G,I,mCAGjBzE,GACZyE,EAAMnE,KAAKJ,IAAIF,GACrB,OAAIyE,EAAYA,EAAImd,UACb,O,qCAIP,MAAO,GAAAC,O,sHAAAC,CAAIxc,SAASmG,iBAAiB,OAAMsW,OAAO,SAAC9jB,EAAGC,GAAJ,OAAUwJ,KAAKG,IAAI5J,GAAIoD,OAAO4E,iBAAiB/H,GAAGqM,QAAU,IAAI,K,sCAG7FvK,GAErB,IADA,IAAIgiB,EAAO1hB,KAAKJ,IAAIF,GACbgiB,GAAwC,SAAhCA,EAAKC,SAASC,eAA0B,CACnD,GAAiF,UAA7E7gB,OAAO4E,iBAAiB+b,GAAM7b,iBAAiB,YAAY+b,cACzD,OAAO,EACbF,EAAOA,EAAKtW,WAEhB,OAAO,I,6CAGqB1L,GAI5B,IAHA,IAEIuK,EAFAyX,EAAO1hB,KAAKJ,IAAIF,GAGbgiB,GAAwC,SAAhCA,EAAKC,SAASC,eAA0B,CAGnD,GAFAC,EAAiB9gB,OAAO4E,iBAAiB+b,GAAMzX,OAC/CA,EAAS6X,OAAOnD,SAASkD,IACpBC,OAAOC,MAAM9X,GACf,OAAOA,EAEVyX,EAAOA,EAAKtW,WAEhB,OAAO,SA/IEtL,E,gGAAbrB,EAAAqB,WAAAA,G,sVCFC,IAAA4C,EAAAvE,EAAA,aACD0E,EAAA1E,EAAA,kBACAsE,EAAAtE,EAAA,oBACA6jB,EAAA7jB,EAAA,YAGI8jB,OAA0C7iB,EAGjC2hB,G,iDACarhB,GACtBsF,SAASI,KAAKC,YAAY3F,K,yCAGFA,GACxBsF,SAASI,KAAKmF,YAAY7K,K,mCAGRwiB,EAAYC,GAAgC,IAAfC,EAAe,EAAAjjB,UAAAR,aAAAS,IAAAD,UAAA,IAAAA,UAAA,GAC1DkjB,EAAS3f,EAAAI,cAAclD,IAAIuiB,GAC/B,GAAIE,GAAUH,EAAY,CACxB,GAAIG,aAAkBzC,MAAQsC,aAAsBtC,KAGlD,OAFIwC,EAASC,EAAOC,aAAaJ,EAAYG,EAAOE,YAC/CF,EAAOhd,YAAY6c,IACjB,EAEPhe,QAAQF,IAAI,0BAA2Bqe,EAAQH,GAGnD,OAAO,I,qCAGaM,EAAYL,GAC5BE,EAAS3f,EAAAI,cAAclD,IAAIuiB,GAC3BE,GAAUG,GACZH,EAAO9X,YAAYiY,K,sCAIA9iB,EAASuN,GAC9B,IAAI9I,EAAmBzB,EAAAI,cAAclD,IAAIF,GACzC,GAAIyE,EACF,IAAK,IAAInF,KAAOiO,EACd9I,EAAIgB,aAAanG,EAAKiO,EAAWjO,M,kCAKpBU,GACZM,KAAKyiB,sBAAsB/iB,IAC9BM,KAAK0iB,KAAKhjB,EAAQ4hB,a,4CAIe5hB,GACnC,IAAIijB,EAAY3d,SAAS4d,eAIrBC,GAHuB,EAAvBF,EAAUG,YACZH,EAAUI,kBAEA/d,SAASge,eACrBH,EAAMI,WAAWvjB,GACjBijB,EAAUO,SAASL,GACnB,IACE,IAAIM,EAAane,SAASoe,YAAY,QAEtC,OADAT,EAAUI,kBACHI,EACP,MAAOE,GAEP,OADAV,EAAUI,mBACH,K,2BAIC9e,GACL4E,UAAUya,UAIfza,UAAUya,UAAUC,UAAUtf,GAAMuf,KAAK,WACvCtf,QAAQF,IAAI,gDACX,SAAUqf,GACXnf,QAAQuf,MAAM,+BAAgCJ,KAN9CrjB,KAAK0jB,4BAA4Bzf,K,kDAUMA,GACzC,IAAI0f,EAAW3e,SAASE,cAAc,YACtCye,EAAShc,MAAQ1D,EAGjB0f,EAASjd,MAAMvE,IAAM,IACrBwhB,EAASjd,MAAMpE,KAAO,IACtBqhB,EAASjd,MAAMgB,SAAW,QAE1B1C,SAASI,KAAKC,YAAYse,GAC1BA,EAAS3Y,QACT2Y,EAASC,SAET,IACE,IACIC,EADa7e,SAASoe,YAAY,QACf,aAAe,eACtClf,QAAQF,IAAI,sCAAwC6f,GACpD,MAAOR,GACPnf,QAAQuf,MAAM,iCAAkCJ,GAGlDre,SAASI,KAAKmF,YAAYoZ,K,4BAGfnZ,GAAkG,IAAxFsZ,EAAwF,EAAA3kB,UAAAR,aAAAS,IAAAD,UAAA,IAAAA,UAAA,GAA7D4kB,EAA6D,EAAA5kB,UAAAR,aAAAS,IAAAD,UAAA,GAAAA,UAAA,GAA/B6iB,EAAMgC,cAAcC,YAC9F9f,EAAMzB,EAAAI,cAAclD,IAAI4K,GAC5B,KAAMrG,aAAe+f,aACnB,MAAM,IAAI5lB,MAAM,uCAMlB,GAJA6F,EAAI6G,MAAM,CACRmZ,cAAeL,IAGb3f,aAAeigB,kBAAoBjgB,aAAekgB,oBACpD,OAAQN,GACN,KAAK/B,EAAMgC,cAAcM,kBACvBngB,EAAIyf,SACJ,MACF,KAAK5B,EAAMgC,cAAcO,aACvBpgB,EAAIqgB,kBAAkB,EAAG,GACzB,MACF,KAAKxC,EAAMgC,cAAcC,YACvB9f,EAAIqgB,mBAAmB,GAAI,M,2BAOvBha,GACNrG,EAAMzB,EAAAI,cAAclD,IAAI4K,GACxBrG,GACFA,EAAI2G,S,+BAIQN,EAA4BV,GACpCpK,EAAUgD,EAAAI,cAAclD,IAAI4K,GAC9BV,GAAiBpK,GAAWA,aAAmBwkB,YACjDpa,EAAczF,UAAY3E,EAAQ4K,UACzB5K,GAAWA,aAAmBwkB,aACrCxkB,EAAQ+kB,eAAe,CAAEC,SAAU,SAAUC,MAAO,UAAWC,OAAQ,Y,8BAI9DC,GACb,IAAMC,EAAQC,YAAY,WACxB,IAAMC,EAAWhgB,SAASqH,gBAAgBhI,WAAaW,SAASI,KAAKf,UAE/D4gB,EAAQ7d,KAAK8d,MADYF,EAAdH,EAAyBA,EAAcG,EAAWA,EAAWH,GAC3C,IAC/BG,IAAaH,EACfM,cAAcL,GAEd/jB,OAAOqkB,SAAS,EAAiBJ,EAAdH,EAAyBG,EAAWC,EAAQD,EAAWC,IAE3E,M,qCAMH,GAAuC,UAAnCI,EADYrgB,SAAS6F,eACXya,QAAQ1D,cAGpB,IAFA,IAAI2D,EAASvgB,SAASwgB,qBAAqB,SACvCH,EAAYrgB,SAAS6F,cAChB7M,EAAI,EAAGA,EAAIunB,EAAO5mB,OAAQX,IACjC,GAAIunB,EAAOvnB,IAAMqnB,EAAW,CAC1B,IAAII,EAAOF,EAAOvnB,EAAI,GAClBynB,GAAQA,EAAKza,OACfya,EAAKza,QAEP,S,0CAON,IAAI5F,EAAOJ,SAASI,KACdsgB,EAAe,GAKfC,GAJN,CAAC,WAAY,QAAS,YAAYpkB,QAAQ,SAACvC,GACzC0mB,EAAa1mB,GAAOoG,EAAKsB,MAAM1H,KAEjCyD,EAAAE,MAAMijB,kBAAkBpjB,KAAKkjB,GACP1lB,KAAK6lB,oBAC3BhjB,EAAAM,YAAYwG,IAAIvE,EACd,CACEsC,SAAY,WACZzF,MAASjC,KAAK8lB,gBAAkC,EAAhBH,EAAvB,eAA0DA,EAA1D,MAA+E,KACxFI,SAAY,WAEhBljB,EAAAM,YAAY6iB,OAAOhhB,SAASI,KAAM,0B,+CAI9BsgB,EAAgD,EAAjCjjB,EAAAE,MAAMijB,kBAAkBjnB,OAAa8D,EAAAE,MAAMijB,kBAAkBK,MAAQ,GAExFpjB,EAAAM,YAAYwG,IAAI3E,SAASI,KACvB,CACEsC,SAAU,OAAAwe,EAAER,EAAA,UAAwBQ,EAAI,KACxCjkB,MAAO,OAAAkkB,EAAET,EAAA,OAAqBS,EAAI,KAClCJ,SAAU,OAAAK,EAAEV,EAAA,UAAwBU,EAAI,OAE5CvjB,EAAAM,YAAYkjB,UAAUrhB,SAASI,KAAM,4B,kGArMzC3G,EAAAsiB,mBAAAA,GAwMS+E,aAAe,WACpB,IAAIC,EAAW/gB,SAASI,KAAKsB,MAAMqf,SACnC,QAAIA,GAAyB,WAAbA,IACT/gB,SAASI,KAAKI,cAAgBzE,OAAOqL,aAAepH,SAASqH,gBAAgBC,eAW9EyU,EAAA8E,iBAAmB,WAA2B,IAU5CS,EAgBAC,EAEFC,EA3BN,MAAwB,oBAAbxhB,SACF,KAF2C,EAAA7F,UAAAR,aAAAS,IAAAD,UAAA,IAAAA,UAAA,UAKfC,IAAxB6iB,KACLwE,EAAQzhB,SAASE,cAAc,QAC/BwB,MAAMzE,MAAQ,OACpBwkB,EAAM/f,MAAMxE,OAAS,SAGfwkB,GADAJ,EAAQthB,SAASE,cAAc,QACZwB,OAEdgB,SAAW,WACtBgf,EAAWvkB,IAAM,IACjBukB,EAAWpkB,KAAO,IAClBokB,EAAWC,cAAgB,OAC3BD,EAAWE,WAAa,SACxBF,EAAWzkB,MAAQ,QACnBykB,EAAWxkB,OAAS,QACpBwkB,EAAWX,SAAW,SAEtBO,EAAMjhB,YAAYohB,GAElBzhB,SAASI,KAAKC,YAAYihB,GAEpBC,EAAiBE,EAAM9Z,YAC7B2Z,EAAM5f,MAAMqf,SAAW,SAGnBQ,KAFAC,EAAcC,EAAM9Z,eAGtB6Z,EAAcF,EAAM7Z,aAGtBzH,SAASI,KAAKmF,YAAY+b,GAC1BrE,EAAsBsE,EAAiBC,GAElCvE,K,2GClQXvhB,OAAAC,eAAAlC,EAAA,aAAA,CAAAkJ,OAAA,K,8GCFaqc,EAAAvlB,EAAAulB,gBAAAvlB,EAAAulB,cAAa,KAKxBA,EAAA,YAAA,GAAA,cAIAA,EAAAA,EAAA,aAAA,GAAA,eAIAA,EAAAA,EAAA,kBAAA,GAAA,qB,uXCHW6C,UACF7mB,KAAKmG,iBAAiB0gB,M,qCAgB7B,OAHK7mB,KAAKma,WACRna,KAAKma,SAAW,IAAI2M,GAEf9mB,KAAKma,aAxBH2M,E,EAkBX,SAAAA,I,KAAA9mB,gBAAA8mB,G,yDAdA9mB,KAAAmG,iBAA2C,GAU3CnG,KAAAqG,sBAAyD,GAEzDrG,KAAA4lB,kBAAoB,GAhBtBnnB,EAAAqoB,MAAAA,EA4BaroB,EAAAkE,MAAQmkB,EAAMC,e,ucC/B1B,IAAAjoB,EAAAX,EAAA,oBAEYgF,G,uCACGqH,EAA4BkB,GACxC,IAAIhM,EAAUZ,EAAAgB,WAAcF,IAAI4K,GAC5B9K,IACuB,iBAAdgM,EACThM,EAAQqM,UAAUuD,IAAI5D,IAEtBsb,EAAAtnB,EAAQqM,WAAUuD,IAAlB+M,MAAA2K,EAAAxF,EAAyB9V,O,gCAKdlB,EAA4Byc,GAC3C,IAAIvnB,EAAUZ,EAAAgB,WAAcF,IAAI4K,GAC5B9K,IACqB,iBAAZunB,EACTvnB,EAAQqM,UAAUC,OAAOib,IAEzBC,EAAAxnB,EAAQqM,WAAUC,OAAlBqQ,MAAA6K,EAAA1F,EAA4ByF,O,yCAKRvnB,EAA2BgM,GAC/C7L,EAAaf,EAAAgB,WAAcF,IAAIF,GAC/BG,GAAcA,EAAWkgB,mBAC3BlgB,EAAWkgB,kBAAkBhU,UAAUuD,IAAI5D,K,8CAIhBhM,EAA2BgM,GACpD7L,EAAaf,EAAAgB,WAAcF,IAAIF,GAC/BG,GAAcA,EAAWkgB,mBAC3BlgB,EAAWkgB,kBAAkBhU,UAAUC,OAAON,K,iCAIhCyb,GAChB,OAAOpmB,OAAOqmB,WAAWD,GAAOE,U,+BAGlB3nB,EAAS4nB,GACvB,OAAI5nB,EAAQ+F,aACH/F,EAAQ+F,aAAa6hB,GACrBvmB,OAAO4E,iBACPX,SAASY,YAAYD,iBAAiBjG,EAAS,MAAMmG,iBAAiByhB,QAD1E,I,0BAKI5nB,EAAsBga,GAAkD,IAA3B/R,EAA2B,EAAAxI,UAAAR,aAAAS,IAAAD,UAAA,GAAAA,UAAA,GAAJ,KAC7E,GAAoB,iBAATua,EACT,GAAc,OAAV/R,EAGF,IAFA,IACI4f,EADQ7N,EACc8N,MAAM,KACvBxpB,EAAI,EAAGA,EAAIupB,EAAc5oB,OAAQX,IAAK,CAC7C,IAAIypB,EAAeF,EAAcvpB,GAC5BypB,IACDC,EAAYD,EAAaD,MAAM,KACnC9nB,EAAQgH,MAAMihB,YAAYD,EAAU,GAAIA,EAAU,UAItDhoB,EAAQgH,MAAMihB,YAAYjO,EAAM/R,QAEhC,IAAK,IAAI3I,KAAO0a,EACVA,EAAKkO,eAAe5oB,IACtBU,EAAQgH,MAAMihB,YAAY3oB,EAAK0a,EAAK1a,Q,iGAlE9CP,EAAA0E,YAAAA,G,2GCFCuG,EAAAvL,EAAA,4BAQD4C,OAAO0I,UAAY,CACjBC,QAAAA","file":"ant-design-blazor.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()","import { infoHelper as domInfoHelper } from '../modules/dom/infoHelper';\n\nexport class mutationObserver {\n  // @ts-ignore: TS2304: Cannot find name 'MutationObserver'\n  private static mutationObservers: Map<string, MutationObserver> = new Map<string, MutationObserver>();\n\n\n  static create(key: string, invoker, isDotNetInvoker: boolean = true) {\n    // @ts-ignore: TS2304: Cannot find name 'MutationObserver'\n    let observer;\n\n    if (isDotNetInvoker) {\n      observer = new MutationObserver(mutations => mutationObserver.observerCallback(mutations, invoker))\n    } else {\n      observer = new MutationObserver(mutations => invoker(mutations))\n    }\n    mutationObserver.mutationObservers.set(key, observer)\n  }\n\n  static observe(key: string, element, options?: MutationObserverInit) {\n    const observer = mutationObserver.mutationObservers.get(key);\n    if (observer) {\n      let domElement = domInfoHelper.get(element);\n      observer.observe(domElement, options);\n    }\n  }\n\n  static disconnect(key: string): void {\n    const observer = this.mutationObservers.get(key)\n    if (observer) {\n      observer.disconnect()\n    }\n  }\n\n  static dispose(key: string): void {\n    this.disconnect(key)\n    this.mutationObservers.delete(key)\n  }\n\n  private static observerCallback(mutations, invoker) {\n    //TODO: serialize a proper object (check resizeObserver.ts for sample)\n    const entriesJson = JSON.stringify(mutations)\n    invoker.invokeMethodAsync('Invoke', entriesJson)\n  }\n}","export { resizeObserver as resize } from './resizeObserver';\nexport { mutationObserver } from './mutationObserver';","import { infoHelper as domInfoHelper} from '../modules/dom/infoHelper';\nimport { boxSize, domRect } from '../modules/dom/types';\n\nclass ResizeObserverEntry {\n  borderBoxSize?: boxSize\n  contentBoxSize?: boxSize\n  contentRect?: domRect\n  target?: Element\n}\n\nexport class resizeObserver {\n\n  static isResizeObserverSupported(): boolean {\n    return \"ResizeObserver\" in window;\n  }\n\n  // @ts-ignore: TS2304: Cannot find name 'ResizeObserver'\n  private static resizeObservers: Map<string, ResizeObserver> = new Map<string, ResizeObserver>();\n\n  static create(key, invoker, isDotNetInvoker: boolean = true ) {\n    // @ts-ignore: TS2304: Cannot find name 'ResizeObserver'\n    let observer;\n        \n    if (isDotNetInvoker) {\n      observer = new ResizeObserver((entries, observer) => resizeObserver.observerCallBack(entries, observer, invoker));\n    } else {\n      observer = new ResizeObserver((entries, observer) => invoker(entries, observer));\n    }\n    resizeObserver.resizeObservers.set(key, observer)\n  }\n\n  static observe(key: string, element) {\n    const observer = resizeObserver.resizeObservers.get(key);\n    if (observer) {\n      let domElement = domInfoHelper.get(element);\n      observer.observe(domElement);\n    }\n  }\n\n  static disconnect(key: string): void {\n    const observer = this.resizeObservers.get(key)\n    if (observer) {\n      observer.disconnect()\n    }\n  }\n\n  static unobserve(key: string, element: Element): void {\n    const observer = this.resizeObservers.get(key)\n\n    if (observer) {\n      let domElement = domInfoHelper.get(element);\n      observer.unobserve(domElement)\n    }\n  }\n\n  static dispose(key: string): void {\n    this.disconnect(key)\n    this.resizeObservers.delete(key)\n  }\n\n  private static observerCallBack(entries, observer, invoker) {\n    if (invoker) {\n      const mappedEntries = new Array<ResizeObserverEntry>()\n      entries.forEach(entry => {        \n        if (entry) {\n          const mEntry = new ResizeObserverEntry()\n          if (entry.borderBoxSize) {\n            mEntry.borderBoxSize = {\n              blockSize: entry.borderBoxSize.blockSize,\n              inlineSize: entry.borderBoxSize.inlineSize\n            }\n          }\n\n          if (entry.contentBoxSize) {\n            mEntry.contentBoxSize = {\n              blockSize: entry.contentBoxSize.blockSize,\n              inlineSize: entry.contentBoxSize.inlineSize\n            }\n          }\n\n          if (entry.contentRect) {\n            mEntry.contentRect = {\n              x: entry.contentRect.x,\n              y: entry.contentRect.y,\n              width: entry.contentRect.width,\n              height: entry.contentRect.height,\n              top: entry.contentRect.top,\n              right: entry.contentRect.right,\n              bottom: entry.contentRect.bottom,\n              left: entry.contentRect.left\n            }\n\n          }\n\n          mEntry.target = entry.target\n          mappedEntries.push(mEntry)\n        }\n      })\n\n      const entriesJson = JSON.stringify(mappedEntries)\n      invoker.invokeMethodAsync('Invoke', entriesJson)\n    }\n  }\n\n}","export { state } from './modules/stateProvider';\nexport * as observable from './ObservableApi/observableApi';\nexport { domInfoHelper, domTypes, domManipulationHelper, eventHelper } from './modules/dom/exports';\nexport { styleHelper } from './modules/styleHelper';\nexport {\n  backtopHelper,\n  iconHelper,\n  inputHelper,\n  mentionsHelper,\n  modalHelper,\n  overlayHelper,\n  tableHelper,\n  uploadHelper\n} from './modules/components/export'\nexport { enableDraggable, disableDraggable, resetModalPosition } from \"./modules/dom/dragHelper\";\n\nexport function log(text) {\n  console.log(text);  \n}\n","import { domInfoHelper, domManipulationHelper } from '../dom/exports'\n\nexport class backtopHelper {\n  static backTop(target: string) {\n    let dom = domInfoHelper.get(target);\n    if (dom) {\n      domManipulationHelper.slideTo(dom.scrollTop);\n    } else {\n      domManipulationHelper.slideTo(0);\n    }\n  }\n}","export { backtopHelper } from './backtopHelper';\nexport { overlayHelper } from './overlayHelper';\nexport { uploadHelper } from './uploadHelper';\nexport { mentionsHelper } from './mentionsHelper';\nexport { modalHelper } from './modalHelper';\nexport { inputHelper } from './inputHelper';\nexport { tableHelper } from './tableHelper';\nexport { iconHelper } from './iconHelper';","export class iconHelper {\n  static createIconFromfontCN(scriptUrl) {\n    if (document.querySelector(`[data-namespace=\"${scriptUrl}\"]`)) {\n      return;\n    }\n    const script = document.createElement('script');\n    script.setAttribute('src', scriptUrl);\n    script.setAttribute('data-namespace', scriptUrl);\n    document.body.appendChild(script);\n  }\n}","import { domInfoHelper } from '../dom/exports'\nimport { state } from '../stateProvider';\nimport { resize } from '../../ObservableApi/observableApi';\n\nexport class inputHelper {\n\n  static getTextAreaInfo(element) {\n    var result = {};\n    var dom = domInfoHelper.get(element);\n    if (!dom) return null;\n    result[\"scrollHeight\"] = dom.scrollHeight || 0;\n\n    if (element.currentStyle) {\n      result[\"lineHeight\"] = parseFloat(element.currentStyle[\"line-height\"]);\n      result[\"paddingTop\"] = parseFloat(element.currentStyle[\"padding-top\"]);\n      result[\"paddingBottom\"] = parseFloat(element.currentStyle[\"padding-bottom\"]);\n      result[\"borderBottom\"] = parseFloat(element.currentStyle[\"border-bottom\"]);\n      result[\"borderTop\"] = parseFloat(element.currentStyle[\"border-top\"]);\n    }\n    else if (window.getComputedStyle) {\n      result[\"lineHeight\"] = parseFloat(document.defaultView.getComputedStyle(element, null).getPropertyValue(\"line-height\"));\n      result[\"paddingTop\"] = parseFloat(document.defaultView.getComputedStyle(element, null).getPropertyValue(\"padding-top\"));\n      result[\"paddingBottom\"] = parseFloat(document.defaultView.getComputedStyle(element, null).getPropertyValue(\"padding-bottom\"));\n      result[\"borderBottom\"] = parseFloat(document.defaultView.getComputedStyle(element, null).getPropertyValue(\"border-bottom\"));\n      result[\"borderTop\"] = parseFloat(document.defaultView.getComputedStyle(element, null).getPropertyValue(\"border-top\"));\n    }\n    //Firefox can return this as NaN, so it has to be handled here like that.\n    if (Object.is(NaN, result[\"borderTop\"]))\n      result[\"borderTop\"] = 1;\n    if (Object.is(NaN, result[\"borderBottom\"]))\n      result[\"borderBottom\"] = 1;\n    return result;\n  }\n\n  static registerResizeTextArea(element: HTMLTextAreaElement, minRows: number, maxRows: number, objReference) {\n    if (!objReference) {\n      this.disposeResizeTextArea(element);\n    }\n    else {\n      state.objReferenceDict[element.id] = objReference;\n      state.eventCallbackRegistry[element.id + \"input\"] = function () { inputHelper.resizeTextArea(element, minRows, maxRows); }\n      element.addEventListener(\"input\", state.eventCallbackRegistry[element.id + \"input\"]);\n      resize.create(element.id + \"-resize\", () => {\n        inputHelper.resizeTextArea(element, minRows, maxRows);\n      }, false);\n      resize.observe(element.id + \"-resize\", element);\n      inputHelper.resizeTextArea(element, minRows, maxRows);\n      element.style.resize = 'none';\n      return this.getTextAreaInfo(element);\n    }\n  }\n\n  static disposeResizeTextArea(element: HTMLTextAreaElement) {\n    element.removeEventListener(\"input\", state.eventCallbackRegistry[element.id + \"input\"]);\n    resize.unobserve(element.id + \"-resize\", element);\n    state.objReferenceDict[element.id] = null;\n    state.eventCallbackRegistry[element.id + \"input\"] = null;\n  }\n\n  static resizeTextArea(element: HTMLTextAreaElement, minRows: number, maxRows: number) {\n    let dims = this.getTextAreaInfo(element);\n    let rowHeight = dims[\"lineHeight\"];\n    let offsetHeight = dims[\"paddingTop\"] + dims[\"paddingBottom\"] + dims[\"borderTop\"] + dims[\"borderBottom\"];\n    let oldHeight = parseFloat(element.style.height);\n    //use rows attribute to evaluate real scroll height\n    let oldRows = element.rows;\n    element.rows = minRows;\n    element.style.height = 'auto';    \n    \n    var rows = Math.trunc(element.scrollHeight / rowHeight);\n    element.rows = oldRows;\n    rows = Math.max(minRows, rows);\n    var newHeight = 0;\n    if (rows > maxRows) {\n      rows = maxRows;\n\n      newHeight = (rows * rowHeight + offsetHeight);\n      element.style.height = newHeight + \"px\";\n      element.style.overflowY = \"visible\";\n    }\n    else {\n      newHeight = rows * rowHeight + offsetHeight;\n      element.style.height = newHeight + \"px\";\n      element.style.overflowY = \"hidden\";\n    }\n    if (oldHeight !== newHeight) {\n      let textAreaObj = state.objReferenceDict[element.id];\n      textAreaObj.invokeMethodAsync(\"ChangeSizeAsyncJs\", element.scrollWidth, newHeight);\n    }\n  }\n\n  static setSelectionStart(element, position: number) {\n    if (position >= 0) {\n      let dom: HTMLInputElement = domInfoHelper.get(element);\n      if (dom) {\n        if (position <= dom.value.length) {\n          dom.selectionStart = position;\n          dom.selectionEnd = position;\n        }\n      }\n    }\n  }\n\n}","import { state } from \"../stateProvider\";\n\nexport class mentionsHelper {\n\n  static getCursorXY(element, objReference) {\n    state.objReferenceDict[\"mentions\"] = objReference;\n    window.addEventListener(\"click\", this.mentionsOnWindowClick);\n\n    const offset = this.getOffset(element);\n\n    return [offset.left, offset.top + offset.height + 14];\n  }\n\n  private static getOffset(elem) {\n    return (new InputCaret(elem)).getOffset();\n  }\n\n  private static mentionsOnWindowClick(e) {\n    let mentionsObj = state.objReferenceDict[\"mentions\"];\n    if (mentionsObj) {\n      mentionsObj.invokeMethodAsync(\"CloseMentionsDropDown\");\n    } else {\n      window.removeEventListener(\"click\", this.mentionsOnWindowClick);\n    }\n  }\n\n}\n\nclass InputCaret {\n  domInputor: any;\n\n  constructor(inputor) {\n    this.domInputor = inputor;\n  }\n\n  getPos = function () {\n    return this.domInputor.selectionStart;\n  };\n\n  getPosition = function (pos) {\n    var domInputor, end_range, format, html, mirror, start_range;\n    domInputor = this.domInputor;\n\n    format = function (value) {\n      value = value.replace(/<|>|`|\"|&/g, '?').replace(/\\r\\n|\\r|\\n/g, \"<br/>\");\n      if (/firefox/i.test(navigator.userAgent)) {\n        value = value.replace(/\\s/g, '&nbsp;');\n      }\n      return value;\n    };\n    if (!pos) {\n      pos = this.getPos();\n    }\n    let inputorValue = domInputor.value;\n    start_range = inputorValue.slice(0, pos);\n    end_range = inputorValue.slice(pos);\n    html = \"<span style='position: relative; display: inline;'>\" + format(start_range) + \"</span>\";\n    html += \"<span id='caret' style='position: relative; display: inline;'>|</span>\";\n    html += \"<span style='position: relative; display: inline;'>\" + format(end_range) + \"</span>\";\n    mirror = new Mirror(domInputor);\n    return mirror.create(html).rect();\n  };\n\n  getOffset = function (pos = null) {\n    var offset, position, domInputor;\n    domInputor = this.domInputor;\n\n    var rect = domInputor.getBoundingClientRect();\n\n    offset = {\n      left: rect.left,\n      top: rect.top\n    };\n\n    position = this.getPosition(pos);\n    return offset = {\n      left: offset.left + position.left - domInputor.scrollLeft,\n      top: offset.top + position.top - domInputor.scrollTop,\n      height: position.height\n    };\n  };\n\n}\n\nclass Mirror {\n  domInputor: any;\n  css_attr: any;\n  constructor(inputor) {\n    this.domInputor = inputor;\n    this.css_attr = [];\n  }\n\n  create = function (html) {\n    this.$mirror = document.createElement(\"div\");\n    //TODO: hard coded reference, try to make it more relative\n    (<any>window).AntDesign.interop.styleHelper.css(this.$mirror, this.mirrorCss());\n\n    this.$mirror.innerHTML = html;\n    this.domInputor.parentElement.append(this.$mirror);\n\n    return this;\n  };\n\n  mirrorCss = function () {\n    var css, _this = this;\n    css = {\n      position: 'absolute',\n      left: -9999,\n      top: 0,\n      zIndex: -20000\n    };\n\n    this.css_attr.push('width');\n\n    this.css_attr.forEach((p) => {\n      return css[p] = _this.domInputor.style[p]//_this.$inputor.css(p);\n    })\n\n    return css;\n  };\n\n  rect = function () {\n    var flag, pos, rect;\n    flag = this.$mirror.querySelector(\"#caret\");\n    var oRect = flag.getBoundingClientRect();\n\n    pos = {\n      left: flag.offsetLeft,\n      top: flag.offsetTop\n    }; //$flag.position();\n\n    rect = {\n      left: pos.left,\n      top: pos.top,\n      height: oRect.height\n    };\n\n    this.$mirror.parentElement.removeChild(this.$mirror)\n    return rect;\n  };\n\n}","import { domInfoHelper } from '../dom/exports'\n\nexport class modalHelper {\n  static focusDialog(selector: string, count: number = 0) {\n    let ele = <HTMLElement>document.querySelector(selector);\n    if (ele) {\n      if (ele.hasAttribute(\"disabled\")) {\n        let htmlElement = <HTMLElement>document.activeElement;\n        htmlElement?.blur();\n      } else {\n        setTimeout(() => {\n          ele.focus();\n          let curId = \"#\" + domInfoHelper.getActiveElement();\n          if (curId !== selector) {\n            if (count < 10) {\n              this.focusDialog(selector, count + 1);\n            }\n          }\n        }, 10);\n      }\n    }\n  }\n\n  static destroyAllDialog() {\n    document.querySelectorAll('.ant-modal-root')\n      .forEach(e => document.body.removeChild(e.parentNode));\n  }\n}","import { domInfoHelper, domTypes } from '../dom/exports'\nimport { resize } from '../../ObservableApi/observableApi';\nimport { mutationObserver as mutation } from '../../ObservableApi/mutationObserver';\n\n//Make sure the enum is identical as C# AntDesign.Placement enum\nexport enum Placement {\n  TopLeft       = 0,\n  TopCenter     = 1,\n  Top           = 2,\n  TopRight      = 3,\n  Left          = 4,\n  LeftTop       = 5,\n  LeftBottom    = 6,\n  Right         = 7,\n  RightTop      = 8,\n  RightBottom   = 9,\n  BottomLeft    = 10,\n  BottomCenter  = 11,\n  Bottom        = 12,\n  BottomRight   = 13\n}\n\n//Make sure the enum is identical as C# AntDesign.TriggerBoundyAdjustMode enum\nexport enum TriggerBoundyAdjustMode {\n  None     = 0,\n  InView   = 1,\n  InScroll = 2\n}\n\ntype verticalPosition = {\n  top?: number,\n  bottom?: number\n}\n\ntype horizontalPosition = {\n  left?: number,\n  right?: number\n}\n\nexport type overlayConstraints = {\n  verticalOffset: number,\n  horizontalOffset: number,\n  arrowPointAtCenter: boolean\n}\nexport type coordinates = {\n  top?: number,\n  bottom?: number,\n  left?: number,\n  right?: number\n}\n\n\nexport type overlayPosition = {\n  top?: number,\n  bottom?: number,\n  left?: number,\n  right?: number,\n  zIndex: number,\n  placement?: Placement,\n}\n\nexport class Overlay {\n    private static appliedStylePositionMap: Map<Placement,\n        { horizontal: \"left\" | \"right\", vertical: \"top\" | \"bottom\", class: string }> =\n    new Map([\n      [Placement.TopLeft,       { horizontal: \"left\", vertical: \"bottom\", class: \"topLeft\"  }],\n      [Placement.TopCenter,     { horizontal: \"left\", vertical: \"bottom\", class: \"topCenter\" }],\n      [Placement.Top,           { horizontal: \"left\", vertical: \"bottom\", class: \"top\" }],\n      [Placement.TopRight,      { horizontal: \"right\", vertical: \"bottom\", class: \"topRight\" }],\n      [Placement.Left,          { horizontal: \"right\", vertical: \"top\", class: \"left\" }],\n      [Placement.LeftTop,       { horizontal: \"right\", vertical: \"top\", class: \"leftTop\" }],\n      [Placement.LeftBottom,    { horizontal: \"right\", vertical: \"bottom\", class: \"leftBottom\" }],\n      [Placement.Right,         { horizontal: \"left\", vertical: \"top\", class: \"right\" }],\n      [Placement.RightTop,      { horizontal: \"left\", vertical: \"top\", class: \"rightTop\" }],\n      [Placement.RightBottom,   { horizontal: \"left\", vertical: \"bottom\", class: \"rightBottom\" }],\n      [Placement.BottomLeft,    { horizontal: \"left\", vertical: \"top\", class: \"bottomLeft\" }],\n      [Placement.BottomCenter,  { horizontal: \"left\", vertical: \"top\", class: \"bottomCenter\" }],\n      [Placement.Bottom,        { horizontal: \"left\", vertical: \"top\", class: \"bottom\" }],\n      [Placement.BottomRight,   { horizontal: \"right\", vertical: \"top\", class: \"bottomRight\" }],\n    ]);\n\n  private static reverseVerticalPlacementMap: Map<Placement, Function> =\n    new Map([\n      [Placement.TopLeft,       (position: string) => Placement.BottomLeft],\n      [Placement.TopCenter,     (position: string) => Placement.BottomCenter],\n      [Placement.Top,           (position: string) => Placement.Bottom],\n      [Placement.TopRight,      (position: string) => Placement.BottomRight],\n      [Placement.Left,          (position: string) => position === \"top\" ? Placement.LeftBottom : Placement.LeftTop],\n      [Placement.LeftTop,       (position: string) => Placement.LeftBottom],\n      [Placement.LeftBottom,    (position: string) => Placement.LeftTop],\n      [Placement.Right,         (position: string) => position === \"top\" ? Placement.RightBottom : Placement.RightTop],\n      [Placement.RightTop,      (position: string) => Placement.RightBottom],\n      [Placement.RightBottom,   (position: string) => Placement.RightTop],\n      [Placement.BottomLeft,    (position: string) => Placement.TopLeft],\n      [Placement.BottomCenter,  (position: string) => Placement.TopCenter],\n      [Placement.Bottom,        (position: string) => Placement.Top],\n      [Placement.BottomRight,   (position: string) => Placement.TopRight]\n    ]);\n    \n  private static reverseHorizontalPlacementMap: Map<Placement, Function> =\n    new Map([\n      [Placement.TopLeft,       (position: string) => Placement.TopRight],\n      [Placement.TopCenter,     (position: string) => position === \"left\" ? Placement.TopRight : Placement.TopLeft],\n      [Placement.Top,     (position: string) => position === \"left\" ? Placement.TopRight : Placement.TopLeft],\n      [Placement.TopRight,      (position: string) => Placement.TopLeft],\n      [Placement.Left,          (position: string) => Placement.Right],\n      [Placement.LeftTop,       (position: string) => Placement.RightTop],\n      [Placement.LeftBottom,    (position: string) => Placement.RightBottom],\n      [Placement.Right,         (position: string) => Placement.Left],\n      [Placement.RightTop,      (position: string) => Placement.LeftBottom],\n      [Placement.RightBottom,   (position: string) => Placement.LeftTop],\n      [Placement.BottomLeft,    (position: string) => Placement.BottomRight],\n      [Placement.BottomCenter,  (position: string) => position === \"left\" ? Placement.BottomRight : Placement.BottomLeft],\n      [Placement.Bottom,        (position: string) => position === \"left\" ? Placement.BottomRight : Placement.BottomLeft],\n      [Placement.BottomRight,   (position: string) => Placement.BottomLeft]\n    ]);    \n    \n  private static arrowCenterPlacementMatch: Map<Placement, Placement> =\n    new Map([\n      [Placement.TopLeft,       Placement.Top],\n      [Placement.TopCenter,     Placement.TopCenter],\n      [Placement.Top,           Placement.Top],\n      [Placement.TopRight,      Placement.Top],\n      [Placement.Left,          Placement.Left],\n      [Placement.LeftTop,       Placement.Left],\n      [Placement.LeftBottom,    Placement.Left],\n      [Placement.Right,         Placement.Right],\n      [Placement.RightTop,      Placement.Right],\n      [Placement.RightBottom,   Placement.Right],\n      [Placement.BottomLeft,    Placement.Bottom],\n      [Placement.BottomCenter,  Placement.BottomCenter],\n      [Placement.Bottom,        Placement.Bottom],\n      [Placement.BottomRight,   Placement.Bottom]\n    ]);   \n    \n  private blazorId: string;\n  public overlay: HTMLDivElement;\n  private container: HTMLElement;\n  private trigger: HTMLElement;\n\n  private overlayInfo: domTypes.domInfo;\n  private containerInfo: domTypes.domInfo;\n  private triggerInfo: domTypes.domInfo;\n  \n  private containerBoundarySize: coordinates;\n  private bodyBoundarySize: coordinates;\n  \n  private placement: Placement;\n  private recentPlacement: Placement;\n  private initialPlacement?: Placement;\n\n  private triggerPrefixCls: string; \n\n  private boundyAdjustMode: TriggerBoundyAdjustMode\n  public position: overlayPosition;\n  public sanitizedPosition: overlayPosition;\n  \n  private overlayPreset: domTypes.position;\n\n  private verticalCalculation:\n    (triggerPosition: number, triggerHeight: number, container: domTypes.domInfo,\n    trigger: domTypes.domInfo, overlayHeight: number, constraints: overlayConstraints)\n      => verticalPosition;\n\n  private horizontalCalculation:\n    (triggerPosition: number, triggerWidth: number, container: domTypes.domInfo,\n    trigger: domTypes.domInfo, overlayWidth: number, constraints: overlayConstraints)\n        => horizontalPosition;\n\n  private overlayConstraints: overlayConstraints; \n  private duringInit = true;\n  private selectedVerticalPosition: \"top\" | \"bottom\";\n  private selectedHorizontalPosition: \"left\" | \"right\";\n  private calculationsToPerform: Set<\"horizontal\"|\"vertical\">;\n\n  private triggerPosition: coordinates & { absoluteTop?: number, absoluteLeft?: number, height?: number, width?: number } = { };  \n\n  private isContainerBody: boolean;\n  private isContainerOverBody = false;\n  private isTriggerFixed: boolean; //refers to trigger or any of its parent having \"position:fixed\"\n  private lastScrollPosition: number; //used only if isTriggerFixed === true\n\n  private scrollbarSize: {\n    horizontalHeight: number,\n    verticalWidth: number\n  }  \n\n  constructor(blazorId: string,\n    overlay: HTMLDivElement, container: HTMLElement, trigger: HTMLElement, placement: Placement, \n    triggerBoundyAdjustMode: TriggerBoundyAdjustMode, triggerIsWrappedInDiv: boolean, triggerPrefixCls: string,\n    overlayConstraints: overlayConstraints) {\n    this.blazorId = blazorId;\n    this.overlay = overlay;  \n    //containerInfo & scrollbars have to be obtained here, because after\n    //removal of classes, the overlay goes to left: -9999 what causes artificial \n    //scrollbars and viewport dimensions are changing\n    this.containerInfo = domInfoHelper.getInfo(container);\n    this.container = container;\n    this.isContainerBody = container === document.body;\n    this.calculateScrollBarSizes()\n    if (!this.isContainerBody) {\n      this.isContainerOverBody = domInfoHelper.findAncestorWithZIndex(this.container) > 0;\n    }\n\n    this.overlay.style.cssText = this.overlay.style.cssText.replace(\"display: none;\", \"\");\n    this.overlay.style.top = \"0px\"; //reset to prevent scrollbars if do not exist\n    this.removeHiddenClass()\n\n    //The trigger is actually wrapping div, which can have its own dimensions (coming from styles).\n    //So, first valid HTML element is picked and if there is none, the wrapping div is set as trigger.\n    //Triggers are always wrapped in div if the <ChildElement> instead of <Unbound> is used.\n    this.trigger = Overlay.getFirstValidChild(trigger, triggerIsWrappedInDiv);\n    this.triggerPrefixCls = triggerPrefixCls;\n    if (overlayConstraints.arrowPointAtCenter){      \n      this.placement = Overlay.arrowCenterPlacementMatch.get(placement);\n    } else {\n      this.placement = placement;\n    }\n    this.initialPlacement = this.placement;\n    this.boundyAdjustMode = triggerBoundyAdjustMode;    \n    this.overlayConstraints = overlayConstraints;\n\n    this.position = { zIndex: 0 };\n    this.selectedHorizontalPosition = Overlay.appliedStylePositionMap.get(this.placement).horizontal;\n    this.selectedVerticalPosition = Overlay.appliedStylePositionMap.get(this.placement).vertical;\n\n    this.verticalCalculation = Overlay.setVerticalCalculation(this.placement, this.selectedVerticalPosition);\n    this.horizontalCalculation = Overlay.setHorizontalCalculation(this.placement, this.selectedHorizontalPosition);\n    this.isTriggerFixed = domInfoHelper.isFixedPosition(this.trigger);\n    this.observe();\n  }\n\n  static getFirstValidChild(element: HTMLElement, triggerIsWrappedInDiv: boolean): HTMLElement {\n    if (triggerIsWrappedInDiv)\n    {      \n      for(let i = 0; i < element.childNodes.length; i++) {\n        const childElement = element.childNodes[i] as HTMLElement;\n        if (childElement.innerHTML)\n          return childElement;\n      }\n    }\n    return element\n  }\n\n  static setVerticalCalculation(placement: Placement, position: \"top\" | \"bottom\") {\n    if (position === \"top\") {\n      switch (placement) {\n        case Placement.LeftTop:\n        case Placement.RightTop:          \n          return function(triggerTop: number, triggerHeight: number, container: domTypes.domInfo, trigger: domTypes.domInfo, overlayHeight: number, constraints: overlayConstraints) {               \n            return { \n              top: triggerTop,\n              bottom: Overlay.reversePositionValue(triggerTop, container.scrollHeight, overlayHeight) \n            };              \n          }; \n        case Placement.BottomLeft:\n        case Placement.BottomCenter:\n        case Placement.Bottom:\n        case Placement.BottomRight:\n          return function(triggerTop: number, triggerHeight: number, container: domTypes.domInfo, trigger: domTypes.domInfo, overlayHeight: number, constraints: overlayConstraints) { \n            const position: verticalPosition = {\n              top: triggerTop + triggerHeight + constraints.verticalOffset,\n            };\n            position.bottom = Overlay.reversePositionValue(position.top, container.scrollHeight, overlayHeight)\n            return position;\n          }; \n        case Placement.Left:\n        case Placement.Right:\n          return function(triggerTop: number, triggerHeight: number, container: domTypes.domInfo, trigger: domTypes.domInfo, overlayHeight: number, constraints: overlayConstraints) {     \n            const position: verticalPosition = { \n              top: triggerTop + (triggerHeight / 2) - (overlayHeight / 2)\n            };\n            position.bottom = Overlay.reversePositionValue(position.top, container.scrollHeight, overlayHeight)\n            return position;\n          }; \n      }\n    }    \n    if (position === \"bottom\") {\n      switch (placement) {\n        case Placement.TopLeft:\n        case Placement.TopCenter:\n        case Placement.Top:\n        case Placement.TopRight:\n          return function(triggerBottom: number, triggerHeight: number, container: domTypes.domInfo, trigger: domTypes.domInfo, overlayHeight: number, constraints: overlayConstraints) { \n            const position: verticalPosition = { \n              bottom: triggerBottom + triggerHeight + constraints.verticalOffset,\n            };\n            position.top = Overlay.reversePositionValue(position.bottom, container.scrollHeight, overlayHeight);\n            return position;\n          };           \n        case Placement.LeftBottom:\n        case Placement.RightBottom:\n          return function(triggerBottom: number, triggerHeight: number, container: domTypes.domInfo, trigger: domTypes.domInfo, overlayHeight: number, constraints: overlayConstraints) {  \n            const position: verticalPosition = { \n              bottom: triggerBottom,\n              top: Overlay.reversePositionValue(triggerBottom, container.scrollHeight, overlayHeight)\n            };            \n            return position;                               \n          };   \n      }\n    }\n    //fallback - should not happen, but to avoid crashing scenarios, revert to BottomLeft\n    console.log(\"Error: setVerticalCalculation did not match, nothing selected!!! Fallback.\", placement, position);\n    return Overlay.setVerticalCalculation(Placement.BottomLeft, \"top\");\n  }\n\n  static setHorizontalCalculation(placement: Placement, position: \"left\" | \"right\") {\n    if (position === \"left\") {\n      switch (placement) {\n        case Placement.TopLeft:\n        case Placement.BottomLeft:\n          return function(triggerLeft: number, triggerWidth: number, container: domTypes.domInfo, trigger: domTypes.domInfo, overlayWidth: number, constraints: overlayConstraints) {        \n            return { \n              left: triggerLeft,\n              right: Overlay.reversePositionValue(triggerLeft, container.scrollWidth, overlayWidth)\n            };              \n          }; \n        case Placement.Right:\n        case Placement.RightTop:\n        case Placement.RightBottom:\n          return function(triggerLeft: number, triggerWidth: number, container: domTypes.domInfo, trigger: domTypes.domInfo, overlayWidth: number, constraints: overlayConstraints) {        \n            const position: horizontalPosition = {\n              left: triggerLeft + triggerWidth + constraints.horizontalOffset\n            };\n            position.right = Overlay.reversePositionValue(position.left, container.scrollWidth, overlayWidth)\n            return position;\n          };\n        case Placement.TopCenter:\n        case Placement.Top:\n        case Placement.BottomCenter:\n        case Placement.Bottom:\n          return function(triggerLeft: number, triggerWidth: number, container: domTypes.domInfo, trigger: domTypes.domInfo, overlayWidth: number, constraints: overlayConstraints) {        \n            const position: horizontalPosition = {\n              left: triggerLeft + (triggerWidth / 2) - (overlayWidth / 2)\n            };\n            position.right = Overlay.reversePositionValue(position.left, container.scrollWidth, overlayWidth)\n            return position;\n          };\n      }\n    }\n    if (position === \"right\") {\n      switch (placement) {\n        case Placement.TopRight:\n        case Placement.BottomRight:\n          return function(triggerRight: number, triggerWidth: number, container: domTypes.domInfo, trigger: domTypes.domInfo, overlayWidth: number, constraints: overlayConstraints) {        \n            let position: horizontalPosition = {\n              right: triggerRight,\n              left: Overlay.reversePositionValue(triggerRight, container.scrollWidth, overlayWidth)\n            };            \n            return position;\n          };\n        case Placement.Left:\n        case Placement.LeftTop:\n        case Placement.LeftBottom:\n          return function(triggerRight: number, triggerWidth: number, container: domTypes.domInfo, trigger: domTypes.domInfo, overlayWidth: number, constraints: overlayConstraints) {\n            const position: horizontalPosition = {\n              right: triggerRight + triggerWidth + constraints.horizontalOffset\n            };\n            position.left = Overlay.reversePositionValue(position.right, container.scrollWidth, overlayWidth)\n            return position;\n          };          \n      }      \n    }\n    //fallback - should not happen, but to avoid crashing scenarios, revert to BottomLeft\n    console.log(\"Error: setHorizontalCalculation did not match, nothing selected!!! Fallback.\", placement, position);\n    return Overlay.setVerticalCalculation(Placement.BottomLeft, \"top\");    \n  }\n\n  /**\n   * Calculates reversed position. So for given left will return right,\n   * for top => bottom, etc.\n   * @param the value that needs to be reversed (left in scenario: left => right)\n   * @param for horizontal (left, right) container width & for vertical (top, bottom) container height\n   * @param for horizontal (left, right) overlay width & for vertical (top, bottom) overlay height\n   * @returns number\n   */\n  static reversePositionValue(position: number, containerDimension: number, overlayDimension: number) {    \n    return containerDimension - position - overlayDimension;\n  }\n\n  private removeHiddenClass() {    \n    let end = this.overlay.className.indexOf(\"-hidden\");\n    let start = this.overlay.className.lastIndexOf(\" \", end)\n    if (start >= 0) {\n      let className = this.overlay.className.substr(start + 1, end);\n      if (className !== \"\") {\n        this.overlay.classList.remove(className);\n      }\n    }\n  }\n\n  private calculateScrollBarSizes() {\n    if (this.isContainerBody) {\n      this.scrollbarSize = { \n        horizontalHeight: window.innerHeight - document.documentElement.clientHeight,\n        verticalWidth: window.innerWidth - document.documentElement.clientWidth\n      }\n    } \n    else {\n      this.scrollbarSize = { \n        horizontalHeight: this.container.offsetHeight - this.container.clientHeight, \n        verticalWidth: this.container.offsetWidth - this.container.clientWidth \n      }\n    }\n  }\n\n  private observe() {\n    resize.create(`container-${this.blazorId}`, this.resizing.bind(this), false);\n    resize.observe(`container-${this.blazorId}`, this.container);    \n    resize.observe(`container-${this.blazorId}`, this.trigger);    \n    mutation.create(`trigger-${this.blazorId}`, this.mutating.bind(this), false);\n    mutation.observe(`trigger-${this.blazorId}`, this.trigger, {\n      attributes: true,\n      characterData: false,\n      childList: false,\n      subtree: false,\n      attributeOldValue: false,\n      characterDataOldValue: false\n    });\n    \n    if (this.isContainerBody) {\n      window.addEventListener(\"scroll\", this.onScroll.bind(this));\n    }\n    else {\n      this.container.addEventListener(\"scroll\", this.onScroll.bind(this));\n    }\n  }  \n\n  private onScroll() {\n    if (this.isTriggerFixed) {\n      if (this.lastScrollPosition !== window.pageYOffset) {      \n        const diff = window.pageYOffset - this.lastScrollPosition; //positive -> down, negative -> up        \n        this.position.top += diff;\n        this.position.bottom = Overlay.reversePositionValue(this.position.top, this.containerInfo.scrollHeight, this.overlayInfo.clientHeight);      \n        if (this.selectedVerticalPosition === \"top\") {        \n          this.sanitizedPosition.top = this.position.top;\n          this.overlay.style.top = this.sanitizedPosition.top + \"px\";        \n        } else {\n          this.sanitizedPosition.bottom = this.getAdjustedBottom();\n          this.overlay.style.bottom = this.sanitizedPosition.bottom + \"px\";\n        }\n        this.lastScrollPosition = window.pageYOffset;\n      }\n    } else {\n      //Commented out code is a non-optimized calculation only if overlay stops fitting during scroll\n      //It misses active check for initialPlacement being different to current placement\n      // this.getKeyElementDimensions(false);\n      // this.containerBoundarySize = this.getContainerBoundarySize();\n      // if (!this.overlayFitsContainer(\"horizontal\", this.position.left, this.position.right)\n      //   || !this.overlayFitsContainer(\"vertical\", this.position.top, this.position.bottom)) {    \n      //     this.calculatePosition(true, false, this.overlayPreset)\n      // }    \n      this.calculatePosition(true, false, this.overlayPreset);\n    }\n  }\n\n  private resizing(entries, observer) {\n    //prevents from recalculation right on the spot during constructor run\n    if (this.duringInit) { \n      this.duringInit = false;\n      return;\n    }\n    this.calculatePosition(true, false, this.overlayPreset);\n  }\n\n  private lastStyleMutation = \"\";\n\n  /**\n   * Mutation observer will fire whenever trigger style changes. This is first and foremost\n   * to monitor position/size changes, so overlay can adjust itself to the new position.\n   * @param mutations \n   * @returns \n   */\n  private mutating(mutations) {\n    if (this.duringInit) { \n      this.duringInit = false;\n      return;\n    }    \n    if (this.lastStyleMutation !== this.trigger.style.cssText) {\n      this.lastStyleMutation = this.trigger.style.cssText;\n      this.calculatePosition(true, false, this.overlayPreset);\n    }\n    \n  }\n\n  public dispose(): void {    \n    resize.dispose(`container-${this.blazorId}`);\n    mutation.dispose(`trigger-${this.blazorId}`);\n    if (this.container.contains(this.overlay)) {\n      this.container.removeChild(this.overlay);\n    }\n\n    if (this.isContainerBody) {      \n      window.removeEventListener(\"scroll\", this.onScroll);\n    }\n    else {\n      this.container.removeEventListener(\"scroll\", this.onScroll);\n    }\n  }\n\n  public calculatePosition(applyLocation: boolean, firstTime = false, overlayPreset?: domTypes.position): overlayPosition {        \n    //check if hidden, if yes, no need to recalculate (only if not first time)\n    if (!firstTime && !this.overlay.offsetParent) {      \n      return;\n    }\n    //trigger no longer visible, hide\n    if (!overlayPreset && !this.trigger.offsetParent) {      \n      if (!this.overlay.classList.contains(this.triggerPrefixCls + \"-hidden\")) {\n        this.overlay.classList.add(this.triggerPrefixCls + \"-hidden\");\n      }\n      return this.position;\n    }\n    this.lastScrollPosition = window.pageYOffset;\n    this.recentPlacement = this.placement;\n    this.overlayPreset = overlayPreset;\n\n    this.getKeyElementDimensions(firstTime);\n\n    this.restoreInitialPlacement();\n\n    //add a very basic check - if overlay width exceeds container width, left defaults to 0     \n    this.calculationsToPerform = this.getNominalPositions();\n    if (this.calculationsToPerform.size > 0) {\n      this.adjustToContainerBoundaries();\n    }\n\n    this.sanitizeCalculatedPositions();    \n    //first positioning is applied by blazor - without it, a flicker is visible\n    if (applyLocation) {\n      this.applyLocation();\n    }    \n    return this.sanitizedPosition;\n  }\n\n  /**\n   * All variants of positions are stored during calculations, but only key positions are \n   * returned (so only left or right and only top or bottom).\n   * Also, bottom & right positions need to be recalculated, due to the fact that during \n   * calculations:\n   *  - bottom is represented as a value counting from top \n   *  - right is represented as a value counting from left\n   * Browsers use different reference for bottom & right.\n   */\n  private sanitizeCalculatedPositions() {\n    this.sanitizedPosition = { ...this.position};\n    this.sanitizedPosition.zIndex = domInfoHelper.getMaxZIndex();\n    this.sanitizedPosition.placement = this.placement;    \n    if (this.selectedHorizontalPosition === \"left\") {\n      this.sanitizedPosition.right = null;\n    }\n    else {\n      this.sanitizedPosition.left = null;\n      this.sanitizedPosition.right = this.getAdjustedRight();\n    }\n\n    if (this.selectedVerticalPosition === \"top\") {\n      this.sanitizedPosition.bottom = null;\n    }\n    else {\n      this.sanitizedPosition.top = null;\n      this.sanitizedPosition.bottom = this.getAdjustedBottom();\n    }\n  }\n\n  /**\n   * Gets first calculations of the overlay. For each direction, there is a single scenario\n   * when it is immediately known that no further calculation is needed:\n   * - for vertical direction - when overlay's height is larger than container vertical boundaries\n   * - for vertical direction - when overlay's width is larger than container horizontal boundaries\n   * These scenarios are ignored, when boundyAdjustMode === TriggerBoundyAdjustMode.None\n   * @returns collection containing directions that will be calculable (not final)\n   */\n  private getNominalPositions(): Set<\"horizontal\"|\"vertical\"> {\n    this.containerBoundarySize = this.getContainerBoundarySize();\n    const height = this.containerBoundarySize.bottom - this.containerBoundarySize.top;\n    const width = this.containerBoundarySize.right - this.containerBoundarySize.left;\n    const directionsToCalculate = new Set<\"horizontal\"|\"vertical\">();\n\n    if (this.boundyAdjustMode != TriggerBoundyAdjustMode.None && width < this.overlayInfo.clientWidth && this.isContainerBody) {\n      if (this.selectedHorizontalPosition === \"left\") {\n        this.position.left = 0;\n      } else {\n        this.position.right = 0;\n      }\n    } else {\n      const horizontalPosition = this.getHorizontalPosition();\n      this.position.left = horizontalPosition.left;\n      this.position.right = horizontalPosition.right;\n      directionsToCalculate.add(\"horizontal\");\n    }\n    //same for height exceeding container height - top defaults to 0   \n    if (this.boundyAdjustMode != TriggerBoundyAdjustMode.None && height < this.overlayInfo.clientHeight && this.isContainerBody) {      \n      if (this.selectedVerticalPosition === \"top\") {\n        this.position.top = 0;\n      } else {\n        this.position.bottom = 0;\n      }\n    } else {\n      \n      const verticalPosition = this.getVerticalPosition();\n      this.position.top = verticalPosition.top;\n      this.position.bottom = verticalPosition.bottom;      \n      directionsToCalculate.add(\"vertical\");\n    }\n    return directionsToCalculate;\n  }\n\n  /**\n   * Restore initial placement (and following connected variables & functions) on calculation.\n   * This never kicks in on first calculation. This is done because the overlay should always\n   * try to position itself to the initial placement. So on every recalculation initial settings\n   * (used during object creation) are reloaded.\n   */\n  private restoreInitialPlacement() {\n    if (this.placement !== this.initialPlacement) {\n      this.placement = this.initialPlacement;\n      this.selectedHorizontalPosition = Overlay.appliedStylePositionMap.get(this.placement).horizontal;\n      this.selectedVerticalPosition = Overlay.appliedStylePositionMap.get(this.placement).vertical;\n      this.verticalCalculation = Overlay.setVerticalCalculation(this.placement, this.selectedVerticalPosition);\n      this.horizontalCalculation = Overlay.setHorizontalCalculation(this.placement, this.selectedHorizontalPosition);\n    }\n  }\n\n  /**\n   * Very basic logging, useful during debugging.\n   * @param extraMessage \n   */\n  /* istanbul ignore next */\n  private logToConsole(extraMessage = \"\") {\n    console.log(extraMessage + \" Overlay position:\", this.position,\n      \"Input\",\n      { \n        blazorId: this.blazorId,        \n        container: {\n          info: this.containerInfo,\n          parentInfo: {\n            clientHeight: this.container.parentElement.clientHeight,\n            clientWidth: this.container.parentElement.clientWidth,\n            scrollLeft: this.container.parentElement.scrollLeft,\n            scrollTop: this.container.parentElement.scrollTop\n          },\n          containerId: this.container.id,        \n          containerBoundarySize: this.containerBoundarySize,\n        },\n        trigger: { \n          absoluteTop: this.triggerInfo.absoluteTop,\n          absoluteLeft: this.triggerInfo.absoluteLeft,\n          clientHeight: this.triggerInfo.clientHeight,\n          clientWidth: this.triggerInfo.clientWidth,\n          offsetHeight: this.triggerInfo.offsetHeight,\n          offsetWidth: this.triggerInfo.offsetWidth,\n          boundyAdjustMode: this.boundyAdjustMode,\n          //triggerType: this.triggerType,\n          triggerHtml: this.trigger.outerHTML,\n          triggerPrefixCls: this.triggerPrefixCls\n        },\n        overlay: { \n          clientHeight: this.overlayInfo.clientHeight,\n          clientWidth: this.overlayInfo.clientWidth,\n          offsetHeight: this.overlayInfo.offsetHeight,\n          offsetWidth: this.overlayInfo.offsetWidth,\n          class: this.overlay.className,\n          appliedCssPosition: {\n            overlay_style_top: this.overlay.style.top,\n            overlay_style_bottom: this.overlay.style.bottom,\n            overlay_style_left: this.overlay.style.left,\n            overlay_style_right: this.overlay.style.right\n          }\n        },\n        window: {\n          innerHeight: window.innerHeight,\n          innerWidth: window.innerWidth,\n          pageXOffset: window.pageXOffset,\n          pageYOffset: window.pageYOffset,\n        },        \n        documentElement: {\n          clientHeight: document.documentElement.clientHeight,\n          clientWidth: document.documentElement.clientWidth,\n          containerIsBody: this.isContainerBody,\n        },\n        scrollbars: this.scrollbarSize,\n        overlayPreset: this.overlayPreset,\n        overlayConstraints: this.overlayConstraints,\n        position: this.position,           \n        sanitizedPosition: this.sanitizedPosition,\n        placment: {\n         initialPlacement: this.initialPlacement,\n         recentPlacement: this.recentPlacement,\n         placement: this.placement,\n         selectedHorizontalPosition: this.selectedHorizontalPosition,\n         selectedVerticalPosition: this.selectedVerticalPosition\n        }\n      }\n    );    \n  }\n\n  /**\n   * Right in the class is calculated with assumption that it is just reversed Left. \n   * This works well for containers that are not body. When in body, then different Right \n   * calculation is executed. Example:\n   * In a document of width of 5000px, the first Left = 0 and the first Right = 0 as well \n   * (and respectively, max Left = 5000 and max Right = 5000). However, browsers are behaving \n   * differently. Left indeed is 0 until the document width (5000). Right however is different. \n   * Right = 0 means the point of original viewport most Right. So, if you viewport is 1000px \n   * wide, Right = 0 will mean same as Left = 1000. So to reach Left = 5000, Right has to \n   * be equal to -4000. \n   * @returns number - right position\n   */\n  private getAdjustedRight(): number {    \n    if (this.isContainerBody) {\n      return this.position.right - (this.containerInfo.scrollWidth - window.innerWidth)\n        - this.scrollbarSize.verticalWidth;\n    }\n    return this.position.right;    \n  }\n\n  /**\n   * Bottom in the class is calculated with assumption that it is just reversed Top. \n   * This works well for containers that are not body. When in body, then different Bottom\n   * calculation is executed. Example:\n   * In a document of height of 5000px, the first Top = 0 and the first Bottom = 0 as well \n   * (and respectively, max Top = 5000 and max Bottom = 5000). However, browsers are behaving \n   * differently. Top indeed is 0 until the document height (5000). Bottom however is different. \n   * Bottom = 0 means the point of original viewport most bottom. So, if you viewport is 1000px \n   * in height, Bottom = 0 will mean same as Top = 1000. So to reach Top = 5000, Bottom has to \n   * be equal to -4000. \n   * @returns number - bottom position\n   */\n  private getAdjustedBottom(): number {    \n    if (this.isContainerBody) {\n      return this.position.bottom - (this.containerInfo.scrollHeight - window.innerHeight)\n        - this.scrollbarSize.horizontalHeight;\n    }\n    return this.position.bottom;\n  }\n\n  private applyLocation() {\n    if (this.selectedHorizontalPosition === \"left\") {\n      this.overlay.style.left = this.sanitizedPosition.left + \"px\";\n      this.overlay.style.right = \"unset\";\n    } else {\n      this.overlay.style.right = this.sanitizedPosition.right + \"px\";\n      this.overlay.style.left = \"unset\";\n    }\n\n    if (this.selectedVerticalPosition === \"top\") {\n      this.overlay.style.top = this.sanitizedPosition.top + \"px\";\n      this.overlay.style.bottom = \"unset\";\n    } else {\n      this.overlay.style.bottom = this.sanitizedPosition.bottom + \"px\";\n      this.overlay.style.top = \"unset\";\n    }\n\n    this.applyPlacement();\n  }\n\n  private applyPlacement() {\n    if (this.recentPlacement !== this.placement) {\n      let currentPlacement: string;\n      const stringMach = `${this.triggerPrefixCls}-placement-`;\n      const start = this.overlay.className.indexOf(stringMach);\n      const end = this.overlay.className.indexOf(\" \", start + stringMach.length);\n      if (start >= 0) {\n        currentPlacement = this.overlay.className.substr(start, end-start);\n      } else {\n        currentPlacement = Overlay.appliedStylePositionMap.get(this.initialPlacement).class;\n      }\n      let newPlacement = stringMach + Overlay.appliedStylePositionMap.get(this.placement).class;\n      this.overlay.classList.replace(currentPlacement, newPlacement);\n    }\n  }\n\n  /**\n   * Loads all important dimensions of the key elements (container of the trigger, trigger & overlay)\n   * into domType.domInfo structures. This could be accessed directly, except absolute positions.\n   * Also simplifies mocking.\n   * @param firstTime - if this method is called first time, then no need to load information on\n   *  container, as it was already loaded in the constructor. This is due to the fact that first time,\n   *  when overlay is added it has default left set to -9999 which causes the scrollbars to \n   * appear (which will be gone by the time overlay becomes visible). Scrollbars change\n   *  dimensions, so often calculations were incorrect.\n   */\n  private getKeyElementDimensions(firstTime: boolean) {\n    if (!firstTime) {\n      this.containerInfo = domInfoHelper.getInfo(this.container);\n      this.calculateScrollBarSizes()\n    }    \n    this.triggerInfo = domInfoHelper.getInfo(this.trigger);\n    this.overlayInfo = domInfoHelper.getInfo(this.overlay);    \n  }\n\n  /**\n   * Calculates trigger top & bottom positions and trigger height and\n   * uses these to return nominal position values depending on placement and\n   * expected attachment point (top/bottom)\n   * @returns verticalPosition\n   */\n  private getVerticalPosition(): verticalPosition {\n    let position: verticalPosition;\n    //usually first offsetHeight is taken, as the measurement contains the borders\n    this.triggerPosition.height = this.triggerInfo.offsetHeight != 0 ? this.triggerInfo.offsetHeight \n    : this.triggerInfo.clientHeight;    \n    if (this.overlayPreset) {\n      this.triggerPosition.top = this.triggerInfo.absoluteTop + this.overlayPreset.y;\n      this.triggerPosition.height = 0;\n    } else {\n      this.triggerPosition.top = this.containerInfo.scrollTop + this.triggerInfo.absoluteTop\n        - this.containerInfo.absoluteTop - this.containerInfo.clientTop;\n    }\n    this.triggerPosition.absoluteTop = this.triggerInfo.absoluteTop;\n\n    if (this.selectedVerticalPosition === \"top\"){\n      position = this.verticalCalculation(this.triggerPosition.top, this.triggerPosition.height, this.containerInfo,\n        this.triggerInfo, this.overlayInfo.clientHeight, this.overlayConstraints);\n    }\n    else { //bottom\n      this.triggerPosition.bottom = this.containerInfo.scrollHeight - this.triggerPosition.top - this.triggerPosition.height;\n      position = this.verticalCalculation(this.triggerPosition.bottom, this.triggerPosition.height, this.containerInfo,\n        this.triggerInfo, this.overlayInfo.clientHeight, this.overlayConstraints);\n    }\n    return position;\n  }\n\n  /**\n   * Calculates trigger left & right positions and trigger width and\n   * uses these to return nominal position values depending on placement and\n   * expected attachment point (left/right)\n   * @returns verticalPosition\n   */\n  private getHorizontalPosition(): horizontalPosition {\n    let position: horizontalPosition;\n    //usually first offsetHeight is taken, as the measurement contains the borders    \n    this.triggerPosition.width = this.triggerInfo.offsetWidth != 0 ? this.triggerInfo.offsetWidth : this.triggerInfo.clientWidth;\n    \n    //let triggerLeft: number;\n    if (this.overlayPreset) {\n      this.triggerPosition.left = this.triggerInfo.absoluteLeft + this.overlayPreset.x;\n      this.triggerPosition.width = 0;\n    } else {\n      this.triggerPosition.left = this.containerInfo.scrollLeft + this.triggerInfo.absoluteLeft\n        - this.containerInfo.absoluteLeft - this.containerInfo.clientLeft;\n    }\n    this.triggerPosition.absoluteLeft = this.triggerInfo.absoluteLeft;\n\n    if (this.selectedHorizontalPosition === \"left\"){      \n      position = this.horizontalCalculation(this.triggerPosition.left, this.triggerPosition.width, this.containerInfo,\n        this.triggerInfo, this.overlayInfo.clientWidth, this.overlayConstraints);\n    }\n    else { //right\n      this.triggerPosition.right = this.containerInfo.scrollWidth - this.triggerPosition.left - this.triggerPosition.width;\n      position = this.horizontalCalculation(this.triggerPosition.right, this.triggerPosition.width, this.containerInfo,\n        this.triggerInfo, this.overlayInfo.clientWidth, this.overlayConstraints);\n    }\n    return position;    \n  }\n\n  /**\n   * Responsible for calling logic that handles situation when calculated overlay position\n   * is causing overlay to be partially rendered invisible. The goal is to adjust placement \n   * in such a way, so the overlay is fully visible.\n   * @returns void\n   */\n  private adjustToContainerBoundaries() {\n    if (this.boundyAdjustMode === TriggerBoundyAdjustMode.None) {\n      return;\n    }    \n\n    if (this.calculationsToPerform.has(\"vertical\")) {\n      this.adjustVerticalToContainerBoundaries();\n    }\n\n    if (this.calculationsToPerform.has(\"horizontal\")) {\n      this.adjustHorizontalToContainerBoundaries();\n    }\n  }\n\n  private setBodyBoundayrSize() {\n      const window = domInfoHelper.getWindow();      \n      const scroll = domInfoHelper.getScroll();\n      this.bodyBoundarySize = {\n        top : scroll.y,\n        left: scroll.x,\n        right: window.innerWidth + scroll.x,\n        bottom: window.innerHeight + scroll.y\n      };     \n  }\n\n  /**\n   * Retrieves information on current logical viewport (visible area). For \n   * InView this means actual viewport area (what you see in the browser - either the \n   * body or the scrolled to area in a container) or for InScroll this means total\n   * area of the container (or body).\n   * @returns coordinates - absolute values measuring from top = 0 and left = 0 (first \n   * pixels of the container)\n   */\n  private getContainerBoundarySize(): coordinates {    \n    if (this.boundyAdjustMode === TriggerBoundyAdjustMode.InScroll) {      \n      if (!this.isContainerBody) {\n        this.setBodyBoundayrSize();\n      }\n      return { \n          left: 0,\n          right: this.containerInfo.scrollWidth,\n          top: 0,\n          bottom: this.containerInfo.scrollHeight\n        };\n    }        \n    this.setBodyBoundayrSize();\n\n    if (this.isContainerBody) {       \n      return this.bodyBoundarySize;\n    } else {         \n      //special care is needed when evaluating viewport of the container\n      const parentIsInsignificant = this.container.parentElement.clientHeight === 0\n        || this.container.parentElement.clientWidth === 0;\n      const verticalScrollBasedOnParent = !parentIsInsignificant\n        && this.container.parentElement.clientHeight < this.containerInfo.clientHeight;\n      const horizontalScrollBasedOnParent = !parentIsInsignificant\n        && this.container.parentElement.clientWidth < this.containerInfo.clientWidth;\n\n      let clientHeight: number;\n      let clientWidth: number;\n      let scrollTop: number;\n      let scrollLeft: number;\n\n      if (verticalScrollBasedOnParent) {\n        clientHeight = this.container.parentElement.clientHeight;\n        scrollTop = this.container.parentElement.scrollTop;\n      } else {\n        clientHeight = this.containerInfo.clientHeight;\n        scrollTop = this.containerInfo.scrollTop;\n      }\n\n      if (horizontalScrollBasedOnParent) {\n        clientWidth = this.container.parentElement.clientWidth;clientWidth;\n        scrollLeft = this.container.parentElement.scrollLeft;\n      } else {\n        clientWidth = this.containerInfo.clientWidth;\n        scrollLeft = this.containerInfo.scrollLeft;\n      }\n          \n      return { \n        top : scrollTop,\n        bottom: scrollTop + clientHeight,\n        left: scrollLeft,\n        right: scrollLeft + clientWidth\n      };                \n    }  \n  }\n\n  /**\n   * Returns how much height of the overlay is visible in current viewport \n   */\n  private getOverlayVisibleHeight(visibleIn: \"container\" | \"body\"): number {\n    let boundary: coordinates;\n    let top: number;    \n    if (visibleIn === \"container\") {\n      boundary = this.containerBoundarySize;\n      top = this.triggerPosition.top;\n    } else {\n      boundary = this.bodyBoundarySize;\n      top = this.triggerPosition.absoluteTop;\n    }\n\n    if (this.selectedVerticalPosition === \"top\") {\n      return boundary.bottom - (top + this.triggerPosition.height);\n    } else {\n      return top - boundary.top;\n    }    \n  }\n\n  /**\n   * Returns how much width of the overlay is visible in current viewport \n   */\n  private getOverlayVisibleWidth(visibleIn: \"container\" | \"body\"): number {    \n    let boundary: coordinates;\n    let left: number;    \n    if (visibleIn === \"container\") {\n      boundary = this.containerBoundarySize;\n      left = this.triggerPosition.left;\n    } else {\n      boundary = this.bodyBoundarySize;\n      left = this.triggerPosition.absoluteLeft;\n    }\n\n    if (this.selectedHorizontalPosition === \"left\") {\n      return boundary.right - (left + this.triggerPosition.width);\n    } else {\n      return left - boundary.left;\n    }\n  }\n\n  /**\n   * Checks if current position actually fits in the container and if not, then reverses\n   * the placement. Then calculates which already calculated placements has the largest horizontal \n   * area of the overlay visible and picks the calculation with largest area.\n   */\n  private adjustHorizontalToContainerBoundaries() {\n    if (!this.overlayFitsContainer(\"horizontal\", this.position.left, this.position.right)) {\n      const positionCache: overlayPosition = { ...this.position };\n      const selectedPositionCache = this.selectedHorizontalPosition;\n      const placementCache = this.placement;\n      const horizontalCalculationCache = this.horizontalCalculation;\n      const visibleWidthBeforeAdjustment = this.getOverlayVisibleWidth(\"container\");\n      let visibleWidthInBodyBeforeAdjustment: number;\n      if (this.isContainerOverBody) {\n        visibleWidthInBodyBeforeAdjustment = this.getOverlayVisibleWidth(\"body\");\n      } else {\n        visibleWidthInBodyBeforeAdjustment = visibleWidthBeforeAdjustment\n      };      \n\n      this.getHorizontalAdjustment();\n\n      const visibleWidthAfterAdjustment = this.getOverlayVisibleWidth(\"container\");\n      let visibleWidthInBodyAfterAdjustment: number;\n      if (this.isContainerOverBody) {\n        visibleWidthInBodyAfterAdjustment = this.getOverlayVisibleWidth(\"body\");\n      } else {\n        visibleWidthInBodyAfterAdjustment = visibleWidthAfterAdjustment\n      };        \n\n      if (\n        !(visibleWidthInBodyBeforeAdjustment < visibleWidthInBodyAfterAdjustment \n          && visibleWidthInBodyAfterAdjustment > 0\n          && visibleWidthInBodyAfterAdjustment - visibleWidthInBodyBeforeAdjustment >= 0)        \n        ||\n        !(visibleWidthBeforeAdjustment < visibleWidthAfterAdjustment && visibleWidthAfterAdjustment > 0)) {        \n        this.position = positionCache;\n        this.selectedHorizontalPosition = selectedPositionCache;\n        this.placement = placementCache;\n        this.horizontalCalculation = horizontalCalculationCache;\n      }\n    }\n  }\n\n  /**\n   * Checks if current position actually fits in the container and if not, then reverses\n   * the placement. Then calculates which already calculated placements has the largest vertical \n   * area of the overlay visible and picks the calculation with largest area.\n   */\n  private adjustVerticalToContainerBoundaries() {\n    if (!this.overlayFitsContainer(\"vertical\", this.position.top, this.position.bottom)) {\n      const positionCache: overlayPosition = { ...this.position };\n      const selectedPositionCache = this.selectedVerticalPosition;\n      const placementCache = this.placement;\n      const verticalCalculationCache = this.verticalCalculation;\n      const visibleHeightBeforeAdjustment = this.getOverlayVisibleHeight(\"container\");\n      let visibleHeightInBodyBeforeAdjustment: number;\n      if (this.isContainerOverBody) {\n        visibleHeightInBodyBeforeAdjustment = this.getOverlayVisibleHeight(\"body\");\n      } else {\n        visibleHeightInBodyBeforeAdjustment = visibleHeightBeforeAdjustment\n      };\n\n      this.getVerticalAdjustment();      \n\n      const visibleHeightAfterAdjustment = this.getOverlayVisibleHeight(\"container\");\n      let visibleHeightInBodyAfterAdjustment: number;\n      if (this.isContainerOverBody) {\n        visibleHeightInBodyAfterAdjustment = this.getOverlayVisibleHeight(\"body\");\n      } else {\n        visibleHeightInBodyAfterAdjustment = visibleHeightAfterAdjustment\n      };          \n\n      if (\n        !(visibleHeightInBodyBeforeAdjustment < visibleHeightInBodyAfterAdjustment \n          && visibleHeightInBodyAfterAdjustment > 0 \n          && visibleHeightInBodyAfterAdjustment - visibleHeightInBodyBeforeAdjustment >= 0)\n        ||\n        !(visibleHeightBeforeAdjustment < visibleHeightAfterAdjustment && visibleHeightAfterAdjustment > 0)) {        \n        this.position = positionCache;\n        this.selectedVerticalPosition = selectedPositionCache;\n        this.placement = placementCache;\n        this.verticalCalculation = verticalCalculationCache;\n      }\n    }\n  }\n\n  private overlayFitsContainer(type: \"horizontal\" | \"vertical\", start: number, end: number): boolean {    \n    if (type === \"horizontal\") {\n      const endExpressedAsLeft = start + this.overlayInfo.clientWidth;\n      return this.containerBoundarySize.left <= start\n          && start <= this.containerBoundarySize.right //overlay left is between container left and right\n          && this.containerBoundarySize.left <= endExpressedAsLeft\n          && endExpressedAsLeft <= this.containerBoundarySize.right //and overlay right is between container left and right\n    }\n    const endExpressedAsTop = start + this.overlayInfo.clientHeight;\n    return this.containerBoundarySize.top <= start\n        && start <= this.containerBoundarySize.bottom //overlay top is between container top and bottom\n        && this.containerBoundarySize.top <= endExpressedAsTop \n        && endExpressedAsTop <= this.containerBoundarySize.bottom //and overlay bottom is between container top and bottom\n  }\n\n  /**\n   * Applies basic adjustment - switches verticaly placement (top -> bottom & bottom -> top) \n   * and recalculates based on the newly set placement \n   */\n  private getVerticalAdjustment() {\n    this.placement = Overlay.reverseVerticalPlacementMap.get(this.placement)(this.selectedVerticalPosition);\n    this.selectedVerticalPosition = Overlay.appliedStylePositionMap.get(this.placement).vertical;\n    this.verticalCalculation = Overlay.setVerticalCalculation(this.placement, this.selectedVerticalPosition);\n    const verticalPosition = this.getVerticalPosition();\n    this.position.top = verticalPosition.top;\n    this.position.bottom = verticalPosition.bottom;\n  }\n\n  /**\n   * Applies basic adjustment - switches horizontal placement (left -> right & right -> left)\n   * and recalculates based on the newly set placement\n   */\n  private getHorizontalAdjustment() {\n    this.placement = Overlay.reverseHorizontalPlacementMap.get(this.placement)(this.selectedHorizontalPosition);\n    this.selectedHorizontalPosition = Overlay.appliedStylePositionMap.get(this.placement).horizontal;\n    this.horizontalCalculation = Overlay.setHorizontalCalculation(this.placement, this.selectedHorizontalPosition);\n    const horizontalPosition = this.getHorizontalPosition();\n    this.position.left = horizontalPosition.left;\n    this.position.right = horizontalPosition.right;    \n  }  \n}","import { domInfoHelper, eventHelper, domManipulationHelper, domTypes } from '../dom/exports'\nimport { Placement, TriggerBoundyAdjustMode, overlayConstraints, overlayPosition, Overlay } from './overlay'\nimport { state } from '../stateProvider';\n\nexport class overlayHelper {\n  static overlayRegistry: { [key: string]: Overlay} = {};\n\n  static addOverlayToContainer(blazorId: string, \n    overlaySelector, triggerSelector, placement: Placement,  containerSelector: string,\n    triggerBoundyAdjustMode: TriggerBoundyAdjustMode, triggerIsWrappedInDiv: boolean, triggerPrefixCls: string,\n    verticalOffset: number, horizontalOffset: number, arrowPointAtCenter: boolean,    \n    overlayTop?: number, overlayLeft?: number\n  ): overlayPosition {      \n    const overlayElement = domInfoHelper.get(overlaySelector) as HTMLDivElement;    \n    const containerElement = domInfoHelper.get(containerSelector) as HTMLElement;\n    const triggerElement = domInfoHelper.get(triggerSelector) as HTMLElement;    \n\n    if (!domManipulationHelper.addElementTo(overlaySelector, containerElement)) {\n      console.log(\"Failed to add overlay. Details:\", {\n         triggerPrefixCls: triggerPrefixCls,\n         overlaySelector: overlaySelector,\n         containerElement: containerElement\n      } );\n      return null;\n    }    \n\n    let overlayPresets: domTypes.position;\n    if (overlayTop || overlayLeft) {\n      overlayPresets = { x: overlayLeft, y: overlayTop };\n    }\n\n    const overlayConstraints: overlayConstraints = {\n      verticalOffset: verticalOffset,\n      horizontalOffset: horizontalOffset,\n      arrowPointAtCenter: arrowPointAtCenter\n    };\n\n    const overlay = new Overlay(blazorId, overlayElement, containerElement, triggerElement, placement, triggerBoundyAdjustMode, triggerIsWrappedInDiv, triggerPrefixCls, overlayConstraints);   \n    //register object in store, so it can be retrieved during update/dispose\n    this.overlayRegistry[blazorId] = overlay;\n    \n    return overlay.calculatePosition(false, true, overlayPresets);\n  }\n\n\n  static updateOverlayPosition(blazorId: string, overlaySelector, triggerSelector, placement: Placement,  containerSelector: string,\n    triggerBoundyAdjustMode: TriggerBoundyAdjustMode, triggerIsWrappedInDiv: boolean, triggerPrefixCls: string,\n    verticalOffset: number, horizontalOffset: number, arrowPointAtCenter: boolean,  \n    overlayTop?: number, overlayLeft?: number): overlayPosition {\n    const overlay = this.overlayRegistry[blazorId];\n    if (overlay){\n      let overlayPresets: domTypes.position;\n        if (overlayTop || overlayLeft) {\n          overlayPresets = { x: overlayLeft, y: overlayTop };\n        }      \n      return overlay.calculatePosition(false, false, overlayPresets);      \n    } else {\n      //When page is slow, it may happen that rendering of an overlay may not happen, even if \n      //blazor thinks it did happen. In such a case, when overlay object is not found, just try\n      //to render it again.\n      return overlayHelper.addOverlayToContainer(blazorId, overlaySelector, triggerSelector, placement,  containerSelector,triggerBoundyAdjustMode, triggerIsWrappedInDiv, triggerPrefixCls, \n      verticalOffset, horizontalOffset, arrowPointAtCenter,  \n      overlayTop, overlayLeft);      \n    }    \n  }\n\n  static deleteOverlayFromContainer(blazorId: string) {\n    const overlay = this.overlayRegistry[blazorId];\n    if (overlay) {      \n      overlay.dispose();\n      delete this.overlayRegistry[blazorId];\n    }\n  }\n\n  static addPreventEnterOnOverlayVisible(element, overlayElement) {\n    if (element && overlayElement) {\n      const dom: HTMLElement = domInfoHelper.get(element);\n      if (dom) {\n        state.eventCallbackRegistry[element.id + \"keydown:Enter\"] = (e) => eventHelper.preventKeyOnCondition(e, \"enter\", () => overlayElement.offsetParent !== null);\n        dom.addEventListener(\"keydown\", state.eventCallbackRegistry[element.id + \"keydown:Enter\"], false);\n      }\n    }\n  }\n\n  static removePreventEnterOnOverlayVisible(element) {\n    if (element) {\n      const dom: HTMLElement = domInfoHelper.get(element);\n      if (dom) {\n        dom.removeEventListener(\"keydown\", state.eventCallbackRegistry[element.id + \"keydown:Enter\"]);\n        state.eventCallbackRegistry[element.id + \"keydown:Enter\"] = null; \n      }\n    }\n  }\n}\n\n","export class tableHelper {\n  static bindTableScroll(bodyRef, tableRef, headerRef, scrollX, scrollY) {\n    bodyRef.bindScroll = () => {\n      if (scrollX) {\n        tableHelper.SetScrollPositionClassName(bodyRef, tableRef);\n      }\n      if (scrollY) {\n        headerRef.scrollLeft = bodyRef.scrollLeft;\n      }\n    }\n    bodyRef.bindScroll();\n    bodyRef.addEventListener('scroll', bodyRef.bindScroll);\n    window.addEventListener('resize', bodyRef.bindScroll);\n  }\n\n  static unbindTableScroll(bodyRef) {\n    if (bodyRef) {\n      bodyRef.removeEventListener('scroll', bodyRef.bindScroll);\n      window.removeEventListener('resize', bodyRef.bindScroll);\n    }\n  }\n\n  static SetScrollPositionClassName(bodyRef, tableRef) {\n\n    let scrollLeft = bodyRef.scrollLeft;\n    let scrollWidth = bodyRef.scrollWidth;\n    let clientWidth = bodyRef.clientWidth;\n\n    let pingLeft = false;\n    let pingRight = false;\n\n    if ((scrollWidth == clientWidth && scrollWidth != 0)) {\n      pingLeft = false;\n      pingRight = false;\n    }\n    else if (scrollLeft == 0) {\n      pingLeft = false;\n      pingRight = true;\n    }\n    else if (Math.abs(scrollWidth - (scrollLeft + clientWidth)) <= 1) {\n      pingRight = false;\n      pingLeft = true;\n    }\n    else {\n      pingLeft = true;\n      pingRight = true;\n    }\n\n    pingLeft ? tableRef.classList.add(\"ant-table-ping-left\") : tableRef.classList.remove(\"ant-table-ping-left\");\n    pingRight ? tableRef.classList.add(\"ant-table-ping-right\") : tableRef.classList.remove(\"ant-table-ping-right\");\n  }\n}","type fileInfo = {\n  fileName: string,\n  size: number,\n  objectURL: string,\n  type: string\n}\n\nexport class uploadHelper {\n  static addFileClickEventListener(btn: HTMLElement) {\n    if (btn.addEventListener) {\n      btn.addEventListener(\"click\", uploadHelper.fileClickEvent);\n    }\n  }\n\n  static removeFileClickEventListener(btn: HTMLElement) {\n    btn.removeEventListener(\"click\", uploadHelper.fileClickEvent);\n  }\n\n  private static fileClickEvent(e: MouseEvent) {\n    e.stopPropagation();\n    const fileId = (e.currentTarget as HTMLSpanElement).attributes[\"data-fileid\"].nodeValue;\n    const element = document.getElementById(fileId) as HTMLInputElement;\n    element.click();\n  }\n\n  static clearFile(element) {\n    element.setAttribute(\"type\", \"input\");\n    element.value = '';\n    element.setAttribute(\"type\", \"file\");\n  }\n\n  static getFileInfo(element: HTMLInputElement) {\n    if (element.files && element.files.length > 0) {\n      let fileInfo = Array<fileInfo>();\n      for (var i = 0; i < element.files.length; i++) {\n        let file = element.files[i];\n        const objectUrl = this.getObjectURL(file);\n        fileInfo.push({\n          fileName: file.name,\n          size: file.size,\n          objectURL: objectUrl,\n          type: file.type\n        });\n      }\n\n      return fileInfo;\n    }\n  }\n\n  private static getObjectURL(file: File): string {\n    var url = null;\n    if (window.URL != undefined) {\n      url = window.URL.createObjectURL(file);\n    } else if (window.webkitURL != undefined) {\n      url = window.webkitURL.createObjectURL(file);\n    }\n    return url;\n  }\n\n  static uploadFile(element, index, data, headers, fileId, url, name, instance, percentMethod, successMethod, errorMethod, method: string) {\n    let formData = new FormData();\n    var file = element.files[index];\n    var size = file.size;\n    formData.append(name, file);\n    if (data != null) {\n      for (var key in data) {\n        formData.append(key, data[key]);\n      }\n    }\n    const req = new XMLHttpRequest()\n    req.onreadystatechange = function () {\n      if (req.readyState === 4) {\n        // #1655 Any 2xx response code is okay\n        if (req.status < 200 || req.status > 299) {\n          instance.invokeMethodAsync(errorMethod, fileId, `{\"status\": ${req.status}}`);\n          return;\n        }\n        instance.invokeMethodAsync(successMethod, fileId, req.responseText);\n      }\n    }\n    req.upload.onprogress = function (event) {\n      var percent = Math.floor(event.loaded / size * 100);\n      instance.invokeMethodAsync(percentMethod, fileId, percent);\n    }\n    req.onerror = function (e) {\n      instance.invokeMethodAsync(errorMethod, fileId, \"error\");\n    }\n    req.open(method, url, true)\n    if (headers != null) {\n      for (var header in headers) {\n        req.setRequestHeader(header, headers[header]);\n      }\n    }\n    req.send(formData)\n  }\n}","\nconst throttle = (fn, threshold = 160) => {\n    let timeout;\n    var start = +new Date;\n    return function (...args) {\n        let context = this, curTime = +new Date() - 0;\n        //总是干掉事件回调\n        window.clearTimeout(timeout);\n        if (curTime - start >= threshold) {\n            //只执行一部分方法,这些方法是在某个时间段内执行一次\n            fn.apply(context, args);\n            start = curTime;\n        }\n        else {\n            //让方法在脱离事件后也能执行一次\n            timeout = window.setTimeout(() => {\n                //@ts-ignore\n                fn.apply(this, args);\n            }, threshold);\n        }\n    };\n}\n\nconst eventMap = new Map<HTMLElement, Dragger>();\n\nconst defaultOptions = {\n    inViewport: true\n}\n\nclass Dragger {\n\n    private _trigger: HTMLElement = null;\n    private _container: HTMLElement = null;\n    private _options: any = null;\n    private _state: any = null;\n    private _isFirst: boolean = true;\n    private _style: string = null;\n\n    constructor(trigger: HTMLElement, container: HTMLElement, dragInViewport: boolean) {\n        this._trigger = trigger;\n        this._container = container;\n        this._options = Object.assign({}, defaultOptions, {\n            inViewport: dragInViewport\n        });\n        this._state = {\n            isInDrag: false,\n            mX: 0, // mouse x\n            mY: 0, // mouse y\n            domStartX: 0, // on mousedown, the mouse x\n            domStartY: 0, // on mousedown, the mouse y            \n        }\n    }\n\n    getContainerPos() {\n        const rect = this._container.getBoundingClientRect();\n        return {\n            left: rect.left,\n            top: rect.top\n        }\n    }\n\n    onMousedown = (e) => {\n        const state = this._state;\n        state.isInDrag = true;\n        state.mX = e.clientX;\n        state.mY = e.clientY;\n        this._container.style.position = \"absolute\";\n        const { left, top } = this.getContainerPos();\n\n        if (this._isFirst) {\n\n            state.domMaxY = document.documentElement.clientHeight\n                - this._container.offsetHeight - 1;\n            state.domMaxX = document.documentElement.clientWidth\n                - this._container.offsetWidth - 1;\n            state.domMaxY = state.domMaxY < 0 ? 0 : state.domMaxY;\n            state.domMaxX = state.domMaxX < 0 ? 0 : state.domMaxX;\n\n            this._container.style.left = left + 'px';\n            this._container.style.top = top + 'px';\n\n            if (!this._style) {\n                this._style = this._container.getAttribute(\"style\");\n            }\n\n            this._isFirst = false;\n        }\n\n        state.domStartX = left;\n        state.domStartY = top;\n    }\n\n    onMouseup = (e) => {\n        const state = this._state;\n\n        state.isInDrag = false;\n\n        const { left, top } = this.getContainerPos();\n        state.domStartX = left;\n        state.domStartY = top;\n    }\n\n    onMousemove = throttle((e) => {\n        const state = this._state;\n        if (state.isInDrag) {\n            var nowX = e.clientX,\n                nowY = e.clientY,\n                disX = nowX - state.mX,\n                disY = nowY - state.mY;\n\n            var newDomX = state.domStartX + disX;\n            var newDomY = state.domStartY + disY;\n            if (this._options.inViewport) {\n                if (newDomX < 0) {\n                    newDomX = 0;\n                }\n                else if (newDomX > state.domMaxX) {\n                    newDomX = state.domMaxX;\n                }\n                if (newDomY < 0) {\n                    newDomY = 0;\n                }\n                else if (newDomY > state.domMaxY) {\n                    newDomY = state.domMaxY;\n                }\n            }\n            this._container.style.position = \"absolute\";\n            this._container.style.margin = \"0\";\n            this._container.style.paddingBottom = \"0\";\n            this._container.style.left = newDomX + \"px\";\n            this._container.style.top = newDomY + \"px\";\n        }\n    }, 10).bind(this);\n\n    onResize = throttle((e) => {\n        const state = this._state;\n\n        state.domMaxY = document.documentElement.clientHeight\n            - this._container.offsetHeight - 1;\n        state.domMaxX = document.documentElement.clientWidth\n            - this._container.offsetWidth - 1;\n        state.domMaxY = state.domMaxY < 0 ? 0 : state.domMaxY;\n        state.domMaxX = state.domMaxX < 0 ? 0 : state.domMaxX;\n        state.domStartY = parseInt(this._container.style.top);\n        state.domStartX = parseInt(this._container.style.left);\n        if (state.domStartY > state.domMaxY) {\n            if (state.domMaxY > 0) {\n                this._container.style.top = state.domMaxY + \"px\";\n            }\n        }\n        if (state.domStartX > state.domMaxX) {\n            this._container.style.left = state.domMaxX + \"px\";\n        }\n    }, 10).bind(this);\n\n    bindDrag() {\n        const trigger = this._trigger;\n        const options = this._options;\n\n        trigger.addEventListener(\"mousedown\", this.onMousedown, false);\n        window.addEventListener(\"mouseup\", this.onMouseup, false);\n        document.addEventListener(\"mousemove\", this.onMousemove);\n        if (options.inViewport) {\n            window.addEventListener(\"resize\", this.onResize, false);\n        }\n    }\n\n    unbindDrag() {\n        const trigger = this._trigger;\n\n        trigger.removeEventListener(\"mousedown\", this.onMousedown, false);\n        window.removeEventListener(\"mouseup\", this.onMouseup, false);\n        document.removeEventListener(\"mousemove\", this.onMousemove);\n        if (this._options.inViewport) {\n            window.removeEventListener(\"resize\", this.onResize, false);\n        }\n    }\n\n    resetContainerStyle() {\n        if (this._style !== null) {\n            this._isFirst = true;\n            this._container.setAttribute(\"style\", this._style);\n        }\n    }\n}\n\nfunction enableDraggable(trigger: HTMLElement, container: HTMLElement, dragInViewport: boolean = true) {\n    let dragger = eventMap.get(trigger);\n    if (!dragger) {\n        dragger = new Dragger(trigger, container, dragInViewport);\n        eventMap.set(trigger, dragger);\n    } \n    dragger.bindDrag();\n}\n\nfunction disableDraggable(trigger: HTMLElement) {\n    const dragger = eventMap.get(trigger);\n    if (dragger) {\n        dragger.unbindDrag();\n    }\n}\n\nfunction resetModalPosition(trigger: HTMLElement) {\n    const dragger = eventMap.get(trigger);\n    if (dragger) {\n        dragger.resetContainerStyle();\n    }\n}\n\nexport { enableDraggable, disableDraggable, resetModalPosition };","import { domInfoHelper } from './exports';\nimport { state } from '../stateProvider';\n\nexport class eventHelper {\n  static triggerEvent(element: HTMLInputElement, eventType: string, eventName: string) {\n    //TODO: replace with event constructors https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent\n    //Not used \n    const evt = document.createEvent(eventType);\n    evt.initEvent(eventName);\n    return element.dispatchEvent(evt);\n  }\n\n  static addDomEventListener(element, eventName: string, preventDefault: boolean, invoker: any) {\n    const callback = args => {\n      const obj = {};\n      for (let k in args) {\n        if (k !== 'originalTarget') { //firefox occasionally raises Permission Denied when this property is being stringified\n          obj[k] = args[k];\n        }\n      }\n      const json = JSON.stringify(obj, (k, v) => {\n        if (v instanceof Node) return 'Node';\n        if (v instanceof Window) return 'Window';\n        return v;\n      }, ' ');\n      setTimeout(function () { invoker.invokeMethodAsync('Invoke', json) }, 0);\n      if (preventDefault === true) {\n        args.preventDefault();\n      }\n    };\n\n    if (element === 'window') {\n      if (eventName === 'resize') {\n        window.addEventListener(eventName, this.debounce(() => callback({ innerWidth: window.innerWidth, innerHeight: window.innerHeight }), 200, false));\n      } else {\n        window.addEventListener(eventName, callback);\n      }\n    } else {\n      const dom = domInfoHelper.get(element);\n      if (dom) {\n        (dom as HTMLElement).addEventListener(eventName, callback);\n      }\n    }\n  }  \n\n  static addDomEventListenerToFirstChild(element, eventName, preventDefault, invoker) {\n    const dom = domInfoHelper.get(element);\n\n    if (dom && dom.firstElementChild) {\n      this.addDomEventListener(dom.firstElementChild, eventName, preventDefault, invoker);\n    }\n  }\n\n  static addPreventKeys(inputElement, keys: string[]) {\n    if (inputElement) {\n      const dom = domInfoHelper.get(inputElement);\n      keys = keys.map(function (x) { return x.toUpperCase(); })\n      state.eventCallbackRegistry[inputElement.id + \"keydown\"] = (e) => this.preventKeys(e, keys);\n      (dom as HTMLElement).addEventListener(\"keydown\", state.eventCallbackRegistry[inputElement.id + \"keydown\"], false);\n    }\n  }\n\n  static preventKeyOnCondition(e: KeyboardEvent, key: string, check: () => boolean) {\n    if (e.key.toUpperCase() === key.toUpperCase() && check()) {\n      e.preventDefault();\n      return false;\n    }\n  }\n\n  static removePreventKeys(inputElement) {\n    if (inputElement) {\n      const dom = domInfoHelper.get(inputElement);\n      if (dom) {\n        (dom as HTMLElement).removeEventListener(\"keydown\", state.eventCallbackRegistry[inputElement.id + \"keydown\"]);\n        state.eventCallbackRegistry[inputElement.id + \"keydown\"] = null;\n      }\n    }\n  }\n\n  private static debounce(func, wait, immediate) {\n    var timeout;\n    return () => {\n      const context = this, args = arguments;\n      const later = () => {\n        timeout = null;\n        if (!immediate) func.apply(this, args);\n      };\n      const callNow = immediate && !timeout;\n      clearTimeout(timeout);\n      timeout = setTimeout(later, wait);\n      if (callNow) func.apply(context, args);\n    };\n  };\n\n  private static preventKeys(e: KeyboardEvent, keys: string[]) {\n    if (keys.indexOf(e.key.toUpperCase()) !== -1) {\n      e.preventDefault();\n      return false;\n    }\n  }\n}","export { infoHelper as domInfoHelper } from './infoHelper';\nexport { manipulationHelper as domManipulationHelper } from './manipulationHelper';\nexport { eventHelper } from './eventHelper';\nexport * as domTypes from './types';","import { domTypes } from './exports'\n\nexport class infoHelper {\n  static getWindow() {\n    return {\n      innerWidth: window.innerWidth,\n      innerHeight: window.innerHeight\n    };\n  }\n\n  static get(element: any) {\n    if (!element) {\n      element = document.body;\n    } else if (typeof element === 'string') {\n      if (element === 'document') {\n        return document;\n      }\n      element = document.querySelector(element!)\n    }\n    return element;\n  }\n\n  static getInfo(element: any): domTypes.domInfo {\n    let domElement = this.get(element);\n    if (!domElement) {\n      domElement = {};\n    }\n    const absolutePosition = this.getElementAbsolutePos(domElement);\n    const result: domTypes.domInfo = {\n      offsetTop: domElement.offsetTop || 0,\n      offsetLeft: domElement.offsetLeft || 0,\n      offsetWidth: domElement.offsetWidth || 0,\n      offsetHeight: domElement.offsetHeight || 0,\n      scrollHeight: domElement.scrollHeight || 0,\n      scrollWidth: domElement.scrollWidth || 0,\n      scrollLeft: domElement.scrollLeft || 0,\n      scrollTop: domElement.scrollTop || 0,\n      clientTop: domElement.clientTop || 0,\n      clientLeft: domElement.clientLeft || 0,\n      clientHeight: domElement.clientHeight || 0,\n      clientWidth: domElement.clientWidth || 0,\n      selectionStart: domElement.selectionStart || 0,\n      absoluteTop: Math.round(absolutePosition.y),\n      absoluteLeft: Math.round(absolutePosition.x)\n    };\n    return result;\n  }\n\n  static getElementAbsolutePos(element: any): domTypes.position {\n    const res: domTypes.position = {\n      x: 0,\n      y: 0\n    };\n    if (element !== null) {\n      if (element.getBoundingClientRect) {\n        const viewportElement = document.documentElement;\n        const box = element.getBoundingClientRect();\n        const scrollLeft = viewportElement.scrollLeft;\n        const scrollTop = viewportElement.scrollTop;\n\n        res.x = box.left + scrollLeft;\n        res.y = box.top + scrollTop;\n      }\n    }\n    return res;\n  }\n\n  static getBoundingClientRect(element: any): domTypes.domRect {\n    const domElement = this.get(element);\n    if (domElement && domElement.getBoundingClientRect) {\n      const rect = domElement.getBoundingClientRect();\n      // Fixes #1468. This wrapping is necessary for old browsers. Remove this when one day we no longer support them.\n      return {\n        width: rect.width,\n        height: rect.height,\n        top: rect.top,\n        right: rect.right,\n        bottom: rect.bottom,\n        left: rect.left,\n        x: rect.x,\n        y: rect.y\n      };\n    }\n    return null;\n  }\n\n  static getFirstChildDomInfo(element: any) {\n    const domElement = this.get(element);\n    if (domElement) {\n      if (domElement.firstElementChild) {\n        return this.getInfo(domElement.firstElementChild);\n      } else {\n        return this.getInfo(domElement);\n      }\n    }\n    return null;\n  }\n\n  static getActiveElement() {\n    const element = document.activeElement;\n    const id = element.getAttribute(\"id\") || \"\";\n    return id;\n  }\n\n  static getScroll() {\n    return { x: window.pageXOffset, y: window.pageYOffset };\n  }\n\n  static hasFocus(selector) {\n    const dom = this.get(selector);\n    return (document.activeElement === dom);\n  }\n\n  static getInnerText(element) {\n    const dom = this.get(element);\n    if (dom) return dom.innerText;\n    return null;\n  }\n\n  static getMaxZIndex(): number {\n    return [...document.querySelectorAll(\"*\")].reduce((r, e) => Math.max(r, +window.getComputedStyle(e).zIndex || 0), 0)\n  }  \n\n  static isFixedPosition(element) {\n    let node = this.get(element);\n    while (node && node.nodeName.toLowerCase() !== 'body') {\n        if (window.getComputedStyle(node).getPropertyValue('position').toLowerCase() === 'fixed')\n            { return true; }\n        node = node.parentNode;\n    }\n    return false;\n  }\n  \n  static findAncestorWithZIndex(element: HTMLElement): number {\n    let node = this.get(element);\n    let zIndexAsString: string;\n    let zIndex: number;\n    while (node && node.nodeName.toLowerCase() !== 'body') {\n        zIndexAsString = window.getComputedStyle(node).zIndex;\n        zIndex = Number.parseInt(zIndexAsString);\n        if (!Number.isNaN(zIndex)) {\n           return zIndex;\n        }\n        node = node.parentNode;\n    }\n    return null;\n  }\n\n}","import { domInfoHelper } from './exports'\nimport { styleHelper } from '../styleHelper'\nimport { state } from '../stateProvider'\nimport * as enums from '../enums';\n\n\nlet cachedScrollBarSize: number | undefined = undefined;\n\n\nexport class manipulationHelper {\n  static addElementToBody(element) {\n    document.body.appendChild(element);\n  }\n\n  static delElementFromBody(element) {\n    document.body.removeChild(element);\n  }\n\n  static addElementTo(addElement, elementSelector, prepend = false): boolean {\n    let parent = domInfoHelper.get(elementSelector);\n    if (parent && addElement) {\n      if (parent instanceof Node && addElement instanceof Node) {\n        if (prepend) parent.insertBefore(addElement, parent.firstChild);\n        else parent.appendChild(addElement);\n        return true;\n      } else {\n        console.log(\"does not implement node\", parent, addElement);\n      }\n    }\n    return false;\n  }\n\n  static delElementFrom(delElement, elementSelector) {\n    let parent = domInfoHelper.get(elementSelector);\n    if (parent && delElement) {\n      parent.removeChild(delElement);\n    }\n  }\n\n  static setDomAttribute(element, attributes) {\n    let dom: HTMLElement = domInfoHelper.get(element);\n    if (dom) {\n      for (let key in attributes) {\n        dom.setAttribute(key, attributes[key]);\n      }\n    }\n  }\n  \n  static copyElement(element) {\n    if (!this.copyElementAsRichText(element)) {\n      this.copy(element.innerText);\n    }\n  }\n\n  private static copyElementAsRichText(element) {\n    var selection = document.getSelection();\n    if (selection.rangeCount > 0) {\n      selection.removeAllRanges();\n    }\n    var range = document.createRange();\n    range.selectNode(element);\n    selection.addRange(range);\n    try {\n      var successful = document.execCommand('copy');\n      selection.removeAllRanges();\n      return successful;\n    } catch (err) {\n      selection.removeAllRanges();\n      return false;\n    }\n  }\n\n  static copy(text) {\n    if (!navigator.clipboard) {\n      this.fallbackCopyTextToClipboard(text);\n      return;\n    }\n    navigator.clipboard.writeText(text).then(function () {\n      console.log('Async: Copying to clipboard was successful!');\n    }, function (err) {\n      console.error('Async: Could not copy text: ', err);\n    });\n  }\n\n  private static fallbackCopyTextToClipboard(text) {\n    var textArea = document.createElement(\"textarea\");\n    textArea.value = text;\n\n    // Avoid scrolling to bottom\n    textArea.style.top = \"0\";\n    textArea.style.left = \"0\";\n    textArea.style.position = \"fixed\";\n\n    document.body.appendChild(textArea);\n    textArea.focus();\n    textArea.select();\n\n    try {\n      var successful = document.execCommand('copy');\n      var msg = successful ? 'successful' : 'unsuccessful';\n      console.log('Fallback: Copying text command was ' + msg);\n    } catch (err) {\n      console.error('Fallback: Oops, unable to copy', err);\n    }\n\n    document.body.removeChild(textArea);\n  }\n\n  static focus(selector, noScroll: boolean = false, option: enums.FocusBehavior = enums.FocusBehavior.FocusAtLast) {\n    let dom = domInfoHelper.get(selector);\n    if (!(dom instanceof HTMLElement))\n      throw new Error(\"Unable to focus on invalid element.\");\n\n    dom.focus({\n      preventScroll: noScroll\n    });\n\n    if (dom instanceof HTMLInputElement || dom instanceof HTMLTextAreaElement) {\n      switch (option) {\n        case enums.FocusBehavior.FocusAndSelectAll:\n          dom.select();\n          break;\n        case enums.FocusBehavior.FocusAtFirst:\n          dom.setSelectionRange(0, 0);\n          break;\n        case enums.FocusBehavior.FocusAtLast:\n          dom.setSelectionRange(-1, -1);\n          break;\n      }\n    }\n  }\n\n\n  static blur(selector) {\n    let dom = domInfoHelper.get(selector);\n    if (dom) {\n      dom.blur();\n    }\n  }\n\n  static scrollTo(selector: Element | string, parentElement?: HTMLElement) {\n    const element = domInfoHelper.get(selector);\n    if (parentElement && element && element instanceof HTMLElement) {\n      parentElement.scrollTop = element.offsetTop;\n    } else if (element && element instanceof HTMLElement) {\n        element.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'start' });\n    }    \n  }  \n\n  static slideTo(targetPageY) {\n    const timer = setInterval(function () {\n      const currentY = document.documentElement.scrollTop || document.body.scrollTop;\n      const distance = targetPageY > currentY ? targetPageY - currentY : currentY - targetPageY;\n      const speed = Math.ceil(distance / 10);\n      if (currentY === targetPageY) {\n        clearInterval(timer);\n      } else {\n        window.scrollTo(0, targetPageY > currentY ? currentY + speed : currentY - speed);\n      }\n    }, 10);\n  }\n\n  //copied from https://www.telerik.com/forums/trigger-tab-key-when-enter-key-is-pressed\n  static invokeTabKey() {\n    var currInput = document.activeElement;\n    if (currInput.tagName.toLowerCase() == \"input\") {\n      var inputs = document.getElementsByTagName(\"input\");\n      var currInput = document.activeElement;\n      for (var i = 0; i < inputs.length; i++) {\n        if (inputs[i] == currInput) {\n          var next = inputs[i + 1];\n          if (next && next.focus) {\n            next.focus();\n          }\n          break;\n        }\n      }\n    }\n  }\n\n  static disableBodyScroll() {\n    let body = document.body;\n    const oldBodyCache = {};\n    [\"position\", \"width\", \"overflow\"].forEach((key) => {\n      oldBodyCache[key] = body.style[key];\n    });\n    state.oldBodyCacheStack.push(oldBodyCache);\n    const scrollBarSize = this.getScrollBarSize();\n    styleHelper.css(body,\n      {\n        \"position\": \"relative\",\n        \"width\": this.hasScrollbar() && scrollBarSize > 0 ? `calc(100% - ${scrollBarSize}px)` : null,\n        \"overflow\": \"hidden\"\n      });\n    styleHelper.addCls(document.body, \"ant-scrolling-effect\");\n  }\n\n  static enableBodyScroll() {\n    let oldBodyCache = state.oldBodyCacheStack.length > 0 ? state.oldBodyCacheStack.pop() : {};\n\n    styleHelper.css(document.body,\n      {\n        \"position\": oldBodyCache[\"position\"] ?? null,\n        \"width\": oldBodyCache[\"width\"] ?? null,\n        \"overflow\": oldBodyCache[\"overflow\"] ?? null\n      });\n    styleHelper.removeCls(document.body, \"ant-scrolling-effect\");\n  }\n\n  static hasScrollbar = () => {\n    let overflow = document.body.style.overflow;\n    if (overflow && overflow === \"hidden\") return false;\n    return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight);\n  }\n\n\n  /**\n   * getScrollBarSize\n   * source https://github.com/react-component/util/blob/master/src/getScrollBarSize.tsx\n   * \n   * @param fresh force get scrollBar size and don't use cache\n   * @returns \n   */\n   static getScrollBarSize = (fresh: boolean = false) => {\n    if (typeof document === \"undefined\") {\n      return 0;\n    }\n\n    if (fresh || cachedScrollBarSize === undefined) {\n      const inner = document.createElement(\"div\");\n      inner.style.width = \"100%\";\n      inner.style.height = \"200px\";\n\n      const outer = document.createElement(\"div\");\n      const outerStyle = outer.style;\n\n      outerStyle.position = \"absolute\";\n      outerStyle.top = \"0\";\n      outerStyle.left = \"0\";\n      outerStyle.pointerEvents = \"none\";\n      outerStyle.visibility = \"hidden\";\n      outerStyle.width = \"200px\";\n      outerStyle.height = \"150px\";\n      outerStyle.overflow = \"hidden\";\n\n      outer.appendChild(inner);\n\n      document.body.appendChild(outer);\n\n      const widthContained = inner.offsetWidth;\n      outer.style.overflow = \"scroll\";\n      let widthScroll = inner.offsetWidth;\n\n      if (widthContained === widthScroll) {\n        widthScroll = outer.clientWidth;\n      }\n\n      document.body.removeChild(outer);\n      cachedScrollBarSize = widthContained - widthScroll;\n    }\n    return cachedScrollBarSize;\n  };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZVJvb3QiOiIifQ==","export enum FocusBehavior {\n  /// <summary>\n  /// When focuses, cursor will move to the last character. \n  /// This is default behavior.\n  /// </summary>\n  FocusAtLast,\n  /// <summary>\n  /// When focuses, cursor will move to the first character\n  /// </summary>\n  FocusAtFirst,\n  /// <summary>\n  /// When focuses, the content will be selected\n  /// </summary>\n  FocusAndSelectAll\n}","import { eventCallback } from './dom/types'\n\n//Singleton \nexport class State {\n  private static instance: State;\n\n  //Stores references to dot net objects (components wrapped in DotNetObjectReference)\n  objReferenceDict: { [key: string]: any } = {};\n\n  //All object references must later be disposed by JS code or by .NET code.\n  disposeObj(objReferenceName) {\n    delete this.objReferenceDict[objReferenceName];\n  }\n\n  //Stores callback for events based on a key. Needed when\n  //Event needs to be removed - the callback can be retrieved and\n  //used to remove the event in question\n  eventCallbackRegistry: { [key: string]: eventCallback} = {};\n  \n  oldBodyCacheStack = [];\n\n  private constructor() { }\n\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new State();      \n    }\n    return this.instance;\n  }\n}\n\nexport const state = State.getInstance();","import { infoHelper as domInfoHelper } from './dom/infoHelper';\n\nexport class styleHelper {\n  static addCls(selector: Element | string, className: string | Array<string>) {\n    let element = domInfoHelper.get(selector);\n    if (element) {\n      if (typeof className === \"string\") {\n        element.classList.add(className);\n      } else {\n        element.classList.add(...className);\n      }\n    }\n  }\n\n  static removeCls(selector: Element | string, clsName: string | Array<string>) {\n    let element = domInfoHelper.get(selector);\n    if (element) {\n      if (typeof clsName === \"string\") {\n        element.classList.remove(clsName);\n      } else {\n        element.classList.remove(...clsName);\n      }\n    }\n  }\n\n  static addClsToFirstChild(element: Element | string, className: string): void {\n    var domElement = domInfoHelper.get(element);\n    if (domElement && domElement.firstElementChild) {\n      domElement.firstElementChild.classList.add(className);\n    }\n  }\n\n  static removeClsFromFirstChild(element: Element | string, className): void {\n    var domElement = domInfoHelper.get(element);\n    if (domElement && domElement.firstElementChild) {\n      domElement.firstElementChild.classList.remove(className);\n    }\n  }\n\n  static matchMedia(query: string): boolean {\n    return window.matchMedia(query).matches;\n  }\n\n  static getStyle(element, styleProp: string) {\n    if (element.currentStyle)\n      return element.currentStyle[styleProp];\n    else if (window.getComputedStyle)\n      return document.defaultView.getComputedStyle(element, null).getPropertyValue(styleProp);\n  }\n\n  //Referenced in Caret, class Mirror\n  static css(element: HTMLElement, name: string | object, value: string | null = null) {\n    if (typeof name === 'string') {\n      if (value === null) {\n        let style = name;\n        let cssAttributes = style.split(\";\");\n        for (let i = 0; i < cssAttributes.length; i++) {\n          let cssAttribute = cssAttributes[i];\n          if (!cssAttribute) continue;\n          let attribute = cssAttribute.split(\":\");\n          element.style.setProperty(attribute[0], attribute[1]);\n        }\n        return;\n      }\n      element.style.setProperty(name, value);\n    } else {\n      for (let key in name) {\n        if (name.hasOwnProperty(key)) {\n          element.style.setProperty(key, name[key]);\n        }\n      }\n    }\n  }\n}","import * as interop from \"./core/JsInterop/interop\";\n\ndeclare global {\n  interface Window {\n    AntDesign: any;\n  }\n}\n\nwindow.AntDesign = {\n  interop,\n};\n"]}