{"version":3,"sources":["webpack:///../../../src/components/VWindow/VWindowItem.ts","webpack:///../../../src/components/VTimePicker/VTimePickerClock.ts","webpack:///../../../src/components/VSubheader/index.ts","webpack:///../../../src/components/VSnackbar/VSnackbar.ts","webpack:///../../../src/components/VTimePicker/SelectingTimes.ts","webpack:///../../../src/components/VProgressLinear/index.ts","webpack:///../../../src/components/VRadioGroup/VRadioGroup.ts","webpack:///../../../src/components/VThemeProvider/VThemeProvider.ts","webpack:///../../../src/components/VTabs/VTab.ts","webpack:///../../../src/components/VSlideGroup/VSlideGroup.ts","webpack:///../../../src/components/VTextField/VTextField.ts","webpack:///../../../src/components/VProgressLinear/VProgressLinear.ts","webpack:///../../../src/components/VTabs/VTabsSlider.ts","webpack:///../../../src/components/VTextarea/VTextarea.ts","webpack:///../../../src/components/VTabs/VTabsItems.ts","webpack:///../../../src/components/VTimePicker/VTimePickerTitle.ts","webpack:///../../../src/components/VSelect/VSelectList.ts","webpack:///../../../src/components/VSelect/VSelect.ts","webpack:///../../../src/components/VTabs/VTabItem.ts","webpack:///../../../src/components/VTimePicker/VTimePicker.ts","webpack:///../../../src/components/VWindow/VWindow.ts","webpack:///../../../src/components/VTabs/VTabsBar.ts","webpack:///../../../src/components/VTabs/VTabs.ts"],"names":["baseMixins","mixins","Bootable","GroupableFactory","extend","name","directives","Touch","props","disabled","Boolean","reverseTransition","type","String","default","undefined","transition","value","required","data","isActive","inTransition","computed","classes","this","groupClasses","computedTransition","windowGroup","internalReverse","methods","genDefaultSlot","$slots","genWindowItem","$createElement","staticClass","class","on","$listeners","onAfterTransition","transitionCount","transitionHeight","onBeforeTransition","convertToUnit","$el","clientHeight","onTransitionCancelled","onEnter","el","$nextTick","render","h","beforeEnter","afterEnter","enterCancelled","beforeLeave","afterLeave","leaveCancelled","enter","showLazyContent","Colorable","Themeable","allowedValues","Function","ampm","double","format","val","max","Number","min","scrollable","readonly","rotate","step","inputValue","isDragging","valueOnMouseDown","valueOnMouseUp","count","degreesPerUnit","roundCount","degrees","Math","PI","displayedValue","innerRadiusScale","watch","wheel","e","preventDefault","delta","sign","deltaY","isAllowed","update","isInner","handScale","genValues","children","color","push","setBackgroundColor","style","getTransform","domProps","innerHTML","genHand","scale","angle","transform","i","getPosition","x","y","left","top","rotateRadians","sin","cos","onMouseDown","onDragMove","onMouseUp","stopPropagation","$emit","$refs","clock","getBoundingClientRect","width","innerClock","innerWidth","touches","clientX","clientY","center","coords","handAngle","round","insideClick","euclidean","checksCount","ceil","angleToValue","setMouseDownValue","p0","p1","dx","dy","sqrt","atan2","abs","themeClasses","mousedown","mouseup","mouseleave","touchstart","touchend","mousemove","touchmove","ref","VSubheader","VSheet","Toggleable","PositionableFactory","app","centered","contentClass","multiLine","text","timeout","validator","v","vertical","activeTimeout","absolute","bottom","hasBackground","right","outlined","isDark","light","options","call","styles","$vuetify","application","bar","footer","insetFooter","paddingBottom","paddingLeft","paddingRight","paddingTop","mounted","setTimeout","created","$attrs","hasOwnProperty","removed","deprecate","genActions","getSlot","attrs","genContent","role","genWrapper","setColor","setTextColor","pointerenter","window","clearTimeout","pointerleave","genTransition","includes","SelectingTimes","VProgressLinear","BaseItemGroup","VInput","provide","radioGroup","column","height","row","id","computedId","genInputSlot","click","genLabel","label","for","tag","onClick","vnode","_b","attrs$","root","rootIsDark","find","node","isComment","Routable","ripple","Object","proxyClass","to","href","$router","resolve","$route","append","replace","indexOf","detail","blur","toggle","tabsBar","mandatory","generateRouteLink","tabindex","keydown","keyCode","keyCodes","bias","c","calculateUpdatedOffset","selectedElement","widths","rtl","currentScrollOffset","clientWidth","offsetLeft","content","totalWidth","wrapper","itemOffset","additionalOffset","calculateCenteredOffset","offsetCentered","BaseSlideGroup","Mobile","Resize","activeClass","centerActive","nextIcon","prevIcon","showArrows","internalItemsLength","isOverflowing","resizeTimeout","startX","isSwipingHorizontal","isSwiping","scrollOffset","canTouch","__cachedNext","__cachedPrev","hasAffixes","isMobile","hasNext","hasPrev","internalValue","scroll","beforeUpdate","$children","length","updated","setWidths","onScroll","scrollLeft","onFocusin","composedPath","items","vm","genNext","slot","$scopedSlots","next","onAffixClick","key","focusin","genData","onResize","genIcon","location","icon","upperLocation","toUpperCase","slice","hasAffix","VIcon","genPrev","prev","VFadeTransition","start","overflowCheck","onTouchStart","move","onTouchMove","end","onTouchEnd","calculateNewOffset","direction","newAbosluteOffset","scrollTo","_isDestroyed","touchstartX","setProperty","diffX","touchmoveX","diffY","touchmoveY","touchstartY","document","documentElement","overflowY","maxScrollOffset","removeProperty","fn","scrollIntoView","selectedItem","lastItemPosition","wrapperPosition","selectedIndex","requestAnimationFrame","slideGroup","Intersectable","onVisible","Loadable","dirtyTypes","resize","inheritAttrs","appendOuterIcon","autofocus","clearable","clearIcon","counter","counterValue","filled","flat","fullWidth","placeholder","prefix","prependInnerIcon","persistentPlaceholder","reverse","rounded","shaped","singleLine","solo","soloInverted","suffix","badInput","labelWidth","prefixWidth","prependWidth","initialValue","isBooted","isClearing","isSingle","isSolo","isEnclosed","computedColor","Validatable","isFocused","computedCounterValue","toString","hasCounter","hasDetails","get","lazyValue","set","isDirty","isLabelActive","hasLabel","labelPosition","offset","labelValue","showLabel","setLabelWidth","setPrefixWidth","breaking","consoleWarn","$watch","tryAutofocus","isIntersecting","focus","onFocus","input","clearableCallback","genAppendSlot","genSlot","genPrependInnerSlot","genIconSlot","appendIcon","prepend","unshift","genClearIcon","genCounter","maxlength","dark","_this$$scopedSlots$co2","VCounter","genControl","genFieldset","genTextFieldSlot","genProgress","genLegend","validationState","isDisabled","focused","VLabel","span","genInput","listeners","assign","listeners$","change","inputAttrs","title","is","isReadonly","onBlur","onInput","onKeyDown","modifiers","quiet","genMessages","showDetails","messagesNode","counterNode","genAffix","attachedRoot","activeElement","target","validity","hasMouseDown","scrollWidth","offsetWidth","setPrependWidth","updateValue","hasColor","Proxyable","intersect","active","backgroundColor","backgroundOpacity","bufferValue","indeterminate","query","stream","striped","internalLazyValue","isVisible","__cachedBackground","backgroundStyle","__cachedBar","__cachedBarType","__cachedIndeterminate","__cachedDeterminate","__cachedBuffer","normalizedValue","genProgressBar","__cachedStream","normalizedBuffer","parseFloat","opacity","isReversed","fixed","reactive","VSlideXTransition","normalize","genListeners","offsetX","onObserve","entries","observer","VTextField","autoGrow","noResize","rowHeight","isNaN","rows","parseInt","noResizeHandle","calculateInputHeight","_this$$refs$input","scrollHeight","minHeight","VWindow","getValue","item","PickerButton","ampmReadonly","hour","minute","second","period","useSeconds","selecting","genTime","displayedHour","pad","displayedMinute","titleContent","genPickerButton","Hour","Minute","displayedSecond","Second","genAmPm","lang","t","action","dense","hideSelected","Array","itemDisabled","itemText","itemValue","noDataText","noFilter","searchInput","selectedItems","parsedItems","map","tileActiveClass","keys","join","staticNoDataTile","tile","VListItem","genTileContent","genAction","VListItemAction","VSimpleCheckbox","genDivider","VDivider","genFilteredText","escapeHTML","getMaskedCharacters","middle","genHighlight","genHeader","header","toLocaleLowerCase","index","genTile","hasItem","getDisabled","_uid","parent","scopedSlot","needsTile","getText","VListItemContent","VListItemTitle","componentOptions","Ctor","getPropertyFromItem","itemsLength","divider","VList","defaultMenuProps","closeOnClick","closeOnContentClick","disableKeys","openOnClick","maxHeight","Comparable","Dependent","Filterable","ClickOutside","attach","cacheItems","chips","deletableChips","disableLookup","eager","itemColor","menuProps","multiple","openOnClear","returnObject","smallChips","cachedItems","menuIsBooted","isMenuActive","lastItem","keyboardLookupPrefix","keyboardLookupLastTime","allItems","filterDuplicates","concat","hasChips","computedItems","computedOwns","handler","closeConditional","include","getOpenDependentElements","dynamicHeight","hasSlot","selection","listData","scopeId","$vnode","context","$options","_scopeId","virtualizedItems","select","selectItem","scopedSlots","staticList","consoleError","VSelectList","$_menuProps","auto","menuCanShow","normalisedProps","split","isArray","reduce","acc","p","trim","nudgeBottom","offsetY","setSelectedItems","onMenuActiveChange","immediate","setMenuIndex","activateMenu","isInteractive","setValue","getContent","contains","arr","uniqueValues","Map","has","from","values","findExistingIndex","findIndex","valueComparator","menu","genChipSelection","VChip","close","small","onChipInput","JSON","stringify","genCommaSelection","last","selections","genSelections","genHiddenInput","genMenu","cb","extraData","mergeData","getObjectValueByPath","autocomplete","keypress","onKeyPress","genList","genListWithSlot","slots","filter","slotName","activator","VMenu","genSelection","genSlotSelection","selected","getMenuIndex","listIndex","isAppendInner","onEscDown","KEYBOARD_LOOKUP_THRESHOLD","now","performance","toLowerCase","startsWith","getTiles","tab","up","down","home","changeListIndex","space","onUpDown","esc","onTabDown","onSpaceDown","tiles","getAttribute","which","showMoreItems","scrollTop","activeTile","hasClickableTiles","prevTile","nextTile","firstTile","lastTile","splice","updateDimensions","appendInner","VWindowItem","rangeHours24","createRange","rangeHours12am","rangeHours12pm","range60","selectingNames","1","2","3","Picker","allowedHours","allowedMinutes","allowedSeconds","ampmInTitle","inputHour","inputMinute","inputSecond","lazyInputHour","lazyInputMinute","lazyInputSecond","selectingHour","selectingMinute","selectingSecond","isAllowedHourCb","minHour","maxHour","isAllowedMinuteCb","isHourAllowed","minMinute","maxMinute","minTime","maxTime","time","isAllowedSecondCb","isMinuteAllowed","minSecond","maxSecond","isAmPm","setInputData","$on","setPeriod","genValue","emitValue","newHour","firstAllowed","Date","getHours","getMinutes","getSeconds","match","convert12to24","convert24to12","onChange","emitChange","allowedFn","range","first","genClock","VTimePickerClock","size","landscape","genClockAmPm","genPickerBody","genPickerTitle","VTimePickerTitle","genPicker","continuous","showArrowsOnHover","touch","touchless","changedByDelimiters","internalHeight","isReverse","axis","hasActiveItems","internalIndex","oldVal","updateReverse","genContainer","genControlIcons","_this$$scopedSlots$di2","VBtn","large","icons","getNextIndex","nextIndex","getPrevIndex","prevIndex","lastIndex","SSRBootable","callSlider","onRouteChange","newPath","path","oldPath","hasNew","hasOld","alignWithTitle","fixedTabs","grow","hideSlider","iconsAndText","mobileBreakpoint","optional","sliderColor","sliderSize","slider","transitionTime","sliderStyles","appIsDark","activeTab","offsetTop","genBar","VTabsBar","genSlider","genItems","VTabsItems","VTabsSlider","parseNodes"],"mappings":"oHAGA,iEAcMA,EAAaC,eACjBC,OACAC,eAAiB,cAAe,gBAAiB,aAQpCH,SAAWI,SAAkBA,SAE1CA,OAAO,CACPC,KAAM,gBAENC,WAAY,CACVC,cAGFC,MAAO,CACLC,SAAUC,QACVC,kBAAmB,CACjBC,KAAM,CAACF,QAASG,QAChBC,aAASC,GAEXC,WAAY,CACVJ,KAAM,CAACF,QAASG,QAChBC,aAASC,GAEXE,MAAO,CACLC,UAAU,IAIdC,KAtBO,WAuBL,MAAO,CACLC,UAAU,EACVC,cAAc,IAIlBC,SAAU,CACRC,QADQ,WAEN,OAAOC,KAAKC,cAEdC,mBAJQ,WAKN,OAAKF,KAAKG,YAAYC,gBAMmB,qBAA3BJ,KAAKb,kBACfa,KAAKb,mBAAqB,GAC1Ba,KAAKG,YAAYD,mBAPe,qBAApBF,KAAKR,WACfQ,KAAKR,YAAc,GACnBQ,KAAKG,YAAYD,qBAS3BG,QAAS,CACPC,eADO,WAEL,OAAON,KAAKO,OAAOjB,SAErBkB,cAJO,WAKL,OAAOR,KAAKS,eAAe,MAAO,CAChCC,YAAa,gBACbC,MAAOX,KAAKD,QACZjB,WAAY,CAAC,CACXD,KAAM,OACNY,MAAOO,KAAKJ,WAEdgB,GAAIZ,KAAKa,YACRb,KAAKM,mBAEVQ,kBAfO,WAgBAd,KAAKH,eAKVG,KAAKH,cAAe,EAChBG,KAAKG,YAAYY,gBAAkB,IACrCf,KAAKG,YAAYY,kBAGwB,IAArCf,KAAKG,YAAYY,kBACnBf,KAAKG,YAAYa,sBAAmBzB,MAI1C0B,mBA/BO,WAgCDjB,KAAKH,eAKTG,KAAKH,cAAe,EACqB,IAArCG,KAAKG,YAAYY,kBAEnBf,KAAKG,YAAYa,iBAAmBE,eAAclB,KAAKG,YAAYgB,IAAIC,eAEzEpB,KAAKG,YAAYY,oBAEnBM,sBA5CO,WA6CLrB,KAAKc,qBAEPQ,QA/CO,SA+CEC,GAAe,WACjBvB,KAAKH,cAIVG,KAAKwB,WAAU,WAER,EAAKtB,oBAAuB,EAAKL,eAKtC,EAAKM,YAAYa,iBAAmBE,eAAcK,EAAGH,oBAK3DK,OA9GO,SA8GCC,GAAC,WACP,OAAOA,EAAE,aAAc,CACrB1C,MAAO,CACLH,KAAMmB,KAAKE,oBAEbU,GAAI,CAEFe,YAAa3B,KAAKiB,mBAClBW,WAAY5B,KAAKc,kBACjBe,eAAgB7B,KAAKqB,sBAGrBS,YAAa9B,KAAKiB,mBAClBc,WAAY/B,KAAKc,kBACjBkB,eAAgBhC,KAAKqB,sBAGrBY,MAAOjC,KAAKsB,UAEbtB,KAAKkC,iBAAgB,iBAAM,CAAC,EAAK1B,yB,gICvIzB/B,sBAQb0D,OACAC,QAEAxD,OAAO,CACPC,KAAM,sBAENG,MAAO,CACLqD,cAAeC,SACfC,KAAMrD,QACND,SAAUC,QACVsD,OAAQtD,QACRuD,OAAQ,CACNrD,KAAMkD,SACNhD,QAAU,SAAAoD,GAAD,OAA0BA,IAErCC,IAAK,CACHvD,KAAMwD,OACNlD,UAAU,GAEZmD,IAAK,CACHzD,KAAMwD,OACNlD,UAAU,GAEZoD,WAAY5D,QACZ6D,SAAU7D,QACV8D,OAAQ,CACN5D,KAAMwD,OACNtD,QAAS,GAEX2D,KAAM,CACJ7D,KAAMwD,OACNtD,QAAS,GAEXG,MAAOmD,QAGTjD,KAjCO,WAkCL,MAAO,CACLuD,WAAYlD,KAAKP,MACjB0D,YAAY,EACZC,iBAAkB,KAClBC,eAAgB,OAIpBvD,SAAU,CACRwD,MADQ,WAEN,OAAOtD,KAAK2C,IAAM3C,KAAK6C,IAAM,GAE/BU,eAJQ,WAKN,OAAO,IAAMvD,KAAKwD,YAEpBC,QAPQ,WAQN,OAAOzD,KAAKuD,eAAiBG,KAAKC,GAAK,KAEzCC,eAVQ,WAWN,OAAqB,MAAd5D,KAAKP,MAAgBO,KAAK6C,IAAM7C,KAAKP,OAE9CoE,iBAbQ,WAcN,MAAO,KAETL,WAhBQ,WAiBN,OAAOxD,KAAKwC,OAAUxC,KAAKsD,MAAQ,EAAKtD,KAAKsD,QAIjDQ,MAAO,CACLrE,MADK,SACEA,GACLO,KAAKkD,WAAazD,IAItBY,QAAS,CACP0D,MADO,SACAC,GACLA,EAAEC,iBAEF,IAAMC,EAAQR,KAAKS,MAAMH,EAAEI,QAAU,GACjC3E,EAAQO,KAAK4D,eACjB,GACEnE,GAAgByE,EAChBzE,GAASA,EAAQO,KAAK6C,IAAM7C,KAAKsD,OAAStD,KAAKsD,MAAQtD,KAAK6C,WACpD7C,KAAKqE,UAAU5E,IAAUA,IAAUO,KAAK4D,gBAE9CnE,IAAUO,KAAK4D,gBACjB5D,KAAKsE,OAAO7E,IAGhB8E,QAfO,SAeE9E,GACP,OAAOO,KAAKwC,QAAW/C,EAAQO,KAAK6C,KAAO7C,KAAKwD,YAElDgB,UAlBO,SAkBI/E,GACT,OAAOO,KAAKuE,QAAQ9E,GAASO,KAAK6D,iBAAmB,GAEvDQ,UArBO,SAqBI5E,GACT,OAAQO,KAAKqC,eAAiBrC,KAAKqC,cAAc5C,IAEnDgF,UAxBO,WA2BL,IAFA,IAAMC,EAAoB,GAEjBjF,EAAQO,KAAK6C,IAAKpD,GAASO,KAAK2C,IAAKlD,GAAgBO,KAAKiD,KAAM,CACvE,IAAM0B,EAAQlF,IAAUO,KAAKP,QAAUO,KAAK2E,OAAS,UACrDD,EAASE,KAAK5E,KAAKS,eAAe,OAAQT,KAAK6E,mBAAmBF,EAAO,CACvEjE,YAAa,4BACbC,MAAO,CACL,oCAAqClB,IAAUO,KAAK4D,eACpD,sCAAuC5D,KAAKf,WAAae,KAAKqE,UAAU5E,IAE1EqF,MAAO9E,KAAK+E,aAAatF,GACzBuF,SAAU,CAAEC,UAAW,SAAF,OAAWjF,KAAKyC,OAAOhD,GAAvB,gBAIzB,OAAOiF,GAETQ,QA1CO,WA2CL,IAAMC,EAAQ,UAAH,OAAanF,KAAKwE,UAAUxE,KAAK4D,gBAAjC,KACLwB,EAAQpF,KAAKgD,OAAShD,KAAKuD,gBAAkBvD,KAAK4D,eAAiB5D,KAAK6C,KACxE8B,EAAuB,MAAd3E,KAAKP,QAAmBO,KAAK2E,OAAS,UACrD,OAAO3E,KAAKS,eAAe,MAAOT,KAAK6E,mBAAmBF,EAAO,CAC/DjE,YAAa,4BACbC,MAAO,CACL,mCAAoCX,KAAKuE,QAAQvE,KAAKP,QAExDqF,MAAO,CACLO,UAAW,UAAF,OAAYD,EAAZ,gBAAyBD,QAIxCJ,aAxDO,SAwDOO,GACZ,MAAiBtF,KAAKuF,YAAYD,GAA1BE,EAAR,EAAQA,EAAGC,EAAX,EAAWA,EACX,MAAO,CACLC,KAAM,GAAF,OAAK,GAAS,GAAJF,EAAV,KACJG,IAAK,GAAF,OAAK,GAAS,GAAJF,EAAV,OAGPF,YA/DO,SA+DM9F,GACX,IAAMmG,EAAgB5F,KAAKgD,OAASU,KAAKC,GAAK,IAC9C,MAAO,CACL6B,EAAG9B,KAAKmC,KAAKpG,EAAQO,KAAK6C,KAAO7C,KAAKyD,QAAUmC,GAAiB5F,KAAKwE,UAAU/E,GAChFgG,GAAI/B,KAAKoC,KAAKrG,EAAQO,KAAK6C,KAAO7C,KAAKyD,QAAUmC,GAAiB5F,KAAKwE,UAAU/E,KAGrFsG,YAtEO,SAsEM/B,GACXA,EAAEC,iBAEFjE,KAAKoD,iBAAmB,KACxBpD,KAAKqD,eAAiB,KACtBrD,KAAKmD,YAAa,EAClBnD,KAAKgG,WAAWhC,IAElBiC,UA9EO,SA8EIjC,GACTA,EAAEkC,kBAEFlG,KAAKmD,YAAa,EACU,OAAxBnD,KAAKqD,gBAA2BrD,KAAKqE,UAAUrE,KAAKqD,iBACtDrD,KAAKmG,MAAM,SAAUnG,KAAKqD,iBAG9B2C,WAtFO,SAsFKhC,GAEV,GADAA,EAAEC,kBACIjE,KAAKmD,YAAyB,UAAXa,EAAE5E,OAAsBY,KAAKoG,MAAMC,MAY5D,IAVA,IAQI5G,EARJ,EAA6BO,KAAKoG,MAAMC,MAAMC,wBAAtCC,EAAR,EAAQA,MAAOZ,EAAf,EAAeA,IAAKD,EAApB,EAAoBA,KACpB,EAA8B1F,KAAKoG,MAAMI,WAAWF,wBAArCG,EAAf,EAAQF,MACR,GAA6B,YAAavC,EAAIA,EAAE0C,QAAQ,GAAK1C,GAArD2C,EAAR,EAAQA,QAASC,EAAjB,EAAiBA,QACXC,EAAS,CAAErB,EAAGe,EAAQ,EAAGd,GAAIc,EAAQ,GACrCO,EAAS,CAAEtB,EAAGmB,EAAUjB,EAAMD,EAAGE,EAAMiB,GACvCG,EAAYrD,KAAKsD,MAAMhH,KAAKoF,MAAMyB,EAAQC,GAAU9G,KAAKgD,OAAS,KAAO,IACzEiE,EAAcjH,KAAKwC,QAAUxC,KAAKkH,UAAUL,EAAQC,IAAWL,EAAaA,EAAazG,KAAK6D,kBAAoB,EAClHsD,EAAczD,KAAK0D,KAAK,GAAKpH,KAAKuD,gBAG/B+B,EAAI,EAAGA,EAAI6B,EAAa7B,IAAK,CAEpC,GADA7F,EAAQO,KAAKqH,aAAaN,EAAYzB,EAAItF,KAAKuD,eAAgB0D,GAC3DjH,KAAKqE,UAAU5E,GAAQ,OAAOO,KAAKsH,kBAAkB7H,GAGzD,GADAA,EAAQO,KAAKqH,aAAaN,EAAYzB,EAAItF,KAAKuD,eAAgB0D,GAC3DjH,KAAKqE,UAAU5E,GAAQ,OAAOO,KAAKsH,kBAAkB7H,KAG7D4H,aA5GO,SA4GOjC,EAAe6B,GAC3B,IAAMxH,GACJiE,KAAKsD,MAAM5B,EAAQpF,KAAKuD,iBACvB0D,EAAcjH,KAAKwD,WAAa,IAC/BxD,KAAKsD,MAAQtD,KAAK6C,IAGtB,OAAIuC,EAAS,IAAMpF,KAAKuD,eAAiB,EAAW9D,EAE7CwH,EAAcjH,KAAK2C,IAAM3C,KAAKwD,WAAa,EAAIxD,KAAK6C,KAE7DyE,kBAvHO,SAuHY7H,GACa,OAA1BO,KAAKoD,mBACPpD,KAAKoD,iBAAmB3D,GAG1BO,KAAKqD,eAAiB5D,EACtBO,KAAKsE,OAAO7E,IAEd6E,OA/HO,SA+HC7E,GACFO,KAAKkD,aAAezD,IACtBO,KAAKkD,WAAazD,EAClBO,KAAKmG,MAAM,QAAS1G,KAGxByH,UArIO,SAqIIK,EAAWC,GACpB,IAAMC,EAAKD,EAAGhC,EAAI+B,EAAG/B,EACfkC,EAAKF,EAAG/B,EAAI8B,EAAG9B,EAErB,OAAO/B,KAAKiE,KAAKF,EAAKA,EAAKC,EAAKA,IAElCtC,MA3IO,SA2IAyB,EAAeW,GACpB,IAAM/H,EAAQ,EAAIiE,KAAKkE,MAAMJ,EAAG/B,EAAIoB,EAAOpB,EAAIzF,KAAKkH,UAAUL,EAAQW,GAAKA,EAAGhC,EAAIqB,EAAOrB,GACzF,OAAO9B,KAAKmE,IAAY,IAARpI,EAAciE,KAAKC,MAIvClC,OAtNO,SAsNCC,GAAC,WACD/B,EAAkB,CACtBe,YAAa,sBACbC,MAAO,gBACL,qCAAoD,MAAdX,KAAKP,OACxCO,KAAK8H,cAEVlH,GAAKZ,KAAK+C,UAAY/C,KAAKf,cAAYM,EAAY,CACjDwI,UAAW/H,KAAK+F,YAChBiC,QAAShI,KAAKiG,UACdgC,WAAa,SAAAjE,GAAD,OAAoB,EAAKb,YAAc,EAAK8C,UAAUjC,IAClEkE,WAAYlI,KAAK+F,YACjBoC,SAAUnI,KAAKiG,UACfmC,UAAWpI,KAAKgG,WAChBqC,UAAWrI,KAAKgG,YAElBsC,IAAK,SAOP,OAJItI,KAAK8C,YAAcnD,EAAKiB,KAC1BjB,EAAKiB,GAAGmD,MAAQ/D,KAAK+D,OAGhBrC,EAAE,MAAO/B,EAAM,CACpB+B,EAAE,MAAO,CACPhB,YAAa,6BACb4H,IAAK,cACJ,CACDtI,KAAKkF,UACLlF,KAAKyE,oB,oCCrRb,uDAGe8D,e,oLCiBA9J,sBACb+J,OACArG,OACAsG,OACAC,eAAoB,CAClB,WACA,SACA,OACA,QACA,SAGF9J,OAAO,CACPC,KAAM,aAENG,MAAO,CACL2J,IAAKzJ,QACL0J,SAAU1J,QACV2J,aAAc,CACZzJ,KAAMC,OACNC,QAAS,IAEXwJ,UAAW5J,QACX6J,KAAM7J,QACN8J,QAAS,CACP5J,KAAM,CAACwD,OAAQvD,QACfC,QAAS,KAEXE,WAAY,CACVJ,KAAM,CAACF,QAASG,QAChBC,QAAS,qBACT2J,UAAW,SAAAC,GAAC,MAAiB,kBAANA,IAAwB,IAANA,IAE3CC,SAAUjK,SAGZS,KAAM,iBAAO,CACXyJ,eAAgB,IAGlBtJ,SAAU,CACRC,QADQ,WAEN,MAAO,CACL,oBAAqBC,KAAKqJ,SAC1B,kBAAmBrJ,KAAKJ,SACxB,kBAAmBI,KAAKsJ,SAAWtJ,KAAK2F,IACxC,oBAAqB3F,KAAK4I,SAC1B,0BAA2B5I,KAAKuJ,cAChC,gBAAiBvJ,KAAK0F,KACtB,sBAAuB1F,KAAK8I,YAAc9I,KAAKmJ,SAC/C,iBAAkBnJ,KAAKwJ,MACvB,gBAAiBxJ,KAAK+I,KACtB,eAAgB/I,KAAK2F,IACrB,oBAAqB3F,KAAKmJ,WAK9BI,cAlBQ,WAmBN,OACGvJ,KAAK+I,OACL/I,KAAKyJ,UAKVC,OA1BQ,WA2BN,OAAO1J,KAAKuJ,eACPvJ,KAAK2J,MACNvH,OAAUwH,QAAQ9J,SAAS4J,OAAOG,KAAK7J,OAE7C8J,OA/BQ,WAgCN,GAAI9J,KAAKqJ,WAAarJ,KAAK2I,IAAK,MAAO,GAEvC,MAQI3I,KAAK+J,SAASC,YAPhBC,EADF,EACEA,IACAX,EAFF,EAEEA,OACAY,EAHF,EAGEA,OACAC,EAJF,EAIEA,YACAzE,EALF,EAKEA,KACA8D,EANF,EAMEA,MACA7D,EAPF,EAOEA,IAGF,MAAO,CACLyE,cAAelJ,eAAcoI,EAASY,EAASC,GAC/CE,YAAanJ,eAAcwE,GAC3B4E,aAAcpJ,eAAcsI,GAC5Be,WAAYrJ,eAAc+I,EAAMtE,MAKtC7B,MAAO,CACLlE,SAAU,aACVoJ,QAAS,cAGXwB,QAtFO,WAuFDxK,KAAKJ,UAAUI,KAAKyK,cAG1BC,QA1FO,WA4FD1K,KAAK2K,OAAOC,eAAe,gBAC7BC,eAAQ,cAAe7K,MAKL,GAAhBA,KAAKgJ,SACP8B,eAAU,cAAe,KAAM9K,OAInCK,QAAS,CACP0K,WADO,WAEL,OAAO/K,KAAKS,eAAe,MAAO,CAChCC,YAAa,oBACZ,CACDsK,eAAQhL,KAAM,SAAU,CACtBiL,MAAO,CAAEtK,MAAO,qBAItBuK,WAVO,WAWL,OAAOlL,KAAKS,eAAe,MAAO,CAChCC,YAAa,mBACbC,MAAO,kBACJX,KAAK6I,cAAe,GAEvBoC,MAAO,CACLE,KAAM,SACN,YAAa,WAEd,CAACH,eAAQhL,SAEdoL,WAtBO,WAsBG,WACFC,EAAWrL,KAAKuJ,cAClBvJ,KAAK6E,mBACL7E,KAAKsL,aAEH3L,EAAO0L,EAASrL,KAAK2E,MAAO,CAChCjE,YAAa,mBACbC,MAAO6H,OAAOoB,QAAQ9J,SAASC,QAAQ8J,KAAK7J,MAC5C8E,MAAO0D,OAAOoB,QAAQ9J,SAASgK,OAAOD,KAAK7J,MAC3ClB,WAAY,CAAC,CACXD,KAAM,OACNY,MAAOO,KAAKJ,WAEdgB,GAAI,CACF2K,aAAc,kBAAMC,OAAOC,aAAa,EAAKrC,gBAC7CsC,aAAc1L,KAAKyK,cAIvB,OAAOzK,KAAKS,eAAe,MAAOd,EAAM,CACtCK,KAAKkL,aACLlL,KAAK+K,gBAGTY,cA9CO,WA+CL,OAAO3L,KAAKS,eAAe,aAAc,CACvCzB,MAAO,CAAEH,KAAMmB,KAAKR,aACnB,CAACQ,KAAKoL,gBAEXX,WAnDO,WAmDG,WACRe,OAAOC,aAAazL,KAAKoJ,eAEzB,IAAMJ,EAAUpG,OAAO5C,KAAKgJ,SAGzBhJ,KAAKJ,WAEN,CAAC,GAAI,GAAGgM,SAAS5C,KAKnBhJ,KAAKoJ,cAAgBoC,OAAOf,YAAW,WACrC,EAAK7K,UAAW,IACfoJ,MAIPvH,OA7KO,SA6KCC,GACN,OAAOA,EAAE,MAAO,CACdhB,YAAa,UACbC,MAAOX,KAAKD,QACZ+E,MAAO9E,KAAK8J,QACX,EACmB,IAApB9J,KAAKR,WACDQ,KAAK2L,gBACL3L,KAAKoL,mB,oCCrNf,IAAKS,EAAL,2CAAKA,GACHA,sBACAA,0BACAA,0BAHF,CAAKA,MAAc,M,oCCAnB,uDAGeC,e,wHCSTtN,EAAaC,eACjBsN,OACAC,QAIaxN,SAAWI,OAAO,CAC/BC,KAAM,gBAENoN,QAH+B,WAI7B,MAAO,CACLC,WAAYlM,OAIhBhB,MAAO,CACLmN,OAAQ,CACN/M,KAAMF,QACNI,SAAS,GAEX8M,OAAQ,CACNhN,KAAM,CAACwD,OAAQvD,QACfC,QAAS,QAEXT,KAAMQ,OACNgN,IAAKnN,QAILO,MAAO,MAGTK,SAAU,CACRC,QADQ,WAEN,OAAO,iCACFiM,OAAOpC,QAAQ9J,SAASC,QAAQ8J,KAAK7J,OAD1C,IAEE,oDAAoD,EACpD,+BAAgCA,KAAKmM,SAAWnM,KAAKqM,IACrD,4BAA6BrM,KAAKqM,QAKxChM,QAAS,CACPC,eADO,WAEL,OAAON,KAAKS,eAAe,MAAO,CAChCC,YAAa,8BACbuK,MAAO,CACLqB,GAAItM,KAAKsM,GACTnB,KAAM,aACN,kBAAmBnL,KAAKuM,aAEzBP,OAAOpC,QAAQvJ,QAAQC,eAAeuJ,KAAK7J,QAEhDwM,aAXO,WAYL,IAAM/K,EAASuK,OAAOpC,QAAQvJ,QAAQmM,aAAa3C,KAAK7J,MAIxD,cAFOyB,EAAO9B,KAAMiB,GAAI6L,MAEjBhL,GAETiL,SAlBO,WAmBL,IAAMC,EAAQX,OAAOpC,QAAQvJ,QAAQqM,SAAS7C,KAAK7J,MAEnD,OAAK2M,GAELA,EAAMhN,KAAMsL,MAAOqB,GAAKtM,KAAKuM,kBAEtBI,EAAMhN,KAAMsL,MAAO2B,IAC1BD,EAAME,IAAM,SAELF,GAPY,MASrBG,QAASf,OAAcnC,QAAQvJ,QAAQyM,SAGzCrL,OAtE+B,SAsEvBC,GACN,IAAMqL,EAAQf,OAAOpC,QAAQnI,OAAOoI,KAAK7J,KAAM0B,GAI/C,OAFA1B,KAAKgN,GAAGD,EAAMpN,KAAO,MAAOK,KAAKiN,QAE1BF,M,wECtFI3K,cAAUxD,OAAO,CAC9BC,KAAM,mBAENG,MAAO,CAAEkO,KAAMhO,SAEfY,SAAU,CACR4J,OADQ,WAEN,OAAO1J,KAAKkN,KACRlN,KAAKmN,WACL/K,OAAUwH,QAAQ9J,SAAS4J,OAAOG,KAAK7J,QAI/CyB,OAb8B,WAe5B,OACEzB,KAAKO,OAAOjB,SACZU,KAAKO,OAAOjB,QAAS8N,MAAK,SAAAC,GAAI,OAAKA,EAAKC,WAA2B,MAAdD,EAAKtE,Y,uICR1DvK,EAAaC,eACjB8O,OAGA5O,eAAiB,WACjByD,QAUa5D,SAAWI,SAAkBA,SAE1CA,OAAO,CACPC,KAAM,QAENG,MAAO,CACLwO,OAAQ,CACNpO,KAAM,CAACF,QAASuO,QAChBnO,SAAS,IAIbK,KAAM,iBAAO,CACX+N,WAAY,kBAGd5N,SAAU,CACRC,QADQ,WAEN,OAAO,+BACL,SAAS,GACNwN,OAAS3D,QAAQ9J,SAASC,QAAQ8J,KAAK7J,OAF5C,IAGE,kBAAmBA,KAAKf,UACrBe,KAAKC,eAGZR,MATQ,WAUN,IAAIkO,EAAK3N,KAAK2N,IAAM3N,KAAK4N,KAEzB,GAAU,MAAND,EAAY,OAAOA,EAEvB,GAAI3N,KAAK6N,SACP7N,KAAK2N,KAAOF,OAAOzN,KAAK2N,IACxB,CACA,IAAMG,EAAU9N,KAAK6N,QAAQC,QAC3B9N,KAAK2N,GACL3N,KAAK+N,OACL/N,KAAKgO,QAGPL,EAAKG,EAAQF,KAGf,OAAOD,EAAGM,QAAQ,IAAK,MAI3B5N,QAAS,CACPoM,MADO,SACAzI,GAIDhE,KAAKf,SACP+E,EAAEC,kBAOAjE,KAAK4N,MACP5N,KAAK4N,KAAKM,QAAQ,MAAQ,GAC1BlK,EAAEC,iBAEAD,EAAEmK,QAAQnO,KAAKmB,IAAIiN,OAEvBpO,KAAKmG,MAAM,QAASnC,GAEpBhE,KAAK2N,IAAM3N,KAAKqO,WAElBA,OAvBO,WAyBArO,KAAKJ,WAAcI,KAAKsO,QAAQC,WAAcvO,KAAK2N,KACtD3N,KAAKmG,MAAM,YAKjB1E,OA3EO,SA2ECC,GAAC,WACP,EAAsB1B,KAAKwO,oBAAnB3B,EAAR,EAAQA,IAAKlN,EAAb,EAAaA,KAiBb,OAfAA,EAAKsL,MAAL,iCACKtL,EAAKsL,OADV,IAEE,gBAAiB5L,OAAOW,KAAKJ,UAC7BuL,KAAM,MACNsD,SAAU,IAEZ9O,EAAKiB,GAAL,iCACKjB,EAAKiB,IADV,IAEE8N,QAAU,SAAA1K,GACJA,EAAE2K,UAAYC,OAAS3M,OAAO,EAAKwK,MAAMzI,GAE7C,EAAKmC,MAAM,UAAWnC,MAInBtC,EAAEmL,EAAKlN,EAAMK,KAAKO,OAAOjB,a,sPClFpC,SAASuP,EAAMnM,GACb,IAAMoM,EAAI,KACJtJ,EAAI9B,KAAKmE,IAAInF,GACnB,OAAOgB,KAAKS,KAAKzB,IAAQ8C,IAAM,EAAIsJ,EAAI,IAAM,EAAItJ,GAAK,IAGlD,SAAUuJ,EACdC,EACAC,EACAC,EACAC,GAEA,IAAMC,EAAcJ,EAAgBI,YAC9BC,EAAaH,EACdD,EAAOK,QAAUN,EAAgBK,WAAaD,EAC/CJ,EAAgBK,WAEhBH,IACFC,GAAuBA,GAGzB,IAAMI,EAAaN,EAAOO,QAAUL,EAC9BM,EAAaL,EAAcC,EAC3BK,EAAiC,GAAdN,EAQzB,OANIC,GAAcF,EAChBA,EAAsBzL,KAAKf,IAAI0M,EAAaK,EAAkB,GACrDH,GAAcE,IACvBN,EAAsBzL,KAAKb,IAAIsM,GAAuBI,EAAaE,EAAaC,GAAmBT,EAAOK,QAAUL,EAAOO,UAGtHN,GAAOC,EAAsBA,EAGhC,SAAUQ,EACdX,EACAC,EACAC,GAEA,IAAQG,EAA4BL,EAA5BK,WAAYD,EAAgBJ,EAAhBI,YAEpB,GAAIF,EAAK,CACP,IAAMU,EAAiBX,EAAOK,QAAUD,EAAaD,EAAc,EAAIH,EAAOO,QAAU,EACxF,OAAQ9L,KAAKb,IAAIoM,EAAOK,QAAUL,EAAOO,QAAS9L,KAAKf,IAAI,EAAGiN,IAE9D,IAAMA,EAAiBP,EAAaD,EAAc,EAAIH,EAAOO,QAAU,EACvE,OAAO9L,KAAKb,IAAIoM,EAAOK,QAAUL,EAAOO,QAAS9L,KAAKf,IAAI,EAAGiN,IAI1D,IAAMC,EAAiBpR,eAQ5BsN,OACA+D,QAEAlR,OAAO,CACPC,KAAM,mBAENC,WAAY,CACViR,cACAhR,cAGFC,MAAO,CACLgR,YAAa,CACX5Q,KAAMC,OACNC,QAAS,wBAEX2Q,aAAc/Q,QACdgR,SAAU,CACR9Q,KAAMC,OACNC,QAAS,SAEX6Q,SAAU,CACR/Q,KAAMC,OACNC,QAAS,SAEX8Q,WAAY,CACVhR,KAAM,CAACF,QAASG,QAChB4J,UAAW,SAAAC,GAAC,MACG,mBAANA,GAAmB,CACxB,SACA,UACA,UACA0C,SAAS1C,MAKjBvJ,KAAM,iBAAO,CACX0Q,oBAAqB,EACrBC,eAAe,EACfC,cAAe,EACfC,OAAQ,EACRC,qBAAqB,EACrBC,WAAW,EACXC,aAAc,EACd1B,OAAQ,CACNK,QAAS,EACTE,QAAS,KAIb1P,SAAU,CACR8Q,SADQ,WAEN,MAAyB,qBAAXpF,QAEhBqF,aAJQ,WAKN,OAAO7Q,KAAK2L,cAAc,SAE5BmF,aAPQ,WAQN,OAAO9Q,KAAK2L,cAAc,SAE5B5L,QAVQ,WAWN,OAAO,iCACFgM,OAAcnC,QAAQ9J,SAASC,QAAQ8J,KAAK7J,OADjD,IAEE,iBAAiB,EACjB,6BAA8BA,KAAK+Q,WACnC,gCAAiC/Q,KAAKsQ,iBAG1CS,WAlBQ,WAmBN,OAAQ/Q,KAAKoQ,YAEX,IAAK,SAAU,OAAO,EAGtB,IAAK,UAAW,OAAQpQ,KAAKgR,SAI7B,KAAK,EAAM,OAAOhR,KAAKsQ,eAAiB5M,KAAKmE,IAAI7H,KAAK2Q,cAAgB,EAGtE,IAAK,SAAU,OACb3Q,KAAKgR,UACJhR,KAAKsQ,eAAiB5M,KAAKmE,IAAI7H,KAAK2Q,cAAgB,EAMvD,QAAS,OACN3Q,KAAKgR,WACLhR,KAAKsQ,eAAiB5M,KAAKmE,IAAI7H,KAAK2Q,cAAgB,KAI3DM,QA7CQ,WA8CN,IAAKjR,KAAK+Q,WAAY,OAAO,EAE7B,MAA6B/Q,KAAKiP,OAA1BK,EAAR,EAAQA,QAASE,EAAjB,EAAiBA,QAGjB,OAAOF,EAAU5L,KAAKmE,IAAI7H,KAAK2Q,cAAgBnB,GAEjD0B,QArDQ,WAsDN,OAAOlR,KAAK+Q,YAAoC,IAAtB/Q,KAAK2Q,eAInC7M,MAAO,CACLqN,cAAe,YAIfb,cAAe,YACfK,aANK,SAMSjO,GACZ,IAAM0O,EACJ1O,GAAO,EACHmM,GAAMnM,GACNA,EAAM1C,KAAKiP,OAAOK,QAAUtP,KAAKiP,OAAOO,UACpCxP,KAAKiP,OAAOK,QAAUtP,KAAKiP,OAAOO,SAAWX,EAAK7O,KAAKiP,OAAOK,QAAUtP,KAAKiP,OAAOO,QAAU9M,IAC/FA,EAET1C,KAAKoG,MAAMkJ,QAAQxK,MAAMO,UAAzB,qBAAmD+L,EAAnD,SAIJC,aA5HO,WA6HLrR,KAAKqQ,qBAAuBrQ,KAAKsR,WAAa,IAAIC,QAGpDC,QAhIO,WAiIDxR,KAAKqQ,uBAAyBrQ,KAAKsR,WAAa,IAAIC,QACxDvR,KAAKyR,aAGPpR,QAAS,CACPqR,SADO,WAEL1R,KAAKoG,MAAMoJ,QAAQmC,WAAa,GAElCC,UAJO,SAII5N,GACT,GAAKhE,KAAKsQ,cAAV,CADsB,uBAKLuB,eAAa7N,IALR,IAKtB,IAAK,EAAL,qBAAkC,OAAvBzC,EAAuB,yBACfvB,KAAK8R,OADU,IAChC,IAAK,EAAL,qBAA6B,KAAlBC,EAAkB,QAC3B,GAAIA,EAAG5Q,MAAQI,EAOb,YANAvB,KAAK2Q,aAAe5B,EAClBgD,EAAG5Q,IACHnB,KAAKiP,OACLjP,KAAK+J,SAASmF,IACdlP,KAAK2Q,gBAPqB,gCALZ,iCAoBxBqB,QAxBO,WAwBA,WACCC,EAAOjS,KAAKkS,aAAaC,KAC3BnS,KAAKkS,aAAaC,KAAK,IACvBnS,KAAKO,OAAO4R,MAAQnS,KAAK6Q,aAE7B,OAAO7Q,KAAKS,eAAe,MAAO,CAChCC,YAAa,sBACbC,MAAO,CACL,iCAAkCX,KAAKiR,SAEzCrQ,GAAI,CACF6L,MAAO,kBAAM,EAAK2F,aAAa,UAEjCC,IAAK,QACJ,CAACJ,KAEN/G,WAxCO,WAyCL,OAAOlL,KAAKS,eAAe,MAAO,CAChCC,YAAa,yBACb4H,IAAK,UACL1H,GAAI,CACF0R,QAAStS,KAAK4R,YAEf5R,KAAKO,OAAOjB,UAEjBiT,QAjDO,WAkDL,MAAO,CACL5R,MAAOX,KAAKD,QACZjB,WAAY,CAAC,CACXD,KAAM,SACNY,MAAOO,KAAKwS,aAIlBC,QA1DO,SA0DEC,GACP,IAAIC,EAAOD,EAEP1S,KAAK+J,SAASmF,KAAoB,SAAbwD,EACvBC,EAAO,OACE3S,KAAK+J,SAASmF,KAAoB,SAAbwD,IAC9BC,EAAO,QAGT,IAAMC,EAAgB,GAAH,OAAMF,EAAS,GAAGG,eAAlB,OAAkCH,EAASI,MAAM,IAC9DC,EAAY/S,KAAA,aAAmB4S,IAErC,OACG5S,KAAKoQ,YACL2C,EAGI/S,KAAKS,eAAeuS,OAAO,CAChChU,MAAO,CACLC,UAAW8T,IAEX/S,KAAA,UAAgB2S,EAAhB,UANK,MASXM,QAlFO,WAkFA,WACChB,EAAOjS,KAAKkS,aAAagB,KAC3BlT,KAAKkS,aAAagB,KAAK,IACvBlT,KAAKO,OAAO2S,MAAQlT,KAAK8Q,aAE7B,OAAO9Q,KAAKS,eAAe,MAAO,CAChCC,YAAa,sBACbC,MAAO,CACL,iCAAkCX,KAAKkR,SAEzCtQ,GAAI,CACF6L,MAAO,kBAAM,EAAK2F,aAAa,UAEjCC,IAAK,QACJ,CAACJ,KAENtG,cAlGO,SAkGQ+G,GACb,OAAO1S,KAAKS,eAAe0S,OAAiB,CAACnT,KAAKyS,QAAQC,MAE5DtH,WArGO,WAqGG,WACR,OAAOpL,KAAKS,eAAe,MAAO,CAChCC,YAAa,yBACb5B,WAAY,CAAC,CACXD,KAAM,QACNY,MAAO,CACL2T,MAAQ,SAAApP,GAAD,OAAmB,EAAKqP,cAAcrP,EAAG,EAAKsP,eACrDC,KAAO,SAAAvP,GAAD,OAAmB,EAAKqP,cAAcrP,EAAG,EAAKwP,cACpDC,IAAM,SAAAzP,GAAD,OAAmB,EAAKqP,cAAcrP,EAAG,EAAK0P,gBAGvDpL,IAAK,UACL1H,GAAI,CACFwQ,OAAQpR,KAAK0R,WAEd,CAAC1R,KAAKkL,gBAEXyI,mBAtHO,SAsHaC,EAA4B3E,EAAgBC,EAAcC,GAC5E,IAAMhL,EAAO+K,GAAO,EAAI,EAClB2E,EAAoB1P,EAAOgL,GAChB,SAAdyE,GAAwB,EAAI,GAAK3E,EAAOO,QAE3C,OAAOrL,EAAOT,KAAKf,IAAIe,KAAKb,IAAIgR,EAAmB5E,EAAOK,QAAUL,EAAOO,SAAU,IAEvF4C,aA7HO,SA6HOM,GACZ1S,KAAKmG,MAAL,gBAAoBuM,IACpB1S,KAAK8T,SAASpB,IAEhBF,SAjIO,WAmIDxS,KAAK+T,cAET/T,KAAKyR,aAEP6B,aAvIO,SAuIOtP,GACZ,IAAQsL,EAAYtP,KAAKoG,MAAjBkJ,QAERtP,KAAKwQ,OAASxQ,KAAK2Q,aAAe3M,EAAEgQ,YAEpC1E,EAAQxK,MAAMmP,YAAY,aAAc,QACxC3E,EAAQxK,MAAMmP,YAAY,aAAc,cAE1CT,YA/IO,SA+IMxP,GACX,GAAKhE,KAAK4Q,SAAV,CAEA,IAAK5Q,KAAK0Q,UAAW,CAGnB,IAAMwD,EAAQlQ,EAAEmQ,WAAanQ,EAAEgQ,YACzBI,EAAQpQ,EAAEqQ,WAAarQ,EAAEsQ,YAC/BtU,KAAKyQ,oBAAsB/M,KAAKmE,IAAIqM,GAASxQ,KAAKmE,IAAIuM,GACtDpU,KAAK0Q,WAAY,EAGf1Q,KAAKyQ,sBAEPzQ,KAAK2Q,aAAe3Q,KAAKwQ,OAASxM,EAAEmQ,WAEpCI,SAASC,gBAAgB1P,MAAM2P,UAAY,YAG/Cf,WAlKO,WAmKL,GAAK1T,KAAK4Q,SAAV,CAEA,MAA6B5Q,KAAKoG,MAA1BkJ,EAAR,EAAQA,QAASE,EAAjB,EAAiBA,QACXkF,EAAkBpF,EAAQF,YAAcI,EAAQJ,YAEtDE,EAAQxK,MAAMmP,YAAY,aAAc,MACxC3E,EAAQxK,MAAMmP,YAAY,aAAc,MAEpCjU,KAAK+J,SAASmF,IAEZlP,KAAK2Q,aAAe,IAAM3Q,KAAKsQ,cACjCtQ,KAAK2Q,aAAe,EACX3Q,KAAK2Q,eAAiB+D,IAC/B1U,KAAK2Q,cAAgB+D,GAInB1U,KAAK2Q,aAAe,IAAM3Q,KAAKsQ,cACjCtQ,KAAK2Q,aAAe,EACX3Q,KAAK2Q,cAAgB+D,IAC9B1U,KAAK2Q,aAAe+D,GAIxB1U,KAAK0Q,WAAY,EAEjB6D,SAASC,gBAAgB1P,MAAM6P,eAAe,gBAEhDtB,cA/LO,SA+LQrP,EAAe4Q,GAC5B5Q,EAAEkC,kBACFlG,KAAKsQ,eAAiBsE,EAAG5Q,IAE3B6Q,eAnMO,WAoML,IAAK7U,KAAK8U,cAAgB9U,KAAK8R,MAAMP,OAAQ,CAC3C,IAAMwD,EAAmB/U,KAAK8R,MAAM9R,KAAK8R,MAAMP,OAAS,GAAGpQ,IAAImF,wBACzD0O,EAAkBhV,KAAKoG,MAAMoJ,QAAQlJ,yBAGxCtG,KAAK+J,SAASmF,KAAO8F,EAAgBxL,MAAQuL,EAAiBvL,QAC7DxJ,KAAK+J,SAASmF,KAAO8F,EAAgBtP,KAAOqP,EAAiBrP,OAE/D1F,KAAK8T,SAAS,QAIb9T,KAAK8U,eAKe,IAAvB9U,KAAKiV,gBACHjV,KAAKiQ,eAAiBjQ,KAAKsQ,cAE7BtQ,KAAK2Q,aAAe,EACX3Q,KAAKiQ,aACdjQ,KAAK2Q,aAAehB,EAClB3P,KAAK8U,aAAa3T,IAClBnB,KAAKiP,OACLjP,KAAK+J,SAASmF,KAEPlP,KAAKsQ,gBACdtQ,KAAK2Q,aAAe5B,EAClB/O,KAAK8U,aAAa3T,IAClBnB,KAAKiP,OACLjP,KAAK+J,SAASmF,IACdlP,KAAK2Q,iBAIXmD,SAxOO,SAwO8BpB,GACnC1S,KAAK2Q,aAAe3Q,KAAK2T,mBAAmBjB,EAAU,CAEpDpD,QAAStP,KAAKoG,MAAMkJ,QAAUtP,KAAKoG,MAAMkJ,QAAQF,YAAc,EAC/DI,QAASxP,KAAKoG,MAAMoJ,QAAUxP,KAAKoG,MAAMoJ,QAAQJ,YAAc,GAC9DpP,KAAK+J,SAASmF,IAAKlP,KAAK2Q,eAE7Bc,UA/OO,WA+O6B,WAClCjG,OAAO0J,uBAAsB,WAC3B,MAA6B,EAAK9O,MAA1BkJ,EAAR,EAAQA,QAASE,EAAjB,EAAiBA,QAEjB,EAAKP,OAAS,CACZK,QAASA,EAAUA,EAAQF,YAAc,EACzCI,QAASA,EAAUA,EAAQJ,YAAc,GAM3C,EAAKkB,cAAgB,EAAKrB,OAAOO,QAAU,EAAI,EAAKP,OAAOK,QAE3D,EAAKuF,sBAKXpT,OAvYO,SAuYCC,GACN,OAAOA,EAAE,MAAO1B,KAAKuS,UAAW,CAC9BvS,KAAKiT,UACLjT,KAAKoL,aACLpL,KAAKgS,eAKInC,SAAejR,OAAO,CACnCC,KAAM,gBAENoN,QAHmC,WAIjC,MAAO,CACLkJ,WAAYnV,U,wTCleZxB,EAAaC,eACjBuN,OACAoJ,eAAc,CACZC,UAAW,CACT,WACA,kBAGJC,QAYIC,EAAa,CAAC,QAAS,OAAQ,OAAQ,OAAQ,iBAAkB,OAAQ,SAGhE/W,SAAWI,SAAkBA,OAAO,CACjDC,KAAM,eAENC,WAAY,CACV0W,cACAhI,eAGFiI,cAAc,EAEdzW,MAAO,CACL0W,gBAAiBrW,OACjBsW,UAAWzW,QACX0W,UAAW1W,QACX2W,UAAW,CACTzW,KAAMC,OACNC,QAAS,UAEXwW,QAAS,CAAC5W,QAAS0D,OAAQvD,QAC3B0W,aAAczT,SACd0T,OAAQ9W,QACR+W,KAAM/W,QACNgX,UAAWhX,QACXyN,MAAOtN,OACPoK,SAAUvK,QACViX,YAAa9W,OACb+W,OAAQ/W,OACRgX,iBAAkBhX,OAClBiX,sBAAuBpX,QACvBqX,QAASrX,QACTsX,QAAStX,QACTuX,OAAQvX,QACRwX,WAAYxX,QACZyX,KAAMzX,QACN0X,aAAc1X,QACd2X,OAAQxX,OACRD,KAAM,CACJA,KAAMC,OACNC,QAAS,SAIbK,KAAM,iBAAO,CACXmX,UAAU,EACVC,WAAY,EACZC,YAAa,EACbC,aAAc,EACdC,aAAc,KACdC,UAAU,EACVC,YAAY,IAGdtX,SAAU,CACRC,QADQ,WAEN,OAAO,iCACFiM,OAAOpC,QAAQ9J,SAASC,QAAQ8J,KAAK7J,OAD1C,IAEE,gBAAgB,EAChB,2BAA4BA,KAAKkW,UACjC,uBAAwBlW,KAAKoW,OAC7B,4BAA6BpW,KAAKqX,SAClC,qBAAsBrX,KAAKsX,OAC3B,8BAA+BtX,KAAK4W,aACpC,0BAA2B5W,KAAKiW,KAChC,uBAAwBjW,KAAKgW,OAC7B,0BAA2BhW,KAAKmX,SAChC,yBAA0BnX,KAAKuX,WAC/B,wBAAyBvX,KAAKuW,QAC9B,yBAA0BvW,KAAKyJ,SAC/B,4BAA6BzJ,KAAKmW,YAClC,wBAAyBnW,KAAKwW,QAC9B,uBAAwBxW,KAAKyW,UAGjCe,cArBQ,WAsBN,IAAMA,EAAgBC,OAAY7N,QAAQ9J,SAAS0X,cAAc3N,KAAK7J,MAEtE,OAAKA,KAAK4W,cAAiB5W,KAAK0X,UAEzB1X,KAAK2E,OAAS,UAF6B6S,GAIpDG,qBA5BQ,WA6BN,MAAiC,oBAAtB3X,KAAK+V,aACP/V,KAAK+V,aAAa/V,KAAKmR,eAEzB,gBAAKnR,KAAKmR,eAAiB,IAAIyG,YAAYrG,QAEpDsG,WAlCQ,WAmCN,OAAwB,IAAjB7X,KAAK8V,SAAqC,MAAhB9V,KAAK8V,SAExCgC,WArCQ,WAsCN,OAAO9L,OAAOpC,QAAQ9J,SAASgY,WAAWjO,KAAK7J,OAASA,KAAK6X,YAE/D1G,cAAe,CACb4G,IADa,WAEX,OAAO/X,KAAKgY,WAEdC,IAJa,SAIRvV,GACH1C,KAAKgY,UAAYtV,EACjB1C,KAAKmG,MAAM,QAASnG,KAAKgY,aAG7BE,QAjDQ,WAiDD,MACL,OAAO,SAAAlY,KAAKgY,gBAAL,IAAgBJ,WAAWrG,QAAS,GAAKvR,KAAK8W,UAEvDS,WApDQ,WAqDN,OACEvX,KAAKgW,QACLhW,KAAKsX,QACLtX,KAAKyJ,UAGT0O,cA3DQ,WA4DN,OAAOnY,KAAKkY,SAAW3C,EAAW3J,SAAS5L,KAAKZ,OAElDiY,SA9DQ,WA+DN,OACErX,KAAKsX,QACLtX,KAAK0W,YACL1W,KAAKkW,WAEJlW,KAAKgW,SAAWhW,KAAKoY,UAG1Bd,OAvEQ,WAwEN,OAAOtX,KAAK2W,MAAQ3W,KAAK4W,cAE3ByB,cA1EQ,WA2EN,IAAIC,EAAUtY,KAAKoW,SAAWpW,KAAKuY,WAAcvY,KAAKgX,YAAc,EAIpE,OAFIhX,KAAKuY,YAAcvY,KAAKiX,eAAcqB,GAAUtY,KAAKiX,cAEjDjX,KAAK+J,SAASmF,MAAQlP,KAAKuW,QAAW,CAC5C7Q,KAAM4S,EACN9O,MAAO,QACL,CACF9D,KAAM,OACN8D,MAAO8O,IAGXE,UAvFQ,WAwFN,OAAOxY,KAAKoY,YAAcpY,KAAKqX,UAAYrX,KAAKuY,aAElDA,WA1FQ,WA2FN,OAAOvY,KAAK0X,WAAa1X,KAAKmY,eAAiBnY,KAAKsW,wBAIxDxS,MAAO,CAEL2F,SAAU,gBACVkD,MAHK,WAIH3M,KAAKwB,UAAUxB,KAAKyY,gBAEtBrC,OANK,WAOHpW,KAAKwB,UAAUxB,KAAK0Y,iBAEtBhB,UAAW,cACXjY,MAVK,SAUEiD,GACL1C,KAAKgY,UAAYtV,IAIrBgI,QAlKiD,WAoK3C1K,KAAK2K,OAAOC,eAAe,QAC7B+N,eAAS,MAAO,SAAU3Y,MAIxBA,KAAK2K,OAAOC,eAAe,yBAC7B+N,eAAS,uBAAwB,eAAgB3Y,MAI/CA,KAAKyW,UAAYzW,KAAKgW,QAAUhW,KAAKyJ,UAAYzJ,KAAKsX,SACxDsB,eAAY,uDAAwD5Y,OAIxEwK,QAnLiD,WAmL1C,WAELxK,KAAK6Y,QAAO,kBAAM,EAAKN,aAAYvY,KAAKyY,eACxCzY,KAAK2V,WAAa3V,KAAK8Y,eACvB5D,uBAAsB,WACpB,EAAKiC,UAAW,EAChBjC,uBAAsB,WACf,EAAK6D,gBACR,EAAKvG,kBAMbnS,QAAS,CAEP2Y,MAFO,WAGLhZ,KAAKiZ,WAGP7K,KANO,SAMDpK,GAAS,WAGbwH,OAAO0J,uBAAsB,WAC3B,EAAK9O,MAAM8S,OAAS,EAAK9S,MAAM8S,MAAM9K,WAGzC+K,kBAbO,WAaU,WACfnZ,KAAKoG,MAAM8S,OAASlZ,KAAKoG,MAAM8S,MAAMF,QACrChZ,KAAKwB,WAAU,kBAAM,EAAK2P,cAAgB,SAE5CiI,cAjBO,WAkBL,IAAMnH,EAAO,GAQb,OANIjS,KAAKO,OAAO,gBACd0R,EAAKrN,KAAK5E,KAAKO,OAAO,iBACbP,KAAK0V,iBACdzD,EAAKrN,KAAK5E,KAAKyS,QAAQ,gBAGlBzS,KAAKqZ,QAAQ,SAAU,QAASpH,IAEzCqH,oBA5BO,WA6BL,IAAMrH,EAAO,GAQb,OANIjS,KAAKO,OAAO,iBACd0R,EAAKrN,KAAK5E,KAAKO,OAAO,kBACbP,KAAKqW,kBACdpE,EAAKrN,KAAK5E,KAAKyS,QAAQ,iBAGlBzS,KAAKqZ,QAAQ,UAAW,QAASpH,IAE1CsH,YAvCO,WAwCL,IAAMtH,EAAO,GAQb,OANIjS,KAAKO,OAAOyN,OACdiE,EAAKrN,KAAK5E,KAAKO,OAAOyN,QACbhO,KAAKwZ,YACdvH,EAAKrN,KAAK5E,KAAKyS,QAAQ,WAGlBzS,KAAKqZ,QAAQ,SAAU,QAASpH,IAEzCzF,aAlDO,WAmDL,IAAM0M,EAAQlN,OAAOpC,QAAQvJ,QAAQmM,aAAa3C,KAAK7J,MAEjDyZ,EAAUzZ,KAAKsZ,sBAOrB,OALIG,IACFP,EAAMxU,SAAWwU,EAAMxU,UAAY,GACnCwU,EAAMxU,SAASgV,QAAQD,IAGlBP,GAETS,aA9DO,WA+DL,OAAK3Z,KAAK4V,UAIL5V,KAAKkY,QAMHlY,KAAKqZ,QAAQ,SAAU,QAAS,CACrCrZ,KAAKyS,QAAQ,QAASzS,KAAKmZ,qBANpBnZ,KAAKqZ,QAAQ,SAAU,QAAS,CACrCrZ,KAAKS,eAAe,SANI,MAc9BmZ,WA7EO,WA6EG,UACR,IAAK5Z,KAAK6X,WAAY,OAAO,KAE7B,IAAMlV,GAAuB,IAAjB3C,KAAK8V,QAAmB9V,KAAKiN,OAAO4M,UAAY7Z,KAAK8V,QAE3D9W,EAAQ,CACZ8a,KAAM9Z,KAAK8Z,KACXnQ,MAAO3J,KAAK2J,MACZhH,MACAlD,MAAOO,KAAK2X,sBAGd,0BAAO,EAAA3X,KAAKkS,cAAa4D,cAAzB,EAAOiE,SAA4B,CAAE/a,WAArC,EAAiDgB,KAAKS,eAAeuZ,OAAU,CAAEhb,WAEnFib,WA3FO,WA4FL,OAAOjO,OAAOpC,QAAQvJ,QAAQ4Z,WAAWpQ,KAAK7J,OAEhDM,eA9FO,WA+FL,MAAO,CACLN,KAAKka,cACLla,KAAKma,mBACLna,KAAK2Z,eACL3Z,KAAKuZ,cACLvZ,KAAKoa,gBAGTF,YAvGO,WAwGL,OAAKla,KAAKyJ,SAEHzJ,KAAKS,eAAe,WAAY,CACrCwK,MAAO,CACL,eAAe,IAEhB,CAACjL,KAAKqa,cANkB,MAQ7B3N,SAhHO,WAiHL,IAAK1M,KAAKwY,UAAW,OAAO,KAE5B,IAAM7Y,EAAO,CACXX,MAAO,CACLqK,UAAU,EACV1E,MAAO3E,KAAKsa,gBACZR,KAAM9Z,KAAK8Z,KACX7a,SAAUe,KAAKua,WACfC,SAAUxa,KAAKqX,WAAarX,KAAK0X,aAAe1X,KAAKsa,iBACrD1N,IAAK5M,KAAKuM,WACV7G,KAAM1F,KAAKqY,cAAc3S,KACzBiE,MAAO3J,KAAK2J,MACZH,MAAOxJ,KAAKqY,cAAc7O,MAC1B/J,MAAOO,KAAKuY,aAIhB,OAAOvY,KAAKS,eAAega,OAAQ9a,EAAMK,KAAKO,OAAOoM,OAAS3M,KAAK2M,QAErE0N,UApIO,WAqIL,IAAM9T,EAASvG,KAAK0W,aAAe1W,KAAKuY,aAAcvY,KAAKkY,QAA6B,EAAlBlY,KAAK+W,WACrE2D,EAAO1a,KAAKS,eAAe,OAAQ,CACvCuE,SAAU,CAAEC,UAAW,WACvBvE,YAAa,gBAGf,OAAOV,KAAKS,eAAe,SAAU,CACnCqE,MAAO,CACLyB,MAAQvG,KAAKqX,cAAkC9X,EAAvB2B,eAAcqF,KAEvC,CAACmU,KAENC,SAjJO,WAkJL,IAAMC,EAAYnN,OAAOoN,OAAO,GAAI7a,KAAK8a,mBAClCF,EAAUG,OACjB,MAAiC/a,KAAKiN,OAApB+N,GAAlB,EAAQC,MAAR,qBAEA,OAAOjb,KAAKS,eAAe,QAAS,CAClCqE,MAAO,GACPE,SAAU,CACRvF,MAAsB,WAAdO,KAAKZ,MAAqBqO,OAAOyN,GAAGlb,KAAKgY,WAAY,GAAM,KAAOhY,KAAKgY,WAEjF/M,MAAO,iCACF+P,GADA,IAEHrF,UAAW3V,KAAK2V,UAChB1W,SAAUe,KAAKua,WACfjO,GAAItM,KAAKuM,WACT4J,YAAanW,KAAKsW,uBAAyBtW,KAAK0X,YAAc1X,KAAKoY,SAAWpY,KAAKmW,iBAAc5W,EACjGwD,SAAU/C,KAAKmb,WACf/b,KAAMY,KAAKZ,OAEbwB,GAAI6M,OAAOoN,OAAOD,EAAW,CAC3BxM,KAAMpO,KAAKob,OACXlC,MAAOlZ,KAAKqb,QACZrC,MAAOhZ,KAAKiZ,QACZvK,QAAS1O,KAAKsb,YAEhBhT,IAAK,QACLxJ,WAAY,CAAC,CACXD,KAAM,SACN0c,UAAW,CAAEC,OAAO,GACpB/b,MAAOO,KAAKwS,cAIlBiJ,YAlLO,WAmLL,IAAKzb,KAAK0b,YAAa,OAAO,KAE9B,IAAMC,EAAe3P,OAAOpC,QAAQvJ,QAAQob,YAAY5R,KAAK7J,MACvD4b,EAAc5b,KAAK4Z,aAEzB,OAAO5Z,KAAKS,eAAe,MAAO,CAChCC,YAAa,yBACZ,CACDib,EACAC,KAGJzB,iBA/LO,WAgML,OAAOna,KAAKS,eAAe,MAAO,CAChCC,YAAa,sBACZ,CACDV,KAAK0M,WACL1M,KAAKoW,OAASpW,KAAK6b,SAAS,UAAY,KACxC7b,KAAK2a,WACL3a,KAAK6W,OAAS7W,KAAK6b,SAAS,UAAY,QAG5CA,SAzMO,SAyMGzc,GACR,OAAOY,KAAKS,eAAe,MAAO,CAChCE,MAAO,iBAAF,OAAmBvB,GACxBkJ,IAAKlJ,GACJY,KAAKZ,KAEVgc,OA/MO,SA+MCpX,GAAS,WACfhE,KAAK0X,WAAY,EACjB1T,GAAKhE,KAAKwB,WAAU,kBAAM,EAAK2E,MAAM,OAAQnC,OAE/C8I,QAnNO,WAoND9M,KAAK0X,WAAa1X,KAAKua,aAAeva,KAAKoG,MAAM8S,OAErDlZ,KAAKoG,MAAM8S,MAAMF,SAEnBC,QAxNO,SAwNEjV,GACP,GAAKhE,KAAKoG,MAAM8S,MAAhB,CAEA,IAAMhM,EAAO4O,eAAa9b,KAAKmB,KAC/B,GAAK+L,EAEL,OAAIA,EAAK6O,gBAAkB/b,KAAKoG,MAAM8S,MAC7BlZ,KAAKoG,MAAM8S,MAAMF,aAGrBhZ,KAAK0X,YACR1X,KAAK0X,WAAY,EACjB1T,GAAKhE,KAAKmG,MAAM,QAASnC,OAG7BqX,QAvOO,SAuOErX,GACP,IAAMgY,EAAShY,EAAEgY,OACjBhc,KAAKmR,cAAgB6K,EAAOvc,MAC5BO,KAAK8W,SAAWkF,EAAOC,UAAYD,EAAOC,SAASnF,UAErDwE,UA5OO,SA4OItX,GAEPA,EAAE2K,UAAYC,OAAS3M,OACvBjC,KAAKgY,YAAchY,KAAKkX,eAExBlX,KAAKkX,aAAelX,KAAKgY,UACzBhY,KAAKmG,MAAM,SAAUnG,KAAKkX,eAG5BlX,KAAKmG,MAAM,UAAWnC,IAExB+B,YAvPO,SAuPM/B,GAEPA,EAAEgY,SAAWhc,KAAKoG,MAAM8S,QAC1BlV,EAAEC,iBACFD,EAAEkC,mBAGJ8F,OAAOpC,QAAQvJ,QAAQ0F,YAAY8D,KAAK7J,KAAMgE,IAEhDiC,UAhQO,SAgQIjC,GACLhE,KAAKkc,cAAclc,KAAKgZ,QAE5BhN,OAAOpC,QAAQvJ,QAAQ4F,UAAU4D,KAAK7J,KAAMgE,IAE9CyU,cArQO,WAsQAzY,KAAKyJ,WAEVzJ,KAAK+W,WAAa/W,KAAKoG,MAAMuG,MACzBjJ,KAAKb,IAAmC,IAA/B7C,KAAKoG,MAAMuG,MAAMwP,YAAqB,EAAInc,KAAKmB,IAAoBib,YAAc,IAC1F,IAEN1D,eA5QO,WA6QA1Y,KAAKoG,MAAMgQ,SAEhBpW,KAAKgX,YAAchX,KAAKoG,MAAMgQ,OAAOgG,cAEvCC,gBAjRO,WAkRArc,KAAKyJ,UAAazJ,KAAKoG,MAAM,mBAElCpG,KAAKiX,aAAejX,KAAKoG,MAAM,iBAAiBgW,cAElDtD,aAtRO,WAuRL,IACG9Y,KAAK2V,WACc,qBAAbpB,WACNvU,KAAKoG,MAAM8S,MAAO,OAAO,EAE5B,IAAMhM,EAAO4O,eAAa9b,KAAKmB,KAC/B,SAAK+L,GAAQA,EAAK6O,gBAAkB/b,KAAKoG,MAAM8S,SAE/ClZ,KAAKoG,MAAM8S,MAAMF,SAEV,IAETsD,YAnSO,SAmSM5Z,GAEX1C,KAAKuc,SAAW7Z,EAEZA,EACF1C,KAAKkX,aAAelX,KAAKgY,UAChBhY,KAAKkX,eAAiBlX,KAAKgY,WACpChY,KAAKmG,MAAM,SAAUnG,KAAKgY,YAG9BxF,SA7SO,WA8SLxS,KAAKyY,gBACLzY,KAAK0Y,iBACL1Y,KAAKqc,uB,gMC3gBL7d,EAAaC,eACjB0D,OACAuG,eAAoB,CAAC,WAAY,QAAS,MAAO,WACjD8T,OACApa,QAIa5D,SAAWI,OAAO,CAC/BC,KAAM,oBAENC,WAAY,CAAE2d,kBAEdzd,MAAO,CACL0d,OAAQ,CACNtd,KAAMF,QACNI,SAAS,GAEXqd,gBAAiB,CACfvd,KAAMC,OACNC,QAAS,MAEXsd,kBAAmB,CACjBxd,KAAM,CAACwD,OAAQvD,QACfC,QAAS,MAEXud,YAAa,CACXzd,KAAM,CAACwD,OAAQvD,QACfC,QAAS,KAEXqF,MAAO,CACLvF,KAAMC,OACNC,QAAS,WAEX8M,OAAQ,CACNhN,KAAM,CAACwD,OAAQvD,QACfC,QAAS,GAEXwd,cAAe5d,QACf6d,MAAO7d,QACPqX,QAASrX,QACTsX,QAAStX,QACT8d,OAAQ9d,QACR+d,QAAS/d,QACTO,MAAO,CACLL,KAAM,CAACwD,OAAQvD,QACfC,QAAS,IAIbK,KA1C+B,WA2C7B,MAAO,CACLud,kBAAmBld,KAAKP,OAAS,EACjC0d,WAAW,IAIfrd,SAAU,CACRsd,mBADQ,WAEN,OAAOpd,KAAKS,eAAe,MAAOT,KAAK6E,mBAAmB7E,KAAK2c,iBAAmB3c,KAAK2E,MAAO,CAC5FjE,YAAa,gCACboE,MAAO9E,KAAKqd,oBAGhBC,YAPQ,WAQN,OAAOtd,KAAKS,eAAeT,KAAKE,mBAAoB,CAACF,KAAKud,mBAE5DA,gBAVQ,WAWN,OAAOvd,KAAK8c,cAAgB9c,KAAKwd,sBAAwBxd,KAAKyd,qBAEhEC,eAbQ,WAcN,OAAO1d,KAAKS,eAAe,MAAO,CAChCC,YAAa,4BACboE,MAAO9E,KAAK8J,UAGhB2T,oBAnBQ,WAoBN,OAAOzd,KAAKS,eAAe,MAAOT,KAAK6E,mBAAmB7E,KAAK2E,MAAO,CACpEjE,YAAa,iCACboE,MAAO,CACLyB,MAAOrF,eAAclB,KAAK2d,gBAAiB,UAIjDH,sBA3BQ,WA4BN,OAAOxd,KAAKS,eAAe,MAAO,CAChCC,YAAa,mCACbC,MAAO,CACL,2CAA4CX,KAAK0c,SAElD,CACD1c,KAAK4d,eAAe,QACpB5d,KAAK4d,eAAe,YAGxBC,eAtCQ,WAuCN,OAAK7d,KAAKgd,OAEHhd,KAAKS,eAAe,MAAOT,KAAKsL,aAAatL,KAAK2E,MAAO,CAC9DjE,YAAa,4BACboE,MAAO,CACLyB,MAAOrF,eAAc,IAAMlB,KAAK8d,iBAAkB,SAL7B,MAS3BT,gBAhDQ,WAgDO,MACPT,EAA8C,MAA1B5c,KAAK4c,kBAC1B5c,KAAK2c,gBAAkB,EAAI,GAC5BoB,WAAW/d,KAAK4c,mBAEpB,OAAO,EAAP,CACEoB,QAASpB,GADX,iBAEG5c,KAAKie,WAAa,QAAU,OAAS/c,eAAclB,KAAK2d,gBAAiB,MAF5E,yBAGSzc,eAAcwC,KAAKf,IAAI,EAAG3C,KAAK8d,iBAAmB9d,KAAK2d,iBAAkB,MAHlF,GAMF5d,QA3DQ,WA4DN,OAAO,gBACL,8BAA+BC,KAAKqJ,SACpC,2BAA4BrJ,KAAKke,MACjC,2BAA4Ble,KAAK+c,MACjC,8BAA+B/c,KAAKme,SACpC,6BAA8Bne,KAAKie,WACnC,6BAA8Bje,KAAKwW,QACnC,6BAA8BxW,KAAKid,QACnC,6BAA8Bjd,KAAKmd,WAChCnd,KAAK8H,eAGZ5H,mBAxEQ,WAyEN,OAAOF,KAAK8c,cAAgB3J,OAAkBiL,QAEhDH,WA3EQ,WA4EN,OAAOje,KAAK+J,SAASmF,MAAQlP,KAAKuW,SAEpCuH,iBA9EQ,WA+EN,OAAO9d,KAAKqe,UAAUre,KAAK6c,cAE7Bc,gBAjFQ,WAkFN,OAAO3d,KAAKqe,UAAUre,KAAKkd,oBAE7BiB,SApFQ,WAqFN,OAAOjf,QAAQc,KAAKa,WAAWka,SAEjCjR,OAvFQ,WAwFN,IAAMA,EAA8B,GAUpC,OARK9J,KAAK0c,SACR5S,EAAOsC,OAAS,GAGbpM,KAAK8c,eAAuD,MAAtCiB,WAAW/d,KAAK8d,oBACzChU,EAAOvD,MAAQrF,eAAclB,KAAK8d,iBAAkB,MAG/ChU,IAIXzJ,QAAS,CACP6K,WADO,WAEL,IAAM+G,EAAOjH,eAAQhL,KAAM,UAAW,CAAEP,MAAOO,KAAKkd,oBAEpD,OAAKjL,EAEEjS,KAAKS,eAAe,MAAO,CAChCC,YAAa,8BACZuR,GAJe,MAMpBqM,aAVO,WAWL,IAAM1D,EAAY5a,KAAKa,WAMvB,OAJIb,KAAKme,WACPvD,EAAUnO,MAAQzM,KAAK8M,SAGlB8N,GAETgD,eAnBO,SAmBS/e,GACd,OAAOmB,KAAKS,eAAe,MAAOT,KAAK6E,mBAAmB7E,KAAK2E,MAAO,CACpEjE,YAAa,mCACbC,MAAO,kBACJ9B,GAAO,OAIdiO,QA3BO,SA2BE9I,GACP,GAAKhE,KAAKme,SAAV,CAEA,MAAkBne,KAAKmB,IAAImF,wBAAnBC,EAAR,EAAQA,MAERvG,KAAKmR,cAAgBnN,EAAEua,QAAUhY,EAAQ,MAE3CiY,UAlCO,SAkCIC,EAAsCC,EAAgC3F,GAC/E/Y,KAAKmd,UAAYpE,GAEnBsF,UArCO,SAqCI5e,GACT,OAAIA,EAAQ,EAAU,EAClBA,EAAQ,IAAY,IACjBse,WAAWte,KAItBgC,OAnM+B,SAmMvBC,GACN,IAAM/B,EAAO,CACXe,YAAa,oBACbuK,MAAO,CACLE,KAAM,cACN,gBAAiB,EACjB,gBAAiBnL,KAAK8d,iBACtB,gBAAiB9d,KAAK8c,mBAAgBvd,EAAYS,KAAK2d,iBAEzDhd,MAAOX,KAAKD,QACZjB,WAAY,CAAC,CACXD,KAAM,YACNY,MAAOO,KAAKwe,YAEd1Z,MAAO,CACLwE,OAAQtJ,KAAKsJ,OAAS,OAAI/J,EAC1B6M,OAAQpM,KAAK0c,OAASxb,eAAclB,KAAKoM,QAAU,EACnDzG,IAAK3F,KAAK2F,IAAM,OAAIpG,GAEtBqB,GAAIZ,KAAKse,gBAGX,OAAO5c,EAAE,MAAO/B,EAAM,CACpBK,KAAK6d,eACL7d,KAAKod,mBACLpd,KAAK0d,eACL1d,KAAKsd,YACLtd,KAAKkL,mB,oCC/PX,4BAUezM,sBAAO0D,QAAWvD,OAAO,CACtCC,KAAM,gBAEN4C,OAHsC,SAG9BC,GACN,OAAOA,EAAE,MAAO1B,KAAK6E,mBAAmB7E,KAAK2E,MAAO,CAClDjE,YAAa,uB,gGCGblC,EAAaC,eAGjBkgB,QAIangB,SAAWI,OAAO,CAC/BC,KAAM,aAENG,MAAO,CACL4f,SAAU1f,QACV2f,SAAU3f,QACV4f,UAAW,CACT1f,KAAM,CAACwD,OAAQvD,QACfC,QAAS,GACT2J,UAAY,SAAAC,GAAD,OAAa6V,MAAMhB,WAAW7U,MAE3C8V,KAAM,CACJ5f,KAAM,CAACwD,OAAQvD,QACfC,QAAS,EACT2J,UAAY,SAAAC,GAAD,OAAa6V,MAAME,SAAS/V,EAAG,QAI9CpJ,SAAU,CACRC,QADQ,WAEN,OAAO,gBACL,cAAc,EACd,wBAAyBC,KAAK4e,SAC9B,wBAAyB5e,KAAKkf,gBAC3BP,OAAW/U,QAAQ9J,SAASC,QAAQ8J,KAAK7J,QAGhDkf,eATQ,WAUN,OAAOlf,KAAK6e,UAAY7e,KAAK4e,WAIjC9a,MAAO,CACL8a,SADK,SACKlc,GAAY,WACpB1C,KAAKwB,WAAU,WAAK,MAClBkB,EACI,EAAKyc,uBADN,SAEC,EAAK/Y,MAAM8S,QAAXkG,EAAkBta,MAAM6P,eAAe,cAG/CqD,UARK,WASHhY,KAAK4e,UAAY5e,KAAKwB,UAAUxB,KAAKmf,uBAEvCL,UAXK,WAYH9e,KAAK4e,UAAY5e,KAAKwB,UAAUxB,KAAKmf,wBAIzC3U,QAhD+B,WAgDxB,WACLC,YAAW,WACT,EAAKmU,UAAY,EAAKO,yBACrB,IAGL9e,QAAS,CACP8e,qBADO,WAEL,IAAMjG,EAAQlZ,KAAKoG,MAAM8S,MACzB,GAAKA,EAAL,CAEAA,EAAMpU,MAAMsH,OAAS,IACrB,IAAMA,EAAS8M,EAAMmG,aACfC,EAAYL,SAASjf,KAAKgf,KAAM,IAAMjB,WAAW/d,KAAK8e,WAG5D5F,EAAMpU,MAAMsH,OAAS1I,KAAKf,IAAI2c,EAAWlT,GAAU,OAErDuO,SAZO,WAaL,IAAMzB,EAAQyF,OAAW/U,QAAQvJ,QAAQsa,SAAS9Q,KAAK7J,MAMvD,OAJAkZ,EAAMrM,IAAM,kBACLqM,EAAMvZ,KAAMsL,MAAO7L,KAC1B8Z,EAAMvZ,KAAMsL,MAAO+T,KAAOhf,KAAKgf,KAExB9F,GAETmC,QArBO,SAqBErX,GACP2a,OAAW/U,QAAQvJ,QAAQgb,QAAQxR,KAAK7J,KAAMgE,GAC9ChE,KAAK4e,UAAY5e,KAAKmf,wBAExB7D,UAzBO,SAyBItX,GAILhE,KAAK0X,WAA2B,KAAd1T,EAAE2K,SACtB3K,EAAEkC,kBAGJlG,KAAKmG,MAAM,UAAWnC,Q,0ECzGbub,cAAQ3gB,OAAO,CAC5BC,KAAM,eAENG,MAAO,CACLuP,UAAW,CACTnP,KAAMF,QACNI,SAAS,IAIbQ,SAAU,CACRC,QADQ,WAEN,OAAO,iCACFwf,OAAQ3V,QAAQ9J,SAASC,QAAQ8J,KAAK7J,OAD3C,IAEE,gBAAgB,KAGpB0J,OAPQ,WAQN,OAAO1J,KAAKmN,aAIhB9M,QAAS,CACPmf,SADO,SACGC,EAAyBna,GACjC,OAAOma,EAAKnT,IAAMP,OAAcnC,QAAQvJ,QAAQmf,SAAS3V,KAAK7J,KAAMyf,EAAMna,Q,0GCnBjE7G,sBACbihB,QAEA9gB,OAAO,CACPC,KAAM,sBAENG,MAAO,CACLuD,KAAMrD,QACNygB,aAAczgB,QACdD,SAAUC,QACV0gB,KAAMhd,OACNid,OAAQjd,OACRkd,OAAQld,OACRmd,OAAQ,CACN3gB,KAAMC,OACN4J,UAAW,SAAA8W,GAAM,MAAe,OAAXA,GAA8B,OAAXA,IAE1Chd,SAAU7D,QACV8gB,WAAY9gB,QACZ+gB,UAAWrd,QAGbvC,QAAS,CACP6f,QADO,WAEL,IAAIN,EAAO5f,KAAK4f,KACZ5f,KAAKuC,OACPqd,EAAOA,GAASA,EAAO,GAAK,GAAK,EAAK,IAGxC,IAAMO,EAA6B,MAAbngB,KAAK4f,KAAe,KAAO5f,KAAKuC,KAAOlD,OAAOugB,GAAQQ,eAAIR,GAC1ES,EAAiC,MAAfrgB,KAAK6f,OAAiB,KAAOO,eAAIpgB,KAAK6f,QACxDS,EAAe,CACnBtgB,KAAKugB,gBAAgB,YAAa1U,OAAe2U,KAAML,EAAengB,KAAKf,UAC3Ee,KAAKS,eAAe,OAAQ,KAC5BT,KAAKugB,gBAAgB,YAAa1U,OAAe4U,OAAQJ,EAAiBrgB,KAAKf,WAGjF,GAAIe,KAAKggB,WAAY,CACnB,IAAMU,EAAiC,MAAf1gB,KAAK8f,OAAiB,KAAOM,eAAIpgB,KAAK8f,QAC9DQ,EAAa1b,KAAK5E,KAAKS,eAAe,OAAQ,MAC9C6f,EAAa1b,KAAK5E,KAAKugB,gBAAgB,YAAa1U,OAAe8U,OAAQD,EAAiB1gB,KAAKf,WAEnG,OAAOe,KAAKS,eAAe,MAAO,CAChCE,MAAO,6BACN2f,IAELM,QAxBO,WAyBL,OAAO5gB,KAAKS,eAAe,MAAO,CAChCC,YAAa,4BACbC,MAAO,CACL,sCAAuCX,KAAK2f,eAE7C,CACC3f,KAAK2f,cAAgC,OAAhB3f,KAAK+f,OAA0I,KAAvH/f,KAAKugB,gBAAgB,SAAU,KAAMvgB,KAAK+J,SAAS8W,KAAKC,EAAE,0BAA2B9gB,KAAKf,UAAYe,KAAK+C,UACxJ/C,KAAK2f,cAAgC,OAAhB3f,KAAK+f,OAA0I,KAAvH/f,KAAKugB,gBAAgB,SAAU,KAAMvgB,KAAK+J,SAAS8W,KAAKC,EAAE,0BAA2B9gB,KAAKf,UAAYe,KAAK+C,cAKhKtB,OAxDO,SAwDCC,GACN,IAAMgD,EAAW,CAAC1E,KAAKkgB,WAIvB,OAFAlgB,KAAKuC,MAAQmC,EAASE,KAAK5E,KAAK4gB,WAEzBlf,EAAE,MAAO,CACdhB,YAAa,uBACZgE,O,wgBC5CQjG,iBAAO0D,OAAWC,QAAWxD,OAAO,CACjDC,KAAM,gBAGNC,WAAY,CACV0O,eAGFxO,MAAO,CACL+hB,OAAQ7hB,QACR8hB,MAAO9hB,QACP+hB,aAAc/hB,QACd4S,MAAO,CACL1S,KAAM8hB,MACN5hB,QAAS,iBAAM,KAEjB6hB,aAAc,CACZ/hB,KAAM,CAACC,OAAQ6hB,MAAO5e,UACtBhD,QAAS,YAEX8hB,SAAU,CACRhiB,KAAM,CAACC,OAAQ6hB,MAAO5e,UACtBhD,QAAS,QAEX+hB,UAAW,CACTjiB,KAAM,CAACC,OAAQ6hB,MAAO5e,UACtBhD,QAAS,SAEXgiB,WAAYjiB,OACZkiB,SAAUriB,QACVsiB,YAAa,KACbC,cAAe,CACbriB,KAAM8hB,MACN5hB,QAAS,iBAAM,MAInBQ,SAAU,CACR4hB,YADQ,WACG,WACT,OAAO1hB,KAAKyhB,cAAcE,KAAI,SAAAlC,GAAI,OAAI,EAAKD,SAASC,OAEtDmC,gBAJQ,WAKN,OAAOnU,OAAOoU,KAAK7hB,KAAKsL,aAAatL,KAAK2E,OAAOhE,OAAS,IAAImhB,KAAK,MAErEC,iBAPQ,WAQN,IAAMC,EAAO,CACX/W,MAAO,CACLE,UAAM5L,GAERqB,GAAI,CACFmH,UAAY,SAAA/D,GAAD,OAAcA,EAAEC,oBAI/B,OAAOjE,KAAKS,eAAewhB,OAAWD,EAAM,CAC1ChiB,KAAKkiB,eAAeliB,KAAKshB,gBAK/BjhB,QAAS,CACP8hB,UADO,SACI1C,EAAcvc,GAAe,WACtC,OAAOlD,KAAKS,eAAe2hB,OAAiB,CAC1CpiB,KAAKS,eAAe4hB,OAAiB,CACnCrjB,MAAO,CACL2F,MAAO3E,KAAK2E,MACZlF,MAAOyD,EACPsK,QAAQ,GAEV5M,GAAI,CACFsY,MAAO,kBAAM,EAAK/S,MAAM,SAAUsZ,UAK1C6C,WAfO,SAeKtjB,GACV,OAAOgB,KAAKS,eAAe8hB,OAAU,CAAEvjB,WAEzCwjB,gBAlBO,SAkBUzZ,GAGf,GAFAA,EAAOA,GAAQ,IAEV/I,KAAKwhB,aAAexhB,KAAKuhB,SAAU,OAAOkB,eAAW1Z,GAE1D,MAA+B/I,KAAK0iB,oBAAoB3Z,GAAhDqK,EAAR,EAAQA,MAAOuP,EAAf,EAAeA,OAAQlP,EAAvB,EAAuBA,IAEvB,MAAO,GAAP,OAAUgP,eAAWrP,IAArB,OAA8BpT,KAAK4iB,aAAaD,IAAhD,OAA0DF,eAAWhP,KAEvEoP,UA3BO,SA2BI7jB,GACT,OAAOgB,KAAKS,eAAe8H,OAAY,CAAEvJ,SAASA,EAAM8jB,SAE1DF,aA9BO,SA8BO7Z,GACZ,MAAO,mCAAP,OAA0C0Z,eAAW1Z,GAArD,YAEF2Z,oBAjCO,SAiCc3Z,GAKnB,IAAMyY,GAAexhB,KAAKwhB,aAAe,IAAI5J,WAAWmL,oBAClDC,EAAQja,EAAKga,oBAAoB7U,QAAQsT,GAE/C,GAAIwB,EAAQ,EAAG,MAAO,CAAE5P,MAAOrK,EAAM4Z,OAAQ,GAAIlP,IAAK,IAEtD,IAAML,EAAQrK,EAAK+J,MAAM,EAAGkQ,GACtBL,EAAS5Z,EAAK+J,MAAMkQ,EAAOA,EAAQxB,EAAYjQ,QAC/CkC,EAAM1K,EAAK+J,MAAMkQ,EAAQxB,EAAYjQ,QAC3C,MAAO,CAAE6B,QAAOuP,SAAQlP,QAE1BwP,QAhDO,YAqDI,WAJTxD,EAIS,EAJTA,KACAuD,EAGS,EAHTA,MAGS,IAFT/jB,gBAES,MAFE,KAEF,MADTQ,aACS,SACJA,IAAOA,EAAQO,KAAKkjB,QAAQzD,IAE7BA,IAAShS,OAAOgS,KAClBxgB,EAAwB,OAAbA,EACPA,EACAe,KAAKmjB,YAAY1D,IAGvB,IAAMuC,EAAO,CACX/W,MAAO,CAGL,gBAAiB5L,OAAOI,GACxB6M,GAAI,aAAF,OAAetM,KAAKojB,KAApB,YAA4BJ,GAC9B7X,KAAM,UAERvK,GAAI,CACFmH,UAAY,SAAA/D,GAEVA,EAAEC,kBAEJwI,MAAO,kBAAMxN,GAAY,EAAKkH,MAAM,SAAUsZ,KAEhDzgB,MAAO,CACLgR,YAAahQ,KAAK4hB,gBAClB3iB,WACAuO,QAAQ,EACRtK,WAAYzD,IAIhB,IAAKO,KAAKkS,aAAauN,KACrB,OAAOzf,KAAKS,eAAewhB,OAAWD,EAAM,CAC1ChiB,KAAK+gB,SAAW/gB,KAAKihB,cAAgBjhB,KAAK8R,MAAMP,OAAS,EACrDvR,KAAKmiB,UAAU1C,EAAMhgB,GACrB,KACJO,KAAKkiB,eAAezC,EAAMuD,KAI9B,IAAMK,EAASrjB,KACTsjB,EAAatjB,KAAKkS,aAAauN,KAAK,CACxC4D,SACA5D,OACAxU,MAAO,iCACF+W,EAAK/W,OACL+W,EAAKhjB,OAEV4B,GAAIohB,EAAKphB,KAGX,OAAOZ,KAAKujB,UAAUD,GAClBtjB,KAAKS,eAAewhB,OAAWD,EAAMsB,GACrCA,GAENpB,eA7GO,SA6GSzC,GAAoB,IAC5Bxa,EAAYjF,KAAKwiB,gBAAgBxiB,KAAKwjB,QAAQ/D,IAEpD,OAAOzf,KAAKS,eAAegjB,OACzB,CAACzjB,KAAKS,eAAeijB,OAAgB,CACnC1e,SAAU,CAAEC,kBAIlBie,QAtHO,SAsHEzD,GACP,OAAOzf,KAAK0hB,YAAYxT,QAAQlO,KAAKwf,SAASC,KAAU,GAE1D8D,UAzHO,SAyHItR,GACT,OAAwB,IAAjBA,EAAMV,QACkB,MAA7BU,EAAM,GAAG0R,kBACuC,gBAAhD1R,EAAM,GAAG0R,iBAAiBC,KAAKha,QAAQ/K,MAE3CskB,YA9HO,SA8HM1D,GACX,OAAOvgB,QAAQ2kB,eAAoBpE,EAAMzf,KAAKmhB,cAAc,KAE9DqC,QAjIO,SAiIE/D,GACP,OAAOpgB,OAAOwkB,eAAoBpE,EAAMzf,KAAKohB,SAAU3B,KAEzDD,SApIO,SAoIGC,GACR,OAAOoE,eAAoBpE,EAAMzf,KAAKqhB,UAAWrhB,KAAKwjB,QAAQ/D,MAIlEhe,OArMiD,WAwM/C,IAFA,IAAMiD,EAA0B,GAC1Bof,EAAc9jB,KAAK8R,MAAMP,OACtByR,EAAQ,EAAGA,EAAQc,EAAad,IAAS,CAChD,IAAMvD,EAAOzf,KAAK8R,MAAMkR,GAEpBhjB,KAAKihB,cACPjhB,KAAKkjB,QAAQzD,KAGH,MAARA,EAAc/a,EAASE,KAAK5E,KAAKijB,QAAQ,CAAExD,OAAMuD,WAC5CvD,EAAKqD,OAAQpe,EAASE,KAAK5E,KAAK6iB,UAAUpD,IAC1CA,EAAKsE,QAASrf,EAASE,KAAK5E,KAAKsiB,WAAW7C,IAChD/a,EAASE,KAAK5E,KAAKijB,QAAQ,CAAExD,OAAMuD,YAS1C,OANAte,EAAS6M,QAAU7M,EAASE,KAAK5E,KAAKO,OAAO,YAAcP,KAAK+hB,kBAEhE/hB,KAAKO,OAAO,iBAAmBmE,EAASgV,QAAQ1Z,KAAKO,OAAO,iBAE5DP,KAAKO,OAAO,gBAAkBmE,EAASE,KAAK5E,KAAKO,OAAO,gBAEjDP,KAAKS,eAAeujB,OAAO,CAChCtjB,YAAa,gBACbC,MAAOX,KAAK8H,aACZmD,MAAO,CACLE,KAAM,UACNsD,UAAW,GAEbzP,MAAO,CAAEgiB,MAAOhhB,KAAKghB,QACpBtc,M,gGCrOMuf,EAAmB,CAC9BC,cAAc,EACdC,qBAAqB,EACrBC,aAAa,EACbC,aAAa,EACbC,UAAW,KAIP9lB,EAAaC,eACjBkgB,OACA4F,OACAC,OACAC,QAiBajmB,SAAWI,SAAkBA,OAAO,CACjDC,KAAM,WAENC,WAAY,CACV4lB,qBAGF1lB,MAAO,CACLwa,WAAY,CACVpa,KAAMC,OACNC,QAAS,aAEXqlB,OAAQ,CACNvlB,KAAM,KACNE,SAAS,GAEXslB,WAAY1lB,QACZ2lB,MAAO3lB,QACP0W,UAAW1W,QACX4lB,eAAgB5lB,QAChB6lB,cAAe7lB,QACf8lB,MAAO9lB,QACP+hB,aAAc/hB,QACd4S,MAAO,CACL1S,KAAM8hB,MACN5hB,QAAS,iBAAM,KAEjB2lB,UAAW,CACT7lB,KAAMC,OACNC,QAAS,WAEX6hB,aAAc,CACZ/hB,KAAM,CAACC,OAAQ6hB,MAAO5e,UACtBhD,QAAS,YAEX8hB,SAAU,CACRhiB,KAAM,CAACC,OAAQ6hB,MAAO5e,UACtBhD,QAAS,QAEX+hB,UAAW,CACTjiB,KAAM,CAACC,OAAQ6hB,MAAO5e,UACtBhD,QAAS,SAEX4lB,UAAW,CACT9lB,KAAM,CAACC,OAAQ6hB,MAAOzT,QACtBnO,QAAS,kBAAM2kB,IAEjBkB,SAAUjmB,QACVkmB,YAAalmB,QACbmmB,aAAcnmB,QACdomB,WAAYpmB,SAGdS,KArDiD,WAsD/C,MAAO,CACL4lB,YAAavlB,KAAK4kB,WAAa5kB,KAAK8R,MAAQ,GAC5C0T,cAAc,EACdC,cAAc,EACdC,SAAU,GAIV1N,eAA0BzY,IAAfS,KAAKP,MACZO,KAAKP,MACLO,KAAKmlB,SAAW,QAAK5lB,EACzB0V,eAAgB,EAChBwM,cAAe,GACfkE,qBAAsB,GACtBC,uBAAwB,IAI5B9lB,SAAU,CAER+lB,SAFQ,WAGN,OAAO7lB,KAAK8lB,iBAAiB9lB,KAAKulB,YAAYQ,OAAO/lB,KAAK8R,SAE5D/R,QALQ,WAMN,OAAO,iCACF4e,OAAW/U,QAAQ9J,SAASC,QAAQ8J,KAAK7J,OAD9C,IAEE,YAAY,EACZ,kBAAmBA,KAAKgmB,SACxB,yBAA0BhmB,KAAKslB,WAC/B,2BAA4BtlB,KAAKylB,aACjC,qBAAsBzlB,KAAKmlB,YAI/Bc,cAhBQ,WAiBN,OAAOjmB,KAAK6lB,UAEdK,aAnBQ,WAoBN,MAAO,QAAP,OAAelmB,KAAKojB,OAEtBzL,qBAtBQ,WAuBN,IAAMlY,EAAQO,KAAKmlB,SACfnlB,KAAKyhB,eACJzhB,KAAKwjB,QAAQxjB,KAAKyhB,cAAc,KAAO,IAAI7J,WAEhD,MAAiC,oBAAtB5X,KAAK+V,aACP/V,KAAK+V,aAAatW,GAGpBA,EAAM8R,QAEfzS,WAjCQ,WAiCE,WACR,OAAOkB,KAAK0X,UAAY,CAAC,CACvB7Y,KAAM,gBACNY,MAAO,CACL0mB,QAASnmB,KAAKoO,KACdgY,iBAAkBpmB,KAAKomB,iBACvBC,QAAS,kBAAM,EAAKC,oCAEnB/mB,GAEPgnB,cA3CQ,WA4CN,MAAO,QAETP,SA9CQ,WA+CN,OAAOhmB,KAAK6kB,OAAS7kB,KAAKslB,YAE5BkB,QAjDQ,WAkDN,OAAOtnB,QAAQc,KAAKgmB,UAAYhmB,KAAKkS,aAAauU,YAEpDvO,QApDQ,WAqDN,OAAOlY,KAAKyhB,cAAclQ,OAAS,GAErCmV,SAvDQ,WAwDN,IAAMC,EAAU3mB,KAAK4mB,QAAW5mB,KAAK4mB,OAAOC,QAASC,SAAoCC,SACnF9b,EAAQ0b,EAAU,kBACrBA,GAAU,GACT,GAEJ,MAAO,CACL1b,MAAO,iCACFA,GADA,IAEHqB,GAAItM,KAAKkmB,eAEXlnB,MAAO,CACL+hB,OAAQ/gB,KAAKmlB,SACbxgB,MAAO3E,KAAKilB,UACZjE,MAAOhhB,KAAKghB,MACZC,aAAcjhB,KAAKihB,aACnBnP,MAAO9R,KAAKgnB,iBACZ7F,aAAcnhB,KAAKmhB,aACnBC,SAAUphB,KAAKohB,SACfC,UAAWrhB,KAAKqhB,UAChBC,WAAYthB,KAAK+J,SAAS8W,KAAKC,EAAE9gB,KAAKshB,YACtCG,cAAezhB,KAAKyhB,eAEtB7gB,GAAI,CACFqmB,OAAQjnB,KAAKknB,YAEfC,YAAa,CACX1H,KAAMzf,KAAKkS,aAAauN,QAI9B2H,WAtFQ,WA2FN,OAJIpnB,KAAKO,OAAO,YAAcP,KAAKO,OAAO,iBAAmBP,KAAKO,OAAO,iBACvE8mB,eAAa,6DAGRrnB,KAAKS,eAAe6mB,EAAatnB,KAAK0mB,WAE/CM,iBA7FQ,WA8FN,OAAQhnB,KAAKunB,YAAoBC,KAC7BxnB,KAAKimB,cACLjmB,KAAKimB,cAAcnT,MAAM,EAAG9S,KAAK0lB,WAEvC+B,YAAa,kBAAM,GACnBF,YAnGQ,WAoGN,IAAIG,EAA4C,kBAAnB1nB,KAAKklB,UAC9BllB,KAAKklB,UAAUyC,MAAM,KACrB3nB,KAAKklB,UAST,OAPIhE,MAAM0G,QAAQF,KAChBA,EAAkBA,EAAgBG,QAAO,SAACC,EAAKC,GAE7C,OADAD,EAAIC,EAAEC,SAAU,EACTF,IACN,KAGE,iCACF7D,GADL,IAEEe,MAAOhlB,KAAKglB,MACZvlB,MAAOO,KAAKynB,aAAeznB,KAAKylB,aAChCwC,YAAaP,EAAgBQ,QAAU,EAAI,GACxCR,KAKT5jB,MAAO,CACLqN,cADK,SACUzO,GACb1C,KAAKkX,aAAexU,EACpB1C,KAAKmoB,oBAEP1C,aALK,SAKS/iB,GAAG,WACf8I,OAAOf,YAAW,kBAAM,EAAK2d,mBAAmB1lB,OAElDoP,MAAO,CACLuW,WAAW,EACXlC,QAFK,SAEIzjB,GAAG,WACN1C,KAAK4kB,YAIP5kB,KAAKwB,WAAU,WACb,EAAK+jB,YAAc,EAAKO,iBAAiB,EAAKP,YAAYQ,OAAOrjB,OAIrE1C,KAAKmoB,sBAKX9nB,QAAS,CAEP+N,KAFO,SAEDpK,GACJ2a,OAAW/U,QAAQvJ,QAAQ+N,KAAKvE,KAAK7J,KAAMgE,GAC3ChE,KAAKylB,cAAe,EACpBzlB,KAAK0X,WAAY,EACjB1X,KAAKiV,eAAiB,EACtBjV,KAAKsoB,cAAc,IAGrBC,aAVO,WAYFvoB,KAAKwoB,gBACNxoB,KAAKylB,eAGPzlB,KAAKylB,cAAe,IAEtBtM,kBAlBO,WAkBU,WACfnZ,KAAKyoB,SAASzoB,KAAKmlB,SAAW,GAAK,MACnCnlB,KAAKsoB,cAAc,GACnBtoB,KAAKwB,WAAU,kBAAM,EAAK4E,MAAM8S,OAAS,EAAK9S,MAAM8S,MAAMF,WAEtDhZ,KAAKolB,cAAaplB,KAAKylB,cAAe,IAE5CW,iBAzBO,SAyBWpiB,GAChB,OAAKhE,KAAKylB,eAGPzlB,KAAK+T,gBAIJ/T,KAAK0oB,eACN1oB,KAAK0oB,aAAaC,SAAS3kB,EAAEgY,UAG9Bhc,KAAKmB,MACJnB,KAAKmB,IAAIwnB,SAAS3kB,EAAEgY,SACrBhY,EAAEgY,SAAWhc,KAAKmB,KAGtB2kB,iBA1CO,SA0CW8C,GAEhB,IADA,IAAMC,EAAe,IAAIC,IAChB9F,EAAQ,EAAGA,EAAQ4F,EAAIrX,SAAUyR,EAAO,CAC/C,IAAMvD,EAAOmJ,EAAI5F,GAGjB,GAAIvD,EAAKqD,QAAUrD,EAAKsE,QACtB8E,EAAa5Q,IAAIwH,EAAMA,OADzB,CAKA,IAAM/c,EAAM1C,KAAKwf,SAASC,IAGzBoJ,EAAaE,IAAIrmB,IAAQmmB,EAAa5Q,IAAIvV,EAAK+c,IAElD,OAAOyB,MAAM8H,KAAKH,EAAaI,WAEjCC,kBA5DO,SA4DYzJ,GAAY,WACvB4B,EAAYrhB,KAAKwf,SAASC,GAEhC,OAAQzf,KAAKmR,eAAiB,IAAIgY,WAAW,SAAA7jB,GAAD,OAAe,EAAK8jB,gBAAgB,EAAK5J,SAASla,GAAI+b,OAEpGqH,WAjEO,WAkEL,OAAO1oB,KAAKoG,MAAMijB,MAAQrpB,KAAKoG,MAAMijB,KAAKjjB,MAAMkJ,SAElDga,iBApEO,SAoEW7J,EAAcuD,GAAa,WACrCzI,EACJva,KAAKua,YACLva,KAAKmjB,YAAY1D,GAEb+I,GAAiBjO,GAAcva,KAAKwoB,cAE1C,OAAOxoB,KAAKS,eAAe8oB,OAAO,CAChC7oB,YAAa,iBACbuK,MAAO,CAAEwD,UAAW,GACpBzP,MAAO,CACLwqB,MAAOxpB,KAAK8kB,gBAAkB0D,EAC9BvpB,SAAUsb,EACVrX,WAAY8f,IAAUhjB,KAAKiV,cAC3BwU,MAAOzpB,KAAKslB,YAEd1kB,GAAI,CACF6L,MAAQ,SAAAzI,GACDwkB,IAELxkB,EAAEkC,kBAEF,EAAK+O,cAAgB+N,IAEvB,cAAe,kBAAM,EAAK0G,YAAYjK,KAExCpN,IAAKsX,KAAKC,UAAU5pB,KAAKwf,SAASC,KACjCzf,KAAKwjB,QAAQ/D,KAElBoK,kBAjGO,SAiGYpK,EAAcuD,EAAe8G,GAC9C,IAAMnlB,EAAQqe,IAAUhjB,KAAKiV,eAAiBjV,KAAKwX,cAC7C+C,EACJva,KAAKua,YACLva,KAAKmjB,YAAY1D,GAGnB,OAAOzf,KAAKS,eAAe,MAAOT,KAAKsL,aAAa3G,EAAO,CACzDjE,YAAa,iDACbC,MAAO,CACL,gCAAiC4Z,GAEnClI,IAAKsX,KAAKC,UAAU5pB,KAAKwf,SAASC,MAL7B,UAMAzf,KAAKwjB,QAAQ/D,IANb,OAMqBqK,EAAO,GAAK,QAE1CxpB,eAhHO,WAiHL,IAAMypB,EAAa/pB,KAAKgqB,gBAClB9Q,EAAQlZ,KAAK2a,WAYnB,OARIuG,MAAM0G,QAAQmC,GAChBA,EAAWnlB,KAAKsU,IAGhB6Q,EAAWrlB,SAAWqlB,EAAWrlB,UAAY,GAC7CqlB,EAAWrlB,SAASE,KAAKsU,IAGpB,CACLlZ,KAAKka,cACLla,KAAKS,eAAe,MAAO,CACzBC,YAAa,iBACb5B,WAAYkB,KAAKlB,YAChB,CACDkB,KAAK0M,WACL1M,KAAKoW,OAASpW,KAAK6b,SAAS,UAAY,KACxCkO,EACA/pB,KAAK6W,OAAS7W,KAAK6b,SAAS,UAAY,KACxC7b,KAAK2Z,eACL3Z,KAAKuZ,cACLvZ,KAAKiqB,mBAEPjqB,KAAKkqB,UACLlqB,KAAKoa,gBAGT3H,QAhJO,SAiJLrT,EACA+qB,EACAC,GAEA,IAAMzX,EAAO3G,OAAOpC,QAAQvJ,QAAQoS,QAAQ5I,KAAK7J,KAAMZ,EAAM+qB,EAAIC,GAajE,MAXa,WAAThrB,IAEFuT,EAAKjO,SAAU,GAAG/E,KAAO0qB,eAAU1X,EAAKjO,SAAU,GAAG/E,KAAO,CAC1DsL,MAAO,CACLwD,SAAUkE,EAAKjO,SAAU,GAAGif,iBAAkB/I,WAAa,KAC3D,cAAe,OACf,kBAAcrb,MAKboT,GAETgI,SApKO,WAqKL,IAAMzB,EAAQyF,OAAW/U,QAAQvJ,QAAQsa,SAAS9Q,KAAK7J,MAiBvD,cAfOkZ,EAAMvZ,KAAMsL,MAAOpM,KAE1Bqa,EAAMvZ,KAAO0qB,eAAUnR,EAAMvZ,KAAO,CAClCqF,SAAU,CAAEvF,MAAO,MACnBwL,MAAO,CACLlI,UAAU,EACV3D,KAAM,OACN,gBAAiBC,OAAOW,KAAKmb,YAC7B,wBAAyBmP,eAAqBtqB,KAAKoG,MAAMijB,KAAM,iBAC/DkB,aAAcD,eAAqBpR,EAAMvZ,KAAO,qBAAsB,OACtEwW,YAAenW,KAAKkY,UAAYlY,KAAKsW,wBAAyBtW,KAAK0X,WAAc1X,KAAKoY,cAAgC7Y,EAAnBS,KAAKmW,aAE1GvV,GAAI,CAAE4pB,SAAUxqB,KAAKyqB,cAGhBvR,GAET+Q,eAxLO,WAyLL,OAAOjqB,KAAKS,eAAe,QAAS,CAClCuE,SAAU,CAAEvF,MAAOO,KAAKgY,WACxB/M,MAAO,CACL7L,KAAM,SACNP,KAAMmB,KAAKiN,OAAOpO,SAIxB2N,aAjMO,WAkML,IAAM/K,EAASkd,OAAW/U,QAAQvJ,QAAQmM,aAAa3C,KAAK7J,MAU5D,OARAyB,EAAO9B,KAAMsL,MAAb,iCACKxJ,EAAO9B,KAAMsL,OADlB,IAEEE,KAAM,SACN,gBAAiB,UACjB,gBAAiB9L,OAAOW,KAAKylB,cAC7B,YAAazlB,KAAKkmB,eAGbzkB,GAETipB,QA9MO,WAgNL,OAAI1qB,KAAKO,OAAO,YAAcP,KAAKO,OAAO,iBAAmBP,KAAKO,OAAO,eAChEP,KAAK2qB,kBAEL3qB,KAAKonB,YAGhBuD,gBAtNO,WAsNQ,WACPC,EAAQ,CAAC,eAAgB,UAAW,eACvCC,QAAO,SAAAC,GAAQ,OAAI,EAAKvqB,OAAOuqB,MAC/BnJ,KAAI,SAAAmJ,GAAQ,OAAI,EAAKrqB,eAAe,WAAY,CAC/CwR,KAAM6Y,GACL,EAAKvqB,OAAOuqB,OAIjB,OAAO9qB,KAAKS,eAAe6mB,EAApB,kBACFtnB,KAAK0mB,UACPkE,IAELV,QAnOO,WAmOA,WACClrB,EAAQgB,KAAKunB,YAgBnB,OAfAvoB,EAAM+rB,UAAY/qB,KAAKoG,MAAM,cAMX,KAAhBpG,KAAK2kB,SACW,IAAhB3kB,KAAK2kB,QACW,WAAhB3kB,KAAK2kB,OAEL3lB,EAAM2lB,OAAS3kB,KAAKmB,IAEpBnC,EAAM2lB,OAAS3kB,KAAK2kB,OAGf3kB,KAAKS,eAAeuqB,OAAO,CAChC/f,MAAO,CAAEE,UAAM5L,GACfP,QACA4B,GAAI,CACFsY,MAAQ,SAAAxW,GACN,EAAK+iB,aAAe/iB,EACpB,EAAKgV,UAAYhV,GAEnB0O,OAAQpR,KAAK0R,UAEfpJ,IAAK,QACJ,CAACtI,KAAK0qB,aAEXV,cAjQO,WAkQL,IAGIiB,EAHA1Z,EAASvR,KAAKyhB,cAAclQ,OAC1B7M,EAAW,IAAIwc,MAAM3P,GAIzB0Z,EADEjrB,KAAKkS,aAAauU,UACLzmB,KAAKkrB,iBACXlrB,KAAKgmB,SACChmB,KAAKspB,iBAELtpB,KAAK6pB,kBAGtB,MAAOtY,IACL7M,EAAS6M,GAAU0Z,EACjBjrB,KAAKyhB,cAAclQ,GACnBA,EACAA,IAAW7M,EAAS6M,OAAS,GAIjC,OAAOvR,KAAKS,eAAe,MAAO,CAChCC,YAAa,wBACZgE,IAELwmB,iBA1RO,SA0RWzL,EAAcuD,GAAa,WAC3C,OAAOhjB,KAAKkS,aAAauU,UAAW,CAClCxb,MAAO,CACLtK,MAAO,kBAET0iB,OAAQrjB,KACRyf,OACAuD,QACAiE,OAAS,SAAAjjB,GACPA,EAAEkC,kBACF,EAAK+O,cAAgB+N,GAEvBmI,SAAUnI,IAAUhjB,KAAKiV,cACzBhW,UAAWe,KAAKwoB,iBAGpB4C,aA1SO,WA2SL,OAAOprB,KAAKoG,MAAMijB,KAAQrpB,KAAKoG,MAAMijB,KAAgCgC,WAAa,GAEpFlI,YA7SO,SA6SM1D,GACX,OAAOoE,eAAoBpE,EAAMzf,KAAKmhB,cAAc,IAEtDqC,QAhTO,SAgTE/D,GACP,OAAOoE,eAAoBpE,EAAMzf,KAAKohB,SAAU3B,IAElDD,SAnTO,SAmTGC,GACR,OAAOoE,eAAoBpE,EAAMzf,KAAKqhB,UAAWrhB,KAAKwjB,QAAQ/D,KAEhErE,OAtTO,SAsTCpX,GACNA,GAAKhE,KAAKmG,MAAM,OAAQnC,IAE1B0lB,YAzTO,SAyTMjK,GACPzf,KAAKmlB,SAAUnlB,KAAKknB,WAAWzH,GAC9Bzf,KAAKyoB,SAAS,MAGe,IAA9BzoB,KAAKyhB,cAAclQ,OACrBvR,KAAKylB,cAAe,EAEpBzlB,KAAKylB,cAAe,EAEtBzlB,KAAKiV,eAAiB,GAExBnI,QArUO,SAqUE9I,GACFhE,KAAKwoB,gBAELxoB,KAAKsrB,cAActnB,EAAEgY,UACxBhc,KAAKylB,cAAe,GAGjBzlB,KAAK0X,YACR1X,KAAK0X,WAAY,EACjB1X,KAAKmG,MAAM,UAGbnG,KAAKmG,MAAM,QAASnC,KAEtBunB,UAnVO,SAmVIvnB,GACTA,EAAEC,iBACEjE,KAAKylB,eACPzhB,EAAEkC,kBACFlG,KAAKylB,cAAe,IAGxBgF,WA1VO,SA0VKzmB,GAAgB,WAC1B,IACEhE,KAAKmlB,UACJnlB,KAAKwoB,gBACNxoB,KAAK+kB,cAHP,CAMA,IAAMyG,EAA4B,IAC5BC,EAAMC,YAAYD,MACpBA,EAAMzrB,KAAK4lB,uBAAyB4F,IACtCxrB,KAAK2lB,qBAAuB,IAE9B3lB,KAAK2lB,sBAAwB3hB,EAAEqO,IAAIsZ,cACnC3rB,KAAK4lB,uBAAyB6F,EAE9B,IAAMzI,EAAQhjB,KAAK6lB,SAASsD,WAAU,SAAA1J,GACpC,IAAM1W,GAAQ,EAAKya,QAAQ/D,IAAS,IAAI7H,WAExC,OAAO7O,EAAK4iB,cAAcC,WAAW,EAAKjG,yBAEtClG,EAAOzf,KAAK6lB,SAAS7C,IACZ,IAAXA,IACFhjB,KAAK0lB,SAAWhiB,KAAKf,IAAI3C,KAAK0lB,SAAU1C,EAAQ,GAChDhjB,KAAKyoB,SAASzoB,KAAKqlB,aAAe5F,EAAOzf,KAAKwf,SAASC,IACvDzf,KAAKwB,WAAU,kBAAM,EAAK4E,MAAMijB,KAAKwC,cACrCphB,YAAW,kBAAM,EAAK6d,aAAatF,SAGvC1H,UAtXO,SAsXItX,GAAgB,WACzB,IAAIhE,KAAKmb,YAAcnX,EAAE2K,UAAYC,OAASkd,IAA9C,CAEA,IAAMnd,EAAU3K,EAAE2K,QACZ0a,EAAOrpB,KAAKoG,MAAMijB,KAIxB,GAFArpB,KAAKmG,MAAM,UAAWnC,GAEjBqlB,EAqBL,OAjBIrpB,KAAKylB,cAAgB,CAAC7W,OAASmd,GAAInd,OAASod,KAAMpd,OAASqd,KAAMrd,OAAS6E,IAAK7E,OAAS3M,OAAO2J,SAAS+C,IAC1G3O,KAAKwB,WAAU,WACb6nB,EAAK6C,gBAAgBloB,GACrB,EAAKmC,MAAM,oBAAqBkjB,EAAKgC,cAKrC,CACFzc,OAAS3M,MACT2M,OAASud,OACTvgB,SAAS+C,IAAU3O,KAAKuoB,gBAOvBvoB,KAAKylB,cACN,CAAC7W,OAASmd,GAAInd,OAASod,KAAMpd,OAASqd,KAAMrd,OAAS6E,KAAK7H,SAAS+C,GAC5D3O,KAAKosB,SAASpoB,GAGnB2K,IAAYC,OAASyd,IAAYrsB,KAAKurB,UAAUvnB,GAGhD2K,IAAYC,OAASkd,IAAY9rB,KAAKssB,UAAUtoB,GAGhD2K,IAAYC,OAASud,MAAcnsB,KAAKusB,YAAYvoB,QAAxD,IAEFokB,mBAjaO,SAiaa1lB,GAIlB,KACG1C,KAAKmlB,WAAaziB,GACnB1C,KAAKorB,gBAAkB,GAFzB,CAKA,IAAM/B,EAAOrpB,KAAKoG,MAAMijB,KAExB,GAAKA,GAASrpB,KAAKkY,QAAnB,CAGAlY,KAAKoG,MAAMijB,KAAKwC,WAChB,IAAK,IAAIvmB,EAAI,EAAGA,EAAI+jB,EAAKmD,MAAMjb,OAAQjM,IACrC,GAAoD,SAAhD+jB,EAAKmD,MAAMlnB,GAAGmnB,aAAa,iBAA6B,CAC1DzsB,KAAKsoB,aAAahjB,GAClB,UAINW,UAvbO,SAubIjC,GAAa,WAGpBhE,KAAKkc,cACO,IAAZlY,EAAE0oB,OACF1sB,KAAKwoB,eAKDxoB,KAAKsrB,cAActnB,EAAEgY,SACvBhc,KAAKwB,WAAU,kBAAO,EAAKikB,cAAgB,EAAKA,gBAIpD9G,OAAW/U,QAAQvJ,QAAQ4F,UAAU4D,KAAK7J,KAAMgE,IAElD0N,SAxcO,WAwcC,WACN,GAAK1R,KAAKylB,aAEH,CACL,GAAIzlB,KAAK0lB,SAAW1lB,KAAKimB,cAAc1U,OAAQ,OAE/C,IAAMob,EACJ3sB,KAAK0oB,aAAarJ,cACjBrf,KAAK0oB,aAAakE,UACnB5sB,KAAK0oB,aAAatnB,cAChB,IAEAurB,IACF3sB,KAAK0lB,UAAY,SAXnBxQ,uBAAsB,kBAAO,EAAKwT,aAAakE,UAAY,MAe/DL,YAzdO,SAydMvoB,GACXA,EAAEC,kBAEJqoB,UA5dO,SA4dItoB,GACT,IAAMqlB,EAAOrpB,KAAKoG,MAAMijB,KAExB,GAAKA,EAAL,CAEA,IAAMwD,EAAaxD,EAAKwD,YAKrB7sB,KAAKmlB,UACN0H,GACA7sB,KAAKylB,cAELzhB,EAAEC,iBACFD,EAAEkC,kBAEF2mB,EAAWpgB,SAKXzM,KAAKoO,KAAKpK,KAGdooB,SArfO,SAqfGpoB,GAAgB,WAClBqlB,EAAOrpB,KAAKoG,MAAMijB,KAExB,GAAKA,EAAL,CAOA,GALArlB,EAAEC,iBAKEjE,KAAKmlB,SAAU,OAAOnlB,KAAKuoB,eAE/B,IAAM5Z,EAAU3K,EAAE2K,QAIlB0a,EAAKlS,UAAW,EAEhB3L,OAAO0J,uBAAsB,WAG3B,GAFAmU,EAAKwC,YAEAxC,EAAKyD,kBAAmB,OAAO,EAAKvE,eAEzC,OAAQ5Z,GACN,KAAKC,OAASmd,GACZ1C,EAAK0D,WACL,MACF,KAAKne,OAASod,KACZ3C,EAAK2D,WACL,MACF,KAAKpe,OAASqd,KACZ5C,EAAK4D,YACL,MACF,KAAKre,OAAS6E,IACZ4V,EAAK6D,WACL,MAEJ,EAAKhG,WAAW,EAAKrB,SAAS,EAAKuF,sBAGvClE,WA7hBO,SA6hBKzH,GAAY,WACtB,GAAKzf,KAAKmlB,SAGH,CACL,IAAMhU,GAAiBnR,KAAKmR,eAAiB,IAAI2B,QAC3CxN,EAAItF,KAAKkpB,kBAAkBzJ,GAiBjC,IAfO,IAAPna,EAAW6L,EAAcgc,OAAO7nB,EAAG,GAAK6L,EAAcvM,KAAK6a,GAC3Dzf,KAAKyoB,SAAStX,EAAcwQ,KAAK,SAAArc,GAC/B,OAAO,EAAK+f,aAAe/f,EAAI,EAAKka,SAASla,OAM/CtF,KAAKwB,WAAU,WACb,EAAK4E,MAAMijB,MACR,EAAKjjB,MAAMijB,KAAgC+D,sBAK5CptB,KAAKihB,aACPjhB,KAAKsoB,cAAc,OACd,CACL,IAAMtF,EAAQhjB,KAAK6lB,SAAS3X,QAAQuR,IAC/BuD,IACHhjB,KAAKwB,WAAU,kBAAM,EAAK4E,MAAMijB,KAAKwC,cACrCphB,YAAW,kBAAM,EAAK6d,aAAatF,aA3BvChjB,KAAKyoB,SAASzoB,KAAKqlB,aAAe5F,EAAOzf,KAAKwf,SAASC,IACvDzf,KAAKylB,cAAe,GA+BxB6C,aA/jBO,SA+jBOtF,GACZhjB,KAAKoG,MAAMijB,OAAUrpB,KAAKoG,MAAMijB,KAAgCgC,UAAYrI,IAE9EmF,iBAlkBO,WAkkBS,aACR1G,EAAgB,GAChBwH,EAAUjpB,KAAKmlB,UAAajE,MAAM0G,QAAQ5nB,KAAKmR,eAEjDnR,KAAKmR,cADL,CAACnR,KAAKmR,eAHI,iBAMM8X,GANN,yBAMHxpB,EANG,QAONujB,EAAQ,EAAK6C,SAASsD,WAAU,SAAAjgB,GAAC,OAAI,EAAKkgB,gBAC9C,EAAK5J,SAAStW,GACd,EAAKsW,SAAS/f,OAGZujB,GAAS,GACXvB,EAAc7c,KAAK,EAAKihB,SAAS7C,KAPrC,IAAK,EAAL,qBAA4B,IANd,8BAiBdhjB,KAAKyhB,cAAgBA,GAEvBgH,SArlBO,SAqlBGhpB,GACHO,KAAKopB,gBAAgB3pB,EAAOO,KAAKmR,iBACpCnR,KAAKmR,cAAgB1R,EACrBO,KAAKmG,MAAM,SAAU1G,KAGzB6rB,cA3lBO,SA2lBQtP,GAGb,IAAMqR,EAAcrtB,KAAKoG,MAAM,gBAE/B,OAAOinB,IAAgBA,IAAgBrR,GAAUqR,EAAY1E,SAAS3M,S,kCCx3B5E,gBAIesR,cAAY1uB,OAAO,CAChCC,KAAM,aAENG,MAAO,CACLsN,GAAIjN,QAGNgB,QAAS,CACPG,cADO,WAEL,IAAMif,EAAO6N,OAAY1jB,QAAQvJ,QAAQG,cAAcqJ,KAAK7J,MAK5D,OAHAyf,EAAK9f,KAAMqF,SAAWya,EAAK9f,KAAMqF,UAAY,GAC7Cya,EAAK9f,KAAMqF,SAASsH,GAAKtM,KAAKsM,IAAMtM,KAAKP,MAElCggB,O,kQCDP8N,EAAeC,eAAY,IAC3BC,EAAiBD,eAAY,IAC7BE,EAAiBD,EAAe9L,KAAI,SAAAzY,GAAC,OAAIA,EAAI,MAC7CykB,EAAUH,eAAY,IACtBI,EAAiB,CAAEC,EAAG,OAAQC,EAAG,SAAUC,EAAG,UAMrCtvB,sBACbuvB,OACAtO,QAEA9gB,OAAO,CACPC,KAAM,gBAENG,MAAO,CACLivB,aAAc,CAAC3rB,SAAU4e,OACzBgN,eAAgB,CAAC5rB,SAAU4e,OAC3BiN,eAAgB,CAAC7rB,SAAU4e,OAC3BjiB,SAAUC,QACVuD,OAAQ,CACNrD,KAAMC,OACNC,QAAS,OACT2J,UAHM,SAGKvG,GACT,MAAO,CAAC,OAAQ,QAAQkJ,SAASlJ,KAGrCG,IAAKxD,OACLsD,IAAKtD,OACL0D,SAAU7D,QACV4D,WAAY5D,QACZ8gB,WAAY9gB,QACZO,MAAO,KACP2uB,YAAalvB,SAGfS,KAxBO,WAyBL,MAAO,CACL0uB,UAAW,KACXC,YAAa,KACbC,YAAa,KACbC,cAAe,KACfC,gBAAiB,KACjBC,gBAAiB,KACjB3O,OAAQ,KACRE,UAAWpU,OAAe2U,OAI9B1gB,SAAU,CACR6uB,cAAe,CACb5W,IADa,WAEX,OAAO/X,KAAKigB,YAAcpU,OAAe2U,MAE3CvI,IAJa,SAIR/O,GACHlJ,KAAKigB,UAAYpU,OAAe2U,OAGpCoO,gBAAiB,CACf7W,IADe,WAEb,OAAO/X,KAAKigB,YAAcpU,OAAe4U,QAE3CxI,IAJe,SAIV/O,GACHlJ,KAAKigB,UAAYpU,OAAe4U,SAGpCoO,gBAAiB,CACf9W,IADe,WAEb,OAAO/X,KAAKigB,YAAcpU,OAAe8U,QAE3C1I,IAJe,SAIV/O,GACHlJ,KAAKigB,UAAYpU,OAAe8U,SAGpCmO,gBAzBQ,WAyBO,IACT3E,EADS,OASb,GALEA,EADEnqB,KAAKiuB,wBAAwB/M,MACzB,SAAAxe,GAAD,OAAkB,EAAKurB,aAA0BriB,SAASlJ,IAE1D1C,KAAKiuB,cAGPjuB,KAAK6C,MAAQ7C,KAAK2C,IAAK,OAAOwnB,EAEnC,IAAM4E,EAAU/uB,KAAK6C,IAAMD,OAAO5C,KAAK6C,IAAI8kB,MAAM,KAAK,IAAM,EACtDqH,EAAUhvB,KAAK2C,IAAMC,OAAO5C,KAAK2C,IAAIglB,MAAM,KAAK,IAAM,GAE5D,OAAQ,SAAAjlB,GACN,OAAOA,GAAiB,EAAVqsB,GACZrsB,GAAiB,EAAVssB,KACL7E,GAAMA,EAAGznB,MAGjBusB,kBA7CQ,WA6CS,IACX9E,EADW,OAGT+E,GAAiBlvB,KAAK8uB,iBAAsC,OAAnB9uB,KAAKquB,WAAsBruB,KAAK8uB,gBAAgB9uB,KAAKquB,WAOpG,GALElE,EADEnqB,KAAKkuB,0BAA0BhN,MAC3B,SAAAxe,GAAD,OAAkB,EAAKwrB,eAA4BtiB,SAASlJ,IAE5D1C,KAAKkuB,gBAGPluB,KAAK6C,MAAQ7C,KAAK2C,IACrB,OAAOusB,EAAgB/E,EAAK,kBAAM,GAGpC,MAA6BnqB,KAAK6C,IAAM7C,KAAK6C,IAAI8kB,MAAM,KAAKhG,IAAI/e,QAAU,CAAC,EAAG,GAA9E,sBAAOmsB,EAAP,KAAgBI,EAAhB,KACA,EAA6BnvB,KAAK2C,IAAM3C,KAAK2C,IAAIglB,MAAM,KAAKhG,IAAI/e,QAAU,CAAC,GAAI,IAA/E,sBAAOosB,EAAP,KAAgBI,EAAhB,KACMC,EAAoB,GAAVN,EAA2B,EAAZI,EACzBG,EAAoB,GAAVN,EAA2B,EAAZI,EAE/B,OAAQ,SAAA1sB,GACN,IAAM6sB,EAAO,GAAK,EAAKlB,UAAa3rB,EACpC,OAAO6sB,GAAQF,GACbE,GAAQD,GACRJ,KACE/E,GAAMA,EAAGznB,MAGjB8sB,kBAxEQ,WAwES,IACXrF,EADW,OAGT+E,GAAiBlvB,KAAK8uB,iBAAsC,OAAnB9uB,KAAKquB,WAAsBruB,KAAK8uB,gBAAgB9uB,KAAKquB,WAC9FoB,EAAkBP,KACpBlvB,KAAKivB,mBACgB,OAArBjvB,KAAKsuB,aACLtuB,KAAKivB,kBAAkBjvB,KAAKsuB,cAShC,GALEnE,EADEnqB,KAAKmuB,0BAA0BjN,MAC3B,SAAAxe,GAAD,OAAkB,EAAKyrB,eAA4BviB,SAASlJ,IAE5D1C,KAAKmuB,gBAGPnuB,KAAK6C,MAAQ7C,KAAK2C,IACrB,OAAO8sB,EAAkBtF,EAAK,kBAAM,GAGtC,MAAwCnqB,KAAK6C,IAAM7C,KAAK6C,IAAI8kB,MAAM,KAAKhG,IAAI/e,QAAU,CAAC,EAAG,EAAG,GAA5F,sBAAOmsB,EAAP,KAAgBI,EAAhB,KAA2BO,EAA3B,KACA,EAAwC1vB,KAAK2C,IAAM3C,KAAK2C,IAAIglB,MAAM,KAAKhG,IAAI/e,QAAU,CAAC,GAAI,GAAI,IAA9F,sBAAOosB,EAAP,KAAgBI,EAAhB,KAA2BO,EAA3B,KACMN,EAAoB,KAAVN,EAA6B,GAAZI,EAAoC,GAAlBO,GAAa,GAC1DJ,EAAoB,KAAVN,EAA6B,GAAZI,EAAoC,GAAlBO,GAAa,GAEhE,OAAQ,SAAAjtB,GACN,IAAM6sB,EAAO,KAAO,EAAKlB,UAAa,GAAK,EAAKC,YAAe5rB,EAC/D,OAAO6sB,GAAQF,GACbE,GAAQD,GACRG,KACEtF,GAAMA,EAAGznB,MAGjBktB,OAzGQ,WA0GN,MAAuB,SAAhB5vB,KAAKyC,SAIhBqB,MAAO,CACLrE,MAAO,gBAGT+K,QAvJO,WAwJLxK,KAAK6vB,aAAa7vB,KAAKP,OACvBO,KAAK8vB,IAAI,gBAAiB9vB,KAAK+vB,YAGjC1vB,QAAS,CACP2vB,SADO,WAEL,OAAsB,MAAlBhwB,KAAKquB,WAAyC,MAApBruB,KAAKsuB,aAAyBtuB,KAAKggB,YAAkC,MAApBhgB,KAAKuuB,YAI7E,KAHE,UAAGnO,eAAIpgB,KAAKquB,WAAZ,YAA0BjO,eAAIpgB,KAAKsuB,eAAkBtuB,KAAKggB,WAAL,WAAsBI,eAAIpgB,KAAKuuB,cAAkB,KAKjH0B,UARO,WASL,IAAMxwB,EAAQO,KAAKgwB,WACL,OAAVvwB,GAAgBO,KAAKmG,MAAM,QAAS1G,IAE1CswB,UAZO,SAYIhQ,GAET,GADA/f,KAAK+f,OAASA,EACQ,MAAlB/f,KAAKquB,UAAmB,CAC1B,IAAM6B,EAAUlwB,KAAKquB,WAAyB,OAAXtO,GAAmB,GAAK,IAC3D/f,KAAKquB,UAAYruB,KAAKmwB,aAAa,OAAQD,GAC3ClwB,KAAKiwB,cAGTJ,aApBO,SAoBOpwB,GACZ,GAAa,MAATA,GAA2B,KAAVA,EACnBO,KAAKquB,UAAY,KACjBruB,KAAKsuB,YAAc,KACnBtuB,KAAKuuB,YAAc,UACd,GAAI9uB,aAAiB2wB,KAC1BpwB,KAAKquB,UAAY5uB,EAAM4wB,WACvBrwB,KAAKsuB,YAAc7uB,EAAM6wB,aACzBtwB,KAAKuuB,YAAc9uB,EAAM8wB,iBACpB,CACL,MAA2C9wB,EAAMuoB,OAAO2D,cAAc6E,MAAM,mCAAqC,IAAItP,MAAM,GAA3H,sBAAStB,EAAT,KAAeC,EAAf,KAAyBC,EAAzB,KAAiCC,EAAjC,KAEA/f,KAAKquB,UAAYtO,EAAS/f,KAAKywB,cAAcxR,SAASW,EAAM,IAAKG,GAAoBd,SAASW,EAAM,IACpG5f,KAAKsuB,YAAcrP,SAASY,EAAQ,IACpC7f,KAAKuuB,YAActP,SAASa,GAAU,EAAG,IAG3C9f,KAAK+f,OAA4B,MAAlB/f,KAAKquB,WAAqBruB,KAAKquB,UAAY,GAAM,KAAO,MAEzEqC,cAvCO,SAuCQ9Q,GACb,OAAOA,GAASA,EAAO,GAAK,GAAK,EAAK,IAExC6Q,cA1CO,SA0CQ7Q,EAAcG,GAC3B,OAAOH,EAAO,IAAiB,OAAXG,EAAkB,GAAK,IAE7C1E,QA7CO,SA6CE5b,GACHO,KAAKigB,YAAcpU,OAAe2U,KACpCxgB,KAAKquB,UAAYruB,KAAK4vB,OAAS5vB,KAAKywB,cAAchxB,EAAOO,KAAK+f,QAAUtgB,EAC/DO,KAAKigB,YAAcpU,OAAe4U,OAC3CzgB,KAAKsuB,YAAc7uB,EAEnBO,KAAKuuB,YAAc9uB,EAErBO,KAAKiwB,aAEPU,SAvDO,SAuDGlxB,GACRO,KAAKmG,MAAL,gBAAoBynB,EAAe5tB,KAAKigB,YAAcxgB,GAEtD,IAAMmxB,EAAa5wB,KAAKigB,aAAejgB,KAAKggB,WAAanU,OAAe8U,OAAS9U,OAAe4U,QAQhG,GANIzgB,KAAKigB,YAAcpU,OAAe2U,KACpCxgB,KAAKigB,UAAYpU,OAAe4U,OACvBzgB,KAAKggB,YAAchgB,KAAKigB,YAAcpU,OAAe4U,SAC9DzgB,KAAKigB,UAAYpU,OAAe8U,QAG9B3gB,KAAKquB,YAAcruB,KAAKwuB,eAC1BxuB,KAAKsuB,cAAgBtuB,KAAKyuB,iBACxBzuB,KAAKggB,YAAchgB,KAAKuuB,cAAgBvuB,KAAK0uB,gBAFjD,CAKA,IAAMa,EAAOvvB,KAAKgwB,WACL,OAATT,IAEJvvB,KAAKwuB,cAAgBxuB,KAAKquB,UAC1BruB,KAAKyuB,gBAAkBzuB,KAAKsuB,YAC5BtuB,KAAKggB,aAAehgB,KAAK0uB,gBAAkB1uB,KAAKuuB,aAEhDqC,GAAc5wB,KAAKmG,MAAM,SAAUopB,MAErCY,aAhFO,SAgFO/wB,EAAoCK,GAChD,IAAMoxB,EAAqB,SAATzxB,EAAkBY,KAAK8uB,gBAA4B,WAAT1vB,EAAoBY,KAAKivB,kBAAoBjvB,KAAKwvB,kBAC9G,IAAKqB,EAAW,OAAOpxB,EAGvB,IAAMqxB,EAAiB,WAAT1xB,GAEA,WAATA,EADDuuB,EAGG3tB,KAAK4vB,OACHnwB,EAAQ,GACPguB,EACAC,EACFH,EACFwD,EAAQD,EAAM1jB,MAAK,SAAAlE,GAAC,OAAI2nB,GAAW3nB,EAAIzJ,GAASqxB,EAAMvf,OAASuf,EAAM,OAC3E,QAASC,GAAS,GAAKtxB,GAASqxB,EAAMvf,OAASuf,EAAM,IAEvDE,SAjGO,WAkGL,OAAOhxB,KAAKS,eAAewwB,OAAkB,CAC3CjyB,MAAO,CACLqD,cACErC,KAAKigB,YAAcpU,OAAe2U,KAC9BxgB,KAAK8uB,gBACJ9uB,KAAKigB,YAAcpU,OAAe4U,OACjCzgB,KAAKivB,kBACLjvB,KAAKwvB,kBACb7qB,MAAO3E,KAAK2E,MACZmV,KAAM9Z,KAAK8Z,KACX7a,SAAUe,KAAKf,SACfuD,OAAQxC,KAAKigB,YAAcpU,OAAe2U,OAASxgB,KAAK4vB,OACxDntB,OAAQzC,KAAKigB,YAAcpU,OAAe2U,KACrCxgB,KAAK4vB,OAAS5vB,KAAK0wB,cAAiB,SAAAhuB,GAAD,OAAiBA,GACpD,SAAAA,GAAD,OAAiB0d,eAAI1d,EAAK,IAC9BiH,MAAO3J,KAAK2J,MACZhH,IAAK3C,KAAKigB,YAAcpU,OAAe2U,KAAQxgB,KAAK4vB,QAA0B,OAAhB5vB,KAAK+f,OAAkB,GAAK,GAAM,GAChGld,IAAK7C,KAAKigB,YAAcpU,OAAe2U,MAAQxgB,KAAK4vB,QAA0B,OAAhB5vB,KAAK+f,OAAkB,GAAK,EAC1Fhd,SAAU/C,KAAK+C,SACfD,WAAY9C,KAAK8C,WACjBouB,KAAMtuB,OAAO5C,KAAKuG,SAAYvG,KAAKkW,WAAalW,KAAKmxB,UAAa,GAAK,IACvEluB,KAAMjD,KAAKigB,YAAcpU,OAAe2U,KAAO,EAAI,EACnD/gB,MAAOO,KAAKigB,YAAcpU,OAAe2U,KACrCxgB,KAAKquB,UACJruB,KAAKigB,YAAcpU,OAAe4U,OACjCzgB,KAAKsuB,YACLtuB,KAAKuuB,aAEb3tB,GAAI,CACFsY,MAAOlZ,KAAKqb,QACZN,OAAQ/a,KAAK2wB,UAEfroB,IAAK,WAGT8oB,aArIO,WAsIL,OAAOpxB,KAAKS,eAAe,MAAOT,KAAKsL,aAAatL,KAAK2E,OAAS,UAAW,CAC3EjE,YAAa,8BACX,CACFV,KAAKugB,gBAAgB,SAAU,KAAMvgB,KAAK+J,SAAS8W,KAAKC,EAAE,0BAA2B9gB,KAAKf,UAAYe,KAAK+C,UAC3G/C,KAAKugB,gBAAgB,SAAU,KAAMvgB,KAAK+J,SAAS8W,KAAKC,EAAE,0BAA2B9gB,KAAKf,UAAYe,KAAK+C,aAG/GsuB,cA7IO,WA8IL,OAAOrxB,KAAKS,eAAe,MAAO,CAChCC,YAAa,iCACb2R,IAAKrS,KAAKigB,WACT,EACAjgB,KAAKouB,aAAepuB,KAAK4vB,QAAU5vB,KAAKoxB,eACzCpxB,KAAKgxB,cAGTM,eAtJO,WAsJO,WACZ,OAAOtxB,KAAKS,eAAe8wB,OAAkB,CAC3CvyB,MAAO,CACLuD,KAAMvC,KAAK4vB,OACXjQ,aAAc3f,KAAK4vB,SAAW5vB,KAAKouB,YACnCnvB,SAAUe,KAAKf,SACf2gB,KAAM5f,KAAKquB,UACXxO,OAAQ7f,KAAKsuB,YACbxO,OAAQ9f,KAAKuuB,YACbxO,OAAQ/f,KAAK+f,OACbhd,SAAU/C,KAAK+C,SACfid,WAAYhgB,KAAKggB,WACjBC,UAAWjgB,KAAKigB,WAElBrf,GAAI,CACF,mBAAqB,SAAAnB,GAAD,OAAuB,EAAKwgB,UAAYxgB,GAC5D,gBAAkB,SAAAsgB,GAAD,OAAoB,EAAK5Z,MAAM,gBAAiB4Z,KAEnEzX,IAAK,QACL2J,KAAM,YAKZxQ,OA1UO,WA2UL,OAAOzB,KAAKwxB,UAAU,sB,uJCzVXzlB,cAAcnN,OAAO,CAClCC,KAAM,WAENC,WAAY,CAAEC,cAEdkN,QALkC,WAMhC,MAAO,CACL9L,YAAaH,OAIjBhB,MAAO,CACLgR,YAAa,CACX5Q,KAAMC,OACNC,QAAS,yBAEXmyB,WAAYvyB,QACZqP,UAAW,CACTnP,KAAMF,QACNI,SAAS,GAEX4Q,SAAU,CACR9Q,KAAM,CAACF,QAASG,QAChBC,QAAS,SAEX6Q,SAAU,CACR/Q,KAAM,CAACF,QAASG,QAChBC,QAAS,SAEXiX,QAASrX,QACTkR,WAAYlR,QACZwyB,kBAAmBxyB,QACnByyB,MAAOlkB,OACPmkB,UAAW1yB,QACXO,MAAO,CACLC,UAAU,GAEZyJ,SAAUjK,SAGZS,KAxCkC,WAyChC,MAAO,CACLkyB,qBAAqB,EACrBC,oBAAgBvyB,EAChByB,sBAAkBzB,EAClBwB,gBAAiB,EACjBoW,UAAU,EACV4a,WAAW,IAIfjyB,SAAU,CACRF,SADQ,WAEN,OAAOI,KAAKe,gBAAkB,GAEhChB,QAJQ,WAKN,OAAO,iCACFgM,OAAcnC,QAAQ9J,SAASC,QAAQ8J,KAAK7J,OADjD,IAEE,iCAAkCA,KAAK0xB,qBAG3CxxB,mBAVQ,WAWN,IAAKF,KAAKmX,SAAU,MAAO,GAE3B,IAAM6a,EAAOhyB,KAAKmJ,SAAW,IAAM,IAC7BoN,EAAUvW,KAAKI,iBAAmBJ,KAAK+xB,UAAY/xB,KAAK+xB,UACxDne,EAAY2C,EAAU,WAAa,GAEzC,MAAO,YAAP,OAAmByb,GAAnB,OAA0Bpe,EAA1B,gBAEFqe,eAnBQ,WAoBN,OAAO/yB,QACLc,KAAK8R,MAAM1E,MAAK,SAAAqS,GAAI,OAAKA,EAAKxgB,cAGlCgS,QAxBQ,WAyBN,OAAOjR,KAAKyxB,YAAczxB,KAAKkyB,cAAgBlyB,KAAK8R,MAAMP,OAAS,GAErEL,QA3BQ,WA4BN,OAAOlR,KAAKyxB,YAAczxB,KAAKkyB,cAAgB,GAEjDA,cA9BQ,WA8BK,WACX,OAAOlyB,KAAK8R,MAAMqX,WAAU,SAAC1J,EAAMna,GACjC,OAAO,EAAK6L,gBAAkB,EAAKqO,SAASC,EAAMna,OAGtDlF,gBAnCQ,WAoCN,OAAOJ,KAAK+J,SAASmF,KAAOlP,KAAKuW,QAAUvW,KAAKuW,UAIpDzS,MAAO,CACLouB,cADK,SACUxvB,EAAKyvB,GAClBnyB,KAAK+xB,UAAY/xB,KAAKoyB,cAAc1vB,EAAKyvB,KAI7C3nB,QAjGkC,WAiG3B,WACLgB,OAAO0J,uBAAsB,kBAAO,EAAKiC,UAAW,MAGtD9W,QAAS,CACPC,eADO,WAEL,OAAON,KAAKO,OAAOjB,SAErB+yB,aAJO,WAKL,IAAM3tB,EAAW,CAAC1E,KAAKM,kBAMvB,OAJIN,KAAKoQ,YACP1L,EAASE,KAAK5E,KAAKsyB,mBAGdtyB,KAAKS,eAAe,MAAO,CAChCC,YAAa,sBACbC,MAAO,CACL,iCAAkCX,KAAKJ,UAEzCkF,MAAO,CACLsH,OAAQpM,KAAK8xB,gBAAkB9xB,KAAKgB,mBAErC0D,IAEL+N,QArBO,SAsBLmB,EACAjB,EACAlG,GAAiB,iBAEX7L,EAAK,CACT6L,MAAQ,SAAAzI,GACNA,EAAEkC,kBACF,EAAK2rB,qBAAsB,EAC3BplB,MAGExB,EAAQ,CACZ,aAAcjL,KAAK+J,SAAS8W,KAAKC,EAAnB,4BAA0ClN,KAEpDlP,EAAQ,mBAAG,EAAA1E,KAAKkS,cAAa0B,SAArB,EAAG2e,SAA+B,CAC9C3xB,KACAqK,WAFY,EAGR,CAACjL,KAAKS,eAAe+xB,OAAM,CAC/BxzB,MAAO,CAAE2T,MAAM,GACf1H,QACArK,MACC,CACDZ,KAAKS,eAAeuS,OAAO,CACzBhU,MAAO,CAAEyzB,OAAO,IACf9f,MAGL,OAAO3S,KAAKS,eAAe,MAAO,CAChCC,YAAa,aAAF,OAAekT,IACzBlP,IAEL4tB,gBArDO,WAsDL,IAAMI,EAAQ,GAERviB,EAAWnQ,KAAK+J,SAASmF,IAC3BlP,KAAKkQ,SACLlQ,KAAKmQ,SAGT,GACEnQ,KAAKkR,SACLf,GACoB,kBAAbA,EACP,CACA,IAAMwC,EAAO3S,KAAKyS,QAAQ,OAAQtC,EAAUnQ,KAAKkT,MACjDP,GAAQ+f,EAAM9tB,KAAK+N,GAGrB,IAAMzC,EAAWlQ,KAAK+J,SAASmF,IAC3BlP,KAAKmQ,SACLnQ,KAAKkQ,SAGT,GACElQ,KAAKiR,SACLf,GACoB,kBAAbA,EACP,CACA,IAAMyC,EAAO3S,KAAKyS,QAAQ,OAAQvC,EAAUlQ,KAAKmS,MACjDQ,GAAQ+f,EAAM9tB,KAAK+N,GAGrB,OAAO+f,GAETC,aAtFO,SAsFO3P,GACZ,IAAM4P,GAAa5P,EAAQ,GAAKhjB,KAAK8R,MAAMP,OACrCkO,EAAOzf,KAAK8R,MAAM8gB,GAExB,OAAInT,EAAKxgB,SAAiBe,KAAK2yB,aAAaC,GAErCA,GAETC,aA9FO,SA8FO7P,GACZ,IAAM8P,GAAa9P,EAAQhjB,KAAK8R,MAAMP,OAAS,GAAKvR,KAAK8R,MAAMP,OACzDkO,EAAOzf,KAAK8R,MAAMghB,GAExB,OAAIrT,EAAKxgB,SAAiBe,KAAK6yB,aAAaC,GAErCA,GAET3gB,KAtGO,WAwGL,GAAKnS,KAAKiyB,gBAAmBjyB,KAAKiR,QAAlC,CAEA,IAAM2hB,EAAY5yB,KAAK2yB,aAAa3yB,KAAKkyB,eACnCzS,EAAOzf,KAAK8R,MAAM8gB,GAExB5yB,KAAKmR,cAAgBnR,KAAKwf,SAASC,EAAMmT,KAE3C1f,KA/GO,WAiHL,GAAKlT,KAAKiyB,gBAAmBjyB,KAAKkR,QAAlC,CAEA,IAAM6hB,EAAY/yB,KAAK6yB,aAAa7yB,KAAKkyB,eACnCzS,EAAOzf,KAAK8R,MAAMihB,GAExB/yB,KAAKmR,cAAgBnR,KAAKwf,SAASC,EAAMsT,KAE3CX,cAxHO,SAwHQ1vB,EAAayvB,GAC1B,IAAMrO,EAAc9jB,KAAK8R,MAAMP,OACzBwhB,EAAYjP,EAAc,EAEhC,OAAIA,GAAe,EAAUphB,EAAMyvB,EAE/BzvB,IAAQqwB,GAAwB,IAAXZ,IAEN,IAARzvB,GAAayvB,IAAWY,IAG1BrwB,EAAMyvB,IAKnB1wB,OA7OkC,SA6O1BC,GAAC,WACD/B,EAAO,CACXe,YAAa,WACbC,MAAOX,KAAKD,QACZjB,WAAY,IAGd,IAAKkB,KAAK4xB,UAAW,CACnB,IAAMnyB,EAAQO,KAAK2xB,OAAS,CAC1BjsB,KAAM,WACJ,EAAKqE,SAASmF,IAAM,EAAKgE,OAAS,EAAKf,QAEzC3I,MAAO,WACL,EAAKO,SAASmF,IAAM,EAAKiD,OAAS,EAAKe,QAEzCO,IAAM,SAAAzP,GACJA,EAAEkC,mBAEJkN,MAAQ,SAAApP,GACNA,EAAEkC,oBAINvG,EAAKb,WAAW8F,KAAK,CACnB/F,KAAM,QACNY,UAIJ,OAAOiC,EAAE,MAAO/B,EAAM,CAACK,KAAKqyB,qB,8ICxQjB5zB,iBACboR,OACAmjB,OACA5wB,QAEAxD,OAAO,CACPC,KAAM,aAENoN,QAHO,WAIL,MAAO,CACLqC,QAAStO,OAIbF,SAAU,CACRC,QADQ,WAEN,OAAO,iCACF8P,OAAejG,QAAQ9J,SAASC,QAAQ8J,KAAK7J,OADlD,IAEE,cAAc,EACd,wBAAyBA,KAAKgR,SAE9B,0BAA2BhR,KAAKoQ,YAC7BpQ,KAAK8H,gBAKdhE,MAAO,CACLgO,MAAO,aACPX,cAAe,aACfpD,OAAQ,iBAGV1N,QAAS,CACP4yB,WADO,WAEAjzB,KAAKmX,UAEVnX,KAAKmG,MAAM,gBAEb+E,WANO,WAOL,IAAMzJ,EAASoO,OAAejG,QAAQvJ,QAAQ6K,WAAWrB,KAAK7J,MAK9D,OAHAyB,EAAO9B,KAAO8B,EAAO9B,MAAQ,GAC7B8B,EAAO9B,KAAKe,aAAe,uBAEpBe,GAETyxB,cAdO,SAcQxwB,EAAYyvB,GAEzB,IAAInyB,KAAKuO,UAAT,CAEA,IAJsC,EAIhCuD,EAAQ9R,KAAK8R,MACbqhB,EAAUzwB,EAAI0wB,KACdC,EAAUlB,EAAOiB,KAEnBE,GAAS,EACTC,GAAS,EATyB,iBAWnBzhB,GAXmB,IAWtC,IAAK,EAAL,qBAA0B,KAAf2N,EAAe,QAIxB,GAHIA,EAAK9R,KAAO0lB,EAASE,GAAS,EACzB9T,EAAK9R,KAAOwlB,IAASG,GAAS,GAEnCA,GAAUC,EAAQ,OAfc,+BAqBjCD,GAAUC,IAAQvzB,KAAKmR,mBAAgB5R,MAIhDkC,OAnEO,SAmECC,GACN,IAAMD,EAASoO,OAAejG,QAAQnI,OAAOoI,KAAK7J,KAAM0B,GAMxD,OAJAD,EAAO9B,KAAMsL,MAAQ,CACnBE,KAAM,WAGD1J,K,wEC1ELjD,EAAaC,eACjB0D,OACAqa,OACApa,QASa5D,SAAWI,SAAkBA,OAAO,CACjDC,KAAM,SAENC,WAAY,CACViR,eAGF/Q,MAAO,CACLgR,YAAa,CACX5Q,KAAMC,OACNC,QAAS,IAEXk0B,eAAgBt0B,QAChByd,gBAAiBtd,OACjB4Q,aAAc/Q,QACd0J,SAAU1J,QACVu0B,UAAWv0B,QACXw0B,KAAMx0B,QACNkN,OAAQ,CACNhN,KAAM,CAACwD,OAAQvD,QACfC,aAASC,GAEXo0B,WAAYz0B,QACZ00B,aAAc10B,QACd20B,iBAAkB,CAACx0B,OAAQuD,QAC3BsN,SAAU,CACR9Q,KAAMC,OACNC,QAAS,SAEXw0B,SAAU50B,QACViR,SAAU,CACR/Q,KAAMC,OACNC,QAAS,SAEXkK,MAAOtK,QACPkR,WAAY,CAAClR,QAASG,QACtB00B,YAAa10B,OACb20B,WAAY,CACV50B,KAAM,CAACwD,OAAQvD,QACfC,QAAS,GAEX6J,SAAUjK,SAGZS,KA5CiD,WA6C/C,MAAO,CACL4Q,cAAe,EACf0jB,OAAQ,CACN7nB,OAAQ,KACR1G,KAAM,KACN8D,MAAO,KACP7D,IAAK,KACLY,MAAO,MAET2tB,eAAgB,MAIpBp0B,SAAU,CACRC,QADQ,WAEN,OAAO,gBACL,2BAA4BC,KAAKwzB,eACjC,mBAAoBxzB,KAAK4I,SACzB,qBAAsB5I,KAAKyzB,UAC3B,eAAgBzzB,KAAK0zB,KACrB,yBAA0B1zB,KAAK4zB,aAC/B,gBAAiB5zB,KAAKwJ,MACtB,mBAAoBxJ,KAAKmJ,UACtBnJ,KAAK8H,eAGZmW,WAbQ,WAcN,OAAOje,KAAK+J,SAASmF,KAAOlP,KAAKmJ,UAEnCgrB,aAhBQ,WAiBN,MAAO,CACL/nB,OAAQlL,eAAclB,KAAKi0B,OAAO7nB,QAClC1G,KAAM1F,KAAKie,gBAAa1e,EAAY2B,eAAclB,KAAKi0B,OAAOvuB,MAC9D8D,MAAOxJ,KAAKie,WAAa/c,eAAclB,KAAKi0B,OAAOzqB,YAASjK,EAC5DoG,IAAK3F,KAAKmJ,SAAWjI,eAAclB,KAAKi0B,OAAOtuB,UAAOpG,EACtDC,WAAgC,MAApBQ,KAAKi0B,OAAOvuB,KAAe,KAAO,OAC9Ca,MAAOrF,eAAclB,KAAKi0B,OAAO1tB,SAGrCiR,cA1BQ,WA2BN,OAAIxX,KAAK2E,MAAc3E,KAAK2E,MACnB3E,KAAK0J,SAAW1J,KAAKo0B,UAAkB,QACpC,YAIhBtwB,MAAO,CACL0vB,eAAgB,aAChB5qB,SAAU,aACVqH,aAAc,aACdwjB,UAAW,aACXC,KAAM,aACNE,aAAc,aACdpqB,MAAO,aACP4G,WAAY,aACZjH,SAAU,aACV,4BAA6B,WAC7B,6BAA8B,WAC9B,eAAgB,YAGlBqB,QA1GiD,WA0G1C,WACLxK,KAAKwB,WAAU,WACbgK,OAAOf,WAAW,EAAKwoB,WAAY,QAIvC5yB,QAAS,CACP4yB,WADO,WACG,WACR,OACEjzB,KAAK2zB,YACJ3zB,KAAKoG,MAAM0L,OACX9R,KAAKoG,MAAM0L,MAAM2P,cAAclQ,QAMlCvR,KAAKwB,WAAU,WAEb,IAAM6yB,EAAY,EAAKjuB,MAAM0L,MAAM2P,cAAc,GAEjD,IAAK4S,IAAcA,EAAUlzB,IAG3B,OAFA,EAAK8yB,OAAO1tB,MAAQ,OACpB,EAAK0tB,OAAOvuB,KAAO,GAGrB,IAAMnE,EAAK8yB,EAAUlzB,IAErB,EAAK8yB,OAAS,CACZ7nB,OAAS,EAAKjD,SAAqC5H,EAAG8d,aAA7Bzc,OAAO,EAAKoxB,YACrCtuB,KAAM,EAAKyD,SAAW,EAAI5H,EAAG8N,WAC7B7F,MAAO,EAAKL,SAAW,EAAI5H,EAAG8N,WAAa9N,EAAG6a,YAC9CzW,IAAKpE,EAAG+yB,UACR/tB,MAAO,EAAK4C,SAAWvG,OAAO,EAAKoxB,YAAczyB,EAAG4a,iBAIjD,IAxBLnc,KAAKi0B,OAAO1tB,MAAQ,GACb,IAyBXguB,OAjCO,SAiCCziB,EAAgBmiB,GAAoB,WACpCt0B,EAAO,CACXmF,MAAO,CACLsH,OAAQlL,eAAclB,KAAKoM,SAE7BpN,MAAO,CACLgR,YAAahQ,KAAKgQ,YAClBC,aAAcjQ,KAAKiQ,aACnB6J,KAAM9Z,KAAK8Z,KACXnQ,MAAO3J,KAAK2J,MACZ4E,WAAYvO,KAAK8zB,SACjBD,iBAAkB7zB,KAAK6zB,iBACvB3jB,SAAUlQ,KAAKkQ,SACfC,SAAUnQ,KAAKmQ,SACfC,WAAYpQ,KAAKoQ,WACjB3Q,MAAOO,KAAKmR,eAEdvQ,GAAI,CACF,cAAeZ,KAAKizB,WACpBlY,OAAS,SAAArY,GACP,EAAKyO,cAAgBzO,IAGzB4F,IAAK,SAMP,OAHAtI,KAAKsL,aAAatL,KAAKwX,cAAe7X,GACtCK,KAAK6E,mBAAmB7E,KAAK2c,gBAAiBhd,GAEvCK,KAAKS,eAAe+zB,EAAU70B,EAAM,CACzCK,KAAKy0B,UAAUR,GACfniB,KAGJ4iB,SAnEO,SAmEG5iB,EAAqB2N,GAAa,WAG1C,OAAI3N,IAIC2N,EAAKlO,OAEHvR,KAAKS,eAAek0B,OAAY,CACrC31B,MAAO,CACLS,MAAOO,KAAKmR,eAEdvQ,GAAI,CACFma,OAAS,SAAArY,GACP,EAAKyO,cAAgBzO,KAGxB+c,GAXsB,OAa3BgV,UAvFO,SAuFIR,GACT,OAAIj0B,KAAK2zB,WAAmB,MAEvBM,IACHA,EAASj0B,KAAKS,eAAem0B,OAAa,CACxC51B,MAAO,CAAE2F,MAAO3E,KAAK+zB,gBAIlB/zB,KAAKS,eAAe,MAAO,CAChCC,YAAa,wBACboE,MAAO9E,KAAKm0B,cACX,CAACF,MAENzhB,SArGO,WAsGDxS,KAAK+T,eAETtI,aAAazL,KAAKuQ,eAClBvQ,KAAKuQ,cAAgB/E,OAAOf,WAAWzK,KAAKizB,WAAY,KAE1D4B,WA3GO,WAmHL,IAPA,IAAI/iB,EAAQ,KACRmiB,EAAS,KACPxU,EAAO,GACPqM,EAAM,GACN7Z,EAAOjS,KAAKO,OAAOjB,SAAW,GAC9BiS,EAASU,EAAKV,OAEXjM,EAAI,EAAGA,EAAIiM,EAAQjM,IAAK,CAC/B,IAAMyH,EAAQkF,EAAK3M,GAEnB,GAAIyH,EAAM4W,iBACR,OAAQ5W,EAAM4W,iBAAiBC,KAAKha,QAAQ/K,MAC1C,IAAK,gBAAiBo1B,EAASlnB,EAC7B,MACF,IAAK,eAAgB+E,EAAQ/E,EAC3B,MACF,IAAK,aAAc0S,EAAK7a,KAAKmI,GAC3B,MAEF,QAAS+e,EAAIlnB,KAAKmI,QAGpB+e,EAAIlnB,KAAKmI,GAUb,MAAO,CAAE+e,MAAKmI,SAAQniB,QAAO2N,UAIjChe,OAhQiD,SAgQzCC,GACN,MAAqC1B,KAAK60B,aAAlC/I,EAAR,EAAQA,IAAKmI,EAAb,EAAaA,OAAQniB,EAArB,EAAqBA,MAAO2N,EAA5B,EAA4BA,KAE5B,OAAO/d,EAAE,MAAO,CACdhB,YAAa,SACbC,MAAOX,KAAKD,QACZjB,WAAY,CAAC,CACXD,KAAM,SACN0c,UAAW,CAAEC,OAAO,GACpB/b,MAAOO,KAAKwS,YAEb,CACDxS,KAAKu0B,OAAOzI,EAAKmI,GACjBj0B,KAAK00B,SAAS5iB,EAAO2N","file":"js/plugins~cbab912d.af3654c6.js","sourcesContent":["// Components\nimport VWindow from './VWindow'\n\n// Mixins\nimport Bootable from '../../mixins/bootable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\n\n// Directives\nimport Touch from '../../directives/touch'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Bootable,\n GroupableFactory('windowGroup', 'v-window-item', 'v-window')\n)\n\ninterface options extends ExtractVue {\n $el: HTMLElement\n windowGroup: InstanceType\n}\n\nexport default baseMixins.extend().extend(\n /* @vue/component */\n).extend({\n name: 'v-window-item',\n\n directives: {\n Touch,\n },\n\n props: {\n disabled: Boolean,\n reverseTransition: {\n type: [Boolean, String],\n default: undefined,\n },\n transition: {\n type: [Boolean, String],\n default: undefined,\n },\n value: {\n required: false,\n },\n },\n\n data () {\n return {\n isActive: false,\n inTransition: false,\n }\n },\n\n computed: {\n classes (): object {\n return this.groupClasses\n },\n computedTransition (): string | boolean {\n if (!this.windowGroup.internalReverse) {\n return typeof this.transition !== 'undefined'\n ? this.transition || ''\n : this.windowGroup.computedTransition\n }\n\n return typeof this.reverseTransition !== 'undefined'\n ? this.reverseTransition || ''\n : this.windowGroup.computedTransition\n },\n },\n\n methods: {\n genDefaultSlot () {\n return this.$slots.default\n },\n genWindowItem () {\n return this.$createElement('div', {\n staticClass: 'v-window-item',\n class: this.classes,\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n on: this.$listeners,\n }, this.genDefaultSlot())\n },\n onAfterTransition () {\n if (!this.inTransition) {\n return\n }\n\n // Finalize transition state.\n this.inTransition = false\n if (this.windowGroup.transitionCount > 0) {\n this.windowGroup.transitionCount--\n\n // Remove container height if we are out of transition.\n if (this.windowGroup.transitionCount === 0) {\n this.windowGroup.transitionHeight = undefined\n }\n }\n },\n onBeforeTransition () {\n if (this.inTransition) {\n return\n }\n\n // Initialize transition state here.\n this.inTransition = true\n if (this.windowGroup.transitionCount === 0) {\n // Set initial height for height transition.\n this.windowGroup.transitionHeight = convertToUnit(this.windowGroup.$el.clientHeight)\n }\n this.windowGroup.transitionCount++\n },\n onTransitionCancelled () {\n this.onAfterTransition() // This should have the same path as normal transition end.\n },\n onEnter (el: HTMLElement) {\n if (!this.inTransition) {\n return\n }\n\n this.$nextTick(() => {\n // Do not set height if no transition or cancelled.\n if (!this.computedTransition || !this.inTransition) {\n return\n }\n\n // Set transition target height.\n this.windowGroup.transitionHeight = convertToUnit(el.clientHeight)\n })\n },\n },\n\n render (h): VNode {\n return h('transition', {\n props: {\n name: this.computedTransition,\n },\n on: {\n // Handlers for enter windows.\n beforeEnter: this.onBeforeTransition,\n afterEnter: this.onAfterTransition,\n enterCancelled: this.onTransitionCancelled,\n\n // Handlers for leave windows.\n beforeLeave: this.onBeforeTransition,\n afterLeave: this.onAfterTransition,\n leaveCancelled: this.onTransitionCancelled,\n\n // Enter handler for height transition.\n enter: this.onEnter,\n },\n }, this.showLazyContent(() => [this.genWindowItem()]))\n },\n})\n","import './VTimePickerClock.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport Vue, { VNode, PropType, VNodeData } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\ninterface Point {\n x: number\n y: number\n}\n\ninterface options extends Vue {\n $refs: {\n clock: HTMLElement\n innerClock: HTMLElement\n }\n}\n\nexport default mixins\n/* eslint-enable indent */\n>(\n Colorable,\n Themeable\n/* @vue/component */\n).extend({\n name: 'v-time-picker-clock',\n\n props: {\n allowedValues: Function as PropType<(value: number) => boolean>,\n ampm: Boolean,\n disabled: Boolean,\n double: Boolean,\n format: {\n type: Function,\n default: (val: string | number) => val,\n } as PropValidator<(val: string | number) => string | number>,\n max: {\n type: Number,\n required: true,\n },\n min: {\n type: Number,\n required: true,\n },\n scrollable: Boolean,\n readonly: Boolean,\n rotate: {\n type: Number,\n default: 0,\n },\n step: {\n type: Number,\n default: 1,\n },\n value: Number,\n },\n\n data () {\n return {\n inputValue: this.value,\n isDragging: false,\n valueOnMouseDown: null as number | null,\n valueOnMouseUp: null as number | null,\n }\n },\n\n computed: {\n count (): number {\n return this.max - this.min + 1\n },\n degreesPerUnit (): number {\n return 360 / this.roundCount\n },\n degrees (): number {\n return this.degreesPerUnit * Math.PI / 180\n },\n displayedValue (): number {\n return this.value == null ? this.min : this.value\n },\n innerRadiusScale (): number {\n return 0.62\n },\n roundCount (): number {\n return this.double ? (this.count / 2) : this.count\n },\n },\n\n watch: {\n value (value) {\n this.inputValue = value\n },\n },\n\n methods: {\n wheel (e: WheelEvent) {\n e.preventDefault()\n\n const delta = Math.sign(-e.deltaY || 1)\n let value = this.displayedValue\n do {\n value = value + delta\n value = (value - this.min + this.count) % this.count + this.min\n } while (!this.isAllowed(value) && value !== this.displayedValue)\n\n if (value !== this.displayedValue) {\n this.update(value)\n }\n },\n isInner (value: number) {\n return this.double && (value - this.min >= this.roundCount)\n },\n handScale (value: number) {\n return this.isInner(value) ? this.innerRadiusScale : 1\n },\n isAllowed (value: number) {\n return !this.allowedValues || this.allowedValues(value)\n },\n genValues () {\n const children: VNode[] = []\n\n for (let value = this.min; value <= this.max; value = value + this.step) {\n const color = value === this.value && (this.color || 'accent')\n children.push(this.$createElement('span', this.setBackgroundColor(color, {\n staticClass: 'v-time-picker-clock__item',\n class: {\n 'v-time-picker-clock__item--active': value === this.displayedValue,\n 'v-time-picker-clock__item--disabled': this.disabled || !this.isAllowed(value),\n },\n style: this.getTransform(value),\n domProps: { innerHTML: `${this.format(value)}` },\n })))\n }\n\n return children\n },\n genHand () {\n const scale = `scaleY(${this.handScale(this.displayedValue)})`\n const angle = this.rotate + this.degreesPerUnit * (this.displayedValue - this.min)\n const color = (this.value != null) && (this.color || 'accent')\n return this.$createElement('div', this.setBackgroundColor(color, {\n staticClass: 'v-time-picker-clock__hand',\n class: {\n 'v-time-picker-clock__hand--inner': this.isInner(this.value),\n },\n style: {\n transform: `rotate(${angle}deg) ${scale}`,\n },\n }))\n },\n getTransform (i: number) {\n const { x, y } = this.getPosition(i)\n return {\n left: `${50 + x * 50}%`,\n top: `${50 + y * 50}%`,\n }\n },\n getPosition (value: number) {\n const rotateRadians = this.rotate * Math.PI / 180\n return {\n x: Math.sin((value - this.min) * this.degrees + rotateRadians) * this.handScale(value),\n y: -Math.cos((value - this.min) * this.degrees + rotateRadians) * this.handScale(value),\n }\n },\n onMouseDown (e: MouseEvent | TouchEvent) {\n e.preventDefault()\n\n this.valueOnMouseDown = null\n this.valueOnMouseUp = null\n this.isDragging = true\n this.onDragMove(e)\n },\n onMouseUp (e: MouseEvent | TouchEvent) {\n e.stopPropagation()\n\n this.isDragging = false\n if (this.valueOnMouseUp !== null && this.isAllowed(this.valueOnMouseUp)) {\n this.$emit('change', this.valueOnMouseUp)\n }\n },\n onDragMove (e: MouseEvent | TouchEvent) {\n e.preventDefault()\n if ((!this.isDragging && e.type !== 'click') || !this.$refs.clock) return\n\n const { width, top, left } = this.$refs.clock.getBoundingClientRect()\n const { width: innerWidth } = this.$refs.innerClock.getBoundingClientRect()\n const { clientX, clientY } = 'touches' in e ? e.touches[0] : e\n const center = { x: width / 2, y: -width / 2 }\n const coords = { x: clientX - left, y: top - clientY }\n const handAngle = Math.round(this.angle(center, coords) - this.rotate + 360) % 360\n const insideClick = this.double && this.euclidean(center, coords) < (innerWidth + innerWidth * this.innerRadiusScale) / 4\n const checksCount = Math.ceil(15 / this.degreesPerUnit)\n let value\n\n for (let i = 0; i < checksCount; i++) {\n value = this.angleToValue(handAngle + i * this.degreesPerUnit, insideClick)\n if (this.isAllowed(value)) return this.setMouseDownValue(value)\n\n value = this.angleToValue(handAngle - i * this.degreesPerUnit, insideClick)\n if (this.isAllowed(value)) return this.setMouseDownValue(value)\n }\n },\n angleToValue (angle: number, insideClick: boolean): number {\n const value = (\n Math.round(angle / this.degreesPerUnit) +\n (insideClick ? this.roundCount : 0)\n ) % this.count + this.min\n\n // Necessary to fix edge case when selecting left part of the value(s) at 12 o'clock\n if (angle < (360 - this.degreesPerUnit / 2)) return value\n\n return insideClick ? this.max - this.roundCount + 1 : this.min\n },\n setMouseDownValue (value: number) {\n if (this.valueOnMouseDown === null) {\n this.valueOnMouseDown = value\n }\n\n this.valueOnMouseUp = value\n this.update(value)\n },\n update (value: number) {\n if (this.inputValue !== value) {\n this.inputValue = value\n this.$emit('input', value)\n }\n },\n euclidean (p0: Point, p1: Point) {\n const dx = p1.x - p0.x\n const dy = p1.y - p0.y\n\n return Math.sqrt(dx * dx + dy * dy)\n },\n angle (center: Point, p1: Point) {\n const value = 2 * Math.atan2(p1.y - center.y - this.euclidean(center, p1), p1.x - center.x)\n return Math.abs(value * 180 / Math.PI)\n },\n },\n\n render (h): VNode {\n const data: VNodeData = {\n staticClass: 'v-time-picker-clock',\n class: {\n 'v-time-picker-clock--indeterminate': this.value == null,\n ...this.themeClasses,\n },\n on: (this.readonly || this.disabled) ? undefined : {\n mousedown: this.onMouseDown,\n mouseup: this.onMouseUp,\n mouseleave: (e: MouseEvent) => (this.isDragging && this.onMouseUp(e)),\n touchstart: this.onMouseDown,\n touchend: this.onMouseUp,\n mousemove: this.onDragMove,\n touchmove: this.onDragMove,\n },\n ref: 'clock',\n }\n\n if (this.scrollable && data.on) {\n data.on.wheel = this.wheel\n }\n\n return h('div', data, [\n h('div', {\n staticClass: 'v-time-picker-clock__inner',\n ref: 'innerClock',\n }, [\n this.genHand(),\n this.genValues(),\n ]),\n ])\n },\n})\n","import VSubheader from './VSubheader'\n\nexport { VSubheader }\nexport default VSubheader\n","// Styles\nimport './VSnackbar.sass'\n\n// Components\nimport VSheet from '../VSheet/VSheet'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\nimport Toggleable from '../../mixins/toggleable'\nimport { factory as PositionableFactory } from '../../mixins/positionable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport { deprecate, removed } from '../../util/console'\n\n// Types\nimport { PropType, VNode } from 'vue'\n\nexport default mixins(\n VSheet,\n Colorable,\n Toggleable,\n PositionableFactory([\n 'absolute',\n 'bottom',\n 'left',\n 'right',\n 'top',\n ])\n/* @vue/component */\n).extend({\n name: 'v-snackbar',\n\n props: {\n app: Boolean,\n centered: Boolean,\n contentClass: {\n type: String,\n default: '',\n },\n multiLine: Boolean,\n text: Boolean,\n timeout: {\n type: [Number, String],\n default: 5000,\n },\n transition: {\n type: [Boolean, String] as PropType,\n default: 'v-snack-transition',\n validator: v => typeof v === 'string' || v === false,\n },\n vertical: Boolean,\n },\n\n data: () => ({\n activeTimeout: -1,\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-snack--absolute': this.absolute,\n 'v-snack--active': this.isActive,\n 'v-snack--bottom': this.bottom || !this.top,\n 'v-snack--centered': this.centered,\n 'v-snack--has-background': this.hasBackground,\n 'v-snack--left': this.left,\n 'v-snack--multi-line': this.multiLine && !this.vertical,\n 'v-snack--right': this.right,\n 'v-snack--text': this.text,\n 'v-snack--top': this.top,\n 'v-snack--vertical': this.vertical,\n }\n },\n // Text and outlined styles both\n // use transparent backgrounds\n hasBackground (): boolean {\n return (\n !this.text &&\n !this.outlined\n )\n },\n // Snackbar is dark by default\n // override themeable logic.\n isDark (): boolean {\n return this.hasBackground\n ? !this.light\n : Themeable.options.computed.isDark.call(this)\n },\n styles (): object {\n if (this.absolute || !this.app) return {}\n\n const {\n bar,\n bottom,\n footer,\n insetFooter,\n left,\n right,\n top,\n } = this.$vuetify.application\n\n return {\n paddingBottom: convertToUnit(bottom + footer + insetFooter),\n paddingLeft: convertToUnit(left),\n paddingRight: convertToUnit(right),\n paddingTop: convertToUnit(bar + top),\n }\n },\n },\n\n watch: {\n isActive: 'setTimeout',\n timeout: 'setTimeout',\n },\n\n mounted () {\n if (this.isActive) this.setTimeout()\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('auto-height')) {\n removed('auto-height', this)\n }\n\n /* istanbul ignore next */\n // eslint-disable-next-line eqeqeq\n if (this.timeout == 0) {\n deprecate('timeout=\"0\"', '-1', this)\n }\n },\n\n methods: {\n genActions () {\n return this.$createElement('div', {\n staticClass: 'v-snack__action ',\n }, [\n getSlot(this, 'action', {\n attrs: { class: 'v-snack__btn' },\n }),\n ])\n },\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-snack__content',\n class: {\n [this.contentClass]: true,\n },\n attrs: {\n role: 'status',\n 'aria-live': 'polite',\n },\n }, [getSlot(this)])\n },\n genWrapper () {\n const setColor = this.hasBackground\n ? this.setBackgroundColor\n : this.setTextColor\n\n const data = setColor(this.color, {\n staticClass: 'v-snack__wrapper',\n class: VSheet.options.computed.classes.call(this),\n style: VSheet.options.computed.styles.call(this),\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n on: {\n pointerenter: () => window.clearTimeout(this.activeTimeout),\n pointerleave: this.setTimeout,\n },\n })\n\n return this.$createElement('div', data, [\n this.genContent(),\n this.genActions(),\n ])\n },\n genTransition () {\n return this.$createElement('transition', {\n props: { name: this.transition },\n }, [this.genWrapper()])\n },\n setTimeout () {\n window.clearTimeout(this.activeTimeout)\n\n const timeout = Number(this.timeout)\n\n if (\n !this.isActive ||\n // TODO: remove 0 in v3\n [0, -1].includes(timeout)\n ) {\n return\n }\n\n this.activeTimeout = window.setTimeout(() => {\n this.isActive = false\n }, timeout)\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-snack',\n class: this.classes,\n style: this.styles,\n }, [\n this.transition !== false\n ? this.genTransition()\n : this.genWrapper(),\n ])\n },\n})\n","enum SelectingTimes {\n Hour = 1,\n Minute = 2,\n Second = 3\n}\n\nexport { SelectingTimes }\n","import VProgressLinear from './VProgressLinear'\n\nexport { VProgressLinear }\nexport default VProgressLinear\n","// Styles\nimport '../../styles/components/_selection-controls.sass'\nimport './VRadioGroup.sass'\n\n// Extensions\nimport VInput from '../VInput'\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { PropType } from 'vue'\n\nconst baseMixins = mixins(\n BaseItemGroup,\n VInput\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-radio-group',\n\n provide () {\n return {\n radioGroup: this,\n }\n },\n\n props: {\n column: {\n type: Boolean,\n default: true,\n },\n height: {\n type: [Number, String],\n default: 'auto',\n },\n name: String,\n row: Boolean,\n // If no value set on VRadio\n // will match valueComparator\n // force default to null\n value: null as unknown as PropType,\n },\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input--selection-controls v-input--radio-group': true,\n 'v-input--radio-group--column': this.column && !this.row,\n 'v-input--radio-group--row': this.row,\n }\n },\n },\n\n methods: {\n genDefaultSlot () {\n return this.$createElement('div', {\n staticClass: 'v-input--radio-group__input',\n attrs: {\n id: this.id,\n role: 'radiogroup',\n 'aria-labelledby': this.computedId,\n },\n }, VInput.options.methods.genDefaultSlot.call(this))\n },\n genInputSlot () {\n const render = VInput.options.methods.genInputSlot.call(this)\n\n delete render.data!.on!.click\n\n return render\n },\n genLabel () {\n const label = VInput.options.methods.genLabel.call(this)\n\n if (!label) return null\n\n label.data!.attrs!.id = this.computedId\n // WAI considers this an orphaned label\n delete label.data!.attrs!.for\n label.tag = 'legend'\n\n return label\n },\n onClick: BaseItemGroup.options.methods.onClick,\n },\n\n render (h) {\n const vnode = VInput.options.render.call(this, h)\n\n this._b(vnode.data!, 'div', this.attrs$)\n\n return vnode\n },\n})\n","// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default Themeable.extend({\n name: 'v-theme-provider',\n\n props: { root: Boolean },\n\n computed: {\n isDark (): boolean {\n return this.root\n ? this.rootIsDark\n : Themeable.options.computed.isDark.call(this)\n },\n },\n\n render (): VNode {\n /* istanbul ignore next */\n return (\n this.$slots.default! &&\n this.$slots.default!.find(node => !node.isComment && node.text !== ' ')!\n )\n },\n})\n","// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Routable from '../../mixins/routable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport { keyCodes } from './../../util/helpers'\nimport mixins from '../../util/mixins'\nimport { ExtractVue } from './../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\n// Components\nimport VTabsBar from '../VTabs/VTabsBar'\n\nconst baseMixins = mixins(\n Routable,\n // Must be after routable\n // to overwrite activeClass\n GroupableFactory('tabsBar'),\n Themeable\n)\n\ntype VTabBarInstance = InstanceType\n\ninterface options extends ExtractVue {\n $el: HTMLElement\n tabsBar: VTabBarInstance\n}\n\nexport default baseMixins.extend().extend(\n /* @vue/component */\n).extend({\n name: 'v-tab',\n\n props: {\n ripple: {\n type: [Boolean, Object],\n default: true,\n },\n },\n\n data: () => ({\n proxyClass: 'v-tab--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-tab': true,\n ...Routable.options.computed.classes.call(this),\n 'v-tab--disabled': this.disabled,\n ...this.groupClasses,\n }\n },\n value (): any {\n let to = this.to || this.href\n\n if (to == null) return to\n\n if (this.$router &&\n this.to === Object(this.to)\n ) {\n const resolve = this.$router.resolve(\n this.to,\n this.$route,\n this.append\n )\n\n to = resolve.href\n }\n\n return to.replace('#', '')\n },\n },\n\n methods: {\n click (e: KeyboardEvent | MouseEvent): void {\n // Prevent keyboard actions\n // from children elements\n // within disabled tabs\n if (this.disabled) {\n e.preventDefault()\n return\n }\n\n // If user provides an\n // actual link, do not\n // prevent default\n if (this.href &&\n this.href.indexOf('#') > -1\n ) e.preventDefault()\n\n if (e.detail) this.$el.blur()\n\n this.$emit('click', e)\n\n this.to || this.toggle()\n },\n toggle () {\n // VItemGroup treats a change event as a click\n if (!this.isActive || (!this.tabsBar.mandatory && !this.to)) {\n this.$emit('change')\n }\n },\n },\n\n render (h): VNode {\n const { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n 'aria-selected': String(this.isActive),\n role: 'tab',\n tabindex: 0,\n }\n data.on = {\n ...data.on,\n keydown: (e: KeyboardEvent) => {\n if (e.keyCode === keyCodes.enter) this.click(e)\n\n this.$emit('keydown', e)\n },\n }\n\n return h(tag, data, this.$slots.default)\n },\n})\n","// Styles\nimport './VSlideGroup.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport { VFadeTransition } from '../transitions'\n\n// Extensions\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\n\n// Directives\nimport Resize from '../../directives/resize'\nimport Touch from '../../directives/touch'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode } from 'vue'\nimport { composedPath } from '../../util/helpers'\n\ninterface TouchEvent {\n touchstartX: number\n touchstartY: number\n touchmoveX: number\n touchmoveY: number\n stopPropagation: Function\n}\n\ninterface Widths {\n content: number\n wrapper: number\n}\n\ninterface options extends Vue {\n $refs: {\n content: HTMLElement\n wrapper: HTMLElement\n }\n}\n\nfunction bias (val: number) {\n const c = 0.501\n const x = Math.abs(val)\n return Math.sign(val) * (x / ((1 / c - 2) * (1 - x) + 1))\n}\n\nexport function calculateUpdatedOffset (\n selectedElement: HTMLElement,\n widths: Widths,\n rtl: boolean,\n currentScrollOffset: number\n): number {\n const clientWidth = selectedElement.clientWidth\n const offsetLeft = rtl\n ? (widths.content - selectedElement.offsetLeft - clientWidth)\n : selectedElement.offsetLeft\n\n if (rtl) {\n currentScrollOffset = -currentScrollOffset\n }\n\n const totalWidth = widths.wrapper + currentScrollOffset\n const itemOffset = clientWidth + offsetLeft\n const additionalOffset = clientWidth * 0.4\n\n if (offsetLeft <= currentScrollOffset) {\n currentScrollOffset = Math.max(offsetLeft - additionalOffset, 0)\n } else if (totalWidth <= itemOffset) {\n currentScrollOffset = Math.min(currentScrollOffset - (totalWidth - itemOffset - additionalOffset), widths.content - widths.wrapper)\n }\n\n return rtl ? -currentScrollOffset : currentScrollOffset\n}\n\nexport function calculateCenteredOffset (\n selectedElement: HTMLElement,\n widths: Widths,\n rtl: boolean\n): number {\n const { offsetLeft, clientWidth } = selectedElement\n\n if (rtl) {\n const offsetCentered = widths.content - offsetLeft - clientWidth / 2 - widths.wrapper / 2\n return -Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered))\n } else {\n const offsetCentered = offsetLeft + clientWidth / 2 - widths.wrapper / 2\n return Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered))\n }\n}\n\nexport const BaseSlideGroup = mixins\n/* eslint-enable indent */\n>(\n BaseItemGroup,\n Mobile,\n /* @vue/component */\n).extend({\n name: 'base-slide-group',\n\n directives: {\n Resize,\n Touch,\n },\n\n props: {\n activeClass: {\n type: String,\n default: 'v-slide-item--active',\n },\n centerActive: Boolean,\n nextIcon: {\n type: String,\n default: '$next',\n },\n prevIcon: {\n type: String,\n default: '$prev',\n },\n showArrows: {\n type: [Boolean, String],\n validator: v => (\n typeof v === 'boolean' || [\n 'always',\n 'desktop',\n 'mobile',\n ].includes(v)\n ),\n },\n },\n\n data: () => ({\n internalItemsLength: 0,\n isOverflowing: false,\n resizeTimeout: 0,\n startX: 0,\n isSwipingHorizontal: false,\n isSwiping: false,\n scrollOffset: 0,\n widths: {\n content: 0,\n wrapper: 0,\n },\n }),\n\n computed: {\n canTouch (): boolean {\n return typeof window !== 'undefined'\n },\n __cachedNext (): VNode {\n return this.genTransition('next')\n },\n __cachedPrev (): VNode {\n return this.genTransition('prev')\n },\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-slide-group': true,\n 'v-slide-group--has-affixes': this.hasAffixes,\n 'v-slide-group--is-overflowing': this.isOverflowing,\n }\n },\n hasAffixes (): Boolean {\n switch (this.showArrows) {\n // Always show arrows on desktop & mobile\n case 'always': return true\n\n // Always show arrows on desktop\n case 'desktop': return !this.isMobile\n\n // Show arrows on mobile when overflowing.\n // This matches the default 2.2 behavior\n case true: return this.isOverflowing || Math.abs(this.scrollOffset) > 0\n\n // Always show on mobile\n case 'mobile': return (\n this.isMobile ||\n (this.isOverflowing || Math.abs(this.scrollOffset) > 0)\n )\n\n // https://material.io/components/tabs#scrollable-tabs\n // Always show arrows when\n // overflowed on desktop\n default: return (\n !this.isMobile &&\n (this.isOverflowing || Math.abs(this.scrollOffset) > 0)\n )\n }\n },\n hasNext (): boolean {\n if (!this.hasAffixes) return false\n\n const { content, wrapper } = this.widths\n\n // Check one scroll ahead to know the width of right-most item\n return content > Math.abs(this.scrollOffset) + wrapper\n },\n hasPrev (): boolean {\n return this.hasAffixes && this.scrollOffset !== 0\n },\n },\n\n watch: {\n internalValue: 'setWidths',\n // When overflow changes, the arrows alter\n // the widths of the content and wrapper\n // and need to be recalculated\n isOverflowing: 'setWidths',\n scrollOffset (val) {\n const scroll =\n val <= 0\n ? bias(-val)\n : val > this.widths.content - this.widths.wrapper\n ? -(this.widths.content - this.widths.wrapper) + bias(this.widths.content - this.widths.wrapper - val)\n : -val\n\n this.$refs.content.style.transform = `translateX(${scroll}px)`\n },\n },\n\n beforeUpdate () {\n this.internalItemsLength = (this.$children || []).length\n },\n\n updated () {\n if (this.internalItemsLength === (this.$children || []).length) return\n this.setWidths()\n },\n\n methods: {\n onScroll () {\n this.$refs.wrapper.scrollLeft = 0\n },\n onFocusin (e: FocusEvent) {\n if (!this.isOverflowing) return\n\n // Focused element is likely to be the root of an item, so a\n // breadth-first search will probably find it in the first iteration\n for (const el of composedPath(e)) {\n for (const vm of this.items) {\n if (vm.$el === el) {\n this.scrollOffset = calculateUpdatedOffset(\n vm.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl,\n this.scrollOffset\n )\n return\n }\n }\n }\n },\n // Always generate next for scrollable hint\n genNext (): VNode | null {\n const slot = this.$scopedSlots.next\n ? this.$scopedSlots.next({})\n : this.$slots.next || this.__cachedNext\n\n return this.$createElement('div', {\n staticClass: 'v-slide-group__next',\n class: {\n 'v-slide-group__next--disabled': !this.hasNext,\n },\n on: {\n click: () => this.onAffixClick('next'),\n },\n key: 'next',\n }, [slot])\n },\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__content',\n ref: 'content',\n on: {\n focusin: this.onFocusin,\n },\n }, this.$slots.default)\n },\n genData (): object {\n return {\n class: this.classes,\n directives: [{\n name: 'resize',\n value: this.onResize,\n }],\n }\n },\n genIcon (location: 'prev' | 'next'): VNode | null {\n let icon = location\n\n if (this.$vuetify.rtl && location === 'prev') {\n icon = 'next'\n } else if (this.$vuetify.rtl && location === 'next') {\n icon = 'prev'\n }\n\n const upperLocation = `${location[0].toUpperCase()}${location.slice(1)}`\n const hasAffix = (this as any)[`has${upperLocation}`]\n\n if (\n !this.showArrows &&\n !hasAffix\n ) return null\n\n return this.$createElement(VIcon, {\n props: {\n disabled: !hasAffix,\n },\n }, (this as any)[`${icon}Icon`])\n },\n // Always generate prev for scrollable hint\n genPrev (): VNode | null {\n const slot = this.$scopedSlots.prev\n ? this.$scopedSlots.prev({})\n : this.$slots.prev || this.__cachedPrev\n\n return this.$createElement('div', {\n staticClass: 'v-slide-group__prev',\n class: {\n 'v-slide-group__prev--disabled': !this.hasPrev,\n },\n on: {\n click: () => this.onAffixClick('prev'),\n },\n key: 'prev',\n }, [slot])\n },\n genTransition (location: 'prev' | 'next') {\n return this.$createElement(VFadeTransition, [this.genIcon(location)])\n },\n genWrapper (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__wrapper',\n directives: [{\n name: 'touch',\n value: {\n start: (e: TouchEvent) => this.overflowCheck(e, this.onTouchStart),\n move: (e: TouchEvent) => this.overflowCheck(e, this.onTouchMove),\n end: (e: TouchEvent) => this.overflowCheck(e, this.onTouchEnd),\n },\n }],\n ref: 'wrapper',\n on: {\n scroll: this.onScroll,\n },\n }, [this.genContent()])\n },\n calculateNewOffset (direction: 'prev' | 'next', widths: Widths, rtl: boolean, currentScrollOffset: number) {\n const sign = rtl ? -1 : 1\n const newAbosluteOffset = sign * currentScrollOffset +\n (direction === 'prev' ? -1 : 1) * widths.wrapper\n\n return sign * Math.max(Math.min(newAbosluteOffset, widths.content - widths.wrapper), 0)\n },\n onAffixClick (location: 'prev' | 'next') {\n this.$emit(`click:${location}`)\n this.scrollTo(location)\n },\n onResize () {\n /* istanbul ignore next */\n if (this._isDestroyed) return\n\n this.setWidths()\n },\n onTouchStart (e: TouchEvent) {\n const { content } = this.$refs\n\n this.startX = this.scrollOffset + e.touchstartX as number\n\n content.style.setProperty('transition', 'none')\n content.style.setProperty('willChange', 'transform')\n },\n onTouchMove (e: TouchEvent) {\n if (!this.canTouch) return\n\n if (!this.isSwiping) {\n // only calculate disableSwipeHorizontal during the first onTouchMove invoke\n // in order to ensure disableSwipeHorizontal value is consistent between onTouchStart and onTouchEnd\n const diffX = e.touchmoveX - e.touchstartX\n const diffY = e.touchmoveY - e.touchstartY\n this.isSwipingHorizontal = Math.abs(diffX) > Math.abs(diffY)\n this.isSwiping = true\n }\n\n if (this.isSwipingHorizontal) {\n // sliding horizontally\n this.scrollOffset = this.startX - e.touchmoveX\n // temporarily disable window vertical scrolling\n document.documentElement.style.overflowY = 'hidden'\n }\n },\n onTouchEnd () {\n if (!this.canTouch) return\n\n const { content, wrapper } = this.$refs\n const maxScrollOffset = content.clientWidth - wrapper.clientWidth\n\n content.style.setProperty('transition', null)\n content.style.setProperty('willChange', null)\n\n if (this.$vuetify.rtl) {\n /* istanbul ignore else */\n if (this.scrollOffset > 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset <= -maxScrollOffset) {\n this.scrollOffset = -maxScrollOffset\n }\n } else {\n /* istanbul ignore else */\n if (this.scrollOffset < 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset >= maxScrollOffset) {\n this.scrollOffset = maxScrollOffset\n }\n }\n\n this.isSwiping = false\n // rollback whole page scrolling to default\n document.documentElement.style.removeProperty('overflow-y')\n },\n overflowCheck (e: TouchEvent, fn: (e: TouchEvent) => void) {\n e.stopPropagation()\n this.isOverflowing && fn(e)\n },\n scrollIntoView /* istanbul ignore next */ () {\n if (!this.selectedItem && this.items.length) {\n const lastItemPosition = this.items[this.items.length - 1].$el.getBoundingClientRect()\n const wrapperPosition = this.$refs.wrapper.getBoundingClientRect()\n\n if (\n (this.$vuetify.rtl && wrapperPosition.right < lastItemPosition.right) ||\n (!this.$vuetify.rtl && wrapperPosition.left > lastItemPosition.left)\n ) {\n this.scrollTo('prev')\n }\n }\n\n if (!this.selectedItem) {\n return\n }\n\n if (\n this.selectedIndex === 0 ||\n (!this.centerActive && !this.isOverflowing)\n ) {\n this.scrollOffset = 0\n } else if (this.centerActive) {\n this.scrollOffset = calculateCenteredOffset(\n this.selectedItem.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl\n )\n } else if (this.isOverflowing) {\n this.scrollOffset = calculateUpdatedOffset(\n this.selectedItem.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl,\n this.scrollOffset\n )\n }\n },\n scrollTo /* istanbul ignore next */ (location: 'prev' | 'next') {\n this.scrollOffset = this.calculateNewOffset(location, {\n // Force reflow\n content: this.$refs.content ? this.$refs.content.clientWidth : 0,\n wrapper: this.$refs.wrapper ? this.$refs.wrapper.clientWidth : 0,\n }, this.$vuetify.rtl, this.scrollOffset)\n },\n setWidths /* istanbul ignore next */ () {\n window.requestAnimationFrame(() => {\n const { content, wrapper } = this.$refs\n\n this.widths = {\n content: content ? content.clientWidth : 0,\n wrapper: wrapper ? wrapper.clientWidth : 0,\n }\n\n // https://github.com/vuetifyjs/vuetify/issues/13212\n // We add +1 to the wrappers width to prevent an issue where the `clientWidth`\n // gets calculated wrongly by the browser if using a different zoom-level.\n this.isOverflowing = this.widths.wrapper + 1 < this.widths.content\n\n this.scrollIntoView()\n })\n },\n },\n\n render (h): VNode {\n return h('div', this.genData(), [\n this.genPrev(),\n this.genWrapper(),\n this.genNext(),\n ])\n },\n})\n\nexport default BaseSlideGroup.extend({\n name: 'v-slide-group',\n\n provide (): object {\n return {\n slideGroup: this,\n }\n },\n})\n","// Styles\nimport './VTextField.sass'\n\n// Extensions\nimport VInput from '../VInput'\n\n// Components\nimport VCounter from '../VCounter'\nimport VLabel from '../VLabel'\n\n// Mixins\nimport Intersectable from '../../mixins/intersectable'\nimport Loadable from '../../mixins/loadable'\nimport Validatable from '../../mixins/validatable'\n\n// Directives\nimport resize from '../../directives/resize'\nimport ripple from '../../directives/ripple'\n\n// Utilities\nimport { attachedRoot } from '../../util/dom'\nimport { convertToUnit, keyCodes } from '../../util/helpers'\nimport { breaking, consoleWarn } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, PropType } from 'vue/types'\n\nconst baseMixins = mixins(\n VInput,\n Intersectable({\n onVisible: [\n 'onResize',\n 'tryAutofocus',\n ],\n }),\n Loadable,\n)\ninterface options extends InstanceType {\n $refs: {\n label: HTMLElement\n input: HTMLInputElement\n 'prepend-inner': HTMLElement\n prefix: HTMLElement\n suffix: HTMLElement\n }\n}\n\nconst dirtyTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month']\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-text-field',\n\n directives: {\n resize,\n ripple,\n },\n\n inheritAttrs: false,\n\n props: {\n appendOuterIcon: String,\n autofocus: Boolean,\n clearable: Boolean,\n clearIcon: {\n type: String,\n default: '$clear',\n },\n counter: [Boolean, Number, String],\n counterValue: Function as PropType<(value: any) => number>,\n filled: Boolean,\n flat: Boolean,\n fullWidth: Boolean,\n label: String,\n outlined: Boolean,\n placeholder: String,\n prefix: String,\n prependInnerIcon: String,\n persistentPlaceholder: Boolean,\n reverse: Boolean,\n rounded: Boolean,\n shaped: Boolean,\n singleLine: Boolean,\n solo: Boolean,\n soloInverted: Boolean,\n suffix: String,\n type: {\n type: String,\n default: 'text',\n },\n },\n\n data: () => ({\n badInput: false,\n labelWidth: 0,\n prefixWidth: 0,\n prependWidth: 0,\n initialValue: null,\n isBooted: false,\n isClearing: false,\n }),\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-text-field': true,\n 'v-text-field--full-width': this.fullWidth,\n 'v-text-field--prefix': this.prefix,\n 'v-text-field--single-line': this.isSingle,\n 'v-text-field--solo': this.isSolo,\n 'v-text-field--solo-inverted': this.soloInverted,\n 'v-text-field--solo-flat': this.flat,\n 'v-text-field--filled': this.filled,\n 'v-text-field--is-booted': this.isBooted,\n 'v-text-field--enclosed': this.isEnclosed,\n 'v-text-field--reverse': this.reverse,\n 'v-text-field--outlined': this.outlined,\n 'v-text-field--placeholder': this.placeholder,\n 'v-text-field--rounded': this.rounded,\n 'v-text-field--shaped': this.shaped,\n }\n },\n computedColor (): string | undefined {\n const computedColor = Validatable.options.computed.computedColor.call(this)\n\n if (!this.soloInverted || !this.isFocused) return computedColor\n\n return this.color || 'primary'\n },\n computedCounterValue (): number {\n if (typeof this.counterValue === 'function') {\n return this.counterValue(this.internalValue)\n }\n return [...(this.internalValue || '').toString()].length\n },\n hasCounter (): boolean {\n return this.counter !== false && this.counter != null\n },\n hasDetails (): boolean {\n return VInput.options.computed.hasDetails.call(this) || this.hasCounter\n },\n internalValue: {\n get (): any {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n this.$emit('input', this.lazyValue)\n },\n },\n isDirty (): boolean {\n return this.lazyValue?.toString().length > 0 || this.badInput\n },\n isEnclosed (): boolean {\n return (\n this.filled ||\n this.isSolo ||\n this.outlined\n )\n },\n isLabelActive (): boolean {\n return this.isDirty || dirtyTypes.includes(this.type)\n },\n isSingle (): boolean {\n return (\n this.isSolo ||\n this.singleLine ||\n this.fullWidth ||\n // https://material.io/components/text-fields/#filled-text-field\n (this.filled && !this.hasLabel)\n )\n },\n isSolo (): boolean {\n return this.solo || this.soloInverted\n },\n labelPosition (): Record<'left' | 'right', string | number | undefined> {\n let offset = (this.prefix && !this.labelValue) ? this.prefixWidth : 0\n\n if (this.labelValue && this.prependWidth) offset -= this.prependWidth\n\n return (this.$vuetify.rtl === this.reverse) ? {\n left: offset,\n right: 'auto',\n } : {\n left: 'auto',\n right: offset,\n }\n },\n showLabel (): boolean {\n return this.hasLabel && !(this.isSingle && this.labelValue)\n },\n labelValue (): boolean {\n return this.isFocused || this.isLabelActive || this.persistentPlaceholder\n },\n },\n\n watch: {\n // labelValue: 'setLabelWidth', // moved to mounted, see #11533\n outlined: 'setLabelWidth',\n label () {\n this.$nextTick(this.setLabelWidth)\n },\n prefix () {\n this.$nextTick(this.setPrefixWidth)\n },\n isFocused: 'updateValue',\n value (val) {\n this.lazyValue = val\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('box')) {\n breaking('box', 'filled', this)\n }\n\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('browser-autocomplete')) {\n breaking('browser-autocomplete', 'autocomplete', this)\n }\n\n /* istanbul ignore if */\n if (this.shaped && !(this.filled || this.outlined || this.isSolo)) {\n consoleWarn('shaped should be used with either filled or outlined', this)\n }\n },\n\n mounted () {\n // #11533\n this.$watch(() => this.labelValue, this.setLabelWidth)\n this.autofocus && this.tryAutofocus()\n requestAnimationFrame(() => {\n this.isBooted = true\n requestAnimationFrame(() => {\n if (!this.isIntersecting) {\n this.onResize()\n }\n })\n })\n },\n\n methods: {\n /** @public */\n focus () {\n this.onFocus()\n },\n /** @public */\n blur (e?: Event) {\n // https://github.com/vuetifyjs/vuetify/issues/5913\n // Safari tab order gets broken if called synchronous\n window.requestAnimationFrame(() => {\n this.$refs.input && this.$refs.input.blur()\n })\n },\n clearableCallback () {\n this.$refs.input && this.$refs.input.focus()\n this.$nextTick(() => this.internalValue = null)\n },\n genAppendSlot () {\n const slot = []\n\n if (this.$slots['append-outer']) {\n slot.push(this.$slots['append-outer'] as VNode[])\n } else if (this.appendOuterIcon) {\n slot.push(this.genIcon('appendOuter'))\n }\n\n return this.genSlot('append', 'outer', slot)\n },\n genPrependInnerSlot () {\n const slot = []\n\n if (this.$slots['prepend-inner']) {\n slot.push(this.$slots['prepend-inner'] as VNode[])\n } else if (this.prependInnerIcon) {\n slot.push(this.genIcon('prependInner'))\n }\n\n return this.genSlot('prepend', 'inner', slot)\n },\n genIconSlot () {\n const slot = []\n\n if (this.$slots.append) {\n slot.push(this.$slots.append as VNode[])\n } else if (this.appendIcon) {\n slot.push(this.genIcon('append'))\n }\n\n return this.genSlot('append', 'inner', slot)\n },\n genInputSlot () {\n const input = VInput.options.methods.genInputSlot.call(this)\n\n const prepend = this.genPrependInnerSlot()\n\n if (prepend) {\n input.children = input.children || []\n input.children.unshift(prepend)\n }\n\n return input\n },\n genClearIcon () {\n if (!this.clearable) return null\n\n // if the text field has no content then don't display the clear icon.\n // We add an empty div because other controls depend on a ref to append inner\n if (!this.isDirty) {\n return this.genSlot('append', 'inner', [\n this.$createElement('div'),\n ])\n }\n\n return this.genSlot('append', 'inner', [\n this.genIcon('clear', this.clearableCallback),\n ])\n },\n genCounter () {\n if (!this.hasCounter) return null\n\n const max = this.counter === true ? this.attrs$.maxlength : this.counter\n\n const props = {\n dark: this.dark,\n light: this.light,\n max,\n value: this.computedCounterValue,\n }\n\n return this.$scopedSlots.counter?.({ props }) ?? this.$createElement(VCounter, { props })\n },\n genControl () {\n return VInput.options.methods.genControl.call(this)\n },\n genDefaultSlot () {\n return [\n this.genFieldset(),\n this.genTextFieldSlot(),\n this.genClearIcon(),\n this.genIconSlot(),\n this.genProgress(),\n ]\n },\n genFieldset () {\n if (!this.outlined) return null\n\n return this.$createElement('fieldset', {\n attrs: {\n 'aria-hidden': true,\n },\n }, [this.genLegend()])\n },\n genLabel () {\n if (!this.showLabel) return null\n\n const data = {\n props: {\n absolute: true,\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n focused: !this.isSingle && (this.isFocused || !!this.validationState),\n for: this.computedId,\n left: this.labelPosition.left,\n light: this.light,\n right: this.labelPosition.right,\n value: this.labelValue,\n },\n }\n\n return this.$createElement(VLabel, data, this.$slots.label || this.label)\n },\n genLegend () {\n const width = !this.singleLine && (this.labelValue || this.isDirty) ? this.labelWidth : 0\n const span = this.$createElement('span', {\n domProps: { innerHTML: '​' },\n staticClass: 'notranslate',\n })\n\n return this.$createElement('legend', {\n style: {\n width: !this.isSingle ? convertToUnit(width) : undefined,\n },\n }, [span])\n },\n genInput () {\n const listeners = Object.assign({}, this.listeners$)\n delete listeners.change // Change should not be bound externally\n const { title, ...inputAttrs } = this.attrs$\n\n return this.$createElement('input', {\n style: {},\n domProps: {\n value: (this.type === 'number' && Object.is(this.lazyValue, -0)) ? '-0' : this.lazyValue,\n },\n attrs: {\n ...inputAttrs,\n autofocus: this.autofocus,\n disabled: this.isDisabled,\n id: this.computedId,\n placeholder: this.persistentPlaceholder || this.isFocused || !this.hasLabel ? this.placeholder : undefined,\n readonly: this.isReadonly,\n type: this.type,\n },\n on: Object.assign(listeners, {\n blur: this.onBlur,\n input: this.onInput,\n focus: this.onFocus,\n keydown: this.onKeyDown,\n }),\n ref: 'input',\n directives: [{\n name: 'resize',\n modifiers: { quiet: true },\n value: this.onResize,\n }],\n })\n },\n genMessages () {\n if (!this.showDetails) return null\n\n const messagesNode = VInput.options.methods.genMessages.call(this)\n const counterNode = this.genCounter()\n\n return this.$createElement('div', {\n staticClass: 'v-text-field__details',\n }, [\n messagesNode,\n counterNode,\n ])\n },\n genTextFieldSlot () {\n return this.$createElement('div', {\n staticClass: 'v-text-field__slot',\n }, [\n this.genLabel(),\n this.prefix ? this.genAffix('prefix') : null,\n this.genInput(),\n this.suffix ? this.genAffix('suffix') : null,\n ])\n },\n genAffix (type: 'prefix' | 'suffix') {\n return this.$createElement('div', {\n class: `v-text-field__${type}`,\n ref: type,\n }, this[type])\n },\n onBlur (e?: Event) {\n this.isFocused = false\n e && this.$nextTick(() => this.$emit('blur', e))\n },\n onClick () {\n if (this.isFocused || this.isDisabled || !this.$refs.input) return\n\n this.$refs.input.focus()\n },\n onFocus (e?: Event) {\n if (!this.$refs.input) return\n\n const root = attachedRoot(this.$el)\n if (!root) return\n\n if (root.activeElement !== this.$refs.input) {\n return this.$refs.input.focus()\n }\n\n if (!this.isFocused) {\n this.isFocused = true\n e && this.$emit('focus', e)\n }\n },\n onInput (e: Event) {\n const target = e.target as HTMLInputElement\n this.internalValue = target.value\n this.badInput = target.validity && target.validity.badInput\n },\n onKeyDown (e: KeyboardEvent) {\n if (\n e.keyCode === keyCodes.enter &&\n this.lazyValue !== this.initialValue\n ) {\n this.initialValue = this.lazyValue\n this.$emit('change', this.initialValue)\n }\n\n this.$emit('keydown', e)\n },\n onMouseDown (e: Event) {\n // Prevent input from being blurred\n if (e.target !== this.$refs.input) {\n e.preventDefault()\n e.stopPropagation()\n }\n\n VInput.options.methods.onMouseDown.call(this, e)\n },\n onMouseUp (e: Event) {\n if (this.hasMouseDown) this.focus()\n\n VInput.options.methods.onMouseUp.call(this, e)\n },\n setLabelWidth () {\n if (!this.outlined) return\n\n this.labelWidth = this.$refs.label\n ? Math.min(this.$refs.label.scrollWidth * 0.75 + 6, (this.$el as HTMLElement).offsetWidth - 24)\n : 0\n },\n setPrefixWidth () {\n if (!this.$refs.prefix) return\n\n this.prefixWidth = this.$refs.prefix.offsetWidth\n },\n setPrependWidth () {\n if (!this.outlined || !this.$refs['prepend-inner']) return\n\n this.prependWidth = this.$refs['prepend-inner'].offsetWidth\n },\n tryAutofocus () {\n if (\n !this.autofocus ||\n typeof document === 'undefined' ||\n !this.$refs.input) return false\n\n const root = attachedRoot(this.$el)\n if (!root || root.activeElement === this.$refs.input) return false\n\n this.$refs.input.focus()\n\n return true\n },\n updateValue (val: boolean) {\n // Sets validationState from validatable\n this.hasColor = val\n\n if (val) {\n this.initialValue = this.lazyValue\n } else if (this.initialValue !== this.lazyValue) {\n this.$emit('change', this.lazyValue)\n }\n },\n onResize () {\n this.setLabelWidth()\n this.setPrefixWidth()\n this.setPrependWidth()\n },\n },\n})\n","import './VProgressLinear.sass'\n\n// Components\nimport {\n VFadeTransition,\n VSlideXTransition,\n} from '../transitions'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as PositionableFactory } from '../../mixins/positionable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { FunctionalComponentOptions } from 'vue/types'\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Colorable,\n PositionableFactory(['absolute', 'fixed', 'top', 'bottom']),\n Proxyable,\n Themeable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-progress-linear',\n\n directives: { intersect },\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n backgroundColor: {\n type: String,\n default: null,\n },\n backgroundOpacity: {\n type: [Number, String],\n default: null,\n },\n bufferValue: {\n type: [Number, String],\n default: 100,\n },\n color: {\n type: String,\n default: 'primary',\n },\n height: {\n type: [Number, String],\n default: 4,\n },\n indeterminate: Boolean,\n query: Boolean,\n reverse: Boolean,\n rounded: Boolean,\n stream: Boolean,\n striped: Boolean,\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data () {\n return {\n internalLazyValue: this.value || 0,\n isVisible: true,\n }\n },\n\n computed: {\n __cachedBackground (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.backgroundColor || this.color, {\n staticClass: 'v-progress-linear__background',\n style: this.backgroundStyle,\n }))\n },\n __cachedBar (): VNode {\n return this.$createElement(this.computedTransition, [this.__cachedBarType])\n },\n __cachedBarType (): VNode {\n return this.indeterminate ? this.__cachedIndeterminate : this.__cachedDeterminate\n },\n __cachedBuffer (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__buffer',\n style: this.styles,\n })\n },\n __cachedDeterminate (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: `v-progress-linear__determinate`,\n style: {\n width: convertToUnit(this.normalizedValue, '%'),\n },\n }))\n },\n __cachedIndeterminate (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n 'v-progress-linear__indeterminate--active': this.active,\n },\n }, [\n this.genProgressBar('long'),\n this.genProgressBar('short'),\n ])\n },\n __cachedStream (): VNode | null {\n if (!this.stream) return null\n\n return this.$createElement('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-linear__stream',\n style: {\n width: convertToUnit(100 - this.normalizedBuffer, '%'),\n },\n }))\n },\n backgroundStyle (): object {\n const backgroundOpacity = this.backgroundOpacity == null\n ? (this.backgroundColor ? 1 : 0.3)\n : parseFloat(this.backgroundOpacity)\n\n return {\n opacity: backgroundOpacity,\n [this.isReversed ? 'right' : 'left']: convertToUnit(this.normalizedValue, '%'),\n width: convertToUnit(Math.max(0, this.normalizedBuffer - this.normalizedValue), '%'),\n }\n },\n classes (): object {\n return {\n 'v-progress-linear--absolute': this.absolute,\n 'v-progress-linear--fixed': this.fixed,\n 'v-progress-linear--query': this.query,\n 'v-progress-linear--reactive': this.reactive,\n 'v-progress-linear--reverse': this.isReversed,\n 'v-progress-linear--rounded': this.rounded,\n 'v-progress-linear--striped': this.striped,\n 'v-progress-linear--visible': this.isVisible,\n ...this.themeClasses,\n }\n },\n computedTransition (): FunctionalComponentOptions {\n return this.indeterminate ? VFadeTransition : VSlideXTransition\n },\n isReversed (): boolean {\n return this.$vuetify.rtl !== this.reverse\n },\n normalizedBuffer (): number {\n return this.normalize(this.bufferValue)\n },\n normalizedValue (): number {\n return this.normalize(this.internalLazyValue)\n },\n reactive (): boolean {\n return Boolean(this.$listeners.change)\n },\n styles (): object {\n const styles: Record = {}\n\n if (!this.active) {\n styles.height = 0\n }\n\n if (!this.indeterminate && parseFloat(this.normalizedBuffer) !== 100) {\n styles.width = convertToUnit(this.normalizedBuffer, '%')\n }\n\n return styles\n },\n },\n\n methods: {\n genContent () {\n const slot = getSlot(this, 'default', { value: this.internalLazyValue })\n\n if (!slot) return null\n\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__content',\n }, slot)\n },\n genListeners () {\n const listeners = this.$listeners\n\n if (this.reactive) {\n listeners.click = this.onClick\n }\n\n return listeners\n },\n genProgressBar (name: 'long' | 'short') {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n [name]: true,\n },\n }))\n },\n onClick (e: MouseEvent) {\n if (!this.reactive) return\n\n const { width } = this.$el.getBoundingClientRect()\n\n this.internalValue = e.offsetX / width * 100\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n normalize (value: string | number) {\n if (value < 0) return 0\n if (value > 100) return 100\n return parseFloat(value)\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-progress-linear',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': this.normalizedBuffer,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n directives: [{\n name: 'intersect',\n value: this.onObserve,\n }],\n style: {\n bottom: this.bottom ? 0 : undefined,\n height: this.active ? convertToUnit(this.height) : 0,\n top: this.top ? 0 : undefined,\n },\n on: this.genListeners(),\n }\n\n return h('div', data, [\n this.__cachedStream,\n this.__cachedBackground,\n this.__cachedBuffer,\n this.__cachedBar,\n this.genContent(),\n ])\n },\n})\n","// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\n/* @vue/component */\nexport default mixins(Colorable).extend({\n name: 'v-tabs-slider',\n\n render (h): VNode {\n return h('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-tabs-slider',\n }))\n },\n})\n","// Styles\nimport './VTextarea.sass'\n\n// Extensions\nimport VTextField from '../VTextField/VTextField'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport Vue from 'vue'\n\ninterface options extends Vue {\n $refs: {\n input: HTMLTextAreaElement\n }\n}\n\nconst baseMixins = mixins\n>(\n VTextField\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-textarea',\n\n props: {\n autoGrow: Boolean,\n noResize: Boolean,\n rowHeight: {\n type: [Number, String],\n default: 24,\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n rows: {\n type: [Number, String],\n default: 5,\n validator: (v: any) => !isNaN(parseInt(v, 10)),\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-textarea': true,\n 'v-textarea--auto-grow': this.autoGrow,\n 'v-textarea--no-resize': this.noResizeHandle,\n ...VTextField.options.computed.classes.call(this),\n }\n },\n noResizeHandle (): boolean {\n return this.noResize || this.autoGrow\n },\n },\n\n watch: {\n autoGrow (val: boolean) {\n this.$nextTick(() => {\n val\n ? this.calculateInputHeight()\n : this.$refs.input?.style.removeProperty('height')\n })\n },\n lazyValue () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n rowHeight () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n },\n\n mounted () {\n setTimeout(() => {\n this.autoGrow && this.calculateInputHeight()\n }, 0)\n },\n\n methods: {\n calculateInputHeight () {\n const input = this.$refs.input\n if (!input) return\n\n input.style.height = '0'\n const height = input.scrollHeight\n const minHeight = parseInt(this.rows, 10) * parseFloat(this.rowHeight)\n // This has to be done ASAP, waiting for Vue\n // to update the DOM causes ugly layout jumping\n input.style.height = Math.max(minHeight, height) + 'px'\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.tag = 'textarea'\n delete input.data!.attrs!.type\n input.data!.attrs!.rows = this.rows\n\n return input\n },\n onInput (e: Event) {\n VTextField.options.methods.onInput.call(this, e)\n this.autoGrow && this.calculateInputHeight()\n },\n onKeyDown (e: KeyboardEvent) {\n // Prevents closing of a\n // dialog when pressing\n // enter\n if (this.isFocused && e.keyCode === 13) {\n e.stopPropagation()\n }\n\n this.$emit('keydown', e)\n },\n },\n})\n","// Extensions\nimport VWindow from '../VWindow/VWindow'\n\n// Types & Components\nimport { BaseItemGroup, GroupableInstance } from './../VItemGroup/VItemGroup'\n\n/* @vue/component */\nexport default VWindow.extend({\n name: 'v-tabs-items',\n\n props: {\n mandatory: {\n type: Boolean,\n default: false,\n },\n },\n\n computed: {\n classes (): object {\n return {\n ...VWindow.options.computed.classes.call(this),\n 'v-tabs-items': true,\n }\n },\n isDark (): boolean {\n return this.rootIsDark\n },\n },\n\n methods: {\n getValue (item: GroupableInstance, i: number) {\n return item.id || BaseItemGroup.options.methods.getValue.call(this, item, i)\n },\n },\n})\n","import './VTimePickerTitle.sass'\n\n// Mixins\nimport PickerButton from '../../mixins/picker-button'\n\n// Utils\nimport { pad } from '../VDatePicker/util'\nimport mixins from '../../util/mixins'\n\nimport { SelectingTimes } from './SelectingTimes'\nimport { VNode, PropType } from 'vue'\n\nexport default mixins(\n PickerButton\n/* @vue/component */\n).extend({\n name: 'v-time-picker-title',\n\n props: {\n ampm: Boolean,\n ampmReadonly: Boolean,\n disabled: Boolean,\n hour: Number,\n minute: Number,\n second: Number,\n period: {\n type: String as PropType<'am' | 'pm'>,\n validator: period => period === 'am' || period === 'pm',\n },\n readonly: Boolean,\n useSeconds: Boolean,\n selecting: Number,\n },\n\n methods: {\n genTime () {\n let hour = this.hour\n if (this.ampm) {\n hour = hour ? ((hour - 1) % 12 + 1) : 12\n }\n\n const displayedHour = this.hour == null ? '--' : this.ampm ? String(hour) : pad(hour)\n const displayedMinute = this.minute == null ? '--' : pad(this.minute)\n const titleContent = [\n this.genPickerButton('selecting', SelectingTimes.Hour, displayedHour, this.disabled),\n this.$createElement('span', ':'),\n this.genPickerButton('selecting', SelectingTimes.Minute, displayedMinute, this.disabled),\n ]\n\n if (this.useSeconds) {\n const displayedSecond = this.second == null ? '--' : pad(this.second)\n titleContent.push(this.$createElement('span', ':'))\n titleContent.push(this.genPickerButton('selecting', SelectingTimes.Second, displayedSecond, this.disabled))\n }\n return this.$createElement('div', {\n class: 'v-time-picker-title__time',\n }, titleContent)\n },\n genAmPm () {\n return this.$createElement('div', {\n staticClass: 'v-time-picker-title__ampm',\n class: {\n 'v-time-picker-title__ampm--readonly': this.ampmReadonly,\n },\n }, [\n (!this.ampmReadonly || this.period === 'am') ? this.genPickerButton('period', 'am', this.$vuetify.lang.t('$vuetify.timePicker.am'), this.disabled || this.readonly) : null,\n (!this.ampmReadonly || this.period === 'pm') ? this.genPickerButton('period', 'pm', this.$vuetify.lang.t('$vuetify.timePicker.pm'), this.disabled || this.readonly) : null,\n ])\n },\n },\n\n render (h): VNode {\n const children = [this.genTime()]\n\n this.ampm && children.push(this.genAmPm())\n\n return h('div', {\n staticClass: 'v-time-picker-title',\n }, children)\n },\n})\n","// Components\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VDivider from '../VDivider'\nimport VSubheader from '../VSubheader'\nimport {\n VList,\n VListItem,\n VListItemAction,\n VListItemContent,\n VListItemTitle,\n} from '../VList'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport {\n escapeHTML,\n getPropertyFromItem,\n} from '../../util/helpers'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, PropType, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { SelectItemKey } from 'vuetify/types'\n\ntype ListTile = { item: any, disabled?: null | boolean, value?: boolean, index: number };\n\n/* @vue/component */\nexport default mixins(Colorable, Themeable).extend({\n name: 'v-select-list',\n\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n action: Boolean,\n dense: Boolean,\n hideSelected: Boolean,\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n itemDisabled: {\n type: [String, Array, Function] as PropType,\n default: 'disabled',\n },\n itemText: {\n type: [String, Array, Function] as PropType,\n default: 'text',\n },\n itemValue: {\n type: [String, Array, Function] as PropType,\n default: 'value',\n },\n noDataText: String,\n noFilter: Boolean,\n searchInput: null as unknown as PropType,\n selectedItems: {\n type: Array,\n default: () => [],\n } as PropValidator,\n },\n\n computed: {\n parsedItems (): any[] {\n return this.selectedItems.map(item => this.getValue(item))\n },\n tileActiveClass (): string {\n return Object.keys(this.setTextColor(this.color).class || {}).join(' ')\n },\n staticNoDataTile (): VNode {\n const tile = {\n attrs: {\n role: undefined,\n },\n on: {\n mousedown: (e: Event) => e.preventDefault(), // Prevent onBlur from being called\n },\n }\n\n return this.$createElement(VListItem, tile, [\n this.genTileContent(this.noDataText),\n ])\n },\n },\n\n methods: {\n genAction (item: object, inputValue: any): VNode {\n return this.$createElement(VListItemAction, [\n this.$createElement(VSimpleCheckbox, {\n props: {\n color: this.color,\n value: inputValue,\n ripple: false,\n },\n on: {\n input: () => this.$emit('select', item),\n },\n }),\n ])\n },\n genDivider (props: { [key: string]: any }) {\n return this.$createElement(VDivider, { props })\n },\n genFilteredText (text: string) {\n text = text || ''\n\n if (!this.searchInput || this.noFilter) return escapeHTML(text)\n\n const { start, middle, end } = this.getMaskedCharacters(text)\n\n return `${escapeHTML(start)}${this.genHighlight(middle)}${escapeHTML(end)}`\n },\n genHeader (props: { [key: string]: any }): VNode {\n return this.$createElement(VSubheader, { props }, props.header)\n },\n genHighlight (text: string): string {\n return `${escapeHTML(text)}`\n },\n getMaskedCharacters (text: string): {\n start: string\n middle: string\n end: string\n } {\n const searchInput = (this.searchInput || '').toString().toLocaleLowerCase()\n const index = text.toLocaleLowerCase().indexOf(searchInput)\n\n if (index < 0) return { start: text, middle: '', end: '' }\n\n const start = text.slice(0, index)\n const middle = text.slice(index, index + searchInput.length)\n const end = text.slice(index + searchInput.length)\n return { start, middle, end }\n },\n genTile ({\n item,\n index,\n disabled = null,\n value = false,\n }: ListTile): VNode | VNode[] | undefined {\n if (!value) value = this.hasItem(item)\n\n if (item === Object(item)) {\n disabled = disabled !== null\n ? disabled\n : this.getDisabled(item)\n }\n\n const tile = {\n attrs: {\n // Default behavior in list does not\n // contain aria-selected by default\n 'aria-selected': String(value),\n id: `list-item-${this._uid}-${index}`,\n role: 'option',\n },\n on: {\n mousedown: (e: Event) => {\n // Prevent onBlur from being called\n e.preventDefault()\n },\n click: () => disabled || this.$emit('select', item),\n },\n props: {\n activeClass: this.tileActiveClass,\n disabled,\n ripple: true,\n inputValue: value,\n },\n }\n\n if (!this.$scopedSlots.item) {\n return this.$createElement(VListItem, tile, [\n this.action && !this.hideSelected && this.items.length > 0\n ? this.genAction(item, value)\n : null,\n this.genTileContent(item, index),\n ])\n }\n\n const parent = this\n const scopedSlot = this.$scopedSlots.item({\n parent,\n item,\n attrs: {\n ...tile.attrs,\n ...tile.props,\n },\n on: tile.on,\n })\n\n return this.needsTile(scopedSlot)\n ? this.$createElement(VListItem, tile, scopedSlot)\n : scopedSlot\n },\n genTileContent (item: any, index = 0): VNode {\n const innerHTML = this.genFilteredText(this.getText(item))\n\n return this.$createElement(VListItemContent,\n [this.$createElement(VListItemTitle, {\n domProps: { innerHTML },\n })]\n )\n },\n hasItem (item: object) {\n return this.parsedItems.indexOf(this.getValue(item)) > -1\n },\n needsTile (slot: VNode[] | undefined) {\n return slot!.length !== 1 ||\n slot![0].componentOptions == null ||\n slot![0].componentOptions.Ctor.options.name !== 'v-list-item'\n },\n getDisabled (item: object) {\n return Boolean(getPropertyFromItem(item, this.itemDisabled, false))\n },\n getText (item: object) {\n return String(getPropertyFromItem(item, this.itemText, item))\n },\n getValue (item: object) {\n return getPropertyFromItem(item, this.itemValue, this.getText(item))\n },\n },\n\n render (): VNode {\n const children: VNodeChildren = []\n const itemsLength = this.items.length\n for (let index = 0; index < itemsLength; index++) {\n const item = this.items[index]\n\n if (this.hideSelected &&\n this.hasItem(item)\n ) continue\n\n if (item == null) children.push(this.genTile({ item, index }))\n else if (item.header) children.push(this.genHeader(item))\n else if (item.divider) children.push(this.genDivider(item))\n else children.push(this.genTile({ item, index }))\n }\n\n children.length || children.push(this.$slots['no-data'] || this.staticNoDataTile)\n\n this.$slots['prepend-item'] && children.unshift(this.$slots['prepend-item'])\n\n this.$slots['append-item'] && children.push(this.$slots['append-item'])\n\n return this.$createElement(VList, {\n staticClass: 'v-select-list',\n class: this.themeClasses,\n attrs: {\n role: 'listbox',\n tabindex: -1,\n },\n props: { dense: this.dense },\n }, children)\n },\n})\n","// Styles\nimport '../VTextField/VTextField.sass'\nimport './VSelect.sass'\n\n// Components\nimport VChip from '../VChip'\nimport VMenu from '../VMenu'\nimport VSelectList from './VSelectList'\n\n// Extensions\nimport VInput from '../VInput'\nimport VTextField from '../VTextField/VTextField'\n\n// Mixins\nimport Comparable from '../../mixins/comparable'\nimport Dependent from '../../mixins/dependent'\nimport Filterable from '../../mixins/filterable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport { getPropertyFromItem, getObjectValueByPath, keyCodes } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, VNodeDirective, PropType, VNodeData } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { SelectItemKey } from 'vuetify/types'\n\nexport const defaultMenuProps = {\n closeOnClick: false,\n closeOnContentClick: false,\n disableKeys: true,\n openOnClick: false,\n maxHeight: 304,\n}\n\n// Types\nconst baseMixins = mixins(\n VTextField,\n Comparable,\n Dependent,\n Filterable\n)\n\ninterface options extends InstanceType {\n $refs: {\n menu: InstanceType\n content: HTMLElement\n label: HTMLElement\n input: HTMLInputElement\n 'prepend-inner': HTMLElement\n 'append-inner': HTMLElement\n prefix: HTMLElement\n suffix: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-select',\n\n directives: {\n ClickOutside,\n },\n\n props: {\n appendIcon: {\n type: String,\n default: '$dropdown',\n },\n attach: {\n type: null as unknown as PropType,\n default: false,\n },\n cacheItems: Boolean,\n chips: Boolean,\n clearable: Boolean,\n deletableChips: Boolean,\n disableLookup: Boolean,\n eager: Boolean,\n hideSelected: Boolean,\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n itemColor: {\n type: String,\n default: 'primary',\n },\n itemDisabled: {\n type: [String, Array, Function] as PropType,\n default: 'disabled',\n },\n itemText: {\n type: [String, Array, Function] as PropType,\n default: 'text',\n },\n itemValue: {\n type: [String, Array, Function] as PropType,\n default: 'value',\n },\n menuProps: {\n type: [String, Array, Object],\n default: () => defaultMenuProps,\n },\n multiple: Boolean,\n openOnClear: Boolean,\n returnObject: Boolean,\n smallChips: Boolean,\n },\n\n data () {\n return {\n cachedItems: this.cacheItems ? this.items : [],\n menuIsBooted: false,\n isMenuActive: false,\n lastItem: 20,\n // As long as a value is defined, show it\n // Otherwise, check if multiple\n // to determine which default to provide\n lazyValue: this.value !== undefined\n ? this.value\n : this.multiple ? [] : undefined,\n selectedIndex: -1,\n selectedItems: [] as any[],\n keyboardLookupPrefix: '',\n keyboardLookupLastTime: 0,\n }\n },\n\n computed: {\n /* All items that the select has */\n allItems (): object[] {\n return this.filterDuplicates(this.cachedItems.concat(this.items))\n },\n classes (): object {\n return {\n ...VTextField.options.computed.classes.call(this),\n 'v-select': true,\n 'v-select--chips': this.hasChips,\n 'v-select--chips--small': this.smallChips,\n 'v-select--is-menu-active': this.isMenuActive,\n 'v-select--is-multi': this.multiple,\n }\n },\n /* Used by other components to overwrite */\n computedItems (): object[] {\n return this.allItems\n },\n computedOwns (): string {\n return `list-${this._uid}`\n },\n computedCounterValue (): number {\n const value = this.multiple\n ? this.selectedItems\n : (this.getText(this.selectedItems[0]) || '').toString()\n\n if (typeof this.counterValue === 'function') {\n return this.counterValue(value)\n }\n\n return value.length\n },\n directives (): VNodeDirective[] | undefined {\n return this.isFocused ? [{\n name: 'click-outside',\n value: {\n handler: this.blur,\n closeConditional: this.closeConditional,\n include: () => this.getOpenDependentElements(),\n },\n }] : undefined\n },\n dynamicHeight () {\n return 'auto'\n },\n hasChips (): boolean {\n return this.chips || this.smallChips\n },\n hasSlot (): boolean {\n return Boolean(this.hasChips || this.$scopedSlots.selection)\n },\n isDirty (): boolean {\n return this.selectedItems.length > 0\n },\n listData (): object {\n const scopeId = this.$vnode && (this.$vnode.context!.$options as { [key: string]: any })._scopeId\n const attrs = scopeId ? {\n [scopeId]: true,\n } : {}\n\n return {\n attrs: {\n ...attrs,\n id: this.computedOwns,\n },\n props: {\n action: this.multiple,\n color: this.itemColor,\n dense: this.dense,\n hideSelected: this.hideSelected,\n items: this.virtualizedItems,\n itemDisabled: this.itemDisabled,\n itemText: this.itemText,\n itemValue: this.itemValue,\n noDataText: this.$vuetify.lang.t(this.noDataText),\n selectedItems: this.selectedItems,\n },\n on: {\n select: this.selectItem,\n },\n scopedSlots: {\n item: this.$scopedSlots.item,\n },\n }\n },\n staticList (): VNode {\n if (this.$slots['no-data'] || this.$slots['prepend-item'] || this.$slots['append-item']) {\n consoleError('assert: staticList should not be called if slots are used')\n }\n\n return this.$createElement(VSelectList, this.listData)\n },\n virtualizedItems (): object[] {\n return (this.$_menuProps as any).auto\n ? this.computedItems\n : this.computedItems.slice(0, this.lastItem)\n },\n menuCanShow: () => true,\n $_menuProps (): object {\n let normalisedProps = typeof this.menuProps === 'string'\n ? this.menuProps.split(',')\n : this.menuProps\n\n if (Array.isArray(normalisedProps)) {\n normalisedProps = normalisedProps.reduce((acc, p) => {\n acc[p.trim()] = true\n return acc\n }, {})\n }\n\n return {\n ...defaultMenuProps,\n eager: this.eager,\n value: this.menuCanShow && this.isMenuActive,\n nudgeBottom: normalisedProps.offsetY ? 1 : 0, // convert to int\n ...normalisedProps,\n }\n },\n },\n\n watch: {\n internalValue (val) {\n this.initialValue = val\n this.setSelectedItems()\n },\n isMenuActive (val) {\n window.setTimeout(() => this.onMenuActiveChange(val))\n },\n items: {\n immediate: true,\n handler (val) {\n if (this.cacheItems) {\n // Breaks vue-test-utils if\n // this isn't calculated\n // on the next tick\n this.$nextTick(() => {\n this.cachedItems = this.filterDuplicates(this.cachedItems.concat(val))\n })\n }\n\n this.setSelectedItems()\n },\n },\n },\n\n methods: {\n /** @public */\n blur (e?: Event) {\n VTextField.options.methods.blur.call(this, e)\n this.isMenuActive = false\n this.isFocused = false\n this.selectedIndex = -1\n this.setMenuIndex(-1)\n },\n /** @public */\n activateMenu () {\n if (\n !this.isInteractive ||\n this.isMenuActive\n ) return\n\n this.isMenuActive = true\n },\n clearableCallback () {\n this.setValue(this.multiple ? [] : null)\n this.setMenuIndex(-1)\n this.$nextTick(() => this.$refs.input && this.$refs.input.focus())\n\n if (this.openOnClear) this.isMenuActive = true\n },\n closeConditional (e: Event) {\n if (!this.isMenuActive) return true\n\n return (\n !this._isDestroyed &&\n\n // Click originates from outside the menu content\n // Multiple selects don't close when an item is clicked\n (!this.getContent() ||\n !this.getContent().contains(e.target as Node)) &&\n\n // Click originates from outside the element\n this.$el &&\n !this.$el.contains(e.target as Node) &&\n e.target !== this.$el\n )\n },\n filterDuplicates (arr: any[]) {\n const uniqueValues = new Map()\n for (let index = 0; index < arr.length; ++index) {\n const item = arr[index]\n\n // Do not deduplicate headers or dividers (#12517)\n if (item.header || item.divider) {\n uniqueValues.set(item, item)\n continue\n }\n\n const val = this.getValue(item)\n\n // TODO: comparator\n !uniqueValues.has(val) && uniqueValues.set(val, item)\n }\n return Array.from(uniqueValues.values())\n },\n findExistingIndex (item: object) {\n const itemValue = this.getValue(item)\n\n return (this.internalValue || []).findIndex((i: object) => this.valueComparator(this.getValue(i), itemValue))\n },\n getContent () {\n return this.$refs.menu && this.$refs.menu.$refs.content\n },\n genChipSelection (item: object, index: number) {\n const isDisabled = (\n this.isDisabled ||\n this.getDisabled(item)\n )\n const isInteractive = !isDisabled && this.isInteractive\n\n return this.$createElement(VChip, {\n staticClass: 'v-chip--select',\n attrs: { tabindex: -1 },\n props: {\n close: this.deletableChips && isInteractive,\n disabled: isDisabled,\n inputValue: index === this.selectedIndex,\n small: this.smallChips,\n },\n on: {\n click: (e: MouseEvent) => {\n if (!isInteractive) return\n\n e.stopPropagation()\n\n this.selectedIndex = index\n },\n 'click:close': () => this.onChipInput(item),\n },\n key: JSON.stringify(this.getValue(item)),\n }, this.getText(item))\n },\n genCommaSelection (item: object, index: number, last: boolean) {\n const color = index === this.selectedIndex && this.computedColor\n const isDisabled = (\n this.isDisabled ||\n this.getDisabled(item)\n )\n\n return this.$createElement('div', this.setTextColor(color, {\n staticClass: 'v-select__selection v-select__selection--comma',\n class: {\n 'v-select__selection--disabled': isDisabled,\n },\n key: JSON.stringify(this.getValue(item)),\n }), `${this.getText(item)}${last ? '' : ', '}`)\n },\n genDefaultSlot (): (VNode | VNode[] | null)[] {\n const selections = this.genSelections()\n const input = this.genInput()\n\n // If the return is an empty array\n // push the input\n if (Array.isArray(selections)) {\n selections.push(input)\n // Otherwise push it into children\n } else {\n selections.children = selections.children || []\n selections.children.push(input)\n }\n\n return [\n this.genFieldset(),\n this.$createElement('div', {\n staticClass: 'v-select__slot',\n directives: this.directives,\n }, [\n this.genLabel(),\n this.prefix ? this.genAffix('prefix') : null,\n selections,\n this.suffix ? this.genAffix('suffix') : null,\n this.genClearIcon(),\n this.genIconSlot(),\n this.genHiddenInput(),\n ]),\n this.genMenu(),\n this.genProgress(),\n ]\n },\n genIcon (\n type: string,\n cb?: (e: Event) => void,\n extraData?: VNodeData\n ) {\n const icon = VInput.options.methods.genIcon.call(this, type, cb, extraData)\n\n if (type === 'append') {\n // Don't allow the dropdown icon to be focused\n icon.children![0].data = mergeData(icon.children![0].data!, {\n attrs: {\n tabindex: icon.children![0].componentOptions!.listeners && '-1',\n 'aria-hidden': 'true',\n 'aria-label': undefined,\n },\n })\n }\n\n return icon\n },\n genInput (): VNode {\n const input = VTextField.options.methods.genInput.call(this)\n\n delete input.data!.attrs!.name\n\n input.data = mergeData(input.data!, {\n domProps: { value: null },\n attrs: {\n readonly: true,\n type: 'text',\n 'aria-readonly': String(this.isReadonly),\n 'aria-activedescendant': getObjectValueByPath(this.$refs.menu, 'activeTile.id'),\n autocomplete: getObjectValueByPath(input.data!, 'attrs.autocomplete', 'off'),\n placeholder: (!this.isDirty && (this.persistentPlaceholder || this.isFocused || !this.hasLabel)) ? this.placeholder : undefined,\n },\n on: { keypress: this.onKeyPress },\n })\n\n return input\n },\n genHiddenInput (): VNode {\n return this.$createElement('input', {\n domProps: { value: this.lazyValue },\n attrs: {\n type: 'hidden',\n name: this.attrs$.name,\n },\n })\n },\n genInputSlot (): VNode {\n const render = VTextField.options.methods.genInputSlot.call(this)\n\n render.data!.attrs = {\n ...render.data!.attrs,\n role: 'button',\n 'aria-haspopup': 'listbox',\n 'aria-expanded': String(this.isMenuActive),\n 'aria-owns': this.computedOwns,\n }\n\n return render\n },\n genList (): VNode {\n // If there's no slots, we can use a cached VNode to improve performance\n if (this.$slots['no-data'] || this.$slots['prepend-item'] || this.$slots['append-item']) {\n return this.genListWithSlot()\n } else {\n return this.staticList\n }\n },\n genListWithSlot (): VNode {\n const slots = ['prepend-item', 'no-data', 'append-item']\n .filter(slotName => this.$slots[slotName])\n .map(slotName => this.$createElement('template', {\n slot: slotName,\n }, this.$slots[slotName]))\n // Requires destructuring due to Vue\n // modifying the `on` property when passed\n // as a referenced object\n return this.$createElement(VSelectList, {\n ...this.listData,\n }, slots)\n },\n genMenu (): VNode {\n const props = this.$_menuProps as any\n props.activator = this.$refs['input-slot']\n\n // Attach to root el so that\n // menu covers prepend/append icons\n if (\n // TODO: make this a computed property or helper or something\n this.attach === '' || // If used as a boolean prop ()\n this.attach === true || // If bound to a boolean ()\n this.attach === 'attach' // If bound as boolean prop in pug (v-menu(attach))\n ) {\n props.attach = this.$el\n } else {\n props.attach = this.attach\n }\n\n return this.$createElement(VMenu, {\n attrs: { role: undefined },\n props,\n on: {\n input: (val: boolean) => {\n this.isMenuActive = val\n this.isFocused = val\n },\n scroll: this.onScroll,\n },\n ref: 'menu',\n }, [this.genList()])\n },\n genSelections (): VNode {\n let length = this.selectedItems.length\n const children = new Array(length)\n\n let genSelection\n if (this.$scopedSlots.selection) {\n genSelection = this.genSlotSelection\n } else if (this.hasChips) {\n genSelection = this.genChipSelection\n } else {\n genSelection = this.genCommaSelection\n }\n\n while (length--) {\n children[length] = genSelection(\n this.selectedItems[length],\n length,\n length === children.length - 1\n )\n }\n\n return this.$createElement('div', {\n staticClass: 'v-select__selections',\n }, children)\n },\n genSlotSelection (item: object, index: number): VNode[] | undefined {\n return this.$scopedSlots.selection!({\n attrs: {\n class: 'v-chip--select',\n },\n parent: this,\n item,\n index,\n select: (e: Event) => {\n e.stopPropagation()\n this.selectedIndex = index\n },\n selected: index === this.selectedIndex,\n disabled: !this.isInteractive,\n })\n },\n getMenuIndex () {\n return this.$refs.menu ? (this.$refs.menu as { [key: string]: any }).listIndex : -1\n },\n getDisabled (item: object) {\n return getPropertyFromItem(item, this.itemDisabled, false)\n },\n getText (item: object) {\n return getPropertyFromItem(item, this.itemText, item)\n },\n getValue (item: object) {\n return getPropertyFromItem(item, this.itemValue, this.getText(item))\n },\n onBlur (e?: Event) {\n e && this.$emit('blur', e)\n },\n onChipInput (item: object) {\n if (this.multiple) this.selectItem(item)\n else this.setValue(null)\n // If all items have been deleted,\n // open `v-menu`\n if (this.selectedItems.length === 0) {\n this.isMenuActive = true\n } else {\n this.isMenuActive = false\n }\n this.selectedIndex = -1\n },\n onClick (e: MouseEvent) {\n if (!this.isInteractive) return\n\n if (!this.isAppendInner(e.target)) {\n this.isMenuActive = true\n }\n\n if (!this.isFocused) {\n this.isFocused = true\n this.$emit('focus')\n }\n\n this.$emit('click', e)\n },\n onEscDown (e: Event) {\n e.preventDefault()\n if (this.isMenuActive) {\n e.stopPropagation()\n this.isMenuActive = false\n }\n },\n onKeyPress (e: KeyboardEvent) {\n if (\n this.multiple ||\n !this.isInteractive ||\n this.disableLookup\n ) return\n\n const KEYBOARD_LOOKUP_THRESHOLD = 1000 // milliseconds\n const now = performance.now()\n if (now - this.keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {\n this.keyboardLookupPrefix = ''\n }\n this.keyboardLookupPrefix += e.key.toLowerCase()\n this.keyboardLookupLastTime = now\n\n const index = this.allItems.findIndex(item => {\n const text = (this.getText(item) || '').toString()\n\n return text.toLowerCase().startsWith(this.keyboardLookupPrefix)\n })\n const item = this.allItems[index]\n if (index !== -1) {\n this.lastItem = Math.max(this.lastItem, index + 5)\n this.setValue(this.returnObject ? item : this.getValue(item))\n this.$nextTick(() => this.$refs.menu.getTiles())\n setTimeout(() => this.setMenuIndex(index))\n }\n },\n onKeyDown (e: KeyboardEvent) {\n if (this.isReadonly && e.keyCode !== keyCodes.tab) return\n\n const keyCode = e.keyCode\n const menu = this.$refs.menu\n\n this.$emit('keydown', e)\n\n if (!menu) return\n\n // If menu is active, allow default\n // listIndex change from menu\n if (this.isMenuActive && [keyCodes.up, keyCodes.down, keyCodes.home, keyCodes.end, keyCodes.enter].includes(keyCode)) {\n this.$nextTick(() => {\n menu.changeListIndex(e)\n this.$emit('update:list-index', menu.listIndex)\n })\n }\n\n // If enter, space, open menu\n if ([\n keyCodes.enter,\n keyCodes.space,\n ].includes(keyCode)) this.activateMenu()\n\n // If menu is not active, up/down/home/end can do\n // one of 2 things. If multiple, opens the\n // menu, if not, will cycle through all\n // available options\n if (\n !this.isMenuActive &&\n [keyCodes.up, keyCodes.down, keyCodes.home, keyCodes.end].includes(keyCode)\n ) return this.onUpDown(e)\n\n // If escape deactivate the menu\n if (keyCode === keyCodes.esc) return this.onEscDown(e)\n\n // If tab - select item or close menu\n if (keyCode === keyCodes.tab) return this.onTabDown(e)\n\n // If space preventDefault\n if (keyCode === keyCodes.space) return this.onSpaceDown(e)\n },\n onMenuActiveChange (val: boolean) {\n // If menu is closing and mulitple\n // or menuIndex is already set\n // skip menu index recalculation\n if (\n (this.multiple && !val) ||\n this.getMenuIndex() > -1\n ) return\n\n const menu = this.$refs.menu\n\n if (!menu || !this.isDirty) return\n\n // When menu opens, set index of first active item\n this.$refs.menu.getTiles()\n for (let i = 0; i < menu.tiles.length; i++) {\n if (menu.tiles[i].getAttribute('aria-selected') === 'true') {\n this.setMenuIndex(i)\n break\n }\n }\n },\n onMouseUp (e: MouseEvent) {\n // eslint-disable-next-line sonarjs/no-collapsible-if\n if (\n this.hasMouseDown &&\n e.which !== 3 &&\n this.isInteractive\n ) {\n // If append inner is present\n // and the target is itself\n // or inside, toggle menu\n if (this.isAppendInner(e.target)) {\n this.$nextTick(() => (this.isMenuActive = !this.isMenuActive))\n }\n }\n\n VTextField.options.methods.onMouseUp.call(this, e)\n },\n onScroll () {\n if (!this.isMenuActive) {\n requestAnimationFrame(() => (this.getContent().scrollTop = 0))\n } else {\n if (this.lastItem > this.computedItems.length) return\n\n const showMoreItems = (\n this.getContent().scrollHeight -\n (this.getContent().scrollTop +\n this.getContent().clientHeight)\n ) < 200\n\n if (showMoreItems) {\n this.lastItem += 20\n }\n }\n },\n onSpaceDown (e: KeyboardEvent) {\n e.preventDefault()\n },\n onTabDown (e: KeyboardEvent) {\n const menu = this.$refs.menu\n\n if (!menu) return\n\n const activeTile = menu.activeTile\n\n // An item that is selected by\n // menu-index should toggled\n if (\n !this.multiple &&\n activeTile &&\n this.isMenuActive\n ) {\n e.preventDefault()\n e.stopPropagation()\n\n activeTile.click()\n } else {\n // If we make it here,\n // the user has no selected indexes\n // and is probably tabbing out\n this.blur(e)\n }\n },\n onUpDown (e: KeyboardEvent) {\n const menu = this.$refs.menu\n\n if (!menu) return\n\n e.preventDefault()\n\n // Multiple selects do not cycle their value\n // when pressing up or down, instead activate\n // the menu\n if (this.multiple) return this.activateMenu()\n\n const keyCode = e.keyCode\n\n // Cycle through available values to achieve\n // select native behavior\n menu.isBooted = true\n\n window.requestAnimationFrame(() => {\n menu.getTiles()\n\n if (!menu.hasClickableTiles) return this.activateMenu()\n\n switch (keyCode) {\n case keyCodes.up:\n menu.prevTile()\n break\n case keyCodes.down:\n menu.nextTile()\n break\n case keyCodes.home:\n menu.firstTile()\n break\n case keyCodes.end:\n menu.lastTile()\n break\n }\n this.selectItem(this.allItems[this.getMenuIndex()])\n })\n },\n selectItem (item: object) {\n if (!this.multiple) {\n this.setValue(this.returnObject ? item : this.getValue(item))\n this.isMenuActive = false\n } else {\n const internalValue = (this.internalValue || []).slice()\n const i = this.findExistingIndex(item)\n\n i !== -1 ? internalValue.splice(i, 1) : internalValue.push(item)\n this.setValue(internalValue.map((i: object) => {\n return this.returnObject ? i : this.getValue(i)\n }))\n\n // When selecting multiple\n // adjust menu after each\n // selection\n this.$nextTick(() => {\n this.$refs.menu &&\n (this.$refs.menu as { [key: string]: any }).updateDimensions()\n })\n\n // There is no item to re-highlight\n // when selections are hidden\n if (this.hideSelected) {\n this.setMenuIndex(-1)\n } else {\n const index = this.allItems.indexOf(item)\n if (~index) {\n this.$nextTick(() => this.$refs.menu.getTiles())\n setTimeout(() => this.setMenuIndex(index))\n }\n }\n }\n },\n setMenuIndex (index: number) {\n this.$refs.menu && ((this.$refs.menu as { [key: string]: any }).listIndex = index)\n },\n setSelectedItems () {\n const selectedItems = []\n const values = !this.multiple || !Array.isArray(this.internalValue)\n ? [this.internalValue]\n : this.internalValue\n\n for (const value of values) {\n const index = this.allItems.findIndex(v => this.valueComparator(\n this.getValue(v),\n this.getValue(value)\n ))\n\n if (index > -1) {\n selectedItems.push(this.allItems[index])\n }\n }\n\n this.selectedItems = selectedItems\n },\n setValue (value: any) {\n if (!this.valueComparator(value, this.internalValue)) {\n this.internalValue = value\n this.$emit('change', value)\n }\n },\n isAppendInner (target: any) {\n // return true if append inner is present\n // and the target is itself or inside\n const appendInner = this.$refs['append-inner']\n\n return appendInner && (appendInner === target || appendInner.contains(target))\n },\n },\n})\n","// Extensions\nimport VWindowItem from '../VWindow/VWindowItem'\n\n/* @vue/component */\nexport default VWindowItem.extend({\n name: 'v-tab-item',\n\n props: {\n id: String,\n },\n\n methods: {\n genWindowItem () {\n const item = VWindowItem.options.methods.genWindowItem.call(this)\n\n item.data!.domProps = item.data!.domProps || {}\n item.data!.domProps.id = this.id || this.value\n\n return item\n },\n },\n})\n","// Components\nimport VTimePickerTitle from './VTimePickerTitle'\nimport VTimePickerClock from './VTimePickerClock'\n\n// Mixins\nimport Picker from '../../mixins/picker'\nimport PickerButton from '../../mixins/picker-button'\n\n// Utils\nimport { createRange } from '../../util/helpers'\nimport pad from '../VDatePicker/util/pad'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode, PropType } from 'vue'\nimport { SelectingTimes } from './SelectingTimes'\n\nconst rangeHours24 = createRange(24)\nconst rangeHours12am = createRange(12)\nconst rangeHours12pm = rangeHours12am.map(v => v + 12)\nconst range60 = createRange(60)\nconst selectingNames = { 1: 'hour', 2: 'minute', 3: 'second' }\nexport { SelectingTimes }\n\ntype Period = 'am' | 'pm'\ntype AllowFunction = (val: number) => boolean\n\nexport default mixins(\n Picker,\n PickerButton\n/* @vue/component */\n).extend({\n name: 'v-time-picker',\n\n props: {\n allowedHours: [Function, Array] as PropType,\n allowedMinutes: [Function, Array] as PropType,\n allowedSeconds: [Function, Array] as PropType,\n disabled: Boolean,\n format: {\n type: String as PropType<'ampm' | '24hr'>,\n default: 'ampm',\n validator (val) {\n return ['ampm', '24hr'].includes(val)\n },\n },\n min: String,\n max: String,\n readonly: Boolean,\n scrollable: Boolean,\n useSeconds: Boolean,\n value: null as any as PropType,\n ampmInTitle: Boolean,\n },\n\n data () {\n return {\n inputHour: null as number | null,\n inputMinute: null as number | null,\n inputSecond: null as number | null,\n lazyInputHour: null as number | null,\n lazyInputMinute: null as number | null,\n lazyInputSecond: null as number | null,\n period: 'am' as Period,\n selecting: SelectingTimes.Hour,\n }\n },\n\n computed: {\n selectingHour: {\n get (): boolean {\n return this.selecting === SelectingTimes.Hour\n },\n set (v: boolean) {\n this.selecting = SelectingTimes.Hour\n },\n },\n selectingMinute: {\n get (): boolean {\n return this.selecting === SelectingTimes.Minute\n },\n set (v: boolean) {\n this.selecting = SelectingTimes.Minute\n },\n },\n selectingSecond: {\n get (): boolean {\n return this.selecting === SelectingTimes.Second\n },\n set (v: boolean) {\n this.selecting = SelectingTimes.Second\n },\n },\n isAllowedHourCb (): AllowFunction {\n let cb: AllowFunction\n\n if (this.allowedHours instanceof Array) {\n cb = (val: number) => (this.allowedHours as number[]).includes(val)\n } else {\n cb = this.allowedHours\n }\n\n if (!this.min && !this.max) return cb\n\n const minHour = this.min ? Number(this.min.split(':')[0]) : 0\n const maxHour = this.max ? Number(this.max.split(':')[0]) : 23\n\n return (val: number) => {\n return val >= minHour * 1 &&\n val <= maxHour * 1 &&\n (!cb || cb(val))\n }\n },\n isAllowedMinuteCb (): AllowFunction {\n let cb: AllowFunction\n\n const isHourAllowed = !this.isAllowedHourCb || this.inputHour === null || this.isAllowedHourCb(this.inputHour)\n if (this.allowedMinutes instanceof Array) {\n cb = (val: number) => (this.allowedMinutes as number[]).includes(val)\n } else {\n cb = this.allowedMinutes\n }\n\n if (!this.min && !this.max) {\n return isHourAllowed ? cb : () => false\n }\n\n const [minHour, minMinute] = this.min ? this.min.split(':').map(Number) : [0, 0]\n const [maxHour, maxMinute] = this.max ? this.max.split(':').map(Number) : [23, 59]\n const minTime = minHour * 60 + minMinute * 1\n const maxTime = maxHour * 60 + maxMinute * 1\n\n return (val: number) => {\n const time = 60 * this.inputHour! + val\n return time >= minTime &&\n time <= maxTime &&\n isHourAllowed &&\n (!cb || cb(val))\n }\n },\n isAllowedSecondCb (): AllowFunction {\n let cb: AllowFunction\n\n const isHourAllowed = !this.isAllowedHourCb || this.inputHour === null || this.isAllowedHourCb(this.inputHour)\n const isMinuteAllowed = isHourAllowed &&\n (!this.isAllowedMinuteCb ||\n this.inputMinute === null ||\n this.isAllowedMinuteCb(this.inputMinute)\n )\n\n if (this.allowedSeconds instanceof Array) {\n cb = (val: number) => (this.allowedSeconds as number[]).includes(val)\n } else {\n cb = this.allowedSeconds\n }\n\n if (!this.min && !this.max) {\n return isMinuteAllowed ? cb : () => false\n }\n\n const [minHour, minMinute, minSecond] = this.min ? this.min.split(':').map(Number) : [0, 0, 0]\n const [maxHour, maxMinute, maxSecond] = this.max ? this.max.split(':').map(Number) : [23, 59, 59]\n const minTime = minHour * 3600 + minMinute * 60 + (minSecond || 0) * 1\n const maxTime = maxHour * 3600 + maxMinute * 60 + (maxSecond || 0) * 1\n\n return (val: number) => {\n const time = 3600 * this.inputHour! + 60 * this.inputMinute! + val\n return time >= minTime &&\n time <= maxTime &&\n isMinuteAllowed &&\n (!cb || cb(val))\n }\n },\n isAmPm (): boolean {\n return this.format === 'ampm'\n },\n },\n\n watch: {\n value: 'setInputData',\n },\n\n mounted () {\n this.setInputData(this.value)\n this.$on('update:period', this.setPeriod)\n },\n\n methods: {\n genValue () {\n if (this.inputHour != null && this.inputMinute != null && (!this.useSeconds || this.inputSecond != null)) {\n return `${pad(this.inputHour)}:${pad(this.inputMinute)}` + (this.useSeconds ? `:${pad(this.inputSecond!)}` : '')\n }\n\n return null\n },\n emitValue () {\n const value = this.genValue()\n if (value !== null) this.$emit('input', value)\n },\n setPeriod (period: Period) {\n this.period = period\n if (this.inputHour != null) {\n const newHour = this.inputHour! + (period === 'am' ? -12 : 12)\n this.inputHour = this.firstAllowed('hour', newHour)\n this.emitValue()\n }\n },\n setInputData (value: string | null | Date) {\n if (value == null || value === '') {\n this.inputHour = null\n this.inputMinute = null\n this.inputSecond = null\n } else if (value instanceof Date) {\n this.inputHour = value.getHours()\n this.inputMinute = value.getMinutes()\n this.inputSecond = value.getSeconds()\n } else {\n const [, hour, minute, , second, period] = value.trim().toLowerCase().match(/^(\\d+):(\\d+)(:(\\d+))?([ap]m)?$/) || new Array(6)\n\n this.inputHour = period ? this.convert12to24(parseInt(hour, 10), period as Period) : parseInt(hour, 10)\n this.inputMinute = parseInt(minute, 10)\n this.inputSecond = parseInt(second || 0, 10)\n }\n\n this.period = (this.inputHour == null || this.inputHour < 12) ? 'am' : 'pm'\n },\n convert24to12 (hour: number) {\n return hour ? ((hour - 1) % 12 + 1) : 12\n },\n convert12to24 (hour: number, period: Period) {\n return hour % 12 + (period === 'pm' ? 12 : 0)\n },\n onInput (value: number) {\n if (this.selecting === SelectingTimes.Hour) {\n this.inputHour = this.isAmPm ? this.convert12to24(value, this.period) : value\n } else if (this.selecting === SelectingTimes.Minute) {\n this.inputMinute = value\n } else {\n this.inputSecond = value\n }\n this.emitValue()\n },\n onChange (value: number) {\n this.$emit(`click:${selectingNames[this.selecting]}`, value)\n\n const emitChange = this.selecting === (this.useSeconds ? SelectingTimes.Second : SelectingTimes.Minute)\n\n if (this.selecting === SelectingTimes.Hour) {\n this.selecting = SelectingTimes.Minute\n } else if (this.useSeconds && this.selecting === SelectingTimes.Minute) {\n this.selecting = SelectingTimes.Second\n }\n\n if (this.inputHour === this.lazyInputHour &&\n this.inputMinute === this.lazyInputMinute &&\n (!this.useSeconds || this.inputSecond === this.lazyInputSecond)\n ) return\n\n const time = this.genValue()\n if (time === null) return\n\n this.lazyInputHour = this.inputHour\n this.lazyInputMinute = this.inputMinute\n this.useSeconds && (this.lazyInputSecond = this.inputSecond)\n\n emitChange && this.$emit('change', time)\n },\n firstAllowed (type: 'hour' | 'minute' | 'second', value: number) {\n const allowedFn = type === 'hour' ? this.isAllowedHourCb : (type === 'minute' ? this.isAllowedMinuteCb : this.isAllowedSecondCb)\n if (!allowedFn) return value\n\n // TODO: clean up\n const range = type === 'minute'\n ? range60\n : (type === 'second'\n ? range60\n : (this.isAmPm\n ? (value < 12\n ? rangeHours12am\n : rangeHours12pm)\n : rangeHours24))\n const first = range.find(v => allowedFn((v + value) % range.length + range[0]))\n return ((first || 0) + value) % range.length + range[0]\n },\n genClock () {\n return this.$createElement(VTimePickerClock, {\n props: {\n allowedValues:\n this.selecting === SelectingTimes.Hour\n ? this.isAllowedHourCb\n : (this.selecting === SelectingTimes.Minute\n ? this.isAllowedMinuteCb\n : this.isAllowedSecondCb),\n color: this.color,\n dark: this.dark,\n disabled: this.disabled,\n double: this.selecting === SelectingTimes.Hour && !this.isAmPm,\n format: this.selecting === SelectingTimes.Hour\n ? (this.isAmPm ? this.convert24to12 : (val: number) => val)\n : (val: number) => pad(val, 2),\n light: this.light,\n max: this.selecting === SelectingTimes.Hour ? (this.isAmPm && this.period === 'am' ? 11 : 23) : 59,\n min: this.selecting === SelectingTimes.Hour && this.isAmPm && this.period === 'pm' ? 12 : 0,\n readonly: this.readonly,\n scrollable: this.scrollable,\n size: Number(this.width) - ((!this.fullWidth && this.landscape) ? 80 : 20),\n step: this.selecting === SelectingTimes.Hour ? 1 : 5,\n value: this.selecting === SelectingTimes.Hour\n ? this.inputHour\n : (this.selecting === SelectingTimes.Minute\n ? this.inputMinute\n : this.inputSecond),\n },\n on: {\n input: this.onInput,\n change: this.onChange,\n },\n ref: 'clock',\n })\n },\n genClockAmPm () {\n return this.$createElement('div', this.setTextColor(this.color || 'primary', {\n staticClass: 'v-time-picker-clock__ampm',\n }), [\n this.genPickerButton('period', 'am', this.$vuetify.lang.t('$vuetify.timePicker.am'), this.disabled || this.readonly),\n this.genPickerButton('period', 'pm', this.$vuetify.lang.t('$vuetify.timePicker.pm'), this.disabled || this.readonly),\n ])\n },\n genPickerBody () {\n return this.$createElement('div', {\n staticClass: 'v-time-picker-clock__container',\n key: this.selecting,\n }, [\n !this.ampmInTitle && this.isAmPm && this.genClockAmPm(),\n this.genClock(),\n ])\n },\n genPickerTitle () {\n return this.$createElement(VTimePickerTitle, {\n props: {\n ampm: this.isAmPm,\n ampmReadonly: this.isAmPm && !this.ampmInTitle,\n disabled: this.disabled,\n hour: this.inputHour,\n minute: this.inputMinute,\n second: this.inputSecond,\n period: this.period,\n readonly: this.readonly,\n useSeconds: this.useSeconds,\n selecting: this.selecting,\n },\n on: {\n 'update:selecting': (value: 1 | 2 | 3) => (this.selecting = value),\n 'update:period': (period: string) => this.$emit('update:period', period),\n },\n ref: 'title',\n slot: 'title',\n })\n },\n },\n\n render (): VNode {\n return this.genPicker('v-picker--time')\n },\n})\n","// Styles\nimport './VWindow.sass'\n\n// Types\nimport { VNode, VNodeDirective } from 'vue/types/vnode'\nimport { PropType } from 'vue'\nimport { TouchHandlers } from 'vuetify/types'\n\n// Directives\nimport Touch from '../../directives/touch'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n/* @vue/component */\nexport default BaseItemGroup.extend({\n name: 'v-window',\n\n directives: { Touch },\n\n provide (): object {\n return {\n windowGroup: this,\n }\n },\n\n props: {\n activeClass: {\n type: String,\n default: 'v-window-item--active',\n },\n continuous: Boolean,\n mandatory: {\n type: Boolean,\n default: true,\n },\n nextIcon: {\n type: [Boolean, String],\n default: '$next',\n },\n prevIcon: {\n type: [Boolean, String],\n default: '$prev',\n },\n reverse: Boolean,\n showArrows: Boolean,\n showArrowsOnHover: Boolean,\n touch: Object as PropType,\n touchless: Boolean,\n value: {\n required: false,\n },\n vertical: Boolean,\n },\n\n data () {\n return {\n changedByDelimiters: false,\n internalHeight: undefined as undefined | string, // This can be fixed by child class.\n transitionHeight: undefined as undefined | string, // Intermediate height during transition.\n transitionCount: 0, // Number of windows in transition state.\n isBooted: false,\n isReverse: false,\n }\n },\n\n computed: {\n isActive (): boolean {\n return this.transitionCount > 0\n },\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-window--show-arrows-on-hover': this.showArrowsOnHover,\n }\n },\n computedTransition (): string {\n if (!this.isBooted) return ''\n\n const axis = this.vertical ? 'y' : 'x'\n const reverse = this.internalReverse ? !this.isReverse : this.isReverse\n const direction = reverse ? '-reverse' : ''\n\n return `v-window-${axis}${direction}-transition`\n },\n hasActiveItems (): boolean {\n return Boolean(\n this.items.find(item => !item.disabled)\n )\n },\n hasNext (): boolean {\n return this.continuous || this.internalIndex < this.items.length - 1\n },\n hasPrev (): boolean {\n return this.continuous || this.internalIndex > 0\n },\n internalIndex (): number {\n return this.items.findIndex((item, i) => {\n return this.internalValue === this.getValue(item, i)\n })\n },\n internalReverse (): boolean {\n return this.$vuetify.rtl ? !this.reverse : this.reverse\n },\n },\n\n watch: {\n internalIndex (val, oldVal) {\n this.isReverse = this.updateReverse(val, oldVal)\n },\n },\n\n mounted () {\n window.requestAnimationFrame(() => (this.isBooted = true))\n },\n\n methods: {\n genDefaultSlot () {\n return this.$slots.default\n },\n genContainer (): VNode {\n const children = [this.genDefaultSlot()]\n\n if (this.showArrows) {\n children.push(this.genControlIcons())\n }\n\n return this.$createElement('div', {\n staticClass: 'v-window__container',\n class: {\n 'v-window__container--is-active': this.isActive,\n },\n style: {\n height: this.internalHeight || this.transitionHeight,\n },\n }, children)\n },\n genIcon (\n direction: 'prev' | 'next',\n icon: string,\n click: () => void\n ) {\n const on = {\n click: (e: Event) => {\n e.stopPropagation()\n this.changedByDelimiters = true\n click()\n },\n }\n const attrs = {\n 'aria-label': this.$vuetify.lang.t(`$vuetify.carousel.${direction}`),\n }\n const children = this.$scopedSlots[direction]?.({\n on,\n attrs,\n }) ?? [this.$createElement(VBtn, {\n props: { icon: true },\n attrs,\n on,\n }, [\n this.$createElement(VIcon, {\n props: { large: true },\n }, icon),\n ])]\n\n return this.$createElement('div', {\n staticClass: `v-window__${direction}`,\n }, children)\n },\n genControlIcons () {\n const icons = []\n\n const prevIcon = this.$vuetify.rtl\n ? this.nextIcon\n : this.prevIcon\n\n /* istanbul ignore else */\n if (\n this.hasPrev &&\n prevIcon &&\n typeof prevIcon === 'string'\n ) {\n const icon = this.genIcon('prev', prevIcon, this.prev)\n icon && icons.push(icon)\n }\n\n const nextIcon = this.$vuetify.rtl\n ? this.prevIcon\n : this.nextIcon\n\n /* istanbul ignore else */\n if (\n this.hasNext &&\n nextIcon &&\n typeof nextIcon === 'string'\n ) {\n const icon = this.genIcon('next', nextIcon, this.next)\n icon && icons.push(icon)\n }\n\n return icons\n },\n getNextIndex (index: number): number {\n const nextIndex = (index + 1) % this.items.length\n const item = this.items[nextIndex]\n\n if (item.disabled) return this.getNextIndex(nextIndex)\n\n return nextIndex\n },\n getPrevIndex (index: number): number {\n const prevIndex = (index + this.items.length - 1) % this.items.length\n const item = this.items[prevIndex]\n\n if (item.disabled) return this.getPrevIndex(prevIndex)\n\n return prevIndex\n },\n next () {\n /* istanbul ignore if */\n if (!this.hasActiveItems || !this.hasNext) return\n\n const nextIndex = this.getNextIndex(this.internalIndex)\n const item = this.items[nextIndex]\n\n this.internalValue = this.getValue(item, nextIndex)\n },\n prev () {\n /* istanbul ignore if */\n if (!this.hasActiveItems || !this.hasPrev) return\n\n const lastIndex = this.getPrevIndex(this.internalIndex)\n const item = this.items[lastIndex]\n\n this.internalValue = this.getValue(item, lastIndex)\n },\n updateReverse (val: number, oldVal: number) {\n const itemsLength = this.items.length\n const lastIndex = itemsLength - 1\n\n if (itemsLength <= 2) return val < oldVal\n\n if (val === lastIndex && oldVal === 0) {\n return true\n } else if (val === 0 && oldVal === lastIndex) {\n return false\n } else {\n return val < oldVal\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-window',\n class: this.classes,\n directives: [] as VNodeDirective[],\n }\n\n if (!this.touchless) {\n const value = this.touch || {\n left: () => {\n this.$vuetify.rtl ? this.prev() : this.next()\n },\n right: () => {\n this.$vuetify.rtl ? this.next() : this.prev()\n },\n end: (e: TouchEvent) => {\n e.stopPropagation()\n },\n start: (e: TouchEvent) => {\n e.stopPropagation()\n },\n }\n\n data.directives.push({\n name: 'touch',\n value,\n })\n }\n\n return h('div', data, [this.genContainer()])\n },\n})\n","// Extensions\nimport { BaseSlideGroup } from '../VSlideGroup/VSlideGroup'\n\n// Components\nimport VTab from './VTab'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport SSRBootable from '../../mixins/ssr-bootable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { Route } from 'vue-router'\nimport { VNode } from 'vue'\n\ntype VTabInstance = InstanceType\n\nexport default mixins(\n BaseSlideGroup,\n SSRBootable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-tabs-bar',\n\n provide () {\n return {\n tabsBar: this,\n }\n },\n\n computed: {\n classes () {\n return {\n ...BaseSlideGroup.options.computed.classes.call(this),\n 'v-tabs-bar': true,\n 'v-tabs-bar--is-mobile': this.isMobile,\n // TODO: Remove this and move to v-slide-group\n 'v-tabs-bar--show-arrows': this.showArrows,\n ...this.themeClasses,\n }\n },\n },\n\n watch: {\n items: 'callSlider',\n internalValue: 'callSlider',\n $route: 'onRouteChange',\n },\n\n methods: {\n callSlider () {\n if (!this.isBooted) return\n\n this.$emit('call:slider')\n },\n genContent () {\n const render = BaseSlideGroup.options.methods.genContent.call(this)\n\n render.data = render.data || {}\n render.data.staticClass += ' v-tabs-bar__content'\n\n return render\n },\n onRouteChange (val: Route, oldVal: Route) {\n /* istanbul ignore next */\n if (this.mandatory) return\n\n const items = this.items as unknown as VTabInstance[]\n const newPath = val.path\n const oldPath = oldVal.path\n\n let hasNew = false\n let hasOld = false\n\n for (const item of items) {\n if (item.to === oldPath) hasOld = true\n else if (item.to === newPath) hasNew = true\n\n if (hasNew && hasOld) break\n }\n\n // If we have an old item and not a new one\n // it's assumed that the user navigated to\n // a path that is not present in the items\n if (!hasNew && hasOld) this.internalValue = undefined\n },\n },\n\n render (h): VNode {\n const render = BaseSlideGroup.options.render.call(this, h)\n\n render.data!.attrs = {\n role: 'tablist',\n }\n\n return render\n },\n})\n","// Styles\nimport './VTabs.sass'\n\n// Components\nimport VTabsBar from './VTabsBar'\nimport VTabsItems from './VTabsItems'\nimport VTabsSlider from './VTabsSlider'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Directives\nimport Resize from '../../directives/resize'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\nimport { ExtractVue } from './../../util/mixins'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\nconst baseMixins = mixins(\n Colorable,\n Proxyable,\n Themeable\n)\n\ninterface options extends ExtractVue {\n $refs: {\n items: InstanceType\n }\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-tabs',\n\n directives: {\n Resize,\n },\n\n props: {\n activeClass: {\n type: String,\n default: '',\n },\n alignWithTitle: Boolean,\n backgroundColor: String,\n centerActive: Boolean,\n centered: Boolean,\n fixedTabs: Boolean,\n grow: Boolean,\n height: {\n type: [Number, String],\n default: undefined,\n },\n hideSlider: Boolean,\n iconsAndText: Boolean,\n mobileBreakpoint: [String, Number],\n nextIcon: {\n type: String,\n default: '$next',\n },\n optional: Boolean,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n right: Boolean,\n showArrows: [Boolean, String],\n sliderColor: String,\n sliderSize: {\n type: [Number, String],\n default: 2,\n },\n vertical: Boolean,\n },\n\n data () {\n return {\n resizeTimeout: 0,\n slider: {\n height: null as null | number,\n left: null as null | number,\n right: null as null | number,\n top: null as null | number,\n width: null as null | number,\n },\n transitionTime: 300,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-tabs--align-with-title': this.alignWithTitle,\n 'v-tabs--centered': this.centered,\n 'v-tabs--fixed-tabs': this.fixedTabs,\n 'v-tabs--grow': this.grow,\n 'v-tabs--icons-and-text': this.iconsAndText,\n 'v-tabs--right': this.right,\n 'v-tabs--vertical': this.vertical,\n ...this.themeClasses,\n }\n },\n isReversed (): boolean {\n return this.$vuetify.rtl && this.vertical\n },\n sliderStyles (): object {\n return {\n height: convertToUnit(this.slider.height),\n left: this.isReversed ? undefined : convertToUnit(this.slider.left),\n right: this.isReversed ? convertToUnit(this.slider.right) : undefined,\n top: this.vertical ? convertToUnit(this.slider.top) : undefined,\n transition: this.slider.left != null ? null : 'none',\n width: convertToUnit(this.slider.width),\n }\n },\n computedColor (): string {\n if (this.color) return this.color\n else if (this.isDark && !this.appIsDark) return 'white'\n else return 'primary'\n },\n },\n\n watch: {\n alignWithTitle: 'callSlider',\n centered: 'callSlider',\n centerActive: 'callSlider',\n fixedTabs: 'callSlider',\n grow: 'callSlider',\n iconsAndText: 'callSlider',\n right: 'callSlider',\n showArrows: 'callSlider',\n vertical: 'callSlider',\n '$vuetify.application.left': 'onResize',\n '$vuetify.application.right': 'onResize',\n '$vuetify.rtl': 'onResize',\n },\n\n mounted () {\n this.$nextTick(() => {\n window.setTimeout(this.callSlider, 30)\n })\n },\n\n methods: {\n callSlider () {\n if (\n this.hideSlider ||\n !this.$refs.items ||\n !this.$refs.items.selectedItems.length\n ) {\n this.slider.width = 0\n return false\n }\n\n this.$nextTick(() => {\n // Give screen time to paint\n const activeTab = this.$refs.items.selectedItems[0]\n /* istanbul ignore if */\n if (!activeTab || !activeTab.$el) {\n this.slider.width = 0\n this.slider.left = 0\n return\n }\n const el = activeTab.$el as HTMLElement\n\n this.slider = {\n height: !this.vertical ? Number(this.sliderSize) : el.scrollHeight,\n left: this.vertical ? 0 : el.offsetLeft,\n right: this.vertical ? 0 : el.offsetLeft + el.offsetWidth,\n top: el.offsetTop,\n width: this.vertical ? Number(this.sliderSize) : el.scrollWidth,\n }\n })\n\n return true\n },\n genBar (items: VNode[], slider: VNode | null) {\n const data = {\n style: {\n height: convertToUnit(this.height),\n },\n props: {\n activeClass: this.activeClass,\n centerActive: this.centerActive,\n dark: this.dark,\n light: this.light,\n mandatory: !this.optional,\n mobileBreakpoint: this.mobileBreakpoint,\n nextIcon: this.nextIcon,\n prevIcon: this.prevIcon,\n showArrows: this.showArrows,\n value: this.internalValue,\n },\n on: {\n 'call:slider': this.callSlider,\n change: (val: any) => {\n this.internalValue = val\n },\n },\n ref: 'items',\n }\n\n this.setTextColor(this.computedColor, data)\n this.setBackgroundColor(this.backgroundColor, data)\n\n return this.$createElement(VTabsBar, data, [\n this.genSlider(slider),\n items,\n ])\n },\n genItems (items: VNode | null, item: VNode[]) {\n // If user provides items\n // opt to use theirs\n if (items) return items\n\n // If no tabs are provided\n // render nothing\n if (!item.length) return null\n\n return this.$createElement(VTabsItems, {\n props: {\n value: this.internalValue,\n },\n on: {\n change: (val: any) => {\n this.internalValue = val\n },\n },\n }, item)\n },\n genSlider (slider: VNode | null) {\n if (this.hideSlider) return null\n\n if (!slider) {\n slider = this.$createElement(VTabsSlider, {\n props: { color: this.sliderColor },\n })\n }\n\n return this.$createElement('div', {\n staticClass: 'v-tabs-slider-wrapper',\n style: this.sliderStyles,\n }, [slider])\n },\n onResize () {\n if (this._isDestroyed) return\n\n clearTimeout(this.resizeTimeout)\n this.resizeTimeout = window.setTimeout(this.callSlider, 0)\n },\n parseNodes () {\n let items = null\n let slider = null\n const item = []\n const tab = []\n const slot = this.$slots.default || []\n const length = slot.length\n\n for (let i = 0; i < length; i++) {\n const vnode = slot[i]\n\n if (vnode.componentOptions) {\n switch (vnode.componentOptions.Ctor.options.name) {\n case 'v-tabs-slider': slider = vnode\n break\n case 'v-tabs-items': items = vnode\n break\n case 'v-tab-item': item.push(vnode)\n break\n // case 'v-tab' - intentionally omitted\n default: tab.push(vnode)\n }\n } else {\n tab.push(vnode)\n }\n }\n\n /**\n * tab: array of `v-tab`\n * slider: single `v-tabs-slider`\n * items: single `v-tabs-items`\n * item: array of `v-tab-item`\n */\n return { tab, slider, items, item }\n },\n },\n\n render (h): VNode {\n const { tab, slider, items, item } = this.parseNodes()\n\n return h('div', {\n staticClass: 'v-tabs',\n class: this.classes,\n directives: [{\n name: 'resize',\n modifiers: { quiet: true },\n value: this.onResize,\n }],\n }, [\n this.genBar(tab, slider),\n this.genItems(items, item),\n ])\n },\n})\n"],"sourceRoot":""}