{"version":3,"sources":["webpack:///./node_modules/quasar/src/components/table/QTh.js","webpack:///./src/router/routes/error.ts","webpack:///./src/router/routes/login.ts","webpack:///./src/store/utils/apiResponseHandling.ts","webpack:///./node_modules/quasar/src/components/menu/QMenu.js","webpack:///./node_modules/core-js/modules/es.map.js","webpack:///./node_modules/quasar/src/components/virtual-scroll/use-virtual-scroll.js","webpack:///./src/components/utils/fieldValidation.ts","webpack:///./node_modules/core-js/modules/es.regexp.flags.js","webpack:///./src/components/EditFieldActions.vue","webpack:///./src/components/EditFieldActions.vue?7034","webpack:///./src/components/EditFieldActions.vue?0cf0","webpack:///./src/components/utils/inlineEditable.ts","webpack:///./node_modules/quasar/src/components/field/QField.js","webpack:///./node_modules/quasar/src/utils/private/is.js","webpack:///./src/components/AsyncContent.vue","webpack:///./src/components/AsyncContent.vue?2e5e","webpack:///./src/components/AsyncContent.vue?b8aa","webpack:///./node_modules/core-js/modules/es.array-buffer.constructor.js","webpack:///./node_modules/quasar/src/utils/copy-to-clipboard.js","webpack:///./src/store/utils/axiosUtils.ts","webpack:///./node_modules/quasar/src/components/select/QSelect.js","webpack:///./node_modules/quasar/src/components/markup-table/QMarkupTable.js","webpack:///./node_modules/quasar/src/components/table/get-table-middle.js","webpack:///./node_modules/quasar/src/components/virtual-scroll/QVirtualScroll.js","webpack:///./node_modules/quasar/src/components/linear-progress/QLinearProgress.js","webpack:///./node_modules/quasar/src/composables/private/use-fullscreen.js","webpack:///./node_modules/quasar/src/utils/private/sort.js","webpack:///./node_modules/quasar/src/components/table/table-sort.js","webpack:///./node_modules/quasar/src/components/table/table-filter.js","webpack:///./node_modules/quasar/src/components/table/table-pagination.js","webpack:///./node_modules/quasar/src/components/table/table-row-selection.js","webpack:///./node_modules/quasar/src/components/table/table-row-expand.js","webpack:///./node_modules/quasar/src/components/table/table-column-selection.js","webpack:///./node_modules/quasar/src/components/table/QTable.js"],"names":["defineComponent","name","props","Object","autoWidth","Boolean","emits","setup","slots","emit","vm","getCurrentInstance","$q","proxy","h","class","hSlot","default","col","child","vnode","key","colsMap","sortable","action","align","hUniqueSlot","QIcon","__iconClass","iconSet","table","arrowUp","data","__thClass","style","headerStyle","onClick","evt","sort","ErrorRoutes","LoginRoutes","ResponseStatus","DefaultIStatusHandler","onNotFound","_","router","push","notFound","onError","error","onNotAuthenticated","login","onSuccess","chainHandlers","first","second","result","impl","response","handleErrorStatus","customHandler","handler","NotFound","Error","NotAuthenticated","handleErrorStatusResult","apiResponse","isError","undefined","inheritAttrs","useAnchorProps","useModelToggleProps","useDarkProps","useTransitionProps","persistent","autoClose","separateClosePopup","noRouteDismiss","noRefocus","noFocus","fit","cover","square","anchor","type","String","validator","validatePosition","self","offset","Array","validateOffset","scrollTarget","touchPosition","maxHeight","maxWidth","useModelToggleEmits","absoluteOffset","unwatchPosition","avoidAutoClose","attrs","refocusTarget","innerRef","ref","showing","hideOnRouteChange","computed","isDark","useDark","useTick","registerTick","removeTick","prepareTick","useTimeout","registerTimeout","removeTimeout","useTransition","transition","transitionStyle","useScrollTarget","configureScrollTarget","localScrollTarget","changeScrollEvent","unconfigureScrollTarget","useAnchor","anchorEl","canShow","useModelToggle","handleShow","handleHide","processOnMount","hide","usePortal","renderPortalContent","showPortal","hidePortal","renderPortal","clickOutsideProps","getEl","$el","onClickOutside","e","value","target","classList","contains","stopAndPrevent","anchorOrigin","parsePosition","lang","rtl","selfOrigin","menuClass","onEvents","onAutoClose","handlesFocus","focus","node","document","activeElement","querySelector","addFocusout","onFocusout","contextMenu","pos","position","left","getBoundingClientRect","top","watch","screen","width","height","updatePosition","blur","platform","is","ios","click","transitionDuration","anchorCleanup","qClickOutside","hiding","removeFocusout","removeClickOutside","removeEscapeKey","onEscapeKey","getScrollTarget","closePortalMenus","childHasFocus","el","setPosition","Transition","appear","tabindex","val","addEscapeKey","addClickOutside","onBeforeUnmount","assign","collection","collectionStrong","module","exports","init","this","arguments","length","aggBucketSize","scrollToEdges","slice","prototype","buggyRTL","scroller","createElement","spacer","setAttribute","overflow","body","appendChild","scrollLeft","remove","id","setOverflowAnchor","window","getComputedStyle","overflowAnchor","noop","index","ssId","styleSheet","getElementById","head","qChildIndex","innerHTML","sumFn","acc","getScrollDetails","parent","beforeRef","afterRef","horizontal","stickyStart","stickyEnd","parentCalc","scrollingElement","documentElement","propElSize","details","scrollStart","scrollViewSize","scrollMaxSize","offsetStart","offsetEnd","pageXOffset","scrollX","innerWidth","clientWidth","scrollWidth","pageYOffset","scrollY","scrollTop","innerHeight","clientHeight","scrollHeight","previousElementSibling","nextElementSibling","parentRect","childRect","setScroll","scroll","scrollTo","offsetWidth","sumSize","sizeAgg","size","from","to","lastTo","fromAgg","Math","floor","toAgg","total","reduce","commonVirtScrollProps","virtualScrollSliceSize","Number","virtualScrollSliceRatioBefore","virtualScrollSliceRatioAfter","virtualScrollItemSize","virtualScrollStickySizeStart","virtualScrollStickySizeEnd","tableColspan","commonVirtPropsList","keys","useVirtualScrollProps","virtualScrollHorizontal","onVirtualScroll","Function","useVirtualScroll","prevScrollStart","prevToIndex","localScrollViewSize","virtualScrollSizes","virtualScrollLength","getVirtualScrollTarget","getVirtualScrollEl","virtualScrollItemSizeComputed","virtualScrollSizesAgg","vsId","virtualScrollPaddingBefore","virtualScrollPaddingAfter","virtualScrollSliceSizeComputed","contentRef","virtualScrollSliceRange","colspanAttr","needsReset","needsSliceRecalc","reset","localResetVirtualScroll","refresh","toIndex","edge","scrollEl","nodeType","scrollDetails","setVirtualScrollSize","setVirtualScrollSliceRange","min","max","parseInt","indexOf","localOnVirtualScrollEvt","listLastIndex","listEndOffset","updateVirtualScrollSizes","scrollMaxStart","ceil","listOffset","j","alignForce","alignEnd","replace","alignRange","rangeChanged","onBlurFn","addEventListener","requestAnimationFrame","removeEventListener","sizeBefore","tempTo","sizeAfter","posStart","posEnd","scrollPosition","sizeDiff","round","emitScroll","contentEl","diff","children","call","filter","childrenLength","sizeFn","offsetHeight","i","fullReset","defaultSize","isArray","oldVirtualScrollSizesLength","jMax","iMax","nextTick","onVirtualScrollEvt","multiplier","view","baseSize","start","center","end","padVirtualScroll","tag","content","paddingSize","colspan","flat","direction","debounce","onBeforeMount","useFieldValidation","validationModel","showErrors","validationStore","fieldIsError","field","modelName","fieldErrorMessage","useFieldsValidation","fields","validationRefs","DESCRIPTORS","objectDefinePropertyModule","regExpFlags","UNSUPPORTED_Y","flags","f","RegExp","configurable","get","isUpdating","icon","dense","color","emitStopUpdating","loading","isRequestingUpdate","emitDoUpdate","emitStartUpdating","required","render","QBtn","useInlineEditable","baseValueGetter","reactiveValue","inputEl","onDoUpdate","onStartEditing","onStopEditing","isEditing","editText","compText","set","startEditing","select","stopEditing","selection","getSelection","removeAllRanges","doUpdate","useFieldProps","useFieldEmits","useField","useFieldState","hasMap","Map","hasSet","Set","hasArrayBuffer","ArrayBuffer","isDeepEqual","a","b","constructor","entries","next","done","has","buffer","source","valueOf","toString","isDate","v","isNumber","isFinite","Component","fallback","QPageContainer","QSpinner","$","global","arrayBufferModule","setSpecies","ARRAY_BUFFER","NativeArrayBuffer","forced","text","area","contentEditable","res","execCommand","navigator","clipboard","writeText","Promise","resolve","reject","sendRequest","url","method","requestModifier","config","withCredentials","params","request","status","validateNewValueMode","includes","reEscapeList","fieldPropsList","useFormProps","modelValue","multiple","displayValue","displayValueHtml","dropdownIcon","options","optionValue","optionLabel","optionDisable","hideSelected","hideDropdownIcon","fillInput","maxValues","optionsDense","optionsDark","optionsSelectedClass","optionsHtml","optionsCover","menuShrink","menuAnchor","menuSelf","menuOffset","popupContentClass","popupContentStyle","useInput","useChips","newValueMode","mapOptions","emitValue","inputDebounce","inputClass","inputStyle","autocomplete","transitionShow","transitionHide","behavior","onNewValue","onFilter","inputTimer","innerValueCache","optionScopeCache","hasDialog","userInputValue","filterId","defaultInputValue","transitionShowComputed","searchBuffer","searchBufferExp","menu","dialog","optionIndex","inputValue","dialogFieldFocused","innerLoadingIndicator","inputRef","targetRef","menuRef","dialogRef","menuContentRef","nameProp","useFormInputNameAttr","onComposition","useKeyComposition","onInput","state","innerValue","mapNull","cache","values","map","getOption","innerFieldProps","forEach","isOptionsDark","hasValue","fieldValueIsFilled","computedInputClass","cls","menuContentClass","noOptions","selectedString","opt","getOptionLabel","join","needsHtmlFn","html","valueAsHtml","some","focused","selectedScope","selected","removeAtIndex","removeAtIndexAndFocus","toggleOption","optionScope","optionEls","disable","isOptionDisabled","itemProps","clickable","active","activeClass","computedOptionsSelectedClass","manualFocus","dark","isOptionSelected","desktop","onMousemove","setOptionIndex","option","label","optionWithoutEvents","dropdownArrowIcon","arrow","dropdown","squaredMenu","outlined","standout","borderless","rounded","getOptionValue","getPropValueFn","innerOptionsValue","inputControlEvents","onChange","onKeydown","onTargetKeydown","onKeyup","onTargetAutocomplete","onKeypress","onTargetKeypress","onFocus","selectInputText","stop","onCompositionstart","onCompositionupdate","onCompositionend","getEmittingOptionValue","model","splice","add","unique","updateInputValue","keepOpen","editable","optValue","hidePopup","findIndex","moveOptionSelection","skipInputValue","normalizeToInterval","setInputValue","valueCache","fn","find","propValue","defaultVal","onTargetKeyup","isKeyCode","resetInputValue","keyCode","clearTimeout","needle","toLocaleLowerCase","clearValue","shouldIgnoreKey","newValueModeValid","tabShouldSelect","shiftKey","targetUid","innerLoading","showPopup","optionsLength","Date","now","altKey","ctrlKey","char","keyRepeat","searchRe","split","l","test","mode","closeMenu","prevent","__qPortalInnerRef","scope","QChip","removable","textColor","onRemove","getAllOptions","optionSlot","QItem","QItemSection","QItemLabel","concat","hMergeSlot","getInput","fromDialog","isTarget","splitAttrs","attributes","maxlength","autofocus","disabled","readonly","composing","setTimeout","noFiltering","internal","keepClosed","localFilterId","afterFn","updateMenu","getMenu","QMenu","noParentEvent","onScrollPassive","onBeforeShow","onControlPopupShow","onBeforeHide","onMenuBeforeHide","onShow","onMenuShow","onControlPopupHide","onDialogFieldFocus","onDialogFieldBlur","getDialog","QField","fieldClass","for","itemAligned","filled","stackLabel","listeners","onBlur","rawControl","getControl","before","after","QDialog","onDialogBeforeHide","onHide","onDialogHide","onDialogShow","__updateRefocusTarget","rootRef","onControlFocusin","show","updateMenuPosition","hasPopupOpen","onControlFocusout","updatePreState","mobile","immediate","onBeforeUpdate","onUpdated","apply","floatingLabel","getControlChild","controlEvents","onFocusin","opts","getInnerAppend","separatorValues","bordered","wrapCells","separator","classes","comps","list","QList","QMarkupTable","typeOptions","items","itemsFn","itemsSize","virtualScrollScope","mapFn","item","listenOpts","passive","__getVirtualChildren","onMounted","getTableMiddle","console","defaultSizes","xs","sm","md","lg","xl","reverse","transform","useSizeProps","trackColor","stripe","indeterminate","query","instantFeedback","sizeStyle","useSize","motion","trackStyle","trackClass","modelStyle","modelClass","stripeStyle","role","useFullscreenProps","fullscreen","noRouteFullscreenExit","useFullscreenEmits","historyEntry","fullscreenFillerNode","container","inFullscreen","toggleFullscreen","exitFullscreen","setFullscreen","parentNode","replaceChild","History","scrollIntoView","vmHasRouter","$route","sortDate","useTableSortProps","sortMethod","binaryStateSort","columnSortOrder","useTableSort","computedPagination","colList","setPagination","columnToSort","sortBy","def","computedSortMethod","descending","dir","A","B","s","toLocaleString","toLowerCase","sortOrder","page","useTableFilterProps","filterMethod","useTableFilter","computedFilterMethod","rows","terms","cols","cellValue","lowerTerms","row","haystack","deep","samePagination","oldPag","newPag","prop","fixPagination","p","rowsPerPage","useTablePaginationProps","pagination","rowsPerPageOptions","useTablePaginationState","getCellValue","innerPagination","pag","isServerSide","rowsNumber","sendServerRequest","requestServerInteraction","forceServerRequest","newPagination","useTablePagination","filteredSortedRowsNumber","computedRowsNumber","firstRowIndex","lastRowIndex","isFirstPage","pagesNumber","isLastPage","computedRowsPerPageOptions","count","allRows","firstPage","prevPage","nextPage","lastPage","oldLastPage","currentPage","useTableRowSelectionProps","useTableRowSelectionEmits","useTableRowSelection","computedRows","getRowKey","selectedKeys","hasSelectionMode","singleSelection","multipleSelection","allRowsSelected","every","someRowsSelected","rowsSelectedNumber","isRowSelected","clearSelection","updateSelection","added","payload","getVal","useTableRowExpandProps","expanded","useTableRowExpandEmits","useTableRowExpand","innerExpanded","isRowExpanded","setExpanded","updateExpanded","useTableColumnSelectionProps","visibleColumns","useTableColumnSelection","columns","toUpperCase","computedCols","headerClasses","__tdClass","computedColsMap","names","computedColspan","bottomClass","commonVirtPropsObj","rowKey","iconFirstPage","iconPrevPage","iconNextPage","iconLastPage","title","hideHeader","grid","gridHeader","virtualScroll","noDataLabel","noResultsLabel","loadingLabel","selectedRowsLabel","rowsPerPageLabel","paginationLabel","titleClass","tableStyle","tableClass","tableHeaderStyle","tableHeaderClass","cardContainerClass","cardContainerStyle","cardStyle","cardClass","hideBottom","hideSelectedBanner","hideNoData","hidePagination","onRowClick","onRowDblclick","onRowContextmenu","useFullscreen","virtScrollRef","hasVirtScroll","cardDefaultClass","__containerClass","containerClass","filteredSortedRows","nothingToDisplay","virtProps","resetVirtualScroll","getBody","getGridBody","header","getTHead","topRow","bottomRow","virtSlots","getTBodyTR","topContent","QVirtualScroll","onVScroll","getTBody","unshift","rowEl","offsetTop","info","getProgress","QLinearProgress","bodySlot","pageIndex","getBodyScope","__trClass","bodyCell","bodyCellCol","slot","getBodyCellScope","getBodySelectionScope","QCheckbox","adding","onDblclick","onContextmenu","injectBodyCommonScope","c","defineProperty","enumerable","rowIndex","format","marginalsScope","getTopDiv","topLeft","topRight","topSelection","hasSelection","vaue","topClass","headerSelectedValue","getTHeadTR","headerCell","getHeaderScope","headerCellCol","QTh","onMultipleSelectionSet","navIcon","ico","getBottomDiv","message","noResults","noData","warning","bottom","selectedRecords","getPaginationDiv","onPagSelection","control","paginationSlot","hasOpts","recordsPerPage","QSelect","btnProps","getGridHeader","QSeparator"],"mappings":"iIAAA,wCAMeA,oCAAgB,CAC7BC,KAAM,MAENC,MAAO,CACLA,MAAOC,OACPC,UAAWC,SAGbC,MAAO,CAAE,SAETC,MAV6B,SAUtBL,EAVsB,GAUE,IAAfM,EAAe,EAAfA,MAAOC,EAAQ,EAARA,KACfC,EAAKC,kCACMC,EAASF,EAAlBG,MAASD,GAEjB,OAAO,WACL,QAAoB,IAAhBV,EAAMA,MACR,OAAOY,eAAE,KAAM,CACbC,OAA2B,IAApBb,EAAME,UAAqB,0BAA4B,IAC7DY,eAAMR,EAAMS,UAGjB,IAAIC,EAAKC,EACHlB,EAAOS,EAAGU,MAAMC,IAEtB,GAAIpB,GAEF,GADAiB,EAAMhB,EAAMA,MAAMoB,QAASrB,QACf,IAARiB,EAAkB,YAGtBA,EAAMhB,EAAMA,MAAMgB,IAGpB,IAAqB,IAAjBA,EAAIK,SAAmB,CACzB,IAAMC,EAAuB,UAAdN,EAAIO,MACf,UACA,OAEJN,EAAQO,eAAYlB,EAAMS,QAAS,IACnCE,EAAOK,GACLV,eAAEa,OAAO,CACPZ,MAAOG,EAAIU,YACX3B,KAAMW,EAAGiB,QAAQC,MAAMC,gBAK3BZ,EAAQH,eAAMR,EAAMS,SAGtB,IAAMe,EAAO,CACXjB,MAAOG,EAAIe,YACc,IAApB/B,EAAME,UAAqB,2BAA6B,IAC7D8B,MAAOhB,EAAIiB,aAUb,OAPqB,IAAjBjB,EAAIK,WACNS,EAAKI,QAAU,SAAAC,GACbnC,EAAMA,MAAMoC,KAAKpB,GACjBT,EAAK,QAAS4B,KAIXvB,eAAE,KAAMkB,EAAMb,Q,4NCpEfoB,ECAAC,E,yFDAZ,SAAYD,GACV,yBACA,oBAFF,CAAYA,MAAW,KCAvB,SAAYC,GACV,mBADF,CAAYA,MAAW,K,ICMXC,E,aAAZ,SAAYA,GACV,uBACA,yBACA,mBACA,0CAJF,CAAYA,MAAc,KAwBnB,IAAMC,EAA6C,CACxDC,WAAY,WAAF,8CAAE,WAAOC,GAAP,iFAAeC,EAAA,KAAOC,KAAK,CAAE7C,KAAMsC,EAAYQ,WAA/C,2CAAF,sDAAE,GACZC,QAAS,WAAF,8CAAE,WAAOJ,GAAP,iFAAeC,EAAA,KAAOC,KAAK,CAAE7C,KAAMsC,EAAYU,QAA/C,2CAAF,sDAAE,GACTC,mBAAoB,WAAF,8CAAE,WAAON,GAAP,iFAAeC,EAAA,KAAOC,KAAK,CAAE7C,KAAMuC,EAAYW,QAA/C,2CAAF,sDAAE,GACpBC,UAAW,WAAF,8CAAE,WAAOR,GAAP,qHAAF,sDAAE,IAGP,SAAUS,EAAkBC,EAAoCC,GACpE,IAAMC,EAAS,OAAAC,EAAA,MAAiC,IAyBhD,OAxBS,OAALH,QAAK,IAALA,KAAOX,YAAP,OAAqBY,QAArB,IAAqBA,KAAQZ,cAC/Ba,EAAOb,WAAP,yDAAoB,WAAOe,GAAP,2FACdJ,QADc,IACdA,MAAOX,WADO,gCACaW,EAAMX,WAAWe,GAD9B,iBAEdH,QAFc,IAEdA,MAAQZ,WAFM,gCAEcY,EAAOZ,WAAWe,GAFhC,2CAApB,wDAKO,OAALJ,QAAK,IAALA,KAAOJ,oBAAP,OAA6BK,QAA7B,IAA6BA,KAAQL,sBACvCM,EAAON,mBAAP,yDAA4B,WAAOQ,GAAP,2FACtBJ,QADsB,IACtBA,MAAOJ,mBADe,gCACaI,EAAMJ,mBAAmBQ,GADtC,iBAEtBH,QAFsB,IAEtBA,MAAQL,mBAFc,gCAEcK,EAAOL,mBAAmBQ,GAFxC,2CAA5B,wDAKO,OAALJ,QAAK,IAALA,KAAON,SAAP,OAAkBO,QAAlB,IAAkBA,KAAQP,WAC5BQ,EAAOR,QAAP,yDAAiB,WAAOU,GAAP,2FACXJ,QADW,IACXA,MAAON,QADI,gCACaM,EAAMN,QAAQU,GAD3B,iBAEXH,QAFW,IAEXA,MAAQP,QAFG,gCAEcO,EAAOP,QAAQU,GAF7B,2CAAjB,wDAKO,OAALJ,QAAK,IAALA,KAAOF,WAAP,OAAoBG,QAApB,IAAoBA,KAAQH,aAC9BI,EAAOJ,UAAP,yDAAmB,WAAOM,GAAP,2FACbJ,QADa,IACbA,MAAOF,UADM,gCACaE,EAAMF,UAAUM,GAD7B,iBAEbH,QAFa,IAEbA,MAAQH,UAFK,gCAEcG,EAAOH,UAAUM,GAF/B,2CAAnB,uDAKKF,EASF,SAAeG,EAAtB,oC,8DAAO,aAELC,GAFK,2HACJJ,EADI,KACIE,EADJ,KAICG,EAA6B,CACjClB,WAAU,iBAAEiB,QAAF,IAAEA,OAAF,EAAEA,EAAejB,kBAAjB,QACFD,EAAsBC,WAC9BK,QAAO,iBAAEY,QAAF,IAAEA,OAAF,EAAEA,EAAeZ,eAAjB,QACCN,EAAsBM,QAC9BE,mBAAkB,iBAAEU,QAAF,IAAEA,OAAF,EAAEA,EAAeV,0BAAjB,QACVR,EAAsBQ,mBAC9BE,UAAS,iBAAEQ,QAAF,IAAEA,OAAF,EAAEA,EAAeR,iBAAjB,QACDV,EAAsBU,WAZ3B,KAcGI,EAdH,cAeEf,EAAeqB,SAfjB,SAkBErB,EAAesB,MAlBjB,SAqBEtB,EAAeuB,iBArBjB,mCAgBKH,EAAQlB,WAAWe,GAhBxB,iCAiBM,GAjBN,wBAmBKG,EAAQb,QAAQU,GAnBrB,kCAoBM,GApBN,yBAsBKG,EAAQX,mBAAmBQ,GAtBhC,kCAuBM,GAvBN,yBAyBKG,EAAQT,UAAUI,GAzBvB,kCA0BM,GA1BN,4C,wBA2CA,SAAeS,EAAtB,oC,8DAAO,WACLC,EACAN,GAFK,mHAIYM,EAJZ,GAIEV,EAJF,cAKiBG,EAAkBO,EAAaN,GALhD,UAKCO,EALD,QAMDA,EANC,8CAOIC,GAPJ,gCASIZ,GATJ,2C,wUC3FQxD,oCAAgB,CAC7BC,KAAM,QAENoE,cAAc,EAEdnE,MAAO,8EACFoE,QACAC,QACAC,QACAC,QAJA,IAMHC,WAAYrE,QACZsE,UAAWtE,QACXuE,mBAAoBvE,QAEpBwE,eAAgBxE,QAChByE,UAAWzE,QACX0E,QAAS1E,QAET2E,IAAK3E,QACL4E,MAAO5E,QAEP6E,OAAQ7E,QAER8E,OAAQ,CACNC,KAAMC,OACNC,UAAWC,QAEbC,KAAM,CACJJ,KAAMC,OACNC,UAAWC,QAEbE,OAAQ,CACNL,KAAMM,MACNJ,UAAWK,QAGbC,aAAc,CACZ3E,aAAS,GAGX4E,cAAexF,QAEfyF,UAAW,CACTV,KAAMC,OACNpE,QAAS,MAEX8E,SAAU,CACRX,KAAMC,OACNpE,QAAS,QAIbX,MAAO,GAAF,sBACA0F,QADA,CAEH,QAAS,eAGXzF,MA1D6B,SA0DtBL,EA1DsB,GA0DS,IACV+F,EAAgBC,EAAiBC,EAD7C3F,EAAsB,EAAtBA,MAAOC,EAAe,EAAfA,KAAM2F,EAAS,EAATA,MACvBC,EAAgB,KAEd3F,EAAKC,kCACHE,EAAUH,EAAVG,MACAD,EAAOC,EAAPD,GAEF0F,EAAWC,iBAAI,MACfC,EAAUD,kBAAI,GAEdE,EAAoBC,uBAAS,kBACZ,IAArBxG,EAAMwE,aACsB,IAAzBxE,EAAM2E,kBAGL8B,EAASC,eAAQ1G,EAAOU,GAC9B,EAAkDiG,iBAA1CC,EAAR,EAAQA,aAAcC,EAAtB,EAAsBA,WAAYC,EAAlC,EAAkCA,YAClC,EAA2CC,iBAAnCC,EAAR,EAAQA,gBAAiBC,EAAzB,EAAyBA,cACzB,EAAwCC,eAAclH,EAAOsG,GAArDa,EAAR,EAAQA,WAAYC,EAApB,EAAoBA,gBACpB,EAA0EC,eAAgBrH,EAAOsH,IAAzFC,EAAR,EAAQA,kBAAmBC,EAA3B,EAA2BA,kBAAmBC,EAA9C,EAA8CA,wBAE9C,EAA8BC,eAAU,CAAEpB,YAAlCqB,EAAR,EAAQA,SAAUC,EAAlB,EAAkBA,QAElB,EAAiBC,eAAe,CAC9BvB,UAASsB,UAASE,cAAYC,cAC9BxB,oBACAyB,gBAAgB,IAHVC,EAAR,EAAQA,KAMR,GAAiDC,eAAU1H,EAAI4F,EAAU+B,IAAjEC,GAAR,GAAQA,WAAYC,GAApB,GAAoBA,WAAYC,GAAhC,GAAgCA,aAE1BC,GAAoB,CACxBZ,WACAvB,WACAoC,MAAO,kBAAM7H,EAAM8H,KACnBC,eAJwB,SAIRC,GACd,IAAyB,IAArB3I,EAAMwE,aAAyC,IAAlB8B,EAAQsC,MAYvC,OAXAX,EAAKU,IAIQ,eAAXA,EAAEzD,MAECyD,EAAEE,OAAOC,UAAUC,SAAS,wBAE/BC,eAAeL,IAGV,IAKPM,GAAezC,uBAAS,kBAC5B0C,eACElJ,EAAMiF,UACY,IAAhBjF,EAAM+E,MAAiB,gBAAkB,gBAE3CrE,EAAGyI,KAAKC,QAINC,GAAa7C,uBAAS,kBACV,IAAhBxG,EAAM+E,MACFkE,GAAaL,MACbM,eAAclJ,EAAMsF,MAAQ,YAAa5E,EAAGyI,KAAKC,QAGjDE,GAAY9C,uBAAS,mBACP,IAAjBxG,EAAMgF,OAAkB,kBAAoB,MACzB,IAAjByB,EAAOmC,MAAiB,uBAAyB,OAGhDW,GAAW/C,uBAAS,kBACJ,IAApBxG,EAAMyE,UACF,CAAEvC,QAASsH,IACX,MAGAC,GAAejD,uBAAS,kBACV,IAAlBF,EAAQsC,QAAuC,IAArB5I,EAAMwE,cAclC,SAASkF,KACP,IAAIC,EAAOvD,EAASwC,MAEhBe,IAAkD,IAA1CA,EAAKZ,SAASa,SAASC,iBACjCF,EAAOA,EAAKG,cAAc,kCAAoCH,EAC9DA,EAAKD,SAIT,SAAS5B,GAAY3F,GAenB,GAdA0E,IACAI,IAEAd,GAAoC,IAApBnG,EAAM4E,UAClBgF,SAASC,cACT,KAEJE,eAAYC,IAEZ5B,KACAd,KAEAvB,OAAiB,OAEL,IAAR5D,IAAmBnC,EAAM2F,eAAiB3F,EAAMiK,aAAc,CAChE,IAAMC,EAAMC,eAAShI,GAErB,QAAiB,IAAb+H,EAAIE,KAAiB,CACvB,MAAsBzC,EAASiB,MAAMyB,wBAA7BC,EAAR,EAAQA,IAAKF,EAAb,EAAaA,KACbrE,EAAiB,CAAEqE,KAAMF,EAAIE,KAAOA,EAAME,IAAKJ,EAAII,IAAMA,SAIrC,IAApBtE,IACFA,EAAkBuE,oBAChB,kBAAM7J,EAAG8J,OAAOC,MAAQ,IAAM/J,EAAG8J,OAAOE,OAAS,IAAM1K,EAAMsF,KAAO,IAAMtF,EAAMiF,OAAS,IAAMvE,EAAGyI,KAAKC,MACvGuB,MAIkB,IAAlB3K,EAAM6E,SACR+E,SAASC,cAAce,OAGzBhE,GAAa,WACX+D,MACkB,IAAlB3K,EAAM6E,SAAoB6E,QAE5B5C,IAEAE,GAAgB,YAEa,IAAvBtG,EAAGmK,SAASC,GAAGC,MAGjB9E,EAAiBjG,EAAMyE,UACvB2B,EAASwC,MAAMoC,SAGjBL,KACApK,EAAK,OAAQ4B,KACZnC,EAAMiL,oBAGX,SAASlD,GAAY5F,GACnB0E,IACAI,IAEAiE,IAAc,GAGM,OAAlB/E,QAGU,IAARhE,IAEyB,IAAtBA,EAAIgJ,eAGThF,EAAcuD,QAGhB1C,GAAgB,WACdqB,KACA9H,EAAK,OAAQ4B,KACZnC,EAAMiL,oBAGX,SAASC,GAAeE,GACtBrF,OAAiB,OAEO,IAApBC,IACFA,IACAA,OAAkB,IAGL,IAAXoF,IAAqC,IAAlB9E,EAAQsC,QAC7ByC,eAAerB,IACfvC,IACA6D,eAAmB/C,IACnBgD,eAAgBC,KAIpB,SAASlE,KACgB,OAAnBK,EAASiB,YAAyC,IAAvB5I,EAAM0F,eACnC6B,EAAkBqB,MAAQ6C,eAAgB9D,EAASiB,MAAO5I,EAAM0F,cAChE8B,EAAkBD,EAAkBqB,MAAO+B,KAI/C,SAASnB,GAAab,IAGG,IAAnB1C,GACFyF,eAAiB/K,EAAOgI,GACxBpI,EAAK,QAASoI,IAGd1C,GAAiB,EAIrB,SAAS+D,GAAY7H,IAGM,IAAvBsH,GAAab,QACoC,IAA9C+C,eAAcvF,EAASwC,MAAOzG,EAAI0G,SAErCa,KAIJ,SAAS8B,GAAarJ,GACpB5B,EAAK,cACL0H,EAAK9F,GAGP,SAASwI,KACP,IAAMiB,EAAKxF,EAASwC,MAET,OAAPgD,GAAkC,OAAnBjE,EAASiB,OAI5BiD,eAAY,CACVD,KACArG,OAAQvF,EAAMuF,OACdoC,SAAUA,EAASiB,MACnBK,aAAcA,GAAaL,MAC3BS,WAAYA,GAAWT,MACvB7C,iBACAjB,IAAK9E,EAAM8E,IACXC,MAAO/E,EAAM+E,MACba,UAAW5F,EAAM4F,UACjBC,SAAU7F,EAAM6F,WAIpB,SAASsC,KACP,OAAOvH,eACLkL,gBACA,CAAE/L,KAAMoH,EAAWyB,MAAOmD,QAAQ,IAClC,kBACoB,IAAlBzF,EAAQsC,MACJhI,eAAE,MAAD,eAAC,kBACGsF,GADJ,IAECG,IAAKD,EACL4F,UAAW,EACXnL,MAAO,CACL,kCAAoCyI,GAAUV,MAC9C1C,EAAMrF,OAERmB,MAAO,CAAEkE,EAAMlE,MAAOoF,EAAgBwB,QACnCW,GAASX,OACX9H,eAAMR,EAAMS,UACf,QAUV,OArMAwJ,mBAAMd,IAAc,SAAAwC,IACN,IAARA,GACFC,eAAaV,IACbW,eAAgB5D,MAGhBgD,eAAgBC,IAChBF,eAAmB/C,QAyLvB6D,6BAAgBlB,IAGhBjL,OAAOoM,OAAO1L,EAAO,CAAE+I,SAAOiB,oBAEvBrC,O,oCCzWX,IAAIgE,EAAa,EAAQ,QACrBC,EAAmB,EAAQ,QAI/BC,EAAOC,QAAUH,EAAW,OAAO,SAAUI,GAC3C,OAAO,WAAiB,OAAOA,EAAKC,KAAMC,UAAUC,OAASD,UAAU,QAAK1I,MAC3EqI,I,4RCHGO,EAAgB,IAEhBC,EAAgB,CACpB,QACA,SACA,MACA,cACA,eACA,aAGIC,EAAQxH,MAAMyH,UAAUD,MAE1BE,OAAW,EAIPC,EAAWvD,SAASwD,cAAc,OAClCC,EAASzD,SAASwD,cAAc,OAEtCD,EAASG,aAAa,MAAO,OAC7BH,EAASnL,MAAMyI,MAAQ,MACvB0C,EAASnL,MAAM0I,OAAS,MACxByC,EAASnL,MAAMuL,SAAW,OAE1BF,EAAOrL,MAAMyI,MAAQ,SACrB4C,EAAOrL,MAAM0I,OAAS,MAEtBd,SAAS4D,KAAKC,YAAYN,GAC1BA,EAASM,YAAYJ,GACrBF,EAASO,YAAc,IAEvBR,EAAWC,EAASO,YAAc,EAElCP,EAASQ,SAGX,IAAIC,EAAK,EAEHC,OAAgG,IAA1DC,OAAOC,iBAAiBnE,SAAS4D,MAAMQ,eAC/EC,OACA,SAAUL,EAAIM,GACd,IAAMC,EAAOP,EAAK,MAEdQ,EAAaxE,SAASyE,eAAeF,GAEtB,OAAfC,IACFA,EAAaxE,SAASwD,cAAc,SACpCgB,EAAWlJ,KAAO,WAClBkJ,EAAWR,GAAKO,EAChBvE,SAAS0E,KAAKb,YAAYW,IAGxBA,EAAWG,cAAgBL,IAC7BE,EAAWG,YAAcL,EACzBE,EAAWI,UAAX,WAA4BZ,EAA5B,0BAAkDM,EAAlD,iCAIN,SAASO,EAAOC,EAAK9N,GACnB,OAAO8N,EAAM9N,EAGf,SAAS+N,EACPC,EACA3N,EACA4N,EACAC,EACAC,EACA3F,EACA4F,EACAC,GAEA,IACEC,EAAaN,IAAWd,OAASlE,SAASuF,kBAAoBvF,SAASwF,gBAAkBR,EACzFS,GAA4B,IAAfN,EAAsB,cAAgB,eACnDO,EAAU,CACRC,YAAa,EACbC,gBAAiBR,EAAcC,EAC/BQ,cAAe,EACfC,aAAcV,EACdW,WAAYV,GA8BhB,IA3BmB,IAAfF,GACEH,IAAWd,QACbwB,EAAQC,YAAczB,OAAO8B,aAAe9B,OAAO+B,SAAWjG,SAAS4D,KAAKE,YAAc,EAC1F4B,EAAQE,gBAAkB1B,OAAOgC,aAGjCR,EAAQC,YAAcL,EAAWxB,WACjC4B,EAAQE,gBAAkBN,EAAWa,aAEvCT,EAAQG,cAAgBP,EAAWc,aAEvB,IAAR5G,IACFkG,EAAQC,cAA4B,IAAbrC,EAAoBoC,EAAQG,cAAgBH,EAAQE,eAAiB,GAAKF,EAAQC,eAIvGX,IAAWd,QACbwB,EAAQC,YAAczB,OAAOmC,aAAenC,OAAOoC,SAAWtG,SAAS4D,KAAK2C,WAAa,EACzFb,EAAQE,gBAAkB1B,OAAOsC,cAGjCd,EAAQC,YAAcL,EAAWiB,UACjCb,EAAQE,gBAAkBN,EAAWmB,cAEvCf,EAAQG,cAAgBP,EAAWoB,cAGnB,OAAdzB,EACF,IAAK,IAAIjD,EAAKiD,EAAU0B,uBAA+B,OAAP3E,EAAaA,EAAKA,EAAG2E,wBACX,IAApD3E,EAAG9C,UAAUC,SAAS,4BACxBuG,EAAQI,aAAe9D,EAAIyD,IAKjC,GAAiB,OAAbP,EACF,IAAK,IAAIlD,EAAKkD,EAAS0B,mBAA2B,OAAP5E,EAAaA,EAAKA,EAAG4E,oBACN,IAApD5E,EAAG9C,UAAUC,SAAS,4BACxBuG,EAAQK,WAAa/D,EAAIyD,IAK/B,GAAIpO,IAAU2N,EAAQ,CACpB,IACE6B,EAAavB,EAAW7E,wBACxBqG,EAAYzP,EAAMoJ,yBAED,IAAf0E,GACFO,EAAQI,aAAegB,EAAUtG,KAAOqG,EAAWrG,KACnDkF,EAAQK,WAAae,EAAUjG,QAG/B6E,EAAQI,aAAegB,EAAUpG,IAAMmG,EAAWnG,IAClDgF,EAAQK,WAAae,EAAUhG,QAG7BkE,IAAWd,SACbwB,EAAQI,aAAeJ,EAAQC,aAEjCD,EAAQK,WAAaL,EAAQG,cAAgBH,EAAQI,YAGvD,OAAOJ,EAGT,SAASqB,EAAW/B,EAAQgC,EAAQ7B,EAAY3F,GAC1CwF,IAAWd,QACM,IAAfiB,IACU,IAAR3F,IACFwH,IAAuB,IAAb1D,EAAoBtD,SAAS4D,KAAKwC,YAAclC,OAAOgC,WAAa,GAAKc,GAErF9C,OAAO+C,SAASD,EAAQ9C,OAAOmC,aAAenC,OAAOoC,SAAWtG,SAAS4D,KAAK2C,WAAa,IAG3FrC,OAAO+C,SAAS/C,OAAO8B,aAAe9B,OAAO+B,SAAWjG,SAAS4D,KAAKE,YAAc,EAAGkD,IAGnE,IAAf7B,IACK,IAAR3F,IACFwH,IAAuB,IAAb1D,EAAoB0B,EAAOoB,YAAcpB,EAAOkC,YAAc,GAAKF,GAE/EhC,EAAOlB,WAAakD,GAGpBhC,EAAOuB,UAAYS,EAIvB,SAASG,EAASC,EAASC,EAAMC,EAAMC,GACrC,GAAID,GAAQC,EAAM,OAAO,EAEzB,IACEC,EAASH,EAAKpE,OACdwE,EAAUC,KAAKC,MAAML,EAAOpE,GAC5B0E,EAAQF,KAAKC,OAAOJ,EAAK,GAAKrE,GAAiB,EAE7C2E,EAAQT,EAAQhE,MAAMqE,EAASG,GAAOE,OAAOjD,EAAO,GASxD,OAPIyC,EAAOpE,IAAkB,IAC3B2E,GAASR,EAAKjE,MAAMqE,EAAUvE,EAAeoE,GAAMQ,OAAOjD,EAAO,IAE/D0C,EAAKrE,IAAkB,GAAKqE,IAAOC,IACrCK,GAASR,EAAKjE,MAAMmE,EAAIK,EAAQ1E,GAAe4E,OAAOjD,EAAO,IAGxDgD,EAGT,IAAME,EAAwB,CAC5BC,uBAAwB,CACtB1M,KAAM,CAAE2M,OAAQ1M,QAChBpE,QAAS,MAGX+Q,8BAA+B,CAC7B5M,KAAM,CAAE2M,OAAQ1M,QAChBpE,QAAS,GAGXgR,6BAA8B,CAC5B7M,KAAM,CAAE2M,OAAQ1M,QAChBpE,QAAS,GAGXiR,sBAAuB,CACrB9M,KAAM,CAAE2M,OAAQ1M,QAChBpE,QAAS,IAGXkR,6BAA8B,CAC5B/M,KAAM,CAAE2M,OAAQ1M,QAChBpE,QAAS,GAGXmR,2BAA4B,CAC1BhN,KAAM,CAAE2M,OAAQ1M,QAChBpE,QAAS,GAGXoR,aAAc,CAAEN,OAAQ1M,SAGbiN,EAAsBnS,OAAOoS,KAAKV,GAElCW,EAAwB,gBACnCC,wBAAyBpS,QACzBqS,gBAAiBC,UACdd,GAGE,SAASe,EAAT,GAGJ,IAMGC,EAAiBC,EAAaC,EAAiDC,EARnFC,EAEC,EAFDA,oBAAqBC,EAEpB,EAFoBA,uBAAwBC,EAE5C,EAF4CA,mBAC7CC,EACC,EADDA,8BAEM1S,EAAKC,kCAEHT,EAAuBQ,EAAvBR,MAAOO,EAAgBC,EAAhBD,KAAMI,EAAUH,EAAVG,MACbD,EAAOC,EAAPD,GAE+CyS,EAAwB,GAEzEC,EAAO,OAASxF,IAEhByF,EAA6BhN,iBAAI,GACjCiN,EAA4BjN,iBAAI,GAChCkN,EAAiClN,iBAAI,IAErCwI,EAAYxI,iBAAI,MAChByI,EAAWzI,iBAAI,MACfmN,EAAanN,iBAAI,MAEjBoN,EAA0BpN,iBAAI,CAAE6K,KAAM,EAAGC,GAAI,IAE7CuC,EAAclN,uBAAS,uBAA8B,IAAvBxG,EAAMmS,aAA0BnS,EAAMmS,aAAe,YAEnD,IAAlCe,IACFA,EAAgC1M,uBAAS,kBAAMxG,EAAMgS,0BAGvD,IAAM2B,EAAanN,uBAAS,kBAAM0M,EAA8BtK,MAAQ,IAAM5I,EAAMuS,2BAE9EqB,EAAmBpN,uBAAS,kBAChCmN,EAAW/K,MAAQ,IAAM5I,EAAM8R,8BAAgC,IAAM9R,EAAM+R,gCAM7E,SAAS8B,IACPC,EAAwBlB,GAAa,GAGvC,SAASmB,EAASC,GAChBF,OAAoC,IAAZE,EAAqBpB,EAAcoB,GAG7D,SAASnD,EAAUmD,EAASC,GAC1B,IAAMC,EAAWlB,IAEjB,QAAiB,IAAbkB,GAAoC,OAAbA,GAA2C,IAAtBA,EAASC,SAAzD,CAIA,IAAMC,EAAgBzF,EACpBuF,EACAjB,IACApE,EAAUjG,MACVkG,EAASlG,MACT5I,EAAMuS,wBACN7R,EAAGyI,KAAKC,IACRpJ,EAAMiS,6BACNjS,EAAMkS,4BAGRW,IAAwBuB,EAAc5E,gBAAkB6E,EAAqBD,EAAc5E,gBAE3F8E,EACEJ,EACAE,EACA9C,KAAKiD,IAAIxB,EAAoBnK,MAAQ,EAAG0I,KAAKkD,IAAI,EAAGC,SAAST,EAAS,KAAO,IAC7E,EACAjH,EAAc2H,QAAQT,IAAS,EAAIA,EAAQrB,GAAe,GAAKoB,EAAUpB,EAAc,MAAQ,UAInG,SAAS+B,IACP,IAAMT,EAAWlB,IAEjB,QAAiB,IAAbkB,GAAoC,OAAbA,GAA2C,IAAtBA,EAASC,SAAzD,CAIA,IACEC,EAAgBzF,EACduF,EACAjB,IACApE,EAAUjG,MACVkG,EAASlG,MACT5I,EAAMuS,wBACN7R,EAAGyI,KAAKC,IACRpJ,EAAMiS,6BACNjS,EAAMkS,4BAER0C,EAAgB7B,EAAoBnK,MAAQ,EAC5CiM,EAAgBT,EAAc3E,cAAgB2E,EAAc1E,YAAc0E,EAAczE,UAAY2D,EAA0B1K,MAEhI,GAAI+J,IAAoByB,EAAc7E,YAItC,GAAI6E,EAAc3E,eAAiB,EACjC6E,EAA2BJ,EAAUE,EAAe,EAAG,OADzD,CAKAvB,IAAwBuB,EAAc5E,gBAAkB6E,EAAqBD,EAAc5E,gBAE3FsF,EAAyBrB,EAAwB7K,MAAMsI,MAEvD,IAAM6D,EAAiBzD,KAAKC,MAAM6C,EAAc3E,cAC5C6B,KAAKkD,IAAIJ,EAAc5E,eAAgB4E,EAAczE,WACrD2B,KAAKiD,IAAIzB,EAAoB8B,GAAiBR,EAAc5E,eAAiB,IAEjF,GAAIuF,EAAiB,GAAKzD,KAAK0D,KAAKZ,EAAc7E,cAAgBwF,EAChET,EACEJ,EACAE,EACAQ,EACAR,EAAc3E,cAAgB2E,EAAczE,UAAYwD,EAAsBzB,OAAOjD,EAAO,QALhG,CAWA,IACEuF,EAAU,EACViB,EAAab,EAAc7E,YAAc6E,EAAc1E,YACvDnK,EAAS0P,EAEX,GAAIA,GAAcJ,GAAiBI,EAAab,EAAc5E,gBAAkB6D,EAA2BzK,MACzGqM,GAAc5B,EAA2BzK,MACzCoL,EAAUP,EAAwB7K,MAAMsI,KACxC3L,EAAS0P,OAGT,IAAK,IAAIC,EAAI,EAAGD,GAAc9B,EAAuB+B,IAAOlB,EAAUY,EAAeM,IACnFD,GAAc9B,EAAuB+B,GACrClB,GAAWlH,EAIf,MAAOmI,EAAa,GAAKjB,EAAUY,EACjCK,GAAcnC,EAAoBkB,GAC9BiB,GAAcb,EAAc5E,gBAC9BwE,IACAzO,EAAS0P,GAGT1P,EAASuN,EAAoBkB,GAAYiB,EAI7CX,EACEJ,EACAE,EACAJ,EACAzO,MAIJ,SAAS+O,EAA4BJ,EAAUE,EAAeJ,EAASzO,EAAQhE,GAC7E,IAAM4T,EAA8B,kBAAV5T,GAAsBA,EAAMmT,QAAQ,WAAa,EACrEU,GAA0B,IAAfD,EAAsB5T,EAAM8T,QAAQ,SAAU,IAAM9T,EAC/D+T,OAA0B,IAAbF,EAAsBA,EAAW,QAGlDlE,EAAOI,KAAKkD,IAAI,EAAGR,EAAUT,EAA+B3K,MAAO0M,IACnEnE,EAAKD,EAAOqC,EAA+B3K,MAAM6I,MAE/CN,EAAK4B,EAAoBnK,QAC3BuI,EAAK4B,EAAoBnK,MACzBsI,EAAOI,KAAKkD,IAAI,EAAGrD,EAAKoC,EAA+B3K,MAAM6I,QAG/DkB,EAAkByB,EAAc7E,YAEhC,IAAMgG,EAAerE,IAASuC,EAAwB7K,MAAMsI,MAAQC,IAAOsC,EAAwB7K,MAAMuI,GAEzG,IAAqB,IAAjBoE,QAAuC,IAAbH,EAA9B,CAKA,MAA0BxL,SAAlBC,EAAR,EAAQA,cACR,IACmB,IAAjB0L,GACwB,OAArB/B,EAAW5K,OACX4K,EAAW5K,QAAUiB,IACwB,IAA7C2J,EAAW5K,MAAMG,SAASc,GAC7B,CACA,IAAM2L,EAAW,WACfhC,EAAW5K,MAAMc,SAGnBG,EAAc4L,iBAAiB,OAAQD,GAAU,GAEjDE,uBAAsB,WACpB7L,EAAc8L,oBAAoB,OAAQH,GAAU,MAIxD3H,EAAkBuF,EAAMY,EAAU9C,EAAO,GAEzC,IAAM0E,OAA0B,IAAbR,EAAsBtC,EAAmB9F,MAAMkE,EAAM8C,GAAStC,OAAOjD,EAAO,GAAK,EAEpG,IAAqB,IAAjB8G,EAAuB,CAKzB,IAAMM,EAAS1E,GAAMsC,EAAwB7K,MAAMsI,MAAQA,GAAQuC,EAAwB7K,MAAMuI,GAC7FsC,EAAwB7K,MAAMuI,GAC9BA,EAEJsC,EAAwB7K,MAAQ,CAAEsI,OAAMC,GAAI0E,GAC5CxC,EAA2BzK,MAAQmI,EAAQoC,EAAuBL,EAAoB,EAAG5B,GACzFoC,EAA0B1K,MAAQmI,EAAQoC,EAAuBL,EAAoB3B,EAAI4B,EAAoBnK,OAE7G8M,uBAAsB,WAChBjC,EAAwB7K,MAAMuI,KAAOA,GAAMwB,IAAoByB,EAAc7E,cAC/EkE,EAAwB7K,MAAQ,CAAEsI,KAAMuC,EAAwB7K,MAAMsI,KAAMC,MAC5EmC,EAA0B1K,MAAQmI,EAAQoC,EAAuBL,EAAoB3B,EAAI4B,EAAoBnK,WAKnH8M,uBAAsB,WAGpB,GAAI/C,IAAoByB,EAAc7E,YAAtC,EAIqB,IAAjBgG,GACFT,EAAyB5D,GAG3B,IACE4E,EAAYhD,EAAmB9F,MAAMkE,EAAM8C,GAAStC,OAAOjD,EAAO,GAClEsH,EAAWD,EAAY1B,EAAc1E,YAAc2D,EAA2BzK,MAC9EoN,EAASD,EAAWjD,EAAoBkB,GAEtCiC,EAAiBF,EAAWxQ,EAEhC,QAAiB,IAAb6P,EAAqB,CACvB,IAAMc,EAAWJ,EAAYF,EACvBrG,EAAc6E,EAAc7E,YAAc2G,EAEhDD,GAAgC,IAAfd,GAAuB5F,EAAcwG,GAAYC,EAASzG,EAAc6E,EAAc5E,eACnGD,EAEe,QAAb6F,EACIY,EAAS5B,EAAc5E,eACvBuG,GAAyB,UAAbX,EAAuB,EAAI9D,KAAK6E,OAAO/B,EAAc5E,eAAiBsD,EAAoBkB,IAAa,IAI/HrB,EAAkBsD,EAElBtF,EACEuD,EACA+B,EACAjW,EAAMuS,wBACN7R,EAAGyI,KAAKC,KAGVgN,EAAWpC,YAvFXoC,EAAWpC,GA2Ff,SAASc,EAA0B5D,GACjC,IAAMmF,EAAY7C,EAAW5K,MAE7B,GAAIyN,EAaF,IAZA,IAUEpF,EAAMqF,EATNC,EAAWvJ,EAAMwJ,KAAKH,EAAUE,UAC7BE,QAAO,SAAA7K,GAAE,OAAwD,IAApDA,EAAG9C,UAAUC,SAAS,6BACtC2N,EAAiBH,EAAS1J,OAC1B8J,GAA2C,IAAlC3W,EAAMuS,wBACX,SAAA3G,GAAE,OAAIA,EAAGvB,wBAAwBI,OACjC,SAAAmB,GAAE,OAAIA,EAAGgL,cAGb1I,EAAQgD,EAGD2F,EAAI,EAAGA,EAAIH,GAAiB,CACnCzF,EAAO0F,EAAOJ,EAAUM,IACxBA,IAEA,MAAOA,EAAIH,IAAsF,IAApEH,EAAUM,GAAI/N,UAAUC,SAAS,+BAC5DkI,GAAQ0F,EAAOJ,EAAUM,IACzBA,IAGFP,EAAOrF,EAAO6B,EAAoB5E,GAErB,IAAToI,IACFxD,EAAoB5E,IAAWoI,EAC/BnD,EAAuB7B,KAAKC,MAAMrD,EAAQpB,KAAoBwJ,GAGhEpI,KAKN,SAAS4F,EAAyBE,EAAS8C,GACzC,IAAMC,EAAc,EAAI7D,EAA8BtK,OAEpC,IAAdkO,IAA4D,IAAtCtR,MAAMwR,QAAQlE,KACtCA,EAAqB,IAGvB,IAAMmE,EAA8BnE,EAAmBjG,OAEvDiG,EAAmBjG,OAASkG,EAAoBnK,MAEhD,IAAK,IAAIiO,EAAI9D,EAAoBnK,MAAQ,EAAGiO,GAAKI,EAA6BJ,IAC5E/D,EAAoB+D,GAAME,EAG5B,IAAMG,EAAO5F,KAAKC,OAAOwB,EAAoBnK,MAAQ,GAAKkE,GAC1DqG,EAAwB,GACxB,IAAK,IAAI+B,EAAI,EAAGA,GAAKgC,EAAMhC,IAAK,CAG9B,IAFA,IAAIjE,EAAO,EACLkG,EAAO7F,KAAKiD,KAAKW,EAAI,GAAKpI,EAAeiG,EAAoBnK,OAC1DiO,EAAI3B,EAAIpI,EAAe+J,EAAIM,EAAMN,IACxC5F,GAAQ6B,EAAoB+D,GAE9B1D,EAAsBvQ,KAAKqO,GAG7B2B,GAAe,EACfD,OAAkB,EAEdqB,GAAW,GACbc,EAAyBrB,EAAwB7K,MAAMsI,MACvDkG,uBAAS,WAAQvG,EAASmD,QAG1BX,EAA2BzK,MAAQmI,EAAQoC,EAAuBL,EAAoB,EAAGW,EAAwB7K,MAAMsI,MACvHoC,EAA0B1K,MAAQmI,EAAQoC,EAAuBL,EAAoBW,EAAwB7K,MAAMuI,GAAI4B,EAAoBnK,OAC3IyO,KAIJ,SAAShD,EAAsB7E,GAC7B,QAAuB,IAAnBA,GAA+C,qBAAX1B,OAAwB,CAC9D,IAAMoG,EAAWlB,SAEA,IAAbkB,GAAoC,OAAbA,GAA2C,IAAtBA,EAASC,WACvD3E,EAAiBb,EACfuF,EACAjB,IACApE,EAAUjG,MACVkG,EAASlG,MACT5I,EAAMuS,wBACN7R,EAAGyI,KAAKC,IACRpJ,EAAMiS,6BACNjS,EAAMkS,4BACN1C,gBAINqD,EAAsBrD,EAEtB,IAAM8H,EAAa,EAAItX,EAAM8R,8BAAgC9R,EAAM+R,6BAC7DwF,OAA0B,IAAnB/H,GAA6BA,GAAkB,EACxD,EACA8B,KAAK0D,KAAKxF,EAAiB0D,EAA8BtK,OAEvD4O,EAAWlG,KAAKkD,IACpB,GACA+C,EACAjG,KAAK0D,KAAKhV,EAAM4R,uBAAyB0F,IAG3C/D,EAA+B3K,MAAQ,CACrC6I,MAAOH,KAAK0D,KAAKwC,EAAWF,GAC5BG,MAAOnG,KAAK0D,KAAKwC,EAAWxX,EAAM8R,+BAClC4F,OAAQpG,KAAK0D,KAAKwC,GAAY,GAAMxX,EAAM8R,gCAC1C6F,IAAKrG,KAAK0D,KAAKwC,GAAY,EAAIxX,EAAM8R,gCACrCyF,QAIJ,SAASK,EAAkBC,EAAKC,GAC9B,IAAMC,GAAgD,IAAlC/X,EAAMuS,wBAAmC,QAAU,SACjEvQ,EAAQ,kBACV,2BAA6B+V,EAAe7E,EAA8BtK,MAAQ,MAGtF,MAAO,CACG,UAARiP,EACIjX,eAAEiX,EAAK,CACLhX,MAAO,4BACPM,IAAK,SACLkF,IAAKwI,GACJ,CACDjO,eAAE,KAAM,CACNA,eAAE,KAAM,CACNoB,MAAO,iCAAI+V,EAAN,UAAyB1E,EAA2BzK,MAApD,OAAmE5G,GACxEgW,QAAStE,EAAY9K,YAI3BhI,eAAEiX,EAAK,CACPhX,MAAO,4BACPM,IAAK,SACLkF,IAAKwI,EACL7M,MAAO,iCAAI+V,EAAN,UAAyB1E,EAA2BzK,MAApD,OAAmE5G,KAG5EpB,eAAEiX,EAAK,CACLhX,MAAO,4BACPM,IAAK,UACLkF,IAAKmN,EACL5F,GAAIwF,EACJpH,UAAW,GACV8L,EAAQG,QAEH,UAARJ,EACIjX,eAAEiX,EAAK,CACLhX,MAAO,4BACPM,IAAK,QACLkF,IAAKyI,GACJ,CACDlO,eAAE,KAAM,CACNA,eAAE,KAAM,CACNoB,MAAO,iCAAI+V,EAAN,UAAyBzE,EAA0B1K,MAAnD,OAAkE5G,GACvEgW,QAAStE,EAAY9K,YAI3BhI,eAAEiX,EAAK,CACPhX,MAAO,4BACPM,IAAK,QACLkF,IAAKyI,EACL9M,MAAO,iCAAI+V,EAAN,UAAyBzE,EAA0B1K,MAAnD,OAAkE5G,MAK/E,SAASoU,EAAYlI,GACf0E,IAAgB1E,SACQ,IAA1BlO,EAAMwS,iBAA8BjS,EAAK,iBAAkB,CACzD2N,QACAgD,KAAMuC,EAAwB7K,MAAMsI,KACpCC,GAAIsC,EAAwB7K,MAAMuI,GAAK,EACvC+G,UAAWhK,EAAQ0E,EAAc,WAAa,WAC9CvM,IAAK1F,IAGPiS,EAAc1E,GAnalB3D,mBAAMqJ,GAAkB,WAAQS,OAChC9J,mBAAMoJ,EAAYE,GAsalBQ,IACA,IAAMgD,EAAqBc,eAASxD,GAAgD,IAAvBjU,EAAGmK,SAASC,GAAGC,IAAe,IAAM,IAcjG,OAZAqN,4BAAc,WACZ/D,OAGFxG,IAAsBI,QAAQ7B,8BAAgB,WAC5C,IAAMgC,EAAaxE,SAASyE,eAAe+E,EAAO,OACnC,OAAfhF,GAAuBA,EAAWT,YAIpC1N,OAAOoM,OAAO1L,EAAO,CAAEkQ,WAAUgD,QAAOE,YAEjC,CACLN,0BACAF,iCAEAc,uBACAgD,qBACAvD,0BACA8D,mBAEA/G,WACAgD,QACAE,a,oCCntBJ,4GAKM,SAAUsE,EAAyCC,EAAqCC,GAK5F,IAAMC,EAAkB,iBAExB,MAAO,CACLA,kBAEAC,aAAc,SAACC,GACb,OAAOH,EAAW3P,OAAS4P,EAAgBC,aAAaH,EAAgBK,UAAWD,IAGrFE,kBAAmB,SAACF,GAClB,OAAOF,EAAgBI,kBAAkBN,EAAgBK,UAAWD,KAUpE,SAAUG,EAA0CP,EAAqCC,EAAiDO,GAI9I,MAA6DT,EAAmBC,EAAiBC,GAAzFC,EAAR,EAAQA,gBAAiBC,EAAzB,EAAyBA,aAAcG,EAAvC,EAAuCA,kBACvC,MAAO,CACLJ,kBACAO,eAAgB,uBAAS,kBAAMD,EAAOpH,QAAO,SAAChD,EAAKgK,GAKjD,OAJAhK,EAAIgK,GAAS,CACXD,aAAcA,EAAaC,GAC3BE,kBAAmBA,EAAkBF,IAEhChK,IACN,eAAuC,W,qBC5C9C,IAAIsK,EAAc,EAAQ,QACtBC,EAA6B,EAAQ,QACrCC,EAAc,EAAQ,QACtBC,EAAgB,EAAQ,QAAsCA,cAK9DH,IAA8B,KAAd,KAAKI,OAAgBD,IACvCF,EAA2BI,EAAEC,OAAOrM,UAAW,QAAS,CACtDsM,cAAc,EACdC,IAAKN,K,qDCVFrY,MAAM,wB,qGAAX,yBAoCM,MApCN,EAoCM,CAnCY,EAAAb,MAAMyZ,Y,yBAAtB,yBAsBW,uBArBT,yBASE,GARA5Y,MAAM,uCACNoQ,KAAK,KACLyI,KAAK,YACLvD,MAAA,GACAwD,MAAA,GACAC,MAAM,cACN3B,KAAA,GACC,QAAO,EAAA4B,kB,oBAEV,yBAUE,GATAhZ,MAAM,qCACNoQ,KAAK,KACLyI,KAAK,2BACJI,QAAS,EAAA9Z,MAAM+Z,mBAChB5D,MAAA,GACAwD,MAAA,GACAC,MAAM,cACN3B,KAAA,GACC,QAAO,EAAA+B,c,8DAIV,yBASE,G,MARAnZ,MAAM,uCACNoQ,KAAK,KACLyI,KAAK,qBACLvD,MAAA,GACAwD,MAAA,GACA1B,KAAA,GACA2B,MAAM,cACL,QAAO,EAAAK,mB,uBC/BD,mCAAgB,CAC7Bja,MAAO,CACL+Z,mBAAoB,CAClBG,UAAU,EACVhV,KAAM/E,SAERsZ,WAAY,CACVS,UAAU,EACVhV,KAAM/E,UAGVE,MAX6B,SAWtBL,EAXsB,GAWP,IAANO,EAAM,EAANA,KACd,SAAS0Z,IACP1Z,EAAK,kBAGP,SAASsZ,IACPtZ,EAAK,iBAGP,SAASyZ,IACPzZ,EAAK,aAGP,MAAO,CACLP,QACAia,oBACAJ,mBACAG,mB,iCC5BN,EAAOG,OAASA,EAED,SAGf,IAAS,EAAQ,aAAc,CAACC,OAAA,Q,8GCI1B,SAAUC,EACdC,EACEC,EACAC,EACAC,EACAC,EACAC,GACF,IAAMC,EAAY,kBAAI,GAChBb,EAAqB,kBAAI,GACzBc,EAAW,iBAAIP,KACfQ,EAAW,sBAAS,CACxBtB,IAAK,kBAAMoB,EAAUhS,MAAQiS,EAASjS,MAAQ2R,EAAc3R,OAC5DmS,IAAK,SAAC9O,GAAU4O,EAASjS,MAAQqD,KAG7B+O,EAAY,yDAAG,iGACnBJ,EAAUhS,OAAQ,EAClB,OAAI4R,QAAJ,IAAIA,KAAS5R,QACX4R,EAAQ5R,MAAMc,QACd8Q,EAAQ5R,MAAMqS,WAEZP,EANe,gCAOXA,IAPW,2CAAH,qDAWZQ,EAAW,yDAAG,uGAClBN,EAAUhS,OAAQ,EAClBmR,EAAmBnR,OAAQ,EAC3BiS,EAASjS,MAAQ0R,IACXa,EAAYrN,OAAOsN,eACrBD,GACFA,EAAUE,mBAERV,EARc,gCASVA,IATU,2CAAH,qDAaXW,EAAQ,yDAAG,kGACXV,EAAUhS,MADC,oBAEbmR,EAAmBnR,OAAQ,GACvB6R,EAHS,gCAILA,EAAW,CACfI,WACAC,WACAF,YACAb,qBACAmB,cACAF,iBAVS,6CAaLE,IAbK,OAebnB,EAAmBnR,OAAQ,EAfd,4CAAH,qDAmBd,MAAO,CACLiS,WACAC,WACAF,YACAb,qBACAuB,WACAJ,cACAF,kB,kCC7EJ,4BAIelb,oCAAgB,CAC7BC,KAAM,SAENoE,cAAc,EAEdnE,MAAOub,OAEPnb,MAAOob,OAEPnb,MAT6B,WAU3B,OAAOob,eAASC,sB,0JCblBC,G,8GAAwB,oBAARC,KAChBC,EAAwB,oBAARC,IAChBC,EAAwC,oBAAhBC,YAEnB,SAASC,EAAaC,EAAGC,GAC9B,GAAID,IAAMC,EACR,OAAO,EAGT,GAAU,OAAND,GAAoB,OAANC,GAA2B,WAAb,eAAOD,IAA+B,WAAb,eAAOC,GAAgB,CAC9E,GAAID,EAAEE,cAAgBD,EAAEC,YACtB,OAAO,EAGT,IAAIvP,EAAQgK,EAEZ,GAAIqF,EAAEE,cAAgB5W,MAAO,CAG3B,GAFAqH,EAASqP,EAAErP,OAEPA,IAAWsP,EAAEtP,OACf,OAAO,EAGT,IAAKgK,EAAIhK,EAAgB,IAARgK,KACf,IAAoC,IAAhCoF,EAAYC,EAAGrF,GAAKsF,EAAGtF,IACzB,OAAO,EAIX,OAAO,EAGT,IAAe,IAAX8E,GAAmBO,EAAEE,cAAgBR,IAAK,CAC5C,GAAIM,EAAEjL,OAASkL,EAAElL,KACf,OAAO,EAGT4F,EAAIqF,EAAEG,UAAUC,OAChB,OAAkB,IAAXzF,EAAE0F,KAAe,CACtB,IAA4B,IAAxBJ,EAAEK,IAAI3F,EAAEjO,MAAO,IACjB,OAAO,EAETiO,EAAIA,EAAEyF,OAGRzF,EAAIqF,EAAEG,UAAUC,OAChB,OAAkB,IAAXzF,EAAE0F,KAAe,CACtB,IAAuD,IAAnDN,EAAYpF,EAAEjO,MAAO,GAAKuT,EAAE3C,IAAI3C,EAAEjO,MAAO,KAC3C,OAAO,EAETiO,EAAIA,EAAEyF,OAGR,OAAO,EAGT,IAAe,IAAXT,GAAmBK,EAAEE,cAAgBN,IAAK,CAC5C,GAAII,EAAEjL,OAASkL,EAAElL,KACf,OAAO,EAGT4F,EAAIqF,EAAEG,UAAUC,OAChB,OAAkB,IAAXzF,EAAE0F,KAAe,CACtB,IAA4B,IAAxBJ,EAAEK,IAAI3F,EAAEjO,MAAO,IACjB,OAAO,EAETiO,EAAIA,EAAEyF,OAGR,OAAO,EAGT,IAAuB,IAAnBP,GAAuC,MAAZG,EAAEO,QAAkBP,EAAEO,OAAOL,cAAgBJ,YAAa,CAGvF,GAFAnP,EAASqP,EAAErP,OAEPA,IAAWsP,EAAEtP,OACf,OAAO,EAGT,IAAKgK,EAAIhK,EAAgB,IAARgK,KACf,GAAIqF,EAAGrF,KAAQsF,EAAGtF,GAChB,OAAO,EAIX,OAAO,EAGT,GAAIqF,EAAEE,cAAgB9C,OACpB,OAAO4C,EAAEQ,SAAWP,EAAEO,QAAUR,EAAE9C,QAAU+C,EAAE/C,MAGhD,GAAI8C,EAAES,UAAY1c,OAAOgN,UAAU0P,QACjC,OAAOT,EAAES,YAAcR,EAAEQ,UAG3B,GAAIT,EAAEU,WAAa3c,OAAOgN,UAAU2P,SAClC,OAAOV,EAAEU,aAAeT,EAAES,WAG5B,IAAMvK,EAAOpS,OAAOoS,KAAK6J,GAGzB,GAFArP,EAASwF,EAAKxF,OAEVA,IAAW5M,OAAOoS,KAAK8J,GAAGtP,OAC5B,OAAO,EAGT,IAAKgK,EAAIhK,EAAgB,IAARgK,KAAY,CAC3B,IAAM1V,EAAMkR,EAAMwE,GAClB,IAAwC,IAApCoF,EAAYC,EAAG/a,GAAOgb,EAAGhb,IAC3B,OAAO,EAIX,OAAO,EAIT,OAAO+a,IAAMA,GAAKC,IAAMA,EAgBnB,SAASU,EAAQC,GACtB,MAA6C,kBAAtC7c,OAAOgN,UAAU2P,SAASpG,KAAKsG,GAOjC,SAASC,EAAUD,GACxB,MAAoB,kBAANA,GAAkBE,SAASF,K,qDCvIlBjc,MAAM,4B,4MAR3B,yBAemB,Q,8BAdf,iBAAqB,CAArB,wBAAqB,mBACrB,yBAWc,Q,8BAVV,gBADmBoc,EACnB,EADmBA,UACnB,MAD4B,E,yBAC5B,yBASW,oBARIlc,QAAO,sBACd,iBAA6B,E,yBAA7B,yBAA6B,qCAAbkc,SAETC,SAAQ,sBACf,iBAEM,CAFN,yBAEM,MAFN,EAEM,CADF,yBAAsB,GAAXjM,KAAK,a,sBAKhC,wBAAoB,sB,MCZb,mCAAgB,I,6CCA/B,EAAOkJ,OAASA,EAED,SAIf,IAAS,EAAQ,aAAc,CAACgD,iBAAA,KAAeC,WAAA,Q,kCCR/C,IAAIC,EAAI,EAAQ,QACZC,EAAS,EAAQ,QACjBC,EAAoB,EAAQ,QAC5BC,EAAa,EAAQ,QAErBC,EAAe,cACfzB,EAAcuB,EAAkBE,GAChCC,EAAoBJ,EAAOG,GAI/BJ,EAAE,CAAEC,QAAQ,EAAMK,OAAQD,IAAsB1B,GAAe,CAC7DA,YAAaA,IAGfwB,EAAWC,I,4CChBX,SAASP,EAAUU,GACjB,IAAMC,EAAOjU,SAASwD,cAAc,YACpCyQ,EAAKjV,MAAQgV,EACbC,EAAKC,iBAAkB,EACvBD,EAAK7b,MAAMmI,SAAW,QAEtBP,SAAS4D,KAAKC,YAAYoQ,GAC1BA,EAAKnU,QACLmU,EAAK5C,SAEL,IAAM8C,EAAMnU,SAASoU,YAAY,QAGjC,OADAH,EAAKlQ,SACEoQ,EAGM,gBAAUH,GACvB,YAA+B,IAAxBK,UAAUC,UACbD,UAAUC,UAAUC,UAAUP,GAC9B,IAAIQ,SAAQ,SAACC,EAASC,GACtB,IAAMP,EAAMb,EAASU,GACjBG,EACFM,GAAQ,GAGRC,EAAOP,Q,iICvBR,SAAeQ,EAAtB,wC,8DAAO,WACLC,EACAC,EAEA3c,EACA4c,GALK,uGAUDC,EADa,QAAXF,EACO,CACPD,MACAC,SACAG,iBAAiB,EACjBC,OAAQ/c,GAGD,CACP0c,MACAC,SACAG,iBAAiB,EACjB9c,SAGA4c,EAxBD,gCAyBcA,EAAgBC,GAzB9B,OAyBDA,EAzBC,8BA2BkB,IAAMG,QAAWH,GA3BnC,cA2BGrb,EA3BH,yBA4BI,CAACA,EAAOxB,KAAMwB,IA5BlB,yCA8BC,KAAEE,UAAkC,MAAtB,KAAEA,SAASub,OA9B1B,0CA+BM,CAAC,OAAejb,iBAAkB,KAAEN,WA/B1C,YAgCQ,KAAEA,UAAkC,MAAtB,KAAEA,SAASub,OAhCjC,0CAiCM,CAAC,OAAenb,SAAU,KAAEJ,WAjClC,iCAmCI,CAAC,OAAeK,MAAhB,UAAuB,KAAEL,gBAAzB,QAAqC,OAnCzC,0D,8dCsBDwb,EAAuB,SAAAlC,GAAC,MAAI,CAAE,MAAO,aAAc,UAAWmC,SAASnC,IACvEoC,EAAe,kBACfC,EAAiBlf,OAAOoS,KAAKkJ,QAEpBzb,oCAAgB,CAC7BC,KAAM,UAENoE,cAAc,EAEdnE,MAAO,+DACFsS,QACA8M,QACA7D,QAHA,IAKH8D,WAAY,CACVnF,UAAU,GAGZoF,SAAUnf,QAEVof,aAAc,CAAEpa,OAAQ0M,QACxB2N,iBAAkBrf,QAClBsf,aAActa,OAEdua,QAAS,CACPxa,KAAMM,MACNzE,QAAS,iBAAM,KAGjB4e,YAAa,CAAElN,SAAUtN,QACzBya,YAAa,CAAEnN,SAAUtN,QACzB0a,cAAe,CAAEpN,SAAUtN,QAE3B2a,aAAc3f,QACd4f,iBAAkB5f,QAClB6f,UAAW7f,QAEX8f,UAAW,CAAEpO,OAAQ1M,QAErB+a,aAAc/f,QACdggB,YAAa,CACXjb,KAAM/E,QACNY,QAAS,MAEXqf,qBAAsBjb,OACtBkb,YAAalgB,QAEbmgB,aAAcngB,QAEdogB,WAAYpgB,QACZqgB,WAAYrb,OACZsb,SAAUtb,OACVub,WAAYlb,MAEZmb,kBAAmBxb,OACnByb,kBAAmB,CAAEzb,OAAQK,MAAOvF,QAEpC4gB,SAAU1gB,QACV2gB,SAAU3gB,QAEV4gB,aAAc,CACZ7b,KAAMC,OACNC,UAAW4Z,GAGbgC,WAAY7gB,QACZ8gB,UAAW9gB,QAEX+gB,cAAe,CACbhc,KAAM,CAAE2M,OAAQ1M,QAChBpE,QAAS,KAGXogB,WAAY,CAAE3b,MAAOL,OAAQlF,QAC7BmhB,WAAY,CAAE5b,MAAOL,OAAQlF,QAE7B+L,SAAU,CACR9G,KAAM,CAAEC,OAAQ0M,QAChB9Q,QAAS,GAGXsgB,aAAclc,OAEdmc,eAAgBnc,OAChBoc,eAAgBpc,OAChB8F,mBAAoB,CAAE9F,OAAQ0M,QAE9B2P,SAAU,CACRtc,KAAMC,OACNC,UAAW,SAAA0X,GAAC,MAAI,CAAE,UAAW,OAAQ,UAAWmC,SAASnC,IACzD/b,QAAS,WAGXiR,sBAAuB,CACrB9M,KAAM,CAAE2M,OAAQ1M,QAChBpE,aAAS,GAGX0gB,WAAYhP,SACZiP,SAAUjP,WAGZrS,MAAO,GAAF,sBACAob,QADA,CAEH,MAAO,SAAU,cACjB,QAAS,WAAY,UACrB,iBAGFnb,MAzG6B,SAyGtBL,EAzGsB,GAyGE,IAWzB2hB,EAAYC,EAAiBC,EAC/BC,EAAWC,EAAgBC,EAAUC,EACrCC,EAAwBC,EAAcC,EAbX,YAAf9hB,EAAe,EAAfA,MAAOC,EAAQ,EAARA,KACrB,EAAkBE,kCAAVE,EAAR,EAAQA,MACAD,EAAOC,EAAPD,GAEF2hB,EAAOhc,kBAAI,GACXic,EAASjc,kBAAI,GACbkc,EAAclc,kBAAK,GACnBmc,EAAanc,iBAAI,IACjBoc,EAAqBpc,kBAAI,GACzBqc,EAAwBrc,kBAAI,GAM5Bsc,EAAWtc,iBAAI,MACfuc,EAAYvc,iBAAI,MAChBwc,EAAUxc,iBAAI,MACdyc,EAAYzc,iBAAI,MAChB0c,EAAiB1c,iBAAI,MAErB2c,EAAWC,eAAqBjjB,GAEhCkjB,EAAgBC,eAAkBC,IAElCrQ,GAAsBvM,uBAAS,kBACnChB,MAAMwR,QAAQhX,EAAM0f,SAChB1f,EAAM0f,QAAQ7S,OACd,KAGAqG,GAAgC1M,uBAAS,uBACb,IAAhCxG,EAAMgS,uBACe,IAAhBhS,EAAM2Z,MAAiB,GAAK,GAC7B3Z,EAAMgS,yBAGZ,GAQIU,eAAiB,CACnBK,uBAAqBC,0BAAwBC,sBAC7CC,mCATAO,GADF,GACEA,wBACAF,GAFF,GAEEA,+BACAO,GAHF,GAGEA,wBACA8D,GAJF,GAIEA,iBACAP,GALF,GAKEA,mBACAxG,GANF,GAMEA,SACAwD,GAPF,GAOEA,qBAMIgP,GAAQ3H,iBAER4H,GAAa9c,uBAAS,WAC1B,IACE+c,GAA+B,IAArBvjB,EAAMghB,aAA0C,IAAnBhhB,EAAMsf,SAC7CrT,OAA2B,IAArBjM,EAAMqf,YAA+C,OAArBrf,EAAMqf,aAAmC,IAAZkE,EAE/D,IADoB,IAAnBvjB,EAAMsf,UAAqB9Z,MAAMwR,QAAQhX,EAAMqf,YAAcrf,EAAMqf,WAAa,CAAErf,EAAMqf,YAG/F,IAAyB,IAArBrf,EAAMghB,aAAwD,IAAjCxb,MAAMwR,QAAQhX,EAAM0f,SAAmB,CACtE,IAAM8D,GAA6B,IAArBxjB,EAAMghB,iBAA2C,IAApBY,EACvCA,EACA,GACE6B,EAASxX,EAAIyX,KAAI,SAAA5G,GAAC,OAAI6G,GAAU7G,EAAG0G,MAEzC,OAA4B,OAArBxjB,EAAMqf,aAAmC,IAAZkE,EAChCE,EAAOhN,QAAO,SAAAqG,GAAC,OAAU,OAANA,KACnB2G,EAGN,OAAOxX,KAGH2X,GAAkBpd,uBAAS,WAC/B,IAAMkI,EAAM,GAEZ,OADAyQ,EAAe0E,SAAQ,SAAA1iB,GAAG,OAAInB,EAAOmB,MAC9BuN,KAGHoV,GAAgBtd,uBAAS,kBACP,OAAtBxG,EAAMmgB,YACFkD,GAAM5c,OAAOmC,MACb5I,EAAMmgB,eAGN4D,GAAWvd,uBAAS,kBAAMwd,eAAmBV,GAAW1a,UAExDqb,GAAqBzd,uBAAS,WAClC,IAAI0d,EAAM,mCAEV,OAA2B,IAAvBlkB,EAAM8f,cAAqD,IAA5BwD,GAAW1a,MAAMiE,OAC3C,CAAEqX,EAAKlkB,EAAMmhB,aAGtB+C,GAAO,gCAEqB,IAArBlkB,EAAMmhB,WACT+C,EACA,CAAEA,EAAKlkB,EAAMmhB,gBAGbgD,GAAmB3d,uBAAS,mBACG,IAAlCxG,EAAMuS,wBAAmC,+BAAiC,KACxEvS,EAAM2gB,kBAAoB,IAAM3gB,EAAM2gB,kBAAoB,OAGzDyD,GAAY5d,uBAAS,kBAAoC,IAA9BuM,GAAoBnK,SAE/Cyb,GAAiB7d,uBAAS,kBAC9B8c,GAAW1a,MACR8a,KAAI,SAAAY,GAAG,OAAIC,GAAe3b,MAAM0b,MAChCE,KAAK,SAGJC,GAAcje,uBAAS,kBACL,IAAtBxG,EAAMqgB,YACF,kBAAM,GACN,SAAAiE,GAAG,YAAY,IAARA,GAA0B,OAARA,IAA6B,IAAbA,EAAII,SAG7CC,GAAcne,uBAAS,kBACA,IAA3BxG,EAAMwf,uBACmB,IAAvBxf,EAAMuf,gBACkB,IAAtBvf,EAAMqgB,aACHiD,GAAW1a,MAAMgc,KAAKH,GAAY7b,WAKrCoD,GAAWxF,uBAAS,kBAA+B,IAAxB6c,GAAMwB,QAAQjc,MAAiB5I,EAAMgM,UAAY,KAE5E8Y,GAAgBte,uBAAS,WAC7B,OAAO8c,GAAW1a,MAAM8a,KAAI,SAACY,EAAKzN,GAAN,MAAa,CACvC3I,MAAO2I,EACPyN,MACAI,KAAMD,GAAY7b,MAAM0b,GACxBS,UAAU,EACVC,cAAeC,GACfC,gBACAlZ,SAAUA,GAASpD,aAIjBuc,GAAc3e,uBAAS,WAC3B,GAAkC,IAA9BuM,GAAoBnK,MACtB,MAAO,GAGT,MAAqB6K,GAAwB7K,MAArCsI,EAAR,EAAQA,KAAMC,EAAd,EAAcA,GACd,EAA+B0Q,EAAvBnC,EAAR,EAAQA,QAAS0F,EAAjB,EAAiBA,UAEjB,OAAOplB,EAAM0f,QAAQ1S,MAAMkE,EAAMC,GAAIuS,KAAI,SAACY,EAAKzN,GAC7C,IAAMwO,GAA0C,IAAhCC,GAAiB1c,MAAM0b,GACjCpW,EAAQgD,EAAO2F,EAEf0O,EAAY,CAChBC,WAAW,EACXC,QAAQ,EACRC,YAAaC,GAA6B/c,MAC1Cgd,aAAa,EACbf,SAAS,EACTQ,UACArZ,UAAW,EACX2N,MAAO3Z,EAAMkgB,aACb2F,KAAM/B,GAAclb,MACpB1G,QAAS,WAAQgjB,GAAaZ,MAGhB,IAAZe,KACwB,IAA1BS,GAAiBxB,KAAkBiB,EAAUE,QAAS,GACtDlD,EAAY3Z,QAAUsF,IAAUqX,EAAUV,SAAU,IAErB,IAA3BnkB,EAAGmK,SAASC,GAAGib,UACjBR,EAAUS,YAAc,WAAQC,GAAe/X,MAInD,IAAMgY,EAAS,CACbhY,QACAoW,MACAI,KAAMD,GAAY7b,MAAM0b,GACxB6B,MAAO5B,GAAe3b,MAAM0b,GAC5BS,SAAUQ,EAAUE,OACpBZ,QAASU,EAAUV,QACnBK,gBACAe,kBACAV,aAGIa,EAAsB,iCACvBF,GADoB,IAEvBX,UAAW,iCACNA,GADI,IAEPrjB,aAAS,EACT8jB,iBAAa,MASjB,YALqB,IAAjBtG,EAAS7I,KAAqE,IAAnDoF,eAAYmK,EAAqB1G,EAAS7I,MACvE6I,EAAS7I,GAAMuP,EACfhB,EAAWvO,QAAM,GAGZqP,QAILG,GAAoB7f,uBAAS,uBACV,IAAvBxG,EAAMyf,aACFzf,EAAMyf,aACN/e,EAAGiB,QAAQ2kB,MAAMC,YAGjBC,GAAchgB,uBAAS,kBACJ,IAAvBxG,EAAMsgB,eACgB,IAAnBtgB,EAAMymB,WACa,IAAnBzmB,EAAM0mB,WACe,IAArB1mB,EAAM2mB,aACY,IAAlB3mB,EAAM4mB,WAGLjB,GAA+Bnf,uBAAS,uBACb,IAA/BxG,EAAMogB,qBACFpgB,EAAMogB,0BACW,IAAhBpgB,EAAM4Z,MAAN,eAAkC5Z,EAAM4Z,OAAW,MAKpDiN,GAAiBrgB,uBAAS,kBAAMsgB,GAAe9mB,EAAM2f,YAAa,YAIlE4E,GAAiB/d,uBAAS,kBAAMsgB,GAAe9mB,EAAM4f,YAAa,YAIlE0F,GAAmB9e,uBAAS,kBAAMsgB,GAAe9mB,EAAM6f,cAAe,cAEtEkH,GAAoBvgB,uBAAS,kBAAM8c,GAAW1a,MAAM8a,KAAI,SAAAY,GAAG,OAAIuC,GAAeje,MAAM0b,SAEpF0C,GAAqBxgB,uBAAS,WAClC,IAAMrE,EAAM,CACVihB,WAKA6D,SAAU/D,EACVgE,UAAWC,GACXC,QAASC,GACTC,WAAYC,GACZC,QAASC,GACTvlB,QAXU,SAWDyG,IAAmB,IAAdmZ,GAAsB4F,eAAK/e,KAK3C,OAFAxG,EAAIwlB,mBAAqBxlB,EAAIylB,oBAAsBzlB,EAAI0lB,iBAAmB3E,EAEnE/gB,KA0BT,SAAS2lB,GAAwBxD,GAC/B,OAA2B,IAApBtkB,EAAMihB,UACT4F,GAAeje,MAAM0b,GACrBA,EAGN,SAASU,GAAe9W,GACtB,GAAIA,GAAS,GAAKA,EAAQoV,GAAW1a,MAAMiE,OACzC,IAAuB,IAAnB7M,EAAMsf,SAAmB,CAC3B,IAAMyI,EAAQ/nB,EAAMqf,WAAWrS,QAC/BzM,EAAK,SAAU,CAAE2N,QAAOtF,MAAOmf,EAAMC,OAAO9Z,EAAO,GAAI,KACvD3N,EAAK,oBAAqBwnB,QAG1BxnB,EAAK,oBAAqB,MAKhC,SAAS0kB,GAAuB/W,GAC9B8W,GAAc9W,GACdmV,GAAM3Z,QAGR,SAASue,GAAK3D,EAAK4D,GACjB,IAAMjc,EAAM6b,GAAuBxD,GAEnC,IAAuB,IAAnBtkB,EAAMsf,SAQR,OAPoB,IAApBtf,EAAMggB,WAAsBmI,GAC1B5D,GAAe3b,MAAM0b,IACrB,GACA,QAGF/jB,EAAK,oBAAqB0L,GAI5B,GAAgC,IAA5BqX,GAAW1a,MAAMiE,OAGnB,OAFAtM,EAAK,MAAO,CAAE2N,MAAO,EAAGtF,MAAOqD,SAC/B1L,EAAK,qBAAwC,IAAnBP,EAAMsf,SAAoB,CAAErT,GAAQA,GAIhE,KAAe,IAAXic,IAA6C,IAA1BpC,GAAiBxB,YAIhB,IAApBtkB,EAAMigB,WAAwBjgB,EAAMqf,WAAWxS,QAAU7M,EAAMigB,WAAnE,CAIA,IAAM8H,EAAQ/nB,EAAMqf,WAAWrS,QAE/BzM,EAAK,MAAO,CAAE2N,MAAO6Z,EAAMlb,OAAQjE,MAAOqD,IAC1C8b,EAAMnlB,KAAKqJ,GACX1L,EAAK,oBAAqBwnB,IAG5B,SAAS7C,GAAcZ,EAAK8D,GAC1B,IAA6B,IAAzB/E,GAAMgF,SAASzf,YAA0B,IAAR0b,IAAkD,IAAhCgB,GAAiB1c,MAAM0b,GAA9E,CAIA,IAAMgE,EAAWzB,GAAeje,MAAM0b,GAEtC,IAAuB,IAAnBtkB,EAAMsf,SAgBR,OAfiB,IAAb8I,IACFD,IACsB,IAApBnoB,EAAMggB,UAAqBuE,GAAe3b,MAAM0b,GAAO,IACvD,GACA,GAGFiE,MAGkB,OAApB3F,EAAUha,OAAkBga,EAAUha,MAAMc,cAE+B,IAAvEuS,eAAY4K,GAAeje,MAAM0a,GAAW1a,MAAO,IAAM0f,IAC3D/nB,EAAK,qBAAyC,IAApBP,EAAMihB,UAAqBqH,EAAWhE,IASpE,KAJe,IAAdxC,IAAmD,IAA7BW,EAAmB7Z,QAAmBya,GAAM3Z,QAEnE+d,KAEgC,IAA5BnE,GAAW1a,MAAMiE,OAAc,CACjC,IAAMZ,GAA0B,IAApBjM,EAAMihB,UAAqBqH,EAAWhE,EAGlD,OAFA/jB,EAAK,MAAO,CAAE2N,MAAO,EAAGtF,MAAOqD,SAC/B1L,EAAK,qBAAwC,IAAnBP,EAAMsf,SAAoB,CAAErT,GAAQA,GAIhE,IACE8b,EAAQ/nB,EAAMqf,WAAWrS,QACzBkB,EAAQ6Y,GAAkBne,MAAM4f,WAAU,SAAA1L,GAAC,OAAIb,eAAYa,EAAGwL,MAEhE,GAAIpa,GAAS,EACX3N,EAAK,SAAU,CAAE2N,QAAOtF,MAAOmf,EAAMC,OAAO9Z,EAAO,GAAI,SAEpD,CACH,QAAwB,IAApBlO,EAAMigB,WAAwB8H,EAAMlb,QAAU7M,EAAMigB,UACtD,OAGF,IAAMhU,GAA0B,IAApBjM,EAAMihB,UAAqBqH,EAAWhE,EAElD/jB,EAAK,MAAO,CAAE2N,MAAO6Z,EAAMlb,OAAQjE,MAAOqD,IAC1C8b,EAAMnlB,KAAKqJ,GAGb1L,EAAK,oBAAqBwnB,IAG5B,SAAS9B,GAAgB/X,GACvB,IAA+B,IAA3BxN,EAAGmK,SAASC,GAAGib,QAAnB,CAEA,IAAM9Z,EAAMiC,GAAS,GAAKA,EAAQ6E,GAAoBnK,MAClDsF,GACC,EAEDqU,EAAY3Z,QAAUqD,IACxBsW,EAAY3Z,MAAQqD,IAIxB,SAASwc,KAAiD,IAA5BljB,EAA4B,uDAAnB,EAAGmjB,EAAgB,uCACxD,IAAmB,IAAfrG,EAAKzZ,MAAgB,CACvB,IAAIsF,EAAQqU,EAAY3Z,MACxB,GACEsF,EAAQya,eACNza,EAAQ3I,GACP,EACDwN,GAAoBnK,MAAQ,UAGd,IAAXsF,GAAgBA,IAAUqU,EAAY3Z,QAA4D,IAAnD0c,GAAiB1c,MAAM5I,EAAM0f,QAASxR,KAExFqU,EAAY3Z,QAAUsF,IACxB+X,GAAe/X,GACf2C,GAAS3C,IAEc,IAAnBwa,IAA8C,IAAnB1oB,EAAM6gB,WAAyC,IAApB7gB,EAAMggB,WAC9D4I,GAAc1a,GAAS,EACnBqW,GAAe3b,MAAM5I,EAAM0f,QAASxR,IACpC+T,KAOZ,SAAS0B,GAAW/a,EAAOigB,GACzB,IAAMC,EAAK,SAAAxE,GAAG,OAAIrI,eAAY4K,GAAeje,MAAM0b,GAAM1b,IACzD,OAAO5I,EAAM0f,QAAQqJ,KAAKD,IAAOD,EAAWE,KAAKD,IAAOlgB,EAG1D,SAASke,GAAgBkC,EAAWC,GAClC,IAAMhd,OAAoB,IAAd+c,EACRA,EACAC,EAEJ,MAAsB,oBAARhd,EACVA,EACA,SAAAqY,GAAG,OAAKrkB,OAAOqkB,KAASA,GAAOrY,KAAOqY,EAAMA,EAAKrY,GAAQqY,GAG/D,SAASwB,GAAkBxB,GACzB,IAAMrY,EAAM4a,GAAeje,MAAM0b,GACjC,YAAkE,IAA3DyC,GAAkBne,MAAMmgB,MAAK,SAAAjM,GAAC,OAAIb,eAAYa,EAAG7Q,MAG1D,SAASwb,MACgB,IAAnBznB,EAAM6gB,UAAyC,OAApB+B,EAAUha,OACvCga,EAAUha,MAAMqS,SAIpB,SAASiO,GAAevgB,IAIG,IAArBwgB,eAAUxgB,EAAG,MAA+B,IAAf0Z,EAAKzZ,QACpC8e,eAAK/e,GAEL4f,KACAa,MAGF7oB,EAAK,QAASoI,GAGhB,SAAS0e,GAAsB1e,GAC7B,IAAQC,EAAUD,EAAEE,OAAZD,MAER,QAAkB,IAAdD,EAAE0gB,QASN,GAJA1gB,EAAEE,OAAOD,MAAQ,GACjB0gB,aAAa3H,GACbyH,KAEqB,kBAAVxgB,GAAsBA,EAAMiE,OAAS,EAAG,CACjD,IAAM0c,EAAS3gB,EAAM4gB,oBAEjBV,EAAK,SAAAxE,GAAG,OAAIuC,GAAeje,MAAM0b,GAAKkF,sBAAwBD,GAC9DrD,EAASlmB,EAAM0f,QAAQqJ,KAAKD,QAEjB,IAAX5C,GACwC,IAAtC5C,GAAW1a,MAAM8L,QAAQwR,GAC3BhB,GAAagB,GAGbqC,MAIFO,EAAK,SAAAxE,GAAG,OAAIC,GAAe3b,MAAM0b,GAAKkF,sBAAwBD,GAC9DrD,EAASlmB,EAAM0f,QAAQqJ,KAAKD,QAEb,IAAX5C,GACwC,IAAtC5C,GAAW1a,MAAM8L,QAAQwR,GAC3BhB,GAAagB,GAGbqC,KAIF9R,GAAO7N,GAAO,SAKlBya,GAAMoG,WAAW9gB,QAxCjBugB,GAAcvgB,GA4ClB,SAAS4e,GAAkB5e,GACzBpI,EAAK,WAAYoI,GAGnB,SAASwe,GAAiBxe,GAGxB,GAFApI,EAAK,UAAWoI,IAEW,IAAvB+gB,eAAgB/gB,GAApB,CAIA,IAAMghB,EAAoBnH,EAAW5Z,MAAMiE,OAAS,SACvB,IAAvB7M,EAAM+gB,mBAAgD,IAArB/gB,EAAMyhB,YAEvCmI,GAAiC,IAAfjhB,EAAEkhB,WACF,IAAnB7pB,EAAMsf,WACLiD,EAAY3Z,OAAS,IAA2B,IAAtB+gB,GAGhC,GAAkB,KAAdhhB,EAAE0gB,QAMN,GAAkB,IAAd1gB,EAAE0gB,UAAqC,IAApBO,GAKvB,QAAiB,IAAbjhB,EAAEE,QAAqBF,EAAEE,OAAO+E,KAAOyV,GAAMyG,UAAUlhB,MAA3D,CAGA,GACgB,KAAdD,EAAE0gB,UAC8B,IAA7BhG,GAAM0G,aAAanhB,QACJ,IAAfyZ,EAAKzZ,MAIR,OAFAI,eAAeL,QACfqhB,KAKF,GACgB,IAAdrhB,EAAE0gB,UACwB,IAAvBrpB,EAAM8f,cACsB,IAA5B0C,EAAW5Z,MAAMiE,OAHtB,CAgBiB,KAAdlE,EAAE0gB,SAAgC,KAAd1gB,EAAE0gB,SACS,kBAArB7G,EAAW5Z,OAAkD,IAA5B4Z,EAAW5Z,MAAMiE,SAE7D7D,eAAeL,GACf4Z,EAAY3Z,OAAS,EACrB6f,GAAkC,KAAd9f,EAAE0gB,QAAiB,GAAK,EAAGrpB,EAAMsf,WAKtC,KAAd3W,EAAE0gB,SAAgC,KAAd1gB,EAAE0gB,cACqB,IAAzC9V,GAA+B3K,QAElCI,eAAeL,GACf4Z,EAAY3Z,MAAQ0I,KAAKkD,KACtB,EACDlD,KAAKiD,IACHxB,GAAoBnK,MACpB2Z,EAAY3Z,OAAuB,KAAdD,EAAE0gB,SAAkB,EAAI,GAAK9V,GAA+B3K,MAAM2O,OAG3FkR,GAAkC,KAAd9f,EAAE0gB,QAAiB,GAAK,EAAGrpB,EAAMsf,WAIrC,KAAd3W,EAAE0gB,SAAgC,KAAd1gB,EAAE0gB,UACxBrgB,eAAeL,GACf8f,GAAkC,KAAd9f,EAAE0gB,SAAkB,EAAI,EAAGrpB,EAAMsf,WAGvD,IAAM2K,EAAgBlX,GAAoBnK,MAQ1C,SALqB,IAAjBuZ,GAA2BC,EAAkB8H,KAAKC,SACpDhI,EAAe,IAKf8H,EAAgB,IACM,IAAnBjqB,EAAM6gB,eACI,IAAVlY,EAAExH,KACe,IAAjBwH,EAAExH,IAAI0L,QACNlE,EAAEyhB,SAAWzhB,EAAE0hB,UACA,KAAd1hB,EAAE0gB,SAAkBlH,EAAatV,OAAS,GANhD,EAQiB,IAAfwV,EAAKzZ,OAAkBohB,GAAUrhB,GAEjC,IACE2hB,EAAO3hB,EAAExH,IAAIqoB,oBACbe,EAAoC,IAAxBpI,EAAatV,QAAgBsV,EAAc,KAAQmI,EAEjElI,EAAkB8H,KAAKC,MAAQ,MACb,IAAdI,IACFvhB,eAAeL,GACfwZ,GAAgBmI,GAGlB,IAAME,EAAW,IAAIlR,OAAO,IAAM6I,EAAasI,MAAM,IAAI/G,KAAI,SAAAgH,GAAC,OAAKxL,EAAaxK,QAAQgW,IAAM,EAAI,KAAOA,EAAIA,KAAIlG,KAAK,MAAO,KAEzHtW,EAAQqU,EAAY3Z,MAExB,IAAkB,IAAd2hB,GAAsBrc,EAAQ,IAAqE,IAAhEsc,EAASG,KAAKpG,GAAe3b,MAAM5I,EAAM0f,QAASxR,KACvF,GACEA,EAAQya,eAAoBza,EAAQ,GAAI,EAAG+b,EAAgB,SAEtD/b,IAAUqU,EAAY3Z,SACwB,IAAnD0c,GAAiB1c,MAAM5I,EAAM0f,QAASxR,MAC6B,IAAhEsc,EAASG,KAAKpG,GAAe3b,MAAM5I,EAAM0f,QAASxR,OAIrDqU,EAAY3Z,QAAUsF,GACxBkJ,uBAAS,WACP6O,GAAe/X,GACf2C,GAAS3C,GAELA,GAAS,IAAwB,IAAnBlO,EAAM6gB,WAAyC,IAApB7gB,EAAMggB,WACjD4I,GAAcrE,GAAe3b,MAAM5I,EAAM0f,QAASxR,aAU1D,GACgB,KAAdvF,EAAE0gB,SACgB,KAAd1gB,EAAE0gB,UAAqC,IAAnBrpB,EAAM6gB,UAAsC,KAAjBsB,GACjC,IAAdxZ,EAAE0gB,UAAqC,IAApBO,EAKzB,GAFc,IAAdjhB,EAAE0gB,SAAiBrgB,eAAeL,GAE9B4Z,EAAY3Z,OAAS,GAAK2Z,EAAY3Z,MAAQqhB,EAChD/E,GAAallB,EAAM0f,QAAS6C,EAAY3Z,YAD1C,CAKA,IAA0B,IAAtB+gB,EAA4B,CAC9B,IAAMpN,EAAO,SAACtQ,EAAK2e,GACjB,GAAIA,GACF,IAAmC,IAA/B5L,EAAqB4L,GACvB,YAIFA,EAAO5qB,EAAM+gB,aAGf,QAAY,IAAR9U,GAA0B,OAARA,EAAtB,CAIAkc,GAAiB,IAAuB,IAAnBnoB,EAAMsf,UAAmB,GAE9C,IAAMwJ,EAAc,WAAT8B,EAAoB1F,GAAe+C,GAC9Ca,EAAG7c,EAAc,eAAT2e,IAEe,IAAnB5qB,EAAMsf,WACY,OAApBsD,EAAUha,OAAkBga,EAAUha,MAAMc,QAC5C6e,QAWJ,QAPyB,IAArBvoB,EAAMyhB,WACRlhB,EAAK,YAAaiiB,EAAW5Z,MAAO2T,GAGpCA,EAAKiG,EAAW5Z,QAGK,IAAnB5I,EAAMsf,SACR,QAIe,IAAf+C,EAAKzZ,MACPiiB,MAEoC,IAA7BxH,GAAM0G,aAAanhB,OAC1BohB,WA1JuB,IAAnBhqB,EAAMsf,WAAyD,IAApC9Z,MAAMwR,QAAQhX,EAAMqf,YACjD2F,GAAchlB,EAAMqf,WAAWxS,OAAS,IAEd,IAAnB7M,EAAMsf,UAA0C,OAArBtf,EAAMqf,YACxC9e,EAAK,oBAAqB,YA3B5BsqB,UANAC,eAAQniB,IA2LZ,SAASsK,KACP,OAAqB,IAAd6O,EACHiB,EAAena,MAEK,OAAlBia,EAAQja,OAA4D,OAA1Cia,EAAQja,MAAMmiB,kBAAkBniB,MACtDia,EAAQja,MAAMmiB,kBAAkBniB,WAChC,EAIZ,SAASoK,KACP,OAAOC,KAGT,SAASmI,KACP,OAA2B,IAAvBpb,EAAM8f,aACD,QAGwB,IAA7Bxf,EAAO,iBACFwkB,GAAclc,MAAM8a,KAAI,SAAAsH,GAAK,OAAI1qB,EAAO,iBAAkB0qB,MAAQhe,aAGpD,IAAnB1M,EAAMykB,SACDzkB,EAAMykB,WAAW/X,SAGH,IAAnBhN,EAAM8gB,SACDgE,GAAclc,MAAM8a,KAAI,SAACsH,EAAOnU,GAAR,OAAcjW,eAAEqqB,OAAO,CACpD9pB,IAAK,UAAY0V,EACjBqU,WAAoC,IAAzB7H,GAAMgF,SAASzf,QAAwD,IAAtC0c,GAAiB1c,MAAMoiB,EAAM1G,KACzE3K,OAAO,EACPwR,UAAWnrB,EAAM4Z,MACjB5N,SAAUA,GAASpD,MACnBwiB,SANoD,WAMtCJ,EAAMhG,cAAcnO,MACjC,kBAAMjW,eAAE,OAAD,gBACRC,MAAO,aACU,IAAfmqB,EAAMtG,KAAgB,YAAc,cAAiBH,GAAe3b,MAAMoiB,EAAM1G,aAI/E,CACL1jB,eAAE,OAAD,mBACyB,IAAtB+jB,GAAY/b,MAAiB,YAAc,mBAAwC,IAAvB5I,EAAMuf,aAChEvf,EAAMuf,aACN8E,GAAezb,SAKzB,SAASyiB,UAEY,IAAjB/qB,EAAM4lB,QACHrE,EAAiByJ,aAAehrB,EAAM4lB,SAEzCrE,EAAiByJ,WAAahrB,EAAM4lB,OACpCrE,EAAiBuD,UAAY,IAG/B,IAAM0D,OAAsB,IAAjBxoB,EAAM4lB,OACb5lB,EAAM4lB,OACN,SAAA8E,GACA,OAAOpqB,eAAE2qB,OAAD,gBACNpqB,IAAK6pB,EAAM9c,OACR8c,EAAMzF,YACR,WACD,OAAO3kB,eACL4qB,QACA,kBAAM5qB,eACJ6qB,QACA,kBAAM7qB,eAAE,OAAD,mBACY,IAAfoqB,EAAMtG,KAAgB,YAAc,cAAiBsG,EAAM7E,kBAOzE,EAAsBtE,EAAduD,EAAR,EAAQA,UAEJ1F,EAAU9H,GAAiB,MAAOuN,GAAYvc,MAAM8a,KAAI,SAACsH,EAAOnU,GAKlE,YAJuB,IAAnBuO,EAAWvO,KACbuO,EAAWvO,GAAMiS,EAAGkC,IAGf5F,EAAWvO,OAOpB,YAJkC,IAA9BvW,EAAO,oBACTof,EAAUpf,EAAO,oBAAqBorB,OAAOhM,IAGxCiM,eAAWrrB,EAAO,iBAAmBof,GAG9C,SAASkM,GAAUC,EAAYC,GAC7B,IAAMhqB,EAAO,+BACXuE,KAAkB,IAAbylB,EAAoBlJ,OAAY,EACrCzhB,IAAK,MACLN,MAAOojB,GAAmBrb,MAC1B5G,MAAOhC,EAAMohB,WACbxY,WAA4B,IAArB4Z,EAAW5Z,MAAmB4Z,EAAW5Z,MAAQ,GAExD1D,KAAM,UACHme,GAAM0I,WAAWC,WAAWpjB,OARvB,IASRgF,GAAIyV,GAAMyG,UAAUlhB,MACpBqjB,UAAWjsB,EAAMisB,UACjBjgB,SAAUhM,EAAMgM,SAChBqV,aAAcrhB,EAAMqhB,aACpB,kBAAkC,IAAfwK,IAA2C,IAApB7rB,EAAMksB,gBAAuB,EACvEC,UAA4B,IAAlBnsB,EAAMqlB,QAChB+G,UAA6B,IAAnBpsB,EAAMosB,UACbpF,GAAmBpe,OAYxB,OATmB,IAAfijB,IAAqC,IAAd/J,KACS,IAA9Btc,MAAMwR,QAAQlV,EAAKjB,OACrBiB,EAAKjB,MAAO,IAAO,qBAGnBiB,EAAKjB,OAAS,sBAIXD,eAAE,QAASkB,GAGpB,SAASshB,GAASza,GAChB2gB,aAAa3H,GAEThZ,GAAKA,EAAEE,SAAiC,IAAvBF,EAAEE,OAAOwjB,YAI9BzD,GAAcjgB,EAAEE,OAAOD,OAAS,IAGhCmZ,GAAiB,EACjBE,EAAoBO,EAAW5Z,OAGL,IAAxBya,GAAMwB,QAAQjc,QACI,IAAdkZ,IAAmD,IAA7BW,EAAmB7Z,OAE7Cya,GAAM3Z,aAGe,IAAnB1J,EAAM0hB,WACRC,EAAa2K,YAAW,WACtB7V,GAAO+L,EAAW5Z,SACjB5I,EAAMkhB,iBAIb,SAAS0H,GAAe3c,GAClBuW,EAAW5Z,QAAUqD,IACvBuW,EAAW5Z,MAAQqD,EACnB1L,EAAK,cAAe0L,IAIxB,SAASkc,GAAkBlc,EAAKsgB,EAAaC,GAC3CzK,GAA8B,IAAbyK,GAEM,IAAnBxsB,EAAM6gB,WACR+H,GAAc3c,IAEM,IAAhBsgB,IAAqC,IAAbC,IAC1BvK,EAAoBhW,IAGN,IAAhBsgB,GAAwB9V,GAAOxK,IAInC,SAASwK,GAAQxK,EAAKwgB,GACpB,QAAuB,IAAnBzsB,EAAM0hB,YAAuC,IAAf+K,IAA+C,IAAxBpJ,GAAMwB,QAAQjc,OAAvE,EAIiC,IAA7Bya,GAAM0G,aAAanhB,MACrBrI,EAAK,iBAGL8iB,GAAM0G,aAAanhB,OAAQ,EAC3B8Z,EAAsB9Z,OAAQ,GAItB,KAARqD,IACsB,IAAnBjM,EAAMsf,UACNgE,GAAW1a,MAAMiE,OAAS,IACP,IAAnBkV,GACA9V,IAAQsY,GAAe3b,MAAM0a,GAAW1a,MAAO,MAElDqD,EAAM,IAGR,IAAMygB,EAAgBJ,YAAW,YAChB,IAAfjK,EAAKzZ,QAAmByZ,EAAKzZ,OAAQ,KACpC,IAEH0gB,aAAatH,GACbA,EAAW0K,EAEXnsB,EACE,SACA0L,GACA,SAAC6c,EAAI6D,IACiB,IAAfF,IAA+C,IAAxBpJ,GAAMwB,QAAQjc,OAAmBoZ,IAAa0K,IACxEpD,aAAatH,GAEC,oBAAP8G,GAAqBA,IAG5BpG,EAAsB9Z,OAAQ,EAE9BwO,uBAAS,WACPiM,GAAM0G,aAAanhB,OAAQ,GAEE,IAAzBya,GAAMgF,SAASzf,SACE,IAAf6jB,GACa,IAAfpK,EAAKzZ,OAAkB2f,MAED,IAAflG,EAAKzZ,MACZgkB,IAAW,GAGXvK,EAAKzZ,OAAQ,GAIE,oBAAZ+jB,GAA0BvV,uBAAS,WAAQuV,EAAQhsB,aAIhE,YAC8B,IAAxB0iB,GAAMwB,QAAQjc,OAAkBoZ,IAAa0K,IAC/CpD,aAAatH,GACbqB,GAAM0G,aAAanhB,OAAQ,EAC3B8Z,EAAsB9Z,OAAQ,IAEjB,IAAfyZ,EAAKzZ,QAAmByZ,EAAKzZ,OAAQ,OAK3C,SAASikB,KACP,IAAM5rB,GAA4B,IAApBmjB,GAAUxb,WAEO,IAAzBtI,EAAO,aACH,kBAAMA,EAAO,aAAc,CAAEkiB,WAAYA,EAAW5Z,cACpD,EAENyiB,GAEJ,OAAOzqB,eAAEksB,OAAO,CACdzmB,IAAKwc,EACLhiB,MAAOsjB,GAAiBvb,MACxB5G,MAAOhC,EAAM4gB,kBACbvB,WAAYgD,EAAKzZ,MACjB9D,KAA0B,IAArB9E,EAAMugB,WACXxb,OAA8B,IAAvB/E,EAAMsgB,eAA6C,IAApB8D,GAAUxb,QAAqC,IAAnB5I,EAAM6gB,SACxE5b,OAAQjF,EAAMwgB,WACdlb,KAAMtF,EAAMygB,SACZlb,OAAQvF,EAAM0gB,WACdmF,KAAM/B,GAAclb,MACpBmkB,eAAe,EACfnoB,WAAW,EACXC,SAAS,EACTG,OAAQwhB,GAAY5d,MACpB0Y,eAAgBthB,EAAMshB,eACtBC,eAAgBvhB,EAAMuhB,eACtBtW,mBAAoBjL,EAAMiL,mBAC1BvG,oBAAoB,EACpBsoB,gBAAiB3V,GACjB4V,aAAcC,GACdC,aAAcC,GACdC,OAAQC,IACPrsB,GAGL,SAASmsB,GAAkBzkB,GACzB4kB,GAAmB5kB,GACnBkiB,KAGF,SAASyC,KACPjZ,KAGF,SAASmZ,GAAoB7kB,GAC3B+e,eAAK/e,GACe,OAApBia,EAAUha,OAAkBga,EAAUha,MAAMc,QAC5C+Y,EAAmB7Z,OAAQ,EAC3BkF,OAAO+C,SAAS/C,OAAO8B,aAAe9B,OAAO+B,SAAWjG,SAAS4D,KAAKE,YAAc,EAAG,GAGzF,SAAS+f,GAAmB9kB,GAC1B+e,eAAK/e,GACLyO,uBAAS,WACPqL,EAAmB7Z,OAAQ,KAI/B,SAAS8kB,KACP,IAAM5V,EAAU,CACdlX,eAAE+sB,OAAD,eAAC,+BACA9sB,MAAO,YAAF,OAAewiB,GAAMuK,aACvBhK,GAAgBhb,OAFpB,IAGCilB,IAAKxK,GAAMyG,UAAUlhB,MACrBid,KAAM/B,GAAclb,MACpB5D,QAAQ,EACR8U,QAAS4I,EAAsB9Z,MAC/BklB,aAAa,EACbC,QAAQ,EACRC,WAAYxL,EAAW5Z,MAAMiE,OAAS,GACnCwW,GAAM0I,WAAWkC,UAAUrlB,OAV/B,IAWC4e,QAASgG,GACTU,OAAQT,KAZT,eAAC,kBAcGntB,GAdJ,IAeC6tB,WAAY,kBAAM9K,GAAM+K,YAAW,IACnCC,YAAQ,EACRC,WAAO,MAsBX,OAlBe,IAAfjM,EAAKzZ,OAAkBkP,EAAQlV,KAC7BhC,eAAE,MAAO,CACPyF,IAAK0c,EACLliB,MAAOsjB,GAAiBvb,MAAQ,UAChC5G,MAAOhC,EAAM4gB,kBACb1e,QAAS4oB,OACTkC,gBAAiB3V,KAEG,IAApB+M,GAAUxb,WAEqB,IAAzBtI,EAAO,aACHA,EAAO,aAAc,CAAEkiB,WAAYA,EAAW5Z,QAC9C,KAENyiB,OAIDzqB,eAAE2tB,OAAS,CAChBloB,IAAKyc,EACLzD,WAAYiD,EAAO1Z,MACnBuB,UAA6B,IAAnBnK,EAAM6gB,SAAoB,WAAQ,EAC5CS,eAAgBY,EAChBX,eAAgBvhB,EAAMuhB,eACtBtW,mBAAoBjL,EAAMiL,mBAC1BgiB,aAAcC,GACdC,aAAcqB,GACdC,OAAQC,GACRrB,OAAQsB,KACP,kBAAM/tB,eAAE,MAAO,CAChBC,MAAO,qBACsB,IAAxBijB,GAAclb,MAAiB,iCAAmC,MACrC,IAA7B6Z,EAAmB7Z,MAAiB,6BAA+B,KACvEkP,MAGL,SAAS0W,GAAoB7lB,GAC3B4kB,GAAmB5kB,GAEK,OAApBma,EAAUla,OACZka,EAAUla,MAAMgmB,sBACdvL,GAAMwL,QAAQjmB,MAAMkB,cAAc,6CAItCuZ,GAAMwB,QAAQjc,OAAQ,EAGxB,SAAS8lB,GAAc/lB,GACrB4f,MACwB,IAAxBlF,GAAMwB,QAAQjc,OAAmBrI,EAAK,OAAQoI,GAC9CygB,KAGF,SAASuF,KACP,IAAM/iB,EAAKhC,SAASC,cAEV,OAAP+B,GAAeA,EAAGgC,KAAOyV,GAAMyG,UAAUlhB,OACnB,OAApBga,EAAUha,OACVga,EAAUha,QAAUgD,GAEvBgX,EAAUha,MAAMc,QAGlB2K,KAGF,SAASwW,UACkB,IAArBhJ,IACFA,EAAiBuD,UAAY,KAGV,IAAjB9C,EAAO1Z,QAIX2Z,EAAY3Z,OAAS,GAEF,IAAfyZ,EAAKzZ,QACPyZ,EAAKzZ,OAAQ,IAGa,IAAxBya,GAAMwB,QAAQjc,QAChB0gB,aAAatH,GACbA,OAAW,GAEsB,IAA7BqB,GAAM0G,aAAanhB,QACrBrI,EAAK,gBACL8iB,GAAM0G,aAAanhB,OAAQ,EAC3B8Z,EAAsB9Z,OAAQ,KAKpC,SAASohB,GAAWrhB,IACW,IAAzB0a,GAAMgF,SAASzf,SAID,IAAdkZ,GACFuB,GAAMyL,iBAAiBnmB,GACvB2Z,EAAO1Z,OAAQ,EACfwO,uBAAS,WACPiM,GAAM3Z,YAIR2Z,GAAM3Z,aAGe,IAAnB1J,EAAM0hB,SACRjL,GAAO+L,EAAW5Z,QAES,IAApBwb,GAAUxb,YAA2C,IAAzBtI,EAAO,eAC1C+hB,EAAKzZ,OAAQ,IAIjB,SAAS2f,KACPjG,EAAO1Z,OAAQ,EACfiiB,KAGF,SAASzB,MACY,IAAnBppB,EAAM6gB,UAAqBsH,IACN,IAAnBnoB,EAAMsf,WAAyC,IAApBtf,EAAMggB,WAAsBsD,GAAW1a,MAAMiE,OAAS,GAC7E0X,GAAe3b,MAAM0a,GAAW1a,MAAO,KACvC,IACJ,GACA,GAIJ,SAASgkB,GAAYmC,GACnB,IAAIxM,GAAe,EAEnB,IAAa,IAATwM,EAAe,CACjB,GAAIzL,GAAW1a,MAAMiE,OAAS,EAAG,CAC/B,IAAMZ,EAAM4a,GAAeje,MAAM0a,GAAW1a,MAAO,IACnD2Z,EAAcviB,EAAM0f,QAAQ8I,WAAU,SAAA1L,GAAC,OAAIb,eAAY4K,GAAeje,MAAMkU,GAAI7Q,MAGlF6H,GAAwByO,GAG1B0D,GAAe1D,GAGjB,SAASyM,MACc,IAAjB1M,EAAO1Z,OAAqC,OAAlBia,EAAQja,OACpCia,EAAQja,MAAM+B,iBAIlB,SAASuiB,GAAoBvkB,QACrB,IAANA,GAAgB+e,eAAK/e,GACrBpI,EAAK,aAAcoI,GACnB0a,GAAM4L,aAAarmB,OAAQ,EAC3Bya,GAAMyL,iBAAiBnmB,GAGzB,SAAS4kB,GAAoB5kB,QACrB,IAANA,GAAgB+e,eAAK/e,GACrBpI,EAAK,aAAcoI,GACnB0a,GAAM4L,aAAarmB,OAAQ,EAC3Bya,GAAM6L,kBAAkBvmB,GAG1B,SAASwmB,KACPrN,IAAsC,IAA1BphB,EAAGmK,SAASC,GAAGskB,QAAsC,WAAnBpvB,EAAMwhB,YAE7B,SAAnBxhB,EAAMwhB,YACa,IAAnBxhB,EAAM6gB,gBACuB,IAAzBvgB,EAAO,mBAA+C,IAAnBN,EAAM0hB,WAA2C,IAApB0C,GAAUxb,SAIlFsZ,GAAgD,IAAvBxhB,EAAGmK,SAASC,GAAGC,MAA8B,IAAd+W,IAAyC,IAAnB9hB,EAAM6gB,SAChF,OACA7gB,EAAMshB,eA2JZ,OA/mCA/W,mBAAM+Y,IAAY,SAAArX,GAChB2V,EAAkB3V,GAGG,IAAnBjM,EAAM6gB,WACiB,IAApB7gB,EAAMggB,YACa,IAAnBhgB,EAAMsf,WAGuB,IAA7B+D,GAAM0G,aAAanhB,SACA,IAAjB0Z,EAAO1Z,QAAiC,IAAfyZ,EAAKzZ,QAAsC,IAAnBmb,GAASnb,UAE5C,IAAnBmZ,GAA2BqH,MACN,IAAjB9G,EAAO1Z,QAAiC,IAAfyZ,EAAKzZ,OAChC6N,GAAO,OAGV,CAAE4Y,WAAW,IAEhB9kB,oBAAM,kBAAMvK,EAAMggB,YAAWoJ,IAE7B7e,mBAAM8X,EAAMuK,IAk8BZ0C,4BAAeH,IACfI,uBAAUP,IAEVG,KAEA/W,4BAAc,WACZyJ,EAAmB,CACjByJ,WAAYhrB,EAAM4lB,OAClBxG,QAAS,GACT0F,UAAW,OAIfhZ,8BAAgB,WACdyV,OAAmB,EACnByH,aAAa3H,MAIf1hB,OAAOoM,OAAO1L,EAAO,CACnBqpB,aAAWzB,aACXvD,iBAAeiD,OAAK/C,gBACpBe,kBAAgBwC,uBAChBhS,UAAQuY,sBAAoB7G,oBAC5BrC,oBACAgC,0BACAxC,iBAAkB,kBAAMA,GAAiB1c,MAAM4mB,MAAM,KAAM5iB,IAC3Dia,eAAgB,kBAAMA,GAAeje,MAAM4mB,MAAM,KAAM5iB,IACvD2X,eAAgB,kBAAMA,GAAe3b,MAAM4mB,MAAM,KAAM5iB,MAGzD3M,OAAOoM,OAAOgX,GAAO,CACnBC,cAEAsK,WAAYpnB,uBAAS,iBACnB,uDAAmE,IAAnBxG,EAAM6gB,SAAoB,MAAQ,GAAlF,oCACwC,IAAnB7gB,EAAM8gB,SAAoB,MAAQ,GADvD,gCAEoC,IAAnB9gB,EAAMsf,SAAoB,WAAa,aAG1DqD,WACAC,YACAmB,YACAiG,aAEAyF,cAAejpB,uBAAS,mBACE,IAAvBxG,EAAM8f,aACH0C,EAAW5Z,MAAMiE,OAAS,GACP,IAAnBkX,GAASnb,QAEVob,eAAmBhkB,EAAMuf,iBAG9BmQ,gBAAiB,WACf,IAC2B,IAAzBrM,GAAMgF,SAASzf,SACI,IAAjB0Z,EAAO1Z,QACgB,IAApBwb,GAAUxb,YACe,IAAzBtI,EAAO,cAGZ,OAAqB,IAAdwhB,EAAqB4L,KAAcb,MAI9C8C,cAAe,CACbC,UADa,SACFjnB,GAAK0a,GAAMyL,iBAAiBnmB,IACvCqB,WAFa,SAEDrB,GACV0a,GAAM6L,kBAAkBvmB,GAAG,WACzBygB,KACAyB,SAGJ3oB,QARa,SAQJyG,GACP,IAAkB,IAAdmZ,IAEFgJ,eAAQniB,IAEW,IAAf0Z,EAAKzZ,OAGP,OAFAiiB,UACoB,OAApBjI,EAAUha,OAAkBga,EAAUha,MAAMc,SAKhDsgB,GAAUrhB,KAIdylB,WAAY,SAAAvC,GACV,IAAM5qB,EAAQma,KACR0Q,GAA0B,IAAfD,IAAwC,IAAjBvJ,EAAO1Z,QAAgC,IAAdkZ,EA+BjE,IA7BuB,IAAnB9hB,EAAM6gB,SACR5f,EAAM2B,KAAKgpB,GAASC,EAAYC,KAGA,IAAzBzI,GAAMgF,SAASzf,QAA+B,IAAbkjB,IACxC7qB,EAAM2B,KACJhC,eAAE,MAAO,CACPyF,IAAKuc,EACLzhB,IAAK,MACLN,MAAO,aACP+M,GAAIyV,GAAMyG,UAAUlhB,MACpBoD,SAAUhM,EAAMgM,SAChBkb,UAAWC,GACXC,QAAS8B,GACT5B,WAAYC,MAIkB,kBAAvBvnB,EAAMqhB,cAA6BrhB,EAAMqhB,aAAaxU,OAAS,GACxE5L,EAAM2B,KACJhC,eAAE,QAAS,CACTC,MAAO,0CACPwgB,aAAcrhB,EAAMqhB,aACpB+F,QAASC,YAMM,IAAnBrE,EAASpa,QAAsC,IAAlB5I,EAAMqlB,SAAoB0B,GAAkBne,MAAMiE,OAAS,EAAG,CAC7F,IAAMgjB,EAAO9I,GAAkBne,MAAM8a,KAAI,SAAA9a,GAAK,OAAIhI,eAAE,SAAU,CAAEgI,QAAOmc,UAAU,OAEjF9jB,EAAM2B,KACJhC,eAAE,SAAU,CACVC,MAAO,SACPd,KAAMijB,EAASpa,MACf0W,SAAUtf,EAAMsf,UACfuQ,IAIP,OAAOjvB,eAAE,MAAD,gBACNC,MAAO,oCACJwiB,GAAM0I,WAAWC,WAAWpjB,OAC9B3H,IAGL6uB,eAAgB,kBACI,IAAlB9vB,EAAM8Z,UAAoD,IAAhC4I,EAAsB9Z,QAA6C,IAA3B5I,EAAM+f,iBACpE,CACEnf,eAAEa,OAAO,CACPZ,MAAO,4BAA4C,IAAfwhB,EAAKzZ,MAAiB,cAAgB,IAC1E7I,KAAMsmB,GAAkBzd,SAG5B,QAID6S,eAAS4H,Q,gPCn/Cd0M,EAAkB,CAAE,aAAc,WAAY,OAAQ,QAE7CjwB,+BAAgB,CAC7BC,KAAM,eAENC,MAAO,iCACFsE,QADA,IAGHqV,MAAOxZ,QACP8X,KAAM9X,QACN6vB,SAAU7vB,QACV6E,OAAQ7E,QACR8vB,UAAW9vB,QAEX+vB,UAAW,CACThrB,KAAMC,OACNpE,QAAS,aACTqE,UAAW,SAAA0X,GAAC,OAAIiT,EAAgB9Q,SAASnC,OAI7Czc,MAnB6B,SAmBtBL,EAnBsB,GAmBJ,IAATM,EAAS,EAATA,MACRE,EAAKC,kCACLgG,EAASC,eAAQ1G,EAAOQ,EAAGG,MAAMD,IAEjCyvB,EAAU3pB,uBAAS,iBACvB,sEACgBxG,EAAMkwB,UADtB,gBAEoB,IAAjBzpB,EAAOmC,MAAiB,4CAA8C,MACtD,IAAhB5I,EAAM2Z,MAAiB,kBAAoB,MAC5B,IAAf3Z,EAAMiY,KAAgB,iBAAmB,MACtB,IAAnBjY,EAAMgwB,SAAoB,qBAAuB,MAChC,IAAjBhwB,EAAMgF,OAAkB,mBAAqB,MACzB,IAApBhF,EAAMiwB,UAAsB,oBAAsB,OAGvD,OAAO,kBAAMrvB,eAAE,MAAO,CACpBC,MAAOsvB,EAAQvnB,OACd,CACDhI,eAAE,QAAS,CAAEC,MAAO,WAAaC,eAAMR,EAAMS,gBC3CpC,WAAUf,EAAO8X,GAC9B,OAAOlX,eAAE,MAAOZ,EAAO,CACrBY,eAAE,QAAS,CAAEC,MAAO,WAAaiX,M,oCCQ/BsY,EAAQ,CACZC,KAAMC,OACN1uB,MAAO2uB,GAGHC,EAAc,CAAE,OAAQ,QAAS,YAExB1wB,+BAAgB,CAC7BC,KAAM,iBAENC,MAAO,iCACFsS,QADA,IAGHpN,KAAM,CACJA,KAAMC,OACNpE,QAAS,OACTqE,UAAW,SAAA0X,GAAC,OAAI0T,EAAYvR,SAASnC,KAGvC2T,MAAO,CACLvrB,KAAMM,MACNzE,QAAS,iBAAM,KAGjB2vB,QAASje,SACTke,UAAW9e,OAEXnM,aAAc,CACZ3E,aAAS,KAIbV,MAzB6B,SAyBtBL,EAzBsB,GAyBG,IAC1BuH,EADUjH,EAAgB,EAAhBA,MAAO4F,EAAS,EAATA,MAEf2oB,EAAUxoB,iBAAI,MAEd0M,EAAsBvM,uBAAS,kBACnCxG,EAAM2wB,WAAa,QAAuB,IAAlB3wB,EAAM0wB,QAC1Bjc,SAASzU,EAAM2wB,UAAW,IACzBnrB,MAAMwR,QAAQhX,EAAMywB,OAASzwB,EAAMywB,MAAM5jB,OAAS,KAGzD,EAKI6F,eAAiB,CACnBK,sBAAqBC,yBAAwBC,uBAL7CQ,EADF,EACEA,wBACAK,EAFF,EAEEA,wBACA8D,EAHF,EAGEA,iBACAP,EAJF,EAIEA,mBAKIuZ,EAAqBpqB,uBAAS,WAClC,GAAkC,IAA9BuM,EAAoBnK,MACtB,MAAO,GAGT,IAAMioB,EAAQ,SAACC,EAAMja,GAAP,MAAc,CAC1B3I,MAAOuF,EAAwB7K,MAAMsI,KAAO2F,EAC5Cia,SAGF,YAAyB,IAAlB9wB,EAAM0wB,QACT1wB,EAAMywB,MAAMzjB,MAAMyG,EAAwB7K,MAAMsI,KAAMuC,EAAwB7K,MAAMuI,IAAIuS,IAAImN,GAC5F7wB,EAAM0wB,QAAQjd,EAAwB7K,MAAMsI,KAAMuC,EAAwB7K,MAAMuI,GAAKsC,EAAwB7K,MAAMsI,MAAMwS,IAAImN,MAG7HV,EAAU3pB,uBAAS,iBACvB,sCAAyE,IAAlCxG,EAAMuS,wBAAmC,eAAiB,oBACvE,IAAvBvS,EAAM0F,aAA0B,GAAK,cAGpCsmB,EAAaxlB,uBAAS,uBACH,IAAvBxG,EAAM0F,aAA0B,GAAK,CAAEsG,SAAU,MAYnD,SAASiH,IACP,OAAO4b,EAAQjmB,MAAMH,KAAOomB,EAAQjmB,MAGtC,SAASoK,IACP,OAAOzL,EAGT,SAASD,IACPC,EAAoBkE,eAAgBwH,IAAsBjT,EAAM0F,cAChE6B,EAAkBkO,iBAAiB,SAAU4B,EAAoB0Z,OAAWC,SAG9E,SAASvpB,SACmB,IAAtBF,IACFA,EAAkBoO,oBAAoB,SAAU0B,EAAoB0Z,OAAWC,SAC/EzpB,OAAoB,GAIxB,SAAS0pB,IACP,IAAIhwB,EAAQ2W,EACK,SAAf5X,EAAMkF,KAAkB,MAAQ,QAChC0rB,EAAmBhoB,MAAM8a,IAAIpjB,EAAMS,UAOrC,YAJqB,IAAjBT,EAAM+tB,SACRptB,EAAQX,EAAM+tB,SAAS3C,OAAOzqB,IAGzB0qB,eAAWrrB,EAAMguB,MAAOrtB,GAejC,OAtDAsJ,mBAAMwI,GAAqB,WACzBe,OAGFvJ,oBAAM,kBAAMvK,EAAM0F,gBAAc,WAC9B+B,IACAH,OAoCF8Q,4BAAc,WACZtE,OAGFod,wBAAU,WACR5pB,OAGF8E,8BAAgB,WACd3E,OAGK,WACL,QAAsB,IAAlBnH,EAAMS,QAKV,MAAsB,aAAff,EAAMkF,KACTisB,EACE,CAAE9qB,IAAKwoB,EAAShuB,MAAO,mBAAqBsvB,EAAQvnB,OACpDqoB,KAEFrwB,eAAEwvB,EAAOpwB,EAAMkF,MAAd,eAAC,kBACCgB,GADF,IAEDG,IAAKwoB,EACLhuB,MAAO,CAAEqF,EAAMrF,MAAOsvB,EAAQvnB,QAC3BojB,EAAWpjB,OACbqoB,GAdHG,QAAQruB,MAAM,qE,wBCxIhBsuB,EAAe,CACnBC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,GACJC,GAAI,IAGN,SAASjnB,EAAOwB,EAAK0lB,GACnB,MAAO,CACLC,WAAuB,IAAZD,EAAA,oCACuB1lB,EADvB,2BAEKA,EAFL,UAMAnM,mCAAgB,CAC7BC,KAAM,kBAENC,MAAO,gDACFsE,QACAutB,QAFA,IAIHjpB,MAAO,CACL1D,KAAM2M,OACN9Q,QAAS,GAEX0b,OAAQ5K,OAER+H,MAAOzU,OACP2sB,WAAY3sB,OAEZwsB,QAASxxB,QACT4xB,OAAQ5xB,QACR6xB,cAAe7xB,QACf8xB,MAAO9xB,QACPymB,QAASzmB,QAET+xB,gBAAiB/xB,UAGnBE,MAzB6B,SAyBtBL,EAzBsB,GAyBJ,IAATM,EAAS,EAATA,MACRE,EAAKC,kCACLgG,EAASC,eAAQ1G,EAAOQ,EAAGG,MAAMD,IACjCyxB,EAAYC,eAAQpyB,EAAOqxB,GAE3BgB,EAAS7rB,uBAAS,kBAA8B,IAAxBxG,EAAMgyB,gBAA0C,IAAhBhyB,EAAMiyB,SAE9D9B,EAAU3pB,uBAAS,iBACvB,0BACmB,IAAhBxG,EAAM4Z,MAAN,gBAAmC5Z,EAAM4Z,OAAW,MAClC,IAAlB5Z,EAAM2xB,UAAoC,IAAhB3xB,EAAMiyB,MAAiB,8BAAgC,MAC/D,IAAlBjyB,EAAM4mB,QAAmB,mBAAqB,OAG7C0L,EAAa9rB,uBAAS,kBAAMiE,OAAuB,IAAjBzK,EAAMyc,OAAoBzc,EAAMyc,OAAS,EAAGzc,EAAM2xB,YACpFY,EAAa/rB,uBAAS,iBAC1B,mFAC+D,IAA1BxG,EAAMkyB,gBAA2B,MAAQ,GAD9E,qDAEkD,IAAjBzrB,EAAOmC,MAAiB,OAAS,eAC1C,IAArB5I,EAAM8xB,WAAN,cAAsC9xB,EAAM8xB,YAAgB,OAG3DU,EAAahsB,uBAAS,kBAAMiE,GAAuB,IAAjB4nB,EAAOzpB,MAAiB,EAAI5I,EAAM4I,MAAO5I,EAAM2xB,YACjFc,EAAajsB,uBAAS,iBAC1B,mFAC+D,IAA1BxG,EAAMkyB,gBAA2B,MAAQ,GAD9E,qDAEkD,IAAjBG,EAAOzpB,MAAiB,KAAO,GAFhE,kBAKI8pB,EAAclsB,uBAAS,iBAAO,CAAEiE,MAAO,GAAF,OAAoB,IAAdzK,EAAM4I,MAAZ,SAE3C,OAAO,WACL,IAAM3H,EAAQ,CACZL,eAAE,MAAO,CACPC,MAAO0xB,EAAW3pB,MAClB5G,MAAOswB,EAAW1pB,QAGpBhI,eAAE,MAAO,CACPC,MAAO4xB,EAAW7pB,MAClB5G,MAAOwwB,EAAW5pB,SAWtB,OAPiB,IAAjB5I,EAAM+xB,SAAoC,IAAjBM,EAAOzpB,OAAmB3H,EAAM2B,KACvDhC,eAAE,MAAO,CACPC,MAAO,0CACPmB,MAAO0wB,EAAY9pB,SAIhBhI,eAAE,MAAO,CACdC,MAAOsvB,EAAQvnB,MACf5G,MAAOmwB,EAAUvpB,MACjB+pB,KAAM,cACN,gBAAiB,EACjB,gBAAiB,EACjB,iBAAyC,IAAxB3yB,EAAMgyB,mBACnB,EACAhyB,EAAM4I,OACT+iB,eAAWrrB,EAAMS,QAASE,Q,gDCvGtB2xB,EAAqB,CAChCC,WAAY1yB,QACZ2yB,sBAAuB3yB,SAGZ4yB,EAAqB,CAAE,oBAAqB,cAE1C,aACb,IAGIC,EAAcC,EAAsBC,EAHlC1yB,EAAKC,kCACHT,EAAuBQ,EAAvBR,MAAOO,EAAgBC,EAAhBD,KAAMI,EAAUH,EAAVG,MAGfwyB,EAAe9sB,kBAAI,GAiBzB,SAAS+sB,KACoB,IAAvBD,EAAavqB,MACfyqB,IAGAC,IAIJ,SAASA,KACoB,IAAvBH,EAAavqB,QAIjBuqB,EAAavqB,OAAQ,EACrBsqB,EAAYvyB,EAAM8H,IAAI8qB,WACtBL,EAAUM,aAAaP,EAAsBtyB,EAAM8H,KACnDmB,SAAS4D,KAAKC,YAAY9M,EAAM8H,KAChCmB,SAAS4D,KAAK1E,UAAUmf,IAAI,4BAE5B+K,EAAe,CACbrvB,QAAS0vB,GAEXI,OAAQxL,IAAI+K,IAGd,SAASK,KACoB,IAAvBF,EAAavqB,aAII,IAAjBoqB,IACFS,OAAQ9lB,OAAOqlB,GACfA,OAAe,GAGjBE,EAAUM,aAAa7yB,EAAM8H,IAAKwqB,GAClCrpB,SAAS4D,KAAK1E,UAAU6E,OAAO,4BAC/BwlB,EAAavqB,OAAQ,OAEY,IAA7BjI,EAAM8H,IAAIirB,gBACZpH,YAAW,WAAQ3rB,EAAM8H,IAAIirB,qBAqBjC,OA7EoB,IAApBC,eAAYnzB,IAAgB+J,oBAAM,kBAAM5J,EAAMizB,UAAQ,YACpB,IAAhC5zB,EAAM8yB,uBAAkCO,OAG1C9oB,oBAAM,kBAAMvK,EAAM6yB,cAAY,SAAA/V,GACxBqW,EAAavqB,QAAUkU,GACzBsW,OAIJ7oB,mBAAM4oB,GAAc,SAAArW,GAClBvc,EAAK,oBAAqBuc,GAC1Bvc,EAAK,aAAcuc,MAgDrB1E,4BAAc,WACZ6a,EAAuBrpB,SAASwD,cAAc,WAGhD8jB,wBAAU,YACa,IAArBlxB,EAAM6yB,YAAuBS,OAG/BlnB,6BAAgBinB,GAGhBpzB,OAAOoM,OAAO1L,EAAO,CACnByyB,mBACAE,gBACAD,mBAGK,CACLF,eACAC,qB,sBCvFG,SAASS,EAAU3X,EAAGC,GAC3B,OAAQ,IAAI+N,KAAKhO,GAAO,IAAIgO,KAAK/N,G,gBCPtB2X,EAAoB,CAC/BC,WAAYthB,SACZuhB,gBAAiB7zB,QACjB8zB,gBAAiB,CACf/uB,KAAMC,OACNC,UAAW,SAAA0X,GAAC,MAAU,OAANA,GAAoB,OAANA,GAC9B/b,QAAS,OAIN,SAASmzB,EAAcl0B,EAAOm0B,EAAoBC,EAASC,GAChE,IAAMC,EAAe9tB,uBAAS,WAC5B,IAAQ+tB,EAAWJ,EAAmBvrB,MAA9B2rB,OAER,OAAOA,GACHH,EAAQxrB,MAAMmgB,MAAK,SAAAyL,GAAG,OAAIA,EAAIz0B,OAASw0B,MACvC,QAGAE,EAAqBjuB,uBAAS,uBACb,IAArBxG,EAAM+zB,WACF/zB,EAAM+zB,WACN,SAACjyB,EAAMyyB,EAAQG,GACb,IAAM1zB,EAAMozB,EAAQxrB,MAAMmgB,MAAK,SAAAyL,GAAG,OAAIA,EAAIz0B,OAASw0B,KACnD,QAAY,IAARvzB,QAAgC,IAAdA,EAAI0X,MACxB,OAAO5W,EAGT,IACE6yB,GAAqB,IAAfD,GAAuB,EAAI,EACjCzoB,EAA2B,oBAAdjL,EAAI0X,MACb,SAAAoE,GAAC,OAAI9b,EAAI0X,MAAMoE,IACf,SAAAA,GAAC,OAAIA,EAAG9b,EAAI0X,QAElB,OAAO5W,EAAKM,MAAK,SAAC8Z,EAAGC,GACnB,IACEyY,EAAI3oB,EAAIiQ,GACR2Y,EAAI5oB,EAAIkQ,GAEV,GAAU,OAANyY,QAAoB,IAANA,EAChB,OAAQ,EAAID,EAEd,GAAU,OAANE,QAAoB,IAANA,EAChB,OAAO,EAAIF,EAEb,QAAiB,IAAb3zB,EAAIoB,KACN,OAAOpB,EAAIoB,KAAKwyB,EAAGC,EAAG3Y,EAAGC,GAAKwY,EAEhC,IAAoB,IAAhB5X,eAAS6X,KAA+B,IAAhB7X,eAAS8X,GACnC,OAAQD,EAAIC,GAAKF,EAEnB,IAAkB,IAAd9X,eAAO+X,KAA6B,IAAd/X,eAAOgY,GAC/B,OAAOhB,EAASe,EAAGC,GAAKF,EAE1B,GAAiB,mBAANC,GAAgC,mBAANC,EACnC,OAAQD,EAAIC,GAAKF,EArBM,MAwBd,CAAEC,EAAGC,GAAInR,KAAI,SAAAoR,GAAC,OAAKA,EAAI,IAAIC,iBAAiBC,iBAxB9B,sBA0BzB,OAFEJ,EAxBuB,KAwBpBC,EAxBoB,KA0BlBD,EAAIC,GACN,EAAIF,EACJC,IAAMC,EAAI,EAAIF,SAK7B,SAASvyB,EAAMpB,GACb,IAAIi0B,EAAYj1B,EAAMi0B,gBAEtB,GAAIjzB,IAAQf,OAAOe,GACbA,EAAIi0B,YACNA,EAAYj0B,EAAIi0B,WAGlBj0B,EAAMA,EAAIjB,SAEP,CACH,IAAMy0B,EAAMJ,EAAQxrB,MAAMmgB,MAAK,SAAAyL,GAAG,OAAIA,EAAIz0B,OAASiB,UACvC,IAARwzB,GAAkBA,EAAIS,YACxBA,EAAYT,EAAIS,WAIpB,MAA6Bd,EAAmBvrB,MAA1C2rB,EAAN,EAAMA,OAAQG,EAAd,EAAcA,WAEVH,IAAWvzB,GACbuzB,EAASvzB,EACT0zB,EAA2B,OAAdO,IAEoB,IAA1Bj1B,EAAMg0B,gBACbU,GAAcA,GAEQ,IAAfA,EACW,OAAdO,EACFV,EAAS,KAGTG,GAAa,EAIG,OAAdO,EACFP,GAAa,EAGbH,EAAS,KAIbF,EAAc,CAAEE,SAAQG,aAAYQ,KAAM,IAG5C,MAAO,CACLZ,eACAG,qBACAryB,QCvHG,IAAM+yB,EAAsB,CACjC1e,OAAQ,CAAEtR,OAAQlF,QAClBm1B,aAAc3iB,UAGT,SAAS4iB,EAAgBr1B,EAAOq0B,GACrC,IAAMiB,EAAuB9uB,uBAAS,uBACb,IAAvBxG,EAAMo1B,aACFp1B,EAAMo1B,aACN,SAACG,EAAMC,EAAOC,EAAMC,GAClB,IAAMC,EAAaH,EAAQA,EAAMR,cAAgB,GACjD,OAAOO,EAAK9e,QACV,SAAAmf,GAAG,OAAIH,EAAK7Q,MAAK,SAAA5jB,GACf,IAAMiL,EAAMypB,EAAU10B,EAAK40B,GAAO,GAC5BC,EAAoB,cAAR5pB,GAA+B,SAARA,EAAkB,GAAKA,EAAI+oB,cACpE,OAAyC,IAAlCa,EAASnhB,QAAQihB,aAgBpC,OAVAprB,oBACE,kBAAMvK,EAAMyW,UACZ,WACEW,uBAAS,WACPid,EAAc,CAAEa,KAAM,IAAK,QAG/B,CAAEY,MAAM,IAGH,CAAER,wB,UC/BX,SAASS,EAAgBC,EAAQC,GAC/B,IAAK,IAAMC,KAAQD,EACjB,GAAIA,EAAQC,KAAWF,EAAQE,GAC7B,OAAO,EAGX,OAAO,EAGT,SAASC,EAAeC,GAOtB,OANIA,EAAElB,KAAO,IACXkB,EAAElB,KAAO,QAEW,IAAlBkB,EAAEC,aAA0BD,EAAEC,YAAc,IAC9CD,EAAEC,YAAc,GAEXD,EAGF,IAAME,EAA0B,CACrCC,WAAYt2B,OACZu2B,mBAAoB,CAClBtxB,KAAMM,MACNzE,QAAS,iBAAM,CAAE,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,KAG7C,sBAAuB0R,UAGlB,SAASgkB,EAAyBj2B,EAAIk2B,GAC3C,IAAQ12B,EAAgBQ,EAAhBR,MAAOO,EAASC,EAATD,KAETo2B,EAAkBtwB,iBACtBpG,OAAOoM,OAAO,CACZkoB,OAAQ,KACRG,YAAY,EACZQ,KAAM,EACNmB,YAAar2B,EAAMw2B,mBAAmB3pB,OAAS,EAC3C7M,EAAMw2B,mBAAoB,GAC1B,GACHx2B,EAAMu2B,aAGLpC,EAAqB3tB,uBAAS,WAClC,IAAMowB,OAAyC,IAAnC52B,EAAO,uBAAP,iCACH22B,EAAgB/tB,OAAU5I,EAAMu2B,YACrCI,EAAgB/tB,MAEpB,OAAOutB,EAAcS,MAGjBC,EAAerwB,uBAAS,uBAA8C,IAAxC2tB,EAAmBvrB,MAAMkuB,cAE7D,SAASC,EAAmBR,GAC1BS,EAAyB,CACvBT,aACA9f,OAAQzW,EAAMyW,SAIlB,SAASugB,IAAqC,IAAXd,EAAW,uDAAJ,GACxC9e,uBAAS,WACP7W,EAAK,UAAW,CACdg2B,WAAYL,EAAKK,YAAcpC,EAAmBvrB,MAClD6N,OAAQyf,EAAKzf,QAAUzW,EAAMyW,OAC7BigB,oBAKN,SAASrC,EAAepoB,EAAKgrB,GAC3B,IAAMC,EAAgBf,EAAc,iCAC/BhC,EAAmBvrB,OACnBqD,IAGD8pB,EAAe5B,EAAmBvrB,MAAOsuB,IAChB,IAAvBL,EAAajuB,QAAyC,IAAvBquB,GACjCF,EAAkBG,IAKK,IAAvBL,EAAajuB,WAMM,IAArB5I,EAAMu2B,iBACgC,IAAnCv2B,EAAO,uBAEVO,EAAK,oBAAqB22B,GAG1BP,EAAgB/tB,MAAQsuB,EAXxBH,EAAkBG,GAetB,MAAO,CACLP,kBACAxC,qBACA0C,eAEAG,2BACA3C,iBAIG,SAAS8C,EAAoB32B,EAAIm2B,EAAiBxC,EAAoB0C,EAAcxC,EAAe+C,GACxG,IAAQp3B,EAA+BQ,EAA/BR,MAAOO,EAAwBC,EAAxBD,KAAeG,EAASF,EAAlBG,MAASD,GAExB22B,EAAqB7wB,uBAAS,kBACX,IAAvBqwB,EAAajuB,MACTurB,EAAmBvrB,MAAMkuB,YAAc,EACvCM,EAAyBxuB,SAGzB0uB,EAAgB9wB,uBAAS,WAC7B,MAA8B2tB,EAAmBvrB,MAAzCssB,EAAR,EAAQA,KAAMmB,EAAd,EAAcA,YACd,OAAQnB,EAAO,GAAKmB,KAGhBkB,EAAe/wB,uBAAS,WAC5B,MAA8B2tB,EAAmBvrB,MAAzCssB,EAAR,EAAQA,KAAMmB,EAAd,EAAcA,YACd,OAAOnB,EAAOmB,KAGVmB,EAAchxB,uBAAS,kBAAwC,IAAlC2tB,EAAmBvrB,MAAMssB,QAEtDuC,EAAcjxB,uBAAS,kBACc,IAAzC2tB,EAAmBvrB,MAAMytB,YACrB,EACA/kB,KAAKkD,IACL,EACAlD,KAAK0D,KAAKqiB,EAAmBzuB,MAAQurB,EAAmBvrB,MAAMytB,iBAI9DqB,EAAalxB,uBAAS,kBACH,IAAvB+wB,EAAa3uB,OAETurB,EAAmBvrB,MAAMssB,MAAQuC,EAAY7uB,SAG7C+uB,EAA6BnxB,uBAAS,WAC1C,IAAMqpB,EAAO7vB,EAAMw2B,mBAAmBvX,SAAS0X,EAAgB/tB,MAAMytB,aACjEr2B,EAAMw2B,mBACN,CAAEG,EAAgB/tB,MAAMytB,aAAc3K,OAAO1rB,EAAMw2B,oBAEvD,OAAO3G,EAAKnM,KAAI,SAAAkU,GAAK,MAAK,CACxBzR,MAAiB,IAAVyR,EAAcl3B,EAAGyI,KAAKvH,MAAMi2B,QAAU,GAAKD,EAClDhvB,MAAOgvB,SAkBX,SAASE,IACPzD,EAAc,CAAEa,KAAM,IAGxB,SAAS6C,IACP,IAAQ7C,EAASf,EAAmBvrB,MAA5BssB,KACJA,EAAO,GACTb,EAAc,CAAEa,KAAMA,EAAO,IAIjC,SAAS8C,IACP,MAA8B7D,EAAmBvrB,MAAzCssB,EAAR,EAAQA,KAAMmB,EAAd,EAAcA,YACVkB,EAAa3uB,MAAQ,GAAKssB,EAAOmB,EAAcgB,EAAmBzuB,OACpEyrB,EAAc,CAAEa,KAAMA,EAAO,IAIjC,SAAS+C,IACP5D,EAAc,CAAEa,KAAMuC,EAAY7uB,QAOpC,OAxCA2B,mBAAMktB,GAAa,SAACQ,EAAUC,GAC5B,GAAID,IAAaC,EAAjB,CAIA,IAAMC,EAAchE,EAAmBvrB,MAAMssB,KACzC+C,IAAaE,EACf9D,EAAc,CAAEa,KAAM,IAEf+C,EAAWE,GAClB9D,EAAc,CAAEa,KAAM+C,aA0Ba,IAAnCj4B,EAAO,wBACTO,EAAK,oBAAD,kBAA2B4zB,EAAmBvrB,QAG7C,CACL0uB,gBACAC,eACAC,cACAE,aACAD,cACAE,6BACAN,qBAEAS,YACAC,WACAC,WACAC,YChNG,IAAMG,EAA4B,CACvCjd,UAAW,CACTjW,KAAMC,OACNpE,QAAS,OACTqE,UAAW,SAAA0X,GAAC,MAAI,CAAE,SAAU,WAAY,QAASmC,SAASnC,KAE5DiI,SAAU,CACR7f,KAAMM,MACNzE,QAAS,iBAAM,MAINs3B,EAA4B,CAAE,kBAAmB,aAEvD,SAASC,EAAsBt4B,EAAOO,EAAMg4B,EAAcC,GAC/D,IAAMC,EAAejyB,uBAAS,WAC5B,IAAM6L,EAAO,GAIb,OAHArS,EAAM+kB,SAASrB,IAAI8U,EAAU5vB,OAAOib,SAAQ,SAAA1iB,GAC1CkR,EAAMlR,IAAQ,KAETkR,KAGHqmB,EAAmBlyB,uBAAS,WAChC,MAA2B,SAApBxG,EAAMmb,aAGTwd,EAAkBnyB,uBAAS,WAC/B,MAA2B,WAApBxG,EAAMmb,aAGTyd,EAAoBpyB,uBAAS,WACjC,MAA2B,aAApBxG,EAAMmb,aAGT0d,EAAkBryB,uBAAS,kBAC/B+xB,EAAa3vB,MAAMiE,OAAS,GAAK0rB,EAAa3vB,MAAMkwB,OAClD,SAAAlD,GAAG,OAAmD,IAA/C6C,EAAa7vB,MAAO4vB,EAAU5vB,MAAMgtB,UAIzCmD,EAAmBvyB,uBAAS,kBACN,IAA1BqyB,EAAgBjwB,OACb2vB,EAAa3vB,MAAMgc,MAAK,SAAAgR,GAAG,OAAmD,IAA/C6C,EAAa7vB,MAAO4vB,EAAU5vB,MAAMgtB,UAGlEoD,EAAqBxyB,uBAAS,kBAAMxG,EAAM+kB,SAASlY,UAEzD,SAASosB,EAAe93B,GACtB,OAAqC,IAA9Bs3B,EAAa7vB,MAAOzH,GAG7B,SAAS+3B,IACP34B,EAAK,kBAAmB,IAG1B,SAAS44B,EAAiB9mB,EAAMkjB,EAAM6D,EAAOj3B,GAC3C5B,EAAK,YAAa,CAAEg1B,OAAM6D,QAAO/mB,OAAMlQ,QAEvC,IAAMk3B,GAAoC,IAA1BV,EAAgB/vB,OACjB,IAAVwwB,EAAiB7D,EAAO,IAEb,IAAV6D,EACIp5B,EAAM+kB,SAAS2G,OAAO6J,GACtBv1B,EAAM+kB,SAAStO,QACf,SAAAmf,GAAG,OAA4C,IAAxCvjB,EAAK4M,SAASuZ,EAAU5vB,MAAMgtB,OAI/Cr1B,EAAK,kBAAmB84B,GAG1B,MAAO,CACLX,mBACAC,kBACAC,oBACAC,kBACAE,mBACAC,qBAEAC,gBACAC,iBACAC,mB,UClFJ,SAASG,EAAQrtB,GACf,OAAOzG,MAAMwR,QAAQ/K,GACjBA,EAAIe,QACJ,GAGC,IAAMusB,EAAyB,CACpCC,SAAUh0B,OAGCi0B,EAAyB,CAAE,mBAEjC,SAASC,EAAmB15B,EAAOO,GACxC,IAAMo5B,EAAgBtzB,iBAAIizB,EAAOt5B,EAAMw5B,WAMvC,SAASI,EAAez4B,GACtB,OAAOw4B,EAAc/wB,MAAMqW,SAAS9d,GAGtC,SAAS04B,EAAa5tB,QACG,IAAnBjM,EAAMw5B,SACRj5B,EAAK,kBAAmB0L,GAGxB0tB,EAAc/wB,MAAQqD,EAI1B,SAAS6tB,EAAgB34B,EAAK8mB,GAC5B,IAAMpf,EAAS8wB,EAAc/wB,MAAMoE,QAC7BkB,EAAQrF,EAAO6L,QAAQvT,IAEjB,IAAR8mB,GACa,IAAX/Z,IACFrF,EAAOjG,KAAKzB,GACZ04B,EAAYhxB,KAGI,IAAXqF,IACPrF,EAAOmf,OAAO9Z,EAAO,GACrB2rB,EAAYhxB,IAIhB,OAjCA0B,oBAAM,kBAAMvK,EAAMw5B,YAAU,SAAAvtB,GAC1B0tB,EAAc/wB,MAAQ0wB,EAAOrtB,MAgCxB,CACL2tB,gBACAC,cACAC,kB,cCjDSC,EAA+B,CAC1CC,eAAgBx0B,OAGX,SAASy0B,EAAyBj6B,EAAOm0B,EAAoBuE,GAClE,IAAMtE,EAAU5tB,uBAAS,WACvB,QAAsB,IAAlBxG,EAAMk6B,QACR,OAAOl6B,EAAMk6B,QAIf,IAAMtE,EAAM51B,EAAMu1B,KAAM,GAExB,YAAe,IAARK,EACH31B,OAAOoS,KAAKujB,GAAKlS,KAAI,SAAA3jB,GAAI,MAAK,CAC5BA,OACAomB,MAAOpmB,EAAKo6B,cACZzhB,MAAO3Y,EACPwB,MAAOwb,eAAS6Y,EAAK71B,IAAU,QAAU,OACzCsB,UAAU,MAEZ,MAGA+4B,EAAe5zB,uBAAS,WAC5B,MAA+B2tB,EAAmBvrB,MAA1C2rB,EAAR,EAAQA,OAAQG,EAAhB,EAAgBA,WAEVe,OAAgC,IAAzBz1B,EAAMg6B,eACf5F,EAAQxrB,MAAM6N,QAAO,SAAAzV,GAAG,OAAqB,IAAjBA,EAAIkZ,WAAiE,IAA5Cla,EAAMg6B,eAAe/a,SAASje,EAAIjB,SACvFq0B,EAAQxrB,MAEZ,OAAO6sB,EAAK/R,KAAI,SAAA1iB,GACd,IAAMO,EAAQP,EAAIO,OAAS,QAE3B,wCACKP,GADL,IAEEO,QACAG,YAAa,0CAAF,OAA6CH,GACxDQ,UAAW,eAASR,SACO,IAAtBP,EAAIq5B,cAA2B,IAAMr5B,EAAIq5B,cAAgB,MACxC,IAAjBr5B,EAAIK,SAAoB,YAAc,KACtCL,EAAIjB,OAASw0B,EAAb,mBAAiD,IAAfG,EAAsB,YAAc,IAAQ,IACnF4F,UAAW,QAAF,OAAW/4B,GAAX,YAAqC,IAAhBP,EAAImvB,QAAqB,IAAMnvB,EAAImvB,QAAU,YAK3EoK,EAAkB/zB,uBAAS,WAC/B,IAAMg0B,EAAQ,GAId,OAHAJ,EAAaxxB,MAAMib,SAAQ,SAAA7iB,GACzBw5B,EAAOx5B,EAAIjB,MAASiB,KAEfw5B,KAGHC,EAAkBj0B,uBAAS,WAC/B,YAA8B,IAAvBxG,EAAMmS,aACTnS,EAAMmS,aACNioB,EAAaxxB,MAAMiE,SAAqC,IAA3B6rB,EAAiB9vB,MAAiB,EAAI,MAGzE,MAAO,CACLwrB,UACAgG,eACAG,kBACAE,mBC5CJ,IAAMC,GAAc,mCAEdC,GAAqB,GAC3BvoB,OAAoByR,SAAQ,SAAAuS,GAAOuE,GAAoBvE,GAAM,MAE9Ct2B,oCAAgB,CAC7BC,KAAM,SAENC,MAAO,wIACLu1B,KAAM,CACJrwB,KAAMM,MACNzE,QAAS,iBAAM,KAEjB65B,OAAQ,CACN11B,KAAM,CAAEC,OAAQsN,UAChB1R,QAAS,MAGXm5B,QAAS10B,MACTsU,QAAS3Z,QAET06B,cAAe11B,OACf21B,aAAc31B,OACd41B,aAAc51B,OACd61B,aAAc71B,OAEd81B,MAAO91B,OAEP+1B,WAAY/6B,QAEZg7B,KAAMh7B,QACNi7B,WAAYj7B,QAEZwZ,MAAOxZ,QACP8X,KAAM9X,QACN6vB,SAAU7vB,QACV6E,OAAQ7E,QACR+vB,UAAW,CACThrB,KAAMC,OACNpE,QAAS,aACTqE,UAAW,SAAA0X,GAAC,MAAI,CAAE,aAAc,WAAY,OAAQ,QAASmC,SAASnC,KAExEmT,UAAW9vB,QAEXk7B,cAAel7B,SACZw6B,IArCA,IAuCHW,YAAan2B,OACbo2B,eAAgBp2B,OAChBq2B,aAAcr2B,OACds2B,kBAAmBhpB,SACnBipB,iBAAkBv2B,OAClBw2B,gBAAiBlpB,SAEjBmH,MAAO,CACL1U,KAAMC,OACNpE,QAAS,UAGX66B,WAAY,CAAEz2B,OAAQK,MAAOvF,QAC7B47B,WAAY,CAAE12B,OAAQK,MAAOvF,QAC7B67B,WAAY,CAAE32B,OAAQK,MAAOvF,QAC7B87B,iBAAkB,CAAE52B,OAAQK,MAAOvF,QACnC+7B,iBAAkB,CAAE72B,OAAQK,MAAOvF,QACnCg8B,mBAAoB,CAAE92B,OAAQK,MAAOvF,QACrCi8B,mBAAoB,CAAE/2B,OAAQK,MAAOvF,QACrCk8B,UAAW,CAAEh3B,OAAQK,MAAOvF,QAC5Bm8B,UAAW,CAAEj3B,OAAQK,MAAOvF,QAE5Bo8B,WAAYl8B,QACZm8B,mBAAoBn8B,QACpBo8B,WAAYp8B,QACZq8B,eAAgBr8B,QAEhBs8B,WAAYhqB,SACZiqB,cAAejqB,SACfkqB,iBAAkBlqB,UAEfnO,QACAsuB,GAEAmH,GACA5E,GACAmB,GACAiD,GACAnB,GACAtE,GAGL1zB,MAAO,CACL,UAAW,kBADR,sBAEA2yB,GAFA,eAGA0G,GAHA,eAIApB,IAGLh4B,MA3F6B,SA2FtBL,EA3FsB,GA2FE,IAAfM,EAAe,EAAfA,MAAOC,EAAQ,EAARA,KACfC,EAAKC,kCACMC,EAASF,EAAlBG,MAASD,GAEX+F,EAASC,eAAQ1G,EAAOU,GAC9B,EAA2Ck8B,IAAnCzJ,EAAR,EAAQA,aAAcC,EAAtB,EAAsBA,iBAEhBoF,EAAYhyB,uBAAS,iBACD,oBAAjBxG,EAAM46B,OACT56B,EAAM46B,OACN,SAAAhF,GAAG,OAAIA,EAAK51B,EAAM46B,YAGlB/L,EAAUxoB,iBAAI,MACdw2B,EAAgBx2B,iBAAI,MACpBy2B,EAAgBt2B,uBAAS,kBAAqB,IAAfxG,EAAMm7B,OAAyC,IAAxBn7B,EAAMq7B,iBAE5D0B,EAAmBv2B,uBAAS,iBAChC,mBACoB,IAAjBC,EAAOmC,MAAiB,8BAAgC,MACvC,IAAjB5I,EAAMgF,OAAkB,mBAAqB,MAC9B,IAAfhF,EAAMiY,KAAgB,iBAAmB,MACtB,IAAnBjY,EAAMgwB,SAAoB,qBAAuB,OAGhDgN,EAAmBx2B,uBAAS,iBAChC,sCAAgCxG,EAAMkwB,UAAtC,+BACqB,IAAlBlwB,EAAM8Z,QAAmB,oBAAsB,MAChC,IAAf9Z,EAAMm7B,KAAgB,iBAAmB4B,EAAiBn0B,SACzC,IAAjBnC,EAAOmC,MAAiB,iBAAmB,MAC3B,IAAhB5I,EAAM2Z,MAAiB,kBAAoB,MACvB,IAApB3Z,EAAMiwB,UAAsB,oBAAsB,MAC3B,IAAvBkD,EAAavqB,MAAiB,qBAAuB,OAGpDq0B,EAAiBz2B,uBAAS,kBAC9Bw2B,EAAiBp0B,QAA2B,IAAlB5I,EAAM8Z,QAAmB,oBAAsB,OAG3EvP,oBACE,kBAAMvK,EAAM67B,WAAa77B,EAAM87B,WAAa97B,EAAM+7B,iBAAmB/7B,EAAMg8B,iBAAmBgB,EAAiBp0B,SAC/G,YAAgC,IAAxBk0B,EAAcl0B,OAA0C,OAAxBi0B,EAAcj0B,OAAkBi0B,EAAcj0B,MAAMiL,WAG9F,MAOI4iB,EAAwBj2B,EAAIk2B,IAN9BC,EADF,EACEA,gBACAxC,EAFF,EAEEA,mBACA0C,EAHF,EAGEA,aAEAG,EALF,EAKEA,yBACA3C,EANF,EAMEA,cAGF,EAAiCgB,EAAer1B,EAAOq0B,GAA/CiB,EAAR,EAAQA,qBACR,EAAuDoE,EAAkB15B,EAAOO,GAAxEq5B,EAAR,EAAQA,cAAeC,EAAvB,EAAuBA,YAAaC,EAApC,EAAoCA,eAE9BoD,EAAqB12B,uBAAS,WAClC,IAAI+uB,EAAOv1B,EAAMu1B,KAEjB,IAA2B,IAAvBsB,EAAajuB,OAAkC,IAAhB2sB,EAAK1oB,OACtC,OAAO0oB,EAGT,MAA+BpB,EAAmBvrB,MAA1C2rB,EAAR,EAAQA,OAAQG,EAAhB,EAAgBA,WAchB,OAZI10B,EAAMyW,SACR8e,EAAOD,EAAqB1sB,MAAM2sB,EAAMv1B,EAAMyW,OAAQ2jB,GAAaxxB,MAAO8tB,KAGjD,OAAvBpC,GAAa1rB,QACf2sB,EAAOd,GAAmB7rB,MACxB5I,EAAMu1B,OAASA,EAAOA,EAAKvoB,QAAUuoB,EACrChB,EACAG,IAIGa,KAGH6B,EAA2B5wB,uBAAS,kBAAM02B,EAAmBt0B,MAAMiE,UAEnE0rB,EAAe/xB,uBAAS,WAC5B,IAAI+uB,EAAO2H,EAAmBt0B,MAE9B,IAA2B,IAAvBiuB,EAAajuB,MACf,OAAO2sB,EAGT,IAAQc,EAAgBlC,EAAmBvrB,MAAnCytB,YAaR,OAXoB,IAAhBA,IAC0B,IAAxBiB,GAAc1uB,OAAe5I,EAAMu1B,OAASA,EAC1CA,EAAK1oB,OAAS0qB,GAAa3uB,QAC7B2sB,EAAOA,EAAKvoB,MAAM,EAAGuqB,GAAa3uB,QAIpC2sB,EAAOA,EAAKvoB,MAAMsqB,GAAc1uB,MAAO2uB,GAAa3uB,QAIjD2sB,KAGT,EAWI+C,EAAqBt4B,EAAOO,EAAMg4B,EAAcC,GAVlDE,GADF,EACEA,iBACAC,GAFF,EAEEA,gBACAC,GAHF,EAGEA,kBACAC,GAJF,EAIEA,gBACAE,GALF,EAKEA,iBACAC,GANF,EAMEA,mBAEAC,GARF,EAQEA,cACAC,GATF,EASEA,eACAC,GAVF,EAUEA,gBAGF,GAAoEc,EAAwBj6B,EAAOm0B,EAAoBuE,IAA/GtE,GAAR,GAAQA,QAASgG,GAAjB,GAAiBA,aAAcG,GAA/B,GAA+BA,gBAAiBE,GAAhD,GAAgDA,gBAEhD,GAAmDvG,EAAal0B,EAAOm0B,EAAoBC,GAASC,GAA5FC,GAAR,GAAQA,aAAcG,GAAtB,GAAsBA,mBAAoBryB,GAA1C,GAA0CA,KAE1C,GAaI+0B,EAAmB32B,EAAIm2B,EAAiBxC,EAAoB0C,EAAcxC,EAAe+C,GAZ3FE,GADF,GACEA,cACAC,GAFF,GAEEA,aACAC,GAHF,GAGEA,YACAE,GAJF,GAIEA,WACAD,GALF,GAKEA,YACAE,GANF,GAMEA,2BACAN,GAPF,GAOEA,mBAEAS,GATF,GASEA,UACAC,GAVF,GAUEA,SACAC,GAXF,GAWEA,SACAC,GAZF,GAYEA,SAGIkF,GAAmB32B,uBAAS,kBAAoC,IAA9B+xB,EAAa3vB,MAAMiE,UAErDuwB,GAAY52B,uBAAS,WACzB,IAAMkI,EAAM,GASZ,OAPA0D,OACGyR,SAAQ,SAAAuS,GAAO1nB,EAAK0nB,GAAMp2B,EAAOo2B,WAEF,IAA9B1nB,EAAIsD,wBACNtD,EAAIsD,uBAAwC,IAAhBhS,EAAM2Z,MAAiB,GAAK,IAGnDjL,KAGT,SAAS2uB,MACiB,IAAxBP,EAAcl0B,OAAkBi0B,EAAcj0B,MAAMiL,QAGtD,SAASypB,KACP,IAAmB,IAAft9B,EAAMm7B,KACR,OAAOoC,KAGT,IAAMC,GAA8B,IAArBx9B,EAAMk7B,WAAsBuC,GAAW,KAEtD,IAA4B,IAAxBX,EAAcl0B,MAAgB,CAChC,IAAM80B,EAASp9B,EAAO,WAChBq9B,EAAYr9B,EAAO,cAEnBs9B,EAAY,CAChB78B,QAAS,SAAAf,GAAK,OAAI69B,GAAW79B,EAAM8wB,KAAMxwB,EAAMkN,KAAMxN,EAAMkO,SAG7D,QAAe,IAAXwvB,EAAmB,CACrB,IAAMI,EAAal9B,eAAE,QAAS88B,EAAO,CAAEjI,KAAM2E,GAAaxxB,SAE1Dg1B,EAAUvP,OAAoB,OAAXmP,EACf,kBAAMM,GACN,iBAAM,CAAEN,KAAW9R,OAAOoS,SAEZ,OAAXN,IACPI,EAAUvP,OAASmP,GAOrB,YAJkB,IAAdG,IACFC,EAAUtP,MAAQ,kBAAM1tB,eAAE,QAAS+8B,EAAU,CAAElI,KAAM2E,GAAaxxB,WAG7DhI,eAAEm9B,EAAD,eAAC,gBACP13B,IAAKw2B,EACLh8B,MAAOb,EAAM87B,WACb95B,MAAOhC,EAAM67B,YACVuB,GAAUx0B,OAJP,IAKN6nB,MAAO8H,EAAa3vB,MACpB1D,KAAM,WACNiN,aAAcsoB,GAAgB7xB,MAC9B4J,gBAAiBwrB,KAChBJ,GAGL,IAAM38B,EAAQ,CACZg9B,MAOF,OAJe,OAAXT,GACFv8B,EAAMi9B,QAAQV,KAGTrM,EAAe,CACpBtwB,MAAO,CAAE,yBAA0Bb,EAAM87B,YACzC95B,MAAOhC,EAAM67B,YACZ56B,GAGL,SAAS4P,GAAUmD,EAASC,GAC1B,GAA4B,OAAxB4oB,EAAcj0B,MAAlB,CAKAoL,EAAUS,SAAST,EAAS,IAC5B,IAAMmqB,EAAQtP,EAAQjmB,MAAMkB,cAAd,+BAAqDkK,EAAU,EAA/D,MAEd,GAAc,OAAVmqB,EAAgB,CAClB,IAAMz4B,EAAempB,EAAQjmB,MAAMkB,cAAc,2BACzCs0B,EAAcD,EAAdC,UACFlmB,EAAYkmB,EAAY14B,EAAayK,UAAY,WAAa,WAEpEzK,EAAayK,UAAYiuB,EAEzB79B,EAAK,iBAAkB,CACrB2N,MAAO8F,EACP9C,KAAM,EACNC,GAAIwlB,EAAgB/tB,MAAMytB,YAAc,EACxCne,oBAlBF2kB,EAAcj0B,MAAMiI,SAASmD,EAASC,GAuB1C,SAAS+pB,GAAWK,GAClB99B,EAAK,iBAAkB89B,GAGzB,SAASC,KACP,MAAO,CACL19B,eAAE29B,EAAiB,CACjB19B,MAAO,2BACP+Y,MAAO5Z,EAAM4Z,MACbiM,KAAMpf,EAAOmC,MACbopB,eAAe,EACfF,WAAY,iBAKlB,SAAS+L,GAAYjI,EAAK4I,EAAUC,GAClC,IACEt9B,EAAMq3B,EAAU5vB,MAAMgtB,GACtB7Q,EAAWkU,GAAc93B,GAE3B,QAAiB,IAAbq9B,EACF,OAAOA,EACLE,GAAa,CACXv9B,MACAy0B,MACA6I,YACAE,UAAW5Z,EAAW,WAAa,MAKzC,IACE6Z,EAAWt+B,EAAO,aAClBW,EAAQm5B,GAAaxxB,MAAM8a,KAAI,SAAA1iB,GAC7B,IACE69B,EAAcv+B,EAAM,aAAD,OAAgBU,EAAIjB,OACvC++B,OAAuB,IAAhBD,EAAyBA,EAAcD,EAEhD,YAAgB,IAATE,EACHA,EAAKC,GAAiB,CAAE59B,MAAKy0B,MAAK6I,YAAWz9B,SAC7CJ,eAAE,KAAM,CACRC,MAAOG,EAAIs5B,UACXt4B,MAAOhB,EAAIgB,OACV00B,GAAa11B,EAAK40B,OAG3B,IAA+B,IAA3B8C,GAAiB9vB,MAAgB,CACnC,IAAMk2B,EAAOx+B,EAAO,kBACdwX,OAAmB,IAATgnB,EACZA,EAAKE,GAAsB,CAAE79B,MAAKy0B,MAAK6I,eACvC,CACE79B,eAAEq+B,OAAW,CACX5f,WAAY0F,EACZnL,MAAO5Z,EAAM4Z,MACbiM,KAAMpf,EAAOmC,MACb+Q,MAAO3Z,EAAM2Z,MACb,sBAAuB,SAACulB,EAAQ/8B,GAC9Bg3B,GAAgB,CAAEh4B,GAAO,CAAEy0B,GAAOsJ,EAAQ/8B,OAKpDlB,EAAMi9B,QACJt9B,eAAE,KAAM,CAAEC,MAAO,2BAA6BiX,IAIlD,IAAMhW,EAAO,CAAEX,MAAKN,MAAO,CAAEkkB,aAuB7B,YArByB,IAArB/kB,EAAMy8B,aACR36B,EAAKjB,MAAO,mBAAqB,EACjCiB,EAAKI,QAAU,SAAAC,GACb5B,EAAK,YAAa4B,EAAKyzB,EAAK6I,UAIJ,IAAxBz+B,EAAM08B,gBACR56B,EAAKjB,MAAO,mBAAqB,EACjCiB,EAAKq9B,WAAa,SAAAh9B,GAChB5B,EAAK,eAAgB4B,EAAKyzB,EAAK6I,UAIJ,IAA3Bz+B,EAAM28B,mBACR76B,EAAKjB,MAAO,mBAAqB,EACjCiB,EAAKs9B,cAAgB,SAAAj9B,GACnB5B,EAAK,kBAAmB4B,EAAKyzB,EAAK6I,KAI/B79B,eAAE,KAAMkB,EAAMb,GAGvB,SAASg9B,KACP,IACEzwB,EAAOlN,EAAMkN,KACbkwB,EAASp9B,EAAO,WAChBq9B,EAAYr9B,EAAO,cAEjBW,EAAQs3B,EAAa3vB,MAAM8a,KAC7B,SAACkS,EAAK6I,GAAN,OAAoBZ,GAAWjI,EAAKpoB,EAAMixB,MAU5C,YAPe,IAAXf,IACFz8B,EAAQy8B,EAAO,CAAEjI,KAAM2E,GAAaxxB,QAAS8iB,OAAOzqB,SAEpC,IAAd08B,IACF18B,EAAQA,EAAMyqB,OAAOiS,EAAU,CAAElI,KAAM2E,GAAaxxB,UAG/ChI,eAAE,QAASK,GAGpB,SAASy9B,GAAc58B,GAarB,OAZAu9B,GAAsBv9B,GAEtBA,EAAK2zB,KAAO3zB,EAAK2zB,KAAK/R,KAAI,SAAA1iB,GACxB,IAAMs+B,EAAI,kBAAKt+B,GAMf,OALAf,OAAOs/B,eAAeD,EAAG,QAAS,CAChC9lB,IAAK,kBAAMkd,GAAa11B,EAAKc,EAAK8zB,MAClCrc,cAAc,EACdimB,YAAY,IAEPF,KAGFx9B,EAGT,SAASi9B,GAAkBj9B,GASzB,OARAu9B,GAAsBv9B,GAEtB7B,OAAOs/B,eAAez9B,EAAM,QAAS,CACnC0X,IAAK,kBAAMkd,GAAa50B,EAAKd,IAAKc,EAAK8zB,MACvCrc,cAAc,EACdimB,YAAY,IAGP19B,EAGT,SAASk9B,GAAuBl9B,GAE9B,OADAu9B,GAAsBv9B,GACfA,EAGT,SAASu9B,GAAuBv9B,GAC9B7B,OAAOoM,OAAOvK,EAAM,CAClB2zB,KAAM2E,GAAaxxB,MACnBxH,QAASm5B,GAAgB3xB,MACzBxG,QACAq9B,SAAUnI,GAAc1uB,MAAQ9G,EAAK28B,UACrC7kB,MAAO5Z,EAAM4Z,MACbiM,KAAMpf,EAAOmC,MACb+Q,MAAO3Z,EAAM2Z,SAGY,IAA3B+e,GAAiB9vB,OAAkB3I,OAAOs/B,eAAez9B,EAAM,WAAY,CACzE0X,IAAK,kBAAMyf,GAAcn3B,EAAKX,MAC9B4Z,IAAK,SAACmkB,EAAQ/8B,GACZg3B,GAAgB,CAAEr3B,EAAKX,KAAO,CAAEW,EAAK8zB,KAAOsJ,EAAQ/8B,IAEtDoX,cAAc,EACdimB,YAAY,IAGdv/B,OAAOs/B,eAAez9B,EAAM,SAAU,CACpC0X,IAAK,kBAAMogB,EAAc93B,EAAKX,MAC9B4Z,IAAK,SAAAmkB,GACHpF,EAAeh4B,EAAKX,IAAK+9B,IAE3B3lB,cAAc,EACdimB,YAAY,IAIhB,SAAS9I,GAAc11B,EAAK40B,GAC1B,IAAM3pB,EAA2B,oBAAdjL,EAAI0X,MAAuB1X,EAAI0X,MAAMkd,GAAOA,EAAK50B,EAAI0X,OACxE,YAAsB,IAAf1X,EAAI0+B,OAAoB1+B,EAAI0+B,OAAOzzB,EAAK2pB,GAAO3pB,EAGxD,IAAM0zB,GAAiBn5B,uBAAS,iBAAO,CACrC+vB,WAAYpC,EAAmBvrB,MAC/B6uB,YAAaA,GAAY7uB,MACzB4uB,YAAaA,GAAY5uB,MACzB8uB,WAAYA,GAAW9uB,MACvBkvB,aACAC,YACAC,YACAC,YAEA9E,aAAcA,EAAavqB,MAC3BwqB,uBAGF,SAASwM,KACP,IAcI3+B,EAbFqJ,EAAMhK,EAAMgK,IACZu1B,EAAUv/B,EAAO,YACjBw/B,EAAWx/B,EAAO,aAClBy/B,EAAez/B,EAAO,iBACtB0/B,GAA0C,IAA3BtH,GAAiB9vB,YACV,IAAjBm3B,GACA/G,GAAmBiH,KAAO,EAC/BC,EAAW,kDAEb,YAAY,IAAR51B,EACK1J,eAAE,MAAO,CAAEC,MAAOq/B,GAAY,CAAE51B,EAAIq1B,GAAe/2B,WAKvC,IAAjBo3B,EACF/+B,EAAQ8+B,EAAaJ,GAAe/2B,OAAOoE,SAG3C/L,EAAQ,QAEQ,IAAZ4+B,EACF5+B,EAAM2B,KACJhC,eAAE,MAAO,CAAEC,MAAO,mBAAqB,CACrCg/B,EAAQF,GAAe/2B,UAIpB5I,EAAMi7B,OACbh6B,EAAM2B,KACJhC,eAAE,MAAO,CAAEC,MAAO,oBAAsB,CACtCD,eAAE,MAAO,CACPC,MAAO,CAAE,iBAAkBb,EAAM47B,aAChC57B,EAAMi7B,gBAMA,IAAb6E,IACF7+B,EAAM2B,KACJhC,eAAE,MAAO,CAAEC,MAAO,4BAEpBI,EAAM2B,KACJhC,eAAE,MAAO,CAAEC,MAAO,oBAAsB,CACtCi/B,EAASH,GAAe/2B,WAKT,IAAjB3H,EAAM4L,OAIHjM,eAAE,MAAO,CAAEC,MAAOq/B,GAAYj/B,QAJrC,GAOF,IAAMk/B,GAAsB35B,uBAAS,kBACR,IAA3BuyB,GAAiBnwB,MACb,KACAiwB,GAAgBjwB,SAGtB,SAAS60B,KACP,IAAMx8B,EAAQm/B,KAad,OAXsB,IAAlBpgC,EAAM8Z,cAAsC,IAAlBxZ,EAAMwZ,SAClC7Y,EAAM2B,KACJhC,eAAE,KAAM,CAAEC,MAAO,qBAAuB,CACtCD,eAAE,KAAM,CACNC,MAAO,oBACPmX,QAASyiB,GAAgB7xB,OACxB01B,SAKF19B,eAAE,QAASK,GAGpB,SAASm/B,KACP,IACE5C,EAASl9B,EAAMk9B,OACf6C,EAAa//B,EAAO,eAEtB,QAAe,IAAXk9B,EACF,OAAOA,EACL8C,GAAe,CAAE9C,QAAQ,KACzBxwB,QAGJ,IAAM/L,EAAQm5B,GAAaxxB,MAAM8a,KAAI,SAAA1iB,GACnC,IACEu/B,EAAgBjgC,EAAM,eAAD,OAAkBU,EAAIjB,OAC3C++B,OAAyB,IAAlByB,EAA2BA,EAAgBF,EAClDrgC,EAAQsgC,GAAe,CAAEt/B,QAE3B,YAAgB,IAAT89B,EACHA,EAAK9+B,GACLY,eAAE4/B,OAAK,CACPr/B,IAAKH,EAAIjB,KACTC,UACC,kBAAMgB,EAAImlB,YAGjB,IAA8B,IAA1BwS,GAAgB/vB,QAAiC,IAAf5I,EAAMm7B,KAC1Cl6B,EAAMi9B,QACJt9B,eAAE,KAAM,CAAEC,MAAO,2BAA6B,WAG7C,IAAgC,IAA5B+3B,GAAkBhwB,MAAgB,CACzC,IAAMk2B,EAAOx+B,EAAO,oBACdwX,OAAmB,IAATgnB,EACZA,EAAKwB,GAAe,KACpB,CACE1/B,eAAEq+B,OAAW,CACXrlB,MAAO5Z,EAAM4Z,MACbyF,WAAY8gB,GAAoBv3B,MAChCid,KAAMpf,EAAOmC,MACb+Q,MAAO3Z,EAAM2Z,MACb,sBAAuB8mB,MAI/Bx/B,EAAMi9B,QACJt9B,eAAE,KAAM,CAAEC,MAAO,2BAA6BiX,IAIlD,MAAO,CACLlX,eAAE,KAAM,CACNC,MAAOb,EAAMg8B,iBACbh6B,MAAOhC,EAAM+7B,kBACZ96B,IAIP,SAASq/B,GAAgBx+B,GAmBvB,OAlBA7B,OAAOoM,OAAOvK,EAAM,CAClB2zB,KAAM2E,GAAaxxB,MACnBxG,QACAhB,QAASm5B,GAAgB3xB,MACzBgR,MAAO5Z,EAAM4Z,MACbiM,KAAMpf,EAAOmC,MACb+Q,MAAO3Z,EAAM2Z,SAGiB,IAA5Bif,GAAkBhwB,OACpB3I,OAAOs/B,eAAez9B,EAAM,WAAY,CACtC0X,IAAK,kBAAM2mB,GAAoBv3B,OAC/BmS,IAAK0lB,GACLlnB,cAAc,EACdimB,YAAY,IAIT19B,EAGT,SAAS2+B,GAAwBx0B,IACA,IAA3B8sB,GAAiBnwB,QACnBqD,GAAM,GAGRktB,GACEZ,EAAa3vB,MAAM8a,IAAI8U,EAAU5vB,OACjC2vB,EAAa3vB,MACbqD,GAIJ,IAAMy0B,GAAUl6B,uBAAS,WACvB,IAAMm6B,EAAM,CACV3gC,EAAM66B,eAAiBn6B,EAAGiB,QAAQC,MAAMk2B,UACxC93B,EAAM86B,cAAgBp6B,EAAGiB,QAAQC,MAAMm2B,SACvC/3B,EAAM+6B,cAAgBr6B,EAAGiB,QAAQC,MAAMo2B,SACvCh4B,EAAMg7B,cAAgBt6B,EAAGiB,QAAQC,MAAMq2B,UAEzC,OAAuB,IAAhBv3B,EAAGyI,KAAKC,IAAeu3B,EAAIhP,UAAYgP,KAGhD,SAASC,KACP,IAAyB,IAArB5gC,EAAMq8B,WAAV,CAIA,IAA+B,IAA3Bc,GAAiBv0B,MAAgB,CACnC,IAAyB,IAArB5I,EAAMu8B,WACR,OAGF,IAAMsE,GAA4B,IAAlB7gC,EAAM8Z,QAClB9Z,EAAMw7B,cAAgB96B,EAAGyI,KAAKvH,MAAMkY,QACnC9Z,EAAMyW,OAASzW,EAAMu7B,gBAAkB76B,EAAGyI,KAAKvH,MAAMk/B,UAAY9gC,EAAMs7B,aAAe56B,EAAGyI,KAAKvH,MAAMm/B,OAEnGA,EAASzgC,EAAO,WAChBiW,OAAsB,IAAXwqB,EACb,CAAEA,EAAO,CAAEF,UAASnnB,KAAMhZ,EAAGiB,QAAQC,MAAMo/B,QAASvqB,OAAQzW,EAAMyW,UAClE,CACE7V,eAAEa,OAAO,CACPZ,MAAO,8BACPd,KAAMW,EAAGiB,QAAQC,MAAMo/B,UAEzBH,GAGN,OAAOjgC,eAAE,MAAO,CAAEC,MAAO65B,GAAc,4BAA8BnkB,GAGvE,IAAM0qB,EAAS3gC,EAAM2gC,OAErB,QAAe,IAAXA,EACF,OAAOrgC,eAAE,MAAO,CAAEC,MAAO65B,IAAe,CAAEuG,EAAOtB,GAAe/2B,SAGlE,IAAM3H,GAAqC,IAA7BjB,EAAMs8B,qBAA0D,IAA3B5D,GAAiB9vB,OAAkBowB,GAAmBpwB,MAAQ,EAC7G,CACEhI,eAAE,MAAO,CAAEC,MAAO,oBAAsB,CACtCD,eAAE,MAAO,EACNZ,EAAMy7B,mBAAqB/6B,EAAGyI,KAAKvH,MAAMs/B,iBAAiBlI,GAAmBpwB,YAIpF,GAEJ,OAA6B,IAAzB5I,EAAMw8B,eACD57B,eAAE,MAAO,CACdC,MAAO65B,GAAc,gBACpByG,GAAiBlgC,IAGlBA,EAAM4L,OAAS,EACVjM,eAAE,MAAO,CAAEC,MAAO65B,IAAez5B,QAD1C,GAKF,SAASmgC,GAAgBxK,GACvBvC,EAAc,CACZa,KAAM,EACNmB,YAAaO,EAAIhuB,QAIrB,SAASu4B,GAAkBlgC,GACzB,IAAIogC,EAEAhL,EAAgBlC,EAAmBvrB,MAAnCytB,YACFsF,EAAkB37B,EAAM27B,iBAAmBj7B,EAAGyI,KAAKvH,MAAM20B,WACzD+K,EAAiBhhC,EAAMi2B,WACvBgL,EAAUvhC,EAAMw2B,mBAAmB3pB,OAAS,EA+B9C,GA7BA5L,EAAM2B,KACJhC,eAAE,MAAO,CAAEC,MAAO,6BAGJ,IAAZ0gC,GACFtgC,EAAM2B,KACJhC,eAAE,MAAO,CAAEC,MAAO,oBAAsB,CACtCD,eAAE,OAAQ,CAAEC,MAAO,wBAA0B,CAC3Cb,EAAM07B,kBAAoBh7B,EAAGyI,KAAKvH,MAAM4/B,iBAE1C5gC,eAAE6gC,OAAS,CACT5gC,MAAO,8CACP+Y,MAAO5Z,EAAM4Z,MACbyF,WAAYgX,EACZ3W,QAASiY,GAA2B/uB,MACpC2W,aAA8B,IAAhB8W,EACV31B,EAAGyI,KAAKvH,MAAMi2B,QACdxB,EACJxQ,KAAMpf,EAAOmC,MACb+d,YAAY,EACZhN,OAAO,EACPuG,cAAc,EACdI,cAAc,EACd,sBAAuB8gB,aAMR,IAAnBE,EACFD,EAAUC,EAAe3B,GAAe/2B,YAWxC,GARAy4B,EAAU,CACRzgC,eAAE,OAAwB,IAAhBy1B,EAAoB,CAAEx1B,MAAO,wBAA2B,GAAI,CACpEw1B,EACIsF,EAAgBrE,GAAc1uB,MAAQ,EAAG0I,KAAKiD,IAAIgjB,GAAa3uB,MAAOyuB,GAAmBzuB,OAAQyuB,GAAmBzuB,OACpH+yB,EAAgB,EAAGvE,EAAyBxuB,MAAOyuB,GAAmBzuB,UAI1D,IAAhBytB,GAAqBoB,GAAY7uB,MAAQ,EAAG,CAC9C,IAAM84B,EAAW,CACf9nB,MAAO5Z,EAAM4Z,MACbzD,OAAO,EACPwD,OAAO,EACP1B,MAAM,IAGY,IAAhBjY,EAAM2Z,QACR+nB,EAASzwB,KAAO,MAGlBwmB,GAAY7uB,MAAQ,GAAKy4B,EAAQz+B,KAC/BhC,eAAEwZ,OAAD,eAAC,gBACAjZ,IAAK,WACFugC,GAFJ,IAGChoB,KAAMgnB,GAAQ93B,MAAO,GACrByc,QAASmS,GAAY5uB,MACrB1G,QAAS41B,OAIbuJ,EAAQz+B,KACNhC,eAAEwZ,OAAD,eAAC,gBACAjZ,IAAK,UACFugC,GAFJ,IAGChoB,KAAMgnB,GAAQ93B,MAAO,GACrByc,QAASmS,GAAY5uB,MACrB1G,QAAS61B,MAGXn3B,eAAEwZ,OAAD,eAAC,gBACAjZ,IAAK,UACFugC,GAFJ,IAGChoB,KAAMgnB,GAAQ93B,MAAO,GACrByc,QAASqS,GAAW9uB,MACpB1G,QAAS81B,OAIbP,GAAY7uB,MAAQ,GAAKy4B,EAAQz+B,KAC/BhC,eAAEwZ,OAAD,eAAC,gBACAjZ,IAAK,UACFugC,GAFJ,IAGChoB,KAAMgnB,GAAQ93B,MAAO,GACrByc,QAASqS,GAAW9uB,MACpB1G,QAAS+1B,OAUjB,OAJAh3B,EAAM2B,KACJhC,eAAE,MAAO,CAAEC,MAAO,oBAAsBwgC,IAGnCpgC,EAGT,SAAS0gC,KACP,IAAM1gC,GAA6B,IAArBjB,EAAMo7B,WAChB,CACEx6B,eAAE,QAAS,CAAEC,MAAO,WAAa,CAC/B48B,GAAS78B,YAIO,IAAlBZ,EAAM8Z,cAAsC,IAAlBxZ,EAAMwZ,QAC5BwkB,GAAY19B,aACZ,EAGV,OAAOA,eAAE,MAAO,CAAEC,MAAO,mBAAqBI,GAGhD,SAASs8B,KACP,IAAMzM,OAAsB,IAAfxwB,EAAMwwB,KACfxwB,EAAMwwB,KACN,SAAA9F,GACA,IAAM/pB,EAAQ+pB,EAAMyK,KAAK/R,KACvB,SAAA1iB,GAAG,OAAIJ,eAAE,MAAO,CAAEC,MAAO,0BAA4B,CACnDD,eAAE,MAAO,CAAEC,MAAO,4BAA8B,CAAEG,EAAImlB,QACtDvlB,eAAE,MAAO,CAAEC,MAAO,4BAA8B,CAAEG,EAAI4H,aAI1D,IAA+B,IAA3B8vB,GAAiB9vB,MAAgB,CACnC,IAAMk2B,EAAOx+B,EAAO,kBACdwX,OAAmB,IAATgnB,EACZA,EAAK9T,GACL,CACEpqB,eAAEq+B,OAAW,CACX5f,WAAY2L,EAAMjG,SAClBnL,MAAO5Z,EAAM4Z,MACbiM,KAAMpf,EAAOmC,MACb+Q,MAAO3Z,EAAM2Z,MACb,sBAAuB,SAACulB,EAAQ/8B,GAC9Bg3B,GAAgB,CAAEnO,EAAM7pB,KAAO,CAAE6pB,EAAM4K,KAAOsJ,EAAQ/8B,OAKhElB,EAAMi9B,QACJt9B,eAAE,MAAO,CAAEC,MAAO,0BAA4BiX,GAC9ClX,eAAEghC,OAAY,CAAE/b,KAAMpf,EAAOmC,SAIjC,IAAM9G,EAAO,CACXjB,MAAO,CACL,0BAA4Bk8B,EAAiBn0B,MAC7C5I,EAAMo8B,WAERp6B,MAAOhC,EAAMm8B,WAsBf,YAlBuB,IAArBn8B,EAAMy8B,iBACqB,IAAxBz8B,EAAM08B,gBAET56B,EAAKjB,MAAO,IAAO,uBAEM,IAArBb,EAAMy8B,aACR36B,EAAKI,QAAU,SAAAC,GACb5B,EAAK,YAAa4B,EAAK6oB,EAAM4K,IAAK5K,EAAMyT,kBAIhB,IAAxBz+B,EAAM08B,gBACR56B,EAAKq9B,WAAa,SAAAh9B,GAChB5B,EAAK,eAAgB4B,EAAK6oB,EAAM4K,IAAK5K,EAAMyT,cAK1C79B,eAAE,MAAO,CACdC,MAAO,4DACiB,IAAnBmqB,EAAMjG,SAAoB,+BAAiC,KAC/D,CACDnkB,eAAE,MAAOkB,EAAMb,MAIrB,OAAOL,eAAE,MAAO,CACdC,MAAO,CACL,4BACAb,EAAMi8B,oBAERj6B,MAAOhC,EAAMk8B,oBACZ3D,EAAa3vB,MAAM8a,KAAI,SAACkS,EAAK6I,GAC9B,OAAO3N,EAAK4N,GAAa,CACvBv9B,IAAKq3B,EAAU5vB,MAAMgtB,GACrBA,MACA6I,mBAsCN,OAhCAx+B,OAAOoM,OAAO7L,EAAGG,MAAO,CACtBq2B,2BACA3C,gBACAyD,aACAC,YACAC,YACAC,YACAgB,iBACAC,kBACAU,gBACAC,cACAz3B,QACAi7B,sBACAxsB,YACA6lB,kBAGFz2B,OAAOs/B,eAAe/+B,EAAGG,MAAO,qBAAsB,CACpD6Y,IAAK,kBAAM0jB,EAAmBt0B,OAC9B42B,YAAY,IAGdv/B,OAAOs/B,eAAe/+B,EAAGG,MAAO,eAAgB,CAC9C6Y,IAAK,kBAAM+e,EAAa3vB,OACxB42B,YAAY,IAGdv/B,OAAOs/B,eAAe/+B,EAAGG,MAAO,qBAAsB,CACpD6Y,IAAK,kBAAM6d,GAAmBzuB,OAC9B42B,YAAY,IAGP,WACL,IAAMv+B,EAAQ,CAAE2+B,MACV99B,EAAO,CAAEuE,IAAKwoB,EAAShuB,MAAOo8B,EAAer0B,OAuBnD,OArBmB,IAAf5I,EAAMm7B,KACRl6B,EAAM2B,KAAK++B,MAGX1hC,OAAOoM,OAAOvK,EAAM,CAClBjB,MAAO,CAAEiB,EAAKjB,MAAOb,EAAMo8B,WAC3Bp6B,MAAOhC,EAAMm8B,YAIjBl7B,EAAM2B,KACJ06B,KACAsD,OAGoB,IAAlB5gC,EAAM8Z,cAAsC,IAAlBxZ,EAAMwZ,SAClC7Y,EAAM2B,KACJtC,EAAMwZ,WAIHlZ,eAAE,MAAOkB,EAAMb","file":"js/imageCategories~subscriptions.411acf82.js","sourcesContent":["import { h, defineComponent, getCurrentInstance } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\n\nimport { hSlot, hUniqueSlot } from '../../utils/private/render.js'\n\nexport default defineComponent({\n name: 'QTh',\n\n props: {\n props: Object,\n autoWidth: Boolean\n },\n\n emits: [ 'click' ],\n\n setup (props, { slots, emit }) {\n const vm = getCurrentInstance()\n const { proxy: { $q } } = vm\n\n return () => {\n if (props.props === void 0) {\n return h('th', {\n class: props.autoWidth === true ? 'q-table--col-auto-width' : ''\n }, hSlot(slots.default))\n }\n\n let col, child\n const name = vm.vnode.key\n\n if (name) {\n col = props.props.colsMap[ name ]\n if (col === void 0) { return }\n }\n else {\n col = props.props.col\n }\n\n if (col.sortable === true) {\n const action = col.align === 'right'\n ? 'unshift'\n : 'push'\n\n child = hUniqueSlot(slots.default, [])\n child[ action ](\n h(QIcon, {\n class: col.__iconClass,\n name: $q.iconSet.table.arrowUp\n })\n )\n }\n else {\n child = hSlot(slots.default)\n }\n\n const data = {\n class: col.__thClass\n + (props.autoWidth === true ? ' q-table--col-auto-width' : ''),\n style: col.headerStyle\n }\n\n if (col.sortable === true) {\n data.onClick = evt => {\n props.props.sort(col) // eslint-disable-line\n emit('click', evt)\n }\n }\n\n return h('th', data, child)\n }\n }\n})\n","export enum ErrorRoutes {\r\n notFound = 'notFound',\r\n error = 'error'\r\n}\r\n","export enum LoginRoutes {\r\n login = 'login'\r\n}\r\n","import { AxiosResponse } from 'axios';\r\nimport router from '@/router';\r\nimport { ErrorRoutes } from '@/router/routes/error';\r\nimport { LoginRoutes } from '@/router/routes/login';\r\nimport { impl } from '@/utils/impl';\r\n\r\nexport enum ResponseStatus {\r\n Success = 'Success',\r\n NotFound = 'NotFound',\r\n Error = 'Error',\r\n NotAuthenticated = 'NotAuthenticated',\r\n}\r\n\r\nexport type IsError = ResponseStatus.NotFound | ResponseStatus.Error | ResponseStatus.NotAuthenticated;\r\n\r\nexport type ApiResponse = [T | IsError, AxiosResponse | null];\r\n\r\nexport function isError ([result, _]: ApiResponse): boolean {\r\n return result === ResponseStatus.NotFound ||\r\n result === ResponseStatus.Error ||\r\n result === ResponseStatus.NotAuthenticated;\r\n}\r\n\r\nexport interface IStatusHandler {\r\n onNotFound: (response: AxiosResponse | null) => Promise;\r\n onError: (response: AxiosResponse | null) => Promise;\r\n onNotAuthenticated: (response: AxiosResponse | null) => Promise;\r\n onSuccess: (value: R) => Promise;\r\n}\r\n\r\nexport const DefaultIStatusHandler: IStatusHandler = {\r\n onNotFound: async (_) => { router.push({ name: ErrorRoutes.notFound }); },\r\n onError: async (_) => { router.push({ name: ErrorRoutes.error }); },\r\n onNotAuthenticated: async (_) => { router.push({ name: LoginRoutes.login }); },\r\n onSuccess: async (_) => { /* Do Nothing */ }\r\n};\r\n\r\nexport function chainHandlers (first?: Partial>, second?: Partial>): Partial> {\r\n const result = impl>>({});\r\n if (first?.onNotFound || second?.onNotFound) {\r\n result.onNotFound = async (response) => {\r\n if (first?.onNotFound) { await first.onNotFound(response); }\r\n if (second?.onNotFound) { await second.onNotFound(response); }\r\n };\r\n }\r\n if (first?.onNotAuthenticated || second?.onNotAuthenticated) {\r\n result.onNotAuthenticated = async (response) => {\r\n if (first?.onNotAuthenticated) { await first.onNotAuthenticated(response); }\r\n if (second?.onNotAuthenticated) { await second.onNotAuthenticated(response); }\r\n };\r\n }\r\n if (first?.onError || second?.onError) {\r\n result.onError = async (response) => {\r\n if (first?.onError) { await first.onError(response); }\r\n if (second?.onError) { await second.onError(response); }\r\n };\r\n }\r\n if (first?.onSuccess || second?.onSuccess) {\r\n result.onSuccess = async (response) => {\r\n if (first?.onSuccess) { await first.onSuccess(response); }\r\n if (second?.onSuccess) { await second.onSuccess(response); }\r\n };\r\n }\r\n return result;\r\n}\r\n\r\n/**\r\n * handle the response status if it is an error\r\n * and route the user to the respective error page.\r\n * @param status the response status\r\n * @returns true if status was error. false otherwise.\r\n */\r\nexport async function handleErrorStatus (\r\n [result, response]: ApiResponse,\r\n customHandler?: Partial>\r\n): Promise {\r\n const handler: IStatusHandler = {\r\n onNotFound: customHandler?.onNotFound ??\r\n DefaultIStatusHandler.onNotFound,\r\n onError: customHandler?.onError ??\r\n DefaultIStatusHandler.onError,\r\n onNotAuthenticated: customHandler?.onNotAuthenticated ??\r\n DefaultIStatusHandler.onNotAuthenticated,\r\n onSuccess: customHandler?.onSuccess ??\r\n DefaultIStatusHandler.onSuccess\r\n };\r\n switch (result) {\r\n case ResponseStatus.NotFound:\r\n await handler.onNotFound(response);\r\n return true;\r\n case ResponseStatus.Error:\r\n await handler.onError(response);\r\n return true;\r\n case ResponseStatus.NotAuthenticated:\r\n await handler.onNotAuthenticated(response);\r\n return true;\r\n default:\r\n await handler.onSuccess(result);\r\n return false;\r\n }\r\n}\r\n\r\nexport async function mapResultStatus (\r\n [result, response]: ApiResponse,\r\n valueMapping: (result: D) => Promise\r\n): Promise> {\r\n switch (result) {\r\n case ResponseStatus.NotFound:\r\n case ResponseStatus.Error:\r\n case ResponseStatus.NotAuthenticated:\r\n return [result, response];\r\n }\r\n return [await valueMapping(result), response];\r\n}\r\n\r\nexport async function handleErrorStatusResult (\r\n apiResponse: ApiResponse,\r\n customHandler?: Partial>\r\n): Promise {\r\n const [result] = apiResponse;\r\n const isError = await handleErrorStatus(apiResponse, customHandler);\r\n if (isError) {\r\n return undefined;\r\n } else {\r\n return result as D;\r\n }\r\n}\r\n\r\nexport async function handleErrorStatusResults (\r\n statuses: Array>,\r\n customHandler?: Partial>\r\n): Promise> {\r\n return statuses.reduce(\r\n async (accumulator, current) => {\r\n const acc = await accumulator;\r\n const hasUndef = !!acc.find((v) => v === undefined);\r\n if (hasUndef) {\r\n return [...acc.map(() => undefined), undefined];\r\n } else {\r\n const nextResult = await handleErrorStatusResult(current, customHandler);\r\n return [...acc, nextResult];\r\n }\r\n },\r\n Promise.resolve([] as Array)\r\n );\r\n}\r\n\r\n/**\r\n * If the first status is error, return the error. Otherwise, execute and return the nextStatus.\r\n * @param status first status\r\n * @param nextStatus next status function\r\n * @return next status or error.\r\n */\r\nexport async function chainStatusResults (\r\n apiResponse: Promise>,\r\n nextStatus: (previousStatus: D) => Promise>\r\n): Promise> {\r\n const [result, response] = await apiResponse;\r\n switch (result) {\r\n case ResponseStatus.NotFound:\r\n case ResponseStatus.Error:\r\n case ResponseStatus.NotAuthenticated:\r\n return [result, response];\r\n }\r\n return await nextStatus(result);\r\n}\r\n","import { h, defineComponent, ref, computed, watch, Transition, onBeforeUnmount, getCurrentInstance } from 'vue'\n\nimport useAnchor, { useAnchorProps } from '../../composables/private/use-anchor.js'\nimport useScrollTarget from '../../composables/private/use-scroll-target.js'\nimport useModelToggle, { useModelToggleProps, useModelToggleEmits } from '../../composables/private/use-model-toggle.js'\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport usePortal from '../../composables/private/use-portal.js'\nimport useTransition, { useTransitionProps } from '../../composables/private/use-transition.js'\nimport useTick from '../../composables/private/use-tick.js'\nimport useTimeout from '../../composables/private/use-timeout.js'\n\nimport { closePortalMenus } from '../../utils/private/portal.js'\nimport { getScrollTarget } from '../../utils/scroll.js'\nimport { position, stopAndPrevent } from '../../utils/event.js'\nimport { hSlot } from '../../utils/private/render.js'\nimport { addEscapeKey, removeEscapeKey } from '../../utils/private/escape-key.js'\nimport { addFocusout, removeFocusout } from '../../utils/private/focusout.js'\nimport { childHasFocus } from '../../utils/dom.js'\nimport { addClickOutside, removeClickOutside } from '../../utils/private/click-outside.js'\n\nimport {\n validatePosition, validateOffset, setPosition, parsePosition\n} from '../../utils/private/position-engine.js'\n\nexport default defineComponent({\n name: 'QMenu',\n\n inheritAttrs: false,\n\n props: {\n ...useAnchorProps,\n ...useModelToggleProps,\n ...useDarkProps,\n ...useTransitionProps,\n\n persistent: Boolean,\n autoClose: Boolean,\n separateClosePopup: Boolean,\n\n noRouteDismiss: Boolean,\n noRefocus: Boolean,\n noFocus: Boolean,\n\n fit: Boolean,\n cover: Boolean,\n\n square: Boolean,\n\n anchor: {\n type: String,\n validator: validatePosition\n },\n self: {\n type: String,\n validator: validatePosition\n },\n offset: {\n type: Array,\n validator: validateOffset\n },\n\n scrollTarget: {\n default: void 0\n },\n\n touchPosition: Boolean,\n\n maxHeight: {\n type: String,\n default: null\n },\n maxWidth: {\n type: String,\n default: null\n }\n },\n\n emits: [\n ...useModelToggleEmits,\n 'click', 'escape-key'\n ],\n\n setup (props, { slots, emit, attrs }) {\n let refocusTarget = null, absoluteOffset, unwatchPosition, avoidAutoClose\n\n const vm = getCurrentInstance()\n const { proxy } = vm\n const { $q } = proxy\n\n const innerRef = ref(null)\n const showing = ref(false)\n\n const hideOnRouteChange = computed(() =>\n props.persistent !== true\n && props.noRouteDismiss !== true\n )\n\n const isDark = useDark(props, $q)\n const { registerTick, removeTick, prepareTick } = useTick()\n const { registerTimeout, removeTimeout } = useTimeout()\n const { transition, transitionStyle } = useTransition(props, showing)\n const { localScrollTarget, changeScrollEvent, unconfigureScrollTarget } = useScrollTarget(props, configureScrollTarget)\n\n const { anchorEl, canShow } = useAnchor({ showing })\n\n const { hide } = useModelToggle({\n showing, canShow, handleShow, handleHide,\n hideOnRouteChange,\n processOnMount: true\n })\n\n const { showPortal, hidePortal, renderPortal } = usePortal(vm, innerRef, renderPortalContent)\n\n const clickOutsideProps = {\n anchorEl,\n innerRef,\n getEl: () => proxy.$el,\n onClickOutside (e) {\n if (props.persistent !== true && showing.value === true) {\n hide(e)\n\n if (\n // always prevent touch event\n e.type === 'touchstart'\n // prevent click if it's on a dialog backdrop\n || e.target.classList.contains('q-dialog__backdrop')\n ) {\n stopAndPrevent(e)\n }\n\n return true\n }\n }\n }\n\n const anchorOrigin = computed(() =>\n parsePosition(\n props.anchor || (\n props.cover === true ? 'center middle' : 'bottom start'\n ),\n $q.lang.rtl\n )\n )\n\n const selfOrigin = computed(() => (\n props.cover === true\n ? anchorOrigin.value\n : parsePosition(props.self || 'top start', $q.lang.rtl)\n ))\n\n const menuClass = computed(() =>\n (props.square === true ? ' q-menu--square' : '')\n + (isDark.value === true ? ' q-menu--dark q-dark' : '')\n )\n\n const onEvents = computed(() => (\n props.autoClose === true\n ? { onClick: onAutoClose }\n : {}\n ))\n\n const handlesFocus = computed(() =>\n showing.value === true && props.persistent !== true\n )\n\n watch(handlesFocus, val => {\n if (val === true) {\n addEscapeKey(onEscapeKey)\n addClickOutside(clickOutsideProps)\n }\n else {\n removeEscapeKey(onEscapeKey)\n removeClickOutside(clickOutsideProps)\n }\n })\n\n function focus () {\n let node = innerRef.value\n\n if (node && node.contains(document.activeElement) !== true) {\n node = node.querySelector('[autofocus], [data-autofocus]') || node\n node.focus()\n }\n }\n\n function handleShow (evt) {\n removeTick()\n removeTimeout()\n\n refocusTarget = props.noRefocus === false\n ? document.activeElement\n : null\n\n addFocusout(onFocusout)\n\n showPortal()\n configureScrollTarget()\n\n absoluteOffset = void 0\n\n if (evt !== void 0 && (props.touchPosition || props.contextMenu)) {\n const pos = position(evt)\n\n if (pos.left !== void 0) {\n const { top, left } = anchorEl.value.getBoundingClientRect()\n absoluteOffset = { left: pos.left - left, top: pos.top - top }\n }\n }\n\n if (unwatchPosition === void 0) {\n unwatchPosition = watch(\n () => $q.screen.width + '|' + $q.screen.height + '|' + props.self + '|' + props.anchor + '|' + $q.lang.rtl,\n updatePosition\n )\n }\n\n if (props.noFocus !== true) {\n document.activeElement.blur()\n }\n\n registerTick(() => {\n updatePosition()\n props.noFocus !== true && focus()\n })\n prepareTick()\n\n registerTimeout(() => {\n // required in order to avoid the \"double-tap needed\" issue\n if ($q.platform.is.ios === true) {\n // if auto-close, then this click should\n // not close the menu\n avoidAutoClose = props.autoClose\n innerRef.value.click()\n }\n\n updatePosition()\n emit('show', evt)\n }, props.transitionDuration)\n }\n\n function handleHide (evt) {\n removeTick()\n removeTimeout()\n\n anchorCleanup(true)\n\n if (\n refocusTarget !== null\n && (\n // menu was hidden from code or ESC plugin\n evt === void 0\n // menu was not closed from a mouse or touch clickOutside\n || evt.qClickOutside !== true\n )\n ) {\n refocusTarget.focus()\n }\n\n registerTimeout(() => {\n hidePortal()\n emit('hide', evt)\n }, props.transitionDuration)\n }\n\n function anchorCleanup (hiding) {\n absoluteOffset = void 0\n\n if (unwatchPosition !== void 0) {\n unwatchPosition()\n unwatchPosition = void 0\n }\n\n if (hiding === true || showing.value === true) {\n removeFocusout(onFocusout)\n unconfigureScrollTarget()\n removeClickOutside(clickOutsideProps)\n removeEscapeKey(onEscapeKey)\n }\n }\n\n function configureScrollTarget () {\n if (anchorEl.value !== null || props.scrollTarget !== void 0) {\n localScrollTarget.value = getScrollTarget(anchorEl.value, props.scrollTarget)\n changeScrollEvent(localScrollTarget.value, updatePosition)\n }\n }\n\n function onAutoClose (e) {\n // if auto-close, then the ios double-tap fix which\n // issues a click should not close the menu\n if (avoidAutoClose !== true) {\n closePortalMenus(proxy, e)\n emit('click', e)\n }\n else {\n avoidAutoClose = false\n }\n }\n\n function onFocusout (evt) {\n // the focus is not in a vue child component\n if (\n handlesFocus.value === true\n && childHasFocus(innerRef.value, evt.target) !== true\n ) {\n focus()\n }\n }\n\n function onEscapeKey (evt) {\n emit('escape-key')\n hide(evt)\n }\n\n function updatePosition () {\n const el = innerRef.value\n\n if (el === null || anchorEl.value === null) {\n return\n }\n\n setPosition({\n el,\n offset: props.offset,\n anchorEl: anchorEl.value,\n anchorOrigin: anchorOrigin.value,\n selfOrigin: selfOrigin.value,\n absoluteOffset,\n fit: props.fit,\n cover: props.cover,\n maxHeight: props.maxHeight,\n maxWidth: props.maxWidth\n })\n }\n\n function renderPortalContent () {\n return h(\n Transition,\n { name: transition.value, appear: true },\n () => (\n showing.value === true\n ? h('div', {\n ...attrs,\n ref: innerRef,\n tabindex: -1,\n class: [\n 'q-menu q-position-engine scroll' + menuClass.value,\n attrs.class\n ],\n style: [ attrs.style, transitionStyle.value ],\n ...onEvents.value\n }, hSlot(slots.default))\n : null\n )\n )\n }\n\n onBeforeUnmount(anchorCleanup)\n\n // expose public methods\n Object.assign(proxy, { focus, updatePosition })\n\n return renderPortal\n }\n})\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\nmodule.exports = collection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","import { h, ref, computed, watch, onBeforeMount, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'\n\nimport debounce from '../../utils/debounce.js'\nimport { noop } from '../../utils/event.js'\n\nconst aggBucketSize = 1000\n\nconst scrollToEdges = [\n 'start',\n 'center',\n 'end',\n 'start-force',\n 'center-force',\n 'end-force'\n]\n\nconst slice = Array.prototype.slice\n\nlet buggyRTL = void 0\n\n// mobile Chrome takes the crown for this\nif (!__QUASAR_SSR__) {\n const scroller = document.createElement('div')\n const spacer = document.createElement('div')\n\n scroller.setAttribute('dir', 'rtl')\n scroller.style.width = '1px'\n scroller.style.height = '1px'\n scroller.style.overflow = 'auto'\n\n spacer.style.width = '1000px'\n spacer.style.height = '1px'\n\n document.body.appendChild(scroller)\n scroller.appendChild(spacer)\n scroller.scrollLeft = -1000\n\n buggyRTL = scroller.scrollLeft >= 0\n\n scroller.remove()\n}\n\nlet id = 1\n\nconst setOverflowAnchor = __QUASAR_SSR__ || window.getComputedStyle(document.body).overflowAnchor === void 0\n ? noop\n : function (id, index) {\n const ssId = id + '_ss'\n\n let styleSheet = document.getElementById(ssId)\n\n if (styleSheet === null) {\n styleSheet = document.createElement('style')\n styleSheet.type = 'text/css'\n styleSheet.id = ssId\n document.head.appendChild(styleSheet)\n }\n\n if (styleSheet.qChildIndex !== index) {\n styleSheet.qChildIndex = index\n styleSheet.innerHTML = `#${ id } > *:nth-child(${ index }) { overflow-anchor: auto }`\n }\n }\n\nfunction sumFn (acc, h) {\n return acc + h\n}\n\nfunction getScrollDetails (\n parent,\n child,\n beforeRef,\n afterRef,\n horizontal,\n rtl,\n stickyStart,\n stickyEnd\n) {\n const\n parentCalc = parent === window ? document.scrollingElement || document.documentElement : parent,\n propElSize = horizontal === true ? 'offsetWidth' : 'offsetHeight',\n details = {\n scrollStart: 0,\n scrollViewSize: -stickyStart - stickyEnd,\n scrollMaxSize: 0,\n offsetStart: -stickyStart,\n offsetEnd: -stickyEnd\n }\n\n if (horizontal === true) {\n if (parent === window) {\n details.scrollStart = window.pageXOffset || window.scrollX || document.body.scrollLeft || 0\n details.scrollViewSize += window.innerWidth\n }\n else {\n details.scrollStart = parentCalc.scrollLeft\n details.scrollViewSize += parentCalc.clientWidth\n }\n details.scrollMaxSize = parentCalc.scrollWidth\n\n if (rtl === true) {\n details.scrollStart = (buggyRTL === true ? details.scrollMaxSize - details.scrollViewSize : 0) - details.scrollStart\n }\n }\n else {\n if (parent === window) {\n details.scrollStart = window.pageYOffset || window.scrollY || document.body.scrollTop || 0\n details.scrollViewSize += window.innerHeight\n }\n else {\n details.scrollStart = parentCalc.scrollTop\n details.scrollViewSize += parentCalc.clientHeight\n }\n details.scrollMaxSize = parentCalc.scrollHeight\n }\n\n if (beforeRef !== null) {\n for (let el = beforeRef.previousElementSibling; el !== null; el = el.previousElementSibling) {\n if (el.classList.contains('q-virtual-scroll--skip') === false) {\n details.offsetStart += el[ propElSize ]\n }\n }\n }\n\n if (afterRef !== null) {\n for (let el = afterRef.nextElementSibling; el !== null; el = el.nextElementSibling) {\n if (el.classList.contains('q-virtual-scroll--skip') === false) {\n details.offsetEnd += el[ propElSize ]\n }\n }\n }\n\n if (child !== parent) {\n const\n parentRect = parentCalc.getBoundingClientRect(),\n childRect = child.getBoundingClientRect()\n\n if (horizontal === true) {\n details.offsetStart += childRect.left - parentRect.left\n details.offsetEnd -= childRect.width\n }\n else {\n details.offsetStart += childRect.top - parentRect.top\n details.offsetEnd -= childRect.height\n }\n\n if (parent !== window) {\n details.offsetStart += details.scrollStart\n }\n details.offsetEnd += details.scrollMaxSize - details.offsetStart\n }\n\n return details\n}\n\nfunction setScroll (parent, scroll, horizontal, rtl) {\n if (parent === window) {\n if (horizontal === true) {\n if (rtl === true) {\n scroll = (buggyRTL === true ? document.body.scrollWidth - window.innerWidth : 0) - scroll\n }\n window.scrollTo(scroll, window.pageYOffset || window.scrollY || document.body.scrollTop || 0)\n }\n else {\n window.scrollTo(window.pageXOffset || window.scrollX || document.body.scrollLeft || 0, scroll)\n }\n }\n else if (horizontal === true) {\n if (rtl === true) {\n scroll = (buggyRTL === true ? parent.scrollWidth - parent.offsetWidth : 0) - scroll\n }\n parent.scrollLeft = scroll\n }\n else {\n parent.scrollTop = scroll\n }\n}\n\nfunction sumSize (sizeAgg, size, from, to) {\n if (from >= to) { return 0 }\n\n const\n lastTo = size.length,\n fromAgg = Math.floor(from / aggBucketSize),\n toAgg = Math.floor((to - 1) / aggBucketSize) + 1\n\n let total = sizeAgg.slice(fromAgg, toAgg).reduce(sumFn, 0)\n\n if (from % aggBucketSize !== 0) {\n total -= size.slice(fromAgg * aggBucketSize, from).reduce(sumFn, 0)\n }\n if (to % aggBucketSize !== 0 && to !== lastTo) {\n total -= size.slice(to, toAgg * aggBucketSize).reduce(sumFn, 0)\n }\n\n return total\n}\n\nconst commonVirtScrollProps = {\n virtualScrollSliceSize: {\n type: [ Number, String ],\n default: null\n },\n\n virtualScrollSliceRatioBefore: {\n type: [ Number, String ],\n default: 1\n },\n\n virtualScrollSliceRatioAfter: {\n type: [ Number, String ],\n default: 1\n },\n\n virtualScrollItemSize: {\n type: [ Number, String ],\n default: 24\n },\n\n virtualScrollStickySizeStart: {\n type: [ Number, String ],\n default: 0\n },\n\n virtualScrollStickySizeEnd: {\n type: [ Number, String ],\n default: 0\n },\n\n tableColspan: [ Number, String ]\n}\n\nexport const commonVirtPropsList = Object.keys(commonVirtScrollProps)\n\nexport const useVirtualScrollProps = {\n virtualScrollHorizontal: Boolean,\n onVirtualScroll: Function,\n ...commonVirtScrollProps\n}\n\nexport function useVirtualScroll ({\n virtualScrollLength, getVirtualScrollTarget, getVirtualScrollEl,\n virtualScrollItemSizeComputed // optional\n}) {\n const vm = getCurrentInstance()\n\n const { props, emit, proxy } = vm\n const { $q } = proxy\n\n let prevScrollStart, prevToIndex, localScrollViewSize, virtualScrollSizesAgg = [], virtualScrollSizes\n\n const vsId = 'qvs_' + id++\n\n const virtualScrollPaddingBefore = ref(0)\n const virtualScrollPaddingAfter = ref(0)\n const virtualScrollSliceSizeComputed = ref({})\n\n const beforeRef = ref(null)\n const afterRef = ref(null)\n const contentRef = ref(null)\n\n const virtualScrollSliceRange = ref({ from: 0, to: 0 })\n\n const colspanAttr = computed(() => (props.tableColspan !== void 0 ? props.tableColspan : 100))\n\n if (virtualScrollItemSizeComputed === void 0) {\n virtualScrollItemSizeComputed = computed(() => props.virtualScrollItemSize)\n }\n\n const needsReset = computed(() => virtualScrollItemSizeComputed.value + ';' + props.virtualScrollHorizontal)\n\n const needsSliceRecalc = computed(() =>\n needsReset.value + ';' + props.virtualScrollSliceRatioBefore + ';' + props.virtualScrollSliceRatioAfter\n )\n\n watch(needsSliceRecalc, () => { setVirtualScrollSize() })\n watch(needsReset, reset)\n\n function reset () {\n localResetVirtualScroll(prevToIndex, true)\n }\n\n function refresh (toIndex) {\n localResetVirtualScroll(toIndex === void 0 ? prevToIndex : toIndex)\n }\n\n function scrollTo (toIndex, edge) {\n const scrollEl = getVirtualScrollTarget()\n\n if (scrollEl === void 0 || scrollEl === null || scrollEl.nodeType === 8) {\n return\n }\n\n const scrollDetails = getScrollDetails(\n scrollEl,\n getVirtualScrollEl(),\n beforeRef.value,\n afterRef.value,\n props.virtualScrollHorizontal,\n $q.lang.rtl,\n props.virtualScrollStickySizeStart,\n props.virtualScrollStickySizeEnd\n )\n\n localScrollViewSize !== scrollDetails.scrollViewSize && setVirtualScrollSize(scrollDetails.scrollViewSize)\n\n setVirtualScrollSliceRange(\n scrollEl,\n scrollDetails,\n Math.min(virtualScrollLength.value - 1, Math.max(0, parseInt(toIndex, 10) || 0)),\n 0,\n scrollToEdges.indexOf(edge) > -1 ? edge : (prevToIndex > -1 && toIndex > prevToIndex ? 'end' : 'start')\n )\n }\n\n function localOnVirtualScrollEvt () {\n const scrollEl = getVirtualScrollTarget()\n\n if (scrollEl === void 0 || scrollEl === null || scrollEl.nodeType === 8) {\n return\n }\n\n const\n scrollDetails = getScrollDetails(\n scrollEl,\n getVirtualScrollEl(),\n beforeRef.value,\n afterRef.value,\n props.virtualScrollHorizontal,\n $q.lang.rtl,\n props.virtualScrollStickySizeStart,\n props.virtualScrollStickySizeEnd\n ),\n listLastIndex = virtualScrollLength.value - 1,\n listEndOffset = scrollDetails.scrollMaxSize - scrollDetails.offsetStart - scrollDetails.offsetEnd - virtualScrollPaddingAfter.value\n\n if (prevScrollStart === scrollDetails.scrollStart) {\n return\n }\n\n if (scrollDetails.scrollMaxSize <= 0) {\n setVirtualScrollSliceRange(scrollEl, scrollDetails, 0, 0)\n return\n }\n\n localScrollViewSize !== scrollDetails.scrollViewSize && setVirtualScrollSize(scrollDetails.scrollViewSize)\n\n updateVirtualScrollSizes(virtualScrollSliceRange.value.from)\n\n const scrollMaxStart = Math.floor(scrollDetails.scrollMaxSize\n - Math.max(scrollDetails.scrollViewSize, scrollDetails.offsetEnd)\n - Math.min(virtualScrollSizes[ listLastIndex ], scrollDetails.scrollViewSize / 2))\n\n if (scrollMaxStart > 0 && Math.ceil(scrollDetails.scrollStart) >= scrollMaxStart) {\n setVirtualScrollSliceRange(\n scrollEl,\n scrollDetails,\n listLastIndex,\n scrollDetails.scrollMaxSize - scrollDetails.offsetEnd - virtualScrollSizesAgg.reduce(sumFn, 0)\n )\n\n return\n }\n\n let\n toIndex = 0,\n listOffset = scrollDetails.scrollStart - scrollDetails.offsetStart,\n offset = listOffset\n\n if (listOffset <= listEndOffset && listOffset + scrollDetails.scrollViewSize >= virtualScrollPaddingBefore.value) {\n listOffset -= virtualScrollPaddingBefore.value\n toIndex = virtualScrollSliceRange.value.from\n offset = listOffset\n }\n else {\n for (let j = 0; listOffset >= virtualScrollSizesAgg[ j ] && toIndex < listLastIndex; j++) {\n listOffset -= virtualScrollSizesAgg[ j ]\n toIndex += aggBucketSize\n }\n }\n\n while (listOffset > 0 && toIndex < listLastIndex) {\n listOffset -= virtualScrollSizes[ toIndex ]\n if (listOffset > -scrollDetails.scrollViewSize) {\n toIndex++\n offset = listOffset\n }\n else {\n offset = virtualScrollSizes[ toIndex ] + listOffset\n }\n }\n\n setVirtualScrollSliceRange(\n scrollEl,\n scrollDetails,\n toIndex,\n offset\n )\n }\n\n function setVirtualScrollSliceRange (scrollEl, scrollDetails, toIndex, offset, align) {\n const alignForce = typeof align === 'string' && align.indexOf('-force') > -1\n const alignEnd = alignForce === true ? align.replace('-force', '') : align\n const alignRange = alignEnd !== void 0 ? alignEnd : 'start'\n\n let\n from = Math.max(0, toIndex - virtualScrollSliceSizeComputed.value[ alignRange ]),\n to = from + virtualScrollSliceSizeComputed.value.total\n\n if (to > virtualScrollLength.value) {\n to = virtualScrollLength.value\n from = Math.max(0, to - virtualScrollSliceSizeComputed.value.total)\n }\n\n prevScrollStart = scrollDetails.scrollStart\n\n const rangeChanged = from !== virtualScrollSliceRange.value.from || to !== virtualScrollSliceRange.value.to\n\n if (rangeChanged === false && alignEnd === void 0) {\n emitScroll(toIndex)\n return\n }\n\n const { activeElement } = document\n if (\n rangeChanged === true\n && contentRef.value !== null\n && contentRef.value !== activeElement\n && contentRef.value.contains(activeElement) === true\n ) {\n const onBlurFn = () => {\n contentRef.value.focus()\n }\n\n activeElement.addEventListener('blur', onBlurFn, true)\n\n requestAnimationFrame(() => {\n activeElement.removeEventListener('blur', onBlurFn, true)\n })\n }\n\n setOverflowAnchor(vsId, toIndex - from + 1)\n\n const sizeBefore = alignEnd !== void 0 ? virtualScrollSizes.slice(from, toIndex).reduce(sumFn, 0) : 0\n\n if (rangeChanged === true) {\n // vue key matching algorithm works only if\n // the array of VNodes changes on only one of the ends\n // so we first change one end and then the other\n\n const tempTo = to >= virtualScrollSliceRange.value.from && from <= virtualScrollSliceRange.value.to\n ? virtualScrollSliceRange.value.to\n : to\n\n virtualScrollSliceRange.value = { from, to: tempTo }\n virtualScrollPaddingBefore.value = sumSize(virtualScrollSizesAgg, virtualScrollSizes, 0, from)\n virtualScrollPaddingAfter.value = sumSize(virtualScrollSizesAgg, virtualScrollSizes, to, virtualScrollLength.value)\n\n requestAnimationFrame(() => {\n if (virtualScrollSliceRange.value.to !== to && prevScrollStart === scrollDetails.scrollStart) {\n virtualScrollSliceRange.value = { from: virtualScrollSliceRange.value.from, to }\n virtualScrollPaddingAfter.value = sumSize(virtualScrollSizesAgg, virtualScrollSizes, to, virtualScrollLength.value)\n }\n })\n }\n\n requestAnimationFrame(() => {\n // if the scroll was changed give up\n // (another call to setVirtualScrollSliceRange before animation frame)\n if (prevScrollStart !== scrollDetails.scrollStart) {\n return\n }\n\n if (rangeChanged === true) {\n updateVirtualScrollSizes(from)\n }\n\n const\n sizeAfter = virtualScrollSizes.slice(from, toIndex).reduce(sumFn, 0),\n posStart = sizeAfter + scrollDetails.offsetStart + virtualScrollPaddingBefore.value,\n posEnd = posStart + virtualScrollSizes[ toIndex ]\n\n let scrollPosition = posStart + offset\n\n if (alignEnd !== void 0) {\n const sizeDiff = sizeAfter - sizeBefore\n const scrollStart = scrollDetails.scrollStart + sizeDiff\n\n scrollPosition = alignForce !== true && scrollStart < posStart && posEnd < scrollStart + scrollDetails.scrollViewSize\n ? scrollStart\n : (\n alignEnd === 'end'\n ? posEnd - scrollDetails.scrollViewSize\n : posStart - (alignEnd === 'start' ? 0 : Math.round((scrollDetails.scrollViewSize - virtualScrollSizes[ toIndex ]) / 2))\n )\n }\n\n prevScrollStart = scrollPosition\n\n setScroll(\n scrollEl,\n scrollPosition,\n props.virtualScrollHorizontal,\n $q.lang.rtl\n )\n\n emitScroll(toIndex)\n })\n }\n\n function updateVirtualScrollSizes (from) {\n const contentEl = contentRef.value\n\n if (contentEl) {\n const\n children = slice.call(contentEl.children)\n .filter(el => el.classList.contains('q-virtual-scroll--skip') === false),\n childrenLength = children.length,\n sizeFn = props.virtualScrollHorizontal === true\n ? el => el.getBoundingClientRect().width\n : el => el.offsetHeight\n\n let\n index = from,\n size, diff\n\n for (let i = 0; i < childrenLength;) {\n size = sizeFn(children[ i ])\n i++\n\n while (i < childrenLength && children[ i ].classList.contains('q-virtual-scroll--with-prev') === true) {\n size += sizeFn(children[ i ])\n i++\n }\n\n diff = size - virtualScrollSizes[ index ]\n\n if (diff !== 0) {\n virtualScrollSizes[ index ] += diff\n virtualScrollSizesAgg[ Math.floor(index / aggBucketSize) ] += diff\n }\n\n index++\n }\n }\n }\n\n function localResetVirtualScroll (toIndex, fullReset) {\n const defaultSize = 1 * virtualScrollItemSizeComputed.value\n\n if (fullReset === true || Array.isArray(virtualScrollSizes) === false) {\n virtualScrollSizes = []\n }\n\n const oldVirtualScrollSizesLength = virtualScrollSizes.length\n\n virtualScrollSizes.length = virtualScrollLength.value\n\n for (let i = virtualScrollLength.value - 1; i >= oldVirtualScrollSizesLength; i--) {\n virtualScrollSizes[ i ] = defaultSize\n }\n\n const jMax = Math.floor((virtualScrollLength.value - 1) / aggBucketSize)\n virtualScrollSizesAgg = []\n for (let j = 0; j <= jMax; j++) {\n let size = 0\n const iMax = Math.min((j + 1) * aggBucketSize, virtualScrollLength.value)\n for (let i = j * aggBucketSize; i < iMax; i++) {\n size += virtualScrollSizes[ i ]\n }\n virtualScrollSizesAgg.push(size)\n }\n\n prevToIndex = -1\n prevScrollStart = void 0\n\n if (toIndex >= 0) {\n updateVirtualScrollSizes(virtualScrollSliceRange.value.from)\n nextTick(() => { scrollTo(toIndex) })\n }\n else {\n virtualScrollPaddingBefore.value = sumSize(virtualScrollSizesAgg, virtualScrollSizes, 0, virtualScrollSliceRange.value.from)\n virtualScrollPaddingAfter.value = sumSize(virtualScrollSizesAgg, virtualScrollSizes, virtualScrollSliceRange.value.to, virtualScrollLength.value)\n onVirtualScrollEvt()\n }\n }\n\n function setVirtualScrollSize (scrollViewSize) {\n if (scrollViewSize === void 0 && typeof window !== 'undefined') {\n const scrollEl = getVirtualScrollTarget()\n\n if (scrollEl !== void 0 && scrollEl !== null && scrollEl.nodeType !== 8) {\n scrollViewSize = getScrollDetails(\n scrollEl,\n getVirtualScrollEl(),\n beforeRef.value,\n afterRef.value,\n props.virtualScrollHorizontal,\n $q.lang.rtl,\n props.virtualScrollStickySizeStart,\n props.virtualScrollStickySizeEnd\n ).scrollViewSize\n }\n }\n\n localScrollViewSize = scrollViewSize\n\n const multiplier = 1 + props.virtualScrollSliceRatioBefore + props.virtualScrollSliceRatioAfter\n const view = scrollViewSize === void 0 || scrollViewSize <= 0\n ? 1\n : Math.ceil(scrollViewSize / virtualScrollItemSizeComputed.value)\n\n const baseSize = Math.max(\n 10,\n view,\n Math.ceil(props.virtualScrollSliceSize / multiplier)\n )\n\n virtualScrollSliceSizeComputed.value = {\n total: Math.ceil(baseSize * multiplier),\n start: Math.ceil(baseSize * props.virtualScrollSliceRatioBefore),\n center: Math.ceil(baseSize * (0.5 + props.virtualScrollSliceRatioBefore)),\n end: Math.ceil(baseSize * (1 + props.virtualScrollSliceRatioBefore)),\n view\n }\n }\n\n function padVirtualScroll (tag, content) {\n const paddingSize = props.virtualScrollHorizontal === true ? 'width' : 'height'\n const style = {\n [ '--q-virtual-scroll-item-' + paddingSize ]: virtualScrollItemSizeComputed.value + 'px'\n }\n\n return [\n tag === 'tbody'\n ? h(tag, {\n class: 'q-virtual-scroll__padding',\n key: 'before',\n ref: beforeRef\n }, [\n h('tr', [\n h('td', {\n style: { [ paddingSize ]: `${ virtualScrollPaddingBefore.value }px`, ...style },\n colspan: colspanAttr.value\n })\n ])\n ])\n : h(tag, {\n class: 'q-virtual-scroll__padding',\n key: 'before',\n ref: beforeRef,\n style: { [ paddingSize ]: `${ virtualScrollPaddingBefore.value }px`, ...style }\n }),\n\n h(tag, {\n class: 'q-virtual-scroll__content',\n key: 'content',\n ref: contentRef,\n id: vsId,\n tabindex: -1\n }, content.flat()),\n\n tag === 'tbody'\n ? h(tag, {\n class: 'q-virtual-scroll__padding',\n key: 'after',\n ref: afterRef\n }, [\n h('tr', [\n h('td', {\n style: { [ paddingSize ]: `${ virtualScrollPaddingAfter.value }px`, ...style },\n colspan: colspanAttr.value\n })\n ])\n ])\n : h(tag, {\n class: 'q-virtual-scroll__padding',\n key: 'after',\n ref: afterRef,\n style: { [ paddingSize ]: `${ virtualScrollPaddingAfter.value }px`, ...style }\n })\n ]\n }\n\n function emitScroll (index) {\n if (prevToIndex !== index) {\n props.onVirtualScroll !== void 0 && emit('virtual-scroll', {\n index,\n from: virtualScrollSliceRange.value.from,\n to: virtualScrollSliceRange.value.to - 1,\n direction: index < prevToIndex ? 'decrease' : 'increase',\n ref: proxy\n })\n\n prevToIndex = index\n }\n }\n\n setVirtualScrollSize()\n const onVirtualScrollEvt = debounce(localOnVirtualScrollEvt, $q.platform.is.ios === true ? 120 : 35)\n\n onBeforeMount(() => {\n setVirtualScrollSize()\n })\n\n setOverflowAnchor !== noop && onBeforeUnmount(() => {\n const styleSheet = document.getElementById(vsId + '_ss')\n styleSheet !== null && styleSheet.remove()\n })\n\n // expose public methods\n Object.assign(proxy, { scrollTo, reset, refresh })\n\n return {\n virtualScrollSliceRange,\n virtualScrollSliceSizeComputed,\n\n setVirtualScrollSize,\n onVirtualScrollEvt,\n localResetVirtualScroll,\n padVirtualScroll,\n\n scrollTo,\n reset,\n refresh\n }\n}\n","import { ValidationModel } from '@/validation';\r\nimport { useStore as useValidationStore } from '@/store/validation';\r\nimport { computed, ComputedRef, Ref } from 'vue';\r\nimport { IValidationStore } from '@/store/contracts/validation';\r\nimport { impl } from '@/utils/impl';\r\n\r\nexport function useFieldValidation (validationModel: ValidationModel, showErrors: Ref | ComputedRef): {\r\n validationStore: IValidationStore,\r\n fieldIsError: (fieldName: F) => boolean,\r\n fieldErrorMessage: (fieldName: F) => string\r\n} {\r\n const validationStore = useValidationStore();\r\n\r\n return {\r\n validationStore,\r\n\r\n fieldIsError: (field: F) => {\r\n return showErrors.value && validationStore.fieldIsError(validationModel.modelName, field);\r\n },\r\n\r\n fieldErrorMessage: (field: F) => {\r\n return validationStore.fieldErrorMessage(validationModel.modelName, field);\r\n }\r\n };\r\n}\r\n\r\nexport interface IFieldValidationRefs {\r\n fieldIsError: boolean,\r\n fieldErrorMessage: string\r\n}\r\n\r\nexport function useFieldsValidation (validationModel: ValidationModel, showErrors: Ref | ComputedRef, fields: F[]): {\r\n validationStore: IValidationStore,\r\n validationRefs: ComputedRef>\r\n} {\r\n const { validationStore, fieldIsError, fieldErrorMessage } = useFieldValidation(validationModel, showErrors);\r\n return {\r\n validationStore,\r\n validationRefs: computed(() => fields.reduce((acc, field) => {\r\n acc[field] = {\r\n fieldIsError: fieldIsError(field),\r\n fieldErrorMessage: fieldErrorMessage(field)\r\n };\r\n return acc;\r\n }, impl>({})))\r\n };\r\n}\r\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectDefinePropertyModule = require('../internals/object-define-property');\nvar regExpFlags = require('../internals/regexp-flags');\nvar UNSUPPORTED_Y = require('../internals/regexp-sticky-helpers').UNSUPPORTED_Y;\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\n// eslint-disable-next-line es/no-regexp-prototype-flags -- required for testing\nif (DESCRIPTORS && (/./g.flags != 'g' || UNSUPPORTED_Y)) {\n objectDefinePropertyModule.f(RegExp.prototype, 'flags', {\n configurable: true,\n get: regExpFlags\n });\n}\n","\r\n\r\n\r\n","\r\nimport { defineComponent } from 'vue';\r\n\r\nexport default defineComponent({\r\n props: {\r\n isRequestingUpdate: {\r\n required: true,\r\n type: Boolean\r\n },\r\n isUpdating: {\r\n required: true,\r\n type: Boolean\r\n }\r\n },\r\n setup (props, { emit }) {\r\n function emitStartUpdating () {\r\n emit('start-updating');\r\n }\r\n\r\n function emitStopUpdating () {\r\n emit('stop-updating');\r\n }\r\n\r\n function emitDoUpdate () {\r\n emit('do-update');\r\n }\r\n\r\n return {\r\n props,\r\n emitStartUpdating,\r\n emitStopUpdating,\r\n emitDoUpdate\r\n };\r\n }\r\n});\r\n","import { render } from \"./EditFieldActions.vue?vue&type=template&id=6e4c46c2\"\nimport script from \"./EditFieldActions.vue?vue&type=script&lang=ts\"\nexport * from \"./EditFieldActions.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QBtn});\n","import { computed, ComputedRef, ref, Ref } from 'vue';\r\n\r\nexport interface IInlineEditableComp {\r\n editText: Ref;\r\n compText: ComputedRef;\r\n isEditing: Ref;\r\n isRequestingUpdate: Ref;\r\n doUpdate: () => Promise;\r\n stopEditing: () => Promise;\r\n startEditing: () => Promise;\r\n}\r\n\r\nexport function useInlineEditable (\r\n baseValueGetter: () => string | null\r\n , reactiveValue: Ref | ComputedRef\r\n , inputEl?: Ref | ComputedRef\r\n , onDoUpdate?: (comp: Omit) => Promise\r\n , onStartEditing?: () => Promise\r\n , onStopEditing?: () => Promise): IInlineEditableComp {\r\n const isEditing = ref(false);\r\n const isRequestingUpdate = ref(false);\r\n const editText = ref(baseValueGetter());\r\n const compText = computed({\r\n get: () => isEditing.value ? editText.value : reactiveValue.value,\r\n set: (val) => { editText.value = val; }\r\n });\r\n\r\n const startEditing = async () => {\r\n isEditing.value = true;\r\n if (inputEl?.value) {\r\n inputEl.value.focus();\r\n inputEl.value.select();\r\n }\r\n if (onStartEditing) {\r\n await onStartEditing();\r\n }\r\n };\r\n\r\n const stopEditing = async () => {\r\n isEditing.value = false;\r\n isRequestingUpdate.value = false;\r\n editText.value = baseValueGetter();\r\n const selection = window.getSelection();\r\n if (selection) {\r\n selection.removeAllRanges();\r\n }\r\n if (onStopEditing) {\r\n await onStopEditing();\r\n }\r\n };\r\n\r\n const doUpdate = async () => {\r\n if (isEditing.value) {\r\n isRequestingUpdate.value = true;\r\n if (onDoUpdate) {\r\n await onDoUpdate({\r\n editText,\r\n compText,\r\n isEditing,\r\n isRequestingUpdate,\r\n stopEditing,\r\n startEditing\r\n });\r\n } else {\r\n await stopEditing();\r\n }\r\n isRequestingUpdate.value = false;\r\n }\r\n };\r\n\r\n return {\r\n editText,\r\n compText,\r\n isEditing,\r\n isRequestingUpdate,\r\n doUpdate,\r\n stopEditing,\r\n startEditing\r\n };\r\n}\r\n","import { defineComponent } from 'vue'\n\nimport useField, { useFieldState, useFieldProps, useFieldEmits } from '../../composables/private/use-field.js'\n\nexport default defineComponent({\n name: 'QField',\n\n inheritAttrs: false,\n\n props: useFieldProps,\n\n emits: useFieldEmits,\n\n setup () {\n return useField(useFieldState())\n }\n})\n","const\n hasMap = typeof Map === 'function',\n hasSet = typeof Set === 'function',\n hasArrayBuffer = typeof ArrayBuffer === 'function'\n\nexport function isDeepEqual (a, b) {\n if (a === b) {\n return true\n }\n\n if (a !== null && b !== null && typeof a === 'object' && typeof b === 'object') {\n if (a.constructor !== b.constructor) {\n return false\n }\n\n let length, i\n\n if (a.constructor === Array) {\n length = a.length\n\n if (length !== b.length) {\n return false\n }\n\n for (i = length; i-- !== 0;) {\n if (isDeepEqual(a[ i ], b[ i ]) !== true) {\n return false\n }\n }\n\n return true\n }\n\n if (hasMap === true && a.constructor === Map) {\n if (a.size !== b.size) {\n return false\n }\n\n i = a.entries().next()\n while (i.done !== true) {\n if (b.has(i.value[ 0 ]) !== true) {\n return false\n }\n i = i.next()\n }\n\n i = a.entries().next()\n while (i.done !== true) {\n if (isDeepEqual(i.value[ 1 ], b.get(i.value[ 0 ])) !== true) {\n return false\n }\n i = i.next()\n }\n\n return true\n }\n\n if (hasSet === true && a.constructor === Set) {\n if (a.size !== b.size) {\n return false\n }\n\n i = a.entries().next()\n while (i.done !== true) {\n if (b.has(i.value[ 0 ]) !== true) {\n return false\n }\n i = i.next()\n }\n\n return true\n }\n\n if (hasArrayBuffer === true && a.buffer != null && a.buffer.constructor === ArrayBuffer) {\n length = a.length\n\n if (length !== b.length) {\n return false\n }\n\n for (i = length; i-- !== 0;) {\n if (a[ i ] !== b[ i ]) {\n return false\n }\n }\n\n return true\n }\n\n if (a.constructor === RegExp) {\n return a.source === b.source && a.flags === b.flags\n }\n\n if (a.valueOf !== Object.prototype.valueOf) {\n return a.valueOf() === b.valueOf()\n }\n\n if (a.toString !== Object.prototype.toString) {\n return a.toString() === b.toString()\n }\n\n const keys = Object.keys(a)\n length = keys.length\n\n if (length !== Object.keys(b).length) {\n return false\n }\n\n for (i = length; i-- !== 0;) {\n const key = keys[ i ]\n if (isDeepEqual(a[ key ], b[ key ]) !== true) {\n return false\n }\n }\n\n return true\n }\n\n // true if both NaN, false otherwise\n return a !== a && b !== b // eslint-disable-line no-self-compare\n}\n\nexport function isPrintableChar (v) {\n return (v > 47 && v < 58) // number keys\n || v === 32 || v === 13 // spacebar & return key(s) (if you want to allow carriage returns)\n || (v > 64 && v < 91) // letter keys\n || (v > 95 && v < 112) // numpad keys\n || (v > 185 && v < 193) // ;=,-./` (in order)\n || (v > 218 && v < 223)\n}\n\nexport function isObject (v) {\n return Object(v) === v\n}\n\nexport function isDate (v) {\n return Object.prototype.toString.call(v) === '[object Date]'\n}\n\nexport function isRegexp (v) {\n return Object.prototype.toString.call(v) === '[object RegExp]'\n}\n\nexport function isNumber (v) {\n return typeof v === 'number' && isFinite(v)\n}\n\nexport function isString (v) {\n return typeof v === 'string'\n}\n","\r\n\r\n\r\n","\r\nimport { defineComponent } from 'vue';\r\n\r\nexport default defineComponent({});\r\n","import { render } from \"./AsyncContent.vue?vue&type=template&id=2ba0804d\"\nimport script from \"./AsyncContent.vue?vue&type=script&lang=ts\"\nexport * from \"./AsyncContent.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script\nimport QPageContainer from 'quasar/src/components/page/QPageContainer.js';\nimport QSpinner from 'quasar/src/components/spinner/QSpinner.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QPageContainer,QSpinner});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar arrayBufferModule = require('../internals/array-buffer');\nvar setSpecies = require('../internals/set-species');\n\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\n$({ global: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\n ArrayBuffer: ArrayBuffer\n});\n\nsetSpecies(ARRAY_BUFFER);\n","function fallback (text) {\n const area = document.createElement('textarea')\n area.value = text\n area.contentEditable = true\n area.style.position = 'fixed' // avoid scrolling to bottom\n\n document.body.appendChild(area)\n area.focus()\n area.select()\n\n const res = document.execCommand('copy')\n\n area.remove()\n return res\n}\n\nexport default function (text) {\n return navigator.clipboard !== void 0\n ? navigator.clipboard.writeText(text)\n : new Promise((resolve, reject) => {\n const res = fallback(text)\n if (res) {\n resolve(true)\n }\n else {\n reject(res)\n }\n })\n}\n","import Axios, { AxiosRequestConfig } from 'axios';\r\nimport { ApiResponse, ResponseStatus } from '@/store/utils/apiResponseHandling';\r\nexport async function sendRequest (\r\n url: string,\r\n method: 'get' | 'post' | 'delete',\r\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\n data?: any,\r\n requestModifier?: (config: AxiosRequestConfig) => Promise\r\n): Promise> {\r\n try {\r\n let config: AxiosRequestConfig;\r\n if (method === 'get') {\r\n config = {\r\n url,\r\n method,\r\n withCredentials: true,\r\n params: data\r\n };\r\n } else {\r\n config = {\r\n url,\r\n method,\r\n withCredentials: true,\r\n data\r\n };\r\n }\r\n if (requestModifier) {\r\n config = await requestModifier(config);\r\n }\r\n const result = await Axios.request(config);\r\n return [result.data, result];\r\n } catch (e) {\r\n if (e.response && e.response.status === 401) {\r\n return [ResponseStatus.NotAuthenticated, e.response];\r\n } else if (e.response && e.response.status === 404) {\r\n return [ResponseStatus.NotFound, e.response];\r\n }\r\n return [ResponseStatus.Error, e.response ?? null];\r\n }\r\n}\r\n","import { h, defineComponent, ref, computed, watch, onBeforeUpdate, onUpdated, onBeforeMount, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'\n\nimport QField from '../field/QField.js'\nimport QIcon from '../icon/QIcon.js'\nimport QChip from '../chip/QChip.js'\n\nimport QItem from '../item/QItem.js'\nimport QItemSection from '../item/QItemSection.js'\nimport QItemLabel from '../item/QItemLabel.js'\n\nimport QMenu from '../menu/QMenu.js'\nimport QDialog from '../dialog/QDialog.js'\n\nimport useField, { useFieldState, useFieldProps, useFieldEmits, fieldValueIsFilled } from '../../composables/private/use-field.js'\nimport { useVirtualScroll, useVirtualScrollProps } from '../virtual-scroll/use-virtual-scroll.js'\nimport { useFormProps, useFormInputNameAttr } from '../../composables/private/use-form.js'\nimport useKeyComposition from '../../composables/private/use-key-composition.js'\n\nimport { isDeepEqual } from '../../utils/private/is.js'\nimport { stop, prevent, stopAndPrevent } from '../../utils/event.js'\nimport { normalizeToInterval } from '../../utils/format.js'\nimport { shouldIgnoreKey, isKeyCode } from '../../utils/private/key-composition.js'\nimport { hMergeSlot } from '../../utils/private/render.js'\n\nconst validateNewValueMode = v => [ 'add', 'add-unique', 'toggle' ].includes(v)\nconst reEscapeList = '.*+?^${}()|[]\\\\'\nconst fieldPropsList = Object.keys(useFieldProps)\n\nexport default defineComponent({\n name: 'QSelect',\n\n inheritAttrs: false,\n\n props: {\n ...useVirtualScrollProps,\n ...useFormProps,\n ...useFieldProps,\n\n modelValue: {\n required: true\n },\n\n multiple: Boolean,\n\n displayValue: [ String, Number ],\n displayValueHtml: Boolean,\n dropdownIcon: String,\n\n options: {\n type: Array,\n default: () => []\n },\n\n optionValue: [ Function, String ],\n optionLabel: [ Function, String ],\n optionDisable: [ Function, String ],\n\n hideSelected: Boolean,\n hideDropdownIcon: Boolean,\n fillInput: Boolean,\n\n maxValues: [ Number, String ],\n\n optionsDense: Boolean,\n optionsDark: {\n type: Boolean,\n default: null\n },\n optionsSelectedClass: String,\n optionsHtml: Boolean,\n\n optionsCover: Boolean,\n\n menuShrink: Boolean,\n menuAnchor: String,\n menuSelf: String,\n menuOffset: Array,\n\n popupContentClass: String,\n popupContentStyle: [ String, Array, Object ],\n\n useInput: Boolean,\n useChips: Boolean,\n\n newValueMode: {\n type: String,\n validator: validateNewValueMode\n },\n\n mapOptions: Boolean,\n emitValue: Boolean,\n\n inputDebounce: {\n type: [ Number, String ],\n default: 500\n },\n\n inputClass: [ Array, String, Object ],\n inputStyle: [ Array, String, Object ],\n\n tabindex: {\n type: [ String, Number ],\n default: 0\n },\n\n autocomplete: String,\n\n transitionShow: String,\n transitionHide: String,\n transitionDuration: [ String, Number ],\n\n behavior: {\n type: String,\n validator: v => [ 'default', 'menu', 'dialog' ].includes(v),\n default: 'default'\n },\n\n virtualScrollItemSize: {\n type: [ Number, String ],\n default: void 0\n },\n\n onNewValue: Function,\n onFilter: Function\n },\n\n emits: [\n ...useFieldEmits,\n 'add', 'remove', 'input-value',\n 'keyup', 'keypress', 'keydown',\n 'filter-abort'\n ],\n\n setup (props, { slots, emit }) {\n const { proxy } = getCurrentInstance()\n const { $q } = proxy\n\n const menu = ref(false)\n const dialog = ref(false)\n const optionIndex = ref(-1)\n const inputValue = ref('')\n const dialogFieldFocused = ref(false)\n const innerLoadingIndicator = ref(false)\n\n let inputTimer, innerValueCache, optionScopeCache,\n hasDialog, userInputValue, filterId, defaultInputValue,\n transitionShowComputed, searchBuffer, searchBufferExp\n\n const inputRef = ref(null)\n const targetRef = ref(null)\n const menuRef = ref(null)\n const dialogRef = ref(null)\n const menuContentRef = ref(null)\n\n const nameProp = useFormInputNameAttr(props)\n\n const onComposition = useKeyComposition(onInput)\n\n const virtualScrollLength = computed(() => (\n Array.isArray(props.options)\n ? props.options.length\n : 0\n ))\n\n const virtualScrollItemSizeComputed = computed(() => (\n props.virtualScrollItemSize === void 0\n ? (props.dense === true ? 24 : 48)\n : props.virtualScrollItemSize\n ))\n\n const {\n virtualScrollSliceRange,\n virtualScrollSliceSizeComputed,\n localResetVirtualScroll,\n padVirtualScroll,\n onVirtualScrollEvt,\n scrollTo,\n setVirtualScrollSize\n } = useVirtualScroll({\n virtualScrollLength, getVirtualScrollTarget, getVirtualScrollEl,\n virtualScrollItemSizeComputed\n })\n\n const state = useFieldState()\n\n const innerValue = computed(() => {\n const\n mapNull = props.mapOptions === true && props.multiple !== true,\n val = props.modelValue !== void 0 && (props.modelValue !== null || mapNull === true)\n ? (props.multiple === true && Array.isArray(props.modelValue) ? props.modelValue : [ props.modelValue ])\n : []\n\n if (props.mapOptions === true && Array.isArray(props.options) === true) {\n const cache = props.mapOptions === true && innerValueCache !== void 0\n ? innerValueCache\n : []\n const values = val.map(v => getOption(v, cache))\n\n return props.modelValue === null && mapNull === true\n ? values.filter(v => v !== null)\n : values\n }\n\n return val\n })\n\n const innerFieldProps = computed(() => {\n const acc = {}\n fieldPropsList.forEach(key => props[ key ])\n return acc\n })\n\n const isOptionsDark = computed(() => (\n props.optionsDark === null\n ? state.isDark.value\n : props.optionsDark\n ))\n\n const hasValue = computed(() => fieldValueIsFilled(innerValue.value))\n\n const computedInputClass = computed(() => {\n let cls = 'q-field__input q-placeholder col'\n\n if (props.hideSelected === true || innerValue.value.length === 0) {\n return [ cls, props.inputClass ]\n }\n\n cls += ' q-field__input--padding'\n\n return props.inputClass === void 0\n ? cls\n : [ cls, props.inputClass ]\n })\n\n const menuContentClass = computed(() =>\n (props.virtualScrollHorizontal === true ? 'q-virtual-scroll--horizontal' : '')\n + (props.popupContentClass ? ' ' + props.popupContentClass : '')\n )\n\n const noOptions = computed(() => virtualScrollLength.value === 0)\n\n const selectedString = computed(() =>\n innerValue.value\n .map(opt => getOptionLabel.value(opt))\n .join(', ')\n )\n\n const needsHtmlFn = computed(() => (\n props.optionsHtml === true\n ? () => true\n : opt => opt !== void 0 && opt !== null && opt.html === true\n ))\n\n const valueAsHtml = computed(() => (\n props.displayValueHtml === true || (\n props.displayValue === void 0 && (\n props.optionsHtml === true\n || innerValue.value.some(needsHtmlFn.value)\n )\n )\n ))\n\n const tabindex = computed(() => (state.focused.value === true ? props.tabindex : -1))\n\n const selectedScope = computed(() => {\n return innerValue.value.map((opt, i) => ({\n index: i,\n opt,\n html: needsHtmlFn.value(opt),\n selected: true,\n removeAtIndex: removeAtIndexAndFocus,\n toggleOption,\n tabindex: tabindex.value\n }))\n })\n\n const optionScope = computed(() => {\n if (virtualScrollLength.value === 0) {\n return []\n }\n\n const { from, to } = virtualScrollSliceRange.value\n const { options, optionEls } = optionScopeCache\n\n return props.options.slice(from, to).map((opt, i) => {\n const disable = isOptionDisabled.value(opt) === true\n const index = from + i\n\n const itemProps = {\n clickable: true,\n active: false,\n activeClass: computedOptionsSelectedClass.value,\n manualFocus: true,\n focused: false,\n disable,\n tabindex: -1,\n dense: props.optionsDense,\n dark: isOptionsDark.value,\n onClick: () => { toggleOption(opt) }\n }\n\n if (disable !== true) {\n isOptionSelected(opt) === true && (itemProps.active = true)\n optionIndex.value === index && (itemProps.focused = true)\n\n if ($q.platform.is.desktop === true) {\n itemProps.onMousemove = () => { setOptionIndex(index) }\n }\n }\n\n const option = {\n index,\n opt,\n html: needsHtmlFn.value(opt),\n label: getOptionLabel.value(opt),\n selected: itemProps.active,\n focused: itemProps.focused,\n toggleOption,\n setOptionIndex,\n itemProps\n }\n\n const optionWithoutEvents = {\n ...option,\n itemProps: {\n ...itemProps,\n onClick: void 0,\n onMousemove: void 0\n }\n }\n\n if (options[ i ] === void 0 || isDeepEqual(optionWithoutEvents, options[ i ]) !== true) {\n options[ i ] = optionWithoutEvents\n optionEls[ i ] = void 0\n }\n\n return option\n })\n })\n\n const dropdownArrowIcon = computed(() => (\n props.dropdownIcon !== void 0\n ? props.dropdownIcon\n : $q.iconSet.arrow.dropdown\n ))\n\n const squaredMenu = computed(() =>\n props.optionsCover === false\n && props.outlined !== true\n && props.standout !== true\n && props.borderless !== true\n && props.rounded !== true\n )\n\n const computedOptionsSelectedClass = computed(() => (\n props.optionsSelectedClass !== void 0\n ? props.optionsSelectedClass\n : (props.color !== void 0 ? `text-${ props.color }` : '')\n ))\n\n // returns method to get value of an option;\n // takes into account 'option-value' prop\n const getOptionValue = computed(() => getPropValueFn(props.optionValue, 'value'))\n\n // returns method to get label of an option;\n // takes into account 'option-label' prop\n const getOptionLabel = computed(() => getPropValueFn(props.optionLabel, 'label'))\n\n // returns method to tell if an option is disabled;\n // takes into account 'option-disable' prop\n const isOptionDisabled = computed(() => getPropValueFn(props.optionDisable, 'disable'))\n\n const innerOptionsValue = computed(() => innerValue.value.map(opt => getOptionValue.value(opt)))\n\n const inputControlEvents = computed(() => {\n const evt = {\n onInput,\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n onChange: onComposition,\n onKeydown: onTargetKeydown,\n onKeyup: onTargetAutocomplete,\n onKeypress: onTargetKeypress,\n onFocus: selectInputText,\n onClick (e) { hasDialog === true && stop(e) }\n }\n\n evt.onCompositionstart = evt.onCompositionupdate = evt.onCompositionend = onComposition\n\n return evt\n })\n\n watch(innerValue, val => {\n innerValueCache = val\n\n if (\n props.useInput === true\n && props.fillInput === true\n && props.multiple !== true\n // Prevent re-entering in filter while filtering\n // Also prevent clearing inputValue while filtering\n && state.innerLoading.value !== true\n && ((dialog.value !== true && menu.value !== true) || hasValue.value !== true)\n ) {\n userInputValue !== true && resetInputValue()\n if (dialog.value === true || menu.value === true) {\n filter('')\n }\n }\n }, { immediate: true })\n\n watch(() => props.fillInput, resetInputValue)\n\n watch(menu, updateMenu)\n\n function getEmittingOptionValue (opt) {\n return props.emitValue === true\n ? getOptionValue.value(opt)\n : opt\n }\n\n function removeAtIndex (index) {\n if (index > -1 && index < innerValue.value.length) {\n if (props.multiple === true) {\n const model = props.modelValue.slice()\n emit('remove', { index, value: model.splice(index, 1)[ 0 ] })\n emit('update:modelValue', model)\n }\n else {\n emit('update:modelValue', null)\n }\n }\n }\n\n function removeAtIndexAndFocus (index) {\n removeAtIndex(index)\n state.focus()\n }\n\n function add (opt, unique) {\n const val = getEmittingOptionValue(opt)\n\n if (props.multiple !== true) {\n props.fillInput === true && updateInputValue(\n getOptionLabel.value(opt),\n true,\n true\n )\n\n emit('update:modelValue', val)\n return\n }\n\n if (innerValue.value.length === 0) {\n emit('add', { index: 0, value: val })\n emit('update:modelValue', props.multiple === true ? [ val ] : val)\n return\n }\n\n if (unique === true && isOptionSelected(opt) === true) {\n return\n }\n\n if (props.maxValues !== void 0 && props.modelValue.length >= props.maxValues) {\n return\n }\n\n const model = props.modelValue.slice()\n\n emit('add', { index: model.length, value: val })\n model.push(val)\n emit('update:modelValue', model)\n }\n\n function toggleOption (opt, keepOpen) {\n if (state.editable.value !== true || opt === void 0 || isOptionDisabled.value(opt) === true) {\n return\n }\n\n const optValue = getOptionValue.value(opt)\n\n if (props.multiple !== true) {\n if (keepOpen !== true) {\n updateInputValue(\n props.fillInput === true ? getOptionLabel.value(opt) : '',\n true,\n true\n )\n\n hidePopup()\n }\n\n targetRef.value !== null && targetRef.value.focus()\n\n if (isDeepEqual(getOptionValue.value(innerValue.value[ 0 ]), optValue) !== true) {\n emit('update:modelValue', props.emitValue === true ? optValue : opt)\n }\n return\n }\n\n (hasDialog !== true || dialogFieldFocused.value === true) && state.focus()\n\n selectInputText()\n\n if (innerValue.value.length === 0) {\n const val = props.emitValue === true ? optValue : opt\n emit('add', { index: 0, value: val })\n emit('update:modelValue', props.multiple === true ? [ val ] : val)\n return\n }\n\n const\n model = props.modelValue.slice(),\n index = innerOptionsValue.value.findIndex(v => isDeepEqual(v, optValue))\n\n if (index > -1) {\n emit('remove', { index, value: model.splice(index, 1)[ 0 ] })\n }\n else {\n if (props.maxValues !== void 0 && model.length >= props.maxValues) {\n return\n }\n\n const val = props.emitValue === true ? optValue : opt\n\n emit('add', { index: model.length, value: val })\n model.push(val)\n }\n\n emit('update:modelValue', model)\n }\n\n function setOptionIndex (index) {\n if ($q.platform.is.desktop !== true) { return }\n\n const val = index > -1 && index < virtualScrollLength.value\n ? index\n : -1\n\n if (optionIndex.value !== val) {\n optionIndex.value = val\n }\n }\n\n function moveOptionSelection (offset = 1, skipInputValue) {\n if (menu.value === true) {\n let index = optionIndex.value\n do {\n index = normalizeToInterval(\n index + offset,\n -1,\n virtualScrollLength.value - 1\n )\n }\n while (index !== -1 && index !== optionIndex.value && isOptionDisabled.value(props.options[ index ]) === true)\n\n if (optionIndex.value !== index) {\n setOptionIndex(index)\n scrollTo(index)\n\n if (skipInputValue !== true && props.useInput === true && props.fillInput === true) {\n setInputValue(index >= 0\n ? getOptionLabel.value(props.options[ index ])\n : defaultInputValue\n )\n }\n }\n }\n }\n\n function getOption (value, valueCache) {\n const fn = opt => isDeepEqual(getOptionValue.value(opt), value)\n return props.options.find(fn) || valueCache.find(fn) || value\n }\n\n function getPropValueFn (propValue, defaultVal) {\n const val = propValue !== void 0\n ? propValue\n : defaultVal\n\n return typeof val === 'function'\n ? val\n : opt => (Object(opt) === opt && val in opt ? opt[ val ] : opt)\n }\n\n function isOptionSelected (opt) {\n const val = getOptionValue.value(opt)\n return innerOptionsValue.value.find(v => isDeepEqual(v, val)) !== void 0\n }\n\n function selectInputText () {\n if (props.useInput === true && targetRef.value !== null) {\n targetRef.value.select()\n }\n }\n\n function onTargetKeyup (e) {\n // if ESC and we have an opened menu\n // then stop propagation (might be caught by a QDialog\n // and so it will also close the QDialog, which is wrong)\n if (isKeyCode(e, 27) === true && menu.value === true) {\n stop(e)\n // on ESC we need to close the dialog also\n hidePopup()\n resetInputValue()\n }\n\n emit('keyup', e)\n }\n\n function onTargetAutocomplete (e) {\n const { value } = e.target\n\n if (e.keyCode !== void 0) {\n onTargetKeyup(e)\n return\n }\n\n e.target.value = ''\n clearTimeout(inputTimer)\n resetInputValue()\n\n if (typeof value === 'string' && value.length > 0) {\n const needle = value.toLocaleLowerCase()\n\n let fn = opt => getOptionValue.value(opt).toLocaleLowerCase() === needle\n let option = props.options.find(fn)\n\n if (option !== void 0) {\n if (innerValue.value.indexOf(option) === -1) {\n toggleOption(option)\n }\n else {\n hidePopup()\n }\n }\n else {\n fn = opt => getOptionLabel.value(opt).toLocaleLowerCase() === needle\n option = props.options.find(fn)\n\n if (option !== void 0) {\n if (innerValue.value.indexOf(option) === -1) {\n toggleOption(option)\n }\n else {\n hidePopup()\n }\n }\n else {\n filter(value, true)\n }\n }\n }\n else {\n state.clearValue(e)\n }\n }\n\n function onTargetKeypress (e) {\n emit('keypress', e)\n }\n\n function onTargetKeydown (e) {\n emit('keydown', e)\n\n if (shouldIgnoreKey(e) === true) {\n return\n }\n\n const newValueModeValid = inputValue.value.length > 0\n && (props.newValueMode !== void 0 || props.onNewValue !== void 0)\n\n const tabShouldSelect = e.shiftKey !== true\n && props.multiple !== true\n && (optionIndex.value > -1 || newValueModeValid === true)\n\n // escape\n if (e.keyCode === 27) {\n prevent(e) // prevent clearing the inputValue\n return\n }\n\n // tab\n if (e.keyCode === 9 && tabShouldSelect === false) {\n closeMenu()\n return\n }\n\n if (e.target === void 0 || e.target.id !== state.targetUid.value) { return }\n\n // down\n if (\n e.keyCode === 40\n && state.innerLoading.value !== true\n && menu.value === false\n ) {\n stopAndPrevent(e)\n showPopup()\n return\n }\n\n // backspace\n if (\n e.keyCode === 8\n && props.hideSelected !== true\n && inputValue.value.length === 0\n ) {\n if (props.multiple === true && Array.isArray(props.modelValue) === true) {\n removeAtIndex(props.modelValue.length - 1)\n }\n else if (props.multiple !== true && props.modelValue !== null) {\n emit('update:modelValue', null)\n }\n return\n }\n\n // home, end - 36, 35\n if (\n (e.keyCode === 35 || e.keyCode === 36)\n && (typeof inputValue.value !== 'string' || inputValue.value.length === 0)\n ) {\n stopAndPrevent(e)\n optionIndex.value = -1\n moveOptionSelection(e.keyCode === 36 ? 1 : -1, props.multiple)\n }\n\n // pg up, pg down - 33, 34\n if (\n (e.keyCode === 33 || e.keyCode === 34)\n && virtualScrollSliceSizeComputed.value !== void 0\n ) {\n stopAndPrevent(e)\n optionIndex.value = Math.max(\n -1,\n Math.min(\n virtualScrollLength.value,\n optionIndex.value + (e.keyCode === 33 ? -1 : 1) * virtualScrollSliceSizeComputed.value.view\n )\n )\n moveOptionSelection(e.keyCode === 33 ? 1 : -1, props.multiple)\n }\n\n // up, down\n if (e.keyCode === 38 || e.keyCode === 40) {\n stopAndPrevent(e)\n moveOptionSelection(e.keyCode === 38 ? -1 : 1, props.multiple)\n }\n\n const optionsLength = virtualScrollLength.value\n\n // clear search buffer if expired\n if (searchBuffer === void 0 || searchBufferExp < Date.now()) {\n searchBuffer = ''\n }\n\n // keyboard search when not having use-input\n if (\n optionsLength > 0\n && props.useInput !== true\n && e.key !== void 0\n && e.key.length === 1 // printable char\n && e.altKey === e.ctrlKey // not kbd shortcut\n && (e.keyCode !== 32 || searchBuffer.length > 0) // space in middle of search\n ) {\n menu.value !== true && showPopup(e)\n\n const\n char = e.key.toLocaleLowerCase(),\n keyRepeat = searchBuffer.length === 1 && searchBuffer[ 0 ] === char\n\n searchBufferExp = Date.now() + 1500\n if (keyRepeat === false) {\n stopAndPrevent(e)\n searchBuffer += char\n }\n\n const searchRe = new RegExp('^' + searchBuffer.split('').map(l => (reEscapeList.indexOf(l) > -1 ? '\\\\' + l : l)).join('.*'), 'i')\n\n let index = optionIndex.value\n\n if (keyRepeat === true || index < 0 || searchRe.test(getOptionLabel.value(props.options[ index ])) !== true) {\n do {\n index = normalizeToInterval(index + 1, -1, optionsLength - 1)\n }\n while (index !== optionIndex.value && (\n isOptionDisabled.value(props.options[ index ]) === true\n || searchRe.test(getOptionLabel.value(props.options[ index ])) !== true\n ))\n }\n\n if (optionIndex.value !== index) {\n nextTick(() => {\n setOptionIndex(index)\n scrollTo(index)\n\n if (index >= 0 && props.useInput === true && props.fillInput === true) {\n setInputValue(getOptionLabel.value(props.options[ index ]))\n }\n })\n }\n\n return\n }\n\n // enter, space (when not using use-input and not in search), or tab (when not using multiple and option selected)\n // same target is checked above\n if (\n e.keyCode !== 13\n && (e.keyCode !== 32 || props.useInput === true || searchBuffer !== '')\n && (e.keyCode !== 9 || tabShouldSelect === false)\n ) { return }\n\n e.keyCode !== 9 && stopAndPrevent(e)\n\n if (optionIndex.value > -1 && optionIndex.value < optionsLength) {\n toggleOption(props.options[ optionIndex.value ])\n return\n }\n\n if (newValueModeValid === true) {\n const done = (val, mode) => {\n if (mode) {\n if (validateNewValueMode(mode) !== true) {\n return\n }\n }\n else {\n mode = props.newValueMode\n }\n\n if (val === void 0 || val === null) {\n return\n }\n\n updateInputValue('', props.multiple !== true, true)\n\n const fn = mode === 'toggle' ? toggleOption : add\n fn(val, mode === 'add-unique')\n\n if (props.multiple !== true) {\n targetRef.value !== null && targetRef.value.focus()\n hidePopup()\n }\n }\n\n if (props.onNewValue !== void 0) {\n emit('new-value', inputValue.value, done)\n }\n else {\n done(inputValue.value)\n }\n\n if (props.multiple !== true) {\n return\n }\n }\n\n if (menu.value === true) {\n closeMenu()\n }\n else if (state.innerLoading.value !== true) {\n showPopup()\n }\n }\n\n function getVirtualScrollEl () {\n return hasDialog === true\n ? menuContentRef.value\n : (\n menuRef.value !== null && menuRef.value.__qPortalInnerRef.value !== null\n ? menuRef.value.__qPortalInnerRef.value\n : void 0\n )\n }\n\n function getVirtualScrollTarget () {\n return getVirtualScrollEl()\n }\n\n function getSelection () {\n if (props.hideSelected === true) {\n return []\n }\n\n if (slots[ 'selected-item' ] !== void 0) {\n return selectedScope.value.map(scope => slots[ 'selected-item' ](scope)).slice()\n }\n\n if (slots.selected !== void 0) {\n return slots.selected().slice()\n }\n\n if (props.useChips === true) {\n return selectedScope.value.map((scope, i) => h(QChip, {\n key: 'option-' + i,\n removable: state.editable.value === true && isOptionDisabled.value(scope.opt) !== true,\n dense: true,\n textColor: props.color,\n tabindex: tabindex.value,\n onRemove () { scope.removeAtIndex(i) }\n }, () => h('span', {\n class: 'ellipsis',\n [ scope.html === true ? 'innerHTML' : 'textContent' ]: getOptionLabel.value(scope.opt)\n })))\n }\n\n return [\n h('span', {\n [ valueAsHtml.value === true ? 'innerHTML' : 'textContent' ]: props.displayValue !== void 0\n ? props.displayValue\n : selectedString.value\n })\n ]\n }\n\n function getAllOptions () {\n if (\n slots.option !== void 0\n && optionScopeCache.optionSlot !== slots.option\n ) {\n optionScopeCache.optionSlot = slots.option\n optionScopeCache.optionEls = []\n }\n\n const fn = slots.option !== void 0\n ? slots.option\n : scope => {\n return h(QItem, {\n key: scope.index,\n ...scope.itemProps\n }, () => {\n return h(\n QItemSection,\n () => h(\n QItemLabel,\n () => h('span', {\n [ scope.html === true ? 'innerHTML' : 'textContent' ]: scope.label\n })\n )\n )\n })\n }\n\n const { optionEls } = optionScopeCache\n\n let options = padVirtualScroll('div', optionScope.value.map((scope, i) => {\n if (optionEls[ i ] === void 0) {\n optionEls[ i ] = fn(scope)\n }\n\n return optionEls[ i ]\n }))\n\n if (slots[ 'before-options' ] !== void 0) {\n options = slots[ 'before-options' ]().concat(options)\n }\n\n return hMergeSlot(slots[ 'after-options' ], options)\n }\n\n function getInput (fromDialog, isTarget) {\n const data = {\n ref: isTarget === true ? targetRef : void 0,\n key: 'i_t',\n class: computedInputClass.value,\n style: props.inputStyle,\n value: inputValue.value !== void 0 ? inputValue.value : '',\n // required for Android in order to show ENTER key when in form\n type: 'search',\n ...state.splitAttrs.attributes.value,\n id: state.targetUid.value,\n maxlength: props.maxlength,\n tabindex: props.tabindex,\n autocomplete: props.autocomplete,\n 'data-autofocus': (fromDialog !== true && props.autofocus === true) || void 0,\n disabled: props.disable === true,\n readonly: props.readonly === true,\n ...inputControlEvents.value\n }\n\n if (fromDialog !== true && hasDialog === true) {\n if (Array.isArray(data.class) === true) {\n data.class[ 0 ] += ' no-pointer-events'\n }\n else {\n data.class += ' no-pointer-events'\n }\n }\n\n return h('input', data)\n }\n\n function onInput (e) {\n clearTimeout(inputTimer)\n\n if (e && e.target && e.target.composing === true) {\n return\n }\n\n setInputValue(e.target.value || '')\n // mark it here as user input so that if updateInputValue is called\n // before filter is called the indicator is reset\n userInputValue = true\n defaultInputValue = inputValue.value\n\n if (\n state.focused.value !== true\n && (hasDialog !== true || dialogFieldFocused.value === true)\n ) {\n state.focus()\n }\n\n if (props.onFilter !== void 0) {\n inputTimer = setTimeout(() => {\n filter(inputValue.value)\n }, props.inputDebounce)\n }\n }\n\n function setInputValue (val) {\n if (inputValue.value !== val) {\n inputValue.value = val\n emit('input-value', val)\n }\n }\n\n function updateInputValue (val, noFiltering, internal) {\n userInputValue = internal !== true\n\n if (props.useInput === true) {\n setInputValue(val)\n\n if (noFiltering === true || internal !== true) {\n defaultInputValue = val\n }\n\n noFiltering !== true && filter(val)\n }\n }\n\n function filter (val, keepClosed) {\n if (props.onFilter === void 0 || (keepClosed !== true && state.focused.value !== true)) {\n return\n }\n\n if (state.innerLoading.value === true) {\n emit('filter-abort')\n }\n else {\n state.innerLoading.value = true\n innerLoadingIndicator.value = true\n }\n\n if (\n val !== ''\n && props.multiple !== true\n && innerValue.value.length > 0\n && userInputValue !== true\n && val === getOptionLabel.value(innerValue.value[ 0 ])\n ) {\n val = ''\n }\n\n const localFilterId = setTimeout(() => {\n menu.value === true && (menu.value = false)\n }, 10)\n\n clearTimeout(filterId)\n filterId = localFilterId\n\n emit(\n 'filter',\n val,\n (fn, afterFn) => {\n if ((keepClosed === true || state.focused.value === true) && filterId === localFilterId) {\n clearTimeout(filterId)\n\n typeof fn === 'function' && fn()\n\n // hide indicator to allow arrow to animate\n innerLoadingIndicator.value = false\n\n nextTick(() => {\n state.innerLoading.value = false\n\n if (state.editable.value === true) {\n if (keepClosed === true) {\n menu.value === true && hidePopup()\n }\n else if (menu.value === true) {\n updateMenu(true)\n }\n else {\n menu.value = true\n }\n }\n\n typeof afterFn === 'function' && nextTick(() => { afterFn(proxy) })\n })\n }\n },\n () => {\n if (state.focused.value === true && filterId === localFilterId) {\n clearTimeout(filterId)\n state.innerLoading.value = false\n innerLoadingIndicator.value = false\n }\n menu.value === true && (menu.value = false)\n }\n )\n }\n\n function getMenu () {\n const child = noOptions.value === true\n ? (\n slots[ 'no-option' ] !== void 0\n ? () => slots[ 'no-option' ]({ inputValue: inputValue.value })\n : void 0\n )\n : getAllOptions\n\n return h(QMenu, {\n ref: menuRef,\n class: menuContentClass.value,\n style: props.popupContentStyle,\n modelValue: menu.value,\n fit: props.menuShrink !== true,\n cover: props.optionsCover === true && noOptions.value !== true && props.useInput !== true,\n anchor: props.menuAnchor,\n self: props.menuSelf,\n offset: props.menuOffset,\n dark: isOptionsDark.value,\n noParentEvent: true,\n noRefocus: true,\n noFocus: true,\n square: squaredMenu.value,\n transitionShow: props.transitionShow,\n transitionHide: props.transitionHide,\n transitionDuration: props.transitionDuration,\n separateClosePopup: true,\n onScrollPassive: onVirtualScrollEvt,\n onBeforeShow: onControlPopupShow,\n onBeforeHide: onMenuBeforeHide,\n onShow: onMenuShow\n }, child)\n }\n\n function onMenuBeforeHide (e) {\n onControlPopupHide(e)\n closeMenu()\n }\n\n function onMenuShow () {\n setVirtualScrollSize()\n }\n\n function onDialogFieldFocus (e) {\n stop(e)\n targetRef.value !== null && targetRef.value.focus()\n dialogFieldFocused.value = true\n window.scrollTo(window.pageXOffset || window.scrollX || document.body.scrollLeft || 0, 0)\n }\n\n function onDialogFieldBlur (e) {\n stop(e)\n nextTick(() => {\n dialogFieldFocused.value = false\n })\n }\n\n function getDialog () {\n const content = [\n h(QField, {\n class: `col-auto ${ state.fieldClass }`,\n ...innerFieldProps.value,\n for: state.targetUid.value,\n dark: isOptionsDark.value,\n square: true,\n loading: innerLoadingIndicator.value,\n itemAligned: false,\n filled: true,\n stackLabel: inputValue.value.length > 0,\n ...state.splitAttrs.listeners.value,\n onFocus: onDialogFieldFocus,\n onBlur: onDialogFieldBlur\n }, {\n ...slots,\n rawControl: () => state.getControl(true),\n before: void 0,\n after: void 0\n })\n ]\n\n menu.value === true && content.push(\n h('div', {\n ref: menuContentRef,\n class: menuContentClass.value + ' scroll',\n style: props.popupContentStyle,\n onClick: prevent,\n onScrollPassive: onVirtualScrollEvt\n }, (\n noOptions.value === true\n ? (\n slots[ 'no-option' ] !== void 0\n ? slots[ 'no-option' ]({ inputValue: inputValue.value })\n : null\n )\n : getAllOptions()\n ))\n )\n\n return h(QDialog, {\n ref: dialogRef,\n modelValue: dialog.value,\n position: props.useInput === true ? 'top' : void 0,\n transitionShow: transitionShowComputed,\n transitionHide: props.transitionHide,\n transitionDuration: props.transitionDuration,\n onBeforeShow: onControlPopupShow,\n onBeforeHide: onDialogBeforeHide,\n onHide: onDialogHide,\n onShow: onDialogShow\n }, () => h('div', {\n class: 'q-select__dialog'\n + (isOptionsDark.value === true ? ' q-select__dialog--dark q-dark' : '')\n + (dialogFieldFocused.value === true ? ' q-select__dialog--focused' : '')\n }, content))\n }\n\n function onDialogBeforeHide (e) {\n onControlPopupHide(e)\n\n if (dialogRef.value !== null) {\n dialogRef.value.__updateRefocusTarget(\n state.rootRef.value.querySelector('.q-field__native > [tabindex]:last-child')\n )\n }\n\n state.focused.value = false\n }\n\n function onDialogHide (e) {\n hidePopup()\n state.focused.value === false && emit('blur', e)\n resetInputValue()\n }\n\n function onDialogShow () {\n const el = document.activeElement\n if (\n (el === null || el.id !== state.targetUid.value)\n && targetRef.value !== null\n && targetRef.value !== el\n ) {\n targetRef.value.focus()\n }\n\n setVirtualScrollSize()\n }\n\n function closeMenu () {\n if (optionScopeCache !== void 0) {\n optionScopeCache.optionEls = []\n }\n\n if (dialog.value === true) {\n return\n }\n\n optionIndex.value = -1\n\n if (menu.value === true) {\n menu.value = false\n }\n\n if (state.focused.value === false) {\n clearTimeout(filterId)\n filterId = void 0\n\n if (state.innerLoading.value === true) {\n emit('filter-abort')\n state.innerLoading.value = false\n innerLoadingIndicator.value = false\n }\n }\n }\n\n function showPopup (e) {\n if (state.editable.value !== true) {\n return\n }\n\n if (hasDialog === true) {\n state.onControlFocusin(e)\n dialog.value = true\n nextTick(() => {\n state.focus()\n })\n }\n else {\n state.focus()\n }\n\n if (props.onFilter !== void 0) {\n filter(inputValue.value)\n }\n else if (noOptions.value !== true || slots[ 'no-option' ] !== void 0) {\n menu.value = true\n }\n }\n\n function hidePopup () {\n dialog.value = false\n closeMenu()\n }\n\n function resetInputValue () {\n props.useInput === true && updateInputValue(\n props.multiple !== true && props.fillInput === true && innerValue.value.length > 0\n ? getOptionLabel.value(innerValue.value[ 0 ]) || ''\n : '',\n true,\n true\n )\n }\n\n function updateMenu (show) {\n let optionIndex = -1\n\n if (show === true) {\n if (innerValue.value.length > 0) {\n const val = getOptionValue.value(innerValue.value[ 0 ])\n optionIndex = props.options.findIndex(v => isDeepEqual(getOptionValue.value(v), val))\n }\n\n localResetVirtualScroll(optionIndex)\n }\n\n setOptionIndex(optionIndex)\n }\n\n function updateMenuPosition () {\n if (dialog.value === false && menuRef.value !== null) {\n menuRef.value.updatePosition()\n }\n }\n\n function onControlPopupShow (e) {\n e !== void 0 && stop(e)\n emit('popup-show', e)\n state.hasPopupOpen.value = true\n state.onControlFocusin(e)\n }\n\n function onControlPopupHide (e) {\n e !== void 0 && stop(e)\n emit('popup-hide', e)\n state.hasPopupOpen.value = false\n state.onControlFocusout(e)\n }\n\n function updatePreState () {\n hasDialog = $q.platform.is.mobile !== true && props.behavior !== 'dialog'\n ? false\n : props.behavior !== 'menu' && (\n props.useInput === true\n ? slots[ 'no-option' ] !== void 0 || props.onFilter !== void 0 || noOptions.value === false\n : true\n )\n\n transitionShowComputed = $q.platform.is.ios === true && hasDialog === true && props.useInput === true\n ? 'fade'\n : props.transitionShow\n }\n\n onBeforeUpdate(updatePreState)\n onUpdated(updateMenuPosition)\n\n updatePreState()\n\n onBeforeMount(() => {\n optionScopeCache = {\n optionSlot: slots.option,\n options: [],\n optionEls: []\n }\n })\n\n onBeforeUnmount(() => {\n optionScopeCache = void 0\n clearTimeout(inputTimer)\n })\n\n // expose public methods\n Object.assign(proxy, {\n showPopup, hidePopup,\n removeAtIndex, add, toggleOption,\n setOptionIndex, moveOptionSelection,\n filter, updateMenuPosition, updateInputValue,\n isOptionSelected,\n getEmittingOptionValue,\n isOptionDisabled: () => isOptionDisabled.value.apply(null, arguments),\n getOptionValue: () => getOptionValue.value.apply(null, arguments),\n getOptionLabel: () => getOptionLabel.value.apply(null, arguments)\n })\n\n Object.assign(state, {\n innerValue,\n\n fieldClass: computed(() =>\n `q-select q-field--auto-height q-select--with${ props.useInput !== true ? 'out' : '' }-input`\n + ` q-select--with${ props.useChips !== true ? 'out' : '' }-chips`\n + ` q-select--${ props.multiple === true ? 'multiple' : 'single' }`\n ),\n\n inputRef,\n targetRef,\n hasValue,\n showPopup,\n\n floatingLabel: computed(() =>\n (props.hideSelected === true\n ? inputValue.value.length > 0\n : hasValue.value === true\n )\n || fieldValueIsFilled(props.displayValue)\n ),\n\n getControlChild: () => {\n if (\n state.editable.value !== false && (\n dialog.value === true // dialog always has menu displayed, so need to render it\n || noOptions.value !== true\n || slots[ 'no-option' ] !== void 0\n )\n ) {\n return hasDialog === true ? getDialog() : getMenu()\n }\n },\n\n controlEvents: {\n onFocusin (e) { state.onControlFocusin(e) },\n onFocusout (e) {\n state.onControlFocusout(e, () => {\n resetInputValue()\n closeMenu()\n })\n },\n onClick (e) {\n if (hasDialog !== true) {\n // label from QField will propagate click on the input (except IE)\n prevent(e)\n\n if (menu.value === true) {\n closeMenu()\n targetRef.value !== null && targetRef.value.focus()\n return\n }\n }\n\n showPopup(e)\n }\n },\n\n getControl: fromDialog => {\n const child = getSelection()\n const isTarget = fromDialog === true || dialog.value !== true || hasDialog !== true\n\n if (props.useInput === true) {\n child.push(getInput(fromDialog, isTarget))\n }\n // there can be only one (when dialog is opened the control in dialog should be target)\n else if (state.editable.value === true && isTarget === true) {\n child.push(\n h('div', {\n ref: targetRef,\n key: 'd_t',\n class: 'no-outline',\n id: state.targetUid.value,\n tabindex: props.tabindex,\n onKeydown: onTargetKeydown,\n onKeyup: onTargetKeyup,\n onKeypress: onTargetKeypress\n })\n )\n\n if (typeof props.autocomplete === 'string' && props.autocomplete.length > 0) {\n child.push(\n h('input', {\n class: 'q-select__autocomplete-input no-outline',\n autocomplete: props.autocomplete,\n onKeyup: onTargetAutocomplete\n })\n )\n }\n }\n\n if (nameProp.value !== void 0 && props.disable !== true && innerOptionsValue.value.length > 0) {\n const opts = innerOptionsValue.value.map(value => h('option', { value, selected: true }))\n\n child.push(\n h('select', {\n class: 'hidden',\n name: nameProp.value,\n multiple: props.multiple\n }, opts)\n )\n }\n\n return h('div', {\n class: 'q-field__native row items-center',\n ...state.splitAttrs.attributes.value\n }, child)\n },\n\n getInnerAppend: () => (\n props.loading !== true && innerLoadingIndicator.value !== true && props.hideDropdownIcon !== true\n ? [\n h(QIcon, {\n class: 'q-select__dropdown-icon' + (menu.value === true ? ' rotate-180' : ''),\n name: dropdownArrowIcon.value\n })\n ]\n : null\n )\n })\n\n return useField(state)\n }\n})\n","import { h, defineComponent, computed, getCurrentInstance } from 'vue'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\n\nimport { hSlot } from '../../utils/private/render.js'\n\nconst separatorValues = [ 'horizontal', 'vertical', 'cell', 'none' ]\n\nexport default defineComponent({\n name: 'QMarkupTable',\n\n props: {\n ...useDarkProps,\n\n dense: Boolean,\n flat: Boolean,\n bordered: Boolean,\n square: Boolean,\n wrapCells: Boolean,\n\n separator: {\n type: String,\n default: 'horizontal',\n validator: v => separatorValues.includes(v)\n }\n },\n\n setup (props, { slots }) {\n const vm = getCurrentInstance()\n const isDark = useDark(props, vm.proxy.$q)\n\n const classes = computed(() =>\n 'q-markup-table q-table__container q-table__card'\n + ` q-table--${ props.separator }-separator`\n + (isDark.value === true ? ' q-table--dark q-table__card--dark q-dark' : '')\n + (props.dense === true ? ' q-table--dense' : '')\n + (props.flat === true ? ' q-table--flat' : '')\n + (props.bordered === true ? ' q-table--bordered' : '')\n + (props.square === true ? ' q-table--square' : '')\n + (props.wrapCells === false ? ' q-table--no-wrap' : '')\n )\n\n return () => h('div', {\n class: classes.value\n }, [\n h('table', { class: 'q-table' }, hSlot(slots.default))\n ])\n }\n})\n","import { h } from 'vue'\n\nexport default function (props, content) {\n return h('div', props, [\n h('table', { class: 'q-table' }, content)\n ])\n}\n","import { h, defineComponent, ref, computed, watch, onBeforeMount, onMounted, onBeforeUnmount } from 'vue'\n\nimport QList from '../item/QList.js'\nimport QMarkupTable from '../markup-table/QMarkupTable.js'\nimport getTableMiddle from '../table/get-table-middle.js'\n\nimport { useVirtualScroll, useVirtualScrollProps } from './use-virtual-scroll.js'\n\nimport { getScrollTarget } from '../../utils/scroll.js'\nimport { listenOpts } from '../../utils/event.js'\nimport { hMergeSlot } from '../../utils/private/render.js'\n\nconst comps = {\n list: QList,\n table: QMarkupTable\n}\n\nconst typeOptions = [ 'list', 'table', '__qtable' ]\n\nexport default defineComponent({\n name: 'QVirtualScroll',\n\n props: {\n ...useVirtualScrollProps,\n\n type: {\n type: String,\n default: 'list',\n validator: v => typeOptions.includes(v)\n },\n\n items: {\n type: Array,\n default: () => []\n },\n\n itemsFn: Function,\n itemsSize: Number,\n\n scrollTarget: {\n default: void 0\n }\n },\n\n setup (props, { slots, attrs }) {\n let localScrollTarget\n const rootRef = ref(null)\n\n const virtualScrollLength = computed(() => (\n props.itemsSize >= 0 && props.itemsFn !== void 0\n ? parseInt(props.itemsSize, 10)\n : (Array.isArray(props.items) ? props.items.length : 0)\n ))\n\n const {\n virtualScrollSliceRange,\n localResetVirtualScroll,\n padVirtualScroll,\n onVirtualScrollEvt\n } = useVirtualScroll({\n virtualScrollLength, getVirtualScrollTarget, getVirtualScrollEl\n })\n\n const virtualScrollScope = computed(() => {\n if (virtualScrollLength.value === 0) {\n return []\n }\n\n const mapFn = (item, i) => ({\n index: virtualScrollSliceRange.value.from + i,\n item\n })\n\n return props.itemsFn === void 0\n ? props.items.slice(virtualScrollSliceRange.value.from, virtualScrollSliceRange.value.to).map(mapFn)\n : props.itemsFn(virtualScrollSliceRange.value.from, virtualScrollSliceRange.value.to - virtualScrollSliceRange.value.from).map(mapFn)\n })\n\n const classes = computed(() =>\n 'q-virtual-scroll q-virtual-scroll' + (props.virtualScrollHorizontal === true ? '--horizontal' : '--vertical')\n + (props.scrollTarget !== void 0 ? '' : ' scroll')\n )\n\n const attributes = computed(() => (\n props.scrollTarget !== void 0 ? {} : { tabindex: 0 }\n ))\n\n watch(virtualScrollLength, () => {\n localResetVirtualScroll()\n })\n\n watch(() => props.scrollTarget, () => {\n unconfigureScrollTarget()\n configureScrollTarget()\n })\n\n function getVirtualScrollEl () {\n return rootRef.value.$el || rootRef.value\n }\n\n function getVirtualScrollTarget () {\n return localScrollTarget\n }\n\n function configureScrollTarget () {\n localScrollTarget = getScrollTarget(getVirtualScrollEl(), props.scrollTarget)\n localScrollTarget.addEventListener('scroll', onVirtualScrollEvt, listenOpts.passive)\n }\n\n function unconfigureScrollTarget () {\n if (localScrollTarget !== void 0) {\n localScrollTarget.removeEventListener('scroll', onVirtualScrollEvt, listenOpts.passive)\n localScrollTarget = void 0\n }\n }\n\n function __getVirtualChildren () {\n let child = padVirtualScroll(\n props.type === 'list' ? 'div' : 'tbody',\n virtualScrollScope.value.map(slots.default)\n )\n\n if (slots.before !== void 0) {\n child = slots.before().concat(child)\n }\n\n return hMergeSlot(slots.after, child)\n }\n\n onBeforeMount(() => {\n localResetVirtualScroll()\n })\n\n onMounted(() => {\n configureScrollTarget()\n })\n\n onBeforeUnmount(() => {\n unconfigureScrollTarget()\n })\n\n return () => {\n if (slots.default === void 0) {\n console.error('QVirtualScroll: default scoped slot is required for rendering')\n return\n }\n\n return props.type === '__qtable'\n ? getTableMiddle(\n { ref: rootRef, class: 'q-table__middle ' + classes.value },\n __getVirtualChildren()\n )\n : h(comps[ props.type ], {\n ...attrs,\n ref: rootRef,\n class: [ attrs.class, classes.value ],\n ...attributes.value\n }, __getVirtualChildren)\n }\n }\n})\n","import { h, defineComponent, computed, getCurrentInstance } from 'vue'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport useSize, { useSizeProps } from '../../composables/private/use-size.js'\n\nimport { hMergeSlot } from '../../utils/private/render.js'\n\nconst defaultSizes = {\n xs: 2,\n sm: 4,\n md: 6,\n lg: 10,\n xl: 14\n}\n\nfunction width (val, reverse) {\n return {\n transform: reverse === true\n ? `translateX(100%) scale3d(${ -val },1,1)`\n : `scale3d(${ val },1,1)`\n }\n}\n\nexport default defineComponent({\n name: 'QLinearProgress',\n\n props: {\n ...useDarkProps,\n ...useSizeProps,\n\n value: {\n type: Number,\n default: 0\n },\n buffer: Number,\n\n color: String,\n trackColor: String,\n\n reverse: Boolean,\n stripe: Boolean,\n indeterminate: Boolean,\n query: Boolean,\n rounded: Boolean,\n\n instantFeedback: Boolean\n },\n\n setup (props, { slots }) {\n const vm = getCurrentInstance()\n const isDark = useDark(props, vm.proxy.$q)\n const sizeStyle = useSize(props, defaultSizes)\n\n const motion = computed(() => props.indeterminate === true || props.query === true)\n\n const classes = computed(() =>\n 'q-linear-progress'\n + (props.color !== void 0 ? ` text-${ props.color }` : '')\n + (props.reverse === true || props.query === true ? ' q-linear-progress--reverse' : '')\n + (props.rounded === true ? ' rounded-borders' : '')\n )\n\n const trackStyle = computed(() => width(props.buffer !== void 0 ? props.buffer : 1, props.reverse))\n const trackClass = computed(() =>\n 'q-linear-progress__track absolute-full'\n + ` q-linear-progress__track--with${ props.instantFeedback === true ? 'out' : '' }-transition`\n + ` q-linear-progress__track--${ isDark.value === true ? 'dark' : 'light' }`\n + (props.trackColor !== void 0 ? ` bg-${ props.trackColor }` : '')\n )\n\n const modelStyle = computed(() => width(motion.value === true ? 1 : props.value, props.reverse))\n const modelClass = computed(() =>\n 'q-linear-progress__model absolute-full'\n + ` q-linear-progress__model--with${ props.instantFeedback === true ? 'out' : '' }-transition`\n + ` q-linear-progress__model--${ motion.value === true ? 'in' : '' }determinate`\n )\n\n const stripeStyle = computed(() => ({ width: `${ props.value * 100 }%` }))\n\n return () => {\n const child = [\n h('div', {\n class: trackClass.value,\n style: trackStyle.value\n }),\n\n h('div', {\n class: modelClass.value,\n style: modelStyle.value\n })\n ]\n\n props.stripe === true && motion.value === false && child.push(\n h('div', {\n class: 'q-linear-progress__stripe absolute-full',\n style: stripeStyle.value\n })\n )\n\n return h('div', {\n class: classes.value,\n style: sizeStyle.value,\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': 1,\n 'aria-valuenow': props.indeterminate === true\n ? void 0\n : props.value\n }, hMergeSlot(slots.default, child))\n }\n }\n})\n","import { ref, watch, onBeforeMount, onMounted, onBeforeUnmount, getCurrentInstance } from 'vue'\n\nimport History from '../../history.js'\nimport { vmHasRouter } from '../../utils/private/vm.js'\n\nexport const useFullscreenProps = {\n fullscreen: Boolean,\n noRouteFullscreenExit: Boolean\n}\n\nexport const useFullscreenEmits = [ 'update:fullscreen', 'fullscreen' ]\n\nexport default function () {\n const vm = getCurrentInstance()\n const { props, emit, proxy } = vm\n\n let historyEntry, fullscreenFillerNode, container\n const inFullscreen = ref(false)\n\n vmHasRouter(vm) === true && watch(() => proxy.$route, () => {\n props.noRouteFullscreenExit !== true && exitFullscreen()\n })\n\n watch(() => props.fullscreen, v => {\n if (inFullscreen.value !== v) {\n toggleFullscreen()\n }\n })\n\n watch(inFullscreen, v => {\n emit('update:fullscreen', v)\n emit('fullscreen', v)\n })\n\n function toggleFullscreen () {\n if (inFullscreen.value === true) {\n exitFullscreen()\n }\n else {\n setFullscreen()\n }\n }\n\n function setFullscreen () {\n if (inFullscreen.value === true) {\n return\n }\n\n inFullscreen.value = true\n container = proxy.$el.parentNode\n container.replaceChild(fullscreenFillerNode, proxy.$el)\n document.body.appendChild(proxy.$el)\n document.body.classList.add('q-body--fullscreen-mixin')\n\n historyEntry = {\n handler: exitFullscreen\n }\n History.add(historyEntry)\n }\n\n function exitFullscreen () {\n if (inFullscreen.value !== true) {\n return\n }\n\n if (historyEntry !== void 0) {\n History.remove(historyEntry)\n historyEntry = void 0\n }\n\n container.replaceChild(proxy.$el, fullscreenFillerNode)\n document.body.classList.remove('q-body--fullscreen-mixin')\n inFullscreen.value = false\n\n if (proxy.$el.scrollIntoView !== void 0) {\n setTimeout(() => { proxy.$el.scrollIntoView() })\n }\n }\n\n onBeforeMount(() => {\n fullscreenFillerNode = document.createElement('span')\n })\n\n onMounted(() => {\n props.fullscreen === true && setFullscreen()\n })\n\n onBeforeUnmount(exitFullscreen)\n\n // expose public methods\n Object.assign(proxy, {\n toggleFullscreen,\n setFullscreen,\n exitFullscreen\n })\n\n return {\n inFullscreen,\n toggleFullscreen\n }\n}\n","export function sortString (a, b) {\n if (typeof a !== 'string') {\n throw new TypeError('The value for sorting must be a String')\n }\n return a.localeCompare(b)\n}\n\nexport function sortNumber (a, b) {\n return a - b\n}\n\nexport function sortDate (a, b) {\n return (new Date(a)) - (new Date(b))\n}\n\nexport function sortBoolean (a, b) {\n return a && !b\n ? -1\n : (!a && b ? 1 : 0)\n}\n","import { computed } from 'vue'\n\nimport { sortDate } from '../../utils/private/sort.js'\nimport { isNumber, isDate } from '../../utils/private/is.js'\n\nexport const useTableSortProps = {\n sortMethod: Function,\n binaryStateSort: Boolean,\n columnSortOrder: {\n type: String,\n validator: v => v === 'ad' || v === 'da',\n default: 'ad'\n }\n}\n\nexport function useTableSort (props, computedPagination, colList, setPagination) {\n const columnToSort = computed(() => {\n const { sortBy } = computedPagination.value\n\n return sortBy\n ? colList.value.find(def => def.name === sortBy) || null\n : null\n })\n\n const computedSortMethod = computed(() => (\n props.sortMethod !== void 0\n ? props.sortMethod\n : (data, sortBy, descending) => {\n const col = colList.value.find(def => def.name === sortBy)\n if (col === void 0 || col.field === void 0) {\n return data\n }\n\n const\n dir = descending === true ? -1 : 1,\n val = typeof col.field === 'function'\n ? v => col.field(v)\n : v => v[ col.field ]\n\n return data.sort((a, b) => {\n let\n A = val(a),\n B = val(b)\n\n if (A === null || A === void 0) {\n return -1 * dir\n }\n if (B === null || B === void 0) {\n return 1 * dir\n }\n if (col.sort !== void 0) {\n return col.sort(A, B, a, b) * dir\n }\n if (isNumber(A) === true && isNumber(B) === true) {\n return (A - B) * dir\n }\n if (isDate(A) === true && isDate(B) === true) {\n return sortDate(A, B) * dir\n }\n if (typeof A === 'boolean' && typeof B === 'boolean') {\n return (A - B) * dir\n }\n\n [ A, B ] = [ A, B ].map(s => (s + '').toLocaleString().toLowerCase())\n\n return A < B\n ? -1 * dir\n : (A === B ? 0 : dir)\n })\n }\n ))\n\n function sort (col /* String(col name) or Object(col definition) */) {\n let sortOrder = props.columnSortOrder\n\n if (col === Object(col)) {\n if (col.sortOrder) {\n sortOrder = col.sortOrder\n }\n\n col = col.name\n }\n else {\n const def = colList.value.find(def => def.name === col)\n if (def !== void 0 && def.sortOrder) {\n sortOrder = def.sortOrder\n }\n }\n\n let { sortBy, descending } = computedPagination.value\n\n if (sortBy !== col) {\n sortBy = col\n descending = sortOrder === 'da'\n }\n else if (props.binaryStateSort === true) {\n descending = !descending\n }\n else if (descending === true) {\n if (sortOrder === 'ad') {\n sortBy = null\n }\n else {\n descending = false\n }\n }\n else { // ascending\n if (sortOrder === 'ad') {\n descending = true\n }\n else {\n sortBy = null\n }\n }\n\n setPagination({ sortBy, descending, page: 1 })\n }\n\n return {\n columnToSort,\n computedSortMethod,\n sort\n }\n}\n","import { computed, watch, nextTick } from 'vue'\n\nexport const useTableFilterProps = {\n filter: [ String, Object ],\n filterMethod: Function\n}\n\nexport function useTableFilter (props, setPagination) {\n const computedFilterMethod = computed(() => (\n props.filterMethod !== void 0\n ? props.filterMethod\n : (rows, terms, cols, cellValue) => {\n const lowerTerms = terms ? terms.toLowerCase() : ''\n return rows.filter(\n row => cols.some(col => {\n const val = cellValue(col, row) + ''\n const haystack = (val === 'undefined' || val === 'null') ? '' : val.toLowerCase()\n return haystack.indexOf(lowerTerms) !== -1\n })\n )\n }\n ))\n\n watch(\n () => props.filter,\n () => {\n nextTick(() => {\n setPagination({ page: 1 }, true)\n })\n },\n { deep: true }\n )\n\n return { computedFilterMethod }\n}\n","import { ref, computed, watch, nextTick } from 'vue'\n\nfunction samePagination (oldPag, newPag) {\n for (const prop in newPag) {\n if (newPag[ prop ] !== oldPag[ prop ]) {\n return false\n }\n }\n return true\n}\n\nfunction fixPagination (p) {\n if (p.page < 1) {\n p.page = 1\n }\n if (p.rowsPerPage !== void 0 && p.rowsPerPage < 1) {\n p.rowsPerPage = 0\n }\n return p\n}\n\nexport const useTablePaginationProps = {\n pagination: Object,\n rowsPerPageOptions: {\n type: Array,\n default: () => [ 5, 7, 10, 15, 20, 25, 50, 0 ]\n },\n\n 'onUpdate:pagination': Function\n}\n\nexport function useTablePaginationState (vm, getCellValue) {\n const { props, emit } = vm\n\n const innerPagination = ref(\n Object.assign({\n sortBy: null,\n descending: false,\n page: 1,\n rowsPerPage: props.rowsPerPageOptions.length > 0\n ? props.rowsPerPageOptions[ 0 ]\n : 5\n }, props.pagination)\n )\n\n const computedPagination = computed(() => {\n const pag = props[ 'onUpdate:pagination' ] !== void 0\n ? { ...innerPagination.value, ...props.pagination }\n : innerPagination.value\n\n return fixPagination(pag)\n })\n\n const isServerSide = computed(() => computedPagination.value.rowsNumber !== void 0)\n\n function sendServerRequest (pagination) {\n requestServerInteraction({\n pagination,\n filter: props.filter\n })\n }\n\n function requestServerInteraction (prop = {}) {\n nextTick(() => {\n emit('request', {\n pagination: prop.pagination || computedPagination.value,\n filter: prop.filter || props.filter,\n getCellValue\n })\n })\n }\n\n function setPagination (val, forceServerRequest) {\n const newPagination = fixPagination({\n ...computedPagination.value,\n ...val\n })\n\n if (samePagination(computedPagination.value, newPagination)) {\n if (isServerSide.value === true && forceServerRequest === true) {\n sendServerRequest(newPagination)\n }\n return\n }\n\n if (isServerSide.value === true) {\n sendServerRequest(newPagination)\n return\n }\n\n if (\n props.pagination !== void 0\n && props[ 'onUpdate:pagination' ] !== void 0\n ) {\n emit('update:pagination', newPagination)\n }\n else {\n innerPagination.value = newPagination\n }\n }\n\n return {\n innerPagination,\n computedPagination,\n isServerSide,\n\n requestServerInteraction,\n setPagination\n }\n}\n\nexport function useTablePagination (vm, innerPagination, computedPagination, isServerSide, setPagination, filteredSortedRowsNumber) {\n const { props, emit, proxy: { $q } } = vm\n\n const computedRowsNumber = computed(() => (\n isServerSide.value === true\n ? computedPagination.value.rowsNumber || 0\n : filteredSortedRowsNumber.value\n ))\n\n const firstRowIndex = computed(() => {\n const { page, rowsPerPage } = computedPagination.value\n return (page - 1) * rowsPerPage\n })\n\n const lastRowIndex = computed(() => {\n const { page, rowsPerPage } = computedPagination.value\n return page * rowsPerPage\n })\n\n const isFirstPage = computed(() => computedPagination.value.page === 1)\n\n const pagesNumber = computed(() => (\n computedPagination.value.rowsPerPage === 0\n ? 1\n : Math.max(\n 1,\n Math.ceil(computedRowsNumber.value / computedPagination.value.rowsPerPage)\n )\n ))\n\n const isLastPage = computed(() => (\n lastRowIndex.value === 0\n ? true\n : computedPagination.value.page >= pagesNumber.value\n ))\n\n const computedRowsPerPageOptions = computed(() => {\n const opts = props.rowsPerPageOptions.includes(innerPagination.value.rowsPerPage)\n ? props.rowsPerPageOptions\n : [ innerPagination.value.rowsPerPage ].concat(props.rowsPerPageOptions)\n\n return opts.map(count => ({\n label: count === 0 ? $q.lang.table.allRows : '' + count,\n value: count\n }))\n })\n\n watch(pagesNumber, (lastPage, oldLastPage) => {\n if (lastPage === oldLastPage) {\n return\n }\n\n const currentPage = computedPagination.value.page\n if (lastPage && !currentPage) {\n setPagination({ page: 1 })\n }\n else if (lastPage < currentPage) {\n setPagination({ page: lastPage })\n }\n })\n\n function firstPage () {\n setPagination({ page: 1 })\n }\n\n function prevPage () {\n const { page } = computedPagination.value\n if (page > 1) {\n setPagination({ page: page - 1 })\n }\n }\n\n function nextPage () {\n const { page, rowsPerPage } = computedPagination.value\n if (lastRowIndex.value > 0 && page * rowsPerPage < computedRowsNumber.value) {\n setPagination({ page: page + 1 })\n }\n }\n\n function lastPage () {\n setPagination({ page: pagesNumber.value })\n }\n\n if (props[ 'onUpdate:pagination' ] !== void 0) {\n emit('update:pagination', { ...computedPagination.value })\n }\n\n return {\n firstRowIndex,\n lastRowIndex,\n isFirstPage,\n isLastPage,\n pagesNumber,\n computedRowsPerPageOptions,\n computedRowsNumber,\n\n firstPage,\n prevPage,\n nextPage,\n lastPage\n }\n}\n","import { computed } from 'vue'\n\nexport const useTableRowSelectionProps = {\n selection: {\n type: String,\n default: 'none',\n validator: v => [ 'single', 'multiple', 'none' ].includes(v)\n },\n selected: {\n type: Array,\n default: () => []\n }\n}\n\nexport const useTableRowSelectionEmits = [ 'update:selected', 'selection' ]\n\nexport function useTableRowSelection (props, emit, computedRows, getRowKey) {\n const selectedKeys = computed(() => {\n const keys = {}\n props.selected.map(getRowKey.value).forEach(key => {\n keys[ key ] = true\n })\n return keys\n })\n\n const hasSelectionMode = computed(() => {\n return props.selection !== 'none'\n })\n\n const singleSelection = computed(() => {\n return props.selection === 'single'\n })\n\n const multipleSelection = computed(() => {\n return props.selection === 'multiple'\n })\n\n const allRowsSelected = computed(() =>\n computedRows.value.length > 0 && computedRows.value.every(\n row => selectedKeys.value[ getRowKey.value(row) ] === true\n )\n )\n\n const someRowsSelected = computed(() =>\n allRowsSelected.value !== true\n && computedRows.value.some(row => selectedKeys.value[ getRowKey.value(row) ] === true)\n )\n\n const rowsSelectedNumber = computed(() => props.selected.length)\n\n function isRowSelected (key) {\n return selectedKeys.value[ key ] === true\n }\n\n function clearSelection () {\n emit('update:selected', [])\n }\n\n function updateSelection (keys, rows, added, evt) {\n emit('selection', { rows, added, keys, evt })\n\n const payload = singleSelection.value === true\n ? (added === true ? rows : [])\n : (\n added === true\n ? props.selected.concat(rows)\n : props.selected.filter(\n row => keys.includes(getRowKey.value(row)) === false\n )\n )\n\n emit('update:selected', payload)\n }\n\n return {\n hasSelectionMode,\n singleSelection,\n multipleSelection,\n allRowsSelected,\n someRowsSelected,\n rowsSelectedNumber,\n\n isRowSelected,\n clearSelection,\n updateSelection\n }\n}\n","import { ref, watch } from 'vue'\n\nfunction getVal (val) {\n return Array.isArray(val)\n ? val.slice()\n : []\n}\n\nexport const useTableRowExpandProps = {\n expanded: Array // v-model:expanded\n}\n\nexport const useTableRowExpandEmits = [ 'update:expanded' ]\n\nexport function useTableRowExpand (props, emit) {\n const innerExpanded = ref(getVal(props.expanded))\n\n watch(() => props.expanded, val => {\n innerExpanded.value = getVal(val)\n })\n\n function isRowExpanded (key) {\n return innerExpanded.value.includes(key)\n }\n\n function setExpanded (val) {\n if (props.expanded !== void 0) {\n emit('update:expanded', val)\n }\n else {\n innerExpanded.value = val\n }\n }\n\n function updateExpanded (key, add) {\n const target = innerExpanded.value.slice()\n const index = target.indexOf(key)\n\n if (add === true) {\n if (index === -1) {\n target.push(key)\n setExpanded(target)\n }\n }\n else if (index !== -1) {\n target.splice(index, 1)\n setExpanded(target)\n }\n }\n\n return {\n isRowExpanded,\n setExpanded,\n updateExpanded\n }\n}\n","import { computed } from 'vue'\n\nimport { isNumber } from '../../utils/private/is.js'\n\nexport const useTableColumnSelectionProps = {\n visibleColumns: Array\n}\n\nexport function useTableColumnSelection (props, computedPagination, hasSelectionMode) {\n const colList = computed(() => {\n if (props.columns !== void 0) {\n return props.columns\n }\n\n // we infer columns from first row\n const row = props.rows[ 0 ]\n\n return row !== void 0\n ? Object.keys(row).map(name => ({\n name,\n label: name.toUpperCase(),\n field: name,\n align: isNumber(row[ name ]) ? 'right' : 'left',\n sortable: true\n }))\n : []\n })\n\n const computedCols = computed(() => {\n const { sortBy, descending } = computedPagination.value\n\n const cols = props.visibleColumns !== void 0\n ? colList.value.filter(col => col.required === true || props.visibleColumns.includes(col.name) === true)\n : colList.value\n\n return cols.map(col => {\n const align = col.align || 'right'\n\n return {\n ...col,\n align,\n __iconClass: `q-table__sort-icon q-table__sort-icon--${ align }`,\n __thClass: `text-${ align }`\n + (col.headerClasses !== void 0 ? ' ' + col.headerClasses : '')\n + (col.sortable === true ? ' sortable' : '')\n + (col.name === sortBy ? ` sorted ${ descending === true ? 'sort-desc' : '' }` : ''),\n __tdClass: `text-${ align }${ col.classes !== void 0 ? ' ' + col.classes : '' }`\n }\n })\n })\n\n const computedColsMap = computed(() => {\n const names = {}\n computedCols.value.forEach(col => {\n names[ col.name ] = col\n })\n return names\n })\n\n const computedColspan = computed(() => {\n return props.tableColspan !== void 0\n ? props.tableColspan\n : computedCols.value.length + (hasSelectionMode.value === true ? 1 : 0)\n })\n\n return {\n colList,\n computedCols,\n computedColsMap,\n computedColspan\n }\n}\n","import { h, defineComponent, ref, computed, watch, getCurrentInstance } from 'vue'\n\nimport QTh from './QTh.js'\n\nimport QSeparator from '../separator/QSeparator.js'\nimport QIcon from '../icon/QIcon.js'\nimport QVirtualScroll from '../virtual-scroll/QVirtualScroll.js'\nimport QSelect from '../select/QSelect.js'\nimport QLinearProgress from '../linear-progress/QLinearProgress.js'\nimport QCheckbox from '../checkbox/QCheckbox.js'\nimport QBtn from '../btn/QBtn.js'\n\nimport getTableMiddle from './get-table-middle.js'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport { commonVirtPropsList } from '../virtual-scroll/use-virtual-scroll.js'\nimport useFullscreen, { useFullscreenProps, useFullscreenEmits } from '../../composables/private/use-fullscreen.js'\n\nimport { useTableSort, useTableSortProps } from './table-sort.js'\nimport { useTableFilter, useTableFilterProps } from './table-filter.js'\nimport { useTablePaginationState, useTablePagination, useTablePaginationProps } from './table-pagination.js'\nimport { useTableRowSelection, useTableRowSelectionProps, useTableRowSelectionEmits } from './table-row-selection.js'\nimport { useTableRowExpand, useTableRowExpandProps, useTableRowExpandEmits } from './table-row-expand.js'\nimport { useTableColumnSelection, useTableColumnSelectionProps } from './table-column-selection.js'\n\nconst bottomClass = 'q-table__bottom row items-center'\n\nconst commonVirtPropsObj = {}\ncommonVirtPropsList.forEach(p => { commonVirtPropsObj[ p ] = {} })\n\nexport default defineComponent({\n name: 'QTable',\n\n props: {\n rows: {\n type: Array,\n default: () => []\n },\n rowKey: {\n type: [ String, Function ],\n default: 'id'\n },\n\n columns: Array,\n loading: Boolean,\n\n iconFirstPage: String,\n iconPrevPage: String,\n iconNextPage: String,\n iconLastPage: String,\n\n title: String,\n\n hideHeader: Boolean,\n\n grid: Boolean,\n gridHeader: Boolean,\n\n dense: Boolean,\n flat: Boolean,\n bordered: Boolean,\n square: Boolean,\n separator: {\n type: String,\n default: 'horizontal',\n validator: v => [ 'horizontal', 'vertical', 'cell', 'none' ].includes(v)\n },\n wrapCells: Boolean,\n\n virtualScroll: Boolean,\n ...commonVirtPropsObj,\n\n noDataLabel: String,\n noResultsLabel: String,\n loadingLabel: String,\n selectedRowsLabel: Function,\n rowsPerPageLabel: String,\n paginationLabel: Function,\n\n color: {\n type: String,\n default: 'grey-8'\n },\n\n titleClass: [ String, Array, Object ],\n tableStyle: [ String, Array, Object ],\n tableClass: [ String, Array, Object ],\n tableHeaderStyle: [ String, Array, Object ],\n tableHeaderClass: [ String, Array, Object ],\n cardContainerClass: [ String, Array, Object ],\n cardContainerStyle: [ String, Array, Object ],\n cardStyle: [ String, Array, Object ],\n cardClass: [ String, Array, Object ],\n\n hideBottom: Boolean,\n hideSelectedBanner: Boolean,\n hideNoData: Boolean,\n hidePagination: Boolean,\n\n onRowClick: Function,\n onRowDblclick: Function,\n onRowContextmenu: Function,\n\n ...useDarkProps,\n ...useFullscreenProps,\n\n ...useTableColumnSelectionProps,\n ...useTableFilterProps,\n ...useTablePaginationProps,\n ...useTableRowExpandProps,\n ...useTableRowSelectionProps,\n ...useTableSortProps\n },\n\n emits: [\n 'request', 'virtual-scroll',\n ...useFullscreenEmits,\n ...useTableRowExpandEmits,\n ...useTableRowSelectionEmits\n ],\n\n setup (props, { slots, emit }) {\n const vm = getCurrentInstance()\n const { proxy: { $q } } = vm\n\n const isDark = useDark(props, $q)\n const { inFullscreen, toggleFullscreen } = useFullscreen()\n\n const getRowKey = computed(() => (\n typeof props.rowKey === 'function'\n ? props.rowKey\n : row => row[ props.rowKey ]\n ))\n\n const rootRef = ref(null)\n const virtScrollRef = ref(null)\n const hasVirtScroll = computed(() => props.grid !== true && props.virtualScroll === true)\n\n const cardDefaultClass = computed(() =>\n ' q-table__card'\n + (isDark.value === true ? ' q-table__card--dark q-dark' : '')\n + (props.square === true ? ' q-table--square' : '')\n + (props.flat === true ? ' q-table--flat' : '')\n + (props.bordered === true ? ' q-table--bordered' : '')\n )\n\n const __containerClass = computed(() =>\n `q-table__container q-table--${ props.separator }-separator column no-wrap`\n + (props.loading === true ? ' q-table--loading' : '')\n + (props.grid === true ? ' q-table--grid' : cardDefaultClass.value)\n + (isDark.value === true ? ' q-table--dark' : '')\n + (props.dense === true ? ' q-table--dense' : '')\n + (props.wrapCells === false ? ' q-table--no-wrap' : '')\n + (inFullscreen.value === true ? ' fullscreen scroll' : '')\n )\n\n const containerClass = computed(() =>\n __containerClass.value + (props.loading === true ? ' q-table--loading' : '')\n )\n\n watch(\n () => props.tableStyle + props.tableClass + props.tableHeaderStyle + props.tableHeaderClass + __containerClass.value,\n () => { hasVirtScroll.value === true && virtScrollRef.value !== null && virtScrollRef.value.reset() }\n )\n\n const {\n innerPagination,\n computedPagination,\n isServerSide,\n\n requestServerInteraction,\n setPagination\n } = useTablePaginationState(vm, getCellValue)\n\n const { computedFilterMethod } = useTableFilter(props, setPagination)\n const { isRowExpanded, setExpanded, updateExpanded } = useTableRowExpand(props, emit)\n\n const filteredSortedRows = computed(() => {\n let rows = props.rows\n\n if (isServerSide.value === true || rows.length === 0) {\n return rows\n }\n\n const { sortBy, descending } = computedPagination.value\n\n if (props.filter) {\n rows = computedFilterMethod.value(rows, props.filter, computedCols.value, getCellValue)\n }\n\n if (columnToSort.value !== null) {\n rows = computedSortMethod.value(\n props.rows === rows ? rows.slice() : rows,\n sortBy,\n descending\n )\n }\n\n return rows\n })\n\n const filteredSortedRowsNumber = computed(() => filteredSortedRows.value.length)\n\n const computedRows = computed(() => {\n let rows = filteredSortedRows.value\n\n if (isServerSide.value === true) {\n return rows\n }\n\n const { rowsPerPage } = computedPagination.value\n\n if (rowsPerPage !== 0) {\n if (firstRowIndex.value === 0 && props.rows !== rows) {\n if (rows.length > lastRowIndex.value) {\n rows = rows.slice(0, lastRowIndex.value)\n }\n }\n else {\n rows = rows.slice(firstRowIndex.value, lastRowIndex.value)\n }\n }\n\n return rows\n })\n\n const {\n hasSelectionMode,\n singleSelection,\n multipleSelection,\n allRowsSelected,\n someRowsSelected,\n rowsSelectedNumber,\n\n isRowSelected,\n clearSelection,\n updateSelection\n } = useTableRowSelection(props, emit, computedRows, getRowKey)\n\n const { colList, computedCols, computedColsMap, computedColspan } = useTableColumnSelection(props, computedPagination, hasSelectionMode)\n\n const { columnToSort, computedSortMethod, sort } = useTableSort(props, computedPagination, colList, setPagination)\n\n const {\n firstRowIndex,\n lastRowIndex,\n isFirstPage,\n isLastPage,\n pagesNumber,\n computedRowsPerPageOptions,\n computedRowsNumber,\n\n firstPage,\n prevPage,\n nextPage,\n lastPage\n } = useTablePagination(vm, innerPagination, computedPagination, isServerSide, setPagination, filteredSortedRowsNumber)\n\n const nothingToDisplay = computed(() => computedRows.value.length === 0)\n\n const virtProps = computed(() => {\n const acc = {}\n\n commonVirtPropsList\n .forEach(p => { acc[ p ] = props[ p ] })\n\n if (acc.virtualScrollItemSize === void 0) {\n acc.virtualScrollItemSize = props.dense === true ? 28 : 48\n }\n\n return acc\n })\n\n function resetVirtualScroll () {\n hasVirtScroll.value === true && virtScrollRef.value.reset()\n }\n\n function getBody () {\n if (props.grid === true) {\n return getGridBody()\n }\n\n const header = props.hideHeader !== true ? getTHead : null\n\n if (hasVirtScroll.value === true) {\n const topRow = slots[ 'top-row' ]\n const bottomRow = slots[ 'bottom-row' ]\n\n const virtSlots = {\n default: props => getTBodyTR(props.item, slots.body, props.index)\n }\n\n if (topRow !== void 0) {\n const topContent = h('tbody', topRow({ cols: computedCols.value }))\n\n virtSlots.before = header === null\n ? () => topContent\n : () => [ header() ].concat(topContent)\n }\n else if (header !== null) {\n virtSlots.before = header\n }\n\n if (bottomRow !== void 0) {\n virtSlots.after = () => h('tbody', bottomRow({ cols: computedCols.value }))\n }\n\n return h(QVirtualScroll, {\n ref: virtScrollRef,\n class: props.tableClass,\n style: props.tableStyle,\n ...virtProps.value,\n items: computedRows.value,\n type: '__qtable',\n tableColspan: computedColspan.value,\n onVirtualScroll: onVScroll\n }, virtSlots)\n }\n\n const child = [\n getTBody()\n ]\n\n if (header !== null) {\n child.unshift(header())\n }\n\n return getTableMiddle({\n class: [ 'q-table__middle scroll', props.tableClass ],\n style: props.tableStyle\n }, child)\n }\n\n function scrollTo (toIndex, edge) {\n if (virtScrollRef.value !== null) {\n virtScrollRef.value.scrollTo(toIndex, edge)\n return\n }\n\n toIndex = parseInt(toIndex, 10)\n const rowEl = rootRef.value.querySelector(`tbody tr:nth-of-type(${ toIndex + 1 })`)\n\n if (rowEl !== null) {\n const scrollTarget = rootRef.value.querySelector('.q-table__middle.scroll')\n const { offsetTop } = rowEl\n const direction = offsetTop < scrollTarget.scrollTop ? 'decrease' : 'increase'\n\n scrollTarget.scrollTop = offsetTop\n\n emit('virtual-scroll', {\n index: toIndex,\n from: 0,\n to: innerPagination.value.rowsPerPage - 1,\n direction\n })\n }\n }\n\n function onVScroll (info) {\n emit('virtual-scroll', info)\n }\n\n function getProgress () {\n return [\n h(QLinearProgress, {\n class: 'q-table__linear-progress',\n color: props.color,\n dark: isDark.value,\n indeterminate: true,\n trackColor: 'transparent'\n })\n ]\n }\n\n function getTBodyTR (row, bodySlot, pageIndex) {\n const\n key = getRowKey.value(row),\n selected = isRowSelected(key)\n\n if (bodySlot !== void 0) {\n return bodySlot(\n getBodyScope({\n key,\n row,\n pageIndex,\n __trClass: selected ? 'selected' : ''\n })\n )\n }\n\n const\n bodyCell = slots[ 'body-cell' ],\n child = computedCols.value.map(col => {\n const\n bodyCellCol = slots[ `body-cell-${ col.name }` ],\n slot = bodyCellCol !== void 0 ? bodyCellCol : bodyCell\n\n return slot !== void 0\n ? slot(getBodyCellScope({ key, row, pageIndex, col }))\n : h('td', {\n class: col.__tdClass,\n style: col.style\n }, getCellValue(col, row))\n })\n\n if (hasSelectionMode.value === true) {\n const slot = slots[ 'body-selection' ]\n const content = slot !== void 0\n ? slot(getBodySelectionScope({ key, row, pageIndex }))\n : [\n h(QCheckbox, {\n modelValue: selected,\n color: props.color,\n dark: isDark.value,\n dense: props.dense,\n 'onUpdate:modelValue': (adding, evt) => {\n updateSelection([ key ], [ row ], adding, evt)\n }\n })\n ]\n\n child.unshift(\n h('td', { class: 'q-table--col-auto-width' }, content)\n )\n }\n\n const data = { key, class: { selected } }\n\n if (props.onRowClick !== void 0) {\n data.class[ 'cursor-pointer' ] = true\n data.onClick = evt => {\n emit('row-click', evt, row, pageIndex)\n }\n }\n\n if (props.onRowDblclick !== void 0) {\n data.class[ 'cursor-pointer' ] = true\n data.onDblclick = evt => {\n emit('row-dblclick', evt, row, pageIndex)\n }\n }\n\n if (props.onRowContextmenu !== void 0) {\n data.class[ 'cursor-pointer' ] = true\n data.onContextmenu = evt => {\n emit('row-contextmenu', evt, row, pageIndex)\n }\n }\n\n return h('tr', data, child)\n }\n\n function getTBody () {\n const\n body = slots.body,\n topRow = slots[ 'top-row' ],\n bottomRow = slots[ 'bottom-row' ]\n\n let child = computedRows.value.map(\n (row, pageIndex) => getTBodyTR(row, body, pageIndex)\n )\n\n if (topRow !== void 0) {\n child = topRow({ cols: computedCols.value }).concat(child)\n }\n if (bottomRow !== void 0) {\n child = child.concat(bottomRow({ cols: computedCols.value }))\n }\n\n return h('tbody', child)\n }\n\n function getBodyScope (data) {\n injectBodyCommonScope(data)\n\n data.cols = data.cols.map(col => {\n const c = { ...col }\n Object.defineProperty(c, 'value', {\n get: () => getCellValue(col, data.row),\n configurable: true,\n enumerable: true\n })\n return c\n })\n\n return data\n }\n\n function getBodyCellScope (data) {\n injectBodyCommonScope(data)\n\n Object.defineProperty(data, 'value', {\n get: () => getCellValue(data.col, data.row),\n configurable: true,\n enumerable: true\n })\n\n return data\n }\n\n function getBodySelectionScope (data) {\n injectBodyCommonScope(data)\n return data\n }\n\n function injectBodyCommonScope (data) {\n Object.assign(data, {\n cols: computedCols.value,\n colsMap: computedColsMap.value,\n sort,\n rowIndex: firstRowIndex.value + data.pageIndex,\n color: props.color,\n dark: isDark.value,\n dense: props.dense\n })\n\n hasSelectionMode.value === true && Object.defineProperty(data, 'selected', {\n get: () => isRowSelected(data.key),\n set: (adding, evt) => {\n updateSelection([ data.key ], [ data.row ], adding, evt)\n },\n configurable: true,\n enumerable: true\n })\n\n Object.defineProperty(data, 'expand', {\n get: () => isRowExpanded(data.key),\n set: adding => {\n updateExpanded(data.key, adding)\n },\n configurable: true,\n enumerable: true\n })\n }\n\n function getCellValue (col, row) {\n const val = typeof col.field === 'function' ? col.field(row) : row[ col.field ]\n return col.format !== void 0 ? col.format(val, row) : val\n }\n\n const marginalsScope = computed(() => ({\n pagination: computedPagination.value,\n pagesNumber: pagesNumber.value,\n isFirstPage: isFirstPage.value,\n isLastPage: isLastPage.value,\n firstPage,\n prevPage,\n nextPage,\n lastPage,\n\n inFullscreen: inFullscreen.value,\n toggleFullscreen\n }))\n\n function getTopDiv () {\n const\n top = slots.top,\n topLeft = slots[ 'top-left' ],\n topRight = slots[ 'top-right' ],\n topSelection = slots[ 'top-selection' ],\n hasSelection = hasSelectionMode.value === true\n && topSelection !== void 0\n && rowsSelectedNumber.vaue > 0,\n topClass = 'q-table__top relative-position row items-center'\n\n if (top !== void 0) {\n return h('div', { class: topClass }, [ top(marginalsScope.value) ])\n }\n\n let child\n\n if (hasSelection === true) {\n child = topSelection(marginalsScope.value).slice()\n }\n else {\n child = []\n\n if (topLeft !== void 0) {\n child.push(\n h('div', { class: 'q-table-control' }, [\n topLeft(marginalsScope.value)\n ])\n )\n }\n else if (props.title) {\n child.push(\n h('div', { class: 'q-table__control' }, [\n h('div', {\n class: [ 'q-table__title', props.titleClass ]\n }, props.title)\n ])\n )\n }\n }\n\n if (topRight !== void 0) {\n child.push(\n h('div', { class: 'q-table__separator col' })\n )\n child.push(\n h('div', { class: 'q-table__control' }, [\n topRight(marginalsScope.value)\n ])\n )\n }\n\n if (child.length === 0) {\n return\n }\n\n return h('div', { class: topClass }, child)\n }\n\n const headerSelectedValue = computed(() => (\n someRowsSelected.value === true\n ? null\n : allRowsSelected.value\n ))\n\n function getTHead () {\n const child = getTHeadTR()\n\n if (props.loading === true && slots.loading === void 0) {\n child.push(\n h('tr', { class: 'q-table__progress' }, [\n h('th', {\n class: 'relative-position',\n colspan: computedColspan.value\n }, getProgress())\n ])\n )\n }\n\n return h('thead', child)\n }\n\n function getTHeadTR () {\n const\n header = slots.header,\n headerCell = slots[ 'header-cell' ]\n\n if (header !== void 0) {\n return header(\n getHeaderScope({ header: true })\n ).slice()\n }\n\n const child = computedCols.value.map(col => {\n const\n headerCellCol = slots[ `header-cell-${ col.name }` ],\n slot = headerCellCol !== void 0 ? headerCellCol : headerCell,\n props = getHeaderScope({ col })\n\n return slot !== void 0\n ? slot(props)\n : h(QTh, {\n key: col.name,\n props\n }, () => col.label)\n })\n\n if (singleSelection.value === true && props.grid !== true) {\n child.unshift(\n h('th', { class: 'q-table--col-auto-width' }, ' ')\n )\n }\n else if (multipleSelection.value === true) {\n const slot = slots[ 'header-selection' ]\n const content = slot !== void 0\n ? slot(getHeaderScope({}))\n : [\n h(QCheckbox, {\n color: props.color,\n modelValue: headerSelectedValue.value,\n dark: isDark.value,\n dense: props.dense,\n 'onUpdate:modelValue': onMultipleSelectionSet\n })\n ]\n\n child.unshift(\n h('th', { class: 'q-table--col-auto-width' }, content)\n )\n }\n\n return [\n h('tr', {\n class: props.tableHeaderClass,\n style: props.tableHeaderStyle\n }, child)\n ]\n }\n\n function getHeaderScope (data) {\n Object.assign(data, {\n cols: computedCols.value,\n sort,\n colsMap: computedColsMap.value,\n color: props.color,\n dark: isDark.value,\n dense: props.dense\n })\n\n if (multipleSelection.value === true) {\n Object.defineProperty(data, 'selected', {\n get: () => headerSelectedValue.value,\n set: onMultipleSelectionSet,\n configurable: true,\n enumerable: true\n })\n }\n\n return data\n }\n\n function onMultipleSelectionSet (val) {\n if (someRowsSelected.value === true) {\n val = false\n }\n\n updateSelection(\n computedRows.value.map(getRowKey.value),\n computedRows.value,\n val\n )\n }\n\n const navIcon = computed(() => {\n const ico = [\n props.iconFirstPage || $q.iconSet.table.firstPage,\n props.iconPrevPage || $q.iconSet.table.prevPage,\n props.iconNextPage || $q.iconSet.table.nextPage,\n props.iconLastPage || $q.iconSet.table.lastPage\n ]\n return $q.lang.rtl === true ? ico.reverse() : ico\n })\n\n function getBottomDiv () {\n if (props.hideBottom === true) {\n return\n }\n\n if (nothingToDisplay.value === true) {\n if (props.hideNoData === true) {\n return\n }\n\n const message = props.loading === true\n ? props.loadingLabel || $q.lang.table.loading\n : (props.filter ? props.noResultsLabel || $q.lang.table.noResults : props.noDataLabel || $q.lang.table.noData)\n\n const noData = slots[ 'no-data' ]\n const children = noData !== void 0\n ? [ noData({ message, icon: $q.iconSet.table.warning, filter: props.filter }) ]\n : [\n h(QIcon, {\n class: 'q-table__bottom-nodata-icon',\n name: $q.iconSet.table.warning\n }),\n message\n ]\n\n return h('div', { class: bottomClass + ' q-table__bottom--nodata' }, children)\n }\n\n const bottom = slots.bottom\n\n if (bottom !== void 0) {\n return h('div', { class: bottomClass }, [ bottom(marginalsScope.value) ])\n }\n\n const child = props.hideSelectedBanner !== true && hasSelectionMode.value === true && rowsSelectedNumber.value > 0\n ? [\n h('div', { class: 'q-table__control' }, [\n h('div', [\n (props.selectedRowsLabel || $q.lang.table.selectedRecords)(rowsSelectedNumber.value)\n ])\n ])\n ]\n : []\n\n if (props.hidePagination !== true) {\n return h('div', {\n class: bottomClass + ' justify-end'\n }, getPaginationDiv(child))\n }\n\n if (child.length > 0) {\n return h('div', { class: bottomClass }, child)\n }\n }\n\n function onPagSelection (pag) {\n setPagination({\n page: 1,\n rowsPerPage: pag.value\n })\n }\n\n function getPaginationDiv (child) {\n let control\n const\n { rowsPerPage } = computedPagination.value,\n paginationLabel = props.paginationLabel || $q.lang.table.pagination,\n paginationSlot = slots.pagination,\n hasOpts = props.rowsPerPageOptions.length > 1\n\n child.push(\n h('div', { class: 'q-table__separator col' })\n )\n\n if (hasOpts === true) {\n child.push(\n h('div', { class: 'q-table__control' }, [\n h('span', { class: 'q-table__bottom-item' }, [\n props.rowsPerPageLabel || $q.lang.table.recordsPerPage\n ]),\n h(QSelect, {\n class: 'q-table__select inline q-table__bottom-item',\n color: props.color,\n modelValue: rowsPerPage,\n options: computedRowsPerPageOptions.value,\n displayValue: rowsPerPage === 0\n ? $q.lang.table.allRows\n : rowsPerPage,\n dark: isDark.value,\n borderless: true,\n dense: true,\n optionsDense: true,\n optionsCover: true,\n 'onUpdate:modelValue': onPagSelection\n })\n ])\n )\n }\n\n if (paginationSlot !== void 0) {\n control = paginationSlot(marginalsScope.value)\n }\n else {\n control = [\n h('span', rowsPerPage !== 0 ? { class: 'q-table__bottom-item' } : {}, [\n rowsPerPage\n ? paginationLabel(firstRowIndex.value + 1, Math.min(lastRowIndex.value, computedRowsNumber.value), computedRowsNumber.value)\n : paginationLabel(1, filteredSortedRowsNumber.value, computedRowsNumber.value)\n ])\n ]\n\n if (rowsPerPage !== 0 && pagesNumber.value > 1) {\n const btnProps = {\n color: props.color,\n round: true,\n dense: true,\n flat: true\n }\n\n if (props.dense === true) {\n btnProps.size = 'sm'\n }\n\n pagesNumber.value > 2 && control.push(\n h(QBtn, {\n key: 'pgFirst',\n ...btnProps,\n icon: navIcon.value[ 0 ],\n disable: isFirstPage.value,\n onClick: firstPage\n })\n )\n\n control.push(\n h(QBtn, {\n key: 'pgPrev',\n ...btnProps,\n icon: navIcon.value[ 1 ],\n disable: isFirstPage.value,\n onClick: prevPage\n }),\n\n h(QBtn, {\n key: 'pgNext',\n ...btnProps,\n icon: navIcon.value[ 2 ],\n disable: isLastPage.value,\n onClick: nextPage\n })\n )\n\n pagesNumber.value > 2 && control.push(\n h(QBtn, {\n key: 'pgLast',\n ...btnProps,\n icon: navIcon.value[ 3 ],\n disable: isLastPage.value,\n onClick: lastPage\n })\n )\n }\n }\n\n child.push(\n h('div', { class: 'q-table__control' }, control)\n )\n\n return child\n }\n\n function getGridHeader () {\n const child = props.gridHeader === true\n ? [\n h('table', { class: 'q-table' }, [\n getTHead(h)\n ])\n ]\n : (\n props.loading === true && slots.loading === void 0\n ? getProgress(h)\n : void 0\n )\n\n return h('div', { class: 'q-table__middle' }, child)\n }\n\n function getGridBody () {\n const item = slots.item !== void 0\n ? slots.item\n : scope => {\n const child = scope.cols.map(\n col => h('div', { class: 'q-table__grid-item-row' }, [\n h('div', { class: 'q-table__grid-item-title' }, [ col.label ]),\n h('div', { class: 'q-table__grid-item-value' }, [ col.value ])\n ])\n )\n\n if (hasSelectionMode.value === true) {\n const slot = slots[ 'body-selection' ]\n const content = slot !== void 0\n ? slot(scope)\n : [\n h(QCheckbox, {\n modelValue: scope.selected,\n color: props.color,\n dark: isDark.value,\n dense: props.dense,\n 'onUpdate:modelValue': (adding, evt) => {\n updateSelection([ scope.key ], [ scope.row ], adding, evt)\n }\n })\n ]\n\n child.unshift(\n h('div', { class: 'q-table__grid-item-row' }, content),\n h(QSeparator, { dark: isDark.value })\n )\n }\n\n const data = {\n class: [\n 'q-table__grid-item-card' + cardDefaultClass.value,\n props.cardClass\n ],\n style: props.cardStyle\n }\n\n if (\n props.onRowClick !== void 0\n || props.onRowDblclick !== void 0\n ) {\n data.class[ 0 ] += ' cursor-pointer'\n\n if (props.onRowClick !== void 0) {\n data.onClick = evt => {\n emit('row-click', evt, scope.row, scope.pageIndex)\n }\n }\n\n if (props.onRowDblclick !== void 0) {\n data.onDblclick = evt => {\n emit('row-dblclick', evt, scope.row, scope.pageIndex)\n }\n }\n }\n\n return h('div', {\n class: 'q-table__grid-item col-xs-12 col-sm-6 col-md-4 col-lg-3'\n + (scope.selected === true ? 'q-table__grid-item--selected' : '')\n }, [\n h('div', data, child)\n ])\n }\n\n return h('div', {\n class: [\n 'q-table__grid-content row',\n props.cardContainerClass\n ],\n style: props.cardContainerStyle\n }, computedRows.value.map((row, pageIndex) => {\n return item(getBodyScope({\n key: getRowKey.value(row),\n row,\n pageIndex\n }))\n }))\n }\n\n // expose public methods and needed computed props\n Object.assign(vm.proxy, {\n requestServerInteraction,\n setPagination,\n firstPage,\n prevPage,\n nextPage,\n lastPage,\n isRowSelected,\n clearSelection,\n isRowExpanded,\n setExpanded,\n sort,\n resetVirtualScroll,\n scrollTo,\n getCellValue\n })\n\n Object.defineProperty(vm.proxy, 'filteredSortedRows', {\n get: () => filteredSortedRows.value,\n enumerable: true\n })\n\n Object.defineProperty(vm.proxy, 'computedRows', {\n get: () => computedRows.value,\n enumerable: true\n })\n\n Object.defineProperty(vm.proxy, 'computedRowsNumber', {\n get: () => computedRowsNumber.value,\n enumerable: true\n })\n\n return () => {\n const child = [ getTopDiv() ]\n const data = { ref: rootRef, class: containerClass.value }\n\n if (props.grid === true) {\n child.push(getGridHeader())\n }\n else {\n Object.assign(data, {\n class: [ data.class, props.cardClass ],\n style: props.cardStyle\n })\n }\n\n child.push(\n getBody(),\n getBottomDiv()\n )\n\n if (props.loading === true && slots.loading !== void 0) {\n child.push(\n slots.loading()\n )\n }\n\n return h('div', data, child)\n }\n }\n})\n"],"sourceRoot":""}